Jump to content

[AJUDA]DxDrawText


Recommended Posts

Então, estou fazendo uma HUD cuja tem verificação de data, estou fazendo da seguinte forma:

function hud ()
	local job = getElementData (localPlayer, "Emprego" ) or false

	if job == "Mecanico" then
	setElementData (localPlayer, "Profissão", "Mecanico")
	elseif job == "Petroleiro" then
	setElementData (localPlayer, "Profissão", "Petroleiro")
	elseif job == "Motorista de Uber" then
	setElementData (localPlayer, "Profissão", "Motorista de Uber")
	elseif job == "Motorista de Onibus" then
	setElementData (localPlayer, "Profissão", "Motorista de Ônibus" )
	elseif job == "Entregador de Jornal" then
	setElementData (localPlayer, "Profissão", "Entregador de Jornal")
	elseif job == "Piloto de Aviao" then
	setElementData (localPlayer, "Profissão", "Piloto de Avião")
	elseif job == "PizzaBoy" then
	setElementData (localPlayer, "Profissão", "PizzaBoy")
	elseif job == "Policial" then
	setElementData (localPlayer, "Profissão", "Policial")
	elseif job == "Transportador de Drogas" then
	setElementData (localPlayer, "Profissão", "Transportador de Drogas")
	elseif job == false then
	setElementData (localPlayer, "Profissão", "Desempregado")
	end
  
	dxDrawText(""..job"", (screenW * 0.8906) - 1, (screenH * 0.1000) - 1, (screenW * 0.9922) - 1, (screenH * 0.1417) - 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_CicleSemi, "left", "center", false, false, false, false, false)
end

Mas ai o debugscript está acusando que "job" é um valor boleano, como resolvo isso?

 

Link to comment
  • Other Languages Moderators

Troque

dxDrawText(""..job"", (screenW * 0.8906) - 1, (screenH * 0.1000) - 1, (screenW * 0.9922) - 1, (screenH * 0.1417) - 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_CicleSemi, "left", "center", false, false, false, false, false)

 

Por

dxDrawText(tostring( job ), (screenW * 0.8906) - 1, (screenH * 0.1000) - 1, (screenW * 0.9922) - 1, (screenH * 0.1417) - 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_CicleSemi, "left", "center", false, false, false, false, false)

 

Link to comment

setElementData consome processamento e banda - para sincronizar entre os lados. E colocar dentro do "onClientRender" além de desnecessário vai ser péssimo ao servidor. Imagine 200 jogadores no seu server, executando isso ao mesmo tempo.

Evite usar esse setElementData na renderização, você nem vai precisar fazer dessa forma pra manter a data do jogador atualizada, basta setar quando entrar/sair de um emprego, e no "onClientRender" você só vai usar o getElementData.

Link to comment
2 minutes ago, DNL291 said:

setElementData consome processamento e banda - para sincronizar entre os lados. E colocar dentro do "onClientRender" além de desnecessário vai ser péssimo ao servidor. Imagine 200 jogadores no seu server, executando isso ao mesmo tempo.

Evite usar esse setElementData na renderização, você nem vai precisar fazer dessa forma pra manter a data do jogador atualizada, basta setar quando entrar/sair de um emprego, e no "onClientRender" você só vai usar o getElementData.

Então pelo o que eu entendi, se eu fizer desta maneira, o servidor vai estar continuamente verificando data de player em player, correto? Se sim, na prática, como eu deveria fazer para não acontecer esse "sobrecarregamenro"?

Link to comment

Para otimizar, é só setar esse element-data fora desse evento e quando for realmente necessário atualizar, ou seja quando trocar de emprego.

Você precisa mesmo desses 2 elements-data? ("Profissão" e "Emprego") se você abrir mão de um já é uma otimização. 

Setando os dados, eu faria assim:

local jobNames = {
	["Motorista de Onibus"] = "Motorista de Ônibus", ["Piloto de Aviao"] = "Piloto de Avião"
}

local emprego = getElementData (localPlayer, "Emprego" ) or "Desempregado"

if jobNames[emprego] then
	emprego = jobNames[emprego]	
end
setElementData (localPlayer, "Profissão", emprego)

Se você continuar com o element-data "Emprego", então você pode setar isso dentro do evento onElementDataChange > "Emprego".

Se não, basta usar o setElementData em "Profissão"; Quando o jogador sair de um trabalho seta "Desempregado", quando entrar em um novo seta a profissão correspondente. Vai depender de como o seu sistema de empregos está programado.

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...