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
Скрипт в студию. А вообще можешь сделать его в бесконечном цикле типа
с условиями выхода из него и его повторения. А может у тебя логика скрипта кривая, смотреть надо.
Саму ошибку вроде не вловить никак, прсто перед юзаньем проверяй есть ли объект вообще, 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.