Помогите с рандом появлением героев без повтора одного и того же юнита, пытался сделать, но у меня получилось, но может произойти такое, что у кого-то герой не появится и тут такой вопрос чтож за кривые руки(хелпаните сделать нормальный рандом героев без повтора желательно гуи

Принятый ответ

Допустим, есть массив с id героев, например, десятью. Нужно создать массив индексов от 1 до 10 и просто его перемешать.
Пример на Lua для перемешивания списка из гугла:
shuffled = {}
for i, v in ipairs(x) do
	local pos = math.random(1, #shuffled+1)
	table.insert(shuffled, pos, v)
end
Да, можно проще.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
48
4 года назад
Отредактирован N7 Molot
0
В общем вот отдельный видео урок, сори за качество.
0
27
4 года назад
Отредактирован MpW
0
Можно бд сделать, массивы на тип героя и логическую. И потом выдавать рандом, и когда выбирается гер, то у него логическая приравнится как нет. И если у след игрока выпал этот гер, то нужно проверять лог переменную, занят ли такой герой. Короче сделать цикл в цикле
А можно просто без лог переменной обойтись, обнули тип гера. И тогда проверяй, не обнулена ли переменная. Если обнулена, значит, он выбран, тогда в цикле заново рандомим, и так работает цикл до сих пор пока не найдет.
2
8
4 года назад
Отредактирован build
2
Допустим, есть массив с id героев, например, десятью. Нужно создать массив индексов от 1 до 10 и просто его перемешать.
Пример на Lua для перемешивания списка из гугла:
shuffled = {}
for i, v in ipairs(x) do
	local pos = math.random(1, #shuffled+1)
	table.insert(shuffled, pos, v)
end
Да, можно проще.
Принятый ответ
0
48
4 года назад
Отредактирован N7 Molot
0
Коротко, как было в видео - по памяти:
  • список героев, как тип юнита (у него есть параметр "Нет боевой единицы")
  • делаем переменную, как счётчик всех типов героев (постоянно задаем 0 при запуске выбора случайного героя
  • для рандома забиваем массив через пробор цикла от 0 до максимального кол-во типов героев, если тип героя не равен нулю (то есть типу "Нет боевой единицы") номер счетчика +1 в массив
  • через случайное значение выдаем героя и обнуляем выбранный тип (что бы быстро искать выбранного героя, можно так же забивать значение массива персов в переменную, что бы быстро обнулить в списке)
Так получится, что есть библиотека переменных с типом персов, который обнуляет тип при выборе. А сам рандом забивает только забитые типы героев и пропускает пустые.
0
13
4 года назад
0
Вот еще 1 способ
Переменные:
HeroList[] - массив с нобором героев
Мах - целочисленная равна количеству героев в HeroList
N - целочисленная
Триггер:
С-....
У-....
Д- N равно Random(0-Max)
создать юнита HeroList[ N ]
HeroList[N] равно HeroList[Max]
Max равно Max - 1
Чтобы оставить комментарий, пожалуйста, войдите на сайт.