Доброго времени суток.
Возникла проблема при построении диалога выбора нужного игрока. Проблема заключается в том что, при проверке может пропустить одного из игроков (допустим что не играет) и в массиве кнопок будет пустое место. Подскажите как решить.

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

массиве кнопок будет пустое место
Пусть переменная А считает игроков, а переменная B считает кнопки.
Перед циклом B ставим на 0, если игрок есть, увеличиваем В и записываем в массив[В] твою кнопку.
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
28
5 лет назад
1
массиве кнопок будет пустое место
Пусть переменная А считает игроков, а переменная B считает кнопки.
Перед циклом B ставим на 0, если игрок есть, увеличиваем В и записываем в массив[В] твою кнопку.
Принятый ответ
0
23
5 лет назад
Отредактирован pro100master
0
на jass пример приведу
.... xe_actives // массив игроков
.... xe_count = 0 // счетчик активных кнопок
// есть массив и счетчик они глобальные

local integer n = 0
local player p = Player(n)
loop
	exitwhen n == bj_MAX_PLAYERS // сколько всего слотов для играющих
	if IsPlayerOnline(p) then // моя любимая функция проверка игрока там на слот и статус
		set  xe_actives[xe_count] = p
		set  xe_count = xe_count + 1
	endif
	set n = n + 1
	set p = Player(n)
endloop

set p = null
PS Это я писал без редактора. Может что то забыл. А гуи ничес скринить =)
при ливера игрока
function GetPlayerIndex takes player p returns integer
	local integer n = 0
	loop
		exitwhen n == xe_count
		if xe_actives[n] == p then
			return n
		endif
		set n = n + 1
	endloop
	
	return -1
endfunction

function leaver takes nothing returns nothing 
	local integer index = GetPlayerIndex(GetTriggerPlayer())
	
	if not(index == -1)  then
		set xe_count = xe_count - 1
        set xe_actives[index] = xe_actives[xe_count]
	endif
endfunction
Чтобы оставить комментарий, пожалуйста, войдите на сайт.