- 追加された行はこの色です。
- 削除された行はこの色です。
[[改造履歴]]
my $this_file = "$logdir/$m{country}/kokko.cgi";
my $this_log_file = "$logdir/$m{country}/kokko_log.cgi";
特徴:出入ログ、送付禁止アイテムは入庫禁止
#=================================================
# 国庫
#=================================================
my $kokko_log;#ログ入れ変数追加
# 最大保存数
my $max_depot = 30;
# 相手に送るときの手数料(同国)
my $need_money = 100;
#=================================================
# 利用条件
#=================================================
sub is_satisfy {
if ($m{country} eq '0') {
$mes .= '国に属してないと行うことができません<br>';
&refresh;
&n_menu;
return 0;
}
return 1;
}
#================================================
sub begin {
if ($m{tp} > 1) {
$mes .= "他に何かしますか?<br>";
$m{tp} = 1;
}
else {
$mes .= "ここは<font color=\"$cs{color}[$m{country}] \">$c_m</font>の倉庫です。<br>";
$mes .= "$max_depot個まで預けることができます<br>";
$mes .= "どうしますか?<br>";
}
&menu('やめる', '引出す', '預ける', '整理する', '出入履歴');#出入履歴は削除可能
# 相手に送るときの手数料(他国)
my $need_money_other = 1000;
}
sub tp_1 {
return if &is_ng_cmd(1..4); #出入履歴削除した場合は1..3
$m{tp} = $cmd * 100;
&{ 'tp_'. $m{tp} };
}
#=================================================
# 引出す
#=================================================
sub tp_100 {
$layout = 2;
my($count, $sub_mes) = &radio_my_depot;
$mes .= "どれを引出しますか? [ $count / $max_depot ]<br>";
$mes .= $sub_mes;
$mes .= qq|<input type="hidden" name="id" value="$id"><input type="hidden" name="pass" value="$pass">|;
$mes .= qq|<p><input type="submit" value="引出す" class="button1"></p></form>|;
$m{tp} += 10;
}
sub tp_110 {
if ($cmd) {
my $count = 0;
my $new_line = '';
my $add_line = '';
open my $fh, "+< $this_file" or &error("$this_fileが開けません");
eval { flock $fh, 2; };
while (my $line = <$fh>) {
++$count;
if (!$new_line && $cmd eq $count) {
$new_line = $line;
my($kind, $item_no, $item_c, $item_lv) = split /<>/, $line;
##★1 入庫禁止アイテム処理はここに
if ($kind eq '1' && $m{wea}) {
$add_line = "$kind<>$m{wea}<>$m {wea_c}<>$m{wea_lv}<>\n";
$mes .= "$weas[$m{wea}][1]を預け";
$kokko_log .= qq|<font color="FFCC00">$weas[$m{wea}][1]</font>を預け|;#log用
}
elsif ($kind eq '2' && $m{egg}) {
$add_line = "$kind<>$m{egg}<>$m {egg_c}<>0<>\n";
$mes .= "$eggs[$m{egg}][1]を預け";
$kokko_log .= qq|<font color="FFCC00">$eggs[$m{egg}][1]</font>を預け|;#log用
}
elsif($kind eq '3' && $m{pet}) {
$add_line = "$kind<>$m{pet}<>0<>0<>\n";
$mes .= "$pets[$m{pet}][1]を預け";
$kokko_log .= qq|<font color="FFCC00">$pets[$m{pet}][1]</font>を預け|;#log用
}
}
else {
push @lines, $line;
}
}
if ($new_line) {
push @lines, $add_line if $add_line;
seek $fh, 0, 0;
truncate $fh, 0;
print $fh @lines;
close $fh;
my($kind, $item_no, $item_c, $item_lv) = split /<>/, $new_line;
if ($kind eq '1') {
$m{wea} = $item_no;
$m{wea_c} = $item_c;
$m{wea_lv} = $item_lv;
$mes .= "$weas[$m{wea}][1]を引出しました<br>";
$kokko_log .= qq|<font color="FFCC00">$weas[$m{wea}][1]</font>を引出しました|;#log用
}
elsif ($kind eq '2') {
$m{egg} = $item_no;
$m{egg_c} = $item_c;
$mes .= "$eggs[$m{egg}][1]を引出しました<br>";
$kokko_log .= qq|<font color="FFCC00">$eggs[$m{egg}][1]</font>を引出しました|;#log用
}
elsif ($kind eq '3') {
$m{pet} = $item_no;
$mes .= "$pets[$m{pet}][1]を引出しました<br>";
$kokko_log .= qq|<font color="FFCC00">$pets[$m{pet}][1]</font>を引出しました|;#log用
}
# 国庫ログ書込(ファイル名, メッセージ)[引出し]
&write_kokko("$kokko_log");
# 引出すタイミングで新しいアイテムがあればコレクションに追加
require './lib/add_collection.cgi';
&add_collection;
}
else {
close $fh;
}
}
&begin;
}
#=================================================
# 預ける
#=================================================
sub tp_200 {
$mes .= 'どれを預けますか?';
my @menus = ('やめる');
push @menus, $m{wea} ? $weas[$m{wea}][1] : '';
push @menus, $m{egg} ? $eggs[$m{egg}][1] : '';
push @menus, $m{pet} ? $pets[$m{pet}][1] : '';
&menu(@menus);
$m{tp} += 10;
}
sub tp_210 {
return if &is_ng_cmd(1..3);
# 満杯を超えた時のペナルティ金(引出し、売る時に減らされる)
my $penalty_money = $m{sedai} > 10 ? 3000 : $m{sedai} * 300;
my $line;
if ($cmd eq '1' && $m{wea}) {
$line = "$cmd<>$m{wea}<>$m{wea_c}<>$m{wea_lv}<>\n";
}
elsif ($cmd eq '2' && $m{egg}) {
$line = "$cmd<>$m{egg}<>$m{egg_c}<>0<>\n";
}
elsif ($cmd eq '3' && $m{pet}) {
$line = "$cmd<>$m{pet}<>0<>0<>\n";
}
else {
&begin;
return;
}
my @lines = ();
open my $fh, "+< $this_file" or &error("$this_fileが開けません");
eval { flock $fh, 2; };
push @lines, $_ while <$fh>;
##★2入庫禁止処理はここに
if (@lines >= $max_depot) {
close $fh;
$mes .= 'これ以上預けることができません<br>';
#$m{is_full} = 1;
}
else {
push @lines, $line;
seek $fh, 0, 0;
truncate $fh, 0;
print $fh @lines;
close $fh;
if ($cmd eq '1') {
$mes .= "$weas[$m{wea}][1]を預けました<br>";
$kokko_log .= qq|<font color="FFCC00">$weas[$m{wea}][1]</font>を預けました|;#log用
$m{wea} = $m{wea_c} = $m{wea_lv} = 0;
}
elsif ($cmd eq '2') {
$mes .= "$eggs[$m{egg}][1]を預けました<br>";
$kokko_log .= qq|<font color="FFCC00">$eggs[$m{egg}][1]</font>を預けました|;#log用
$m{egg} = $m{egg_c} = 0;
}
elsif ($cmd eq '3') {
$mes .= "$pets[$m{pet}][1]を預けました<br>";
$kokko_log .= qq|<font color="FFCC00">$pets[$m{pet}][1]</font>を預けました|;#log用
$m{pet} = 0;
}
#$m{is_fulle} = 1 if @lines >= $max_depot;
# 国庫ログ書込(ファイル名, メッセージ)[預け]
&write_kokko("$kokko_log");
}
&begin;
}
#=================================================
# 利用条件
# 整理
#=================================================
sub tp_300 {
my @lines = ();
open my $fh, "+< $this_file" or &error("$this_fileが開けません");
eval { flock $fh, 2; };
push @lines, $_ while <$fh>;
@lines = map { $_->[0] }
sort { $a->[1] <=> $b->[1] || $a->[2] <=> $b->[2] }
map { [$_, split /<>/ ] } @lines;
seek $fh, 0, 0;
truncate $fh, 0;
print $fh @lines;
close $fh;
$mes .= "預けているものを整理しました<br>";
&begin;
}
#=================================================
# <input type="radio"> 付の預かり所の物
#=================================================
sub radio_my_depot {
my $count = 0;
my $sub_mes = qq|<a href="#under">▼下</a>|;#▼下は独自改造
$sub_mes .= qq|<form method="$method" action="$script"><input type="radio" name="cmd" value="0" checked>やめる<br>|;
open my $fh, "< $this_file" or &error("$this_file が読み込めません");
while (my $line = <$fh>) {
++$count;
my($kind, $item_no, $item_c, $item_lv) = split /<>/, $line;
$sub_mes .= qq|<input type="radio" name="cmd" value="$count">|;
$sub_mes .= $kind eq '1' ? qq|[$weas[$item_no][2]]$weas [$item_no][1]★$item_lv($item_c/$weas[$item_no][4])<br>|
: $kind eq '2' ? qq|[卵]$eggs[$item_no] [1]($item_c/$eggs[$item_no][2])<br>|
: qq|[ぺ] $pets[$item_no][1]<br>|
;
}
close $fh;
$sub_mes .= qq|<a name="under"></a>|;#▼のための独自改造
#$m{is_full} = $count >= $max_depot ? 1 : 0;
return $count, $sub_mes;
}
下記からは不要な場合省略可能
#=================================================
# 出し入れ履歴表示
#=================================================
sub tp_400 {
open my $fh, "< $this_log_file" or &error("$this_log_fileファイルが読み込めません");
$mes .= qq|$_<hr size="1">\n| while <$fh>;
close $fh;
&refresh;
$m{lib} = 'kokko';
&n_menu;
}
取引禁止アイテムを入庫禁止にする場合は下記を引出すの★1に追記
#入国庫禁止アイテム処理
my @kinds = ('', 'wea', 'egg', 'pet');
my @one_kind_of_taboos = @{ $taboo_items{ $kinds[$kind] } };
for my $taboo_item (@one_kind_of_taboos) {
if ($taboo_item eq $m{ $kinds [$kind] }) {
my $t_item_name = $kind eq '1' ? $weas[$m{wea}][1]
: $kind eq '2' ? $eggs[$m{egg}][1]
: $pets[$m{pet}][1]
;
$mes .= "$t_item_nameは国庫に預けることができないのでアイテムの引出しは中止しました<br>";
&begin;
return;
}
}#入国庫禁止アイテム処理end
取引禁止アイテムを入庫禁止にする場合は下記を預けるの★2に追記
#入国庫禁止アイテム処理
my @kinds = ('', 'wea', 'egg', 'pet');
for my $taboo_item (@{ $taboo_items{ $kinds[$cmd] } }) {
if ($taboo_item eq $m{ $kinds[$cmd] }) {
my $t_item_name = $cmd eq '1' ? $weas[$m{wea}][1]
: $cmd eq '2' ? $eggs[$m{egg}][1]
: $pets[$m{pet}][1]
;
$mes .= "$t_item_nameは国庫に預けることはできません <br>";
&begin;
return;
}
}#入国庫禁止アイテム処理end