lLinux Posted April 27, 2014 Posted April 27, 2014 Como puedo crear un anti-insult, con tablas o como sea?
Castillo Posted April 27, 2014 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.
lLinux Posted April 27, 2014 Author 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 ****
#Silvery' Posted April 27, 2014 Posted April 27, 2014 ['insultos'] = { ['hola'] = '*', ['cambia'] = '*', ['esto'] = '*', ['como'] = '*', ['te'] = '*', ['guste'] = '*', ['ati'] = '*', ['lLinux'] = '*', ['chauchis'] = '*' }
Alexs Posted April 27, 2014 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'.
lLinux Posted April 28, 2014 Author Posted April 28, 2014 ['insultos'] = { ['hola'] = '*', ['cambia'] = '*', ['esto'] = '*', ['como'] = '*', ['te'] = '*', ['guste'] = '*', ['ati'] = '*', ['lLinux'] = '*', ['chauchis'] = '*' } y despues que tengo que pner?
#Silvery' Posted April 28, 2014 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
Sasu Posted April 28, 2014 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
Recommended Posts