Jump to content

Script venda de drogas com painel [Ajuda dxprogressbar]


Recommended Posts

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
Link to comment
  • Other Languages Moderators

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
Link to comment

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
Link to comment
  • Other Languages Moderators

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
Link to comment

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
Link to comment
  • 1 year later...
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

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