Jump to content

[AJUDA] Obter dados de tabela em client/server-side


Recommended Posts

Olá pessoal!

Como eu posso obter dados de uma tabela em server-side, no client-side (ou vice-versa)?

Imaginei que poderia ser utilizando um trigger, mas não sei como utilizá-lo para tal.

(Estou fazendo isto para tentar parar de utilizar o element-data o máximo possível)

Edited by VazErn
Link to comment
  • Other Languages Moderators

Coloque a tabela inteira numa variável e passe essa variável como argumento no triggerClientEvent. Então no client você poderá acessar esse argumento e obter a table.

Exemplo maroto:

Server-side:

tabela = {
	[1] = "Elemento 1",
	[2] = "Elemento 2",
	[3] = "Elemento 3"
}

addCommandHandler ("eae", function (thePlayer, cmd)
	triggerClientEvent (thePlayer, "recebeTable", thePlayer, tabela)
end)

Client-side:

addEvent ("recebeTable", true)
addEventHandler ("recebeTable", getRootElement(), function (tabelaQualquer)
	outputChatBox ("Tabela recebida do server:")
	for i, valor in ipairs (tabelaQualquer) do
		outputChatBox (i.." = "..valor, 255, 255, 255)
	end
end)

(código não testado, avise se houver erros)

Boa sorte.

Edited by Lord Henry
  • Like 1
  • Thanks 2
Link to comment

Amigo, não havia imaginado que era tão fácil, as vezes acontece de dar uma "falta de lógica" na minha mente, rs.

(Element-data abandonado de vez, rs)

(Como usei no meu sistema de gasolina)

Client-side (funções para obter, e definir dados da tabela):

addEvent("setVehicleFuel", true)
addEventHandler("setVehicleFuel", root, 
    function(localPlayer, fuelData)
        local veh = localPlayer:getOccupiedVehicle()
        if type(fuelData) == "number" then
            data.fuel[veh] = fuelData
            return fuelData
        end
    end
)

addEvent("getVehicleFuel", true)
addEventHandler("getVehicleFuel", root, 
    function()
        local veh = localPlayer:getOccupiedVehicle()
        return data.fuel[veh]
    end
)

Server-side (exemplo que usei para definir o dado da tabela que está no client-side):

addCommandHandler("fuel", 
    function()
	   outputChatBox(tostring(triggerClientEvent("getVehicleFuel", source)))
    end
)

 

Testei todas as funções que fiz, e estão funcionando normalmente.

Obrigado!

Link to comment
10 hours ago, Lord Henry said:

De nada mano. Qualquer coisa estamos aqui.

Não se esqueça de deixar um Thanks lá na resposta pra me ajudar.

Abraço.

Bom, da um trabalhinho a mais do que usar element-data, mas para ter um servidor bom, esforços são necessários.

  • Like 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...