READ THE RULES
0 Members and 1 Guest are viewing this topic.
-- HubRanking Bot LUA 5.0.2-- Made by Optimus 1-03-2005-- Extra custom ranking members added by TiMeTrAVelleR-- Edited by Requiem (aka GeceBekcisi)tCommands = {}tFunctions = {}-- Your Bot namesBot = "BotName"-- Your Menu namebMenu = "MenuName"-- Load all rankings members into memorydofile("ranksmembers.tbl")-- Table used for rankings userstRankingTable = {}-- File where ranking users is storedRankFile = "ranksusers.tbl"-- Interval points between rank members + iSomeValue/number of rankiInterval = 250-- This value is defid by Number rank member and added to iInterval differenceiSomeValue = 5000 -- iSomeValue/number of rank-- Total off displayed ranked membersMaxShowed = 50-- Set ranks members of choicetRankMembers = Standard-- Send usercommands on connect 1=on/0=offUserCommands = 1-- Your command prefixes hereCmdPrefix = { ["!"] = 1, ["?"] = 1, ["+"] = 1}-- Sets who can use Rankings scripttSetProfile = {[0] = 1, -- Masters[1] = 1, -- Operators[2] = 1, -- Vips[3] = 1, -- Regs[4] = 1, -- Moderator[5] = 1, -- NetFounder}Main = function() frmHub:RegBot(sBot) dofile(RankFile)endOnExit = function() saveTableToFile(RankFile, tRankingTable, "tRankingTable")endChatArrival = function(user, data) if tSetProfile[user.iProfile] == 1 then tFunctions.UpdateRanks(user) end user.SendMessage = user.SendData return tFunctions.GetCommands(user, data)endToArrival = function(user, data) local s,e,to = string.find(data, "$To: (%S+%s?%S*)%sFrom:") if to == sBot then user.SendMessage = user.SendPM return tFunctions.GetCommands(user, data) endendNewUserConnected = function(user) if tSetProfile[user.iProfile] == 1 then if tRankingTable[user.sName] then user:SendData(sBot, "Your ChatRank: "..tFunctions.GetRankName(tRankingTable[user.sName]).." / "..tRankingTable[user.sName].." Points") end tFunctions.SendCommands(user) endendOpConnected = NewUserConnected--// Commands ----------------------------------------------------------------------------------------------------------tCommands["ranksinfo"] = function(user, data) local iRankValue = 0 local Info = " ¤ Current Ranking Members ¤\r\n\r\n" Info = Info.."\t»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«\r\n" for i = 1,table.getn(tRankMembers) do local iRankDif = iSomeValue / table.getn(tRankMembers) * i Info = Info.."\t "..i..". Rank: "..tRankMembers[i]..", Points: "..string.format("%0.f", iRankValue).."\r\n" iRankValue = iRankValue + iInterval + iRankDif end Info = Info.."\t»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«\r\n" user:SendMessage(sBot, Info) return 1endtCommands["getrank"] = function(user, data) if user.bOperator then local s,e,name = string.find(data, "%b<>%s+%S+%s+(%S+)") if name then if tRankingTable[name] then user:SendMessage(sBot, name.." ChatRank: "..tFunctions.GetRankName(tRankingTable[name]).." / "..tRankingTable[name].." Points") else user:SendMessage(sBot, "*** User not found!") end else user:SendMessage(sBot, "*** Usage: !getrank ") end end return 1endtCommands["myrank"] = function(user, data) if tRankingTable[user.sName] then user:SendMessage(sBot,"Your ChatRank: "..tFunctions.GetRankName(tRankingTable[user.sName]).." / "..tRankingTable[user.sName].." Points") end return 1endtCommands["topranks"] = function(user, data) user:SendMessage(sBot, tFunctions.ShowRanks()) return 1end--// Functions ---------------------------------------------------------------------------------------------------------tFunctions.GetCommands = function(user, data) data=string.sub(data,1,string.len(data)-1) local s,e,prefix,cmd = string.find(data, "%b<>%s*(%S)(%S+)") if prefix and CmdPrefix[prefix] and tCommands[cmd] then if tSetProfile[user.iProfile] == 1 then return tCommands[cmd](user, data) end endendtFunctions.GetRankName = function(points) local iRank,iRankValue = tRankMembers[table.getn(tRankMembers)],0 for i = 1,table.getn(tRankMembers) do local iRankDif = iSomeValue / table.getn(tRankMembers) * i local iStart,iEnd = string.format("%0.f", iRankValue), string.format("%0.f", iRankValue + iInterval + iRankDif) if points >= tonumber(iStart) and points <= tonumber(iEnd) then iRank = tRankMembers[i] end iRankValue = iRankValue + iInterval + iRankDif end return iRankendtFunctions.ShowRanks = function() local tTemp = {} for i,v in tRankingTable do table.insert(tTemp,{i,v}) end table.sort(tTemp,function(a,b) return (a[2] > b[2]) end) local disp = " ¤ Current Top ChatRankings ¤\r\n\r\n" disp = disp.."\tNr:\tPoints:\tRank:\t\tNick:\r\n" disp = disp.."\t»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«\r\n" for i = 1,MaxShowed do if tTemp[i] then disp = disp.."\t"..i..".\t"..tTemp[i][2].."\t"..tFunctions.GetRankName(tTemp[i][2]).."\t\t"..tTemp[i][1].."\r\n" end end disp = disp.."\t»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«\r\n" return dispendtFunctions.UpdateRanks = function(user) local iUpdate = tRankingTable[user.sName] or 0 iUpdate = iUpdate + 1 tRankingTable[user.sName] = iUpdateend------------------------------------------------ Modify [ "..bMenu.."\\Ranks\\ ] part of script as [ "..bMenu.."\\ ] if you dont want items to be displayed under a " Ranks " menu----------------------------------------------tFunctions.SendCommands = function(user) if UserCommands == 1 then if user.bUserCommand then user:SendData("$UserCommand 0 3") user:SendData("$UserCommand 1 3 "..bMenu.."\\Ranks\\Get Users Rank$<%[mynick]> !getrank %[nick] ||") user:SendData("$UserCommand 1 3 "..bMenu.."\\Ranks\\Ranks Info$<%[mynick]> !ranksinfo ||") user:SendData("$UserCommand 1 3 "..bMenu.."\\Ranks\\Show My Rank$<%[mynick]> !myrank ||") user:SendData("$UserCommand 1 3 "..bMenu.."\\Ranks\\Shows Top Ranks$<%[mynick]> !topranks ||") end endend------------------------------------------------ load & save Tables----------------------------------------------Serialize = function(tTable, sTableName, hFile) hFile:write(sTableName.." = {\n") for key,value in tTable do local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key) if(type(value) == "table") then Serialize(value,sKey,hFile) else local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value) hFile:write(sKey.." = "..sValue) end hFile:write(",\n") end hFile:write("}")end-----------------------------------------------------------saveTableToFile = function(file, table, tablename) local handle = io.open(file,"w") Serialize(table,tablename,handle) handle:close()end
NewUserConnected = function(user) if tSetProfile[user.iProfile] == 1 then if tRankingTable[user.sName] then user:SendPM(sBot, "Your ChatRank: "..tFunctions.GetRankName(tRankingTable[user.sName]).." / "..tRankingTable[user.sName].." Points") end tFunctions.SendCommands(user) endend
Hi friends i need the HubRank script in Lua4 This is a greatfull script. can anyone change it in Lua4 ?..... ......Big THX to the scripters