Да, тот параметр за это и отвечает. Но здесь есть одно но. Тот кто писал "правильный" и "неправильный" код - абсолютно не представляет как клиент высылает пакеты.
Если желаешь подстраховаться - поставь указанную задержку.
Просто проблема в том, что клиент сам фильтрует нажатия клавиш и не позволяет высылать их слишком часто чтобы не использовать много траффика.
То что написали у вас ГМы бред еще и потому, что по их словам получается, что если я начну быстро клацать кнопкой влево или вправо - то меня за это забанят. Хотя на самом деле - если ты клацнешь 30 раз кнопкой - к серверу дойдёт 2-3 нажатия.
Но если всётаки есть желание перестраховаться - то нужно использовать StepTimeOut. Правда тут есть тоже ньюанс. StepTimeOut ограничивает не минимальную задержку - а максимальную. Алгоритм такой:
1) Нажимаем 36
2) Ждём
3) Если пришёл ответ от сервера - идём в пункт 6.
4) Если мы уже ждём StepTimeOut времени - идём в пункт 6.
5) Идём в пункт 2 и снова ждём.
6) Всякие проверки на то получилось-ли сдвинуться с места.
Опять-же, минимальную задержку я не делал, т.к. она нафиг не нужна.
Но если тебе она действительно надо, то фикс будет довольно простой, нужно заменить эти две функции, и добавить новый параметр в самое начало:
Code:
var minMoveTimer = 300
....
Sub MOD(a)
if (a < 0) then
return -a
else
return a
endif
endsub
Sub waitMoveTimer()
var timer = val(UO.GetGlobal("moveTimer"))
while (UO.Timer() < timer) AND (MOD(timer-UO.Timer()) < (minMoveTimer*2))
wait(DynamicPause)
wend
UO.SetGlobal("moveTimer",str(UO.Timer()+minMoveTimer/100))
endsub
Sub PressDir(Dir)
dim Dirs[9]
Dirs[1]=35
Dirs[2]=40
Dirs[3]=34
Dirs[4]=39
Dirs[5]=33
Dirs[6]=38
Dirs[7]=36
Dirs[8]=37
waitMoveTimer()
UO.Press(Dirs[Dir],1)
end sub
Sub GoDir(Dir,Prec)
dim Dirs[9]
Dirs[1]=35
Dirs[2]=40
Dirs[3]=34
Dirs[4]=39
Dirs[5]=33
Dirs[6]=38
Dirs[7]=36
Dirs[8]=37
var DistanceX=Abs(UO.GetX()-val(UO.GetGlobal("GlobalGoX")))
var DistanceY=Abs(UO.GetY()-val(UO.GetGlobal("GlobalGoY")))
var GoDistance
if (DistanceX-Prec)<Speed then
GoDistance=DistanceX-Prec
else
if (DistanceY-Prec)<Speed then
GoDistance=DistanceY-Prec
else
GoDistance=Speed
endif
endif
var i
for i=1 to GoDistance
waitMoveTimer()
UO.Press(Dirs[Dir],1)
next
end sub
Правда если это сделать - очень замедлится скорость бега с увеличенным Speed. Тоесть Speed = 2 будет всего процентов на 5 быстрее чем Speed = 1.