EugeAl, ну да, все игровые компании, включая собственно создателей WarCraft поддерживают свой продукт всё время его существования и поэтому создание кастомных лаунчеров просто бессмысленно.
Ну и перед тем, как рассказывать о том, что создатели лаунчера должны заботиться о твоём удобстве6 начнём с простого - а сколько ты собственно заплатил за лаунчер?
ставить целый мод Ujapi ради одной функции в карте - такое себе.
Это не мод, это лаунчер. И что-то я не вижу ответа от тебя, а мой ответ на минуточку, принят автором. Значит он подошёл автору и все свои загоны про юзабилити можешь адресовать лично ему. Заодно можешь оплатить автору трудочасы, который он потратит на написание костылей, вместо использования лаунчера.
Так же проигнорируем нормальный нейминг, ибо при объяснении он нам будет мешать.
Заведём массивы содержашие номера игроков. Всегда старайтесь работать с примитивами.
integer array ALL // массив для всех игроков
integer array A // массив для первой комманды
integer array B // массив для второй комманды комманды
Заведём курсор для каждого массива. Для удобства используем их имя в нижнем регистре:
integer all = -1
integer a = -1
integer b = -1
Почему не используется ноль вы поймёте позже.
Итак, для примера заполним массив ALL игроками
set all = all + 1 // 0
set ALL[all] = 3 // возьмём произвольные номера игроков
set all = all + 1 // 1
set ALL[all] = 5
set all = all + 1 // 2
set ALL[all] = 7
set all = all + 1 // 3
set ALL[all] = 9
Итак, как видите у нас в массиве четыре игрока, тобишь курсор + 1 = количество элементов массива.
Теперь необходимо заполнить массивы комманд случайными игроками. Для этого существует простой алгоритм:
local integer r // заведём временную переменную для хранения случайного числа
loop
set random = GetRandomInt(0, all) // Получаем случайный индекс массива ALL
if a + 1 < FirstTeamCount then // если в первой комманде недостаточно игроков добавляем их туда
set a = a + 1
set A[a] = ALL[random]
else // если первая комманда полная пихаем всех во вторую
set b = b + 1
set B[b] = ALL[random]
endif
set ALL[random] = ALL[all] // Помещаем последний элемент массива на место случайного элемента
set all = all - 1 // Двигаем курсор влево
exitwhen all < 0 // Выходим из цикла, если мы вышли за пределы массива
endloop
Теперь у вас есть два массива A и B заполненные индексами случайных игроков. На этом мои полномочия всё.
Ред. nazarpunk
» WarCraft 3 / Оседлать
Ред. nazarpunk
» WarCraft 3 / Кто знает как сделать Smoke of Deceit из DOTA?
» WarCraft 3 / Оседлать
Ред. nazarpunk
» Styria / Мерзкая абоминация вылазит из своей норы
» WarCraft 3 / Оседлать
» WarCraft 3 / Оседлать
Ред. nazarpunk
» Styria / Мерзкая абоминация вылазит из своей норы
» Styria / Мерзкая абоминация вылазит из своей норы
» WarCraft 3 / Оседлать
Ред. nazarpunk
» WarCraft 3 / Оседлать
Ред. nazarpunk
» WarCraft 3 / Оседлать
» WarCraft 3 / Оседлать
» WarCraft 3 / Система урона в варкрафте.
» Castle Revival / Castle Revival
» WarCraft 3 / Стаки предметов
Ред. nazarpunk
» WarCraft 3 / Стаки предметов
» WarRaft / Типы данных
» WarCraft 3 / Способность Оживление мертвых
» WarCraft 3 / Оседлать
Ред. nazarpunk
» WarCraft 3 / Способность Оживление мертвых
» WarCraft 3 / возможно ли сохронить framehandle в глобальную переменую ?? jass
» WarCraft 3 / возможно ли сохронить framehandle в глобальную переменую ?? jass
» WarCraft 3 / возможно ли сохронить framehandle в глобальную переменую ?? jass
» WarCraft 3 / Интересная идея карты но... Яжнепрограммист
Подсчёт игроков
Перемешивание массива