1

Тема: AHK: повтор рандома

Здравствуйте Ув. пользователя форума. Вот скрипт, работает очень хорошо.



arr := [], i := 0
Action := ["text1", "text2", "text3", "text4", "text5"
    , "text6", "text7", "text8", "text9", "text10"]
8::Pause
9::Reload   
0::
Random: 
    If (i = 10)  
    {
        arr := [], i := 0, r := ""
        Return
    }    
    Random, rand, 1, 10
    If arr[rand]
        GoTo Random
    arr[rand] := 1, i++

Send {Numpad1}
Sleep 100
Send {Numpad2}
Sleep 100
Send {Numpad3}
Sleep 100

Send {Click x, y}
Sleep 5000
Send {Click x, y}
Sleep 5000
Send {Click x, y}
Sleep 5000

    SendInput % Action[rand] "`n" 
Sleep 5000
Send {Click x, y}
Sleep 5000
Send {Click x, y}
Sleep 30000
Send {Click x, y}
Sleep 12000

Send {Numpad1}
Sleep 100
Send {Numpad2}
Sleep 100
Send {Numpad3}
Sleep 100

Random, Rand, 1800000, 2400000
Random, Rand1, 93000, 399000
Rand2 := Rand + Rand1
sleep % Rand2

    GoTo Random 

10 слов в рандомном порядке  вводит в нужное место без повторов и когда закончатся слова останавливаться. Как сделать, что бы этот процесс который я описал ранние, постоянно повторялся. То есть,  сначала 10 слов по очереди в рандоме по вставляло, когда вставило последнее слово, не остановилось, а сделало тоже самое с 10 словами и так постоянно, я с Loop побывал, что то не выходит, может я не туда вставлял. Желательно пример, если не трудно.

2 (изменено: belyankin12, 2017-11-14 07:49:28)

Re: AHK: повтор рандома

Если заранее известно сколько в массиве ключей то ваш вариант можно слегка модифицировать просто, если нет, то arr.MaxIndex() укажет количество этих ключей. Схема такова: заворачиваете весь код в цикл, когда i достигает максимального числа (в вашем случае 10), все сбрасывается, а вместо return continue прописываете - эта команда запускает новую итерацию цикла немедленно. Все команды goto random на continue замените, кроме последней - там не обязательно, цикл сам начнет новую итерацию.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.