Jump to content

setElementData e getElementData


Recommended Posts

Boa tarde pessoal, sou novo no ramo de script e estou com um pequeno problema.

Quando o jogador passa pelo marker mesmo não estando com a data "carga" ele recebe o dinheiro e o veiculo é excluido, o que estou fazendo de errado?


local markerPegarTrab = createMarker (-2422.6025390625, -607.6884765625, 131.5625, "cylinder", 1.5, 0, 255, 255) -- MARKER ONDE O JOGADOR PODERÁ PEGAR O TRABALHO
local blipPegarTrab = createBlipAttachedTo(markerPegarTrab, 42) -- BLIP ONDE O JOGADOR PODERÁ PEGAR O TRABALHO, SERÁ MOSTRADO NO GPS/MAPA

local markerFinal = createMarker(-2433.3100585938, -614.18701171875, 132.55688476562, "checkpoint", 3.0, 0, 255, 255) -- CRIA O MARKER ONDE SERÁ ENTREGUE O CAMINHÃO
local blipFinal = createBlipAttachedTo(markerFinal, 0) -- CRIA O BLIP ONDE SERÁ ENTREGUE O CAMINHÃO

setElementVisibleTo(markerFinal, getRootElement(), false)
setElementVisibleTo(blipFinal, getRootElement(), false)

