Jump to content

[Ajuda] dxDrawRectangle e dxDrawText


Recommended Posts

10 hours ago, Jonas^ said:

Como esta seu código? talvez um removeEventHandler resolve o problema.

Eu tentei isso, mas não está desaparecendo quando o jogador está na tela de login.

addEventHandler("onClientRender", root, 
function()
	local lvl = getElementData(localPlayer, "Level") or 1
	local exp = getElementData(localPlayer, "Exp") or 0
	local needexp = lvl * 1
	
	dxDrawRectangle(x*12, y*495, x*298, y*27, tocolor(0, 0, 0, 207), false) -- Nivel
    dxDrawRectangle(567*sW, 700*sH, -540*sW, 30*sH, tocolor(0, 51, 153)) 
	dxDrawRectangle(567*sW, 700*sH, -540*sW, 30*sH, tocolor(0, 51, 153))
	dxDrawText(string.format("%d", 100/(needexp/exp)).."%", 670*sW, 1350*sH, 400*sW, 80*sH, tocolor(0, 0, 0), 1.20, "default-bold", "center", "center")
	
end)
removeEventHandler("onClientConnect", getRootElement(), drawText)

 

Link to comment
1 hour ago, GodKraken said:

Eu tentei isso, mas não está desaparecendo quando o jogador está na tela de login.


addEventHandler("onClientRender", root, 
function()
	local lvl = getElementData(localPlayer, "Level") or 1
	local exp = getElementData(localPlayer, "Exp") or 0
	local needexp = lvl * 1
	
	dxDrawRectangle(x*12, y*495, x*298, y*27, tocolor(0, 0, 0, 207), false) -- Nivel
    dxDrawRectangle(567*sW, 700*sH, -540*sW, 30*sH, tocolor(0, 51, 153)) 
	dxDrawRectangle(567*sW, 700*sH, -540*sW, 30*sH, tocolor(0, 51, 153))
	dxDrawText(string.format("%d", 100/(needexp/exp)).."%", 670*sW, 1350*sH, 400*sW, 80*sH, tocolor(0, 0, 0), 1.20, "default-bold", "center", "center")
	
end)
removeEventHandler("onClientConnect", getRootElement(), drawText)

 

Na verdade eu não quero remover os dx, apenas esconde-los. Como posso fazer isso?

Obrigado desde já.

Link to comment
  • Other Languages Moderators

Então cara. É o seguinte:

Você não poderá remover o eventHandler dessa sua função enquanto não der um nome a ela. A função precisa ter um nome para poder ser chamada depois.

Exemplo de teste, use o comando /eae

function drawRender ()
	local lvl = getElementData(localPlayer, "Level") or 1
	local exp = getElementData(localPlayer, "Exp") or 0
	local needexp = lvl * 1
	
	dxDrawRectangle(x*12, y*495, x*298, y*27, tocolor(0, 0, 0, 207), false) -- Nivel
	dxDrawRectangle(567*sW, 700*sH, -540*sW, 30*sH, tocolor(0, 51, 153)) 
	dxDrawRectangle(567*sW, 700*sH, -540*sW, 30*sH, tocolor(0, 51, 153))
	dxDrawText(string.format("%d", 100/(needexp/exp)).."%", 670*sW, 1350*sH, 400*sW, 80*sH, tocolor(0, 0, 0), 1.20, "default-bold", "center", "center")
	
end
addEventHandler("onClientRender", root, drawRender)

function teste (cmd)
	removeEventHandler("onClientRender", root, drawRender)
end
addCommandHandler ("eae", teste)

 

Edited by Lord Henry
  • Thanks 1
Link to comment
1 hour ago, Lord Henry said:

Então cara. É o seguinte:

Você não poderá remover o eventHandler dessa sua função enquanto não der um nome a ela. A função precisa ter um nome para poder ser chamada depois.

Exemplo de teste, use o comando /eae


