Проверка скрипта на запуск, Нужна команда
Ефрейтор (154531)12 лет
Paladin
Сообщений: 70
Рег. 14.11.2012
10 ноября 2014 10:34
Сообщение #1
Вопрос к гуру инжекта, пошарился по гуглу, по форуму, но не могу найти ни пример ни ответ на вопрос, есть ли в инже команда, которая проверяет запущен ли в данный момент тот или иной скрипт, на подобие GMStep'a. Как я понимаю ГМ-степ это фишка сферы, как глобальное свойство перса, а не команда из инжи.

Так вот, хотелось бы узнать:
1) Существует ли в инже возможность встраивания в скрипт проверки на наличие уже запущенной версии оного(что-бы в панике накручивая скролл крысы не запустить 20-30 UO.Cast('Magic Arrow','self') например). Если да, то что за команда, по возможности пример использования.
2) Существует ли в инжекте возможность поставить запущенный скрипт на паузу, что бы к примеру успеть подбросить регов в сундук при крафте скролов и т.п. Если да, то что за команда, по возможности пример использования.
3) Если впаять в скрипт команду uo.setglobal('Pause','On'), она будет действовать только на тот скрипт в котором записана, или на все запущенные в данный момент в инжекте?

Всем заранее спасибо!

Из поста Mirage на http://forum.yoko.com.ua/viewtopic.php?f=18&t=16733 почерпнул кое что полезное, но прикрутить под свои нужды что-то не выходит(((
Старший Лейтенант (6395350)12 лет
Necromancer
Сообщений: 5530
Рег. 27.08.2012
10 ноября 2014 10:45
Сообщение #2
Beholder,
ты сам отвечаешь на свои вопросы :)
Цитата: Beholder
1) Существует ли в инже возможность встраивания в скрипт проверки на наличие уже запущенной версии оного

Цитата: Beholder
3) Если впаять в скрипт команду uo.setglobal('Pause','On')

в скрипте автостарта ты глобалку обнуляешь. Затем перед действием ставишь глобалку = 1, после действия =0. Соответственно при запуске скпта прикручиваешь проверку на нулевую глобалку. Если глобалка 0, то переводим ее в 1, делаем действие и обнуляем. Если глобалка не ноль, то завершаем скрипт без действия.

Цитата: Beholder
3) Если впаять в скрипт команду uo.setglobal('Pause','On'), она будет действовать только на тот скрипт в котором записана, или на все запущенные в данный момент в инжекте?

на все в старом инжекте, а вот в новом - хз, я не помню :blush:
Лейтенант (4548828)11 лет
Dragonstalker
Сообщений: 3319
Рег. 19.11.2013
10 ноября 2014 10:51
Сообщение #3
на все. глобалка прописывается в файлах инжекта а не в самом скрипте => что даже прии перезапуске она сохраняет свое значение пока не будет изменена.
Старший Лейтенант (6395350)12 лет
Necromancer
Сообщений: 5530
Рег. 27.08.2012
10 ноября 2014 11:05
Сообщение #4
Mirage,
а встроенные паузы в новом? я это имел ввиду )
Ефрейтор (154531)12 лет
Paladin
Сообщений: 70
Рег. 14.11.2012
10 ноября 2014 11:31
Сообщение #5
Цитата: Mitako
ты сам отвечаешь на свои вопросы :)
, это речь идет о паузах в работе самого инжекта, но это топорный вариант того, что я хочу сделать.

Впаяв в скрипт паузу от Миража

if uo.getglobal('Pause')=='On' then
repeat
wait (500)
until uo.getglobal('Pause')=='Off'
endif
sub PauseOn()
uo.setglobal('Pause','On')
endsub
sub PauseOff()
uo.setglobal('Pause','Off')
uo.print('Пауза выключена!')
endsub

я получу возможность ставить всю инжу на паузу, а я бы хотел поставить на паузу 1 только скрипт.

Кроме того, я так и не понял как замутить проверку на предмет того, что скрипт ужезапущен, что бы избежать задвоения(((

Я не особо крут в коде, так что очевидные для тебя вещи, мне могут показаться астрономией! ;)
Лейтенант (4548828)11 лет
Dragonstalker
Сообщений: 3319
Рег. 19.11.2013
10 ноября 2014 13:03
Сообщение #6
варианты применения два:

1) скрипт на лут. В autostart прописывается
Sub autostart()
uo.setGlobal("running",1)
end sub

в резке в самом начале проверка на запуск.

Sub REZ()
   UO.Set('quiet','1')
   if val(uo.getGlobal('running'))==1 then
      uo.setGlobal('running',2)
    ;uo.ignorereset()
      uo.findtype(body, -1, 'ground', 2)
бла бла блда
   endif
   uo.setGlobal('running',1)
   UO.Set('quiet','0')
end sub


если 1 то меняем значение на 2 и режем. В конце меняем опять на 1. Если вдруг скрипт во время запуска запустить еще раз то он не запустится так как значение не равно 1.

2) с паузой то что ты написал только не совсем так
Цитата: Beholder
я получу возможность ставить всю инжу на паузу, а я бы хотел поставить на паузу 1 только скрипт.

не ВСЮ инжу а скрипт где ты будет эту проверку использовать.
Если у тебя запускается 3 скрипта например в параллель рыболов, скан на ПК, скан жизней (не из 1 скрипта а именно параллельно), в скрипте на мининг у тебя будет првоерка на паузу - как ты написал, а в скрипте на ПК будет задаваться pauseON при появлении убийцы. в добыче сработает пауза а сканер и лечилка продолжат работать.

как то типо так

              UO.DeleteJournal()
               UO.WaitTargetTile(Tiles, mX+X, mY+Y, mZ)
               Tools()
               LastTimer=UO.Timer()
               repeat
                  wait( delay1 )
                  if uo.getglobal('Pause')=='On' then
                     repeat
                         wait (500)
                     until uo.getglobal('Pause')=='Off'
                  endif
               until UO.InJournal( allmsg ) || UO.Timer()>LastTimer+delay2 || UO.Weight > MaxVes || UO.Dead()



насчет запауженвания новыми средствами - не использовал. Надо обновить знания. Если будет инфа - расскажу.
Ефрейтор (154531)12 лет
Paladin
Сообщений: 70
Рег. 14.11.2012
10 ноября 2014 13:18
Сообщение #7
Спасибо!
The Best Ultima Online Shard Antares
Последние посетители (0):

 
Сейчас: 24 ноября 2024 20:02