Gaimo Posted March 13, 2020 Share Posted March 13, 2020 Ta uma bagunça, pra ser sincero nem sem o que está acontecendo, o painel abre pra geral, ou não abre pra mim abre pra outro. Qual a diferença entre root, getElementRoot() e localPlayer ? Server-side sW, sH = guiGetScreenSize() aBoxes = 0 panel = false function GUI() panel = true dxDrawImage(sW/2 - 320, sH/2 - 320, 640, 640, "files/img/painel.png") --dxDrawImage(sW/2 + 170, sH/2 - 150, 30, 30, "files/img/bAccept.png") end function showPanel(source) if panel == false then showCursor(not isCursorShowing(source)) addEventHandler("onClientRender", source, GUI) panel = true return elseif panel == true then removeEventHandler("onClientRender", source, GUI) panel = false end end function isCursorOnElement( posX, posY, width, height ) if isCursorShowing( ) then local mouseX, mouseY = getCursorPosition( ) local clientW, clientH = guiGetScreenSize( ) local mouseX, mouseY = mouseX * clientW, mouseY * clientH if ( mouseX > posX and mouseX < ( posX + width ) and mouseY > posY and mouseY < ( posY + height ) ) then return true end end return false end function click(_,state) if state == "down" and panel then -- Accept if isCursorOnElement(sW/2 - 75, sH/2 + 100, 150, 40) then showCursor(false) showPanel() triggerServerEvent ( "setJob", resourceRoot, localPlayer) -- Close elseif isCursorOnElement(sW/2 + 170, sH/2 - 150, 30, 30) then showCursor(false) showPanel() end end end addEventHandler ( "onClientClick", getRootElement(), click) routes = { --[1] = {1567.93457, -1893.43579, 12.96944}, --[2] = {1405.94702, -1880.95251, 12.95655}, [1] = {1688.91943, -1829.25281, 13.48962}, [2] = {1689.58313, -1797.27710, 13.48806}, } ped = createPed(0, 1683.96326, -1815.92603, 13.54688) setElementFrozen(ped, true) getJob = createMarker(1683.96326, -1815.92603, 13.54688-0.8, "cylinder", 2, 0, 0, 0, 10) -- usefull function function randomDiff (start, finish) if start >= finish or not start or not finish then return false end if (math.floor(start) ~= start) or (math.floor(finish) ~= finish) then return false end local rand = math.random(start, finish) while (rand == lastRand) do rand = math.random(start, finish) end lastRand = rand return rand end -- Gera uma rota para o player function rota() local RR = routes[randomDiff(1, #routes)] target = createMarker(RR[1], RR[2], RR[3], "cylinder", 2, 255, 0, 0, 255) blip = createBlipAttachedTo(target, 41, 1) end function startJob() aBoxes = 0 startMarker = createMarker(1683.57776, -1811.70239, 13.54688 - 0.8, "cylinder", 2, 255, 0, 0, 255) createBlipAttachedTo(startMarker, 41, 1) end addEvent( "startJob", true ) addEventHandler( "startJob", localPlayer, startJob ) function frozen(thePlayer, time) setTimer(function() setElementFrozen(getPedOccupiedVehicle(thePlayer), true) end, 300, 1) setTimer(function() setElementFrozen(getPedOccupiedVehicle(thePlayer), false) end, time, 1) end function del() destroyElement(blip) destroyElement(target) end addEvent( "del", true ) addEventHandler( "del", localPlayer, del) -- Main addEventHandler( "onClientMarkerHit", getRootElement(), function (thePlayer, dim) -- Source = Marker que o player hitou if dim then if source == getJob and not isPedInVehicle(thePlayer) then showPanel(thePlayer) end if source == startMarker then -- Avisar se o jogador já tem as caixas e não pode pegar mais if aBoxes >= 10 then outputChatBox("Aviso, player ja tem as caixas") return end -- Roda alguma animacao frozen(thePlayer, 3000) -- Seta a quantidade de caixas pra 10 aBoxes = 3 -- Gera uma rota aleatoria setTimer(function() rota() end, 3000, 1) end -- Se o marker existe e eh o destino do player if target ~= nil and source == target then del() frozen(thePlayer, 3000) -- Paga o player setElementData(localPlayer, "dinheiro", math.random(100, 200)) -- Faz alguma animacao e para o carro -- Diminui uma caixa aBoxes = aBoxes - 1 -- Informa a quantidade de caixas outputChatBox("Caixas restantes: "..aBoxes) if aBoxes > 0 then -- Gera uma rota aleatoria setTimer(function() rota() end, 3000, 1) elseif aBoxes == 0 then outputChatBox("Retorne ao estoque para pegar mais caixas.") end end end end) Link to comment
Tommy. Posted March 13, 2020 Share Posted March 13, 2020 (edited) A maior parte do problema está na função showPanel, nela não precisa do argumento source na função, por padrão o jogador vai ser localPlayer. O isCursorShowing no client-side não precisa do argumento do player, dito isso, você deve remover o source do mesmo. Como dito ali em cima, por padrão o jogador vai ser localPlayer, então em addEventHandler e removeEventHandler você deve alterar o source para localPlayer Na função click tem um erro no triggerServerEvent você está enviando o localPlayer para todo o resourceRoot, o certo é você remover o resourceRoot e deixar apenas o localPlayer Provavelmente há mais problemas, mas está tão bagunçado e confuso, que lendo por cima consegui ver esses ditos acima. 35 minutes ago, Gaimo said: Qual a diferença entre root, getElementRoot() e localPlayer ? root é uma abreviação do getRootElement. O root/getRootElement, Como o nome deles já diz, ele retorna todos os elementos raiz. o localPlayer é apenas para o client-side, o mesmo retorna jogador local. Edited March 13, 2020 by Tommy. Link to comment
Gaimo Posted March 13, 2020 Author Share Posted March 13, 2020 Assim? function showPanel() if panel == false then showCursor(not isCursorShowing()) addEventHandler("onClientRender", localPlayer, GUI) panel = true return elseif panel == true then removeEventHandler("onClientRender", localPlayer, GUI) panel = false end end Link to comment
main Posted March 13, 2020 Share Posted March 13, 2020 (edited) Basta verificar no evento onClientMarkerHit se o hitElement é igual a localPlayer addEventHandler( "onClientMarkerHit", getRootElement(), function (thePlayer, dim) -- Source = Marker que o player hitou if dim and thePlayer == localPlayer then if source == getJob and not isPedInVehicle(thePlayer) then showPanel(thePlayer) end if source == startMarker then -- Avisar se o jogador já tem as caixas e não pode pegar mais if aBoxes >= 10 then outputChatBox("Aviso, player ja tem as caixas") return end -- Roda alguma animacao frozen(thePlayer, 3000) -- Seta a quantidade de caixas pra 10 aBoxes = 3 -- Gera uma rota aleatoria setTimer(function() rota() end, 3000, 1) end -- Se o marker existe e eh o destino do player if target ~= nil and source == target then del() frozen(thePlayer, 3000) -- Paga o player setElementData(localPlayer, "dinheiro", math.random(100, 200)) -- Faz alguma animacao e para o carro -- Diminui uma caixa aBoxes = aBoxes - 1 -- Informa a quantidade de caixas outputChatBox("Caixas restantes: "..aBoxes) if aBoxes > 0 then -- Gera uma rota aleatoria setTimer(function() rota() end, 3000, 1) elseif aBoxes == 0 then outputChatBox("Retorne ao estoque para pegar mais caixas.") end end end end) Edited March 13, 2020 by MainSCR 1 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