Seb

Userlist 6.0

Seb
Sep 14th, 2025 (edited)
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 15.60 KB | None | 0 0
  1. ##############################
  2. #      Userlist System       #
  3. #        Version: 6.0        #
  4. #          By: Seb           #
  5. #   Net: irc.undernet.org    #
  6. #   Chan: #mircscripting     #
  7. ##############################
  8.  
  9. #aliases
  10.  
  11. alias user.list {
  12.   var %dbp = database\ $+ # $+ .ini
  13.   var %valid.levels = op,voice,protect,bot,manager
  14.   var %pull.level = $1
  15.   if ($1 !isin %valid.levels) { echo -at - [Error] Invalid Level, try: /user.list <op|voice|protect|bot|manager> | halt }
  16.   if ($ini(%dbp,$1,0) == $null) { echo -at - $1 List Empty | halt }  
  17.   echo -at - Listing:4 $1 on #
  18.   var %o = 1 | while (%o <= $ini(%dbp,$1,0)) { echo -at - $2 $ini(%dbp,$1,%o) | inc %o }
  19. }
  20.  
  21. alias show.levels {
  22.   var %dbp = database\ $+ # $+ .ini
  23.   echo -a command disabled for now
  24.   msg $chan Levels for $1 with this mask :: $address($1,2)
  25.   msg $chan $&
  26.     $iif($readini(%dbp, manager, $address($1,2)),3+manager,4-manager) $&    
  27.     $iif($readini(%dbp, infoline, $address($1,2)),3+infoline,4-infoline) $&    
  28.     $iif($readini(%dbp, op, $address($1,2)),3+autoop,4-autoop) $&    
  29.     $iif($readini(%dbp, voice, $address($1,2)),3+autovoice,4-autovoice) $&    
  30.     $iif($readini(%dbp, keepop, $address($1,2)),3+keepop,4-keepop) $&    
  31.     $iif($readini(%dbp, bot, $address($1,2)),3+bot,4-bot) $&
  32.     $iif($readini(%dbp, protect, $address($1,2)),3+protect,4-protect)              
  33. }
  34.  
  35.  
  36. alias update.levels {
  37.   var %dbp2 = database\ $+ $2 $+ .ini
  38.   msg $2 Levels for $1 with this mask :: $address($1,2)
  39.   msg $2 $&
  40.     $iif($readini(%dbp2, manager, $address($1,2)),3+manager,4-manager) $&    
  41.     $iif($readini(%dbp2, infoline, $address($1,2)),3+infoline,4-infoline) $&    
  42.     $iif($readini(%dbp2, op, $address($1,2)),3+autoop,4-autoop) $&    
  43.     $iif($readini(%dbp2, voice, $address($1,2)),3+autovoice,4-autovoice) $&    
  44.     $iif($readini(%dbp2, keepop, $address($1,2)),3+keepop,4-keepop) $&    
  45.     $iif($readini(%dbp2, bot, $address($1,2)),3+bot,4-bot) $&
  46.     $iif($readini(%dbp2, protect, $address($1,2)),3+protect,4-protect) $&
  47.     $iif($readini(%dbp2, suspend, $address($2,2)),3+suspend,4-suspend)        
  48. }
  49.  
  50. alias c.update {
  51.   if ($timershow) { halt }
  52.   set %dbupchan $chan
  53.   .timer $+ show 1 2 update.levels $1 %dbupchan
  54.   unset %dbupchan
  55.   echo -at - Updating levels for $1 on %dbupchan
  56. }
  57.  
  58. alias userlist.help {
  59.   echo -at - ==============================
  60.   echo -at -     Userlist System Help
  61.   echo -at -     Version: 5.2
  62.   echo -at - ==============================
  63.   echo -at -
  64.   echo -at - Available Aliases:
  65.   echo -at - /user.list <level> - Lists users with specific level
  66.   echo -at -  Valid levels: op, voice, protect, bot, manager
  67.   echo -at -
  68.   echo -at - /show.levels <nick> - Shows all levels for a user
  69.   echo -at - /update.levels <nick> <channel> - Updates level display
  70.   echo -at - /c.update <nick> - Updates levels with timer delay
  71.   echo -at - /userlist.help - Shows this help file
  72.   echo -at -
  73.   echo -at - Channel Commands:
  74.   echo -at - .who <nick> - Shows user levels and info
  75.   echo -at - .mod <nick> <+/-level> - Modify user levels (manager only)
  76.   echo -at - +infoline <nick> <message> - Add infoline to user
  77.   echo -at - -infoline <nick> - Remove infoline from user
  78.   echo -at -
  79.   echo -at - Available Levels:
  80.   echo -at - +manager - Full access, can modify other users
  81.   echo -at - +autoop - Auto-op on join
  82.   echo -at - +autovoice - Auto-voice on join  
  83.   echo -at - +keepop - Maintains op status if deopped
  84.   echo -at - +protect - Protected from kicks/bans
  85.   echo -at - +bot - Bot user with auto-op
  86.   echo -at - +suspend - Suspended user (temporary ban)
  87.   echo -at - +infoline - Custom message shown on join
  88.   echo -at -
  89.   echo -at - Examples:
  90.   echo -at - /user.list manager
  91.   echo -at - .mod SomeUser +autoop +protect
  92.   echo -at - .mod SomeUser -autovoice
  93.   echo -at - +infoline SomeUser Welcome back!
  94.   echo -at -
  95.   echo -at - Database files stored in: database\#channelname.ini
  96.   echo -at - Right-click users or channel for GUI menus
  97.   echo -at - ==============================
  98. }
  99.  
  100. #events
  101.  
  102. on *:JOIN:#:{
  103.   var %dbp = database\ $+ # $+ .ini
  104.   if ($readini(%dbp, suspend, $address($nick,2))) { msg $chan $+([,$nick,]) Is Suspended | halt }
  105.   if ($readini(%dbp, infoline, $address($nick,2))) {
  106.     if ($nick == $me) { return }
  107.     msg $chan ( $+ $nick $+ ) $readini(%dbp, infoline, $address($nick,2))
  108.   }
  109.   if ($readini(%dbp, op, $address($nick,2)) == 1) && ($readini(%dbp, voice, $address($nick,2)) == 1) {
  110.     .mode # +ov $nick $nick
  111.     halt
  112.   }
  113.   if ($readini(%dbp, op, $address($nick,2)) == 1) {
  114.     mode $chan +o $nick
  115.     halt
  116.   }
  117.   if ($readini(%dbp, voice, $address($nick,2)) == 1) {
  118.     mode $chan +v $nick
  119.     halt
  120.   }
  121. }
  122.  
  123. on *:KICK:#:{
  124.   var %dbp = database\ $+ # $+ .ini
  125.   if ($readini(%dbp, protect, $address($knick,2)) == 1) {
  126.     ban -k $chan $nick $knick is Protected! [Suspended: 1h]
  127.     writeini %dbp suspend $address($nick,2) 1
  128.     .timer 1 3600 remini %dbp suspend $address($nick,2)
  129.   }
  130. }
  131.  
  132. on *:ban:#:{
  133.   var %dbp = database\ $+ # $+ .ini
  134.   if ($bnick == $nick) { halt }
  135.   if ($readini(%dbp, protect, $address($bnick,2)) == 1) {
  136.     mode $chan -bo+b $banmask $nick $address($nick,2)
  137.     kick $chan $nick $bnick is Protected! [Suspended: 1h]
  138.     writeini %dbp suspend $address($nick,2) 1    
  139.     .timer 1 3600 remini %dbp suspend $address($nick,2)
  140.   }
  141. }
  142.  
  143. on *:DEOP:#:{
  144.   var %dbp = database\ $+ # $+ .ini
  145.   if ($nick == $me) { halt }
  146.   if ($opnick == $nick) { halt }
  147.   if ($readini(%dbp, keepop, $address($opnick,2)) == 1) {
  148.     mode $chan -o+o $nick $opnick
  149.     msg $chan $opnick has KeepOp Enabled
  150.   }
  151. }
  152.  
  153. on 1:input:#:{
  154.   var %dbp = database\ $+ # $+ .ini
  155.   if ($1 == .who) {
  156.     .timer 1 1 msg $chan Levels for $2 with this mask :: $address($2,2)
  157.     .timer 1 1 msg $chan $&
  158.       $iif($readini(%dbp, manager, $address($2,2)),3+manager,4-manager) $&    
  159.       $iif($readini(%dbp, infoline, $address($2,2)),3+infoline,4-infoline) $&    
  160.       $iif($readini(%dbp, op, $address($2,2)),3+autoop,4-autoop) $&    
  161.       $iif($readini(%dbp, voice, $address($2,2)),3+autovoice,4-autovoice) $&    
  162.       $iif($readini(%dbp, keepop, $address($2,2)),3+keepop,4-keepop) $&    
  163.       $iif($readini(%dbp, bot, $address($2,2)),3+bot,4-bot) $&
  164.       $iif($readini(%dbp, protect, $address($2,2)),3+protect,4-protect) $&
  165.       $iif($readini(%dbp, suspend, $address($2,2)),3+suspend,4-suspend)    
  166.     $iif($readini(%dbp, infoline, $address($2,2)),msg $chan Infoline: $readini(%dbp, infoline, $address($2,2)),$null)
  167.   }
  168.   if ($1 == .mod) {
  169.     if (+bot isin $3-) { writeini %dbp bot $address($2,2) 1 | c.update $2 }
  170.     if (+autoop isin $3-) { writeini %dbp op $address($2,2) 1 | c.update $2 | mode $chan +o $2 }
  171.     if (+autovoice isin $3-) { writeini %dbp voice $address($2,2) 1 | c.update $2 | mode $chan +v $2 }
  172.     if (+keepop isin $3-) { writeini %dbp keepop $address($2,2) 1 | c.update $2 }
  173.     if (+protect isin $3-) { writeini %dbp protect $address($2,2) 1 | c.update $2 }
  174.     if (+manager isin $3-) { writeini %dbp manager $address($2,2) 1 | c.update $2 }
  175.     if (+suspend isin $3-) { writeini %dbp suspend $address($2,2) 1 | c.update $2 }    
  176.     if (-bot isin $3-) { remini %dbp bot $address($2,2) | c.update $2 }
  177.     if (-autoop isin $3-) { remini %dbp op $address($2,2) | c.update $2 | mode $chan -o $2 }
  178.     if (-autovoice isin $3-) { remini %dbp voice $address($2,2) | c.update $2 | mode $chan -v $2 }
  179.     if (-keepop isin $3-) { remini %dbp keepop $address($2,2) | c.update $2 }
  180.     if (-protect isin $3-) { remini %dbp protect $address($2,2) | c.update $2 }
  181.     if (-manager isin $3-) { remini %dbp manager $address($2,2) | c.update $2 }
  182.     if (-suspend isin $3-) { remini %dbp suspend $address($2,2) | c.update $2 }    
  183.   }
  184.   if ($1 == +infoline) {
  185.     writeini %dbp infoline $address($2,2) $3-
  186.     .timer 1 1 msg $chan Added infoline to $2 on $chan :: $3-
  187.   }
  188.   if ($1 == -infoline) {
  189.     remini %dbp infoline $address($2,2)
  190.     .timer 1 1 msg $chan Removed infoline From $2 on $chan
  191.   }
  192. }
  193.  
  194. on *:text:.who *:#:{
  195.   var %dbp = database\ $+ # $+ .ini
  196.   msg $chan Levels for $2 with this mask :: $address($2,2)
  197.   .timer 1 3 msg $chan $&
  198.     $iif($readini(%dbp, manager, $address($2,2)),3+manager,4-manager) $&    
  199.     $iif($readini(%dbp, infoline, $address($2,2)),3+infoline,4-infoline) $&    
  200.     $iif($readini(%dbp, op, $address($2,2)),3+autoop,4-autoop) $&    
  201.     $iif($readini(%dbp, voice, $address($2,2)),3+autovoice,4-autovoice) $&    
  202.     $iif($readini(%dbp, keepop, $address($2,2)),3+keepop,4-keepop) $&    
  203.     $iif($readini(%dbp, bot, $address($2,2)),3+bot,4-bot) $&
  204.     $iif($readini(%dbp, protect, $address($2,2)),3+protect,4-protect) $&
  205.     $iif($readini(%dbp, suspend, $address($2,2)),3+suspend,4-suspend)    
  206.   $iif($readini(%dbp, infoline, $address($2,2)),msg $chan Infoline: $readini(%dbp, infoline, $address($2,2)),$null)
  207. }
  208.  
  209. on *:TEXT:.mod *:#:{
  210.   var %dbp = database\ $+ # $+ .ini
  211.   if ($readini(%dbp, manager, $address($nick,2)) !== 1) {
  212.     msg $chan you need manager level to use this command.
  213.     HALT
  214.   }
  215.   if ($readini(%dbp, manager, $address($nick,2)) == 1) {
  216.     if (+bot isin $3-) { writeini %dbp bot $address($2,2) 1 | c.update $2 }
  217.     if (+autoop isin $3-) { writeini %dbp op $address($2,2) 1 | c.update $2 | mode $chan +o $2 }
  218.     if (+autovoice isin $3-) { writeini %dbp voice $address($2,2) 1 | c.update $2 | mode $chan +v $2 }
  219.     if (+keepop isin $3-) { writeini %dbp keepop $address($2,2) 1 | c.update $2 }
  220.     if (+protect isin $3-) { writeini %dbp protect $address($2,2) 1 | c.update $2 }
  221.     if (+manager isin $3-) { writeini %dbp manager $address($2,2) 1 | c.update $2 }
  222.     if (+suspend isin $3-) { writeini %dbp suspend $address($2,2) 1 | c.update $2 }    
  223.     if (-bot isin $3-) { remini %dbp bot $address($2,2) | c.update $2 }
  224.     if (-autoop isin $3-) { remini %dbp op $address($2,2) | c.update $2 | mode $chan -o $2 }
  225.     if (-autovoice isin $3-) { remini %dbp voice $address($2,2) | c.update $2 | mode $chan -v $2 }
  226.     if (-keepop isin $3-) { remini %dbp keepop $address($2,2) | c.update $2 }
  227.     if (-protect isin $3-) { remini %dbp protect $address($2,2) | c.update $2 }
  228.     if (-manager isin $3-) { remini %dbp manager $address($2,2) | c.update $2 }
  229.     if (-suspend isin $3-) { remini %dbp suspend $address($2,2) | c.update $2 }    
  230.   }
  231. }
  232.  
  233. on *:text:+infoline *:#:{
  234.   var %dbp = database\ $+ # $+ .ini
  235.   writeini %dbp infoline $address($nick,2) $2-
  236.   .notice $nick Added infoline to $nick on $chan :: $2-
  237. }
  238.  
  239. on *:text:-infoline:#:{
  240.   var %dbp = database\ $+ # $+ .ini
  241.   remini %dbp infoline $address($nick,2)
  242.   .notice $nick Removed infoline From $nick on $chan
  243. }
  244.  
  245. #menus
  246.  
  247. menu nicklist {
  248.   [Userlist System]
  249.   .Add Level
  250.   ..Manager:writeini $+(database\,$chan,.ini) manager $address($$1,2) 1 | echo -at Added $$1 To manager level on $chan with host: $address($$1,2) | mode $chan +o $$1
  251.   ..Auto-Op:writeini $+(database\,$chan,.ini) op $address($$1,2) 1 | echo -at Added $$1 To auto-op list on $chan with host: $address($$1,2) | mode $chan +o $$1
  252.   ..Auto-Voice:writeini $+(database\,$chan,.ini) voice $address($$1,2) 1 | echo -at Added $$1 To auto-voice list on $chan with host: $address($$1,2) | mode $chan +v $$1
  253.   ..Keep-Op:writeini $+(database\,$chan,.ini) keepop $address($$1,2) 1 | echo -at Added $$1 To keep-op list on $chan with host: $address($$1,2) | mode $chan +o $$1
  254.   ..Protect:writeini $+(database\,$chan,.ini) protect $address($$1,2) 1 | echo -at Added $$1 To protect list on $chan with host: $address($$1,2)
  255.   ..Bot:writeini $+(database\,$chan,.ini) bot $address($$1,2) 1 | writeini $+(database\,$chan,.ini) opjoin $address($$1,2) 1 | echo -at Added $$1 To bot list on $chan with host: $address($$1,2) | mode $chan +o $$1
  256.   .Remove Level
  257.   ..Manager:remini $+(database\,$chan,.ini) manager $address($$1,2) | echo -at Removed $$1 from manager list on $chan with host: $address($$1,2) | mode $chan -o $$1
  258.   ..Auto-Op:remini $+(database\,$chan,.ini) op $address($$1,2) | echo -at Removed $$1 from auto-op list on $chan with host: $address($$1,2) | mode $chan -o $$1
  259.   ..Auto-Voice:remini $+(database\,$chan,.ini) voice $address($$1,2) | echo -at Removed $$1 from auto-voice list on $chan with host: $address($$1,2) | mode $chan -v $$1  
  260.   ..Keep-Op:remini $+(database\,$chan,.ini) keepop $address($$1,2) | echo -at Removed $$1 from keep-op list on $chan with host: $address($$1,2)
  261.   ..Protect:remini $+(database\,$chan,.ini) protect $address($$1,2) | echo -at Removed $$1 from protect list on $chan with host: $address($$1,2)
  262.   ..Bot:remini $+(database\,$chan,.ini) bot $address($$1,2) | echo -at Removed $$1 from bot list on $chan with host: $address($$1,2)
  263.   .-
  264.   .Suspend User:writeini $+(database\,$chan,.ini) suspend $address($$1,2) 1 | echo -at Suspended $$1 on $chan with host: $address($$1,2) | kick $chan $$1 User suspended
  265.   .Remove Suspend:remini $+(database\,$chan,.ini) suspend $address($$1,2) | echo -at Removed suspension from $$1 on $chan with host: $address($$1,2)
  266.   .-
  267.   .Infoline
  268.   ..Add Infoline:{
  269.     var %msg = $$?="Enter infoline message for $$1:"
  270.     if (%msg) {
  271.       writeini $+(database\,$chan,.ini) infoline $address($$1,2) %msg
  272.       echo -at Added infoline to $$1 on $chan :: %msg
  273.     }
  274.   }
  275.   ..Remove Infoline:remini $+(database\,$chan,.ini) infoline $address($$1,2) | echo -at Removed infoline from $$1 on $chan
  276.   .-
  277.   .User Info
  278.   ..Show Levels (show.levels):show.levels $$1
  279.   ..Update Levels (c.update):c.update $$1
  280.   ..Check Who (.who):msg $chan .who $$1
  281. }
  282.  
  283. menu channel {
  284.   [Userlist System]
  285.   .List Users (user.list)
  286.   ..List Managers:user.list manager  
  287.   ..List Auto-Op:user.list op
  288.   ..List Auto-Voice:user.list voice
  289.   ..List Protected:user.list protect
  290.   ..List Bots:user.list bot
  291.   .-
  292.   .Aliases
  293.   ..user.list:{
  294.     var %level = $$?="Enter level (manager/op/voice/protect/bot):"
  295.     if (%level) { user.list %level }
  296.   }
  297.   ..show.levels:{
  298.     var %nick = $$?="Enter nickname:"
  299.     if (%nick) { show.levels %nick }
  300.   }
  301.   ..update.levels:{
  302.     var %nick = $$?="Enter nickname:"
  303.     var %chan = $$?="Enter channel:"
  304.     if (%nick && %chan) { update.levels %nick %chan }
  305.   }
  306.   ..c.update:{
  307.     var %nick = $$?="Enter nickname:"
  308.     if (%nick) { c.update %nick }
  309.   }
  310.   .-
  311.   .Channel Commands Help
  312.   ..Show .who command:echo -at Channel command: .who <nick> - Shows user levels and info
  313.   ..Show .mod command:echo -at Channel command: .mod <nick> <+/-level> - Modify user levels (manager only)
  314.   ..Show infoline commands:echo -at Channel commands: +infoline <nick> <message> | -infoline <nick>
  315.   .-
  316.   .Help & Info
  317.   ..Show Help (userlist.help):userlist.help
  318.   ..Show Database Location:echo -at Database files: database\ $+ $chan $+ .ini
  319.   ..Show Script Info:{
  320.     echo -at - ==============================
  321.     echo -at - Userlist System Version: 6.0  
  322.     echo -at - By: Seb https://github.com/DooubleTap
  323.     echo -at - Net: irc.undernet.org
  324.     echo -at - Chan: #mircscripting  
  325.     echo -at - Enhanced with complete menus
  326.     echo -at - ==============================
  327.   }
  328. }
  329.  
  330. on *:LOAD:{
  331.   echo -at - Userlist v5.2 Successfully loaded
  332.   echo -at - Make sure the folder database has been created. Type: //run database To verify.
  333.   echo -at - if you see: * /run: unable to open file 'database' Then it failed.  (Will not usually fail)
  334.   echo -at - Just type /mkdir database or open your mIRC folder (where mirc.exe is) and create it manually with read/write permissions
  335.   echo -at - Type /userlist.help for complete command reference
  336.   echo -at - Right-click users or channel for GUI menus
  337.   mkdir database
  338. }
  339.  
Add Comment
Please, Sign In to add comment