[JASS]
как сделать 3 разных действия с одной периодичностью по таймеру?
Алгоритм:
запуск тригера - из чата
остановка тригера - тоже из чата
действие1 через 0.3 сек (итого 0,3)
действие2 через 0.3 сек (итого 0,6)
действие3 через 0.3 сек (итого 0,9)
действие1 через 0.3 сек (итого 1,2)
действие2 через 0.3 сек (итого 1,5)
действие3 через 0.3 сек (итого 1,8)
итд
набросал корявый код, нерабочий конечно:
globals
integer Go=0
integer N=0
endglobals

function Test_Act takes nothing returns nothing
local integer i=GetPlayerId(GetTriggerPlayer())
if ModuloInteger(N,3)==1 then
//0.3
call BJDebugMsg("111 "+I2S(i))
elseif ModuloInteger(N,3)==2 then
//0.6
call BJDebugMsg("222 "+I2S(i))
elseif ModuloInteger(N,3)==3 then
//0.9
call BJDebugMsg("333 "+I2S(i))
endif
set N=N+1
endfunction

function Test_Init takes nothing returns nothing
local integer i=GetPlayerId(GetTriggerPlayer())
local trigger t=CreateTrigger()
local timer time=CreateTimer()
If Go=0 then
set Go=1
call EnableTrigger(t)
else
set Go=0
call DisableTrigger(t)
call PauseTimer(time)
endif
//ver1
call TriggerRegisterTimerEventPeriodic(t, 0.3)
call TriggerAddAction(t, function Test_Act)
//ver2
call TimerStart(time, 0.3, true, function Test_Act)
endfunction

function Event takes nothing returns nothing
local string s=StringCase(GetEventPlayerChatString(),false)
if s=="-t" then
call Test_Init()
endif
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
14
TriggerSleepAction в цикле. Да вы батенька гений.
ну так это можно считать полноценным решением? или тут есть какие-то подводные камни?
TriggerSleepAction(2) для сети не рекомендуется. Почитаешь какие последствия могут быть. Для одного игрока тебе будет идеальный вариант
требуется для сетевой игры конечно же. т.е. он не подходит для сетевой?
есть ссылки на статьи? пошёл погуглить
Не то условие добавил
Через цикл все з таймером
работает, у каждого свой таймер
30
есть ссылки на статьи? пошёл погуглить
Да всё просто, TriggerSleepAction игнорирует паузу и может десинкнуть из-за неточности внутреннего таймера.
14
TriggerSleepAction игнорирует паузу
а если в карту вшита защита от паузы путём троекратного запаузивания на старте?
и может десинкнуть из-за неточности внутреннего таймера.
на это пока не нашёл подтверждений
вот тут пишут
TriggerSleepAction can't cause a desync (well, unless you do it for a local player)
ну раз двое опытных картоделов пишут не использовать в сетевой игре TriggerSleepAction, значит на то есть причины
если только это не старый новый миф для xgm.guru/p/wc3/Jass-MythBusters
30
а если в карту вшита защита от паузы путём троекратного запаузивания на старте?
Ожидание игрока при лагах тоже пауза.
на это пока не нашёл подтверждений
В QA этих подверждений было полно.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.