Не работает периодический триггер
|
|
lawson | Дата: Суббота, 10 Декабря 2011, 17:02:08 | Сообщение # 1 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Вообще не могу понять что случилось с картой. В общем проблема: У меня есть триггер который работает периодически каждые 40 сек, тоесть тригер срабатывает только через 40 секунды после начала игры, но дело в том что теперь триггер срабатывает моментально при инициализации карты, что случилось. Ктонибудь с такой проблемой уже сталкивался?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Суббота, 10 Декабря 2011, 17:06:54 |
|
|
|
Diabfall | Дата: Суббота, 10 Декабря 2011, 17:07:34 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
| Лучше дай код, если можно.
p.s. Вообще редактор нередко чудит... Пару раз не хотел воспринимать правильно написанный код. Начал воспринимать только после копипаста.)
|
|
|
|
lawson | Дата: Суббота, 10 Декабря 2011, 17:11:43 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Diabfall) Лучше дай код, если можно. Не думаю что код тебе поможет. Вот создаю периодический триггер: Code function SpawnSentCreeps takes nothing returns nothing ACTIONS endfunction
function InitTrig_CreepsSpawn takes nothing returns nothing set gg_trg_CreepsSpawn = CreateTrigger() call TriggerRegisterTimerEvent(gg_trg_CreepsSpawn, 40, true) call TriggerAddAction(gg_trg_CreepsSpawn, function SpawnSentCreeps) endfunction
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
Diabfall | Дата: Суббота, 10 Декабря 2011, 17:22:33 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
| У меня было, что-то похожее. Решил по тупому :
Code function SpawnSentCreepsTimer takes nothing returns nothing local timer t=CreateTimer() call TimerStart(t, 40.00, true, function SpawnSentCreeps) set t=null endfunction
function InitTrig_CreepsSpawn takes nothing returns nothing set gg_trg_CreepsSpawn = CreateTrigger() call TriggerAddAction(gg_trg_CreepsSpawn, function SpawnSentCreepsTimer) endfunction
Сообщение отредактировал Diabfall - Суббота, 10 Декабря 2011, 17:22:44 |
|
|
|
lawson | Дата: Суббота, 10 Декабря 2011, 17:27:05 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Diabfall, Да выходи из ситуации я знаю, мне вот интересно изза чего ошибка произошло? Что я не так сделал? Мне нужно знать причину, мало ли у меня в будущем вся карта вообще откажет.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Суббота, 10 Декабря 2011, 17:31:09 |
|
|
|
Diabfall | Дата: Суббота, 10 Декабря 2011, 17:48:38 | Сообщение # 6 |
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
| Quote (lawson) Diabfall, Да выходи из ситуации я знаю, мне вот интересно изза чего сие произошло? Что я не так сделал? Мне нужно знать причину, мало ли у меня в будущем вся карта вообще откажет. Точного ответа никто не даст. Говорю со 100% уверенностью.Добавлено (10 Декабрь 2011, 17:48:38) ---------------------------------------------
Code call TriggerRegisterTimerEvent Это очень часто является источником багов.
|
|
|
|
Hexing | Дата: Суббота, 10 Декабря 2011, 19:07:54 | Сообщение # 7 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| lawson, проблема вот в чём: перед конвертацией триггера в код ты добавил иму ивент - MapInitialization, который в коде никак не выднеется(он в коде карты, тоесть его не видно но он есть) и таким образом актионс твоего триггера вызовутся при мап ините всегда делай так: Code function InitTrig_CreepsSpawn takes nothing returns nothing local timer t=CreateTimer() call TimerStart(t, 40.00, true, function SpawnSentCreeps) set t=null set gg_trg_CreepsSpawn = null //реально бесполезное присвоение, просто для наглядности endfunction это оптимальный вариант, и не нужны никакие триггеры
|
|
|
|
Ty3uK | Дата: Суббота, 10 Декабря 2011, 20:57:21 | Сообщение # 8 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| А зачем заносить таймер в локалку? Ты потом собираешься ловить его хэндл? О.о пиши в эвент сразу- создать таймер. Меньше действий, больше свободной памяти
|
|
|
|
Hexing | Дата: Воскресенье, 11 Декабря 2011, 07:55:11 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
| Ty3uK, ты имеешь в виду: Code call TimerStart(CreateTimer(), 40., true, function somefunc) ну так то да, так лучше
|
|
|
|
Ty3uK | Дата: Воскресенье, 11 Декабря 2011, 09:22:11 | Сообщение # 10 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Да-да, это и имею в виду, Холмс
|
|
|
|