Защита запуска.
Moderators: Murderator+, Murderator
Защита запуска.
Я не хочу чтобы скрипт запускался более чем в одном экземпляре т.е. как бы я не хитрил с переменными - заблокировать запуск скритов - всегда можно запустить второ скрипт просто зажав кнопку....
Пример того что должно быть
саб Вася()
иф саб Вася уже включен
конец скрипта
элс
уо.мсг("Хай, я Вася,не килл плиз!")
ендиф
енд саб
как можно сделать чтобы скрипт не запускался если аналогичный включен?
Пример того что должно быть
саб Вася()
иф саб Вася уже включен
конец скрипта
элс
уо.мсг("Хай, я Вася,не килл плиз!")
ендиф
енд саб
как можно сделать чтобы скрипт не запускался если аналогичный включен?
-
- Posts: 2259
- Joined: 2005-04-19 18:00:29
- Location: Московская область
- Contact:
-
- Posts: 2259
- Joined: 2005-04-19 18:00:29
- Location: Московская область
- Contact:
-
- Expert!
- Posts: 1032
- Joined: 2006-02-25 21:48:38
Krelyn wrote:Сет и Гет пробовал - работает, но второй всёранво проскакивает если кнопку зажать.......
Может попробовать запуск скрипта из конфига УО?
типа макрос в УО -
Say ,exec bot
там ненастолько сильно быстро залипание клавиш)
или может что нить можно сделать с залипанием клавиш чтоб помедленнее?)
В настройках клавиатуры в виндовсе поставь задержку перед началом повтора побольше, а скорость повтора уменьши =)
DerMeister сейчас на нейрале!
при использовании глобальных переменых ничего никогда не проскочит...
Но лутше всего устанавливать переменые на запрет на какоето время... не на все время действия это что бы избежать повторов при на чале действия (зажими и тд)
а если не обходими обезопасить скрипт полностью до завершенито больше интервал ожидания ставим или по завержению фцнкциональной ычасти скрипта.
в случаи таймера есть проблема в передачи параметров... Возникают сложности когда необходими гарантировать 100% передачу параметров
PS В новом скриптовом модуле планируется организзовать передачу параметров скриптам вызваных через exec
Но лутше всего устанавливать переменые на запрет на какоето время... не на все время действия это что бы избежать повторов при на чале действия (зажими и тд)
а если не обходими обезопасить скрипт полностью до завершенито больше интервал ожидания ставим или по завержению фцнкциональной ычасти скрипта.
в случаи таймера есть проблема в передачи параметров... Возникают сложности когда необходими гарантировать 100% передачу параметров
Code: Select all
sub SetTimer()
uo.setGlobal(uo.GetGlobal('valname'), '1')
wait(val(uo.GetGlobal('waittime')))
end sub
sub somescript()
if uo.GetGlobal('myscript') <> '1' then
uo.SetGlobal('valname', 'myscript')
uo.SetGlobal('waittime', '1500') #пауза после установки значения
uo.exec("exec SetTimer")
... #сам скрипт
end if
end sub
PS В новом скриптовом модуле планируется организзовать передачу параметров скриптам вызваных через exec
Grin wrote:при использовании глобальных переменых ничего никогда не проскочит...
Но лутше всего устанавливать переменые на запрет на какоето время... не на все время действия это что бы избежать повторов при на чале действия (зажими и тд)
а если не обходими обезопасить скрипт полностью до завершенито больше интервал ожидания ставим или по завержению фцнкциональной ычасти скрипта.
в случаи таймера есть проблема в передачи параметров... Возникают сложности когда необходими гарантировать 100% передачу параметровCode: Select all
sub SetTimer()
uo.setGlobal(uo.GetGlobal('valname'), '1')
wait(val(uo.GetGlobal('waittime')))
end sub
sub somescript()
if uo.GetGlobal('myscript') <> '1' then
uo.SetGlobal('valname', 'myscript')
uo.SetGlobal('waittime', '1500') #пауза после установки значения
uo.exec("exec SetTimer")
... #сам скрипт
end if
end sub
PS В новом скриптовом модуле планируется организзовать передачу параметров скриптам вызваных через exec
просто по привычке юзаю переменную Изи т.к. работаю тесно с ней...попробую через глобальную.......надеюсь помогет) спасибо
страна почему он вообще работал;)) Просто в твоем случаи нужно проинициализировать глобальную переменую...
а в скрипте в самом начале просто поставь задержку маленьку... хотястрано времени в полне должно хватать что бы запуск был только единожды... одно дело что утебя не много другая система магии и мана забирается сразуже
а в скрипте в самом начале просто поставь задержку маленьку... хотястрано времени в полне должно хватать что бы запуск был только единожды... одно дело что утебя не много другая система магии и мана забирается сразуже
Code: Select all
sub healcast()
wait(100) #prigelanii mogno umen'shit'
if uo.GetGlobal("Cast")<>"1" then
uo.SetGlobal('Cast','1')
uo.cast("Heal","self")
var xmana = uo.mana
while xmana == uo.mana
wait(5)
wend
uo.SetGlobal('Cast','0')
endif
endsub
-
- Expert!
- Posts: 1205
- Joined: 2004-04-04 11:13:54
- Location: Балаково, Саратовская обл.
- Contact:
Попробуй так что ли, но лучше наверное делать через очередь. Видел тут кто то кидал конвейер кастов.
А может проще тренировать руки?
А может проще тренировать руки?

