Скорость движения чара задается клиентом, весь вопрос как с ним синхронизироваться?
Без этого создание правильной беголки не получается.
Варианты с жесткой задержкой не проходят, приходится или откровенно занижать скорость или 100% попадание на бан за СХ(за час теста три случая детекта, но админам этого будет достаточно.).
Какие будут мысли?
Скорость движения чара....
Moderators: Murderator+, Murderator
-
- Junior Expert
- Posts: 3221
- Joined: 2004-06-24 22:08:56
Может быть вот так? + проверка лага. Бегать быстрее чем лаг - нехорошо. А вообще, клиентские проверки - брехня, если хочешь бегать через отсылку пакетов с определённой паузой, то паузу надо узнавать у админа сервера, но такой способ - тоже фигня, т.к. один пакет может "обогнать" другой, у особо "хороших" провайдеров.
Всё писалось на коленке, и является только моим ИМХО.
PS: На первый взгляд может показаться, что можно организовать подобное без глобалок - делать чеклаг, а потом проверять сделан шаг или нет, но вариант хуже - т.к. шагнуть может быстрее чеклага. Идеальным я думаю сделать для быстрой ходилки - отсылка сразу нескольких шагов поочерёдно, а потом одна пауза с проверкой.
PPS: Скорость можно примерно замерять скриптом, а потом более точно узнать покапавшись в памяти клиента или округлив, т.к. скорее всего используется какой-то круглое число.
Кстате, касательно быстрого хождения - тайлы на котые можно пройти можно попробывать кэшировать куда-нибудь в файл и при хождении примерно одним маршрутом скорость хождения сильно возрастёт, т.к. можно будет без проверки делать несколько шагов. Есть и минус - если кто-то воткнёт дом, то скрипт хождения должен это учитывать, но из-за этого пауза может получится несколько больше, чем при обычном хождении. Но вопрос - как часто ставят новые дома там, где вы рубите лес или делаете что-либо ещё на скрипте?
Code: Select all
; какой-то код функции хождения
x = uo.getX()
y = uo.getY()
sendMove() ; отправим персонажа делать 1 шаг
uo.exec('checklag')
; подождём, пока запустится checklag - на всякий случай
repeat
wait(10)
until uo.getGlobal('checklag') == 'false'
; ждём пока чар не шагнёт, или пока не ответит сервер, можно ещё на всякий случай добавить минимальное время паузы
while x == uo.getX() && y == uo.getY() && uo.getGlobal('checklag') == 'false'
wait(50)
wend
; если не шагнули, а checklag закончил выполнение
if uo.getGlobal('checklag') == 'true' && uo.getX() == x && uo.getY() == y then
; пройти на тайл нельзя
else
; пройти на тайл можно
endif
; какой-то код функции хождения
; special checklag
Sub checklag()
uo.setGlobal('checklag', 'false')
uo.click('backpack')
repeat
wait(100)
until uo.injournal('ackpack')
uo.setGlobal('checklag', 'true')
endsub
Всё писалось на коленке, и является только моим ИМХО.
PS: На первый взгляд может показаться, что можно организовать подобное без глобалок - делать чеклаг, а потом проверять сделан шаг или нет, но вариант хуже - т.к. шагнуть может быстрее чеклага. Идеальным я думаю сделать для быстрой ходилки - отсылка сразу нескольких шагов поочерёдно, а потом одна пауза с проверкой.
PPS: Скорость можно примерно замерять скриптом, а потом более точно узнать покапавшись в памяти клиента или округлив, т.к. скорее всего используется какой-то круглое число.
Кстате, касательно быстрого хождения - тайлы на котые можно пройти можно попробывать кэшировать куда-нибудь в файл и при хождении примерно одним маршрутом скорость хождения сильно возрастёт, т.к. можно будет без проверки делать несколько шагов. Есть и минус - если кто-то воткнёт дом, то скрипт хождения должен это учитывать, но из-за этого пауза может получится несколько больше, чем при обычном хождении. Но вопрос - как часто ставят новые дома там, где вы рубите лес или делаете что-либо ещё на скрипте?

И правда нахрен клиент, главное чтобы сервер не выделывался..
Как сам не додумался…
У админов спрашивать дохлый номер, они сами не ведают.
Разобрал пару серверов.
Вот типовые настройки
WalkFoot = 0.4сек
RunFoot = 0.2сек
WalkMount = 0.2сек
RunMount = 0.1сек
Обход мульти объектов не великая задача, пакет о них получаем, далее пометить, основываясь на данных о нем тайлы как не проходимые.
Есть проблема с базами, нагромождение домов с заборами…
Изя и инжект сами не ходят, они это делают через клиента.
Как сам не додумался…
У админов спрашивать дохлый номер, они сами не ведают.
Разобрал пару серверов.
Вот типовые настройки
WalkFoot = 0.4сек
RunFoot = 0.2сек
WalkMount = 0.2сек
RunMount = 0.1сек
Обход мульти объектов не великая задача, пакет о них получаем, далее пометить, основываясь на данных о нем тайлы как не проходимые.
Есть проблема с базами, нагромождение домов с заборами…
Изя и инжект сами не ходят, они это делают через клиента.