A função unpack não funciona dessa maneira. Ela serve para "desempacotar" uma table em valores separados. Ex:
Voltando ao seu problema, por favor evite de censurar a imagem do erro, pois assim não tem como saber qual função específica está gerando erro. Além disso, ninguém se importa com o nome do seu script.
Você tem uma table com as coordenadas aleatórias onde o marker deve aparecer. Com o math.random vc seleciona uma dessas coordenadas e cria o marker nela. O unpack será usado para separar as coordenadas x, y, z em variáveis para poder criar o marker. Mas vale lembrar que não é obrigatório fazer com unpack, vou mostrar ambos os jeitos de ser feito:
local arr = {
{2455.423, -2079.331, 12.547}, -- Item 1 da table arr
{2458.529, -2078.655, 12.547}, -- Item 2 da table arr
{2462.126, -2078.502, 12.547}, -- E assim por diante.
}
function test () -- Exemplo com unpack:
local x, y, z = unpack (arr[math.random (#arr)]) -- Desempacota um item aleatório da table arr. Atribuindo seus valores nas variáveis.
createMarker (x, y, z, "cylinder", 1.5, 50, 100, 255, 100)
end
addCommandHandler ("teste", test)
function test2 () -- Exemplo sem unpack:
local indice = math.random (#arr) -- Gera um valor aleatório de 1 até 3 (pois 3 é o maior índice da table arr) [veja no próximo conteúdo oculto]
local x = arr[indice][1] -- Atribui o primeiro valor do item aleatório no x.
local y = arr[indice][2] -- Atribui o segundo valor do item aleatório no y.
local z = arr[indice][3] -- Atribui o terceiro valor do item aleatório no z.
-- Acima fiz basicamente o mesmo trabalho do unpack.
createMarker (x, y, z, "cylinder", 1.5, 50, 100, 255, 100)
end
addCommandHandler ("testar", test2)