Jump to content

[ RESOLVIDO ] localPlayer


Recommended Posts

Galera, estou com um problema, é o seguinte, eu quero que quando o player digita tal comando, apareça em dx o nome dele e o o que ele fez, só que, tem um problema, se o player digitar tal comando, na tela de outros jogadores aparece o nome do jogador

Exemplo, eu executei o comando, na minha tela: MrDante limpou o chat

na tela de outros players, vamos chamar o player de JogadorOne: JogadorOne limpou o chat

o problema é, só existe localPlayer, nem com loop funciona, pois aparece o nome de todos os jogadores..

alguem sabe alguma forma de aparecer so de quem executar este comando?

Client

  
textAlpha = 255 
posone = 700 
font = "bankgothic" 
name =  getPlayerName( localPlayer ):gsub('#%x%x%x%x%x%x', '') 
  
function dxchat() 
        dxDrawRectangle(168, 203, 600, 62, tocolor(0, 0, 0, 109), false) 
        dxDrawBorderedText(""..name.." Limpou o Chat", posone, 215, 197, 383, tocolor(255, 255, 255, textAlpha),1.00, font) 
    end 
  
     
function abrirchat() 
addEventHandler ("onClientRender", root, dxchat) 
    
    setTimer(function() 
        removeEventHandler ("onClientRender", root, dxchat) 
    end, 4000, 1 ) 
  
end 
addEvent ("limparchat", true) 
addEventHandler ("limparchat", root, abrirchat) 

Server

function clearChat(player, cmd) 
    local accountname = getAccountName(getPlayerAccount(player)) 
    if ( hasObjectPermissionTo ( player, "command.mute", true ) ) then 
    triggerClientEvent(root, "limparchat", root) 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    outputChatBox(" ") 
    end 
end 
addCommandHandler("chat", clearChat) 

Edited by Guest
Link to comment

Basta você passar o nick (ou o jogador) como argumento na função triggerClientEvent, Assim você terá o nick de quem limpou o chat no lado do cliente.

-- server 
triggerClientEvent(root, "limparchat", root, getPlayerName( player ) ) 
  
-- client 
function abrirchat( nick_de_quem_limpou ) 
    name = nick_de_quem_limpou; 
  
    -- continuação da função 

Com esse código a variavel global name vai ser equivalente ao nick do jogador que limpou o chat.

Outra coisa, vi que você repetiu varias vezes a função outputChatBox para "limpar" o chat, Você pode usar um loop para fazer isso mais facilmente:

for _ = 1, 20 do -- 20 = numero de vezes que a função sera executada 
    outputChatBox ( " ", root ); 
end 

Link to comment
Basta você passar o nick (ou o jogador) como argumento na função triggerClientEvent, Assim você terá o nick de quem limpou o chat no lado do cliente.
-- server 
triggerClientEvent(root, "limparchat", root, getPlayerName( player ) ) 
  
-- client 
function abrirchat( nick_de_quem_limpou ) 
    name = nick_de_quem_limpou; 
  
    -- continuação da função 

Com esse código a variavel global name vai ser equivalente ao nick do jogador que limpou o chat.

Outra coisa, vi que você repetiu varias vezes a função outputChatBox para "limpar" o chat, Você pode usar um loop para fazer isso mais facilmente:

for _ = 1, 20 do -- 20 = numero de vezes que a função sera executada 
    outputChatBox ( " ", root ); 
end 