-- FUNÇÃO ONDE EXIBE UMA MENSAGEM QUANDO O JOGADOR ENTRAR NO MARKER PARA PEGAR O TRABALHO --
function msgTrab(thePlayer)
    if isElementWithinMarker(thePlayer, markerPegarTrab) == true then -- CHECA SE O JOGADOR ESTÁ NO MARKER
        outputChatBox(" ", thePlayer) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
        outputChatBox(" ", thePlayer) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
        outputChatBox(" ", thePlayer) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
        outputChatBox(" ", thePlayer) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
        outputChatBox(" ", thePlayer) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
        outputChatBox(" ", thePlayer) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
        outputChatBox(" ", thePlayer) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
        outputChatBox(" ", thePlayer) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
        outputChatBox("#00FFFF==================", thePlayer, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT
        outputChatBox("#00FFFF      CAMINHONEIRO", thePlayer, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT
        outputChatBox("#00FFFF==================", thePlayer, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT
        outputChatBox("#00CED1Digite /caminhoneiro para começar a trabalhar.", thePlayer, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT QUANDO O JOGADOR ESTIVER EM CIMA DO MARKER
    end
end
addEventHandler("onMarkerHit", markerPegarTrab, msgTrab) -- "ONMARKERHIT" SERVE PARA EXECUTAR A FUNÇÃO QUANDO O PLAYER ENCOSTAR NO MARKER

vehicle = {} -- VARIÁVEL VEÍCULO
trailer = {} -- VARIÁVEL CARGA

-- FUNÇÃO QUE DA PARA O JOGADOR O VEICULO QUE SERÁ USADO NO TRABALHO --
function pegarTrab(thePlayer)
    if getPedOccupiedVehicle(thePlayer) == false then -- CHECA SE O JOGADOR ESTÁ EM UM VEICULO
        if isElementWithinMarker(thePlayer, markerPegarTrab) == true then -- CHECA SE O JOGADOR ESTÁ NO MARKER
            setElementData(thePlayer, "Caminhoneiro", true) -- SETA UMA "ETIQUETA" DE "CAMINHONEIRO" NO JOGADOR, QUE SERÁ USADO PARA EXECUTAR FUNÇÕES APENAS SE O JOGADOR ESTIVER COM ESSA ETIQUETA
            vehicle[thePlayer] = createVehicle(514, -2433.3100585938, -614.18701171875, 132.55688476562, 0, 0, 100) -- CRIA O VEICULO QUE SERÁ USADO NO TRABALHO
            warpPedIntoVehicle(thePlayer, vehicle[thePlayer]) -- TELEPORTA O JOGADOR PARA DENTRO DO VEICULO
            trailer[thePlayer] = createVehicle(584, -2498.4177246094, -603.14990234375, 133.5625, 0, 0, 180) -- CRIA UMA CARGA QUE SERÁ USADO NO TRABALHO
            blipCarga = createBlipAttachedTo(trailer[thePlayer], 0) -- CRIA UM "BLIP" NO GPS/MAPA ONDE A CARGA ESTÁ
        end
    end
end 
addCommandHandler("caminhoneiro", pegarTrab) -- EXECUTA A FUNÇÃO QUANDO O PLAYER DIGITA A FUNÇÃO QUE ESTÁ ENTRE ASPAS

-- FUNÇÃO QUE CRIA O SEGUNDO MARKER ONDE O PLAYER IRÁ ENTREGAR O CAMINHÃO --
function pegarCarga(theTruck, trailer)
    if isElement(vehicle[thePlayer]) then -- CHECA SE O JOGADOR ESTÁ COM O VEICULO DO TRABALHO
        setElementVisibleTo(blipCarga, getRootElement(), false) -- SETA O BLIP DA CARGA PARA 0 OU FALSE
        setElementData(getRootElement(), "Carga", true) -- SETA UMA "ETIQUETA" DE "CARGA" NO JOGADOR, QUE SERÁ USADO PARA EXECUTAR FUNÇÕES APENAS SE O JOGADOR ESTIVER COM ESSA ETIQUETA
        setElementVisibleTo(markerFinal, getRootElement(), true) -- SETA O MARKER FINAL COMO TRUE, OU SEJA, IRÁ APARECER PARA O JOGADOR
        setElementVisibleTo(blipFinal, getRootElement(), true) -- SETA O BLIP FINAL COMO TRUE, OU SEJA, IRÁ APARECER PARA O JOGADOR
        outputChatBox(" ", getRootElement()) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
        outputChatBox(" ", getRootElement()) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
        outputChatBox(" ", getRootElement()) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
        outputChatBox("#00CED1A carga foi encaixada com sucesso, agora entregue a encomenda no marker.", getRootElement(), 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT QUANDO O JOGADOR ENCAIXAR A CARGA
    end
end
addEventHandler("onTrailerAttach", getRootElement(), pegarCarga) -- EXECUTA A FUNÇÃO CASO O JOGADOR ENCAIXAR A CARGA NO CAMINHÃO

function finalTrab(thePlayer)
    if vehicle[thePlayer] and isElement(trailer[thePlayer]) then
        if getElementData(thePlayer, "Caminhoneiro") and getElementData(thePlayer, "Carga") == true then
            givePlayerMoney(thePlayer, 5000)
            setElementVisibleTo(markerFinal, thePlayer, false)
            setElementVisibleTo(blipFinal, thePlayer, false)
            destroyElement(vehicle[thePlayer])
            destroyElement(trailer[thePlayer])
            outputChatBox("#00FFFF==================", thePlayer, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT
            outputChatBox("#00FFFF      CAMINHONEIRO", thePlayer, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT
            outputChatBox("#00FFFF==================", thePlayer, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT
            outputChatBox("#00CED1Você entregou a encomenda e recebeu R$5.000,00 .", thePlayer, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT QUANDO O JOGADOR ENTREGAR A CARGA
        end
        else
            return
    end
end
addEventHandler("onMarkerHit", markerFinal, finalTrab)

-- FUNÇÃO EXECUTADA QUANDO O PLAYER PERDER A CARGA
function perdeuCarga(theTruck, trailer)
    setElementVisibleTo(blipFinal, getRootElement(), false) -- SETA A VISIBILIDADE DO BLIP FINAL PARA 0 OU FALSE
    setElementVisibleTo(markerFinal, getRootElement(), false) -- SETA A VISIBILIDADE DO MARKER FINAL PARA 0 OU FALSE
    setElementVisibleTo(blipCarga, getRootElement(), true) -- SETA A VISIBILIDADE DO BLIP DA CARGA PARA 1 OU TRUE
    setElementData(getRootElement(), "Carga", false) -- SETA A ETIQUETA "CARGA" PARA 0 OU FALSE
    outputChatBox(" ", getRootElement()) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
    outputChatBox(" ", getRootElement()) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
    outputChatBox(" ", getRootElement()) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
    outputChatBox("#00CED1A carga foi desencaixada, recupere-a e entregue a encomenda!", getRootElement(), 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT QUANDO O JOGADOR PERDER A CARGA
end
addEventHandler("onTrailerDetach", getRootElement(), perdeuCarga) -- EXECUTA A FUNÇÃO QUANDO O "TRAILER" FOR DESENCAIXADO

-- FUNÇÃO QUE DESTRÓI O VEICULO APOS O PLAYER SAIR DO VEICULO/SAIR DO SERVIDOR/MORRER/VEICULO EXPLODIR --
function sairVeiculo(vehicle, thePlayer)
    outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
    outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
    outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
    outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
    outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
    outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
    outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
    outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
    outputChatBox("#00FFFF==================", source, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT
    outputChatBox("#00FFFF      CAMINHONEIRO", source, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT
    outputChatBox("#00FFFF==================", source, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT
    outputChatBox("#00CED1Você saiu do caminhão e acabou perdendo o trabalho.", source, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT QUANDO O JOGADOR MORRER/SAIR DO VEICULO/VEICULO EXPLODIR...
    setElementVisibleTo(blipCarga, getRootElement(), false) -- SETA A VISIBILIDADE DO BLIP DA CARGA PARA 0 OU FALSE
    setElementVisibleTo(markerFinal, getRootElement(), false) -- SETA A VISIBILIDADE DO MARKER DA CARGA PARA 0 OU FALSE
    setElementVisibleTo(blipFinal, getRootElement(), false) -- SETA A VISIBILIDADE DO BLIP FINAL PARA 0 OU FALSE
    if (isElement(vehicle[thePlayer])) then -- CHECA SE O VEICULO ESTÁ SPAWNADO
        destroyElement(vehicle[thePlayer]) -- CASO ESTIVER SPAWNADO O VEICULO SERÁ DESTRUÍDO
        if (isElement(trailer[thePlayer])) then -- CHECA SE A CARGA ESTÁ SPAWNADA
            destroyElement(trailer[thePlayer]) -- CASO ESTIVER SPAWNADA A CARGA SERÁ DESTRUIÍDA
        end
    end
end
addEventHandler("onPlayerQuit", getRootElement(), sairVeiculo) -- EXECUTA A FUNÇÃO QUANDO O PLAYER SAIR DO SERVIDOR
addEventHandler("onPlayerVehicleExit", getRootElement(), sairVeiculo) -- EXECUTA A FUNÇÃO QUANDO O PLAYER SAIR DO VEICULO
Edited by +MarceloM.
Link to comment
22 hours ago, +MarceloM. said:

 



function finalTrab(thePlayer)
    if vehicle[thePlayer] and isElement(trailer[thePlayer]) then
        if getElementData(thePlayer, "Caminhoneiro") and getElementData(thePlayer, "Carga") == true then
            givePlayerMoney(thePlayer, 5000)
            setElementVisibleTo(markerFinal, thePlayer, false)
            setElementVisibleTo(blipFinal, thePlayer, false)
            destroyElement(vehicle[thePlayer])
            destroyElement(trailer[thePlayer])
            outputChatBox("#00FFFF==================", thePlayer, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT
            outputChatBox("#00FFFF      CAMINHONEIRO", thePlayer, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT
            outputChatBox("#00FFFF==================", thePlayer, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT
            outputChatBox("#00CED1Você entregou a encomenda e recebeu R$5.000,00 .", thePlayer, 255, 255, 255, true) -- APENAS O TEXTO QUE IRÁ APARECER NO CHAT QUANDO O JOGADOR ENTREGAR A CARGA
        end
        else
            return
    end
end
addEventHandler("onMarkerHit", markerFinal, finalTrab)

 

Eu não olhei com muita atenção mas percebi que nessa função que eu destaquei acima talvez devesse ter um setElementData(thePlayer, "Carga", false). Do jeito que está (eu acho) que vai bugar a partir da segunda vez que fizer esse trajeto.

Outra coisa também é que você está usando setElementData(getRootElement(), "Carga", false), isso está errado, não use setElementData no root (a não ser que você saiba exatamente o que está fazendo). Use no seElementData no elemento player, como eu exemplifiquei acima. 

Link to comment

Não é necessário usar isto:

outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT

Para limpar o chat, basta usar:

clearChatBox (source)

Tem muita coisa errada nesse seu código, foi você mesmo que fez?

Edited by Jonas^
Link to comment
  setElementData(getRootElement(), "Carga", true) 

Seu problema está ai.. Como boechat disse, não se usa elementData em "root" a não ser que queira desencadear algo para TODOS do servidor.
Use o elemento referente ao player. No caso do lado do servidor, se da referência ao source, más tbm não se utiliza "source" como parâmetro de função, então faça referência ao jogador e chame a variável referente a ele. No seu caso parece ser "thePlayer", apenas substitua estes "getRootElement()" pelo player local e veja se resolve.

On 19/05/2021 at 13:57, Jonas^ said:

Não é necessário usar isto:


outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT
outputChatBox(" ", source) -- DÁ UM ESPAÇO EM BRANCO NO CHAT

Para limpar o chat, basta usar:


clearChatBox (source)

Tem muita coisa errada nesse seu código, foi você mesmo que fez?

Provavelmente sim, pode ver que existe MUITA coisa errada no código, coisa típica de quem está começando agora sem saber aonde está se metendo.... é normal errar, o que podemos fazer é aconselhar e guia-lo para o rumo certo, ai cabe a ele aprender ou não... Agora se for mais um daqueles que só vem aqui e esperam receber o código pronto, ai eu sinto muito pois não vai chegar muito longe.

Edited by Rakashy
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...