function drawRender ()
	local lvl = getElementData(localPlayer, "Level") or 1
	local exp = getElementData(localPlayer, "Exp") or 0
	local needexp = lvl * 1
	
	dxDrawRectangle(x*12, y*495, x*298, y*27, tocolor(0, 0, 0, 207), false) -- Nivel
	dxDrawRectangle(567*sW, 700*sH, -540*sW, 30*sH, tocolor(0, 51, 153)) 
	dxDrawRectangle(567*sW, 700*sH, -540*sW, 30*sH, tocolor(0, 51, 153))
	dxDrawText(string.format("%d", 100/(needexp/exp)).."%", 670*sW, 1350*sH, 400*sW, 80*sH, tocolor(0, 0, 0), 1.20, "default-bold", "center", "center")
	
end
addEventHandler("onClientRender", root, drawRender)

function teste (cmd)
	removeEventHandler("onClientRender", root, drawRender)
end
addCommandHandler ("eae", teste)

 

Resolvi alguns dos meus problemas fazendo isso. Obrigado !!

function esconder()
	if isVisible then
		addEventHandler("onClientRender", root, drawRender)
	else
		removeEventHandler("onClientRender", root, drawRender)
	end
	isVisible = not isVisible
end
bindKey ("F11", "down", esconder)
bindKey ("F10", "down", esconder)
addCommandHandler( "hud", esconder )

Agora como eu posso esconder os elementos em causa (dxdraw) no login?

Sei que preciso esconder no onPlayerConnect e só mostrar depois do onPlayerLogin.

Link to comment
22 minutes ago, Lord Henry said:

dxDraw não se esconde. Apenas para de ser renderizado.

Se fosse CEGUI, dai sim vc poderia ocultar sem destruir.

Compreendi :)

E então como posso fazer para ele apenas ser renderizado depois do Onplayerlogin, não tem como também? 

Link to comment
2 hours ago, Lord Henry said:

Só criar uma função que é ativada com onPlayerLogin e dentro dela vc coloca o evento onClientRender da função do render.

Tipo assim?

addEventHandler( 'onPlayerLogin', root,
function drawRender ()
	local lvl = getElementData(localPlayer, "Level") or 1
	local exp = getElementData(localPlayer, "Exp") or 0
	local needexp = lvl * 1
	
	dxDrawRectangle(x*13, y*513, x*297, y*20, tocolor(0, 0, 0, 207), false) -- Nivel
    dxDrawRectangle(567*sW, 725*sH, -538*sW, 20*sH, tocolor(166, 166, 166)) 
	dxDrawRectangle(567*sW, 725*sH, -538*sW, 20*sH, tocolor(166, 166, 166))
	dxDrawText(string.format("%d", 100/(needexp/exp)).."%", 670*sW, 1392*sH, 400*sW, 80*sH, tocolor(0, 0, 0), 1, "default-bold", "center", "center")

end
addEventHandler("onClientRender", root, drawRender)
)

Deu o seguinte erro

'(' expected near 'drawRender'

 

Link to comment

onPlayerLogin é somente server-side, você deve fazer uma conexão client-server com trigger.

No server faça assim:

addEventHandler( "onPlayerLogin", root,
    function()
		triggerClientEvent (source, "startRender", source, true)
    end
)

E no client:

local startRender = false

function drawRender ()
	local lvl = getElementData(localPlayer, "Level") or 1
	local exp = getElementData(localPlayer, "Exp") or 0
	local needexp = lvl * 1
	dxDrawRectangle(x*12, y*495, x*298, y*27, tocolor(0, 0, 0, 207), false) -- Nivel
	dxDrawRectangle(567*sW, 700*sH, -540*sW, 30*sH, tocolor(0, 51, 153)) 
	dxDrawRectangle(567*sW, 700*sH, -540*sW, 30*sH, tocolor(0, 51, 153))
	dxDrawText(string.format("%d", 100/(needexp/exp)).."%", 670*sW, 1350*sH, 400*sW, 80*sH, tocolor(0, 0, 0), 1.20, "default-bold", "center", "center")
