lLinux Posted April 27, 2014 Share Posted April 27, 2014 Como puedo crear un anti-insult, con tablas o como sea? Link to comment
Castillo Posted April 27, 2014 Share Posted April 27, 2014 Podes poner en una tabla todos los insultos que quieras censurar, y usar el evento onPlayerChat para luego fijarte si alguno de esos insultos esta en el mensaje que envio. Link to comment
lLinux Posted April 27, 2014 Author Share Posted April 27, 2014 Podes poner en una tabla todos los insultos que quieras censurar, y usar el evento onPlayerChat para luego fijarte si alguno de esos insultos esta en el mensaje que envio. Eso es lo que no se por ejemplo seria asi: insultos = { "put*", "zorr*", "hp", } pero como hago que para cuando chateen busque si esta alguna de esa palabra y ponga **** Link to comment
#Silvery' Posted April 27, 2014 Share Posted April 27, 2014 ['insultos'] = { ['hola'] = '*', ['cambia'] = '*', ['esto'] = '*', ['como'] = '*', ['te'] = '*', ['guste'] = '*', ['ati'] = '*', ['lLinux'] = '*', ['chauchis'] = '*' } Link to comment
Alexs Posted April 27, 2014 Share Posted April 27, 2014 Podes poner en una tabla todos los insultos que quieras censurar, y usar el evento onPlayerChat para luego fijarte si alguno de esos insultos esta en el mensaje que envio. Eso es lo que no se por ejemplo seria asi: insultos = { "put*", "zorr*", "hp", } pero como hago que para cuando chateen busque si esta alguna de esa palabra y ponga **** Utiliza 'string.find' o 'string.gsub'. Link to comment
lLinux Posted April 28, 2014 Author Share Posted April 28, 2014 ['insultos'] = { ['hola'] = '*', ['cambia'] = '*', ['esto'] = '*', ['como'] = '*', ['te'] = '*', ['guste'] = '*', ['ati'] = '*', ['lLinux'] = '*', ['chauchis'] = '*' } y despues que tengo que pner? Link to comment
#Silvery' Posted April 28, 2014 Share Posted April 28, 2014 pues como te dijo Alexs , te doy un ejemplito de lo que el dijo del string.gsub function nosequeponer(message) local text = message:gsub("%a", string.upper, 1) for i, v in pairs ['insultos'] do while text:lower():find(i:lower(),1,true) do local start, end_ = text:lower():find(i:lower(),1,true) local found = text:sub(start,end_) text = text:gsub(found,v) end end end addEventHandler("onPlayerChat", getRootElement(), nosequeponer) si esta mal es porque soy nuevo en esto como vengo diciendo hace mucho e.e Link to comment
Sasu Posted April 28, 2014 Share Posted April 28, 2014 Tenia este script que hace justo lo que vos queres. Insults = { "ejemplo", "estupido" } -- Aqui pones las palabras no deseadas addEventHandler("onPlayerChat", root, function(msg, msgType) if msgType == 0 then for k,v in ipairs (Insults) do if string.find( string.lower ( msg ), v) then msg = string.gsub ( string.lower( msg ), v, string.rep("*", wordToAsteric(v) ) ) end end local playerAcc = getPlayerAccount(source) if isGuestAccount(playerAcc) then cancelEvent() else outputChatBox(getPlayerName(source)..": #FFFFFF"..msg, root, 255, 255, 255, true) outputServerLog("CHAT: "..getPlayerName(source):gsub("#%x%x%x%x%x%x","")..": "..msg) cancelEvent() end end end ) function wordToAsteric(theWord) if type(theWord) == 'string' then return string.len(theWord) end end Link to comment
Recommended Posts