Page 1 of 1

Скорость движения чара....

Posted: 2006-10-14 23:45:45
by omi4
Скорость движения чара задается клиентом, весь вопрос как с ним синхронизироваться?
Без этого создание правильной беголки не получается.
Варианты с жесткой задержкой не проходят, приходится или откровенно занижать скорость или 100% попадание на бан за СХ(за час теста три случая детекта, но админам этого будет достаточно.).

Какие будут мысли?

Posted: 2006-10-15 02:47:30
by Destruction
Может быть вот так? + проверка лага. Бегать быстрее чем лаг - нехорошо. А вообще, клиентские проверки - брехня, если хочешь бегать через отсылку пакетов с определённой паузой, то паузу надо узнавать у админа сервера, но такой способ - тоже фигня, т.к. один пакет может "обогнать" другой, у особо "хороших" провайдеров.

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: Скорость можно примерно замерять скриптом, а потом более точно узнать покапавшись в памяти клиента или округлив, т.к. скорее всего используется какой-то круглое число.

Кстате, касательно быстрого хождения - тайлы на котые можно пройти можно попробывать кэшировать куда-нибудь в файл и при хождении примерно одним маршрутом скорость хождения сильно возрастёт, т.к. можно будет без проверки делать несколько шагов. Есть и минус - если кто-то воткнёт дом, то скрипт хождения должен это учитывать, но из-за этого пауза может получится несколько больше, чем при обычном хождении. Но вопрос - как часто ставят новые дома там, где вы рубите лес или делаете что-либо ещё на скрипте? :-)

Posted: 2006-10-15 10:56:09
by admir
изя же имитирует движение .

Posted: 2006-10-15 15:27:37
by omi4
И правда нахрен клиент, главное чтобы сервер не выделывался..
Как сам не додумался…
У админов спрашивать дохлый номер, они сами не ведают.

Разобрал пару серверов.
Вот типовые настройки

WalkFoot = 0.4сек
RunFoot = 0.2сек
WalkMount = 0.2сек
RunMount = 0.1сек

Обход мульти объектов не великая задача, пакет о них получаем, далее пометить, основываясь на данных о нем тайлы как не проходимые.
Есть проблема с базами, нагромождение домов с заборами…

Изя и инжект сами не ходят, они это делают через клиента.