home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 1.x / plum11.lzh / plum11 / yuurii.plm < prev   
Text File  |  1997-08-28  |  4KB  |  180 lines

  1. package yuurii;
  2.  
  3. require 'jcode.pl';
  4.  
  5. $PLUGINRC = '.pluginrc';
  6. $LOGHEADER = '%h:%m';
  7. $timer_count_def = 2000;
  8. $lasttime = time;
  9. $bot_cache_mes = 50;
  10. @cache_mes = ();
  11. $autojoinchanlist = $;;
  12. $chanlist = $;;
  13. $logmode = (&'property($'userno, 'filemode') || (umask ^ 0666)) | 0200;
  14.  
  15. $_ = 'yuurii';
  16.  
  17. sub main_loop {
  18.   local($userno) = @_;
  19.   local($nowtime, $i);
  20.   $nowtime = time;
  21.   &setuser($userno);
  22.   for ($i = $lasttime; $i < $nowtime; $i++) {
  23.     foreach $chan (&'array($autojoinchanlist)) {
  24.       $time_count{$chan}-- if $time_count{$chan} > 0;
  25.       $time_count{$chan}++ if $time_count{$chan} < 0;
  26.     }
  27.     &plugin($userno, 'bot_timer');
  28.   }
  29.   $lasttime = $nowtime;
  30. }
  31.  
  32. sub ss_join {
  33.   local($serverno, $prefix, $cmd, $chan) = @_;
  34.   local($nick, $name, $mode, $vchan);
  35.   $nick = &'prefix($prefix);
  36.   ($name, $mode) = (split(/\cG/, $chan), '');
  37.   $vchan = &'vchan($name);
  38.   &setuser($'userno[$serverno]);
  39.   if ($nick eq $'nick[$serverno]) {
  40.     $time_count{$vchan} = $timer_count_def;
  41.     $autojoinchanlist = &'add($autojoinchanlist, $vchan);
  42.     $chanlist = &'add($chanlist, $vchan);
  43.   } else {
  44.     &plugin($'userno[$serverno], $cmd, $chan, $nick, '');
  45.   }
  46.   return ($prefix, $cmd, $chan);
  47. }
  48.  
  49. sub ss_kick {
  50.   local($serverno, $prefix, $cmd, $chan, $who, $msg) = @_;
  51.   local($vchan) = &'vchan($chan);
  52.   if ($who eq $'nick[$serverno]) {
  53.     $chanlist = &'remove($chanlist, $vchan);
  54.   }
  55.   &setuser($'userno[$serverno]);
  56.   return ($prefix, $cmd, $chan, $who, $msg);
  57. }
  58.  
  59. sub ss_nick {
  60.   local($serverno, $prefix, $cmd, $newnick) = @_;
  61.   local($nick) = &'prefix($prefix);
  62.   &setuser($'userno[$serverno]);
  63.   if ($nick eq $'nick[$serverno]) {
  64.     $my_nick = $newnick;
  65.   } else {
  66.     &plugin($'userno[$serverno], $cmd, 'ALL', $newnick, $nick);
  67.   }
  68.   return ($prefix, $cmd, $newnick);
  69. }
  70.  
  71. sub ss_part {
  72.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  73.   local($nick, $vchan);
  74.   $nick = &'prefix($prefix);
  75.   local($vchan) = &'vchan($chan);
  76.   if ($nick eq $'nick[$serverno]) {
  77.     $autojoinchanlist = &'remove($autojoinchanlist, $vchan);
  78.     $chanlist = &'remove($chanlist, $vchan);
  79.   }
  80.   &setuser($'userno[$serverno]);
  81.   &plugin($'userno[$serverno], $cmd, $chan, $nick, '');
  82.   return ($prefix, $cmd, $chan, $msg);
  83. }
  84.  
  85. sub ss_privmsg {
  86.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  87.   local($nick) = &'prefix($prefix);
  88.   &setuser($'userno[$serverno]);
  89.   &plugin($'userno[$serverno], $cmd, $chan, $nick, $msg);
  90.   return ($prefix, $cmd, $chan, $msg);
  91. }
  92.  
  93. sub ExistList {
  94.   local($list, $item) = @_;
  95.   return &'exist($list, $item);
  96. }
  97.  
  98. sub local_chan {
  99.   local($chan) = @_;
  100.   if ($chan) {
  101.     return (&'rchan($chan), &'vchan($chan));
  102.   } else {
  103.     return ('', '');
  104.   }
  105. }
  106.  
  107. sub now_time {
  108.   local($tmp);
  109.   ($sec, $min, $hour, $mday, $mon, $year) = localtime(time);
  110.   $mon++;
  111.   $year += 1900;
  112.   $header = &'property($userno, 'logheader') || $LOGHEADER;
  113.   $tmp = sprintf('%02d', $hour);
  114.   $header =~ s/\%h/$tmp/g;
  115.   $tmp = sprintf('%02d', $min);
  116.   $header =~ s/\%m/$tmp/g;
  117.   $tmp = sprintf('%02d', $sec);
  118.   $header =~ s/\%s/$tmp/g;
  119. }
  120.  
  121. sub plugin {
  122.   local($userno) = shift;
  123.   local($command) = shift;
  124.   local($pluginrc) = &'property($userno, 'yuurii') || $PLUGINRC;
  125.   do $pluginrc;
  126. }
  127.  
  128. sub redo {
  129.   local($file) = @_;
  130.   $modify{$file} = 0 unless $modify{$file};
  131.   return if $modify{$file} == (stat($file))[9];
  132.   $modify{$file} = (stat($file))[9];
  133.   do $file;
  134. }
  135.  
  136. sub sendCchan {
  137.   local($msg) = @_;
  138.   local($prefix, $cmd, @params);
  139.   chop($msg);
  140.   ($prefix, $cmd, @params) = &'parse($msg);
  141.   foreach $clientno (&'array($'clientlist)) {
  142.     next unless $'userno[$clientno] == $userno;
  143.     next unless $'avail[$clientno];
  144.     &'c_print($clientno, $prefix, $cmd, @params);
  145.   }
  146. }
  147.  
  148. sub sendS {
  149.   local($msg) = @_;
  150.   chop($msg);
  151.   &'s_print($'server[$userno], &'parse($msg));
  152. }
  153.  
  154. sub sendSCL {
  155.   local($msg, $chan) = @_;
  156.   local($rchan, $vchan) = &local_chan($chan);
  157.   &sendCchan(":$'nickname[$userno] PRIVMSG $rchan :$msg\n");
  158.   &sendS("PRIVMSG $rchan :$msg\n");
  159.   push(@cache_mes, ">$vchan< $msg");
  160.   shift(@cache_mes) if scalar(@cache_mes) > $bot_cache_mes;
  161. }
  162.  
  163. sub cached {
  164.   local($msg, $chan) = @_;
  165.   local($vchan) = &'vchan($chan);
  166.   foreach $cache (@cache_mes) {
  167.     return if ($cache eq ">$vchan< $msg");
  168.   }
  169.   &sendSCL($msg, $chan);
  170. }
  171.  
  172. sub setuser {
  173.   local($userno) = @_;
  174.   $my_nick = $'nickname[$userno];
  175.   foreach $chan (&'array($chanlist)) {
  176.     $nameslist{&'vchan($chan)} = $'nameslist{$userno, $chan};
  177.   }
  178. }
  179.  
  180.