Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Рестарт скрипта при ошибке

тут можно задать вопрос по скриптингу
Post Reply
lemonter
Neophyte
Neophyte
Posts: 37
Joined: 14.05.2011 7:59

Рестарт скрипта при ошибке

Post by lemonter »

Подскажите как можно перезапустить скрипт с 0, если была ошибка в стелсе ну к примеру такая,
UseObject error: Object not found или
Character 0xBAACEF tried to equip item 0x6EB497A8, but had gotten item 0x6EB3BCA5
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: Рестарт скрипта при ошибке

Post by GeeZeR »

Скрипт в студию. А вообще можешь сделать его в бесконечном цикле типа

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
lemonter
Neophyte
Neophyte
Posts: 37
Joined: 14.05.2011 7:59

Re: Рестарт скрипта при ошибке

Post by lemonter »

Уточню, нужно что бы скрипт перезапускался.Вообще.Сбрасывались все переменные и тд.
В данный момент работает такой кусок кода, иногда приводит к вышеописанным ошибкам, примерно раз в 2 недели.

if ObjAtLayer(RhandLayer)>0 then
begin
WaitTargetObject(self);
UseObject(ObjAtLayer(RhandLayer));
wait(15000);


Да в цикле.
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: Рестарт скрипта при ошибке

Post by GeeZeR »

Сделай все действия в виде отдельных процедур и засунь их в один бесконечный цикл, они у тебя будут по кругу работать, в начале цикла поставь свои переменные, с каждым витком цикла они у тебя будут исходные значения принимать.
Stealth 8.10.2 | Клиент: 7.0.13.4
lemonter
Neophyte
Neophyte
Posts: 37
Joined: 14.05.2011 7:59

Re: Рестарт скрипта при ошибке

Post by lemonter »

GeeZeR wrote:Сделай все действия в виде отдельных процедур и засунь их в один бесконечный цикл, они у тебя будут по кругу работать, в начале цикла поставь свои переменные, с каждым витком цикла они у тебя будут исходные значения принимать.
ЭТО ТАК И РАБОТАЕТ. Извини но не подходит мне такое решение. Ибо это не решение вовсе.
Мне нужно ЭКСТРЕННО ЗАВЕРШИТЬ текущий скрипт, при ошибке которая вываливается в системный журнал, и запустить НОВЫЙ СКРИПТ. НОВЫЙ. ВОЗМОЖНО ДРУГОЙ. НЕТ НЕ ХОЧУ КРУТИТЬ СРАЗУ 10.
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: Рестарт скрипта при ошибке

Post by GeeZeR »

насколько помню Vizit0r категорически отказался дать возможность программно запускать скрипт из файла, команды на "перезапуск текущего скрипта" тоже нет.
Придётся менять архитектуру скрипта: делать один общий бесконечный цикл, каждое действие перса оформлять в виде отдельных процедур/функций, внутри глобального бесконечного цикла писать логику работы всего скрипта на основании результатов работы каждой процедуры-действия. Допустим тот же коп в шахте - прилетел, копаешь, улетел, переплавил, скинул в сундук и так по кругу. Честно говоря я не понимаю зачем тебе нужно именно перезапускать сам скрипт, вместо этого тот же самый скрипт ты можешь засунуть в процедуру-две и вызывать её когда надо. Да, скрипт чуток усложнится, но это не УО Пилот, не забывай, возможности и мощь Стелса требуют знаний и труда определённого.
Stealth 8.10.2 | Клиент: 7.0.13.4
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: Рестарт скрипта при ошибке

Post by GeeZeR »

lemonter wrote: Мне нужно ЭКСТРЕННО ЗАВЕРШИТЬ текущий скрипт, при ошибке которая вываливается в системный журнал, и запустить НОВЫЙ СКРИПТ. НОВЫЙ. ВОЗМОЖНО ДРУГОЙ. НЕТ НЕ ХОЧУ КРУТИТЬ СРАЗУ 10.
1) Чтобы не было тех ошибок что ты указал, делай проверки перед юзаньем/надеванием.
2) 10 крутить сразу не надо. Эти 10 будут в виде отдельных функций в теле одного глобального скрипта. Я 2 ботов так написал и вообще не парюсь.
Stealth 8.10.2 | Клиент: 7.0.13.4
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Рестарт скрипта при ошибке

Post by Vizit0r »

lemonter wrote:Извини но не подходит мне такое решение. Ибо это не решение вовсе.
Не хочу писать правильно, хочу писать привычно.
lemonter wrote: Мне нужно ЭКСТРЕННО ЗАВЕРШИТЬ текущий скрипт, при ошибке которая вываливается в системный журнал, и запустить НОВЫЙ СКРИПТ. НОВЫЙ.
Ведь это так неинтересно - писать кучи проверок. Гораздо проще хрась - и сразу перезапустить скрипт.
lemonter wrote: ВОЗМОЖНО ДРУГОЙ.
классика. "Не хочу пихать все в один скрипт, хочу несколько маленьких и запускать нужный друг из друга".


Типичный код inject-style.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply