Jump to content

Porte De Armas Sumindo


Recommended Posts

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.

Link to comment
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

Link to comment
  • Moderators

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
Link to comment

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