CoelhO Posted January 9, 2019 Share Posted January 9, 2019 Boa noite, queria saber como faço para criar 1 outputChatBox que não possa usar códigos HAX e se caso o player usar quero que não apareça o código e nem mude a cor!? Link to comment
DNL291 Posted January 9, 2019 Share Posted January 9, 2019 Código Hex você quis dizer. É possível remover esses códigos com a função string.gsub, ex: local mystring = "#ff0000hello world" print( mystring ) -- saída: #ff0000hello world mystring = mystring:gsub("#%x%x%x%x%x%x", "") -- removendo os códigos hex print( mystring ) -- saída: hello world Link to comment
CoelhO Posted January 9, 2019 Author Share Posted January 9, 2019 (edited) 26 minutes ago, DNL291 said: Código Hex você quis dizer. É possível remover esses códigos com a função string.gsub, ex: local mystring = "#ff0000hello world" print( mystring ) -- saída: #ff0000hello world mystring = mystring:gsub("#%x%x%x%x%x%x", "") -- removendo os códigos hex print( mystring ) -- saída: hello world Somente isso e já está pronto o script? Edited January 9, 2019 by CoelhO Link to comment
DNL291 Posted January 9, 2019 Share Posted January 9, 2019 (edited) Qual script? Esse foi um exemplo que dei pra remover código em Hex. Pra aplicar na mensagem do outputChatBox é só usar essa função. Vai depender do que você quer exatamente. Aqui por exemplo irá remover esses códigos da mensagem no chat e no nick: addEventHandler( "onPlayerChat", root, function(msg, type) if type == 0 then cancelEvent() msg = msg:gsub('#%x%x%x%x%x%x', '') outputChatBox( getPlayerName(source):gsub('#%x%x%x%x%x%x', '') .. ": #FFFFFF" .. msg, root, 255, 255, 255, true ) end end ) Edited January 9, 2019 by DNL291 Link to comment
CoelhO Posted January 9, 2019 Author Share Posted January 9, 2019 16 minutes ago, DNL291 said: Qual script? Esse foi um exemplo que dei pra remover código em Hex. Pra aplicar na mensagem do outputChatBox é só usar essa função. Vai depender do que você quer exatamente. Aqui por exemplo irá remover esses códigos da mensagem no chat e no nick: addEventHandler( "onPlayerChat", root, function(msg, type) if type == 0 then cancelEvent() msg = msg:gsub('#%x%x%x%x%x%x', '') outputChatBox( getPlayerName(source):gsub('#%x%x%x%x%x%x', '') .. ": #FFFFFF" .. msg, root, 255, 255, 255, true ) end end ) Estou querendo fazer isso nas tags... Para deixar o chat meio que igual o samp, sem nenhuma cor em alguns cargos específicos Link to comment
[M]ister Posted January 9, 2019 Share Posted January 9, 2019 1 hour ago, DNL291 said: Código Hex você quis dizer. É possível remover esses códigos com a função string.gsub, ex: local mystring = "#ff0000hello world" print( mystring ) -- saída: #ff0000hello world mystring = mystring:gsub("#%x%x%x%x%x%x", "") -- removendo os códigos hex print( mystring ) -- saída: hello world Tem alguns espertinhos que tentam burlar essa única verificação utilizando códigos do tipo ##000000000000 com isso aconselharia a utilização de algo similar a isto: while(msg:find("#%x%x%x%x%x%x")) do msg = msg:gsub("#%x%x%x%x%x%x","") end Outro jeito simples seria alterar o 6º parâmetro da função outputChatBox para false, que então os códigos de cores não funcionarão (mas também não irá oculta-los). outputChatBox("texto",root,255,255,255,false) 1 Link to comment
DNL291 Posted January 9, 2019 Share Posted January 9, 2019 9 minutes ago, MaligNos said: Tem alguns espertinhos que tentam burlar essa única verificação utilizando códigos do tipo ##000000000000 com isso aconselharia a utilização de algo similar a isto: while(msg:find("#%x%x%x%x%x%x")) do msg = msg:gsub("#%x%x%x%x%x%x","") end Outro jeito simples seria alterar o 6º parâmetro da função outputChatBox para false, que então os códigos de cores não funcionarão (mas também não irá oculta-los). outputChatBox("texto",root,255,255,255,false) Eu lembro disso na época que ainda jogava, tinha gente que conseguia colocar cores nas mensagens. Então essa seria a forma ideal de remover cores Hex quando se trata de chat. Uma versão como função: function removeHex( s ) if type(s) == "string" then while(s:find("#%x%x%x%x%x%x")) do s = s:gsub("#%x%x%x%x%x%x","") end end return s or false end @CoelhO Mostre seu script de tags se tiver com dificuldade em usar essa função. Link to comment
CoelhO Posted January 11, 2019 Author Share Posted January 11, 2019 On 09/01/2019 at 01:55, DNL291 said: Eu lembro disso na época que ainda jogava, tinha gente que conseguia colocar cores nas mensagens. Então essa seria a forma ideal de remover cores Hex quando se trata de chat. Uma versão como função: function removeHex( s ) if type(s) == "string" then while(s:find("#%x%x%x%x%x%x")) do s = s:gsub("#%x%x%x%x%x%x","") end end return s or false end @CoelhO Mostre seu script de tags se tiver com dificuldade em usar essa função. words = {} SQLS3D = { qury = executeSQLQuery } chatTime = {} lastChatMessage = {} addEventHandler("onPlayerChat", getRootElement(), function(text, msgtype, thePlayer) local account = getAccountName(getPlayerAccount(source)) local name = getPlayerName(source) local root = getRootElement() local name = getPlayerName(source) local r,g,b = getPlayerNametagColor(source) local Account1 = getPlayerAccount ( source ) lastChatMessage[source] = text local r, g, b = getPlayerNametagColor(source) cancelEvent() if isObjectInACLGroup("user." .. account, aclGetGroup("Console")) then cancelEvent(true) outputChatBox("#FFD700" .. name .." #FFD700[TODOS]: " .. text, root, 255, 255, 255, true) outputServerLog("CHAT: " .. name .. ": " .. text) elseif isObjectInACLGroup("user." .. account, aclGetGroup("Admin")) then cancelEvent(true) outputChatBox("#FFFFFF" .. name .." #FFFFFF[TODOS]: "..text, root, 255, 255, 255, true) outputServerLog("CHAT: " .. name .. ": " .. text) elseif isObjectInACLGroup("user." .. account, aclGetGroup("Everyone")) then cancelEvent(true) outputChatBox("#FFFFFF" .. name .." #FFFFFF[TODOS]: "..text, root, 255, 255, 255, true) outputServerLog("CHAT: " .. name .. ": " .. text) end end ) quero adicionar esta função aí Link to comment
Other Languages Moderators Lord Henry Posted January 12, 2019 Other Languages Moderators Share Posted January 12, 2019 Coloque a função que remove o código Hex fora da função principal. E então na linha acima do lastChatMessage[source] transforme o texto com código em texto sem código. Tente isso: words = {} -- Isso é desnecessário. SQLS3D = { qury = executeSQLQuery } -- Isso é desnecessário. chatTime = {} -- Isso é desnecessário. lastChatMessage = {} -- Isso é desnecessário. function removeHex (s) if type(s) == "string" then while(s:find("#%x%x%x%x%x%x")) do s = s:gsub("#%x%x%x%x%x%x","") end end return s or false end addEventHandler("onPlayerChat", getRootElement(), function (text, msgtype, thePlayer) local account = getAccountName (getPlayerAccount (source)) local name = getPlayerName (source) local root = getRootElement () -- Isso é desnecessário. local r,g,b = getPlayerNametagColor (source) -- Isso é desnecessário. local Account1 = getPlayerAccount (source) -- Isso é desnecessário. text = removeHex (text) lastChatMessage [source] = text -- Isso é desnecessário. cancelEvent() if isObjectInACLGroup ("user."..account, aclGetGroup ("Console")) then cancelEvent(true) outputChatBox ("#FFD700"..name.." #FFD700[TODOS]: "..text, root, 255, 255, 255, true) outputServerLog ("CHAT: "..name..": "..text) elseif isObjectInACLGroup ("user." .. account, aclGetGroup ("Admin")) then cancelEvent(true) outputChatBox ("#FFFFFF"..name.." #FFFFFF[TODOS]: "..text, root, 255, 255, 255, true) outputServerLog ("CHAT: "..name..": "..text) elseif isObjectInACLGroup ("user."..account, aclGetGroup("Everyone")) then cancelEvent(true) outputChatBox ("#FFFFFF"..name.." #FFFFFF[TODOS]: "..text, root, 255, 255, 255, true) outputServerLog ("CHAT: "..name..": "..text) end end ) (Não testado.) 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