home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 1.x / plum12.lzh / plum12 / waitoper.plm < prev    next >
Text File  |  1997-09-25  |  3KB  |  122 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, $name, $mode);
  29.   $userno = $'userno[$serverno];
  30.   $nick = &'prefix($prefix);
  31.   ($name, $mode) = (split(/\cG/, $chan), '');
  32.   if ($nick ne $'nick[$serverno] && $mode !~ /o/i) {
  33.     foreach $waitoper (&'property($userno, 'waitoper')) {
  34.       $regex = &'regex($waitoper);
  35.       next unless $prefix =~ /$regex/i;
  36.       $operlist{$userno, $name} = &'add($operlist{$userno, $name}, $nick);
  37.       last;
  38.     }
  39.   }
  40.   return ($prefix, $cmd, $chan);
  41. }
  42.  
  43. sub ss_mode {
  44.   local($serverno, $prefix, $cmd, @params) = @_;
  45.   local($chan, $mode, @modes) = @params;
  46.   local($userno, $flag, $name);
  47.   $userno = $'userno[$serverno];
  48.   foreach $char (split(//, $mode)) {
  49.     if ($char eq '+' || $char eq '-') {
  50.       $flag = $char;
  51.     } elsif ($char eq 'b') {
  52.       shift(@modes);
  53.     } elsif ($char eq 'i') {
  54.     } elsif ($char eq 'k') {
  55.       shift(@modes);
  56.     } elsif ($char eq 'l') {
  57.       shift(@modes) if $flag eq '+';
  58.     } elsif ($char eq 'o') {
  59.       $name = shift(@modes);
  60.       if ($flag eq '+') {
  61.         $operlist{$userno, $chan} = &'remove($operlist{$userno, $chan}, $name);
  62.       }
  63.     } elsif ($char eq 'v') {
  64.       shift(@modes);
  65.     }
  66.   }
  67.   return ($prefix, $cmd, @params);
  68. }
  69.  
  70. sub ss_nick {
  71.   local($serverno, $prefix, $cmd, $newnick) = @_;
  72.   local($userno, $nick, $no, $var);
  73.   $userno = $'userno[$serverno];
  74.   $nick = &'prefix($prefix);
  75.   if ($nick ne $'nick[$serverno]) {
  76.     foreach $key (keys(%operlist)) {
  77.       ($no, $var) = split(/$;/, $key, 2);
  78.       next unless $no == $userno;
  79.       $operlist{$key} = &'change($operlist{$key}, $nick, $newnick);
  80.     }
  81.   }
  82.   return ($prefix, $cmd, $newnick);
  83. }
  84.  
  85. sub ss_part {
  86.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  87.   local($nick, $userno);
  88.   $userno = $'userno[$serverno];
  89.   $nick = &'prefix($prefix);
  90.   if ($nick eq $'nick[$serverno]) {
  91.     delete $operlist{$userno, $chan};
  92.   } else {
  93.     $operlist{$userno, $chan} = &'remove($operlist{$userno, $chan}, $nick);
  94.   }
  95.   return ($prefix, $cmd, $chan, $msg);
  96. }
  97.  
  98. sub ss_quit {
  99.   local($serverno, $prefix, $cmd, $msg) = @_;
  100.   local($userno, $nick, $no, $var);
  101.   $userno = $'userno[$serverno];
  102.   $nick = &'prefix($prefix);
  103.   foreach $key (keys(%operlist)) {
  104.     ($no, $var) = split(/$;/, $key, 2);
  105.     next unless $no == $userno;
  106.     $operlist{$key} = &'remove($operlist{$key}, $nick);
  107.   }
  108.   return ($prefix, $cmd, $msg);
  109. }
  110.  
  111. sub ss_kick {
  112.   local($serverno, $prefix, $cmd, $chan, $who, $msg) = @_;
  113.   local($userno) = $'userno[$serverno];
  114.   if ($who eq $'nick[$serverno]) {
  115.     delete $operlist{$userno, $chan};
  116.   } else {
  117.     $operlist{$userno, $chan} = &'remove($operlist{$userno, $chan}, $who);
  118.   }
  119.   return ($prefix, $cmd, $chan, $who, $msg);
  120. }
  121.  
  122.