1

Тема: AHK: Рандомайзер

Есть 7 скриптов с одинаковым содержимым, но различных в некоторых местах Координатами нажатия мыши. Хочется написать скрипт, который будет запускать всегда рандомно один из них в бесконечном цикле(пока я не скажу хватит ). При этом я так примерно уже представляю, что в каждом из 7 скриптов, придется прописывать какое то обращение к этому, после закрытия(OnExit).
Подскажите как это реализовать возможно!

2

Re: AHK: Рандомайзер

Если "закрытие" будет происходить в каждом отдельном скрипте, так может просто в конце каждого из них прописать запуск файла главного скрипта? Главный скрипт запускается, выбирает случайное число, соответственной запускает случайный скрипт, а сам сразу завершает работу. До тех пор, пока текущий "случайный скрипт" его не запустит.

3

Re: AHK: Рандомайзер

ypppu пишет:

Если "закрытие" будет происходить в каждом отдельном скрипте, так может просто в конце каждого из них прописать запуск файла главного скрипта? Главный скрипт запускается, выбирает случайное число, соответственной запускает случайный скрипт, а сам сразу завершает работу. До тех пор, пока текущий "случайный скрипт" его не запустит.

Ну я приблезительно так это и вижу. Только вот не придумаю как написать сам рандомайзер, что бы запускал случайный скрипт!

4

Re: AHK: Рандомайзер

Как пользоваться генератором случайных чисел - есть в документации. Там же запуск приложений. Самый простой алгоритм <Если выпало число 1, запустить программу "1.exe">, <Если выпало число 2, запустить программу "2.exe"> и т. д.
Вообще желательно предъявить свои наработки, а затем уже задавать вопрос. Если уж совсем непонятно, Вам всегда укажут, куда копать.

5

Re: AHK: Рандомайзер

Команда Random.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Рандомайзер

А можно пример скрипта, а то я что то не могу разобраться=(

7 (изменено: Grey, 2011-05-15 15:11:42)

Re: AHK: Рандомайзер

ypppu пишет:

...Главный скрипт запускается, выбирает случайное число, соответственной запускает случайный скрипт, а сам сразу завершает работу. До тех пор, пока текущий "случайный скрипт" его не запустит.

Можно и без главного/запускного: подписываем названия у всех нужных скриптов одинаково (в моём примере: script_1, script_2, и т.д.), далее в самих скриптах (при учёте, что они со слов г-на DaVinchi одинаковые - ...7 скриптов с одинаковым содержимым) прописываем:

;основная часть скрипта
ToolTip, script_1 запущен, 640, 512 ; тултип для мониторинга, в каждом скрипте правим лишь его номер, после отладки можно убрать
Sleep, 5000
Tooltip
If GetKeyState("Delete", "P") ; если удерживается нажатой DELETE - прекращаем цикл запусков
   ExitApp
IniRead, var, %A_ScriptDir%\for_script_not_repeat.ini, last_random_run, var ; считываем номер предыдущего запущеного срипта для последующей проверки
SetEnv, var, % var ; присваиваем номер переменной
repeat_random_run: ; метка возврата для регенерации
Random, random_run, 1, 7 ; собственно сам "рандомайзер"
IniWrite, %random_run%, %A_ScriptDir%\for_script_not_repeat.ini, last_random_run, var ; пишем номер последнего генерированого скрипта
If var = %random_run% ; проверка, если номер предыдущего запущеного скрипта совпадает то,
   Gosub, repeat_random_run ; возращаемся на регенерацию, до несовпадания
Run, %A_ScriptDir%\script_%random_run%.ahk ; запускается скрипт с генерированым номером
ExitApp

Замечу, что при первом запуске (когда не создан ещё ини файл), есть вероятность повторения запуска скриптов по нумерации.

8

Re: AHK: Рандомайзер

Пожалуйста, обьясните подробнее как использовать Random. С английской документации я не разберусь=(
Я не хочу такие тяжелые скрипты как предложил Grey (спасибо за предложенный вариант), я хочу в первую очередь разобраться с командой!!!
Я вижу это приблезительно так:

random, 1, 7

В общем то это на все, что мне ума пока хватило.
Нужно просто, что бы скрипт генерировал число и запускал по этому числу скрипт и закрывался. Скрипт который будет запущен позже по окончанию запустит наново этот скрипт и все дальше. Даже если будет запускаться один и тут же скрипт по несколько раз, это не страшно.
Спасибо.

9

Re: AHK: Рандомайзер

Script1 =   ; указать пути к каждому скрипту
Script2 =
Script3 =
Script4 =
Script5 =
Script6 =
Script7 =

Random, Rand, 1, 7
Run, % Script%Rand%
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10 (изменено: Grey, 2011-05-15 15:15:56)

Re: AHK: Рандомайзер

Я извиняюсь если предложенный мною вариант оказался для Вас тяжел в понимании, напротив, я старался снабдить его всеми нужными пояснениями.

DaVinchi пишет:

...я хочу в первую очередь разобраться с командой!!! Я вижу это приблезительно так:

random, 1, 7

Генерируется случайное число, из диапазона 1 (минимальное), и 7 (максимальное).

F1:: ;  генерация единожды по нажатию/удержанию
Random, random_value, 100, 250
ToolTip, %random_value%, 640, 512 ; использую тултип, по тому как удобно
Sleep, 250
Tooltip
KeyWait, F1
Return

F2:: ; цикличная генерация по нажатию/удержанию
Loop
   {
      Random, random_value, 0, 25
      ToolTip, %random_value%, 640, 512
      Sleep, 250
      Tooltip
      GetKeyState, state, F2, P
      If state = U
         Break
      Sleep, 50
   }
Return

F3::ExitApp