end
addEvent ("startRender", true)
addEventHandler("startRender", root, function (showRender)
	if (showRender == startRender) then 
		return 
	end
	startRender = showRender
	if showRender then
		addEventHandler("onClientRender", root, drawRender)
	else
		removeEventHandler("onClientRender", root, drawRender)
	end
end)

 

Edited by Jonas^
Correção.
  • Thanks 1
Link to comment
1 hour ago, Jonas^ said:

onPlayerLogin é somente server-side, você deve fazer uma conexão client-server com trigger.

No server faça assim:


addEventHandler( "onPlayerLogin", root,
    function()
		triggerClientEvent (source, "startRender", source, true)
    end
)

E no client:


local startRender = false

function drawRender ()
	local lvl = getElementData(localPlayer, "Level") or 1
	local exp = getElementData(localPlayer, "Exp") or 0
	local needexp = lvl * 1
	dxDrawRectangle(x*12, y*495, x*298, y*27, tocolor(0, 0, 0, 207), false) -- Nivel
	dxDrawRectangle(567*sW, 700*sH, -540*sW, 30*sH, tocolor(0, 51, 153)) 
	dxDrawRectangle(567*sW, 700*sH, -540*sW, 30*sH, tocolor(0, 51, 153))
	dxDrawText(string.format("%d", 100/(needexp/exp)).."%", 670*sW, 1350*sH, 400*sW, 80*sH, tocolor(0, 0, 0), 1.20, "default-bold", "center", "center")
end
addEvent ("startRender", true)
addEventHandler("startRender", root, function (showRender)
	if (showRender == startRender) then 
		return 
	end
	startRender = showRender
	if showRender then
		addEventHandler("onClientRender", root, drawRender)
	else
		removeEventHandler("onClientRender", root, drawRender)
	end
end)

 

Muito obrigado!!

Infelizmente coloquei tudo correto mas no server side está a dar um erro

unexpected symbol near ''

 

Link to comment
12 minutes ago, Jonas^ said:

Vou upar o código no pastebin, o fórum fica colocando uns caracteres extras nem sei porque.

Aqui esta:  https://pastebin.com/GTzMVrFR

Se continuar o erro me avise, poste a linha do erro também aqui.

addEventHandler( "onPlayerLogin", root,
    function()
		triggerClientEvent (source, "startRender", source, true)
    end
) <---- Linha do erro

O erro é no server side nessa exata linha :) 

Link to comment
9 hours ago, Jonas^ said:

De nada mano.

Peço desculpa por estar a voltar a um problema, mas eu adicionei +2 linhas um problema parecido apareceu.

function drawRender ()
	local lvl = getElementData(localPlayer, "Level") or 1
	local exp = getElementData(localPlayer, "Exp") or 0
	local needexp = lvl * 1
	dxDrawRectangle(x*13, y*513, x*297, y*20, tocolor(0, 0, 0, 207), false) -- Nivel
	dxDrawRectangle(567*sW, 725*sH, -538*sW, 20*sH, tocolor(166, 166, 166)) <---- LINHA DO ERRO
	dxDrawRectangle(567*sW, 725*sH, -538*sW, 20*sH, tocolor(166, 166, 166))
	dxDrawRectangle(567*sW, 725*sH, -540*sW/needexp*(exp), 20*sH, tocolor(217, 217, 217))
    dxDrawText("Nível: "..lvl, 210*sW, 1403*sH, 400*sW, 70*sH, tocolor(0, 0, 0), 1.00, "default-bold", "center", "center")
	dxDrawText(string.format("%d", 100/(needexp/exp)).."%", 670*sW, 1392*sH, 400*sW, 80*sH, tocolor(0, 0, 0), 1, "default-bold", "center", "center")
