Хочу сделать так, чтобы игроки спавнились на арене на одной из 12 точек для этого. Но нужно сделать так, чтобы точки спавна у разных игроков не были одинаковыми. Обращаюсь, ибо никак не могу додуматься как это сделать. Заранее спасибо.

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

Использовать поиск.
раскрыть
array1 содержит сами числа в ячейках 0..top, вначале top = 11.
local integer cell
local integer top = -1 // последняя занятая ячейка
local integer i = 0  // номер игрока
loop
    set top = top + 1
    set array1[top] = top
    exitwhen top == bj_MAX_PLAYERS - 1
endloop
loop
    set cell = GetRandomInt(0, top)
    set result[i] = array1[cell]
    // Удаляем число из array1
    if cell < top then
        set array1[cell] = array1[top]
    endif
    set top = top - 1
    
    set i = i + 1
    exitwhen top == -1 or i == bj_MAX_PLAYERS
endloop
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
23
5 лет назад
0
0
21
5 лет назад
Отредактирован Raised
0
Нужно 2 массива с локациями. Проходишь циклом по первому, в каждой итерации выбираешь случайную локацию, заполняешь второй массив и удаляешь локацию из первого массива.
В итоге получишь возможность задать/узнать точку спавна игрока по его индексу или наоборот. И точки спавна нескольких игроков никогда не будут совпадать.
0
9
5 лет назад
0
Obelick:
Сделал как вы на скрине, но почему-то всегда выбирается одна и та же позиция. Можете подсказать пожалуйста, что тут не так?
Загруженные файлы
0
23
5 лет назад
0
SirDragdord, конечно будет выпадать одна и та же позиция) Ты ведь в начале массива переменную Players_Left устанавливаешь каждый раз на 12. (или сколько у тебя там игроков). Ее нужно объявить один раз при инициализации.
0
26
5 лет назад
0
Объединяешь игроков в группу, а точки спавна в массив.
Проходишь циклом по массиву от 0 до его размерности.
В цикле спавнишь игрока и удаляешь его из группы.
0
20
5 лет назад
0
Почему-то мне идея проксорить 12 чисел на двойку в случайной степени с последующей сортировкой по возрастанию кажется здравой. Скорее всего бред, но как-то это будет работать :D
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.