Jump to content

Script venda de drogas com painel [Ajuda dxprogressbar]


Recommended Posts

Posted (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:

lDhPWiD.png

Agradeço previamente a ajuda já!!

Edited by Mopped
  • Other Languages Moderators
Posted (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 by Lord Henry
  • Thanks 1
Posted (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.WJfbpJu.png

Minha linha 71 em código tá assim:

7xAn60e.png

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 by Mopped
  • Other Languages Moderators
Posted (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 by Lord Henry
  • Thanks 1
Posted (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:
MBda6b1.png

 

Eu tenho que alterar onde para que ela fique mais ou menos nesse estilo?!:
Dx_2.PNG

É na parte do interpolatebetween ou na parte do DxProgressBar mesmo? 

Edited by Mopped
  • 1 year later...
Posted (edited)
Em 29/06/2019 às 14:16, Mopped disse:

 

lDhPWiD.png

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 by ninjaop777
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...