Я уже пробовал делать такое, но у меня вышла какая то лажа. Я приведу пример и спрошу, правильно ли это, а вы, пожалуйста, обьясните как правильно на самом деле.
Ивент клика

Если переменная = 0
-Переменная=1
-Ждать 0.15
-Переменная=0
Если переменная = 1
-Запустить триггер акта/
-Переменная=2

Периодический триггер и переменная "реальная"...
При активации ставь реальной значение времени, а в периодичном триггере цыклом проверяешь у какого игрока больше 0 и отнимаешь на 1 тик таймера
`
ОЖИДАНИЕ РЕКЛАМЫ...
22
"если переменная равно 1" засунуть в "иначе" первого условия.
потому что когда они идут подряд, у тебя при "0" станет "1", и сразу за ним выполнится условие на "1"
32
Карта Extrime candy wars от близзов, там это реализовано.
12
Абсолютно не правильно
Вэйт тут нельзя использовать.
1 переменная-массив Player_TempSelectedUnit [номер игрока] типа "боевая единица"
Событие: Игрок выбирает боевую единицу
Если: (Triggering unit) == Player_TempSelectedUnit [номер игрока]
  • это двойной клик, дальнейшие действия здесь
Иначе: (Triggering unit) != Player_TempSelectedUnit [номер игрока]
  • игрок нажал на этого юнита впервые, задаем
  • Player_TempSelectedUnit [номер игрока] = (Triggering unit)
  • при следующем клике по данному юниту сработает условие выше
Опционально можно еще ввести цикл с малым периодом, который будет проверять если Player_TempSelectedUnit [номер игрока] мертв или удален. Но это для каких-то сложных систем, для выбора героя кликом достаточно написанного выше.
19
Int3r_Karma:
Абсолютно не правильно
Вэйт тут нельзя использовать.
1 переменная-массив Player_TempSelectedUnit [номер игрока] типа "боевая единица"
Событие: Игрок выбирает боевую единицу
Если: (Triggering unit) == Player_TempSelectedUnit [номер игрока]
  • это двойной клик, дальнейшие действия здесь
Иначе: (Triggering unit) != Player_TempSelectedUnit [номер игрока]
  • игрок нажал на этого юнита впервые, задаем
  • Player_TempSelectedUnit [номер игрока] = (Triggering unit)
  • при следующем клике по данному юниту сработает условие выше
Опционально можно еще ввести цикл с малым периодом, который будет проверять если Player_TempSelectedUnit [номер игрока] мертв или удален. Но это для каких-то сложных систем, для выбора героя кликом достаточно написанного выше.
Двойной щелчок должен быть ограничен определенным периодом времени, т.к. это даблклик, а не просто клик, иначе будет срабатывать при каждом втором нажатии, вне зависимости от интервала.
Это должен быть даблклик для активации рывка, а не для пика какого нибудь, поэтому нужно чтобы таймер сбрасывался.
Мб кто то может на джассе написать этот триггер и указать строку, где будет прописан run (ignoring conditions) другого триггера, чтобы я просто туда прописывал действия?
Я не знаю как нормально сделать даблклик на гуи, без вейта(
18
Периодический триггер и переменная "реальная"...
При активации ставь реальной значение времени, а в периодичном триггере цыклом проверяешь у какого игрока больше 0 и отнимаешь на 1 тик таймера
Принятый ответ
12
Borodach, прав.
В дополнение к триггеру №1, который я описал выше, заводишь еще один триггер №2, еще одну переменную-массив и переменную-константу, чтобы
Player_DoubleClickTimer[номер игрока] типа "Реальная" (она же "Вещественная", она же "С плавающей точкой") для проверки на скорость двойного клика;
Constants_DoubleClickTimeDiv типа "Реальная" (тут же можешь задать некую величину, для двойного клика оптимально 0.15 - 0.3 сек)
В триггере №1
В ветке Иначе: (Triggering unit) != Player_TempSelectedUnit [номер игрока]
Игрок кликает по юниту впервые, устанавливаешь
Player_DoubleClickTimer[номер игрока] = 0.00
Триггер №2
Событие: Каждые 0.05 сек. реального времени (можно 0.01 для больше точности)
Действия:
Цикл - для каждой переменной A от 1 до 12 (это номера игроков) делать:
Если Player_DoubleClickTimer [переменная А] < Constants_DoubleClickTimeDiv
  • Насчитываем таймер
  • Player_DoubleClickTimer [переменная А] = Player_DoubleClickTimer [переменная А] + 0.05 (или 0.01 в зависимости от события)
Иначе: Прошло больше времени, чем мы отвели игроку для двойного клика, ничего не делаем.
Возвращаемся к триггеру №1. В ветке
Если: (Triggering unit) == Player_TempSelectedUnit [номер игрока]
  • Это двойной клик, теперь надо проверить насколько быстрый
  • Если: Player_DoubleClickTimer [переменная А] < Constants_DoubleClickTimeDiv
  • Двойной клик произошел за время, которое которое мы отвели для двойного клика, здесь надо запустить твой рывок.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.