[[改造履歴]] 特徴:出入ログ、送付禁止アイテムは入庫禁止 #================================================= # 国庫 #================================================= my $kokko_log;#ログ入れ変数追加 # 最大保存数 my $max_depot = 30; #================================================= # 利用条件 #================================================= 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('やめる', '引出す', '預ける', '整理する', '出入履歴');#出入履歴は削除可能 } 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 $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