home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 2.x / plum2_32_1.lzh / module / channel / join / connect.plm next >
Text File  |  1999-02-20  |  5KB  |  157 lines

  1. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- $_ if 0; # -*- perl -*-
  2. # $Id: connect.plm,v 2.14 1999/01/20 14:49:20 hasegawa Exp $
  3. # copyright (c)1998-1999 Yoshinori Hasegawa <hasegawa@madoka.org>
  4.  
  5. package channel_join_connect;
  6.  
  7. $_ = 'channel_join_connect';
  8.  
  9. sub server_open {
  10.   local($serverno) = @_;
  11.   local($userno, $i, $chan, $key, @chan, @key, $name, $keylist);
  12.   $userno = $'userno[$serverno];
  13.   if (!defined($joinlist[$userno])) {
  14.     $joinlist[$userno] = '';
  15.     $keylist = '';
  16.     foreach $channel (&'property($userno, 'channel')) {
  17.       ($chan, $key) = split(/\s+/, $channel, 2);
  18.       @chan = split(/\,/, $chan);
  19.       @key = split(/\,/, $key || '');
  20.       for ($i = 0; $i < @chan; $i++) {
  21.         $name = &'real($chan[$i]);
  22.         next unless $name;
  23.         $joinlist[$userno] = &'add($joinlist[$userno], $name);
  24.         if ($key[$i] && !$keyword{$userno, $name}) {
  25.           $keyword{$userno, $name} = $key[$i];
  26.         }
  27.         $keylist = &'add($keylist, $keyword{$userno, $name} || '');
  28.       }
  29.     }
  30.   }
  31.   if ($joinlist[$userno]) {
  32.     &'s_print($serverno, '', 'JOIN', join(',', &'array($joinlist[$userno])), join(',', &'array($keylist)));
  33.   }
  34. }
  35.  
  36. sub module_disable {
  37.   local($userno) = @_;
  38.   local($no, $chan);
  39.   undef($joinlist[$userno]);
  40.   foreach $key (keys(%keyword)) {
  41.     ($no, $chan) = split(/$;/, $key, 2);
  42.     next unless $no == $userno;
  43.     delete $keyword{$key};
  44.   }
  45. }
  46.  
  47. sub ss_join {
  48.   local($serverno, $prefix, $cmd, @params) = @_;
  49.   local($name, $mode);
  50.   ($name, $mode) = (split(/\cG/, $params[0]), '');
  51.   $joinlist[$'userno[$serverno]] = &'add($joinlist[$'userno[$serverno]], $name) if &'prefix($prefix) eq $'nick[$serverno];
  52.   return ($prefix, $cmd, @params);
  53. }
  54.  
  55. sub ss_kick {
  56.   local($serverno, $prefix, $cmd, @params) = @_;
  57.   $joinlist[$'userno[$serverno]] = &'remove($joinlist[$'userno[$serverno]], $params[0]) if $params[1] eq $'nick[$serverno];
  58.   return ($prefix, $cmd, @params);
  59. }
  60.  
  61. sub ss_part {
  62.   local($serverno, $prefix, $cmd, @params) = @_;
  63.   $joinlist[$'userno[$serverno]] = &'remove($joinlist[$'userno[$serverno]], $params[0]) if &'prefix($prefix) eq $'nick[$serverno];
  64.   return ($prefix, $cmd, @params);
  65. }
  66.  
  67. sub ss_mode {
  68.   local($serverno, $prefix, $cmd, @params) = @_;
  69.   local($chan, $mode, @modes, $char, $flag, $name, $i);
  70.   ($chan, $mode, @modes) = @params;
  71.   if (&'channel($chan)) {
  72.     for ($i = 0; $i < length($mode); $i++) {
  73.       $char = substr($mode, $i, 1);
  74.       if ($char eq '+' || $char eq '-') {
  75.         $flag = $char;
  76.       } elsif ($char eq 'b') {
  77.         shift(@modes);
  78.       } elsif ($char eq 'e') {
  79.         shift(@modes);
  80.       } elsif ($char eq 'I') {
  81.         shift(@modes);
  82.       } elsif ($char eq 'k') {
  83.         if ($flag eq '+') {
  84.           $keyword{$'userno[$serverno], $chan} = shift(@modes);
  85.         } else {
  86.           delete $keyword{$'userno[$serverno], $chan};
  87.           shift(@modes);
  88.         }
  89.       } elsif ($char eq 'l') {
  90.         if ($flag eq '+') {
  91.           shift(@modes);
  92.         }
  93.       } elsif ($char eq 'O') {
  94.         shift(@modes);
  95.       } elsif ($char eq 'o') {
  96.         shift(@modes);
  97.       } elsif ($char eq 'v') {
  98.         shift(@modes);
  99.       }
  100.     }
  101.   }
  102.   return ($prefix, $cmd, @params);
  103. }
  104.  
  105. __END__
  106. --><HTML><HEAD>
  107. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">
  108. <LINK REV="made" HREF="mailto:hasegawa@madoka.org">
  109. <TITLE>channel/join/connect.plm</TITLE></HEAD><BODY>
  110.  
  111. $B%*%s%i%$%s%I%-%e%a%s%H(B
  112.  
  113.  
  114. <HR><H3>$BL>A0(B</H3>
  115.  
  116. channel/join/connect.plm - $B%5!<%P$K@\B3$7$?$H$-$K;XDj$7$?%A%c%s%M%k$KF~$k(B
  117.  
  118.  
  119. <HR><H3>$B@bL@(B</H3>
  120.  
  121. $B%5!<%P$K@\B3$7$?$H$-$K!";XDj$7$?%A%c%s%M%k$KF~$j$^$9!#(B
  122. $B%5!<%P$H$N@\B3$,@Z$l$F:F$S@\B3$7D>$7$?$H$-$O!"(B
  123. $B;XDj$7$?%A%c%s%M%k$H$O4X78$J$/!"(B
  124. $B@\B3$,@Z$l$kA0$KF~$C$F$$$?%A%c%s%M%k$KF~$j$^$9!#(B
  125.  
  126.  
  127. <HR><H3>$B%W%m%Q%F%#(B</H3>
  128.  
  129. <DL>
  130. <DT>  channel.join.connect.channel* ($B%A%c%s%M%k(B) ($B%-!<(B)
  131. </DT>
  132. <DD>    $B%5!<%P$K@\B3$7$?$H$-$KF~$k%A%c%s%M%k$r;XDj$7$^$9!#(B
  133.         $B%A%c%s%M%k$N%-!<$,;XDj$5$l$F$$$k$H$-$O!"$=$N%-!<$r;H$$$^$9!#(B
  134. </DD>
  135. </DL>
  136.  
  137.  
  138. <HR><H3>$B@_DjNc(B</H3>
  139.  
  140. <PRE>
  141. + channel/join/connect.plm
  142. channel.join.connect.channel: #$B$^$I$+(B mdk
  143. </PRE>
  144.  
  145. $B%5!<%P$K@\B3$7$?$H$-$K!"!V(B#$B$^$I$+!W$K!V(Bmdk$B!W$H$$$&%-!<$GF~$j$^$9!#(B
  146.  
  147. <PRE>
  148. + channel/join/connect.plm
  149. channel.join.connect.channel: #$B$^$I$+(B:*.jp,#$B$W$i$`(B:*.jp
  150. channel.join.connect.channel: #$B$W$i$`(B
  151. </PRE>
  152.  
  153. $B%5!<%P$K@\B3$7$?$H$-$K!"!V(B#$B$^$I$+(B:*.jp$B!W!"!V(B#$B$W$i$`(B:*.jp$B!W!"(B
  154. $B!V(B#$B$W$i$`!W$N(B3$B$D$N%A%c%s%M%k$KF~$j$^$9!#(B
  155.  
  156. </BODY></HTML>
  157.