Объявление

Collapse
No announcement yet.

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

Collapse
X
  • Filter
  • Время
  • Show
Clear All
new posts

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

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

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