ну или как передать аргумент в функцию в TimerStart()
2 5
0
29
5 минут назад
0
Предупреждение автору публикации

замечание: 10.1 Размещение нескольких вопросов в одном ресурсе.
0
29
6 минут назад
0
возможно ли сохронить framehandle в глобальную переменую ??
Возможно.
ну или как передать аргумент в функцию в TimerStart()
Через глобальную переменную.
Появилась идея сделать карту. Начал делать карту - тут же упёрся в триггеры В общем не буду размусоливать.
Старт -
Мне нужно как-то реализовать старт... думаю десяти игроков. После этого нужно каждого из них рандомно поделить на две фракции, но поровну (хотя это важно только сейчас для выравнивания баланса).…
31 55
0
29
11 минут назад
0
Как реализовать рандом выбор фракции но равное кол-во игроков в них... хз вообще
Математику в школе косил с ярым усердием?

Подсчёт игроков

Ну давай включим голову (это то место, которым обычное едят) и подумаем, какие у нас есть варианты двух команда для 10 игроков:
1 0x1
2 1x1
3 1x2
4 2x2
5 2x3
6 3x3
7 3x4
8 4x4
9 4x5
10 5x5
Как видно из таблицы, наблюдается проблема с нечётным количеством игроков. Её можно будет решить балансом, но это уже предмет другого вопросв.
Итак, первым делом пересчитаем всех играющих игроков и положим это значение в переменную:
integer PlayerCount;
Далее заведём переменные для количества игроков в командах:
integer FirstTeamCount;
integer SecondTeamCount;
Чтоб не лезть в дебри функций возпользуемся замечательным свойством типа integer - отбрасывание остатка при делении:
set FirstTeamCount = PlayerCount / 2
Посчитаем оставшихся игроков
set SecondTeamCount = PlayerCount - FirstTeamCount
Отобразим результаты в таблице:
PlayerCount FirstTeamCount SecondTeamCount Комманды
1 1 / 2 = 0 1 - 0 = 1 0x1
2 2 / 2 = 1 2 - 1 = 1 1x1
3 3 / 2 = 1 3 - 1 = 2 1x2
4 4 / 2 = 2 4 - 2 = 2 2x2
5 5 / 2 = 2 5 - 2 = 3 2x3
6 6 / 2 = 3 6 - 3 = 3 3x3
7 7 / 2 = 3 7 - 3 = 4 3x4
8 8 / 2 = 4 8 - 4 = 4 4x4
9 9 / 2 = 4 9 - 4 = 5 4x5
10 10 / 2 = 5 10 - 5 = 5 5x5

Перемешивание массива

Массивы у нас маленькие, так что проигнорируем оптимизацию памяти.
Так же проигнорируем нормальный нейминг, ибо при объяснении он нам будет мешать.
Заведём массивы содержашие номера игроков. Всегда старайтесь работать с примитивами.
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 заполненные индексами случайных игроков. На этом мои полномочия всё.
1
3
27 минут назад
1
"Интересная идея карты но... Яжнепрограммист" - собственно варик позволяет учить основы и делает их гораздо проще, тем более когда идея есть! Изучай триггеры, пробуй, метод тыка тоже никто не отменял, а также хорошо гуглить похожие идеи - так находил решения, так что дерзай!
0
29
1 час назад
0
PUVer, если по научному, то вектор это направленный отрезок. А массив это выделенная область памяти. Я даже расписал как память выделяется.
0
37
4 часа назад
0
А что, зафиксировать рандомную расу нельзя в настройках карты?
0
29
5 часов назад
0
УВЫ я слишком туп для массивов
Что мешает исправить эту ситуацию?
0
2
5 часов назад
Отредактирован Detektrius
0
konvan5, Спасибо. Но это я и так в курсе.
Я там ошибся, заменил на "ничего не делать"
0
29
6 часов назад
0
Предупреждение автору публикации

замечание: 10.4 Создание ресурса, название которого не отражает суть вопроса.
2
23
6 часов назад
Отредактирован konvan5
2
Detektrius, проще:
Переменная - это ящик. Ты можешь туда положить 3 апельсина и это будет одна переменная, хранящая 3 апельсина. Но чьи это апельсины?
Массив - это шкаф с пронумерованными полками от 0 до N. Ты можешь положить в 0 полку 3 апельсина, в 1 полку 2 апельсина, а в 5 полку 10 апельсинов. И все апельсины хранятся в одной переменной. мы можем сопоставить каждую полку чтобы она принадлежала своему хозяину: Паше, Маше, Даше, и тд. (куча данных в 1 переменной!)
Вот как проще представлять массивы :)
Загруженные файлы