MrDante Posted February 28, 2016 Share Posted February 28, 2016 (edited) 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 March 1, 2016 by Guest Link to comment
n3wage Posted February 29, 2016 Share Posted February 29, 2016 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
MrDante Posted February 29, 2016 Author Share Posted February 29, 2016 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
n3wage Posted February 29, 2016 Share Posted February 29, 2016 [...] 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
FelipeMallmann Posted February 29, 2016 Share Posted February 29, 2016 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
n3wage Posted February 29, 2016 Share Posted February 29, 2016 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
MrDante Posted February 29, 2016 Author Share Posted February 29, 2016 [...] 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
FelipeMallmann Posted March 1, 2016 Share Posted March 1, 2016 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
MrDante Posted March 1, 2016 Author Share Posted March 1, 2016 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now