Всем привет! Я думаю всем когда-то хотелось с помощью скрипта AHK сделать базу фраз которые будут случайно говорится в произвольном порядке и без повторения(!). Так вот, покопавшись на форумах я нашел принцип логики для нашего любимого SAMP'a. Соответственно для некоторых строк использовался SAMP udf.
Собственно сам код:
Код
arr := [], i := 0 ; задаем массив записи фраз\чисел из массива которые уже были выбраны Array:= ["Всем привет", "Привет СМ", "Это мой первый урок", "Спасибо McFree", "#СМ_живи", "Следующий урок будет по рабочему меню со списком", "Приветствую вас", "Финальная фраза"] ; сам массив с фразами
F4:: ; вызов функции SendMessage, 0x50,, 0x4190419,, A ; определение Русского языка вывода в скрипте (0x4090409 - английский) Rand: ; создаем метку для повторного рандома If (i = 8 ) ; если все фразы были сказаны { arr := [], i := 0, r := "" ; обнуление массива сказанных фраз addChatMessage("[ SCRIPT ] {4a67d0}Вопросы закончились") ; вывод локальнорй строки об окончании фраз массива Return ; окончание функции } Random, rand, 1, 8 ; рандомизация случайной фразы (конечное число должно быть строго максимальным индексом массива) If arr[rand] ; если выпало число которое уже выпадало GoTo Rand ; переход на метку повторного рандома arr[rand] := 1, i++ ; запись, что это число выпало первый раз SendChat( Array[rand] ) ; вывод фразы из массива фраз с получившимся зарандомленым индексом массива return ; окончание функции
Кому помог то пишите спасибо, хотя и репа "+" тоже не помешает :ah:
И помните, код интересней чем чем вам кажется! Универсальный Brain Macros для MMORPG - https://cheat-master.ru/forum/80-768122-1
Неплохо, но это не идеальный вариант, так как с каждым разом будет дольше выбирать. Лучше взять 8 чисел, в случайном порядке их расставить, а после выдвать значения по очереди. Так будет работать в разы быстрее.