Хочу поделится своим.
Code: Select all
#########################################################################
# АЛГОРИТМ: #
# Имеем переключатель с тримя положениями: 0 1 2 #
# ПЕРВОЕ НАЖАТИЕ ХОТКЕЯ - ЗАПУСК СКРИПТА #
# До первого запуска переключатель = 0, или не существует. #
# При первом запуске вначале скрипта проверяем равен ли переключатель 1,
# если равен, то устанавливаем переключатель равным 2 и выходим из #
# скрипта, если не равен, тогда устанавливаем переключатель равным 1. #
# Далее в основном цикле скрипта постоянно делается проверка равен ли #
# переключатель 2. #
# ВТОРОЕ НАЖАТИЕ ХОТКЕЯ - ЗАВЕРШИТЬ РАБОТУ СКРИПТА #
# При повторном нажатии хоткея произходит загрузка еще одной копии #
# скрипта, в начале которого поверяется равен ли переключатель 1, так #
# как переключатель уже равен 1, то копия тут же выгружается, а #
# переключатель устанавливается равным 2. #
# А так как в первом скрипте постоянно делается проверка переключателя #
# и когда он становится равным 2, то и первый скрипт завершает работу #
# и устанавливает переключатель в 0, чтобы при следующем запуске #
# переключатель не был равен 1. #
# ЗАМЕЧАНИЕ: В качестве переключателя используется глобальная переменная.
# Так как значения таких переменных глобальные для всех скриптов текущей
# копии Injection, то необходимо следить чтобы эти переменные были #
# уникальны для каждого скрипта использующего данный алгоритм. #
#-----------------------------------------------------------------------#
sub TEST()
# ... Ваши переменные
# ... и начальные условия
# ...
if UO.GetGlobal('ST') == '1' then
UO.SetGlobal('ST','2')
wait(5000) # Cтрока используется для примера,
# чтобы проследить как выгрузится скрипт.
return
else
UO.SetGlobal('ST','1')
endif
while 1 == 1
if UO.GetGlobal('ST') == '2' then
wait(5000) # Cтрока используется для примера.
UO.SetGlobal('ST','0')
return
endif
# ... Ваш код.
# ...
# ...
wait(2000) # Cтрока используется для примера.
UO.Print("ИДЕТ ТЕСТ ...") # Cтрока используется для примера.
wend
endsub
#-----------------------------------------------------------------------#
#########################################################################
И еще одна, как мне кажется, полезная процедура.
Code: Select all
#########################################################################
# ЖДАТЬ НАЖАТИЯ КЛАВИШИ #
# Если в каком-то месте скрипта необходимо сделать паузу, которая #
# снимается нажатием определенной клавиши или комбинацией клавиш, то #
# в том месте скрипта прописываем вызов процедуры wait_keystroke(), и #
# на клавишу (снимающую паузу) биндим вызов процедуры keystroke(): #
# exec keystroke #
#-----------------------------------------------------------------------#
SUB keystroke()
UO.SetGlobal('Wait_Pressing','off')
endsub
SUB wait_keystroke()
UO.SetGlobal('Wait_Pressing','on')
repeat
wait(1000)
until UO.GetGlobal('Wait_Pressing') == 'off'
endsub
#-----------------------------------------------------------------------#
#########################################################################
Хочу выразить свою благодарность
Yoko за классную пограмму
Edred'а за уроки по скриптингу, до них я просто боялся подойти к Injection, жаль что написаны не все
Всем экспертам за их помощь и внимание к чужим проблемам
Всем авторам разместившим свои скрипты на этом форуме, я многому по ним научился и многое из них потырил пока учился писать свои, так как сам не программист
Всем тем кто задавал глупые и умные вопросы, и тем кто на них отвечал.
============
ПОБЕЖДАЕТ ТОТ, КТО ВЕРИТ, ЧТО ОН МОЖЕТ ПОБЕДИТЬ.