1

Тема: AHK: Исключить повторы из рандома

Цикл, отправляющий одно рандомное число из 121 возможного . Нужно сделать так, чтобы если выпадает то, которое было только что, то скрипт рандомит заново для того, чтобы не произошло отправки одного и того же числа дважды подряд.(ну по крайней мере я так вижу решение этой проблемы, возможно есть более оптимальное решение)

arr :=[] < *подставьте сюда любое 121 число, не принципиально*
!4::
MyLable1:
Loop,
{
ImageSearch, xp, yp, 203, 876, 387, 1036, *50 live.png
Sleep 200
If xp < 0
Break
}
Click 1700, 972
Sleep, 200
Random, MyVar, 1, 121
SendInput % arr[MyVar]
Sleep, 100
SendInput {Enter}
Random, SleepTime, 1000, 2000
Sleep, %SleepTime% 
Goto, MyLable1
return

2

Re: AHK: Исключить повторы из рандома

Пример:

arr := ["one", "two", "three"]

prevRand := ""
Loop {
   Loop {
      Random, rand, 1, arr.Count()
   } until rand != prevRand && prevRand := rand
   MsgBox, % arr[rand]
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: borislavpb2, 2022-10-09 01:58:43)

Re: AHK: Исключить повторы из рандома

А как это встроить в мой скрипт? Я попробовал Заменить этим кодом момент с рандомом и получилось вот так.

arr :=["one", "two", "three"]
!4::
MyLable1:
Loop,
{
ImageSearch, xp, yp, 203, 876, 387, 1036, *50 live.png
Sleep 200
If xp < 0
Break
}
Click 1700, 972
Sleep, 200
prevRand := ""
   Loop {
      Random, rand, 1, arr.Count()
   } until rand != prevRand && prevRand := rand
SendInput % arr[rand]
Sleep, 100
SendInput {Enter}
Random, SleepTime, 1000, 2000
Sleep, %SleepTime% 
Goto, MyLable1
return

Я скопировал практически ничего не меняя, но скрипт всё-равно выдаёт повторы, что я сделал не так?
upd: разобрался, нельзя было убирать первый цикл) просто не сразу понял на чём его нужно будет закрыть.

4

Re: AHK: Исключить повторы из рандома

borislavpb2, добро пожаловать на форум! Ознакомьтесь, пожалуйста, с Правилами, отредактируйте свой пост. Обратите внимание на правила цитирования.
У вас prevRand каждый раз обнуляется, можно вообще строку prevRand := "" удалить.

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

5 (изменено: borislavpb2, 2022-10-09 01:58:03)

Re: AHK: Исключить повторы из рандома

Спасибо, прошу прощения, еще не не всё изучил.

6

Re: AHK: Исключить повторы из рандома

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