Что-то не могу понять.
Мне нужен двумерный массив. Мне надо для каждого игрока хранить 6 значений.
Т.е сначала [id], а после [1...6] значение.
Делал так:
local x = {{}}
Но не работает.

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

создаём основную таблицу:
table = {}
создаём в ней ещё таблицы, чтобы можно было к ним обращаться
for i = 0, 10 do
table[i] = {}
end
т.е. сейчас можно обратиться к table[0][0] и не получить ошибку
если нужна ещё большая глубина таблицы, создаёте ещё:
table[0][0] = {}
table[0][0][1] = "Good"
а вообще вот тут можно потестить всё прежде чем приступать к переносу в варик
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
3
17
4 года назад
Отредактирован N1ghtSiren
3
создаём основную таблицу:
table = {}
создаём в ней ещё таблицы, чтобы можно было к ним обращаться
for i = 0, 10 do
table[i] = {}
end
т.е. сейчас можно обратиться к table[0][0] и не получить ошибку
если нужна ещё большая глубина таблицы, создаёте ещё:
table[0][0] = {}
table[0][0][1] = "Good"
а вообще вот тут можно потестить всё прежде чем приступать к переносу в варик
Принятый ответ
0
23
4 года назад
0
PyCCKuu_4eJl, что за страный совет кода=)
Нет нужды цикл делать если можно при вызове [] через волшебную функцию в мета таблице и легче (Условно что если его ранее не вызван и не создан не будет занимать ячейки) Но когда его вызван и тут уже создает для игрока массив а там уже заполняет условно есть или нет
0
16
4 года назад
0
pro100master:
PyCCKuu_4eJl, что за страный совет кода=)
Нет нужды цикл делать если можно при вызове [] через волшебную функцию в мета таблице и легче (Условно что если его ранее не вызван и не создан не будет занимать ячейки) Но когда его вызван и тут уже создает для игрока массив а там уже заполняет условно есть или нет
Ни слова не понял из того что ты сказал
4
17
4 года назад
4
pro100master, метатаблицы это сложновато, я сам до конца ещё не понял где и правильно их можно использовать
а тут по факту - нужно - создали - заполнили, пара лишних пустых таблиц в любом случае вреда не принесёт
0
29
4 года назад
0
И почему так сложно заглянуть в документацию?
Для шести значений можно и одномерный массив использовать
do
	local mytable = {}
	local length  = 6
	
	---@param player player
	---@param num integer
	---@param value any
	function SetPlayerValue(player, num, value)
		mytable[GetPlayerId(player) * length + num - 1] = value
	end
	
	---GetPlayerValue
	---@param player player
	---@param num integer
	---@return any
	function GetPlayerValue(player, num)
		return mytable[GetPlayerId(player) * length + num - 1]
	end
end

GetPlayerValue(GetTriggerPlayer(), 6) --> шестое значение для GetTriggerPlayer
0
26
4 года назад
0
noyl, ну они у тебя в любом случае будут, эти лишние манипуляции.
И если хочешь получать/посылать число указывая номер игрока и число - тогда либо хеш-таблица (именно так они и работают), либо писать функцию в которую будешь посылать нужные аргументы, и получать соответствующие результаты... да, знаю, звучит абстрактно...
5
29
4 года назад
5
И если хочешь получать/посылать число указывая номер игрока и число - тогда либо хеш-таблица (именно так они и работают)
Хэштаблицы в lua это глупо
0
16
4 года назад
0
NazarPunk:
И если хочешь получать/посылать число указывая номер игрока и число - тогда либо хеш-таблица (именно так они и работают)
Хэштаблицы в lua это глупо
Я просто уже по привычке написал систему луашных хештаблиц)
Работает на обычных таблицах, создается, читается подобно варкрафтовской, только умеет луашные объекты сохранять, может это и извращение, но этим можно на раз-два быстро заменить все хеш-табличные вызовы в игре
0
13
4 года назад
0
Drulia_san, написать систему хештаблиц на языке основанном на хештаблицах...
2
30
4 года назад
2
Nelloy, LUA базируется на таблицах и метатаблицах, но при чём тут хэш-таблицы?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.