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

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

Ответ
 
darker

offline
Опыт: 2,291
Активность:
Можно ли "Спать" в циклах
В этом коде почему-то вылетает после слипа.
Подскажите, пожайлуста, почему.
Я уже незнаю.
Код:
Код:
private function AttackTrigger takes nothing returns nothing
if LoadUnitHandle(Hash,GetHandleId(GetTriggeringTrigger()),2) == GetEventDamageSource() then
call SaveBoolean(Hash,GetHandleId(GetTriggeringTrigger()),1,true)
call UnitRemoveAbility(GetAttacker(),'ARSB')
call  BJDebugMsg("Attacked")
endif
endfunction


private function AttackTimer takes nothing returns nothing
call DestroyTimer(GetExpiredTimer())
call SaveBoolean(Hash,LoadInteger(Hash,GetHandleId(GetExpiredTimer()),1),1,true)
call FlushChildHashtable(Hash,GetHandleId(GetExpiredTimer()))
call BJDebugMsg("Time")
endfunction

private function Attack takes nothing returns nothing
local unit u = AttackUnit
local unit t = AttackTarget
local trigger tr = CreateTrigger()
local timer ti = CreateTimer()
local event e = TriggerRegisterUnitEvent(tr, t, EVENT_UNIT_DAMAGED)
local integer id = GetHandleId(tr)
call TriggerAddAction(tr,function AttackTrigger )
call UnitAddAbility(u,'ARSB')
call TimerStart(ti,1.00,false,function AttackTimer)
call SaveInteger(Hash,GetHandleId(ti),1,id)
call SaveBoolean(Hash,id,1,false)
loop
call BJDebugMsg("AttackFinish1")
call TriggerSleepAction(0.1)
call BJDebugMsg("AttackFinish2")
call IssueTargetOrderById(u,851983,t)
call BJDebugMsg("AttackFinish3")
if LoadBoolean(Hash,id,1) then
call BJDebugMsg("AttackT")
else
call BJDebugMsg("AttackF")
endif
call BJDebugMsg("AttackFinish4")
exitwhen LoadBoolean(Hash,id,1)
call BJDebugMsg("AttackFinish5")
endloop
call TriggerClearActions(tr)
call DestroyTrigger(tr)
call UnitRemoveAbility(u,'ARSB')
call FlushChildHashtable(Hash,id)
set e = null
set ti = null
set tr = null
set u = null
set t = null
call BJDebugMsg("AttackFinish")
endfunction
Прикрепленные файлы
Тип файла: w3x Rush.w3x (18.8 Кбайт, 14 просмотров )
Старый 17.03.2010, 20:31
Enein
Silenced by ZlaYa1000
offline
Опыт: 43,453
Активность:
нельзя, а то атата будет
Старый 17.03.2010, 20:33
darker

offline
Опыт: 2,291
Активность:
А что ж терь делать таймерами ?
Проще убитсо :) ппц...
Старый 17.03.2010, 20:37
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
почему бы вместо слипа не сделать таймер с периодом в 0.1
Старый 17.03.2010, 20:37
tgonta
Pixelated Sora Coder
offline
Опыт: 3,160
Активность:
Проспать в циклах можно, но не без последствий)
Старый 17.03.2010, 20:38
darker

offline
Опыт: 2,291
Активность:
И как тогда зделать прикол, что б заставить чела бить чела юез таймера некак (?
Старый 17.03.2010, 20:38
Mr_ILYAS
Kicked by XimikS
offline
Опыт: 492
Активность:
к сожалению нет.
не ну конешно Polled wait работает, но, по сути дела, это такая функция, которая сама по себе криво юзает "слип", если посмотришь в blizard.j, то убедишься в этом.
Старый 17.03.2010, 20:43
agentex

offline
Опыт: 34,834
Активность:
Проще убитсо
нет проще почитать статьи и поспрашивать людей
Старый 17.03.2010, 21:34
Mr_ILYAS
Kicked by XimikS
offline
Опыт: 492
Активность:
да да, таймеры — не такая уж и сложная штука, и сделать задержку на какое-либо действие, или действия, не так уж сложно
займёт минуты полторы максимум в написании. . .

Отредактировано Mr_ILYAS, 18.03.2010 в 00:42.
Старый 18.03.2010, 00:11
ScorpioT1000
Работаем
offline
Опыт: отключен
юзай новый поток если не критично O_O и в потоке спи сколько угодно
ScorpioT1001 добавил:
всмысле в каждой интерации цикла новый поток
Старый 18.03.2010, 02:59
Ответ

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

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

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

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



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