home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 1.x / plum10.lzh / plum10 / waitoper.plm < prev    next >
Text File  |  1997-08-13  |  3KB  |  121 lines

  1. package waitoper;
  2.  
  3. $WAITMAX = 20;
  4. $waittime = 0;
  5.  
  6. $_ = 'waitoper';
  7.  
  8. sub main_loop {
  9.   local($userno) = @_;
  10.   local($no, $chan, $max, @names);
  11.   $max = &'property($userno, 'waitmax') || $WAITMAX;
  12.   foreach $key (keys(%operlist)) {
  13.     ($no, $chan) = split(/$;/, $key, 2);
  14.     next unless $no == $userno;
  15.     next unless &'exist($'nameslist{$key}, "\@$'nickname[$userno]");
  16.     next if $operlist{$key} eq $;;
  17.     $waittime++;
  18.     @names = (&'array($operlist{$key}));
  19.     next unless $waittime > $WAITMAX;
  20.     $waittime = 0;
  21.     &'s_print($'server[$userno], '', 'MODE', $chan, '+o', shift(@names));
  22.     $operlist{$key} = &'list(@names);
  23.   }
  24. }
  25.  
  26. sub ss_join {
  27.   local($serverno, $prefix, $cmd, $chan) = @_;
  28.   local($nick, $regex, $userno);
  29.   $userno = $'userno[$serverno];
  30.   $nick = &'prefix($prefix);
  31.   if ($nick ne $'nick[$serverno]) {
  32.     foreach $waitoper (&'property($userno, 'waitoper')) {
  33.       $regex = &'regex($waitoper);
  34.       next unless $prefix =~ /$regex/i;
  35.       $operlist{$userno, $chan} = &'add($operlist{$userno, $chan}, $nick);
  36.       last;
  37.     }
  38.   }
  39.   return ($prefix, $cmd, $chan);
  40. }
  41.  
  42. sub ss_mode {
  43.   local($serverno, $prefix, $cmd, @params) = @_;
  44.   local($chan, $mode, @modes) = @params;
  45.   local($userno, $flag, $name);
  46.   $userno = $'userno[$serverno];
  47.   foreach $char (split(//, $mode)) {
  48.     if ($char eq '+' || $char eq '-') {
  49.       $flag = $char;
  50.     } elsif ($char eq 'b') {
  51.       shift(@modes);
  52.     } elsif ($char eq 'i') {
  53.     } elsif ($char eq 'k') {
  54.       shift(@modes);
  55.     } elsif ($char eq 'l') {
  56.       shift(@modes) if $flag eq '+';
  57.     } elsif ($char eq 'o') {
  58.       $name = shift(@modes);
  59.       if ($flag eq '+') {
  60.         $operlist{$userno, $chan} = &'remove($operlist{$userno, $chan}, $name);
  61.       }
  62.     } elsif ($char eq 'v') {
  63.       shift(@modes);
  64.     }
  65.   }
  66.   return ($prefix, $cmd, @params);
  67. }
  68.  
  69. sub ss_nick {
  70.   local($serverno, $prefix, $cmd, $newnick) = @_;
  71.   local($userno, $nick, $no, $var);
  72.   $userno = $'userno[$serverno];
  73.   $nick = &'prefix($prefix);
  74.   if ($nick ne $'nick[$serverno]) {
  75.     foreach $key (keys(%operlist)) {
  76.       ($no, $var) = split(/$;/, $key, 2);
  77.       next unless $no == $userno;
  78.       $operlist{$key} = &'change($operlist{$key}, $nick, $newnick);
  79.     }
  80.   }
  81.   return ($prefix, $cmd, $newnick);
  82. }
  83.  
  84. sub ss_part {
  85.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  86.   local($nick, $userno);
  87.   $userno = $'userno[$serverno];
  88.   $nick = &'prefix($prefix);
  89.   if ($nick eq $'nick[$serverno]) {
  90.     delete $operlist{$userno, $chan};
  91.   } else {
  92.     $operlist{$userno, $chan} = &'remove($operlist{$userno, $chan}, $nick);
  93.   }
  94.   return ($prefix, $cmd, $chan, $msg);
  95. }
  96.  
  97. sub ss_quit {
  98.   local($serverno, $prefix, $cmd, $msg) = @_;
  99.   local($userno, $nick, $no, $var);
  100.   $userno = $'userno[$serverno];
  101.   $nick = &'prefix($prefix);
  102.   foreach $key (keys(%operlist)) {
  103.     ($no, $var) = split(/$;/, $key, 2);
  104.     next unless $no == $userno;
  105.     $operlist{$key} = &'remove($operlist{$key}, $nick);
  106.   }
  107.   return ($prefix, $cmd, $msg);
  108. }
  109.  
  110. sub ss_kick {
  111.   local($serverno, $prefix, $cmd, $chan, $who, $msg) = @_;
  112.   local($userno) = $'userno[$serverno];
  113.   if ($who eq $'nick[$serverno]) {
  114.     delete $operlist{$userno, $chan};
  115.   } else {
  116.     $operlist{$userno, $chan} = &'remove($operlist{$userno, $chan}, $who);
  117.   }
  118.   return ($prefix, $cmd, $chan, $who, $msg);
  119. }
  120.  
  121.