Помогите исправить скрипт на ламбер, работает,но глючит

Гости
Сообщений: 18
Рег. 24.02.2015
12 февраля 2017 12:51
Сообщение #1
В общем есть скрипт на ламбер и он просто шикарен - сам ищет дереья и сам рубит...ну и ходит на поиски деревьев,конечно,но...есть одно небольшое НО - он дико глючит...по непонятным причинам,т.е. то всё работает шикарно...то он стирает всё хождение,которое ты забивал в настройках игры (как вообще исправить этот косяк уо,когда стираются забинденные кнопки в самом клиенте ?),а то начинает дико глючить,собственно - стирает настройки хождения и не ходит или...или ходит,но даже не пытается рубить...т.е. даже в ластмессагах нету сообщений о том,что персонаж пытается юзать топор...т.е. просто тупо бродит по лесу без остановки...собственно,если исправить эти косяки,то скрипт будет просто идеальным (напомню - сам ходит,сам ищет деревья,сам вырубает их до конца...вырубает все деревья вокруг себя и идёт дальше на поисках следующем полянки)...собственно,вот скрипт:

// F6 у меня Last object, wait for target, last target
// На топор два клика и на дерево , потом запускаешь макрос.
//z - низ лево
//x - низ
//c - низ право
//a - лево
//s - --
//d - право
//q - верх лево
//w - верх
//e - верх право

set #tau 0
set #squareside 18
gosub getxy
set #startx #x
set #starty #y
:start
for #ddy 0 #squareside 2
for #ddx 0 #squareside 2
set #rr (#ddy / 4) * 4
if #rr = #ddy
set #targetx #startx + #ddx
else
set #targetx #startx + #squareside - #ddx
end_if
set #targety #starty + #ddy
gosub goxy
gosub lumber
end_for
end_for
goto start

:goxy
gosub getxy
if #x < #targetx
set #dir 2
set #steps #targetx - #x
set #steps #steps * 4
gosub walkdir
end_if
if #x > #targetx
set #dir 6
set #steps #x - #targetx
set #steps #steps * 4
gosub walkdir
end_if
if #y < #targety
set #dir 4
set #steps #targety - #y
set #steps #steps * 3
gosub walkdir
end_if
if #y > #targety
set #dir 0
set #steps #y - #targety
set #steps #steps * 3
gosub walkdir
end_if
gosub getxy
if (#x = #targetx) and (#y = #targety)
return
else
set #dir random (8)
set #steps 1
gosub walkdir
end_if
goto goxy

:getxy
set #x charposx
set #y charposy
set #x (#x / 4)
set #y (#y / 3)
return

:walkdir
set #tau 25
if #dir <> chardir
set #steps #steps + 1
end_if
if #dir = 0
repeat #steps
send217 c #tau //низ право
end_repeat
end_if
if #dir = 1
repeat #steps
send217 d #tau //право
end_repeat
end_if
if #dir = 2
repeat #steps
send217 z #tau //низ лево
end_repeat
end_if
if #dir = 3
repeat #steps
send217 x #tau //низ
end_repeat
end_if
if #dir = 4
repeat #steps
send217 e #tau //верх право
end_repeat
end_if
if #dir = 5
repeat #steps
send217 a #tau //лево
end_repeat
end_if
if #dir = 6
repeat #steps
send217 q #tau //лево верх
end_repeat
end_if
if #dir = 7
repeat #steps
send217 w #tau //верх
end_repeat
end_if
return

:lumber
//set #cnt 0 //не понятно,зачем эти две строки
//закоменчены и зачем они нужны
//send F6 3000 //last object-wait for target-last target
for #dx 0 4 4
for #dy 0 3 3
set #x charposx
set #y charposy
set #x (#x / 4) * 4 + #dx
set #y (#y / 3) * 3 + #dy
set lasttargetx #x
set lasttargety #y
gosub work
end_for
end_for
return

:work
set #tau 230
send F6 #tau //last object-wait for target-last target
set timer 0
:loop
if (lastmsg you put) or (lastmsg you can) or (lastmsg changed) or (lastmsg you hack) or (lastmsg increased) or (lastmsg yourself well)
send F6 #tau //last object-wait for target-last target
set timer 0
end_if
if (lastmsg no logs left here) or (lastmsg try chopping a tree) or (lastmsg too far) or (timer > 5000)
wait #tau
return
end_if
goto loop

_____________________________________________________________
Проблема в том - вообще не понимаю,как он работает...собственно - как определяет,что это дерево...или тупо наощуп...ну и не пойму,откуда берутся косяки описанные выше...т.е. иногда,я тупо релог делаю и всё отлично работает,а в остальных случаях (например когда движение перестаёт работать и я его назначаю заного - он только ходить начинает,но не рубить...)
Да,я очень странные кнопки забил на перемещение,знаю,но...это единственные кнопки,которые у меня не сбиваются после релога...
И единственный выход,когда скрипт "зависает" и начинает только ходить - дождаться пока он дойдёт до новой полянки и перезапустить скрипт (остановить его,персонаж остановится,потом запустить скрипт снова и он начнёт рубить...т.е. просто быстро тыкнуть два раза на кнопку запуска скрипта)
Лейтенант (4548828)11 лет
Dragonstalker
Сообщений: 3319
Рег. 19.11.2013
12 февраля 2017 18:36
Сообщение #2
Цитата: Aleksei
и он просто шикарен - сам ищет дереья и сам рубит...ну и ходит на поиски деревьев,конечно,но...есть одно небольшое НО


Там в принципе как бы и ответ на вопрос. :crazy:
Сомневаюсь что имеет смысл на пилоте пилить что то тяжелое.

Гости
Сообщений: 18
Рег. 24.02.2015
13 февраля 2017 10:57
Сообщение #3
Ну реализация-то просто шикарная,вот только откуда этот косяк вылазит - непонятно(
Маршал (60157892)14 летИнквизитор
Inquisitor
Сообщений: 6208
Рег. 27.11.2009
13 февраля 2017 15:50
Сообщение #4
Косяк вылазит из lastmsg.
Скрипт "шикарен", но не учитывает особенности сервера - тут есть ряд своих сообщений, помимо тех, что перечислены в скрипте.
И нет проверки на ворлд сэйв,
Старший Прапорщик (2872546)8 лет
Dragonstalker
Сообщений: 133
Рег. 26.02.2016
14 февраля 2017 00:55
Сообщение #5
Mirage,
Так тут наоборот, секс со скриптом будет :smile3:

Пилот не адаптирован под 6 клиент вроде(
Ефрейтор (295688)7 лет
Monk
Сообщений: 29
Рег. 25.01.2017
14 февраля 2017 12:17
Сообщение #6
Это на пилоте все написано что ли ? Жесть.
Старший Лейтенант (5922425)15 лет
Necromancer
Сообщений: 597
Рег. 15.10.2009
15 февраля 2017 09:37
Сообщение #7
Fes,
На самом деле далеко не самый большой и трудный скрипт из тех,что я видел. По сути пилот очень неплохая платформа для написания разноплановых скриптов.
Старший Прапорщик (2872546)8 лет
Dragonstalker
Сообщений: 133
Рег. 26.02.2016
15 февраля 2017 14:15
Сообщение #8
FATAL DISEASE,
Да, только он на журнал не реагирует если не адаптирован под клиент.
Старший Лейтенант (5922425)15 лет
Necromancer
Сообщений: 597
Рег. 15.10.2009
16 февраля 2017 10:27
Сообщение #9
One Love,
Не самая великая проблема.
Последние посетители (0):

 
Сейчас: 23 ноября 2024 14:27