Есть у меня массив с 8 индексами. Я использую этот массив для спавна в рандомном месте героя ( как в custom hero survival выбираешь героя ).
Я не хочу чтобы 2 игрока заспавнились в одной арене, по этому мне надо убрать индекс из массива, но как?
Если у вас есть другие способы рандомного спавна героя, то скиньте плз ( gui или jass )

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

Ну ты когда выбираешь случайное от 1 до 8
После этого должен уменьшить 8 на один
И взаместо выбранного записать то что было последним
Изначально записываешь и области, и их общее число
set HeroLocationMax = 8
set HeroLocationRandom = случайное от 1 до HeroLocationMax
Далее делаешь что нужно ссылась на индекс массива _Random
А в конце переписываешь _Random на _Max
set HeroLocationMassive[_Random] = HeroLocationMassive[_Max]
И уменьшаешь общее число
set _Max = _Max - 1
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
13
8 месяцев назад
0
Не благодари xgm.guru/p/wc3/randomintgenmem
0
26
8 месяцев назад
0
Ну ты когда выбираешь случайное от 1 до 8
После этого должен уменьшить 8 на один
И взаместо выбранного записать то что было последним
Изначально записываешь и области, и их общее число
set HeroLocationMax = 8
set HeroLocationRandom = случайное от 1 до HeroLocationMax
Далее делаешь что нужно ссылась на индекс массива _Random
А в конце переписываешь _Random на _Max
set HeroLocationMassive[_Random] = HeroLocationMassive[_Max]
И уменьшаешь общее число
set _Max = _Max - 1
Принятый ответ
0
14
8 месяцев назад
Отредактирован host_pi
0
добавь новый массив переменных ArenaPlaced[i]
и при добавлении нового героя проверяй - заселена ли арена ArenaPlaced[i]
0
29
8 месяцев назад
0
host_pi, и на последнем герое с шансом 7/8 реролить?
0
29
7 месяцев назад
0
kg_toly, прикрепи тестовую карту с необходимым набором триггеров.
0
14
7 месяцев назад
Отредактирован host_pi
0
с шансом 7/8 реролить
я конечно об этом подумал
даже если взять шанс не 1/8 а 1/80 - то сделать 80 операций для варика будет сущим пустяком, нет?
это не то место где делаются десятки тысяч или миллионы операций, когда скорость была бы ощутима от изменения метода исполнения и ради оптимизации которого надо писать не 10 строк говнокода а 30 строк супер оптимизированного и в отдельно вызываемой библиотеке
0
29
7 месяцев назад
0
даже если взять шанс не 1/8 а 1/80 - то сделать 80 операций для варика будет сущим пустяком, нет?
Откуда ты взял, что операций будет 80, а не 800 или 8000?

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