|
|
|
Oskom Forums Добро пожаловать на Oskom Forums.
|
-
Помогите исправить скрипт на ламбер
В общем есть скрипт на ламбер и он просто шикарен - сам ищет дереья и сам рубит...ну и ходит на поиски деревьев,конечно,но...есть одно небольшое НО - он дико глючит...по непонятным причинам,т.е. то всё работает шикарно...то он стирает всё хождение,которое ты забивал в настройках игры (как вообще исправить этот косяк уо,когда стираются забинденные кнопки в самом клиенте ?),а то начинает дико глючить,собственно - стирает настройки хождения и не ходит или...или ходит,но даже не пытается рубить...т.е. даже в ластмессагах нету сообщений о том,что персонаж пытается юзать топор...т.е. просто тупо бродит по лесу без остановки...собственно,если исправить эти косяки,то скрипт будет просто идеальным (напомню - сам ходит,сам ищет деревья,сам вырубает их до конца...вырубает все деревья вокруг себя и идёт дальше на поисках следующем полянки)...собственно,вот скрипт:
// 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 (
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
__________________________________________________ ___________
Проблема в том - вообще не понимаю,как он работает...собственно - как определяет,что это дерево...или тупо наощуп...ну и не пойму,откуда берутся косяки описанные выше...т.е. иногда,я тупо релог делаю и всё отлично работает,а в остальных случаях (например когда движение перестаёт работать и я его назначаю заного - он только ходить начинает,но не рубить...)
Да,я очень странные кнопки забил на перемещение,знаю,но...это единственные кнопки,которые у меня не сбиваются после релога...
И единственный выход,когда скрипт "зависает" и начинает только ходить - дождаться пока он дойдёт до новой полянки и перезапустить скрипт (остановить его,персонаж остановится,потом запустить скрипт снова и он начнёт рубить...т.е. просто быстро тыкнуть два раза на кнопку запуска скрипта)
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
Правила форума
|