XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
Что лучше триггер или таймер?
В общем хочу узнать какой метод лучше, 1 используется в доте, 2 так как бы сделал я.
Хочу узнать что лучше использовать, триггеры или таймеры.
Дота
function SPI takes nothing returns boolean
local trigger t=GetTriggeringTrigger()
local integer Y9I=GetHandleId(t)
local fogmodifier NTI=(LoadFogModifierHandle(HY,(Y9I),(42)))
call FogModifierStop(NTI)
call DestroyFogModifier(NTI)
call FlushChildHashtable(HY,(Y9I))
call Y3I(t) //тут выключение/занесение триггера в очередь на удаление через 60 секунд.
set t=null
return false
endfunction

function SQI takes fogmodifier NTI,real WBI returns nothing
local trigger t=CreateTrigger()
local integer Y9I=GetHandleId(t)
call FogModifierStart(NTI)
call SaveFogModifierHandle(HY,(Y9I),(42),(NTI))
call TriggerRegisterTimerEvent(t,WBI,false)
call TriggerAddCondition(t,Condition(function SPI))
set t=null
endfunction
Мой Код
function SPI takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer id = GetHandleId(t)
local fogmodifier f= LoadFogModifierHandle(udg_H,id,0)
call FogModifierStop(f)
call DestroyFogModifier(f)
call DestroyTimer(t)
call FlushChildHashtable(udg_H,id) 
set t=null
set f=null
endfunction

function SQI takes fogmodifier f,real ti returns nothing
local timer t= CreateTimer()
local integer id=GetHandleId(t)
call FogModifierStart(f)
call SaveFogModifierHandle(udg_H,id,0,f)
call TimerStart(t,ti,false,function SPI)
set t=null
endfunction

Отредактировано 16GB, 03.05.2013 в 14:07.
Старый 03.05.2013, 14:01
Zetox

offline
Опыт: 1,738
Активность:
Таймер лучше, для этого он и придуман, а в доте полно говнокода.
Старый 03.05.2013, 14:14
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
ну в доте во всех спелах почти триггеры вместо таймеров, должна же быть какая-то мотивация, для их использования. Я лично думаю что как минимум можно, вешать несколько событий переодическое, например смерть юнита, получение урона, и т.п
Старый 03.05.2013, 14:35
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
16GB, половина спеллов доты еще со времён ретурн бага, тогда не было так много известно о редакторе и jass, бытовало мнение что юзать триггеры для переиодов нормально и оправдано, сейчас же нам известно что это пережитки гуи и не более того...
Плюсы таймера:
  • Обьявляется и вызывается в 2 строки, триггер как правило в 3..
  • Таймеры без остатков удаляются из памяти...
  • Таймер можно останавливать, запускать, менять интервал..
  • Таймер требует теоретически меньше ресурсов чем триггер (нету обработки условия, нету отдельного хендла события)
Старый 03.05.2013, 15:33
DioD

offline
Опыт: 45,134
Активность:
Следует проверить как ведёт себя слип в указанных случаях (TriggerSleepAction), сам тестить не буду, скорее всего ответ будет очевиден.
Старый 03.05.2013, 16:07
adic3x

offline
Опыт: 108,439
Активность:
Следует проверить как ведёт себя слип в указанных случаях (TriggerSleepAction), сам тестить не буду, скорее всего ответ будет очевиден.
Думаешь, есть различия в потоках созданных триггером и таймером?
Я кстати никогда не встречал реального применения sleep, разве что в wait и его аналогах. Мое мнение - использовать таймер и не париться.
Старый 03.05.2013, 17:25
Карточка
Kicked by SSrunX
offline
Опыт: 2,017
Активность:
айсфрог - лучший джассер мира по определению. эти высказывания:
в доте полно говнокода.
ретурн бага, тогда не было так много известно о редакторе и jass
это так мило выглядит со стороны
метод через триггеры может быть оправдан либо простым/понятным/удобным методом работы для фрога или что более вероятно - есть какие-либо ограничения на таймеры, что возникают в доте из-за вполне понятно чего.
Старый 04.05.2013, 23:26
Hate
конь вакуумный
offline
Опыт: 43,030
Активность:
какие ограничения на таймеры? :D запускал одновременно около 50 если не больше таймеров и все ок было)
Старый 04.05.2013, 23:41
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Карточка, это какие есть такие ограницения на таймеры?, с какой стати фрог jasser и пишит спеллы для доты?
Прошу представить доказательство своих слов...
Старый 05.05.2013, 02:17
Doc

offline
Опыт: 63,163
Активность:
Карточка, вут, что ты несешь? Может и нотч теперь еще лучший java-программист в мире? Или автор дизайна птичек в angry birds - лучший художник в мире? То, что дота так успешна, не означает, что она идеальна.
Старый 05.05.2013, 03:26
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
в общем такая конструкция в доте, появилась сразу при переходе на 24, т.е таймеры были только при рб.
Старый 05.05.2013, 10:13
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
16GB:
в общем такая конструкция в доте, появилась сразу при переходе на 24, т.е таймеры были только при рб.
Сменился jasser, помнится хук пуджа и тосс тини был через локейшены, сейчас интересно через координаты сделан?
Возможно это была попытка фикса какого либо бага с таймером, или специфический почерк...
Старый 05.05.2013, 11:35
Doc

offline
Опыт: 63,163
Активность:
timers
/thread
Старый 05.05.2013, 12:30
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 09:34.