Подскажите как можно перезапустить скрипт с 0, если была ошибка в стелсе ну к примеру такая,
UseObject error: Object not found или
Character 0xBAACEF tried to equip item 0x6EB497A8, but had gotten item 0x6EB3BCA5
Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
Рестарт скрипта при ошибке
Re: Рестарт скрипта при ошибке
Скрипт в студию. А вообще можешь сделать его в бесконечном цикле типа
с условиями выхода из него и его повторения. А может у тебя логика скрипта кривая, смотреть надо.
Саму ошибку вроде не вловить никак, прсто перед юзаньем проверяй есть ли объект вообще, GetQuantity вернёт 0 если его нет. Ищи по конкретному ID или по Finditem
http://stealth.od.ua/Doc:RU/Manual/Refe ... etQuantity
http://stealth.od.ua/Doc:RU/Manual/Refe ... FindTypeEx
С одеваниями тоже проверяй что возвращает Equip (http://stealth.od.ua/Doc:RU/Manual/Refe ... yers#Equip) соответственно и логику организуй.
Code: Select all
Repeat
Until False;
Саму ошибку вроде не вловить никак, прсто перед юзаньем проверяй есть ли объект вообще, GetQuantity вернёт 0 если его нет. Ищи по конкретному ID или по Finditem
http://stealth.od.ua/Doc:RU/Manual/Refe ... etQuantity
http://stealth.od.ua/Doc:RU/Manual/Refe ... FindTypeEx
С одеваниями тоже проверяй что возвращает Equip (http://stealth.od.ua/Doc:RU/Manual/Refe ... yers#Equip) соответственно и логику организуй.
Stealth 8.10.2 | Клиент: 7.0.13.4
Re: Рестарт скрипта при ошибке
Уточню, нужно что бы скрипт перезапускался.Вообще.Сбрасывались все переменные и тд.
В данный момент работает такой кусок кода, иногда приводит к вышеописанным ошибкам, примерно раз в 2 недели.
if ObjAtLayer(RhandLayer)>0 then
begin
WaitTargetObject(self);
UseObject(ObjAtLayer(RhandLayer));
wait(15000);
Да в цикле.
В данный момент работает такой кусок кода, иногда приводит к вышеописанным ошибкам, примерно раз в 2 недели.
if ObjAtLayer(RhandLayer)>0 then
begin
WaitTargetObject(self);
UseObject(ObjAtLayer(RhandLayer));
wait(15000);
Да в цикле.
Re: Рестарт скрипта при ошибке
Сделай все действия в виде отдельных процедур и засунь их в один бесконечный цикл, они у тебя будут по кругу работать, в начале цикла поставь свои переменные, с каждым витком цикла они у тебя будут исходные значения принимать.
Stealth 8.10.2 | Клиент: 7.0.13.4
Re: Рестарт скрипта при ошибке
ЭТО ТАК И РАБОТАЕТ. Извини но не подходит мне такое решение. Ибо это не решение вовсе.GeeZeR wrote:Сделай все действия в виде отдельных процедур и засунь их в один бесконечный цикл, они у тебя будут по кругу работать, в начале цикла поставь свои переменные, с каждым витком цикла они у тебя будут исходные значения принимать.
Мне нужно ЭКСТРЕННО ЗАВЕРШИТЬ текущий скрипт, при ошибке которая вываливается в системный журнал, и запустить НОВЫЙ СКРИПТ. НОВЫЙ. ВОЗМОЖНО ДРУГОЙ. НЕТ НЕ ХОЧУ КРУТИТЬ СРАЗУ 10.
Re: Рестарт скрипта при ошибке
насколько помню Vizit0r категорически отказался дать возможность программно запускать скрипт из файла, команды на "перезапуск текущего скрипта" тоже нет.
Придётся менять архитектуру скрипта: делать один общий бесконечный цикл, каждое действие перса оформлять в виде отдельных процедур/функций, внутри глобального бесконечного цикла писать логику работы всего скрипта на основании результатов работы каждой процедуры-действия. Допустим тот же коп в шахте - прилетел, копаешь, улетел, переплавил, скинул в сундук и так по кругу. Честно говоря я не понимаю зачем тебе нужно именно перезапускать сам скрипт, вместо этого тот же самый скрипт ты можешь засунуть в процедуру-две и вызывать её когда надо. Да, скрипт чуток усложнится, но это не УО Пилот, не забывай, возможности и мощь Стелса требуют знаний и труда определённого.
Придётся менять архитектуру скрипта: делать один общий бесконечный цикл, каждое действие перса оформлять в виде отдельных процедур/функций, внутри глобального бесконечного цикла писать логику работы всего скрипта на основании результатов работы каждой процедуры-действия. Допустим тот же коп в шахте - прилетел, копаешь, улетел, переплавил, скинул в сундук и так по кругу. Честно говоря я не понимаю зачем тебе нужно именно перезапускать сам скрипт, вместо этого тот же самый скрипт ты можешь засунуть в процедуру-две и вызывать её когда надо. Да, скрипт чуток усложнится, но это не УО Пилот, не забывай, возможности и мощь Стелса требуют знаний и труда определённого.
Stealth 8.10.2 | Клиент: 7.0.13.4
Re: Рестарт скрипта при ошибке
1) Чтобы не было тех ошибок что ты указал, делай проверки перед юзаньем/надеванием.lemonter wrote: Мне нужно ЭКСТРЕННО ЗАВЕРШИТЬ текущий скрипт, при ошибке которая вываливается в системный журнал, и запустить НОВЫЙ СКРИПТ. НОВЫЙ. ВОЗМОЖНО ДРУГОЙ. НЕТ НЕ ХОЧУ КРУТИТЬ СРАЗУ 10.
2) 10 крутить сразу не надо. Эти 10 будут в виде отдельных функций в теле одного глобального скрипта. Я 2 ботов так написал и вообще не парюсь.
Stealth 8.10.2 | Клиент: 7.0.13.4
Re: Рестарт скрипта при ошибке
Не хочу писать правильно, хочу писать привычно.lemonter wrote:Извини но не подходит мне такое решение. Ибо это не решение вовсе.
Ведь это так неинтересно - писать кучи проверок. Гораздо проще хрась - и сразу перезапустить скрипт.lemonter wrote: Мне нужно ЭКСТРЕННО ЗАВЕРШИТЬ текущий скрипт, при ошибке которая вываливается в системный журнал, и запустить НОВЫЙ СКРИПТ. НОВЫЙ.
классика. "Не хочу пихать все в один скрипт, хочу несколько маленьких и запускать нужный друг из друга".lemonter wrote: ВОЗМОЖНО ДРУГОЙ.
Типичный код inject-style.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".