end
addEvent ("startRender", true)
addEventHandler("startRender", root, function (showRender)
	if (showRender == startRender) then 
		return 
	end
	startRender = showRender
	if showRender then
		addEventHandler("onClientRender", root, drawRender)
	else
		removeEventHandler("onClientRender", root, drawRender)
	end
end)

Marquei a linha do seguinte erro.

')' expected near '

 

Link to comment
  • Other Languages Moderators
function drawRender( )
	local lvl = getElementData( localPlayer, "Level" ) or 1;
	local exp = getElementData( localPlayer, "Exp" ) or 0;
	local needexp = lvl * 1;
	dxDrawRectangle( x * 13, y * 513, x * 297, y * 20, tocolor( 0, 0, 0, 207 ), false );
	dxDrawRectangle( 567 * sW, 725 * sH, -538 * sW, 20 * sH, tocolor( 166, 166, 166, 255 ), false );
	dxDrawRectangle( 567 * sW, 725 * sH, -538 * sW, 20 * sH, tocolor( 166, 166, 166, 255 ), false );
	dxDrawRectangle( 567 * sW, 725 * sH, -540 * sW / needexp * ( exp ), 20 * sH, tocolor( 217, 217, 217, 255 ), false );
    dxDrawText( "Nível: " .. tostring( lvl ), 210 * sW, 1403 * sH, 400 * sW, 70 * sH, tocolor( 0, 0, 0, 255 ), 1.0, "default-bold", "center", "center" );
	dxDrawText( string.format( "%d", 100 / ( needexp / exp ) ) .. "%", 670 * sW, 1392 * sH, 400 * sW, 80 * sH, tocolor( 0, 0, 0, 255 ), 1.0, "default-bold", "center", "center" );
end

addEvent( "startRender", true );
addEventHandler( "startRender", root, function( showRender )
	if ( showRender == startRender ) then 
		return false;
	end
	
	startRender = showRender;
	
	if ( showRender ) then
		addEventHandler( "onClientRender", root, drawRender );
	else
		removeEventHandler( "onClientRender", root, drawRender );
	end
end );

 

Edited by asrzk
Link to comment
14 minutes ago, asrzk said:

function drawRender( )
	local lvl = getElementData( localPlayer, "Level" ) or 1;
	local exp = getElementData( localPlayer, "Exp" ) or 0;
	local needexp = lvl * 1;
	dxDrawRectangle( x * 13, y * 513, x * 297, y * 20, tocolor( 0, 0, 0, 207 ), false );
	dxDrawRectangle( 567 * sW, 725 * sH, -538 * sW, 20 * sH, tocolor( 166, 166, 166, 255 ), false );
	dxDrawRectangle( 567 * sW, 725 * sH, -538 * sW, 20 * sH, tocolor( 166, 166, 166, 255 ), false );
	dxDrawRectangle( 567 * sW, 725 * sH, -540 * sW / needexp * ( exp ), 20 * sH, tocolor( 217, 217, 217, 255 ), false );
    dxDrawText( "Nível: " .. tostring( lvl ), 210 * sW, 1403 * sH, 400 * sW, 70 * sH, tocolor( 0, 0, 0, 255 ), 1.0, "default-bold", "center", "center" );
	dxDrawText( string.format( "%d", 100 / ( needexp / exp ) ) .. "%", 670 * sW, 1392 * sH, 400 * sW, 80 * sH, tocolor( 0, 0, 0, 255 ), 1.0, "default-bold", "center", "center" );
end

addEvent( "startRender", true );
addEventHandler( "startRender", root, function( showRender )
	if ( showRender == startRender ) then 
		return false;
	end
	
	startRender = showRender;
	
	if ( showRender ) then
		addEventHandler( "onClientRender", root, drawRender );
	else
		removeEventHandler( "onClientRender", root, drawRender );
	end
end );

 

Foi eficaz para resolver os erros, já não aparece mas não está funcionando agora.

Link to comment

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.
×
×
  • Create New...