📄 shop.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 'ffadventure.ini';
require 'shop.ini';
# [设定はここまで]------------------------------------------------------------#
# これより下は、CGIのわかる方以外は、变更しないほうが良いです。
#-----------------------------------------------------------------------------#
if($mente) { &error("现在バ—ジョンアップ中です。しばらくお待ちください。"); }
&decode;
if($mode eq 'item_eqq0') { $item_file = $item_file0; &item_shop; }
elsif($mode eq 'item_eqq1') { $item_file = $item_file1; &item_shop; }
elsif($mode eq 'item_eqq2') { $item_file = $item_file2; &item_shop; }
elsif($mode eq 'item_eqq3') { $item_file = $item_file3; &item_shop; }
elsif($mode eq 'item_eqq4') { $item_file = $item_file4; &item_shop; }
elsif($mode eq 'item_eqq5') { $item_file = $item_file5; &item_shop; }
elsif($mode eq 'item_eqq6') { $item_file = $item_file6; &item_shop; }
elsif($mode eq 'item_eqq7') { $item_file = $item_file7; &item_shop; }
elsif($mode eq 'item_eqq8') { $item_file = $item_file8; &item_shop; }
elsif($mode eq 'item_eqq9') { $item_file = $item_file9; &item_shop; }
elsif($mode eq 'item_eqq10') { $item_file = $item_file10; &item_shop; }
elsif($mode eq 'item_eqq11') { $item_file = $item_file11; &item_shop; }
elsif($mode eq 'item_eqq12') { $item_file = $item_file12; &item_shop; }
elsif($mode eq 'item_eqq13') { $item_file = $item_file13; &item_shop; }
elsif($mode eq 'item_eqq14') { $item_file = $item_file14; &item_shop; }
elsif($mode eq 'item_eqq15') { $item_file = $item_file15; &item_shop; }
elsif($mode eq 'item_eqq16') { $item_file = $item_file16; &item_shop; }
elsif($mode eq 'item_eqq17') { $item_file = $item_file17; &item_shop; }
elsif($mode eq 'item_eqq18') { $item_file = $item_file18; &item_shop; }
elsif($mode eq 'item_eqq19') { $item_file = $item_file19; &item_shop; }
elsif($mode eq 'item_eqq20') { $item_file = $item_file20; &item_shop; }
elsif($mode eq 'item_eqq21') { $item_file = $item_file21; &item_shop; }
elsif($mode eq 'item_eqq22') { $item_file = $item_file22; &item_shop; }
elsif($mode eq 'item_shop') { &item_shop; }
elsif($mode eq 'item_buy') { &item_buy; }
elsif($mode eq 'item_sell') { &item_sell; }
elsif($mode eq 'def_eqq0') { $def_file = $def_file0; &def_shop; }
elsif($mode eq 'def_eqq1') { $def_file = $def_file1; &def_shop; }
elsif($mode eq 'def_eqq2') { $def_file = $def_file2; &def_shop; }
elsif($mode eq 'def_eqq3') { $def_file = $def_file3; &def_shop; }
elsif($mode eq 'def_eqq4') { $def_file = $def_file4; &def_shop; }
elsif($mode eq 'def_eqq5') { $def_file = $def_file5; &def_shop; }
elsif($mode eq 'def_eqq6') { $def_file = $def_file6; &def_shop; }
elsif($mode eq 'def_eqq7') { $def_file = $def_file7; &def_shop; }
elsif($mode eq 'def_eqq8') { $def_file = $def_file8; &def_shop; }
elsif($mode eq 'def_eqq9') { $def_file = $def_file9; &def_shop; }
elsif($mode eq 'def_eqq10') { $def_file = $def_file10; &def_shop; }
elsif($mode eq 'def_eqq11') { $def_file = $def_file11; &def_shop; }
elsif($mode eq 'def_eqq12') { $def_file = $def_file12; &def_shop; }
elsif($mode eq 'def_eqq13') { $def_file = $def_file13; &def_shop; }
elsif($mode eq 'def_eqq14') { $def_file = $def_file14; &def_shop; }
elsif($mode eq 'def_eqq15') { $def_file = $def_file15; &def_shop; }
elsif($mode eq 'def_eqq16') { $def_file = $def_file16; &def_shop; }
elsif($mode eq 'def_eqq17') { $def_file = $def_file17; &def_shop; }
elsif($mode eq 'def_eqq18') { $def_file = $def_file18; &def_shop; }
elsif($mode eq 'def_eqq19') { $def_file = $def_file19; &def_shop; }
elsif($mode eq 'def_eqq20') { $def_file = $def_file20; &def_shop; }
elsif($mode eq 'def_eqq21') { $def_file = $def_file21; &def_shop; }
elsif($mode eq 'def_eqq22') { $def_file = $def_file22; &def_shop; }
elsif($mode eq 'def_shop') { &def_shop; }
elsif($mode eq 'def_buy') { &def_buy; }
elsif($mode eq 'def_sell') { &def_sell; }
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 = (
item_shop => <<'__SUB__',
#----------------#
# アイテム表示 #
#----------------#
sub item_shop {
open(IN,"./charalog/$in{'id'}.cgi") or &error('ファイルを开けませんでした。');
@buki = <IN>;
close(IN);
foreach(@buki){
($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") { last; }
}
if($in{'id'} ne "$kid" or $in{'pass'} ne "$kpass"){&error("オ—プンエラ—、ID·パスワ—ドが正しくありません。");}
open(IN,"$itemsell_file");
@log_item = <IN>;
close(IN);
$hit=0;
foreach(@log_item){
($si_no,$si_name,$si_dmg,$si_gold) = split(/<>/);
if($kitem eq "$si_no"){ $hit=1;last; }
}
if(!$hit) { $si_name="-"; }
if(!$hit) { $si_dmg="-"; }
if(!$hit) { $si_gold="-"; }
$ui_gold = int($si_gold / 3) * 2;
open(IN,"$item_file");
@item_array = <IN>;
close(IN);
&header;
print <<"EOM";
<h1>アイテムショップ</h1>
<hr size=0>
<p>
<form action="$scripts" method="post">
<FONT SIZE=3>
<B>武器屋のマスタ—</B><BR>
「いらっしゃい!いい武器??ってるよ~。この大陆の中じゃ、うちが一番の品??えだよ!<BR>
あ、なんだい、<B>$kname</B>じゃないか。元气にしてたかい?
<BR>今は$chara_syoku[$ksyoku]をやってるのか。
<BR>昨日$chara_syoku[$ksyoku]用の武器を入荷したんだよ!
<BR>
まあ、ゆっくり见ていってくれ。
<BR><BR>そうそう!最近装备品の下取りもはじめたんだ。」
</FONT><BR><BR>
<table border=1>
<tr>
<td colspan="2">现在の持ち金</td><td colspan="3" align="right">$kgold</td></tr>
<tr>
<th colspan="2">No.</th><th>なまえ</th><th>威力</th><th>价格</th></tr>
<tr><th><input type=hidden name=id value=$kid>
<input type=hidden name=pass value=$kpass>
<input type=hidden name=mode value=item_sell>
<input type=submit value="卖る">
</th></form><th>现在の装备品</th><th>$si_name</th><th>$si_dmg</th><th>$ui_gold</th><form action="$scripts" method="post">
EOM
foreach(@item_array){
($ino,$iname,$idmg,$igold) = split(/<>/);
print "<tr>\n";
print "<td><input type=radio name=item_no value=\"$ino\"></td><td align=right>$ino</td><td>$iname</td><td align=center>?</td><td align=center>$igold</td>\n";
print "</tr>\n";
}
print <<"EOM";
</tr>
</table>
<p>
<input type=hidden name=id value=$in{'id'}>
<input type=hidden name=pass value=$in{'pass'}>
<input type=hidden name=mode value=item_buy>
<input type=submit value="アイテムを买う">
</form>
EOM
&footer;
exit;
}
__SUB__
item_buy => <<'__SUB__',
#----------------#
# アイテム买う #
#----------------#
sub item_buy {
# ファイルロック
if ($lockkey == 1) { &lock1; }
elsif ($lockkey == 2) { &lock2; }
open(IN,"./charalog/$in{'id'}.cgi") or &error('ファイルを开けませんでした。');
@buki = <IN>;
close(IN);
foreach(@buki){
($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·パスワ—ドが正しくありません。");}
open(IN,"$item_file");
@item_array = <IN>;
close(IN);
$hit=0;
foreach(@item_array){
($i_no,$i_name,$i_dmg,$i_gold) = split(/<>/);
if($in{'item_no'} eq "$i_no") { $hit=1;last; }
}
if(!$hit) { &error("そんなアイテムは存在しません"); }
&get_host;
$date = time();
open(IN,"./charalog/$in{'id'}.cgi") or &error('ファイルを开けませんでした。');
@item_chara = <IN>;
close(IN);
$hit=0;@item_new=();
foreach(@item_chara){
($iid,$ipass,$isite,$iurl,$iname,$isex,$ichara,$in_0,$in_1,$in_2,$in_3,$in_4,$in_5,$in_6,$isyoku,$ihp,$imaxhp,$iex,$ilv,$igold,$ilp,$itotal,$ikati,$iwaza,$iitem,$imons,$ihost,$idate,$imori,$idef,$itac,$ikumite) = split(/<>/);
if($iid eq "$kid") {
if($igold < $i_gold) { &error("お金が足りません"); }
else { $igold = $igold - $i_gold; }
unshift(@item_new,"$iid<>$ipass<>$isite<>$iurl<>$iname<>$isex<>$ichara<>$in_0<>$in_1<>$in_2<>$in_3<>$in_4<>$in_5<>$in_6<>$isyoku<>$ihp<>$imaxhp<>$iex<>$ilv<>$igold<>$ilp<>$itotal<>$ikati<>$iwaza<>$i_no<>$imons<>$host<>$idate<>$imori<>$idef<>$itac<>$ikumite<>\n");
$hit=1;
}else{
push(@item_new,"$_");
}
}
open(OUT,">./charalog/$in{'id'}.cgi") or &error('ファイルを开けませんでした。');
print OUT @item_new;
close(OUT);
# ロック解除
if (-e $lockfile) { unlink($lockfile); }
&header;
print <<"EOM";
<h1>アイテムを买いました</h1>
<hr size=0>
<p>
EOM
&footer;
exit;
}
__SUB__
item_sell => <<'__SUB__',
#----------------#
# アイテム卖る #
#----------------#
sub item_sell {
# ファイルロック
if ($lockkey == 1) { &lock1; }
elsif ($lockkey == 2) { &lock2; }
open(IN,"./charalog/$in{'id'}.cgi") or &error('ファイルを开けませんでした。');
@buki = <IN>;
close(IN);
foreach(@buki){
($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·パスワ—ドが正しくありません。");}
open(IN,"$itemsell_file");
@item_array = <IN>;
close(IN);
$hit=0;
foreach(@item_array){
($i_no,$i_name,$i_dmg,$i_gold) = split(/<>/);
if($kitem eq "$i_no") { $hit=1;last; }
}
if(!$hit) { &error("そんなアイテムは存在しません"); }
if(!$kitem) { &error("そんなアイテムは存在しません"); }
$ui_gold = int($i_gold / 3) * 2;
&get_host;
$date = time();
open(IN,"./charalog/$in{'id'}.cgi") or &error('ファイルを开けませんでした。');
@item_chara = <IN>;
close(IN);
$hit=0;@item_new=();
foreach(@item_chara){
($iid,$ipass,$isite,$iurl,$iname,$isex,$ichara,$in_0,$in_1,$in_2,$in_3,$in_4,$in_5,$in_6,$isyoku,$ihp,$imaxhp,$iex,$ilv,$igold,$ilp,$itotal,$ikati,$iwaza,$iitem,$imons,$ihost,$idate,$imori,$idef,$itac,$ikumite) = split(/<>/);
if($iid eq "$kid") {
$igold = $igold + $ui_gold;
unshift(@item_new,"$iid<>$ipass<>$isite<>$iurl<>$iname<>$isex<>$ichara<>$in_0<>$in_1<>$in_2<>$in_3<>$in_4<>$in_5<>$in_6<>$isyoku<>$ihp<>$imaxhp<>$iex<>$ilv<>$igold<>$ilp<>$itotal<>$ikati<>$iwaza<><>$imons<>$host<>$idate<>$imori<>$idef<>$itac<>$ikumite<>\n");
$hit=1;
}else{
push(@item_new,"$_");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -