Раньше никогда не занимался мультиплеерными картами и таких проблем как-то не возникало.
Есть 8 начальных точек. С помощью какого костыля можно случайным образом расположить в них игроков?
Пробовал так:
Игрок 1 занимает случайную точку из 8. Логическая переменна с ее номером выключается.
Когда игрок 2 пытается занять точку, проверяется эта логическая переменная. Если она выключена, запускаю триггер снова до тех пор, пока игрок 2 не встанет в свободную точку. И так для остальных. Но почему-то в игре происходит рассихрон для всех, кроме красного игрока.
Вот код
После Run trigger пытался поставить функцию skip remaning actions, но разницы нет.
Рассихрон не случается по другим причинам, это тестировалось.
Сделать спавн по не фикс. исходным позициям игроков - не предлагать, ибо точки появления игроков динамически меняются от их количества, а поэтому это не сработает.
Как починить или какие еще есть варианты сделать такую вещь?

Можно заносить все актуальные точки в массив, брать рандом в пределах этого массива, а потом заменять выпавший элемент массива последним и укорачивать массив на 1. В условиях варкрафта это будет чуть иначе чем в нормальных языках, но суть та же. Ну и игроков перебирать циклом, а не каждому свой if выдавать.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
23
Похожие вопросы:

ответ
Ну просто найди исходную позицию игрока, GetPlayerStartLocalion() - зная игрока ты находишь место его спауна, все же просто?

24
Можно заносить все актуальные точки в массив, брать рандом в пределах этого массива, а потом заменять выпавший элемент массива последним и укорачивать массив на 1. В условиях варкрафта это будет чуть иначе чем в нормальных языках, но суть та же. Ну и игроков перебирать циклом, а не каждому свой if выдавать.
Принятый ответ
32
Для начала считаем кол-во играющих игроков не ботов, создаем массив точек в которых будут спаунится юниты игроков, помещаем всех игроков в группу игроков, и с помощью цыкла ForForce (в гуях он находится в разделе группа игроков) задаем случайную переменную и записываем её в массив для каждого игрока, и тут же проверяем было ли уже такое число, если было геннерируем новое, иначе создаем юнитов и все.
24
quq_CCCP, зачем плодить непредсказуемые рекурсивные потенциально бесконечные циклы с проверкой угадали ли мы рандомом в свободный слот, если можно получить тот-же результат за линейное время выполнения?
23
prog, спасибо! Все оказалось намного проще, чем я думал.
Оставляю скриншот для потомков
Загруженные файлы
24
Obelick, проверку на то играет ли игрок не забудь, а то в таком виде у тебя проблемы начнутся если играют, например, 1, 2, 4 и 5 игроки, а 3 вышел до срабатывания триггера.
32
prog, для каждого игрока потому что. Там 1 раз за игру, можно не возится с супер оптимизацией....
Ну и нам нужно чтобы не попасть дважны на одну позицию...
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.