銀行&闇銀行 + α

お金をいくらでも貯めれるように、銀行を作りましょう。
まずconfig.cgiのほうの変数にchokin追加してください。

bank.cgiでも作って、下記を内容に。

#=================================================
# 銀行 Created by 神月
#=================================================
# 場所名
$this_title = '銀行';

# NPC名
$npc_name   = '@ウケツケ';

# ログに使うファイル(.cgi抜き)
$this_file  = "$logdir/bank";

# 背景画像
$bgimg   = "$bgimgdir/depot.gif";

#=================================================
# はなす言葉
#=================================================
@words = (
"冒険中に倒れてしまうと$e2j{money}が減っちゃうから、冒険前には$e2j{money}を預けてね。",
"ここは$this_titleです。",
"$e2j{money}を使いすぎないように気をつけましょう。",
);

#=================================================
# 画面ヘッダー
#=================================================
sub header_html {
print qq|<div class="mes">【$this_title】預金残高:<b>$m{chokin}</b>G $e2j{money}:<b>$m{money}</b>G $e2j{hp}:<b>$m{hp}</b>/<b>$m{mhp}</b> $e2j{mp}:<b>$m{mp}</b>/<b>$m{mmp}</b></div>|;
}

sub shiraberu_npc {
$mes = qq|<span onclick="text_set('@やみぎんこう')">$npc_name「あっ!ダメダメ!そっちにいっちゃ…。」</span>|;
}
#=================================================
# 追加アクション
#=================================================
push @actions, 'ひきだす';
push @actions, 'よきん';
$actions{'ひきだす'} = sub{ &hikidasu };
$actions{'よきん'} = sub{ &azukeru };
$actions{'やみぎんこう'} = sub{ &ura };

#=================================================
# @ひみつのみせ
#=================================================
sub ura {
$mes = "怪しげな店にいきました…";
$m{lib} = 'yamibank';
&auto_reload;
}
#=================================================
# @hikida
#=================================================
sub hikidasu {

my $hikidasi = shift;

if ($hikidasi =~ /^([0-9]+)\x20?G?$/) {
my $hikidasi_money = int($1);
if ($hikidasi_money > $m{chokin}) {
$mes = "預金残高より多く$e2j{money}は引き出せません。";
return;
}
elsif ($hikidasi_money <= 0) {
$mes = "引き出しは最低でも 1 G以上です";
return;
}
elsif ($hikidasi_money > 9999999) {
$mes = "引き出し最大額を超えています。9999999Gより下の額を引き出して下さい。";
return;
}

$m{money} += $hikidasi_money;
$m{chokin} -= $hikidasi_money;
$npc_com = "$hikidasi_money Gを引き出しました。";
return;
}



$mes  = qq|$e2j{money}を引き出すんですか?<br />$p|;

$mes .= qq|<span onclick="text_set('@ひきだす>$m{chokin}G')">$m{chokin}G</span> / |;
$act_time = 0;



}


#=================================================
# @azuke
#=================================================
sub azukeru {

my $azuke = shift;

if ($azuke =~ /^([0-9]+)\x20?G?$/) {
my $azuke_money = int($1);
if ($azuke_money > $m{money}) {
$mes = "預金しようとしている程の$e2j{money}はありません。";
return;
}
elsif ($azuke_money <= 0) {
$mes = "預金は最低でも 1 G以上です";
return;
}

$m{money} -= $azuke_money;
$m{chokin} += $azuke_money;
$npc_com = "$azuke_money Gを預金しました。";
return;
}


$mes  = qq|預金しますか?<br />$p|;

$mes .= qq|<span onclick="text_set('@よきん>$m{money}G')">$m{money}G</span> / |;
$act_time = 0;


}

1; # 削除不可

次に、闇銀行を作りましょう。
yamibank.cgiを作り、下記を内容に。

#=================================================
# 銀行 Created by バニラ
#=================================================
# 場所名
$this_title = '闇銀行';

# NPC名
$npc_name   = '@悪人';

# ログに使うファイル(.cgi抜き)
$this_file  = "$logdir/yamibank";

# 背景画像
$bgimg   = "$bgimgdir/black_market.gif";

#=================================================
# はなす言葉
#=================================================
@words = (
"…よく来たな。ここは$this_titleだ…。",
"…$e2j{money}が欲しいのか?ステータスをよこせばくれてやる…。",
"…HP,MPいずれかを1くれたら$e2j{money}を2Gあげよう…。",
);

