Soull_Sec Posted June 23, 2020 Share Posted June 23, 2020 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
Other Languages Moderators androksi Posted June 23, 2020 Other Languages Moderators Share Posted June 23, 2020 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. 1 Link to comment
Soull_Sec Posted June 24, 2020 Author Share Posted June 24, 2020 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 !! Link to comment
Soull_Sec Posted June 24, 2020 Author Share Posted June 24, 2020 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? Link to comment
Other Languages Moderators Lord Henry Posted June 24, 2020 Other Languages Moderators Share Posted June 24, 2020 Pra obter os dados salvos na conta, use o getAccountData. 2 Link to comment
Soull_Sec Posted June 24, 2020 Author Share Posted June 24, 2020 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
DNL291 Posted June 24, 2020 Share Posted June 24, 2020 Verifique se source é realmente o player. iprint(source) 1 Link to comment
Soull_Sec Posted June 24, 2020 Author Share Posted June 24, 2020 8 minutes ago, DNL291 said: Verifique se source é realmente o player. iprint(source) É sim, havia testado isso em alguns testes anteriores Link to comment
Soull_Sec Posted June 26, 2020 Author Share Posted June 26, 2020 Alguem sabe oq pode ser? Link to comment
DNL291 Posted June 26, 2020 Share Posted June 26, 2020 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. 1 Link to comment
ber Posted June 29, 2020 Share Posted June 29, 2020 (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 June 29, 2020 by ber 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