[GP] guanjianzijiankong.lua--关键字监控

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式
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


回复

使用道具 举报

快速回复 返回顶部 返回列表