Chc? napisa? skrypt na anty przeklinanie. I nie wiem jak zobaczy? czy w czacie nie pojawi?o si? przekle?stwo.
Najpierw my?la?em ?e b?dzie to InputChatbox, ale nie ma czego? takiego.
[mwiki]onPlayerChat[/mwiki] -- argument message to wiadomo??
i sprawdzasz czy kt?re? ze s??w to przekle?stwo. Tyle ?e nie pami?tam jak zrobi?, by sprawdza?o wszystkie s?owa w stringu.
Jak ju? napisa? vipSEBOvip - podepnij funkcj? pod zdarzenie onPlayerChat. Niestety, ka?de s?owo musisz zapisa? w stworzonej przez siebie tablicy (warto napisa? dwie formy, jak s?owo opisuj?ce m?ski narz?d rozrodczy (ch i h).
Sprawdzasz czy w wiadomo?ci nie ma wulgaryzmu - u?ywasz string.find. Na koniec wulgaryzm mo?esz zamieni? na inne s?owo, gwiazdki cokolwiek chcesz korzystaj?c z funkcji string.gsub.
local przeklenstwa = {
"k****",
"c***",
"wypierdalaj"
}
function playerChat(message, mtype)
if (mtype==0) then
for k, przekl in ipairs(przeklenstwa) do
if (string.find(message, przekl)) then
outputChatBox ("Nie przeklinaj! To grozi mutem lub kickiem!", source)
cancelEvent()
end
end
end
end
addEventHandler("onPlayerChat", root, playerChat)
Moja implementacja, wykorzystuje wyra?enia regularne, a w?a?ciwie ich odpowiednik w Lua - Patterns:
cenzurowane_slowa= { "[kK][uU]+[rR][wW]", "[pP][iI][zZ][dD]", "[pP][iI][eE][rR][dD][oO][lL]", "[sS][uU][kK][iI][nN]", "[jJ][eE][bB]", "[cC][iI][pP][oO]", "[hH][uU][jJ][uU]"}
function cenzurujSlowo(slowo)
return string.gsub(slowo,"(.).*(.)","%1**%2")
end
function cenzurujZdanie(zdanie)
local cnt=0
for _,slowo in ipairs(cenzurowane_slowa) do
zdanie,lcnt=string.gsub(zdanie,slowo,cenzurujSlowo)
if lcnt and lcnt>0 then cnt=cnt+lcnt end
end
return zdanie,cnt
end
U?ycie: w onPlayerText, lub w dowolnej innej komendzie przekazuj?cej informacj? (np. /pm):
local msg,kara=cenzurujZdanie(msg)
if kara>0 then
... gracz przekln?? kara razy, nak?adamy kar? ...
end
... w msg mamy ocenzurowany tekst ...
Ja my?l?, ?e chyba powinno byc tak
if outputChatBox ...
chyba...
We? przesta? tu pisa? jak nie masz na ten temat poj?cia.
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach