Перефразирование

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Denton
Posts: 82
Joined: 2004-07-14 22:56:46
Location: Украина, Одесса
Contact:

Перефразирование

Post by Denton »

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

Если в макросе используется строка 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)]") использует тайл под персонажем и не воспринимает строковые параметры.
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения
http://uokings.ru/news.php
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

во фантазер то... и как люди такой синтаксис придумывают...
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

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

Они не понимают, что брекеты означают необязательный аргумент.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Denton
Posts: 82
Joined: 2004-07-14 22:56:46
Location: Украина, Одесса
Contact:

Post by Denton »

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

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

Code: Select all

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
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения
http://uokings.ru/news.php
Denton
Posts: 82
Joined: 2004-07-14 22:56:46
Location: Украина, Одесса
Contact:

Post by Denton »

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

И просто пишет строчки из своего хелпа как "должна на самом деле быть написана какая-нибудь команда".
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения
http://uokings.ru/news.php
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

пример приведи чего ты пишешь...
Denton
Posts: 82
Joined: 2004-07-14 22:56:46
Location: Украина, Одесса
Contact:

Post by Denton »

Code: Select all

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") и пока что проблема с киркой ушла.
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения
http://uokings.ru/news.php
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

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

Попробуйте распечатать значения, который передаёте в waittargettile, заодно проверите их на корректность, и вызвать команду из отдельного скрипта.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Denton
Posts: 82
Joined: 2004-07-14 22:56:46
Location: Украина, Одесса
Contact:

Post by Denton »

10 минут работают верно, потом слетает... не думаю что проблема в переменных, т.б. что если не ставить проверку антимакроса (которая затрагивает только ожидание гампа) то скрипт часами работает корректно.
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения
http://uokings.ru/news.php
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

Так и будешь "врятлить"?
Сказали - проверяй...
Denton
Posts: 82
Joined: 2004-07-14 22:56:46
Location: Украина, Одесса
Contact:

Post by Denton »

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

Code: Select all

if not uo.LastGump('replyed') then 
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения
http://uokings.ru/news.php
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

Если возмешь в руки словарь и переведешь дословно, то получишь ответ
Denton
Posts: 82
Joined: 2004-07-14 22:56:46
Location: Украина, Одесса
Contact:

Post by Denton »

Я перевод понял, но в скриптинге это условие значит:
"Если последний гамп не является ответной реакцией на какое-то действие"?
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения
http://uokings.ru/news.php
Denton
Posts: 82
Joined: 2004-07-14 22:56:46
Location: Украина, Одесса
Contact:

Post by Denton »

Вставил задержки в антимакрос и чудо, уже полчаса без сбоев :) все так бывает просто (надеюсь)
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения
http://uokings.ru/news.php
Post Reply