Yoko
http://forum.yoko.com.ua/

Перефразирование
http://forum.yoko.com.ua/viewtopic.php?f=3&t=12843
Page 1 of 1

Author:  Denton [ 2007-12-02 20:52:31 ]
Post subject:  Перефразирование

В моем скрипте при продолжительной работе вылезает какая-то странная ошибка:

Если в макросе используется строка uo.usetype("xxxxxxxx") то через какое-то время мне пишет в игровом окне, не останавливая скрипт строчки из встроенного помощника по синтаксису "Usage: usetype type/lasttarget/lastobject [color]". Думал я как это исправить. Перефразировал эту строку на uo.exec("usetype xxxxxxx") - ошибка пропала.

НО!

Теперь тоже самое появляется с UO.Waittargettile('1341', str(i), str(j), str(mz)). Через некоторое время при выполнении этой строки в скрипте на мининг появляются такие надписи: "Usage: waittargettile [lasttile]/[tilenum [x] [y] [z]]".

Как мне перефразировать эту команду?

При использовании uo.exec("waittargettile 1341 [str(i)] [str(j)] [str(mz)]") использует тайл под персонажем и не воспринимает строковые параметры.

Author:  Grin [ 2007-12-03 01:59:21 ]
Post subject: 

во фантазер то... и как люди такой синтаксис придумывают...

Author:  Destruction [ 2007-12-03 10:50:50 ]
Post subject: 

Grin wrote:
во фантазер то... и как люди такой синтаксис придумывают...

Они не понимают, что брекеты означают необязательный аргумент.

Author:  Denton [ 2007-12-03 23:17:24 ]
Post subject: 

про необязательный элемент я понимаю, но как мне в макросе на копание руды "перефразировать" uo.waittargettile когда координаты x, y и z берутся из вычислений внутри самого макроса.
Как осуществить обкапывание вокруг персонажа без использования этой формулировки uo.waittargettile()

Вот кусок кода:

Code:
while not uo.Dead()

mx = UO.GetX("self")
my = UO.GetY("self")
mz = UO.GetZ("self")
UO.DeleteJournal()

for i = mx-1 to mx+1
for j = my-1 to my+1

UO.Print("Копаем в координатах: "+str(mx-i)+" "+str(my-j))

while not UO.InJournal("Здесь больше нет руды") and not UO.InJournal("Слишком далеко") and not UO.InJournal("Вы не можете добывать здесь")

    uo.DeleteJournal()
    if uo.waiting() then
        uo.canceltarget()
    endif
    UO.Waittargettile('1341', str(i), str(j), str(mz))
    UO.exec("useobject shovel")

    while not UO.InJournal("Здесь больше нет руды") and not UO.InJournal("Вы поранились киркой") and not UO.InJournal("Слишком далеко") and not UO.InJournal("Вы не можете добывать здесь")
    wend

wend

Author:  Denton [ 2007-12-05 22:30:59 ]
Post subject: 

Ребята, ну может случайно кто-то сталкивался с проблемой когда вдруг резко инжект прекращает "понимать" синтаксис какой-либо команды?

И просто пишет строчки из своего хелпа как "должна на самом деле быть написана какая-нибудь команда".

Author:  Grin [ 2007-12-06 00:26:03 ]
Post subject: 

пример приведи чего ты пишешь...

Author:  Denton [ 2007-12-06 12:03:47 ]
Post subject: 

Code:
while not uo.Dead()

mx = UO.GetX("self")
my = UO.GetY("self")
mz = UO.GetZ("self")
UO.DeleteJournal()

for i = mx-1 to mx+1
for j = my-1 to my+1

UO.Print("Копаем в координатах: "+str(mx-i)+" "+str(my-j))

while not UO.InJournal("Здесь больше нет руды") and not UO.InJournal("Слишком далеко") and not UO.InJournal("Вы не можете добывать здесь")

    uo.DeleteJournal()
    if uo.waiting() then
        uo.canceltarget()
    endif
    UO.Waittargettile('1341', str(i), str(j), str(mz))
    UO.exec("useobject shovel")

    while not UO.InJournal("Здесь больше нет руды") and not UO.InJournal("Вы поранились киркой") and not UO.InJournal("Слишком далеко") and not UO.InJournal("Вы не можете добывать здесь")
    wend

wend


В этом куске, когда я ставлю проверку на появление гампа антимакроса, у меня через какое-то время хорошей стабильной работы, начинает появляться такой глюк:

Персонаж использует кирку (объект shovel) дальше соответственно команда uo.waittargettile должна указывать координаты, в которые должен быть направлен прицел, там где копать. А вместо этого появляется сообщение "Usage: waittargettile [lasttile]\[tilenum [x] [y] [z]]".
Если просто в окошке клиента ввести команду ,waittargettile (без координат) то как раз и появится это сообщение.
Вывод - почему-то скрипт на каком-то моменте не видит UO.Waittargettile('1341', str(i), str(j), str(mz)) а начинает вести себя как при вводе пустого uo.waittargettile()

Абсолютно идентичная картина наблюдалась и с uo.useobject('shovel').
Тоже через минут 5-10 после работы макроса он переставал видеть то, что находится в круглых скобках.
Методом тыка пришел к "глупому" решению перефразировать uo.useobject('shovel') на uo.exec("useobject shovel") и пока что проблема с киркой ушла.

Author:  Destruction [ 2007-12-06 21:31:13 ]
Post subject: 

Вроде верно всё.. и неверно с другой стороны.

Попробуйте распечатать значения, который передаёте в waittargettile, заодно проверите их на корректность, и вызвать команду из отдельного скрипта.

Author:  Denton [ 2007-12-06 21:47:34 ]
Post subject: 

10 минут работают верно, потом слетает... не думаю что проблема в переменных, т.б. что если не ставить проверку антимакроса (которая затрагивает только ожидание гампа) то скрипт часами работает корректно.

Author:  Grin [ 2007-12-06 21:51:41 ]
Post subject: 

Так и будешь "врятлить"?
Сказали - проверяй...

Author:  Denton [ 2007-12-06 22:48:26 ]
Post subject: 

Можно узнать что значит эта строка?

Code:
if not uo.LastGump('replyed') then 

Author:  Grin [ 2007-12-06 22:51:39 ]
Post subject: 

Если возмешь в руки словарь и переведешь дословно, то получишь ответ

Author:  Denton [ 2007-12-06 22:54:40 ]
Post subject: 

Я перевод понял, но в скриптинге это условие значит:
"Если последний гамп не является ответной реакцией на какое-то действие"?

Author:  Denton [ 2007-12-06 23:03:46 ]
Post subject: 

Вставил задержки в антимакрос и чудо, уже полчаса без сбоев :) все так бывает просто (надеюсь)

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/