Jump to content

Porte De Armas Sumindo


Recommended Posts

Posted

Eu fiz um script de porte de armas que quando o cara compra ele da um SetElementData(source, PorteArmas, "Possui") mas quando ele reloga por algum motivo some, muda pra nil o valor, o que pode ser? Não tem nada conflitando, pq ja mudei o nome até pra PorteArmasausdhasd9s8a9d87ya, nada com o mesmo nome etc.. Não sei oq pode ser.

Posted
17 hours ago, andreisrww said:

setElementData é temporário. Assim que o jogador se desconecta do servidor, não existe mais. Use setAccountData para salvar na conta do jogador ou algum banco de dados.

NOSSA, MUITO OBRIGADO, ISSO RESPONDEU MUIIIITA COISA QUE JA ACONTECEU LA NO SERVER, agora tudo faz sentido kkkkkkkkk !! :D 

Posted
17 hours ago, andreisrww said:

setElementData é temporário. Assim que o jogador se desconecta do servidor, não existe mais. Use setAccountData para salvar na conta do jogador ou algum banco de dados.

So mais uma pergunta, se eu usar o setAccountData, para eu obter oq quero de dentro dele eu preciso usar o getAccountData? Ou o getElementData funciona do msm jeito?

Posted
2 hours ago, Lord Henry said:

Pra obter os dados salvos na conta, use o getAccountData.

function Porte() 
local Porte = getAccountData ( source, "PorteHRPArma" ) or "Nao"
if ( getPlayerMoney (source) >= 10000) then 
if Porte == "Nao" then
	takePlayerMoney(source, 10000) 
	setAccountData(source,"PorteArma",Porte + 1)
	setAccountData(source,"PorteHRPArma","Sim")
	setElementData(source,"PorteHRPArma","Sim")
	exports.Scripts_Dxmessages:outputDx(source,"Você Comprou Um Porte de Armas por R$:10,000 ","success",source, true)
else 
	exports.Scripts_Dxmessages:outputDx(source,"Você Ja Possui Porte","error",source, true) 
end 
else 
	exports.Scripts_Dxmessages:outputDx(source,"Você Não Possui DInheiro suficiente Para Comprar o Porte","error",source, true) 
end 
end 
addEvent("Porte", true)
addEventHandler("Porte", root, Porte) 

Não esta funcionando, eu clico para fazer o porte e simplesmente nada acontece, ele n compra e nem fala que ja tem

Posted

Onde esse evento é chamado? Mostre o código.
Coloque uma saída de chat para ver se a função é executada:
 

function Porte()
outputChatBox("Função 'Porte' chamada!")
local Porte = getAccountData ( source, "PorteHRPArma" ) or "Nao"
if ( getPlayerMoney (source) >= 10000) then
outputChatBox("@Porte: dinheiro >= 10000") 
if Porte == "Nao" then
	takePlayerMoney(source, 10000) 
	setAccountData(source,"PorteArma",Porte + 1)
	setAccountData(source,"PorteHRPArma","Sim")
	setElementData(source,"PorteHRPArma","Sim")
	exports.Scripts_Dxmessages:outputDx(source,"Você Comprou Um Porte de Armas por R$:10,000 ","success",source, true)
else 
	exports.Scripts_Dxmessages:outputDx(source,"Você Ja Possui Porte","error",source, true) 
end 
else
    outputChatBox("@Porte: dinheiro < 10000") 
	exports.Scripts_Dxmessages:outputDx(source,"Você Não Possui DInheiro suficiente Para Comprar o Porte","error",source, true) 
end 
end 
addEvent("Porte", true)
addEventHandler("Porte", root, Porte) 

Sempre use o comando debugscript 3 para ver erros/avisos.

  • Thanks 1
Posted (edited)

Não pode ser utilizada uma variável no accountData, você precisa primeiro pegar a conta desse elemento utilizando 'getPlayerAccount' e aí sim usar ela no accountData. Exemplo:

local contaPlayer = getPlayerAccount(source)
setAccountData(contaPlayer , "Porte", sim)

 

Outra coisa, não use set/getAccountData de uma vez pois eles consomem muita memória e demoram para serem buscados. É melhor usar o set/getAccountData apenas quando o player logar/quitar do servidor, e baseado no resultado você setar o elementData no player. Exemplo:

function savePorte(source)
	local conta = getPlayerAccount(source) 
	if getElementData(source, "Porte") == true then
		setAccountData(conta, "Porte", 1)
	end
end
addEventHandler("onPlayerQuit", getRootElement(), savePorte)

function restorePorte(source)
	local conta = getPlayerAccount(source) 
	if getAccountData(conta, "Porte") == 1 then
		setElementData(source, "Porte", true)
	end
end
addEventHandler("onPlayerLogin", getRootElement(), restorePorte)

 

Seu código corrigido: 

function Porte() 
local Porte = getElementData ( source, "Porte" )
if ( getPlayerMoney (source) >= 10000) then 
if Porte == false then
	takePlayerMoney(source, 10000) 
	setElementData(source, "Porte", true)
	exports.Scripts_Dxmessages:outputDx(source,"Você Comprou Um Porte de Armas por R$:10,000 ","success",source, true)
else 
	exports.Scripts_Dxmessages:outputDx(source,"Você Ja Possui Porte","error",source, true) 
end 
else 
	exports.Scripts_Dxmessages:outputDx(source,"Você Não Possui DInheiro suficiente Para Comprar o Porte","error",source, true) 
end 
end 
addEvent("Porte", true)
addEventHandler("Porte", root, Porte) 


function savePorte(source)
	local conta = getPlayerAccount(source) 
	if getElementData(source, "Porte") == true then
		setAccountData(conta, "Porte", 1)
	end
end
addEventHandler("onPlayerQuit", getRootElement(), savePorte)


function restorePorte(source)
	local conta = getPlayerAccount(source) 
	if getAccountData(conta, "Porte") == 1 then
		setElementData(source, "Porte", true)
	end
end
addEventHandler("onPlayerLogin", getRootElement(), restorePorte)

 

Edited by ber

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