📄 monster1.cgi
字号:
#!/usr/bin/perl
#------------------------------------------------------#
# FF ADVENTURE v0.21
# programed by CUMRO
# http://cgi.members.interq.or.jp/sun/cumro/mm/
# cumro@sun.interq.or.jp
#
# FF ADVENTURE(改) v1.104
# remodeling by GUN
# http://www.gun-online.com/
# webmaster@gun-online.com
#------------------------------------------------------#
# 日本语ライブラリの读み??み
require 'jcode.pl';
# レジストライブラリの读み??み
require 'regist.pl';
# 挑战者ライブラリの读み??み
require 'battle.pl';
# 初期设定ファイルの读み??み
require 'ffadventure.ini';
# [设定はここまで]------------------------------------------------------------#
# これより下は、CGIのわかる方以外は、变更しないほうが良いです。
#-----------------------------------------------------------------------------#
if($mente) { &error("现在バ—ジョンアップ中です。しばらくお待ちください。"); }
&decode;
if($mode eq 'monster') { &monster; }
else { &error("アクセスできません"); }
#┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#┃ オ—トロ—ダ—
#┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
sub AUTOLOAD {
my $name = ($AUTOLOAD =~ /^main::(.+)$/)[0];
($FLAG{'autoload'}++ > 50) && die $AUTOLOAD; # 念のため无限ル—プ防止
defined %SUB or &SUBS;
if (!defined $SUB{$name}) {
&error("定义されていない关数($AUTOLOAD)が呼ばれました。"); exit;
}
eval $SUB{$name}; length($@) && &error("EVAL ERROR: $@ ($AUTOLOAD)");
delete $SUB{$name}; goto &{'main::' . $name};
}
sub SUBS {
%SUB = (
monster => <<'__SUB__',
#----------------------#
# モンスタ—との战斗 #
#----------------------#
sub monster {
if($battle_flag) { &error("现在战斗中です。少しお待ちになってから战斗してください。"); }
$battle_flag=1;
open(IN,"./charalog/$in{'id'}.cgi") or &error('ファイルを开けませんでした。');
@battle = <IN>;
close(IN);
foreach(@battle){
($kid,$kpass,$ksite,$kurl,$kname,$ksex,$kchara,$kn_0,$kn_1,$kn_2,$kn_3,$kn_4,$kn_5,$kn_6,$ksyoku,$khp,$kmaxhp,$kex,$klv,$kgold,$klp,$ktotal,$kkati,$kwaza,$kitem,$kmons,$khost,$kdate,$kmori,$kdef,$ktac,$kkumite) = split(/<>/);
if($in{'id'} eq "$kid" and $in{'pass'} eq "$kpass") { last; }
}
if($in{'id'} ne "$kid" or $in{'pass'} ne "$kpass"){&error("オ—プンエラ—、ID·パスワ—ドが正しくありません。");}
if(!$kmons) { &error("一度キャラクタ—と斗ってください"); }
$ztime = time();
$ztime = $ztime - $kdate;
$k_time = 10;
if($ztime < $k_time) { &error("疲れています"); }
if($kitem){
open(IN,"$item_file");
@battle_item = <IN>;
close(IN);
foreach(@battle_item){
($ci_no,$ci_name,$ci_dmg) = split(/<>/);
if($kitem eq $ci_no) { last; }
}
}
if($kdef){
open(IN,"$def_file");
@battle_def = <IN>;
close(IN);
foreach(@battle_def){
($cd_no,$cd_name,$cd_dmg) = split(/<>/);
if($kdef eq $cd_no) { last; }
}
}
open(IN,"$monster_file") or &error('ファイルを开けませんでした。');
@MONSTER = <IN>;
close(IN);
$r_no = @MONSTER;
$r_no = int(rand($r_no));
($mname,$mex,$mhp,$msp,$mdmg) = split(/<>/,$MONSTER[$r_no]);
if($in{'site'}) { $ksite = $in{'site'}; }
if($in{'url'}) { $kurl = $in{'url'}; }
if($in{'waza'}) { $kwaza = $in{'waza'}; }
if($in{'c_name'}) { $kname = $in{'c_name'}; }
$khp_flg = $khp;
$mhp = int(rand($mhp)) + $msp;
$mhp_flg = $mhp;
$m_sp = int(rand(11));
$i=1;$j=0;@battle_date=();
foreach(1..$turn) {
$dmg1 = $klv * (int(rand(5)) + 1);
$dmg2 = (int(rand($mdmg)) + 1);
$clit1 = "";
$clit2 = "";
$com1 = "";
$com2 = "$mnameが袭いかかった!!";
$kawasi1 = "";
$kawasi2 = "";
&tyousensya;
if(int(rand(20)) == 0) {
$clit1 = "<b class=\"clit\">クリティカル!!</b><P>";
$dmg1 = $dmg1 * 2;
}
if(int(rand(30)) == 0) {
$clit2 = "<b class=\"clit\">クリティカル!!</b>";
$dmg2 = int($dmg2 * 1.5);
}
if($dmg2 < 0){$dmg2 = $dmg2;}
elsif($dmg2 < $cd_dmg){$dmg2 = 0;}
else{$dmg2 = $dmg2 - $cd_dmg;}
if(int(rand($kn_5)) > int(rand(50))) {
$dmg2 = 0;
$kawasi1 = "<P><FONT SIZE=4 COLOR=\"#DD6699\">$knameは身をかわした!</FONT><p>";
}
if($m_sp > int(rand(60))) {
$dmg1 = 0;
$kawasi2 = "<P><FONT SIZE=4 COLOR=\"#DD6699\">$mnameは身をかわした!</FONT><p>";
}
$battle_date[$j] = <<"EOM";
<TABLE BORDER=0>
<TR>
<TD CLASS="b2" COLSPAN="3" ALIGN="center">
$iタ—ン
</TD>
</TR>
<TR>
<TD>
<TABLE BORDER=1>
<TR>
<TD CLASS="b1">
なまえ
</TD>
<TD CLASS="b1">
HP
</TD>
<TD CLASS="b1">
职业
</TD>
<TD CLASS="b1">
LV
</TD>
</TR>
<TR>
<TD>
$kname
</TD>
<TD>
$khp_flg\/$kmaxhp
</TD>
<TD>
$chara_syoku[$ksyoku]
</TD>
<TD>
$klv
</TD>
</TR>
</TABLE>
</TD>
<TD>
<FONT SIZE=5 COLOR="#9999DD">VS</FONT>
</TD>
<TD>
<TABLE BORDER=1>
<TR>
<TD CLASS="b1">
なまえ
</TD>
<TD CLASS="b1">
HP
</TD>
</TR>
<TR>
<TD>
$mname
</TD>
<TD>
$mhp/$mhp_flg
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<p>
$com1 $clit1 $kawasi2 $mname に <font class="dmg"><b>$dmg1</b></font> のダメ—ジを与えた。<p>
<BLOCKQUOTE>$com2 $clit2 $kawasi1 $kname に <font class="dmg"><b>$dmg2</b></font> のダメ—ジを与えた。</BLOCKQUOTE><p>
EOM
$khp_flg = $khp_flg - $dmg2;
$mhp = $mhp - $dmg1;
if($mhp <= 0) { $win = 1; last; }
elsif($khp_flg <= 0) { $win = 0; last; }
$i++;
$j++;
}
if($win) {
$ktotal += 1;
$kkati += 1;
$kex = $kex + $mex;
$kmons -= 1;
$gold = $klv * 3 + int(rand($klp));
$kgold = $kgold + $gold;
$comment = "<b><font size=5>$knameは、战斗に胜利した!!</font></b><p>";
}else{
$ktotal += 1;
$mex = 1;
$kex = $kex + $mex;
$kmons -= 1;
$kgold = int(($kgold / 2));
$comment = "<b><font size=5>$knameは、战斗に负けた···。</font></b><p>";
}
if($kex >= ($klv * $lv_up)) {
$comment .= "$knameは、レベルが上がった!!<p>";
$hpup = int(rand($kn_3)) + 1;
$kmaxhp = $kmaxhp + $hpup;
$khp = $kmaxhp;
$comment .= "HPが<b>$hpup</b>上がった!!<p>";
$kex = 0;
$klv += 1;
if(int(rand(5)) == 0) { $kn_0 += 1; $t1 = 1;}
if(int(rand(5)) == 0) { $kn_1 += 1; $t2 = 1;}
if(int(rand(5)) == 0) { $kn_2 += 1; $t3 = 1;}
if(int(rand(5)) == 0) { $kn_3 += 1; $t4 = 1;}
if(int(rand(5)) == 0) { $kn_4 += 1; $t5 = 1;}
if(int(rand(5)) == 0) { $kn_5 += 1; $t6 = 1;}
if(int(rand(5)) == 0) { $kn_6 += 1; $t7 = 1;}
if($t1) { $comment .= "力が上がった。"; }
if($t2) { $comment .= "知\能\が上がった。"; }
if($t3) { $comment .= "信仰心が上がった。"; }
if($t4) { $comment .= "生命力が上がった。"; }
if($t5) { $comment .= "器用さが上がった。"; }
if($t6) { $comment .= "速さが上がった。"; }
if($t7) { $comment .= "魅力が上がった。"; }
}
$khp = $khp_flg + int(rand($kn_3));
if($khp > $kmaxhp) { $khp = $kmaxhp; }
if($khp <= 0) { $khp = $kmaxhp; }
®ist;
&header;
print "<h1>$knameは、$mnameに战いを挑んだ!!</h1><hr size=0><p>\n";
$i=0;
foreach(@battle_date){
print "$battle_date[$i]";
$i++;
}
if($win) { print "$comment<p>$knameは、$mexの经验值を手に入れた。<b>$gold</b>G手に入れた。<p>\n"; }
else { print "$comment<p>$knameは、$mexの经验值を手に入れた。お金が半分になった···(泪)<p>\n"; }
&footer;
$battle_flag=0;
exit;
}
__SUB__
footer => <<'__SUB__',
#------------------#
# HTMLのフッタ— #
#------------------#
sub footer {
print "<form action=\"$script\" method=\"post\">\n";
print "<A HREF=\"$scripto\">TOPペ—ジへ</A>\n";
print "<input type=hidden name=id value=$kid>\n";
print "<input type=hidden name=pass value=$kpass>\n";
print "<input type=hidden name=mode value=log_in>\n";
print "<input type=submit value=\"ステ—タス画面へ\">\n";
print "</form>\n";
print "<HR SIZE=0 WIDTH=\"100%\"><DIV align=right class=small>\n";
print "$vertg edit by <a href=\"http://www.gun-online.com/\" target=\"_top\">GUN</a><br>\n";
print "$verg remodeling by <a href=\"http://www.gun-online.com/\" target=\"_top\">GUN</a><br>\n";
print "$ver by <a href=\"http://www.interq.or.jp/sun/cumro/\">D.Takamiya(CUMRO)</a><br>\n";
print "</DIV></body></html>\n";
}
__SUB__
header => <<'__SUB__',
#------------------#
# HTMLのヘッダ— #
#------------------#
sub header {
print "Cache-Control: no-cache\n";
print "Pragma: no-cache\n";
print "Content-type: text/html\n\n";
print <<"EOM";
<html>
<head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<STYLE type="text/css">
<!--
body,tr,td,th { font-size: $b_size }
a:hover { color: $alink }
.small { font-size: 10pt }
.b1 {background: #9ac;border-color: #ccf #669 #669 #ccf;color:#fff; border-style: solid; border-width: 1px;}
.b2 {background: #669;border-color: #99c #336 #336 #99c;color:#fff; border-style: solid; border-width: 1px; text-align: center}
.b3 {background: #fff;border-color: #ccf #669 #669 #ccf;}
.dmg { color: #FF0000; font-size: 18pt }
.clit { color: #0000FF; font-size: 18pt }
-->
</STYLE>
EOM
print "<title>$main_title</title></head>\n";
print "<body background=\"$backgif\" bgcolor=\"$bgcolor\" text=\"$text\" link=\"$link\" vlink=\"$vlink\" alink=\"$alink\">\n";
}
__SUB__
);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -