DNL291 Posted July 9, 2019 Share Posted July 9, 2019 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
joao2235 Posted September 3, 2019 Author Share Posted September 3, 2019 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now