home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 35 Internet
/
35-Internet.zip
/
hostmgr.zip
/
PROBE.PL
< prev
next >
Wrap
Perl Script
|
1999-07-07
|
13KB
|
361 lines
#!\perl5\bin\perl
print uuencode("d:/myhost/hostman.arj","1.UUE","644");
print uudecode("1.uue","hostman.arq");
sub uuencode
{ my($in,$file,$mode) = @_;
my($chunk,@result,$r);
$mode ||= "644";
open FILE,$in || return "";
binmode FILE;
while (defined($r = read(FILE,$chunk,45)) && $r > 0)
{
push @result, uuencode_chunk($chunk);
};
my (@name) = split /[\:\\\/]/,$in;
$out = join "", "begin $mode @name[$#name]\n", @result, "end\n";
if ($file)
{ open FILE,">$file";
print FILE $out;
close FILE;
}
return $out;
}
sub uuencode_chunk
{
my($string) = shift;
my $encoded_string = pack("u", $string); # unix uuencode
return $encoded_string;
}
sub uudecode
{ my($in,$out) = @_;
my(@result,$file,$mode);
$mode = $file = "";
open FILE,$in || return "";
local($\) = "\n";
binmode FILE;
while (<FILE>)
{ if ($file eq "" and !$mode)
{
($mode,$file) = ($1, $2) if /^begin\s+(\d+)\s+(\S+)/ ;
next;
}
last if /^end/;
push @result, uudecode_chunk($_);
};
if ($file and $mode)
{open FILE,">$out" || return "";
binmode FILE;
foreach (@result)
{syswrite FILE,$_,length $_;
};
close FILE;
}
return $file;
}
sub uudecode_chunk {
my($chunk) = @_;
return "" if $chunk =~ /^(?:--|CREATED)/;
my $string = substr($chunk,0,int((((ord($chunk) - 32) & 077) + 2) / 3)*4+1);
# warn "DEBUG: string [$string]";
# my $return = unpack("u", $string);
# warn "DEBUG: return [$return]";
# $return;
my $ret = unpack("u", $string);
defined $ret ? $ret : "";
}
sub RunGame
{ my ($GNum) = @_;
my ($i);
$command = $GAMES{"Run$GNum"};
$command = ChngSlash($command);
printlog("[Run $GNum] Now perform command : $command\n");
system($command);
$GAMEINFO{"RunDay"} = GetCurDays();
for ($i = 1; $i <= 11; $i++)
{SentTurn($GNum,$i);
}
};
sub CheckGame
{ my ($GNum) = @_;
TakeGameInfo($GNum,1);
$HoursGo = GetCurDays()*24 + GetCurTime()/3600 -
$GAMEINFO{"CheckDay"}*24 - $GAMEINFO{"CheckTime"}/3600;
$NewCheck = ($GAMEINFO{"CheckDay"}*24*60*60 + $GAMEINFO{"CheckTime"} <
$GAMEINFO{"CheckDay"}*24*60*60 + $GAMES{"Time$GNum"} and
GetCurDays()*24*60*60 + GetCurTime() >
$GAMEINFO{"CheckDay"}*24*60*60 + $GAMES{"Time$GNum"}) ? 1 : 0;
if ($GAMEINFO{"RunOption"} eq "RunGamemaster")
#ºá»πΘÑ¡ º¼ÑѼ-úÑ⌐¼¼áßΓÑα«¼
{RunGame($GNum);
printlog ("[Run $GNum] èá¬πε-Γπ ¿¡ΣѬµ¿ε ßÑ⌐τáß Γδ ºá»πßΓ¿½ ...\n");
printlog ("[Run $GNum] çá»π߬ ó αѪ¿¼Ñ GAMEMASTER ...\n");
$GAMEINFO{"RunOption"} = "RunGameMaster";
}
elsif
($GAMEINFO{"RunOption"} eq "SleepGamemaster")
#ß½¿»¡πΓ º¼ÑѼ-úÑ⌐¼¼áßΓÑα«¼
{DoSleep($GNum);
printlog ("[Sleep $GNum] ò«ßΓ ß»¿Γ - »πßΓ∞ º¡áεΓ óßÑ ...\n");
}
elsif ($GAMEINFO{"AllTurns"})
#»α¿ßπΓßΓóπεΓ éæà Γα¡-¬¿
{RunGame($GNum);
printlog ("[Run $GNum] èᬠºñ«α«ó«, τΓ« óßÑ ¼δ ºñÑß∞ ßÑú«ñ¡∩ ß«íα὿ß∞ ...\n");
if ( ($GAMEINFO{"TimeOut"}) || #á) Ī¿ñá¡¿Ñ;
((substr($GAMES{"Days$GNum"},GetCurDay,1) =~ /r/i) && #í) ê Γᬠíδ
($GAMEINFO{"RunDay"} != GetCurDays())) || # ºá»πßΓ¿½¿.
($GAMEINFO{"RunOption"} = "RunImmediate") ) #ó) «ª¿ñ὿ 9¬π
{printlog ("[Run $GNum] çá»π߬ ó αѪ¿¼Ñ NORMAL ...\n");
$GAMEINFO{"TimeOut"} = 0;
$GAMEINFO{"RunOption"} = "RunNormal";
}
else
{printlog ("[Run $GNum] çá»π߬ ó αѪ¿¼Ñ ALLPRESENT ...\n");
$GAMEINFO{"RunOption"} = "RunByAll";
}
}
elsif
($GAMEINFO{"TimeOut"})
#¡áσ«ñ¿¼ß∩ ó αѪ¿¼Ñ ÄåêäÇìêƒ
{if ($HoursGo)
{printlog("[Check $GNum] Ī¿ñá¡¿Ñ ºá»π߬á...\n");
if ($GAMEINFO{"Summ"} >= $GAMEINFO{"Need"} && $GAMEINFO{"AllNine"} && $NewCheck)
{RunGame($GNum);
printlog("[Run $GNum] ä«Γ∩¡π½ ¡á ºá»áß¡«¼, ßΓÑαóѵ ...\n");
printlog("[Run $GNum] çá»π߬ ó αѪ¿¼Ñ NORMAL ...\n");
$GAMEINFO{"RunOption"} = "RunNormal";
}
elsif
($HoursGo >= $GAMEINFO{"TimeOut"})
{RunGame($GNum);
printlog("[Run $GNum] ìÑ π߻ѽ¿, ¡Ñ π߻ѽ¿ ...\n");
printlog("[Run $GNum] çá»π߬ ó αѪ¿¼Ñ TIMEOUT ...\n");
$GAMEINFO{"RunOption"} = "RunTimeOut";
}
else
{$GAMEINFO{"TimeOut"} -= $HoursGo;
printlog("[Wait $GNum] ... ¡« α«ó¡« τÑαѺ $GAMEINFO{'TimeOut'} τáß(á,«ó) «¡ »α«ß¡ÑΓß∩ ...\n");
DoSleep($GNum) if $NewCheck;
}
}
else
{return 0;
}
}
elsif
($NewCheck)
#¡áßΓπ»¿½« óαѼ∩ »α«óÑα¿Γ∞ Σ½áú¿
{printlog ("[Check $GNum] Åα¿Φ½á »«αá »α«óÑα¿Γ∞ ß«íδΓ¿Ñ ...\n");
if (substr($GAMES{"Days$GNum"},GetCurDay,1) =~ /s/i)
{ DoSleep($GNum);
printlog("[Sleep $GNum] 滿¼, í½∩ ...\n");
}
elsif
(substr($GAMES{"Days$GNum"},GetCurDay,1) =~ /c/i)
{ printlog("[Check $GNum] Å«ß¼«Γα¿¼, »«ß¼«Γα¿¼ ...\n");
if ( ($GAMEINFO{"RunOption"} eq "RunByAll") ||
($GAMEINFO{"RunOption"} eq "RunGameMaster") )
{DoSleep($GNum);
printlog("[Sleep $GNum] Å«¬á »α«¡Ñß½«, á τΓ« ñá½∞ΦÑ ...\n");
printlog("[Sleep $GNum] ÉѪ¿¼ ¿º¼Ñ¡Ñ¡ ¡á NORMAL ...\n");
$GAMEINFO{"RunOption"} = "RunNormal";
}
elsif
( $GAMEINFO{"RunOption"} eq "RunImmediate" )
{RunGame($GNum);
printlog("[Run $GNum] äá¡ »α¿¬áº Ѽπ ¡á ºá»π߬ ...\n");
printlog("[Run $GNum] çá»π߬ »α«¿ºóÑñÑ¡ ó αѪ¿¼Ñ NORMAL ...\n");
$GAMEINFO{"RunOption"} = "RunNormal";
}
elsif
( $GAMEINFO{"Summ"} >= $GAMEINFO{"Need"} )
{ unless ($GAMEINFO{"RunOption"} eq "RunTimeOut")
{DecWeights($GNum);
printlog("[Dec $GNum] èΓ« ¡Ñ ΓπΓ - π»á½, «Γªá½ß∩ ...\n");
};
if ($GAMEINFO{"AllNine"})
{RunGame($GNum);
printlog("[Run $GNum] òóáΓ¿½« óα«ñÑ ...\n");
printlog("[Run $GNum] çá»π߬ »α«¿ºóÑñÑ¡ ó αѪ¿¼Ñ NORMAL ...\n");
$GAMEINFO{"RunOption"} = "RunNormal";
}
else
{DoSleep($GNum);
printlog("[Sleep $GNum] Ç ó«Γ ñÑó∩Γ«¬-Γ« ¿ ¡Ñ σóáΓáÑΓ ...\n");
printlog("[Sleep $GNum] æ½ÑñπεΘ¿⌐ ºá»π߬ ß«ßΓ«¿Γß∩ ó ½εíπε »«ú«ñπ ...\n");
$GAMEINFO{"RunOption"} = "RunImmediate";
};
}
else
{ unless ($GAMEINFO{"RunOption"} eq "RunTimeOut")
{DecWeights($GNum);
printlog("[Dec $GNum] èΓ« ¡Ñ ΓπΓ - π»á½, «Γªá½ß∩ ...\n");
};
DoSleep($GNum);
printlog("[Sleep $GNum] îá½áóáΓá íπñÑΓ ...\n");
if ($GAMES{"Wait$GNum"})
{$GAMEINFO{"TimeOut"} = $GAMES{"Wait$GNum"};
printlog("[Sleep $GNum] ... ¿ ó ºá»áßÑ π ¡Ñú«(¡¿σ) «ßΓὫß∞ $GAMEINFO{'TimeOut'} τáß(á,«ó) ...\n");
}
else
{$GAMEINFO{"RunOption"} = "RunImmediate";
printlog("[Sleep $GNum] æ½ÑñπεΘ¿⌐ ºá»π߬ ß«ßΓ«¿Γß∩ ó ½εíπε »«ú«ñπ ...\n");
}
};
}
elsif
(substr($GAMES{"Days$GNum"},GetCurDay,1) =~ /r/i)
{printlog("[Check $GNum] Two beer or not two beer ...\n");
if ( ($GAMEINFO{"RunOption"} eq "RunByAll") ||
($GAMEINFO{"RunOption"} eq "RunGameMaster") )
{DoSleep($GNum);
printlog("[Sleep $GNum] Å«¬á »α«¡Ñß½«, á τΓ« ñá½∞ΦÑ ...\n");
printlog("[Sleep $GNum] ÉѪ¿¼ ¿º¼Ñ¡Ñ¡ ¡á NORMAL ...\n");
$GAMEINFO{"RunOption"} = "RunNormal";
}
elsif
( ($GAMEINFO{"RunOption"} eq "RunTimeOut") && ($GAMES{"Wait$GNum"} > 0) )
{DoSleep($GNum);
printlog("[Sleep $GNum] Å«¬á »α«¡Ñß½«, á τΓ« ñá½∞ΦÑ ...\n");
printlog("[Sleep $GNum] æ½ÑñπεΘ¿⌐ ºá»π߬ ß«ßΓ«¿Γß∩ ó ½εíπε »«ú«ñπ ...\n");
$GAMEINFO{"RunOption"} = "RunImmediate";
}
else
{unless ($GAMEINFO{"RunOption"} eq "RunTimeOut")
{DecWeights($GNum);
printlog("[Dec $GNum] èΓ« ¡Ñ ΓπΓ - π»á½, «Γªá½ß∩ ...\n");
};
RunGame($GNum);
printlog("[Run $GNum] Å«αá, íαáΓ, »«αá ...\n");
printlog("[Run $GNum] çá»π߬ »α«¿ºóÑñÑ¡ ó αѪ¿¼Ñ - NORMAL ...\n");
$GAMEINFO{"RunOption"} = "RunNormal";
};
};
};
$GAMEINFO{"CheckDay"} = GetCurDays();
$GAMEINFO{"CheckTime"} = GetCurTime();
SaveParams($GNum);
};
sub CheckNextRun
{ my ($GNum) = @_;
print "GNum = $GNum\n";
TakeGameInfo($GNum,1);
if ($GAMEINFO{"TimeOut"})
{$NextRun = "æ½ÑñπεΘ¿⌐ ºá»π߬ : ".AddTime(0,$GAMEINFO{"TimeOut"}*3600,$GNum);
}
elsif
( !($GAMES{"Days$GNum"} =~ /c|r/i) ||
!($GAMES{"Run$GNum"}) )
{$NextRun = "æ½ÑñπεΘ¿⌐ ºá»π߬ : »« »α¿σ«ñπ óßÑσ Γα¡ ¿½¿\n".
" ¿úαá íπñÑΓ ºá»πΘÑ¡á óαπτ¡πε âî.";
}
else
{$AddDays = $GAMEINFO{"CheckTime"} > $GAMES{"Time$GNum"} ? 0 : 1;
$DayValue = (GetCurDay() + $AddDays) % 7;
$AddTime = 0;
$FirstPoint = -1;
$RunOption = $GAMEINFO{"RunOption"};
while ($AddDays <= 14)
{if (substr($GAMES{"Days$GNum"},$DayValue,1) =~ /s/i)
{$AddDays++; $DayValue = $DayValue == 6 ? 0 : $DayValue+1;
print "s-$AddDays\n";
}
elsif
(substr($GAMES{"Days$GNum"},$DayValue,1) =~ /c/i)
{print "c-$AddDays\n";
if ( $RunOption eq "RunByAll" ||
$RunOption eq "RunGameMaster" )
{$AddDays++; $DayValue = $DayValue == 6 ? 0 : $DayValue+1;
$RunOption = "RunNormal";
}
elsif
( $RunOption eq "RunImmediate" )
{ last;
}
elsif
( $GAMEINFO{"Summ"} >= $GAMEINFO{"Need"} )
{ if ($GAMEINFO{"AllNine"})
{ last;
}
else
{ $FirstPoint = $AddDays;
$AddDays++; $DayValue = $DayValue == 6 ? 0 : $DayValue+1;
$RunOption = "RunImmediate";
};
}
else
{ if ($GAMES{"Wait$GNum"})
{$FirstPoint = $AddDays;
$AddTime = $GAMES{"Wait$GNum"};
last;
}
else
{$FirstPoint = $AddDays;
$AddDays++; $DayValue = $DayValue == 6 ? 0 : $DayValue+1;
$RunOption = "RunImmediate";
}
};
}
elsif
(substr($GAMES{"Days$GNum"},$DayValue,1) =~ /r/i)
{if ( $RunOption eq "RunByAll" ||
$RunOption eq "RunGameMaster" )
{$AddDays++; $DayValue = $DayValue == 6 ? 0 : $DayValue+1;
$RunOption = "RunNormal";
}
elsif
( ($RunOption eq "RunTimeOut") && ($GAMES{"Wait$GNum"} > 0) )
{$FirstPoint = $AddDays;
$AddDays++; $DayValue = $DayValue == 6 ? 0 : $DayValue+1;
$RunOption = "RunImmediate";
}
else
{last;
};
}
else
{$AddDays++; $DayValue = $DayValue == 6 ? 0 : $DayValue+1;
print "e-$AddDays-$DayValue\n";
}
};
print "Tre - $AddDays - $DayValue\n";
if ($AddDays > 14)
{$NextRun = "æ½ÑñπεΘ¿⌐ ºá»π߬ : »« »α¿σ«ñπ óßÑσ Γα¡ ¿½¿\n".
" ¿úαá íπñÑΓ ºá»πΘÑ¡á óαπτ¡πε âî.";
}
else
{if ($FirstPoint >= 0)
{$NextRun = "æ½ÑñπεΘ¿⌐ ºá»π߬ :\n".
" - »α¿ ñ«ßΓ¿ªÑ¡¿¿ óÑßá ".AddTime($FirstPoint,0,$GNum)."\n".
" - íѺπß½«ó¡« ".AddTime($AddDays,$AddTime*3600,$GNum);
}
else
{$NextRun = "æ½ÑñπεΘ¿⌐ ºá»π߬ :\n".
" - íѺπß½«ó¡« ".AddTime($AddDays,$AddTime*3600,$GNum);
};
}
};
return $NextRun;
};
sub AddTime
{my ($adays,$atime,$GNum) = @_;
$mytime = (GetCurDays() + $adays)*24*60*60 + $GAMES{"Time$GNum"} + $atime;
$timestring = localtime($mytime);
return $timestring;
};