Interessante, ajudou muito ;), mas assim, eu não entendi direito esse name = nick_de_quem_limpou;, ele serve para que? eu usei isso e deu erro global :(

Link to comment
[...] eu não entendi direito esse name = nick_de_quem_limpou;, ele serve para que? eu usei isso e deu erro global :(

nick_de_quem_limpou vai ser o nick do jogador que limpou o chat, Porem essa variavel só existe na função abrirchat (porque passamos ela via triggerClientEvent) então definimos a variavel global name como sendo igual a variavel nick_de_quem_limpou, Assim teremos o nick fora da função abrirchat, e ai podemos usar ele no dxDrawText.

function dxchat() 
    dxDrawRectangle(168, 203, 600, 62, tocolor(0, 0, 0, 109), false) 
    dxDrawBorderedText(""..name.." Limpou o Chat", posone, 215, 197, 383, tocolor(255, 255, 255, textAlpha),1.00, font) 
end 
  
function abrirchat(nick_de_quem_limpou) 
    name = nick_de_quem_limpou; 
    addEventHandler ("onClientRender", root, dxchat) 
    
    setTimer(function() 
        removeEventHandler ("onClientRender", root, dxchat) 
    end, 4000, 1 ) 
end 
addEvent ("limparchat", true) 
addEventHandler ("limparchat", root, abrirchat) 

Link to comment

Desculpa me meter no topico, mas tava lendo e me surgiu uma duvida.

n3wage, no momento que você passa o nick do player como parâmetro para o lado cliente

triggerClientEvent(root, "limparchat", root, getPlayerName( player ) ) 

Por que ele recebe esse parâmetro na função abrirchat? Eu nao poderia escolher em qual funçao pegar esse parâmetro?

Link to comment
Desculpa me meter no topico, mas tava lendo e me surgiu uma duvida.

n3wage, no momento que você passa o nick do player como parâmetro para o lado cliente

triggerClientEvent(root, "limparchat", root, getPlayerName( player ) ) 

Por que ele recebe esse parâmetro na função abrirchat? Eu nao poderia escolher em qual funçao pegar esse parâmetro?

Você "escolhe" a função quando adiciona o evento:

addEventHandler ("limparchat", root, abrirchat) 

Se ao invés de abrirchat tivéssemos outra função ali essa outra função que iria receber os parâmetros (Também podemos fazer duas (ou mais) funções receberem os parâmetros (usando outra vez a função addEventHandler)).

Link to comment
[...] eu não entendi direito esse name = nick_de_quem_limpou;, ele serve para que? eu usei isso e deu erro global :(

nick_de_quem_limpou vai ser o nick do jogador que limpou o chat, Porem essa variavel só existe na função abrirchat (porque passamos ela via triggerClientEvent) então definimos a variavel global name como sendo igual a variavel nick_de_quem_limpou, Assim teremos o nick fora da função abrirchat, e ai podemos usar ele no dxDrawText.

function dxchat() 
    dxDrawRectangle(168, 203, 600, 62, tocolor(0, 0, 0, 109), false) 
    dxDrawBorderedText(""..name.." Limpou o Chat", posone, 215, 197, 383, tocolor(255, 255, 255, textAlpha),1.00, font) 
end 
  
function abrirchat(nick_de_quem_limpou) 
    name = nick_de_quem_limpou; 
    addEventHandler ("onClientRender", root, dxchat) 
    
    setTimer(function() 
        removeEventHandler ("onClientRender", root, dxchat) 
    end, 4000, 1 ) 
end 
addEvent ("limparchat", true) 
addEventHandler ("limparchat", root, abrirchat) 

Agr vem outro problema, eu coloquei no name uma string pra retirar os hexadecimal do nome, mas agr aparece o hexadecimal :(

Link to comment

Talvez isso te ajude a tirar o hexadecimal do nick dos players.

Peguei de resource anticolorcode feito pelo Sidhkeer.

  
function deletecc() 
    for k, v in ipairs (getElementsByType("player")) do 
        local name = getPlayerName(v) 
            if (string.find(name,"#%x%x%x%x%x%x")) then 
                local name = string.gsub(name,"#%x%x%x%x%x%x","") 
                setPlayerName(v,name) 
                cancelEvent() 
            end 
    end 
end 
addEventHandler("onResourceStart",getResourceRootElement(getThisResource()),deletecc) 
  
function removeCC(oldNick,newNickname) 
    local name = getPlayerName(source) 
    if newNickname then 
        name = newNickname 
    end 
    if (string.find(name,"#%x%x%x%x%x%x")) then 
        local name = string.gsub(name,"#%x%x%x%x%x%x","") 
        setPlayerName(source,name) 
            if (newNickname) then 
                cancelEvent() 
            end 
    end  
end 
addEventHandler("onPlayerJoin",getRootElement(),removeCC) 
addEventHandler("onPlayerChangeNick",getRootElement(),removeCC) 
  

Link to comment
Talvez isso te ajude a tirar o hexadecimal do nick dos players.

Peguei de resource anticolorcode feito pelo Sidhkeer.

  
function deletecc() 
    for k, v in ipairs (getElementsByType("player")) do 
        local name = getPlayerName(v) 
            if (string.find(name,"#%x%x%x%x%x%x")) then 
                local name = string.gsub(name,"#%x%x%x%x%x%x","") 
                setPlayerName(v,name) 
                cancelEvent() 
            end 
    end 
end 
addEventHandler("onResourceStart",getResourceRootElement(getThisResource()),deletecc) 
  
function removeCC(oldNick,newNickname) 
    local name = getPlayerName(source) 
    if newNickname then 
        name = newNickname 
    end 
    if (string.find(name,"#%x%x%x%x%x%x")) then 
        local name = string.gsub(name,"#%x%x%x%x%x%x","") 
        setPlayerName(source,name) 
            if (newNickname) then 
                cancelEvent() 
            end 
    end  
end 
addEventHandler("onPlayerJoin",getRootElement(),removeCC) 
addEventHandler("onPlayerChangeNick",getRootElement(),removeCC) 
  

Já resolvi aqui, mas muito obrigado ;)

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