my @gu = ('やめる','諜報','強奪','洗脳','偵察'); }elsif($cmd==4){ # @guのメニュー番号に合わせる $log .= qq|偵察を行います|; &misson_menu2; $tm=61; } }elsif($tm==61){ &gun_tm61; } &write_data; } #------------------------------------------------------------------------------- # 収集 sub gun_tm61 { if($cmd<1 || $cmd>5){ $log .= qq|情報収集を中止しました<br>|; }elsif(rand(100)<30){ $log .= qq|情報の収集に失敗しました<br>|; }elsif($cmd){ my @cdat_title = ('国力','資金','兵糧','兵士'); my @cdat_data = ( [], [ $cn1, $cg1, $cf1, $cs1, $ct1 ], [ $cn2, $cg2, $cf2, $cs2, $ct2 ], [ $cn3, $cg3, $cf3, $cs3, $ct3 ], [ $cn4, $cg4, $cf4, $cs4, $ct4 ], [ $cn5, $cg5, $cf5, $cs5, $ct5 ], ); $com = $cmp[$cmd]; foreach(0..$#cdat_title){ my $gosa = int(rand(20))-10; $com .= qq|/$cdat_title[$_]:|.int($cdat_data[$cmd][$_]/100*(100+$gosa)); } $log .= qq|$cmp[$cmd]の情報を収集しました<br><br>$com|; ®ist_bbs; } # 偵察 $scout[$camp]+=int(rand(10)+5) if($scout[$camp]<rand(80)); $sct_cnt++; $rank_exe+=int(rand(2)+1); $pr += $GMT; $type=''; $tm=$cmd=0; &call_main_st; } #------------------------------------------------------------------------------- # ログ書き込み処理 # sub regist_bbs { my $logfile = './logdata/camp_log_'; my $lockkey = 0; my $lockfile = "./camp.lock"; my $max = 15; # ファイルロック if ($lockkey) { &lock; } # ログを読み込み open(IN,"$logfile$camp\.cgi") || &error("Open Error : $logfile$camp\.cgi"); @lines = <IN>; close(IN); # 最大記事数処理 while ($max <= @lines) { pop(@lines); } # ログ更新処理 if($sogo_txt ne ''){ unshift (@lines,"$date<>$nm<>$camp<>$com<>$sogo_txt<>$addr<>$host<>$agent<>\n"); }else{ unshift (@lines,"$date<>$nm<>$camp<>$com<>$sogo<>$addr<>$host<>$agent<>\n"); } open(OUT,">$logfile$camp\.cgi") || &error("Write Error : $logfile$camp\.cgi"); print OUT @lines; close(OUT); # ロック解除 if (-e $lockfile) { unlink($lockfile); } } |