#=================================================
# 画面ヘッダー
#=================================================
sub header_html {
print qq|<div class="mes">【$this_title】預金残高:<b>$m{chokin}</b>G $e2j{money}:<b>$m{money}</b>G $e2j{hp}:<b>$m{hp}</b>/<b>$m{mhp}</b> $e2j{mp}:<b>$m{mp}</b>/<b>$m{mmp}</b></div>|;
}
#=================================================
# 追加アクション
#=================================================
push @actions, 'ひきだす';
push @actions, 'よきん';
push @actions, 'HP';
push @actions, 'MP';
$actions{'ひきだす'} = sub{ &hikidasu };
$actions{'よきん'} = sub{ &azukeru };
$actions{'HP'} = sub{ &uaua };
$actions{'MP'} = sub{ &uaua2 };

#=================================================
# @hikida
#=================================================
sub hikidasu {

my $hikidasi = shift;

if ($hikidasi =~ /^([0-9]+)\x20?G?$/) {
my $hikidasi_money = int($1);
if ($hikidasi_money > $m{chokin}) {
$mes = "…預金残高に引き出したい程の$e2j{money}が無いようだが…。";
return;
}
elsif ($hikidasi_money <= 0) {
$mes = "…引き出すなら 1 G以上にしろ…。";
return;
}
elsif ($hikidasi_money > 9999999) {
$mes = "…引き出し限度額を超えている…。引き出すなら9999999G未満のGを引き出せ…。";
return;
}

$m{money} += $hikidasi_money;
$m{chokin} -= $hikidasi_money;
$npc_com = "…$hikidasi_money Gを引きだしたぞ…。";
return;
}



$mes  = qq|$e2j{money}を引き出すのか…<br />$p|;

$mes .= qq|<span onclick="text_set('@ひきだす>$m{chokin}G')">$m{chokin}G</span> / |;
$act_time = 0;



}


#=================================================
# @azuke
#=================================================
sub azukeru {

my $azuke = shift;

if ($azuke =~ /^([0-9]+)\x20?G?$/) {
my $azuke_money = int($1);
if ($azuke_money > $m{money}) {
$mes = "…$mの$e2j{money}はそれ程無いようだが…。";
return;
}
elsif ($azuke_money <= 0) {
$mes = "…預金するなら 1 G以上にしろ…。";
return;
}

$m{money} -= $azuke_money;
$m{chokin} += $azuke_money;
$npc_com = "$azuke_money Gを預金した…。";
return;
}


$mes  = qq|預金するのか…?<br />$p|;

$mes .= qq|<span onclick="text_set('@よきん>$m{money}G')">$m{money}G</span> / |;
$act_time = 0;


}

#====================================
# チェンジ
#====================================
sub uaua { &_chang_money(shift, 2, 'money') }
sub uaua2 { &_chang_money2(shift, 2, 'money') }

sub _chang_money {
my($mhp, $up, $k) = @_;

if ($mhp < 1 || $mhp =~ /[^0-9]/) {
$mes = "最大$e2j{hp}をどのくらいささげてくれるんだ…。『@$e2j{hp}>1』←のようにすると$e2j{hp}を1消費して、$e2j{money}を2Gを貰えるぞ…。";
return;
}
elsif (30 > $m{mhp}) {
$mes = "最大$e2j{hp}はもっと必要だ…";
return;
}

my $v = $mhp * $up;
$m{mhp} -= $mhp;
$m{$k} += $v;
$npc_com = "最大$e2j{hp} $mhp のかわりに $e2j{$k} を $v Gやるぞ…。";
}

sub _chang_money2 {
my($mmp, $up, $k) = @_;

if ($mmp < 1 || $mmp =~ /[^0-9]/) {
$mes = "最大$e2j{mp}をどのくらいささげてくれるんだ…。『@$e2j{mp}>1』←のようにすると$e2j{mp}を1消費して、$e2j{money}を2Gを貰えるぞ…。";
return;
}
elsif (30 > $m{mmp}) {
$mes = "最大$e2j{mp}はもっと必要だ…";
return;
}

my $v = $mmp * $up;
$m{mmp} -= $mmp;
$m{$k} += $v;
$npc_com = "最大$e2j{mp} $mmp のかわりに $e2j{$k} を $v Gやるぞ…。";
}

1; # 削除不可

そして、battle.cgiに倒された時にゴールドが減少するように・・・
# NPCがプレイヤーを倒した時。または自爆のすぐしたにでも下記を追加。

$m{money} = int($m{money}*0.9);
$com='<b>倒れたまま逃げた為、ゴールドが減少しました!</b>';

これで完成です。
お疲れ様でした。
最終更新:2013年02月09日 15:15