ARHUI
offline
Опыт:
3,341Активность: |
Прочитаешь всё это, и поймешь, что Sleep вообще не нужен, ибо есть таймеры, как говорится, на все случаи жизни.
Я никак не могу взять в толк, как таймером заменить TriggerSleepAction? Если запустить таймер, а потом в цикле проверять закончился он или нет это остановит не функцию а всю игру.
Запускай каждую итерацию цикла в новом потоке и там уже начинай с локалок+вейта. - Это как? Ясс имеет средства управления потоками? Всмысле несколько функций могут выполнятся параллельно? |
08.12.2010, 12:56 | #21
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
XOR
offline
Опыт:
38,159Активность: |
Нет, не нужно в цикле проверять закончился ли таймер, а в функции, запускаемой таймером доделывать то, что шло после слипа. Данные передаются через глобалки либо вешаются на таймер через хеш(чаще всего)
|
08.12.2010, 14:39 | #22
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JassMan
свободен
offline
Опыт:
4,193Активность: |
ARHUI, где ты в моих примерах видел, чтоб я циклы использовал в таймерах для их остановки? |
08.12.2010, 15:55 | #23
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Слип вобще нельзя никак ничем заменить, и не нужно ) |
08.12.2010, 20:54 | #24
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Velociraptor
В пространстве и времени
offline
Опыт:
14,801Активность: |
Фу-ух, кажись получилось!
16Gb, у тебя в коде не было:
((код jass
set udg_AssassinHash=InitHashtable()
)) ну и я изначально не вкурил, что нужна глобалка AssassinHash.
В общем, вот внизу рабочий пример карты, который у меня получился, на джассе БЕЗ слипа (там использовал более короткую глобалку Hash), где целитель после каста хилки на 5 сек. даёт тому, на кого сказал, ясновидение вертолёта и манабурн альянсовской башни.
Код:
((код jass
function Trig_Stil_Franzy_Cast_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'Ahea' endfunction function StillFrenzyEffect takes nothing returns nothing
local timer t=GetExpiredTimer() local unit u=LoadUnitHandle(udg_Hash,GetHandleId(t),2) call UnitRemoveAbility( u,'Afbt' ) call UnitRemoveAbility( u,'Agyv' ) call FlushChildHashtable(udg_Hash,GetHandleId(t)) call DestroyTimer(t) set t=null set u=null endfunction function Trig_Stil_Franzy_Cast_Actions takes nothing returns nothing
local unit u = GetSpellTargetUnit() local timer t = CreateTimer() call UnitAddAbility( u, 'Afbt' ) call UnitAddAbility( u, 'Agyv' ) call SaveUnitHandle(udg_Hash,GetHandleId(t),2,u) call TimerStart(t,5,false,function StillFrenzyEffect) set t=null set u=null endfunction ===========================================================================
function InitTrig_Stil_Franzy_Cast takes nothing returns nothing set gg_trg_Stil_Franzy_Cast = CreateTrigger( ) set udg_Hash=InitHashtable() call TriggerRegisterAnyUnitEventBJ( gg_trg_Stil_Franzy_Cast, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_Stil_Franzy_Cast, Condition( function Trig_Stil_Franzy_Cast_Conditions ) ) call TriggerAddAction( gg_trg_Stil_Franzy_Cast, function Trig_Stil_Franzy_Cast_Actions ) endfunction )) Если никто не хочет откомментить карту ниже, можно крыть, образец, надеюсь, кому-нибудь пригодится. Спс!
для кода используем спец. теги © swdn Отредактировано ShadoW DaemoN, 09.12.2010 в 12:02. |
09.12.2010, 10:45 | #25
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Master_chan
Полуночный командир
offline
Опыт:
15,660Активность: |
хороший годный код, учитесь гуишники |
09.12.2010, 11:55 | #26
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JassMan
свободен
offline
Опыт:
4,193Активность: |
Молодец, Velociraptor, ты способный ученик)) |
09.12.2010, 22:27 | #27
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|