Mopped Posted June 29, 2019 Share Posted June 29, 2019 (edited) Eu preciso de ajuda para terminar de desenvolver meu painel, precisava de saber como que eu coloco um dxdrawloading/dxprogressbar quando eu clico em um botão e aí começa rodar um tempo, quando a progressbar e o tempo terminar, acontece a ação que desejo (triggerServerEvent("comprarMaconha", resourceRoot) Meu código que creio que deve ser onde coloca o código da progressbar: (client side) function onClientClick(button, state) if isEventHandlerAdded("onClientRender", root, onClientRender) and isEventHandlerAdded("onClientClick", root, onClientClick) then if button == "left" and state == "up" then if isMouseInPosition(x*730, y*570, x*151, y*33) then triggerServerEvent("comprarCocaina", resourceRoot) elseif isMouseInPosition(x*489, y*570, x*151, y*33) then triggerServerEvent("comprarMaconha", resourceRoot) elseif isMouseInPosition(x*843, y*168, x*918, y*234) then showCursor(false) removeEventHandler("onClientRender", root, onClientRender) removeEventHandler("onClientClick", root, onClientClick) end end end end Print de como mais ou menos tá ficando o projeto: Agradeço previamente a ajuda já!! Edited June 29, 2019 by Mopped Link to comment
Other Languages Moderators Lord Henry Posted June 29, 2019 Other Languages Moderators Share Posted June 29, 2019 (edited) Vai precisar da função útil dxDrawProgressBar e um interpolateBetween. function onClientClick(button, state) if isEventHandlerAdded("onClientRender", root, onClientRender) and isEventHandlerAdded("onClientClick", root, onClientClick) then if button == "left" and state == "up" then if isMouseInPosition(x*730, y*570, x*151, y*33) then triggerServerEvent("comprarCocaina", resourceRoot) elseif isMouseInPosition(x*489, y*570, x*151, y*33) then start = getTickCount() -- Salva o momento atual para usar no cálculo do progresso da interpolação. addEventHandler("onClientRender", root, interpolationRender) -- Inicia a interpolação. elseif isMouseInPosition(x*843, y*168, x*918, y*234) then showCursor(false) removeEventHandler("onClientRender", root, onClientRender) removeEventHandler("onClientClick", root, onClientClick) end end end end -- Está faltando evento ativador da função acima. E você não deve usar nomes de eventos como nome das funções. function interpolationRender() local now = getTickCount() -- A cada frame, pega o momento atual. local endTime = start + 3000 -- Duração dessa interpolação: 3 segundos. (momento do final = início + 3 segundos) local elapsedTime = now - start -- Tempo que já passou neste frame: momento de agora - momento que começou local duration = endTime - start -- Duração total da interpolação: momento do final - momento que começou local progress = elapsedTime / duration -- Progresso atual da interpolação: tempo que já passou dividido pela duração (pois o progresso é de 0 até 1) if (progress > 1) then -- Quando concluir a barra, para de renderizar ela e ativa o trigger. removeEventHandler ("onClientRender", root, interpolationRender) start = nil return triggerServerEvent ("comprarMaconha", resourceRoot) end local barra = interpolateBetween (0, 0, 0, 100, 0, 0, progress, "Linear") -- barra vai de 0 até 100 dependendo do progresso atual. dxDrawProgressBar (10, 10, 200, 200, barra, tocolor (250, 50, 50, 255), tocolor (255, 255, 255, 255)) -- Barra aleatória, arrume a posição e tamanho dela para o seu script. end local unlerp = function(from,to,lerp) return (lerp-from)/(to-from) end function dxDrawProgressBar( startX, startY, width, height, progress, color, backColor ) -- Função útil. local progress = math.max( 0, (math.min( 100, progress) ) ) local wBar = width*.18 for i = 0, 4 do --back local startPos = (wBar*i + (width*.025)*i) + startX dxDrawRectangle( startPos, startY, wBar, height, backColor ) --progress local eInterval = (i*20) local localProgress = math.min( 1, unlerp( eInterval, eInterval + 20, progress ) ) if localProgress > 0 then dxDrawRectangle( startPos, startY, wBar*localProgress, height, color ) end end end Edited June 29, 2019 by Lord Henry 1 Link to comment
Mopped Posted June 29, 2019 Author Share Posted June 29, 2019 (edited) Tá dando erro na linha 71 agora, não sei nem pq... a linha 71 é a que eu to usando pra definir se o usuário clicar, acontecer/remover o evento. Minha linha 71 em código tá assim: Esse erro acontece quando eu coloquei a function do InterpolationRender... Se puder me ajudar nisso, eu ficarei muito grato! Aí eu já vou aprendendo com os códigos Obrigado! Edited June 29, 2019 by Mopped Link to comment
Eficiencia Posted June 29, 2019 Share Posted June 29, 2019 bom esse erro muitas vezes acontece por causa do forum tente reescrever a linha problematica Link to comment
Other Languages Moderators Lord Henry Posted June 29, 2019 Other Languages Moderators Share Posted June 29, 2019 (edited) Deve ter aparecido um símbolo invisível quando vc copiou do fórum. Delete e reescreva a linha 70. Se o problema persistir na linha 71, faça o mesmo na linha 71. Edited June 29, 2019 by Lord Henry 1 Link to comment
Mopped Posted June 30, 2019 Author Share Posted June 30, 2019 (edited) Foi! O problema era o fórum mesmo... Reescrevi todas as linhas de código e deu certo. Muito obrigado, Lord! Só tenho mais uma pergunta, a minha progressbar ficou assim: Eu tenho que alterar onde para que ela fique mais ou menos nesse estilo?!: É na parte do interpolatebetween ou na parte do DxProgressBar mesmo? Edited June 30, 2019 by Mopped Link to comment
ninjaop777 Posted January 3, 2021 Share Posted January 3, 2021 (edited) Em 29/06/2019 às 14:16, Mopped disse: Agradeço previamente a ajuda tem como alguem me ajudar me dando esse mod to precisando muito pfv se alguem tiver ai pode me ajudar me passando esse mod mano Edited January 3, 2021 by ninjaop777 Link to comment
Otavio Posted January 3, 2021 Share Posted January 3, 2021 @ninjaop777Aqui e discussao para a producao de script... Link to comment
Recommended Posts