Recommended Posts

Bom dia,

 

Estou precisando de uma ajuda num sistema que to precisando de uma ajuda mais to fazendo errado pq nao sabia como fazer. Que é aparecer um icone mostrando que o jogador ta com o ping acima do limite. a imagem deu certo so que nao consigo destruir quando fica abaixo disso

function teste()
    if getPlayerPing(getLocalPlayer()) > 180 then
	    imagensnet = guiCreateStaticImage(0.85, 0.85, 0.03, 0.05, "net.png", true)
		setElementData(getLocalPlayer(),"pingaltyo",true)
		outputChatBox("alto ping")
	else
	if getElementData(getLocalPlayer(),"pingaltyo") then 
	  if isElement(imagensnet) then 
			destroyElement(imagensnet)
		end
    end 
end	
end
addEventHandler("onClientRender", getRootElement(), teste)

 

Share this post


Link to post
Posted (edited)

Há um erro de lógica no seu código. Sempre que a latência do jogador estiver acima de 100, uma nova imagem será criada. Este é o porquê da imagem não estar sendo destruída. Você deve verificar se o jogador está com a imagem na tela. Fiz um código rápido, só pra mostrar.

local highPing = false

setTimer(
    function( )
        if ( not highPing ) then -- // Verificar se ele não esta na tela de "ping alto". Não tem mensagem? Então passemos para a linha de baixo.
            if ( getPlayerPing( localPlayer ) > 100 ) then -- // O ping é maior que 100? Se sim, vamos avisar ao jogador, mostrando uma mensagem na tela.
                highPing = true -- // Salvar a informação de que ele está com uma mensagem na tela.
                addEventHandler( "onClientRender", root, show, true, "low-128" ) -- // Adicionar o evento, para que mostre a mensagem.
            end
        else -- // Se o jogador estiver na tela, então:
            if ( getPlayerPing( localPlayer ) <= 100 ) then -- // O ping dele é menor ou igual a 100? Se sim, podemos retirar a mensagem da tela.
                highPing = false -- // Salvar a informação que retiramos a mensagem da tela do jogador. O ping dele já se normalizou.
                removeEventHandler( "onClientRender", root, show ) -- // Remover o evento, nenhuma mensagem está sendo mostrada mais.
            end
        end
    end,
666, 0 )

function show()
    local screen = Vector2( guiGetScreenSize( ) )

    dxDrawRectangle( 0, 0, screen.x, screen.y, tocolor( 32, 32, 32, 64 ), false )
    dxDrawText( "Sua conexão está ruim", 0, 0, screen.x, screen.y, tocolor( 255, 255, 255, 255 ), 1.80, "clear", "center", "center" )
end

 

Edited by asrzkj

Share this post


Link to post
Posted (edited)

É mais fácil vc simplesmente fazer a imagem com dxDrawImage. Assim, ela só aparece nos frames que o jogador estiver com mais de 180 de ping.

local x, y = guiGetScreenSize()

function teste ()
	if (getPlayerPing (localPlayer) > 180) then
		dxDrawImage (x*0.85, y*0.85, x*0.03, y*0.05, "net.png")
	end
end
addEventHandler ("onClientRender", root, teste)

 

Edited by Lord Henry

Share this post


Link to post

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.