Ну вы поняли. Это покупка юнита через здание. Придется заносить всех в переменную, или делать ифы для каждого, или что ?
В доте вроде аналогично пик сделан, но там есть рандом. Как это реализовывается ?

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

можно через массив. по индексу от 1 до количество героев записывать их id, и через функцию рандомного числа для массива получать героя
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
10
5 лет назад
2
можно через массив. по индексу от 1 до количество героев записывать их id, и через функцию рандомного числа для массива получать героя
Принятый ответ
1
28
5 лет назад
1
LordDracula:
можно через массив. по индексу от 1 до количество героев записывать их id, и через функцию рандомного числа для массива получать героя
Абсолютно верный совет, делаем массив равкодов для героев, пусть равкодов будет X, тогда они будут записаны в ячейки с 0 по (X-1) включительно.

Далее в триггере, что ловит нажатие на спелл "Выбрать рандомного героя" выбираем случайное число с 0 по (X-1) включительно.
Для повышения разброса рандома можно выбирать число с 0 по N * (X-1) включительно, где N - какое-то положительно целое число. После этого выбранное число делим на N. Выходит такая формула.
local integer raw = GetRandomInt(0, N * X - N) / N
После этого создаём героя с выбранным равкодом.
call CreateUnit(GetTriggerPlayer(), HeroRawCodes[raw], x, y, 0.)
0
22
5 лет назад
0
Я не знал про приём с умножением. Как это называется и как это работает?
И наверное это N*X - 1 а не N*X - N.
0
28
5 лет назад
Отредактирован PT153
0
И наверное это N*X - 1 а не N*X - N.
N * (X - 1) = N * X - N.
Но тут да, была ошибка. Верно будет N * X - 1.
Я не знал про приём с умножением.
Для повышения разброса рандома
Пусть X = 4, тогда нужно выбрать число с 0 по 3. Пусть N = 1, тогда будут выбираться числа с 0 по 3. Пусть N = 25, тогда числа будут выбираться с 0 по 99 (больший разброс). Но индексы у нас с 0 по 3, потому полученное число нужно разделить на N (то есть на 25).
0
19
5 лет назад
0
То есть априори придется записывать много каки, никак по легкому зарандомить покупку нельзя?
1
29
5 лет назад
1
LordDracula:
можно через массив. по индексу от 1 до количество героев записывать их id, и через функцию рандомного числа для массива получать героя
Это в том случае, если при покупке герой не исчезает.
Darknessay:
То есть априори придется записывать много каки, никак по легкому зарандомить покупку нельзя?
Можете вывести сообщение "закройте глаза и тыкайте наугад в клаву, пока не услышите звук"
Чтобы оставить комментарий, пожалуйста, войдите на сайт.