home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 2.x / plum2_15_2.lzh / module / channel / mode / oper / set.plm < prev   
Text File  |  1997-12-12  |  6KB  |  197 lines

  1. # <!-- -*- perl -*-
  2. # $Id: set.plm,v 2.4 1997/12/12 21:51:00 hasegawa Exp $
  3. # copyright (c)1997 pupu_j <hasegawa@agusa.nuie.nagoya-u.ac.jp>
  4.  
  5. package channel_mode_oper_set;
  6.  
  7. $DELAY = 20;
  8.  
  9. $_ = 'channel_mode_oper_set';
  10.  
  11. sub main_loop {
  12.   local($userno) = @_;
  13.   local($delay, $no, $chan, @names);
  14.   $delay = &'property($userno, 'delay');
  15.   $delay = $DELAY unless defined($delay);
  16.   foreach $key (keys(%operlist)) {
  17.     ($no, $chan) = split(/$;/, $key, 2);
  18.     next unless $no == $userno;
  19.     next unless &'exist($'nameslist{$no, $chan}, "\@$'nickname[$userno]");
  20.     next if $operlist{$key} eq $;;
  21.     $wait[$userno]++;
  22.     @names = &'array($operlist{$key});
  23.     next unless $wait[$userno] >= $delay;
  24.     &'s_print($'server[$userno], '', 'MODE', $chan, '+o', shift(@names));
  25.     $operlist{$key} = &'list(@names);
  26.     $wait[$userno] = 0;
  27.   }
  28. }
  29.  
  30. sub ss_join {
  31.   local($serverno, $prefix, $cmd, $chan) = @_;
  32.   local($userno, $nick, $regex, $name, $mode, $delay);
  33.   $userno = $'userno[$serverno];
  34.   $nick = &'prefix($prefix);
  35.   ($name, $mode) = (split(/\cG/, $chan), '');
  36.   if ($nick ne $'nick[$serverno] && index($mode, 'o') == -1) {
  37.     foreach $not (&'property($userno, 'not')) {
  38.       $regex = &'regex($not);
  39.       return ($prefix, $cmd, $chan) if $prefix =~ /$regex/i;
  40.     }
  41.     foreach $user (&'property($userno, 'user')) {
  42.       $regex = &'regex($user);
  43.       next unless $prefix =~ /$regex/i;
  44.       $delay = &'property($userno, 'delay');
  45.       $delay = $DELAY unless defined($delay);
  46.       if ($delay) {
  47.         $operlist{$userno, $name} = &'add($operlist{$userno, $name}, $nick);
  48.       } else {
  49.         &'s_print($serverno, '', 'MODE', $name, '+o', $nick);
  50.       }
  51.       return ($prefix, $cmd, $chan);
  52.     }
  53.   }
  54.   return ($prefix, $cmd, $chan);
  55. }
  56.  
  57. sub ss_mode {
  58.   local($serverno, $prefix, $cmd, @params) = @_;
  59.   local($chan, $mode, @modes) = @params;
  60.   local($userno, $flag, $name);
  61.   $userno = $'userno[$serverno];
  62.   foreach $char (split(//, $mode)) {
  63.     if ($char eq '+' || $char eq '-') {
  64.       $flag = $char;
  65.     } elsif ($char eq 'b') {
  66.       shift(@modes);
  67.     } elsif ($char eq 'i') {
  68.     } elsif ($char eq 'k') {
  69.       shift(@modes);
  70.     } elsif ($char eq 'l') {
  71.       shift(@modes) if $flag eq '+';
  72.     } elsif ($char eq 'o') {
  73.       $name = shift(@modes);
  74.       if ($flag eq '+') {
  75.         $operlist{$userno, $chan} = &'remove($operlist{$userno, $chan}, $name);
  76.       }
  77.     } elsif ($char eq 'v') {
  78.       shift(@modes);
  79.     }
  80.   }
  81.   return ($prefix, $cmd, @params);
  82. }
  83.  
  84. sub ss_nick {
  85.   local($serverno, $prefix, $cmd, $newnick) = @_;
  86.   local($userno, $nick, $no, $chan);
  87.   $userno = $'userno[$serverno];
  88.   $nick = &'prefix($prefix);
  89.   if ($nick ne $'nick[$serverno]) {
  90.     foreach $key (keys(%operlist)) {
  91.       ($no, $chan) = split(/$;/, $key, 2);
  92.       next unless $no == $userno;
  93.       $operlist{$no, $chan} = &'change($operlist{$no, $chan}, $nick, $newnick);
  94.     }
  95.   }
  96.   return ($prefix, $cmd, $newnick);
  97. }
  98.  
  99. sub ss_part {
  100.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  101.   local($nick, $userno);
  102.   $userno = $'userno[$serverno];
  103.   $nick = &'prefix($prefix);
  104.   if ($nick eq $'nick[$serverno]) {
  105.     delete $operlist{$userno, $chan};
  106.   } else {
  107.     $operlist{$userno, $chan} = &'remove($operlist{$userno, $chan}, $nick);
  108.   }
  109.   return ($prefix, $cmd, $chan, $msg);
  110. }
  111.  
  112. sub ss_quit {
  113.   local($serverno, $prefix, $cmd, $msg) = @_;
  114.   local($userno, $nick, $no, $chan);
  115.   $userno = $'userno[$serverno];
  116.   $nick = &'prefix($prefix);
  117.   foreach $key (keys(%operlist)) {
  118.     ($no, $chan) = split(/$;/, $key, 2);
  119.     next unless $no == $userno;
  120.     $operlist{$no, $chan} = &'remove($operlist{$no, $chan}, $nick);
  121.   }
  122.   return ($prefix, $cmd, $msg);
  123. }
  124.  
  125. sub ss_kick {
  126.   local($serverno, $prefix, $cmd, $chan, $who, $msg) = @_;
  127.   local($userno) = $'userno[$serverno];
  128.   if ($who eq $'nick[$serverno]) {
  129.     delete $operlist{$userno, $chan};
  130.   } else {
  131.     $operlist{$userno, $chan} = &'remove($operlist{$userno, $chan}, $who);
  132.   }
  133.   return ($prefix, $cmd, $chan, $who, $msg);
  134. }
  135.  
  136. __END__
  137. --><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  138. <HTML><HEAD><TITLE> channel/mode/oper/set.plm </TITLE></HEAD><BODY>
  139.  
  140. $B%*%s%i%$%s%I%-%e%a%s%H(B
  141.  
  142.  
  143. <HR><H3> $BL>A0(B </H3>
  144.  
  145. channel/mode/oper/set.plm - $BFCDj$N?M$r%A%c%s%M%k%*%Z%l!<%?$K$9$k(B
  146.  
  147.  
  148. <HR><H3> $B@bL@(B </H3>
  149.  
  150. $B%A%c%s%M%k$KF~$C$F$-$??M$,;XDj$5$l$??M$J$i!"(B
  151. $B$=$N?M$r%A%c%s%M%k%*%Z%l!<%?$K$7$^$9!#(B
  152. $B<B:]$K$O%A%c%s%M%k$KF~$C$F$-$?$H$-$K$9$0$K%A%c%s%M%k%*%Z%l!<%?(B
  153. $B$K$9$k$o$1$G$O$J$/!"0lDj;~4VBT$C$F$+$i%A%c%s%M%k%*%Z%l!<%?$K$7$^$9!#(B
  154.  
  155.  
  156. <HR><H3> $B%W%m%Q%F%#(B </H3>
  157.  
  158. <DL>
  159. <DT> channel.mode.oper.set.delay $BBT$A;~4V(B
  160. <DD>    $B%A%c%s%M%k%*%Z%l!<%?$K$9$k$^$G$NBT$A;~4V$G$9!#(B
  161.         $BC/$+$,%A%c%s%M%k$KF~$C$F$/$k$H!"(B
  162.         $B$3$3$G;XDj$5$l$?$N?t$@$1FbIt$G%+%&%s%H$7!"(B
  163.         $B$=$N8e$G$=$N?M$r%A%c%s%M%k%*%Z%l!<%?$K$7$^$9!#(B
  164.         $B%G%U%)%k%H$G$O(B20$B$H$J$C$F$$$^$9!#(B
  165. <DT> channel.mode.oper.set.not* $B%f!<%6%^%9%/(B
  166. <DD>    $B%A%c%s%M%k$KF~$C$F$-$??M$,$3$3$G;XDj$5$l$?$b$N$K%^%C%A$7$?$i!"(B
  167.         $B$=$N?M$O%A%c%s%M%k%*%Z%l!<%?$K$7$^$;$s!#(B
  168.         $B$3$N;XDj$O!V(Bchannel.mode.oper.set.user$B!W$h$jM%@h$5$l$^$9!#(B
  169. <DT> channel.mode.oper.set.user* $B%f!<%6%^%9%/(B
  170. <DD>    $B%A%c%s%M%k$KF~$C$F$-$??M$,$3$3$G;XDj$5$l$?$b$N$K%^%C%A$7$?$i!"(B
  171.         $B$=$N?M$r%A%c%s%M%k%*%Z%l!<%?$K$7$^$9!#(B
  172. </DL>
  173.  
  174.  
  175. <HR><H3> $B@_DjNc(B </H3>
  176.  
  177. <PRE>
  178. + channel/mode/oper/set.plm
  179. channel.mode.oper.set.user: pupu_j!*@*
  180. channel.mode.oper.set.user: pupu_d!*@*
  181. </PRE>
  182.  
  183. $B%A%c%s%M%k$KF~$C$F$-$??M$,!V(Bpupu_j!*@*$B!W$+!V(Bpupu_d!*@*$B!W$K%^%C%A$9$k$H!"(B
  184. $B$=$N?M$r%A%c%s%M%k%*%Z%l!<%?$K$7$^$9!#(B
  185.  
  186. <PRE>
  187. + channel/mode/oper/set.plm
  188. channel.mode.oper.set.delay: 0
  189. channel.mode.oper.set.not: *!*@*.com
  190. channel.mode.oper.set.user: *!*@*
  191. </PRE>
  192.  
  193. $B%A%c%s%M%k$KF~$C$F$-$??M$,!V(B*!*@*.com$B!W$K%^%C%A$7$J$1$l$P!"(B
  194. $B$9$0$K$=$N?M$r%A%c%s%M%k%*%Z%l!<%?$K$7$^$9!#(B
  195.  
  196. </BODY></HTML>
  197.