-- Date: 13-02-2004 -- code from klownietklowniet -- some small shit by Freed -- optimized some by pur -- Added regbot, by zinden -- fixed security bug introdused by me :-( -- gg3k added save function (that was ripped from triviabot :)) botname="-=WARNING=-" warningfile="warned.dat" function Main() LoadWarn() frmHub:RegBot(botname) end max = 3 -- number of warnings before kick warnings={} c={[1]="1st", [2]="2nd"} function NewUserConnected(curUser) warnings[curUser.sName]=0 end function DataArrival(user, data) data=strsub(data,1,strlen(data)-1) s,e,cmd = strfind(data,"%b<>%s+(%S+)") s,e,arg = strfind(data,"%b<>%s+%S+%s+(%S+)") s,e,arg2 = strfind(data,"%b<>%s+%S+%s+%S+%s(.+)") if (cmd=="!warn" and user.bOperator) then -- its here i need the help -- if arg~=nil then victim=GetItemByName(arg) if victim~=nil then if warnings[arg]==nil then warnings[arg]=0 end if warnings[arg]==(max - 1) then SendPmToNick(botname, "This was your last warning. You are now banned!") SendToAll(botname, arg.." got his last warning and was now banned!") victim:Ban() victim:Disconnect() SaveWarn() return 1 else if victim.bOperator then warnings[arg]=0 return 1 end warnings[arg]=warnings[arg]+1 if arg2~=nil then victim:SendPM(botname,"Warning: "..arg2) SendToAll(botname, arg.." got his "..c[warnings[arg]].." warning. Reason: "..arg2) end SendPmToNick(botname, "This is your "..c[warnings[arg]].." warning! Get 3 and you are banned!") SaveWarn() return 1 end else user:SendPM(botname, "No such user in the userlist: "..arg) return 1 end else user:SendPM(botname, "Syntax: ?warn ") return 1 end elseif (cmd=="!reset" and user.bOperator) then if arg~=nil then warnings[arg]=nil user:SendPM(botname, arg.."'s warning were reset.") SaveWarn() return 1 else user:SendPM(botname, "Syntax: ?reset ") return 1 end end end function SaveWarn() local handle = openfile(warningfile, "w") for index, value in warnings do write(handle,index.."|"..value.."\r\n") end closefile(handle) end function LoadWarn() local handle = openfile(warningfile, "r") if (handle) then local line = read(handle) while line do local arrTmp = tokenize(line, "|") if ((arrTmp[1] ~= nil) and (arrTmp[2] ~= nil)) then warnings[arrTmp[1]] = tonumber(arrTmp[2]) end line = read(handle) end closefile(handle) end end function tokenize (inString,token) _WORDS = {} local matcher = "([^"..token.."]+)" gsub(inString, matcher, function (w) tinsert(_WORDS,w) end) return _WORDS end