Jump to content

[AJUDA] Meu painel GUI não mostra a gridlist.


Recommended Posts

  • Moderators

A melhor forma é armazenar em uma tabela e manter nela as armas de todos players, tudo isso no lado server. O setElementData só será útil se você quiser manter esses valores compartilhados com o cliente, caso seja só uma requisição o triggerServerEvent é melhor.

Se entendi bem, o que você quer é armazenar temporariamente as armas do jogador, e 'puxar' as armas quando ele quiser obtê-las. Segue o meu código que irá salvar/devolver as armas com salvamento em table/array:


local globalPlayerWeapons = {} -- tabela que irá armazenar as armas guardadas (de todos jogadores)

function guardarArmas( player )
	if not globalPlayerWeapons[player] then -- cria a tabela com o jogador na chave se não existir
		globalPlayerWeapons[player] = {}
	end
	for slot = 0, 12 do -- loop em todos slots das armas
		local weapon = getPedWeapon( player, slot )
		
		if ( weapon > 0 ) then -- verifica se o player tem uma arma nesse slot
			local ammo = getPedTotalAmmo( player, slot ) -- obterm a munição da arma; slot: o slot no qual o loop percorre
			
			globalPlayerWeapons[ player ][ weapon ] = ammo -- inserir a arma na chave (id) e munição no valor
		end
	end
	takeAllWeapons(player) -- tirar todas armas do jogador
end

function pegarArmas( player )
	if not globalPlayerWeapons[player] then return end -- se não existir a tabela do jogador, interromper a execução
	--
	local weapons = globalPlayerWeapons[player]
	if weapons then 
		for weapon, ammo in pairs(weapons) do -- loop na tabela das armas "key" : arma; "valor" : ammo
		
			giveWeapon(player, weapon, ammo, true)
			globalPlayerWeapons[player][weapon] = nil -- limpa da memória os valores de cada chave
		end 
	end
	globalPlayerWeapons[player] = nil -- remove a tabela do jogador
end

Leia os comentários no código

Link to comment
  • 1 month later...
On 08/07/2019 at 21:14, DNL291 said:

A melhor forma é armazenar em uma tabela e manter nela as armas de todos players, tudo isso no lado server. O setElementData só será útil se você quiser manter esses valores compartilhados com o cliente, caso seja só uma requisição o triggerServerEvent é melhor.

Se entendi bem, o que você quer é armazenar temporariamente as armas do jogador, e 'puxar' as armas quando ele quiser obtê-las. Segue o meu código que irá salvar/devolver as armas com salvamento em table/array:


local globalPlayerWeapons = {} -- tabela que irá armazenar as armas guardadas (de todos jogadores)

function guardarArmas( player )
	if not globalPlayerWeapons[player] then -- cria a tabela com o jogador na chave se não existir
		globalPlayerWeapons[player] = {}
	end
	for slot = 0, 12 do -- loop em todos slots das armas
		local weapon = getPedWeapon( player, slot )
		
		if ( weapon > 0 ) then -- verifica se o player tem uma arma nesse slot
			local ammo = getPedTotalAmmo( player, slot ) -- obterm a munição da arma; slot: o slot no qual o loop percorre
			
			globalPlayerWeapons[ player ][ weapon ] = ammo -- inserir a arma na chave (id) e munição no valor
		end
	end
	takeAllWeapons(player) -- tirar todas armas do jogador
end

function pegarArmas( player )
	if not globalPlayerWeapons[player] then return end -- se não existir a tabela do jogador, interromper a execução
	--
	local weapons = globalPlayerWeapons[player]
	if weapons then 
		for weapon, ammo in pairs(weapons) do -- loop na tabela das armas "key" : arma; "valor" : ammo
		
			giveWeapon(player, weapon, ammo, true)
			globalPlayerWeapons[player][weapon] = nil -- limpa da memória os valores de cada chave
		end 
	end
	globalPlayerWeapons[player] = nil -- remove a tabela do jogador
end

Leia os comentários no código

Fiquei fora por um tempo devido a alguns problemas pessoais, peço desculpas pela demora. O que você desenvolveu acima é basicamente o que quero fazer, a única diferença é que o player consiga guardar qualquer uma das armas que tem em mãos e pegá-la quando quiser, pelo que entendi no script acima ele terá de guardar todas as armas que carrega.

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...