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

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

Закрытая тема
 
ARHUI

offline
Опыт: 3,341
Активность:
Прочитаешь всё это, и поймешь, что Sleep вообще не нужен, ибо есть таймеры, как говорится, на все случаи жизни.
Я никак не могу взять в толк, как таймером заменить TriggerSleepAction? Если запустить таймер, а потом в цикле проверять закончился он или нет это остановит не функцию а всю игру.
Запускай каждую итерацию цикла в новом потоке и там уже начинай с локалок+вейта. - Это как? Ясс имеет средства управления потоками? Всмысле несколько функций могут выполнятся параллельно?
Старый 08.12.2010, 12:56
XOR

offline
Опыт: 38,159
Активность:
параллельно
Нет, не нужно в цикле проверять закончился ли таймер, а в функции, запускаемой таймером доделывать то, что шло после слипа. Данные передаются через глобалки либо вешаются на таймер через хеш(чаще всего)
Старый 08.12.2010, 14:39
JassMan
свободен
offline
Опыт: 4,193
Активность:
ARHUI, где ты в моих примерах видел, чтоб я циклы использовал в таймерах для их остановки?
Старый 08.12.2010, 15:55
ScorpioT1000
Работаем
offline
Опыт: отключен
Слип вобще нельзя никак ничем заменить, и не нужно )
Старый 08.12.2010, 20:54
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
Прикрепленные файлы
Тип файла: w3x JASS Casting spell 2.w3x (12.9 Кбайт, 14 просмотров )

Отредактировано ShadoW DaemoN, 09.12.2010 в 12:02.
Старый 09.12.2010, 10:45
Master_chan
Полуночный командир
offline
Опыт: 15,660
Активность:
хороший годный код, учитесь гуишники
Старый 09.12.2010, 11:55
JassMan
свободен
offline
Опыт: 4,193
Активность:
Молодец, Velociraptor, ты способный ученик))
Старый 09.12.2010, 22:27
Закрытая тема

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

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

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

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



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