Page 1 of 1

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

Posted: 17.07.2017 10:12
by lemonter
Подскажите как можно перезапустить скрипт с 0, если была ошибка в стелсе ну к примеру такая,
UseObject error: Object not found или
Character 0xBAACEF tried to equip item 0x6EB497A8, but had gotten item 0x6EB3BCA5

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

Posted: 17.07.2017 18:20
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) соответственно и логику организуй.

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

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

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


Да в цикле.

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

Posted: 18.07.2017 23:26
by GeeZeR
Сделай все действия в виде отдельных процедур и засунь их в один бесконечный цикл, они у тебя будут по кругу работать, в начале цикла поставь свои переменные, с каждым витком цикла они у тебя будут исходные значения принимать.

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

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

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

Posted: 19.07.2017 10:42
by GeeZeR
насколько помню Vizit0r категорически отказался дать возможность программно запускать скрипт из файла, команды на "перезапуск текущего скрипта" тоже нет.
Придётся менять архитектуру скрипта: делать один общий бесконечный цикл, каждое действие перса оформлять в виде отдельных процедур/функций, внутри глобального бесконечного цикла писать логику работы всего скрипта на основании результатов работы каждой процедуры-действия. Допустим тот же коп в шахте - прилетел, копаешь, улетел, переплавил, скинул в сундук и так по кругу. Честно говоря я не понимаю зачем тебе нужно именно перезапускать сам скрипт, вместо этого тот же самый скрипт ты можешь засунуть в процедуру-две и вызывать её когда надо. Да, скрипт чуток усложнится, но это не УО Пилот, не забывай, возможности и мощь Стелса требуют знаний и труда определённого.

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

Posted: 19.07.2017 10:57
by GeeZeR
lemonter wrote: Мне нужно ЭКСТРЕННО ЗАВЕРШИТЬ текущий скрипт, при ошибке которая вываливается в системный журнал, и запустить НОВЫЙ СКРИПТ. НОВЫЙ. ВОЗМОЖНО ДРУГОЙ. НЕТ НЕ ХОЧУ КРУТИТЬ СРАЗУ 10.
1) Чтобы не было тех ошибок что ты указал, делай проверки перед юзаньем/надеванием.
2) 10 крутить сразу не надо. Эти 10 будут в виде отдельных функций в теле одного глобального скрипта. Я 2 ботов так написал и вообще не парюсь.

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

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


Типичный код inject-style.