Добавлен scopterectus
Как можно сделать это с помощью одного таймера? Чтобы каждый раз не создавался таймер, а использовался 1 на всю игру.
public function DestroyLightningTimed_TimerCallback takes nothing returns nothing
local timer t = GetExpiredTimer( )
call DestroyLightning( LoadLightningHandle( HASHTABLE, GetHandleId( t ), 0 ) )
call FlushChildHashtable( HASHTABLE, GetHandleId( t ) )
call DestroyTimer( t )
set t = null
endfunction
function DestroyLightningTimed takes lightning whichBolt, real delay returns nothing
local timer t = CreateTimer( )
call SaveLightningHandle( HASHTABLE, GetHandleId(t), 0, whichBolt )
call TimerStart( t, delay, false, function DestroyLightningTimed_TimerCallback )
set t = null
endfunction
Принятый ответ
Делается таймер с относительно низким периодом, к каждой молнии лепится float, и каждый тик таймер проходится по списку структур и уменьшает все эти float на свой период. Если после уменьшения float <= 0, то структура вместе с молнией исключается из списка обходимых таймером и уничтожается.
Sergey105, советую почитать какие-нибудь общепринятые гайдлайны по оформлению кода. Так как cJass эмулирует C++, сойдёт общий набор рекомендаций по нему от Google.
Sergey105, касательно кода замечу, что перезапускать таймер при каждом добавлении структуры нецелесообразно, лучше запустить его единожды и просто бегать по статическому массиву структур.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Clamp
что непонятно пиши
и да это пример с юнитами
ну можно переделать по своему
Отредактирован Clamp