local integer p = GetPlayerId(GetTriggerPlayer()) + 1
local integer i = 22+p
set udg_CharodeiDuxInteger[ (i)] = ( udg_CharodeiDuxInteger[ (i)] + 1 )
if udg_CharodeiDuxInteger[i] == 1 then
set udg_count[p] = (udg_count[p] + 1)
call MultiboardSetItemValue( udg_Board, 10, udg_PlayerPosition[p], ( "|c00A1DD00" + I2S(udg_count[p]) ) )
endif
call TriggerSleepAction( 0.01 )
set udg_CharodeiDuxInteger[ (i)] = ( udg_CharodeiDuxInteger[ (i)] - 1 )
Одиночная игра, все дольше время все отлично. Но проблем Сетевая игра (Локальный сеть)
В начало игры все хорошо пошло, несколько минута спустя, теряет контроль над управление войска или здание (как кликает правая мышь они неслушает) некоторые время позже идти. И вижу сбой записывает переменный целочисленный, а другие остальный переменный ок.
Если уберут
call TriggerSleepAction( 0.01 )
Никаких проблем.
Если уберут
call TriggerSleepAction( 0.01 )
Никаких проблем.
Попробовал заменаcall PolledWait(0.1) тоже еще хуже.
Опрос: Вы встречает проблем вычисленный jass и вызвано теряет контроль управления над войска и здание для Сетевая игра?
1.
Да, не знаю что делает.
2.
Да, знаю как исправить
3.
Редко. не знаю как делать
4.
Редко, знаю как исправить
5.
НИКОГДА
Принятый ответ
// вверху всего кода
function TimerStartEx takes timer whichTimer, real period, boolean isPeriodic, code handlerFunc, integer userData returns nothing
call TimerStart(whichTimer, I2R(userData), false, null) // timer exploit, xgm 2007
call PauseTimer(whichTimer)
call TimerStart(whichTimer, period, isPeriodic, handlerFunc ) // start timer
endfunction
function TimerGetUserData takes timer whichTimer returns integer
return R2I(TimerGetRemaining(whichTimer )+0.5) // get user data from timer
endfunction
...
// это сам твой хендлер, вызывается после задержки, назови как хочешь
function xpadd91_handler takes nothing returns nothing
local integer p = TimerGetUserData(GetExpiredTimer())
call MultiboardSetItemValueNorm( udg_Board, 10, udg_PlayerPosition[p], ( "|c00A1DD00" + I2S(udg_APM_COUNT[p]) ) )
set udg_APM_COUNT[p] = (udg_APM_COUNT[p] + 1)
endfunction
...
local integer p = GetPlayerId(GetTriggerPlayer()) + 1
local integer i = 22+p
call TimerStartEx(udg_APM_TIME[p], 0.01, false, function xpadd91_handler, p) // тут ты p передаешь в таймер, который вызовет xpadd91_handler
...
обновил еще раз, чето не сходится с тем что наверху у тебя
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
И что за событие. Дайте больше информации.
Отредактирован xpadd91
ScorpioT1000:
Отредактирован ScorpioT1000
Отредактирован xpadd91
Все отлично! Спасибо ScorpioT1000,