Lukas NQB Posted May 24, 2020 Share Posted May 24, 2020 setElementData(localPlayer, "pPecas", getElementData(localPlayer, "Materials")/10) Sei que está linha não está certa porém sei que está na direção certa, alguém pode me ajudar com isso? (OBS: Na realidade não sei se está errada faz sentido na minha cabeça mais ao mesmo tempo não) Quero pegar o total de "Materiais" que o player possui dividir por 10 e setar no ElementData "pPecas" o resultado da divisão. Quero também emitir esse resultado, "Você criou "X" peças de armas. Link to comment
Other Languages Moderators Lord Henry Posted May 24, 2020 Other Languages Moderators Share Posted May 24, 2020 (edited) Não vi nada de errado nela. Exceto pelo fato de estar usando elementData em vez de table, que é bem mais leve e otimizado do que elementData. Edited May 25, 2020 by Lord Henry 1 Link to comment
DNL291 Posted May 25, 2020 Share Posted May 25, 2020 Jogar o getElementData direto e com a divisão é pedir por possíveis warnings no debug. Uma prática boa é você usar o operador lógico or para caso o primeiro resultado não for bem-sucedido. No entanto, se não for possível prosseguir sem o resultado da elementData, você pode fazer isto: local materiais = getElementData(localPlayer, "Materials") if materiais then setElementData(localPlayer, "pPecas", getElementData(localPlayer, "Materials")/10) end Se puder utilizar outro valor em caso de falha: local materiais = getElementData(localPlayer, "Materials") or 0 setElementData(localPlayer, "pPecas", materiais/10) Como já foi dito acima, é sempre melhor optar por tables em vez de elementData, mas claro que há um preço por isso, que é a dificuldade em fazer com tabelas; elementData é bem mais newbie-friendly. Quanto ao seu código, te recomendo a nos dizer qual tarefa deseja alcançar com esse código, pode ser que não seja necessário estar sincronizando esses valores com todo o servidor, assim usando mais tráfego de rede, e é isso que o setElementData estará fazendo. Link to comment
Lukas NQB Posted May 25, 2020 Author Share Posted May 25, 2020 Isso é um "trabalho" de criação de armas, porém antes de criar armas ele precisa criar as peças, sendo assim o mesmo tem que ir em determinados locais pré-definidos, aonde ele vai comprar uma certa quantidade de materiais, ele só vai poder comprar 1 vez em cada ponto de venda depois devera retornar a HQ aonde haverá um marker que vai fazer essa divisão aonde a cada 10 materiais ele transforma em 1 peça. Realizei o teste acima porém está me retornando um erro. setElementData(localPlayer, "pPecas", getElementData(localPlayer, "Materials")/10) attempt to perform arithmetic on a boolean value Se possível me de um exemplo de como ficaria esse código em table, isso vai me dar uma base e uma noção para me aprofundar mais e evoluir. Link to comment
Other Languages Moderators Lord Henry Posted May 25, 2020 Other Languages Moderators Share Posted May 25, 2020 Ele está reclamando que getElementData(localPlayer, "Materials") é igual a booleano. Provavelmente false. Ou seja, não é possível fazer a operação false/10. Link to comment
NickScripter Posted May 26, 2020 Share Posted May 26, 2020 On 25/05/2020 at 11:26, Lukas NQB said: Isso é um "trabalho" de criação de armas, porém antes de criar armas ele precisa criar as peças, sendo assim o mesmo tem que ir em determinados locais pré-definidos, aonde ele vai comprar uma certa quantidade de materiais, ele só vai poder comprar 1 vez em cada ponto de venda depois devera retornar a HQ aonde haverá um marker que vai fazer essa divisão aonde a cada 10 materiais ele transforma em 1 peça. Realizei o teste acima porém está me retornando um erro. setElementData(localPlayer, "pPecas", getElementData(localPlayer, "Materials")/10) attempt to perform arithmetic on a boolean value Se possível me de um exemplo de como ficaria esse código em table, isso vai me dar uma base e uma noção para me aprofundar mais e evoluir. Isso acontece pois o Element "pPecas" ou "Materials" está em false ao invés de numerico.. você precisa definir o valor deles para conseguir fazer a divisão. Link to comment
Lukas NQB Posted May 26, 2020 Author Share Posted May 26, 2020 1 hour ago, Nickqq said: Isso acontece pois o Element "pPecas" ou "Materials" está em false ao invés de numerico.. você precisa definir o valor deles para conseguir fazer a divisão. material01 = createMarker(1422.6765,-1319.3438,13.5547 -1, "cylinder", 5, 255, 255, 255, 255) --material02 = createMarker(2823.3486,-1420.3571,16.2562 -1, "cylinder", 5, 255, 255, 255, 255) --material03 = createMarker(-1735.7610,1244.9299,7.5469 -1, "cylinder", 5, 255, 255, 255, 255) local pMateriais = getElementData(localPlayer, "Materials") or 0 local pPecas = getElementData(localPlayer, "Pecas") or 0 local pDinheiro = getElementData(localPlayer, "Money") or 0 addEventHandler("onClientMarkerHit", material01, function(jogador) if jogador ~= localPlayer then return end if getElementData(localPlayer, "Mat01") == 0 then --if getElementData(localPlayer, "Money") < 1250 then outputChatBox("#FFFFFFVocê precisa de #00CC00R$ 6250 #FFFFFFpara comprar os #dbed16250 materiais #FFFFFFde armas.", 255, 255, 255, true) return end --setElementData(localPlayer, "pDinheiro") Money-1250) setElementData(localPlayer, "pMateriais", Materials+50) setElementData(localPlayer, "Mat01", 1) outputChatBox("#FFFFFFVocê comprou #dbed1650 materiais #FFFFFFde armas por #00CC00R$ 1250", 255, 255, 255, true) outputChatBox("Agora vá até a fábrica (marcada no mapa) para preparar as peças.", 255, 255, 255, true) if ( finalP ) then return end finalP = createMarker(2160.7837,-2280.9233,13.3838 -1, "cylinder", 5, 250, 0, 0, 255) else outputChatBox("Já te demos um pacote com os materiais recentemente, levá-lo a fábrica e fabrica as peças.", 255, 255, 255, true) end end) addEventHandler("onClientMarkerHit", finalP, function(jogador) if jogador ~= localPlayer then return end setElementData(localPlayer, "pPecas", getElementData(localPlayer, "pMateriais")/10) outputChatBox ('#FFFFFFVocê armou #dbed162'..(getElementData(localPlayer, "pMateriais")/10).. 'peças#FFFFFF, as quais estão prontas para criar armas.') destroyElement(finalP) setElementData(localPlayer, "Mat01", 0) --setElementData(localPlayer, "Mat02", 0) --setElementData(localPlayer, "Mat03", 0) end) Esse é o código até o momento 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