1. Создаю глобальный таймер, который был определен через JASS.
  2. Запускаю её.
  3. Пытаюсь запустить другой глобальный триггер через событие "таймер истекает".
Но ничего не происходит.
А если все это проделать с таймером, который был создан через кнопку "X" (ctrl+B), то все работает. Хмм.
Правильно ли я делаю?
Мне хотелось бы избавиться от всех переменных с приставкой "udg_".

Принятый ответ

на время регистрации события твоя переменная равна null
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
9
5 месяцев назад
0
У тебя была ситуация, что ты инициализировал таймер после того как пытался ему присвоить триггер, который срабатывал бы после него. А надо сначала инициализировать таймер, а затем присвоить ему триггер. А когда ты пишешь, что паразительно, то ты сначала инициализировал все, а только потом начал присвоение. Hate верно пишет тебе. Поэтому нет ничего поразительного.

Более того, ты бы вполне мог свой таймер
call TimerStart(T, 5, false, null)  //Запускаю таймер
начинать внутри инициализации
0
3
5 месяцев назад
0
Koladik, Даа, я просто не знал об этом)))
1
26
5 месяцев назад
1
Joma, таймеры из глобальных переменных создаются в момент объявления этих самых глобалок (но не всегда), либо в специальном блоке их инициализации (там же и происходит расчет "размерности"). А все триггеры и события к ним создаются несколько позже, поэтому в них уже будут таймеры указанные для регистрации событий. На Jass'е ты просто обходишь эту последовательность прямолинейностью своих действий.
0
29
5 месяцев назад
0
На Jass'е ты просто обходишь эту последовательность прямолинейностью своих действий.
У него VJASS.
0
26
5 месяцев назад
Отредактирован Extremator
0
Joma, может стоит уйти от события истечения таймера и указать нужнкю выполняемую функцию по его окончанию, мм?
function TimerEndActions takes nothing returns nothing
    call DisplayTextToForce(GetPlayersAll(), "Hello world!")
endfunction

function TimerGoActions takes nothing returns nothing
    set T = 
    call TimerStart( CreateTimer(), 5., false, function TimerEndAction )
endfunction
0
3
5 месяцев назад
Отредактирован Joma
0
Extremator, В данном конкретном случае, мне нужно запустить этот таймер через "триггер А", а потом навсегда выключить этот "триггер А". И периодический запускать таймер через другой "триггер Б". Если коротко, "триггер А" первично запускает таймер, а дальше за её повторные запуски берется "триггер Б".

может стоит уйти от события истечения таймера и указать нужнкю выполняемую функцию по его окончанию, мм?
В целом так тоже можно. Тогда все придется сделать одним триггером. И поставить переключатель на входе в триггер (ложь, истина или 1, 0) и который после первого в хода в триггер больше никогда не позволит войти в него снова. А внутри триггера таймер будет играть сам по себе.
В общем, я понял почему изначально мой глобальный таймер не работал. Нужно было создать его при инициализации триггера, чего я не знал)))
Я думал что глобальный таймеры тоже можно как и другие типы, просто объявить и создать где мне удобно и все)))
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.