Ir para conteúdo

(Resolvido)LUA - 'ipairs' (table expected, got number)

Featured Replies

Postado

Fala pessoal tudo bem?

 

Estou com dificuldades em um script e preciso da ajuda dos magos do LUA rs.

 

Tenho um script que quando o player morre (onDeath), ele faz algumas coisas e depois ele chama uma função que deveria retornar uma table (array) para eu fazer o for com o ipairs certinho. Segue abaixo o código:

 

Spoiler
    local opcodeLivePlayers = 115
 
    function onDeath(cid, corpse)
        storages = {166668, 166666
        for key, value in ipairs(storages) do
            if getPlayerStorageValue(cid, value) == 1 then    
                    setPlayerStorageValue(cid, value, -1)
                    return false
            end
        end
       
        local players = #getPlayersInArea(torneio.area)  --                             <- Erro tá dando aqui
        print(players)
 
        for _, pid in ipairs(players) do
            doSendPlayerExtendedOpcode(pid, opcodeLivePlayers, players)
            print("enviada opcode: "..opcodeLivePlayers.." buffer: ".. playersInscritos)
        end
 
        return true
    end

 

Segue abaixo a função getPlayersInArea:

 

Spoiler
    torneio = {
        playerTemple = {
            x = 1016,
            y = 1025,
            z = 7
        }, ---- posiçao do Templo
        tournamentFight = {
            x = 1162,
            y = 933,
            z = 7
        }, ----- Area (Mapa) do torneio
        area = {
            fromx = 1113,
            fromy = 887,
            fromz = 7,
            fromzUp = 6,
            tox = 1218,
            toy = 955,
            toz = 7,
            tozUp = 6
        },
    }
 
    function getPlayersInArea(area) -- Pega a quantidade de jogadores na área
 
        local players = {}
 
        for x = area.fromx, area.tox do
            for y = area.fromy, area.toy do
                for z = area.fromz, area.toz do
 
                    local m = getTopCreature({
                        x = x,
                        y = y,
                        z = z
                    }).uid
 
                    if m ~= 0 and isPlayer(m) then
                        table.insert(players, m)
                    end
                end
            end
        end
        return players
    end

 

Acontece que no código de cima (do primeiro spoiler) eu dou um print no retorno da função getPlayersInArea, porém ela não tá me retornando a table, tá me retornando só: 2

 

Spoiler

image.thumb.png.9aeea82ccdbbf37c411e039dcddedd58.png

 

 

Alguém consegue me ajudar em, como raios eu faço a função retornar a lista de players ao invés da quantidade? Acredito que ta retornando o count da table, e não os itens do array.

 

 

Agradeço desde já, valeu tchurma!

Editado por galokoao (veja o histórico de edições)

Resolvido por FeeTads

Ir para solução
Postado
  • Solução
8 horas atrás, Ghaz disse:
local players = #getPlayersInArea(torneio.area)  --                             <- Erro tá dando aqui
        print(players)

o código ta fazendo oq tu pediu uai
players = #getPlayerInarea

o # significa o tamanho
pra receber a table é só 
players = getPlayersInArea
 

e depois print(#players)
que ai vai printar o tamanho de players, ou seja, 2 players na area

Postado
  • Autor
1 minuto atrás, FeeTads disse:

o código ta fazendo oq tu pediu uai
players = #getPlayerInarea

o # significa o tamanho
pra receber a table é só 
players = getPlayersInArea
 

e depois print(#players)
que ai vai printar o tamanho de players, ou seja, 2 players na area

 

 

Valeu irmão kkkk juro que eu n sabia disso kkkkkkk pqp, tamo junto!

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo