--[[ cmd_userlist.lua v0.04 by Motnahp based on cmd_userlist.lua v0.02 by blastbeat - this script shows all regged users sorted by level - usage: [+!#]userlist - changelog 0.04: - bugfix with level read as string in user.tbl - changelog 0.03: - removed nick and cid - sorted by level - changelog 0.02: - regged hubcommand ]]-- --// settings begin //-- local scriptname = "cmd_userlist" local scriptversion = "0.04" local scriptlang = cfg.get "language" local minlevel = 60 local cmd = "userlist" -- functions -- local bylevel --// settings end //-- local utf_match = utf.match local hub_getbot = hub.getbot local lang, err = cfg.loadlanguage( scriptlang, scriptname ); lang = lang or { }; err = err and hub.debug( err ) local msg_denied = lang.msg_denied or "You are not allowed to use this command." local msg_userlist = lang.msg_userlist or "Userlist:" local help_title = lang.help_title or "userlist" local help_usage = lang.help_usage or "[+!#]userlist" local help_desc = lang.help_desc or "get list of regged users" local ucmd_menu = lang.ucmd_menu or { "Userlist" } local hubcmd local onbmsg = function( user, command, parameters ) local level = user:level( ) if level < minlevel then user:reply( msg_denied, hub_getbot( ) ) return PROCESSED end local regusers, reggednicks, reggedcids = hub.getregusers( ) local tmp = { } tmp = bylevel( regusers) user:reply( "\n\n" .. msg_userlist .. "\n\n" .. table.concat( tmp, "\n" ), hub_getbot( ), hub_getbot( ) ) return PROCESSED end hub.setlistener( "onStart", { }, function( ) local help = hub.import "cmd_help" if help then help.reg( help_title, help_usage, help_desc, 1 ) -- reg help end local ucmd = hub.import "etc_usercommands" -- add usercommand if ucmd then ucmd.add( ucmd_menu, cmd, { }, { "CT1" }, minlevel ) end hubcmd = hub.import "etc_hubcommands" -- add hubcommand assert( hubcmd ) assert( hubcmd.add( cmd, onbmsg ) ) return nil end ) bylevel = function ( regusers ) local tmp = { } local levels = { } local levelnames= { } local tmp2 = { } -- get number and name of levels for x = 0, 100, 1 do if cfg.get( "levels" )[x] then levels[#levels+1] = x levelnames[#levelnames+1] = ( tostring (cfg.get( "levels" )[x] )) end end -- get users sorted by level for i, user in ipairs( regusers ) do if not user.is_bot then if tmp2[tonumber(user.level)] then tmp2[tonumber(user.level)][#tmp2[tonumber(user.level)]+1] = user.nick else tmp2[tonumber(user.level)] = { } tmp2[tonumber(user.level)][#tmp2[tonumber(user.level)]+1] = user.nick end end end -- add empty fields for unused levels, sort entries for x = 1, #levelnames, 1 do if not tmp2[levels[x]] then tmp2[levels[x]] = { } end table.sort(tmp2[levels[x]]) end -- build tbl for output for x = 1, #levelnames, 1 do tmp[#tmp+1] = " " tmp[#tmp+1] = "=================================" tmp[#tmp+1] = levelnames[x]..": " for y = 1, #tmp2[levels[x]], 1 do tmp[#tmp+1] =" ".. tmp2[levels[x]][y] end end tmp[#tmp+1] = " " tmp[#tmp+1] = " " for x = 1, #levelnames, 1 do tmp[#tmp+1] = levelnames[x]..": "..#tmp2[levels[x]] end return tmp end hub.debug( "** Loaded "..scriptname.." "..scriptversion.." **" )