Code: Select all
sub healcast()
wait(200)
if uo.GetGlobal("Cast")== "0" then
uo.SetGlobal('Cast','1')
uo.cast("Heal","self")
var xmana = uo.mana
while UO.Mana >= xmana
wait(300)
wend
uo.SetGlobal('Cast','0')
endif
endsub
-
- Expert!
- Posts: 1205
- Joined: 2004-04-04 11:13:54
- Location: Балаково, Саратовская обл.
- Contact:
Ну если отрывисто нажимать кнопки но раньше времени окончания работы скрипта то все будет норм, а если зажимать то и никакая пауза в начале скрипта не поможет.
А от конвейера будет толк - либо он удалит из очереди лишний вызов скрипта либо исполнит его. При зажимании хоткея просто очередь наполнится вызовами скрипта. А процедура обработки конвейера не станет два раза одновременно запускать один скрипт. Вообщем такой подход надежнее по моему.
А от конвейера будет толк - либо он удалит из очереди лишний вызов скрипта либо исполнит его. При зажимании хоткея просто очередь наполнится вызовами скрипта. А процедура обработки конвейера не станет два раза одновременно запускать один скрипт. Вообщем такой подход надежнее по моему.
Savage wrote:Ну если отрывисто нажимать кнопки но раньше времени окончания работы скрипта то все будет норм, а если зажимать то и никакая пауза в начале скрипта не поможет.
А от конвейера будет толк - либо он удалит из очереди лишний вызов скрипта либо исполнит его. При зажимании хоткея просто очередь наполнится вызовами скрипта. А процедура обработки конвейера не станет два раза одновременно запускать один скрипт. Вообщем такой подход надежнее по моему.
ну а как потвойму очеред заполняетя?;)) Если тут в пары строчках глобаьная переменая не успеет востановится...
то в конвеер она полюбомуц пройдет... только эфлеект может получится двойного каста... то он откастит нормально но потом все равно еще каст сделает;)) Выход это писать по мима имя скрипта еще и время что бы сравнивал с предыдущим. но как бы это не крак бы это не было плохо;) все зависет как очередь формируется... Если копированием срок то возможно и так все пройдет тосто одновременно сформируется 2 строки которые друг друга переапишут... вообще чушь какого фига глобальная переменая так медленно срабатывает;)))
Krelyn там пару постов раньше я предложил тебе вариант с задержкой в начале попробуй его.