Jump to content

Divisão


Recommended Posts

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

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 by Lord Henry
  • Like 1
Link to comment
  • Moderators

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

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

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

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