Jump to content

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


Recommended Posts

Posted

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

  • 1 month later...
Posted
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.

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