Jump to content

Mudar mensagem de DxDraw para TODOS os jogadores


Recommended Posts

Fiz um sistema aonde o jogador começa a trabalhar no marker, e ele tem uma mensagem em DxText dizendo quem está trabalhando, no caso "Ninguém" e quando alguém começa a trabalhar no marker, ele muda a msg de "Ninguém" para o nome do jogador, a questão é que o Texto só muda pro jogador que está trabalhando, pros outros jogadores continua "Ninguém" ao invés de aparecer o nome do player. Como faço pra alterar a msg pra todos ao invés de apenas 1 ?

Parte do texto lado do cliente

function Texto()
Nome1 = getElementData(localPlayer, "TrabalhandoMarker1") or "#FF0000Ninguém"
    local x,y,z = getElementPosition(localPlayer)
	local mx, my, mz = getElementPosition(markerplantar1)
    local distance = getDistanceBetweenPoints3D(mx, my, mz,x,y,z)
    if distance < 20 then
        local sx,sy =  getScreenFromWorldPosition(mx, my, mz)
        if sx and sy then
            local coords = {sx,sy}
            if coords[1] and coords[2] then
            dxDrawText("Jogador(a) Trabalhando ➤#00FFFF "..Nome1, coords[1], coords[2]-175, coords[1], coords[2]-175, tocolor(255,255,255,255), 1, "sans", "center", "center", false, false, false, true)
			else getElementData(localPlayer, "segurandoDroga") == "Sim" then
            dxDrawText("Entregue seus recursos antes de colher de novo!", coords[1], coords[2], coords[1], coords[2], tocolor(255,0,0,255), 2, "sans", "center", "center", false, false, false, false)
			end
        end
    end
end
addEventHandler("onClientRender", getRootElement(), Texto)

Parte do server que muda o ElementData para o nome do jogador
 

if isElementWithinMarker(source, markerplantar1) then
setElementData(source, "TrabalhandoMarker1", getPlayerName(source))

Como é o marker :
spacer.png

Quando começo a trabalhar ele muda de "Ninguém" pro meu nick :
spacer.png

Só que só muda pra quem está trabalhando, pros outros jogadores continua "Ninguém" :
spacer.png

Link to post

Do lado do servidor você deve chamar um evento para todos os clientes assim que alguém começar a trabalhar, por exemplo:

não testei

server-side 

Quote

local trabalhadorAtual

addEvent('toggleTrabalhador', true)
function toggleTrabalhador (player, bool) --Quando alguém do lado do client entrar em trabalho, chama essa função do servidor
	triggerClientEvent('toggleClientTrabalhador', player, player, bool)
	if bool then 
		trabalhadorAtual = player
	else
		trabalhadorAtual = nil
   	end
end
addEventHandler('toggleTrabalhador', root, toggleTrabalhador)

addEventHandler('onPlayerLogin', root, function() --Se alguém logar também carregará o jogador que está trabalhando pra ela
    if trabalhadorAtual then
	triggerClientEvent(source, 'toggleClientTrabalhador', source, trabalhadorAtual, true)
    end
end)

 

 

client-side

Quote

 


local Nome1 = "#FF0000Ninguém"

addEvent('toggleClientTrabalhador', true)
function toggleClientTrabalhador(player, bool)
    if bool then
    	Nome1 = getPlayerName(player)
    else
    	Nome1 = "#FF0000Ninguém"
    end
end
addEventHandler('toggleClientTrabalhador', root, toggleClientTrabalhador)

function trabalhar (bool) --Chamar essa função quando o player entrar/sair do serviço (bool = true para entrou e false para saiu do serviço)
	triggerServerEvent ('toggleTrabalhador', localPlayer, localPlayer, bool)
  
end
-------------------------------------------------------------------

function Texto()
    local x,y,z = getElementPosition(localPlayer)
	local mx, my, mz = getElementPosition(markerplantar1)
    local distance = getDistanceBetweenPoints3D(mx, my, mz,x,y,z)
    if distance < 20 then
        local sx,sy =  getScreenFromWorldPosition(mx, my, mz)
        if sx and sy then
            local coords = {sx,sy}
            if coords[1] and coords[2] then
            dxDrawText("Jogador(a) Trabalhando ➤#00FFFF "..Nome1, coords[1], coords[2]-175, coords[1], coords[2]-175, tocolor(255,255,255,255), 1, "sans", "center", "center", false, false, false, true)
			else getElementData(localPlayer, "segurandoDroga") == "Sim" then
            dxDrawText("Entregue seus recursos antes de colher de novo!", coords[1], coords[2], coords[1], coords[2], tocolor(255,0,0,255), 2, "sans", "center", "center", false, false, false, false)
			end
        end
    end
end
addEventHandler("onClientRender", getRootElement(), Texto)

 

Edited by Boechat
  • Thanks 1
Link to post

Então, utilizei o código e implementei ao script, a mensagem mostra, porém não está alterando para o nome do jogador, agora só fica "Ninguém"...

Link to post
5 hours ago, Boechat said:

Do lado do servidor você deve chamar um evento para todos os clientes assim que alguém começar a trabalhar, por exemplo:

não testei

server-side 

 

client-side

 

Consegui resolver mano, na real está perfeito. Tive apenas que  alterar a parte do server-side aonde está "player" troquei pra source, e consegui chamar a função de boa no restante do script, agora já aparece pra todos, muito obrigado, dei um like ae já. Adm já pode fechar o tópico.

Link to post
18 hours ago, Rakashy said:

Consegui resolver mano, na real está perfeito. Tive apenas que  alterar a parte do server-side aonde está "player" troquei pra source, e consegui chamar a função de boa no restante do script, agora já aparece pra todos, muito obrigado, dei um like ae já. Adm já pode fechar o tópico.

Então tá show kkkk mas só uma dica: tente evitar usar get e setElementData, principalmente dentro do evento onClientRender que chama a função milhares de vezes por minuto, são funções MUITO úteis mas já vi pessoas aqui no fórum dizendo que exige bastante do server.

  • Thanks 1
Link to post
6 hours ago, Boechat said:

Então tá show kkkk mas só uma dica: tente evitar usar get e setElementData, principalmente dentro do evento onClientRender que chama a função milhares de vezes por minuto, são funções MUITO úteis mas já vi pessoas aqui no fórum dizendo que exige bastante do server.

Sim, eu retirei essa parte do getElement, valeu ae mano, ajudou bastante

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.

×
×
  • Create New...