local MonitorWord = {} --监控关键字
MonitorWord["135109154"] = 15 --MonitorWord["关键字"] = 关键字积分值
MonitorWord["外挂"] = 5
MonitorWord["高速"] = 5
MonitorWord["懒人保姆"] = 10
MonitorWord["GM"] = 5
MonitorWord["草"] = 2
MonitorWord["傻逼"] = 2
MonitorWord["日"] = 2
MonitorWord["你妈"] = 2
MonitorWord["淘宝"] = 5
MonitorWord["操"] = 5
MonitorWord["群"] = 5
MonitorWord["魔力私服"] = 13
MonitorWord["封号"] = 13
MonitorWord["弃坑"] = 8
MonitorWord["4346917"] = 15
MonitorWord["523魔力"] = 15
MonitorWord["我爱上魔力"] = 15
MonitorWord["新服"] = 8
MonitorWord["新月"] = 8
MonitorWord["RMB"] = 8
MonitorWord["人民币"] = 8
MonitorWord["523"] = 5
local TestMode = 0 --是否开启测试模式 测试模式只提示 不掉线 不封号
local SuperMode = 1 --是否启用通配模式 会占用更多资源 1为启用 否则为不启用
local TalkWordLimet = 20 --触发监控需要的最少字符数(说话少于这么多字不监控)
local LimetPointDrop = 10 --掉线惩罚积分线
local LimetPointAble = 15 --封号惩罚积分线
local LimetPointNo = 8 --屏蔽发言积分线
--local LogName = "TalkMonitorLog" --日志文件名
--------------------------------------------------------
Global_Reg.RegTalkEvent("TalkMonitorZATalkEvent")
function TalkMonitorZATalkEvent(player,msg,color,range,size)
if NLG.Get_Char_Date(player,145) == 0 then
if string.len(msg) >= TalkWordLimet then
local cdkey = Char.GetData(player,%对象_帐号%)
local Point = 0
local jiankongzifankui = ""
if SuperMode == 1 then
for k,v in pairs(MonitorWord) do
local tempint = {}
local SuperModeLen
if isrealstr(str) then
SuperModeLen = 1
else
SuperModeLen = 2
end
for i = 1,(string.len(k)/SuperModeLen) do
tempint[i] = string.sub(k,(i*SuperModeLen-(SuperModeLen-1)),(i*SuperModeLen))
end
local tempstr = ""
for i = 1,#tempint do
tempstr = tempstr..".-"..tempint[i]
end
if string.find(msg,tempstr) then
Point = Point + v
end
end
else
for k,v in pairs(MonitorWord) do
if string.find(msg,k) then
Point = Point + v
end
end
end
if Point >= LimetPointAble then--封号
if TestMode == 1 then
NLG.SystemMessage(player,"测试模式 你刚才的发言积"..Point.."分。自动封号。")
else
if isrealstr(cdkey) then
local sqlstr = "update tbl_user set enableflg = '0' where cdkey = '" ..cdkey.. "'"
if SQL.Run(sqlstr) == 0 then
NLG.DropPlayer(player)
jiankongzifankui = "\n"..(os.date("%x %X")).." 封停帐号:"..cdkey.." 角色:"..(Char.GetData(player,%对象_原名%)).." 累计"..Point.."分\n具体内容:"..msg
limitmsg(jiankongzifankui)
else
jiankongzifankui = "\n"..(os.date("%x %X")).." 封停失败帐号:"..cdkey.." 角色:"..(Char.GetData(player,%对象_原名%)).." 累计"..Point.."分\n具体内容:"..msg
limitmsg(jiankongzifankui)
end
else
jiankongzifankui = "\n"..(os.date("%x %X")).." 无法封停的风险帐号:"..cdkey.." 角色:"..(Char.GetData(player,%对象_原名%)).." 累计"..Point.."分\n具体内容:"..msg
limitmsg(jiankongzifankui)
end
end
return -1
end
if Point >= LimetPointDrop and Point < LimetPointAble then--掉线
if TestMode == 1 then
NLG.SystemMessage(player,"测试模式 你刚才的发言积"..Point.."分。自动断线。")
else
jiankongzifankui = "\n"..(os.date("%x %X")).." 断线帐号:"..cdkey.." 角色:"..(Char.GetData(player,%对象_原名%)).." 累计"..Point.."分\n具体内容:"..msg
limitmsg(jiankongzifankui)
NLG.DropPlayer(player)
end
return -1
end
if Point >= LimetPointNo and Point < LimetPointDrop then--屏蔽
if TestMode == 1 then
NLG.SystemMessage(player,"测试模式 你刚才的发言积"..Point.."分。自动屏蔽。")
end
return -1
end
if TestMode == 1 then
NLG.SystemMessage(player,"测试模式 你刚才的发言积"..Point.."分。")
end
end
end
return 0
end
function limitmsg(jiankongzifankui)
if jiankongzifankui ~= "" then
local f = io.open("./lua/Module/TalkMonitorLog.txt","a")
if f then
else
f = io.open("./lua/Module/TalkMonitorLog.txt","w")
end
f:write(jiankongzifankui)
f:close()
end
end
|
|