#-----------------------------------------------------------# # 罪と罰++ 二律背反 # # Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # # Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # # BLANK BOARD [ http://pom.to/ ] # #-----------------------------------------------------------# # 預かり所 Version 1.0 # Arranged by あくあ # HPタイトル [http://aqure.zive.net/] #--- [注意事項] --------------------------------------------# # ・このスクリプトは以下の利用規程に従って配布しています。 # # http://www24.big.or.jp/~obo/game/ore_/gild/ # #-----------------------------------------------------------# #----------------------------------------- # 預かり所スクリプト # 各種設定 $soko_max = 20; # 倉庫格納最大数 $soko_file = "./logdata/sokofile.cgi"; $lockkey = 1; # ファイルロック 0:なし 1:有 $lockfile = "./logdata/sokofile.lock"; $item_ex = 0; # 0:通常 # 装備品リスト @eq = ($dg_a,$df_a,$di_a,$de_a,$dp_a,$du_a,$syou_a,$skill1,$skill2,$db_a); @eq_cnt = ($dg_cnt,$df_cnt,$di_cnt,$de_cnt,$rebe,$du_a,$syou_a,$skill1,$skill2,$db_a); #----------------------------------------- sub soko{ $log .= qq|転送・預かり所に来ました|; &soko_com_out; &soko_menu; } #----------------------------------------- # 倉庫メニュー sub soko_menu{ @menu = ('転送・預かり所を出る','入庫する','出庫する'); $log2 .= qq|
\n|; $log2 .= qq|\n| if($mv_mode eq 'pc'); $log2 .= qq|\n|; $log2 .= qq|\n|; $log2 .= qq|
\n|; $log2.=qq|$td_end
\n|; } #----------------------------------------- # 倉庫メイン sub soko_exe{ if($tm==300){ if($cmd==1){ # 入庫 &eq_view; $tm = 310; }elsif($cmd){ # 出庫 &soko_view; $tm = 320; }else{ # キャンセル $log .= qq|転送・預かり所を出ました|; $tm=0;$cmd=0;&shop_menu; } }elsif($tm==310){ # 入庫処理 if($in{'aite'} eq ''){ &soko_in; }else{ &soko_com_in; } $tm=300;$cmd=0;&soko_menu; }elsif($tm==320){ # 出庫処理 &soko_out; $tm=300;$cmd=0;&soko_menu; }else{ # キャンセル $log .= qq|転送・預かり所を出ました
|; $tm=$cmd=0; &shop_menu; } &dat_write; } # 費用を計算 sub soko_com_cost{ if($camp<$SAT{'camp'}){ $v1=$camp; $v2=$SAT{'camp'}; }elsif($camp>$SAT{'camp'}){ $v1=$SAT{'camp'}; $v2=$camp; }else{ $v1=''; $v2=''; } if($v1 == $v2){ $soko_cost = 1000; }elsif($cmd>=0 && $cmd<=3){ $soko_cost = 1000; }elsif($cmd==4){ $soko_cost = 1000; }elsif($cmd>=5 && $cmd<=8){ $soko_cost = 1000; } } #----------------------------------------- # 相手指定であずける sub soko_com_in{ &usr_check; &soko_open; &soko_com_cost; if($#soko_lst>=$soko_max){ $log .= qq|荷物がいっぱいです
これ以上は預かれません
|; }elsif($in{'aite'} ne $SAT{'nm'}){ # 相手が見つからない }elsif($gold<$soko_cost){ $log .= qq|送付料金が足りません、$soko_costかかります。|; }elsif($cmd>=0 && $eq[$cmd]>0 && $eq_cnt[$cmd]>0){ if($cmd==0){ # 武具 $soko_com .= qq|11<>$eq[$cmd]<>$eq_cnt[$cmd]<>$time<>$nm<>$in{'aite'}<>_|; $dg_a=0;$dg_cnt=0; $log .= qq|$dg_data[$eq[$cmd]][1]を$in{'aite'}さんに送りました
|; }elsif($cmd==1){ # 防具 $soko_com .= qq|12<>$eq[$cmd]<>$eq_cnt[$cmd]<>$time<>$nm<>$in{'aite'}<>_|; $df_a=0;$df_cnt=0; $log .= qq|$df_data[$eq[$cmd]][1]を$in{'aite'}さんに送りました
|; }elsif($cmd==2){ # 道具 $soko_com .= qq|13<>$eq[$cmd]<>$eq_cnt[$cmd]<>$time<>$nm<>$in{'aite'}<>_|; $di_a=0; $di_cnt=0; $log .= qq|$di_data[$eq[$cmd]][1]を$in{'aite'}さんに送りました
|; }elsif($cmd==3){ # 盾 $soko_com .= qq|14<>$eq[$cmd]<>$eq_cnt[$cmd]<>$time<>$nm<>$in{'aite'}<>_|; $de_a=0;$de_cnt=0; $log .= qq|$de_data[$eq[$cmd]][1]を$in{'aite'}さんに送りました
|; }elsif($cmd==4){ # モンスター $soko_com .= qq|15<>$eq[$cmd]<>$eq_cnt[$cmd]<>$time<>$nm<>$in{'aite'}<>_|; $dp_a=0; $rebe=0;$mexe=0; $log .= qq|$dp_data[$eq[$cmd]][1]を$in{'aite'}さんに送りました
|; }elsif($cmd==5){ # 馬 $soko_com .= qq|16<>$eq[$cmd]<>$eq_cnt[$cmd]<>$time<>$nm<>$in{'aite'}<>_|; $du_a=0; $log .= qq|$du_data[$eq[$cmd]][1]を$in{'aite'}さんに送りました
|; }elsif($cmd==6){ # 証 $soko_com .= qq|17<>$eq[$cmd]<>$eq_cnt[$cmd]<>$time<>$nm<>$in{'aite'}<>_|; $syou_a=0; $log .= qq|$syou_data[$eq[$cmd]][1]を$in{'aite'}さんに送りました
|; }elsif($cmd==7){ # スキル1 $soko_com .= qq|18<>$eq[$cmd]<>$eq_cnt[$cmd]<>$time<>$nm<>$in{'aite'}<>_|; $skill1=0; $log .= qq|$skill_data[$eq[$cmd]][1]を$in{'aite'}さんに送りました
|; }elsif($cmd==8){ # スキル2 $soko_com .= qq|19<>$eq[$cmd]<>$eq_cnt[$cmd]<>$time<>$nm<>$in{'aite'}<>_|; $skill2=0; $log .= qq|$skill_data[$eq[$cmd]][1]を$in{'aite'}さんに送りました
|; }elsif($cmd==9){ # モンスター武器 $soko_com .= qq|20<>$eq[$cmd]<>$eq_cnt[$cmd]<>$time<>$nm<>$in{'aite'}<>_|; $db_a=0; $log .= qq|$db_data[$eq[$cmd]][1]を$in{'aite'}さんに送りました
|; }else{ $log .= qq|キャンセルされました|; } if($soko_cost){ $gold -= $soko_cost; $log .= qq|
$soko_cost Gかかりました
|; } }else{ $log .= qq|キャンセルされました|; } &soko_write; } # 共用倉庫出庫 sub soko_com_out{ &soko_open; $soko_com = qq||; foreach(0..$#csoko_lst){ if($csoko_to[$_] eq $nm){ # 自分宛の受取り $log .= qq|
$csoko_from[$_]さんから荷物を受け取りました|; $soko .= "$csoko_typ[$_]<>$csoko_lst[$_]<>$csoko_cnt[$_]_"; }else{ # その他の荷物 $soko_com .= "$csoko_typ[$_]<>$csoko_lst[$_]<>$csoko_cnt[$_]<>$csoko_time[$_]<>$csoko_from[$_]<>$csoko_to[$_]<>_"; } } &soko_write; &dat_write; } #----------------------------------------- # 倉庫ファイル sub soko_open{ # 倉庫ファイル読み込み if(-e $soko_file){ open(IN,"$soko_file") || &error("Can't open $soko_file.",1); $soko_com = ; close(IN); } # 配列に格納 my @line_com = split(/_/,$soko_com); # $log .= qq|
*** $#line ***
|; foreach(0..$#line_com){ my($typ,$lst,$cnt,$sokotime,$from,$to) = split(/<>/,$line_com[$_]); $csoko_typ[$_]=$typ; $csoko_lst[$_]=$lst; $csoko_cnt[$_]=$cnt; $csoko_time[$_]=$sokotime; $csoko_from[$_]=$from; $csoko_to[$_]=$to; } } sub soko_write{ # if($lockkey){ &lock; } open(OUT,">$soko_file") || &error("Can't open $soko_file"); print OUT $soko_com; close(OUT); if(-e $lockfile){ unlink($lockfile); } } #----------------------------------------- # 宛先確認 sub usr_check{ local @tdat; # 参加者データファイル一覧取得/一括読み込み opendir(DIR,"$usrdata") || &error("ユーザデータ読みこみエラー",1); @usrfile = grep /\.cgi/,readdir(DIR); closedir(DIR); foreach (0 .. $#usrfile) { open(IN,"$usrdata$usrfile[$_]") || &error("Can't open $usrfile[$_]",1); $line = ; close(IN); push(@tdat,$line); } my $flag=0; foreach(0 .. $#tdat){ %SAT = ''; my @prats = split(/,/,$tdat[$_]); foreach $prats (@prats){ my($key,$v) = split(/;/,$prats); $SAT{$key} = $v; } if($SAT{'nm'} eq $in{'aite'}){ $flag=1; last; } } if(!$flag){ $log = qq|$in{'aite'}さんという参加者は存在しません。
| ; # $tm=300;$cmd=0;&soko_menu; } } #----------------------------------------- # 入庫処理 sub soko_in{ &soko_read; if($#soko_lst2>=$soko_max){ $log .= qq|荷物がいっぱいです
これ以上は預かれません|; }elsif($cmd>=0 && $eq[$cmd]>0 && $eq_cnt[$cmd]>0){ if($cmd==0){ # 武具 $soko .= qq|11<>$eq[$cmd]<>$eq_cnt[$cmd]_|; $dg_a=0;$dg_cnt=0; $log .= qq|$dg_data[$eq[$cmd]][1]を入庫しました
|; }elsif($cmd==1){ # 防具 $soko .= qq|12<>$eq[$cmd]<>$eq_cnt[$cmd]_|; $df_a=0;$df_cnt=0; $log .= qq|$df_data[$eq[$cmd]][1]を入庫しました
|; }elsif($cmd==2){ # 道具 $soko.= qq|13<>$eq[$cmd]<>$eq_cnt[$cmd]_|; $di_a=0; $di_cnt=0; $log .= qq|$di_data[$eq[$cmd]][1]を入庫しました
|; }elsif($cmd==3){ # 盾 $soko.= qq|14<>$eq[$cmd]<>$eq_cnt[$cmd]_|; $de_a=0;$de_cnt=0; $log .= qq|$de_data[$eq[$cmd]][1]を入庫しました
|; }elsif($cmd==4){ # モンスター $soko .= qq|15<>$eq[$cmd]<>$eq_cnt[$cmd]_|; $dp_a=0; $rebe=0;$mexe=0; $log .= qq|$dp_data[$eq[$cmd]][1]を入庫しました
|; }elsif($cmd==5){ # 馬 $soko .= qq|16<>$eq[$cmd]<>$eq_cnt[$cmd]_|; $du_a=0; $log .= qq|$du_data[$eq[$cmd]][1]を入庫しました
|; }elsif($cmd==6){ # 証 $soko .= qq|17<>$eq[$cmd]<>$eq_cnt[$cmd]_|; $syou_a=0; $log .= qq|$syou_data[$eq[$cmd]][1]を入庫しました
|; }elsif($cmd==7){ # スキル1 $soko .= qq|18<>$eq[$cmd]<>$eq_cnt[$cmd]_|; $skill1=0; $log .= qq|$skill_data[$eq[$cmd]][1]を入庫しました
|; }elsif($cmd==8){ # スキル2 $soko .= qq|19<>$eq[$cmd]<>$eq_cnt[$cmd]_|; $skill2=0; $log .= qq|$skill_data[$eq[$cmd]][1]を入庫しました
|; }elsif($cmd==9){ # モンスター武器 $soko .= qq|20<>$eq[$cmd]<>$eq_cnt[$cmd]_|; $db_a=0; $log .= qq|$db_data[$eq[$cmd]][1]を入庫しました
|; }else{ $log .= qq|キャンセルされました|; } }else{ $log .= qq|キャンセルされました|; } } #----------------------------------------- # 出庫処理 sub soko_out{ &soko_read; if($cmd>-1 && $soko_typ[$cmd]==11){ # 武具 if($dg_a<1){$dg_a=$soko_lst2[$cmd];$dg_cnt=$soko_cnt2[$cmd]; }else{ $flg=-1; } }elsif($cmd>-1 && $soko_typ[$cmd]==12){ # 防具 if($df_a<1){$df_a=$soko_lst2[$cmd];$df_cnt=$soko_cnt2[$cmd]; }else{ $flg=-1; } }elsif($cmd>-1 && $soko_typ[$cmd]==13){ # 道具 # 同じ道具を持っている場合 if($di_a==$soko_lst2[$cmd]){ $di_cnt+=$soko_cnt2[$cmd]; # }elsif($di_a<1){$di_a=$soko_lst2[$cmd];$di_cnt=$soko_cnt2[$cmd]; }else{ $flg=-1; } }elsif($cmd>-1 && $soko_typ[$cmd]==14){ # 盾 if($de_a<1){$de_a=$soko_lst2[$cmd];$de_cnt=$soko_cnt2[$cmd]; }else{ $flg=-1; } }elsif($cmd>-1 && $soko_typ[$cmd]==15){ # 防具 if($dp_a<1){ $dp_a=$soko_lst2[$cmd];$rebe=$soko_cnt2[$cmd]; }else{ $flg=-1;} }elsif($cmd>-1 && $soko_typ[$cmd]==16){ # 盾 if($du_a<1){$du_a=$soko_lst2[$cmd]; }else{ $flg=-1; } }elsif($cmd>-1 && $soko_typ[$cmd]==17){ # 防具 if($syou_a<1){ $syou_a=$soko_lst2[$cmd]; }else{ $flg=-1;} }elsif($cmd>-1 && $soko_typ[$cmd]==18){ # 防具 if($skill1<1){ $skill1=$soko_lst2[$cmd]; }else{ $flg=-1;} }elsif($cmd>-1 && $soko_typ[$cmd]==19){ # 盾 if($skill2<1){$skill2=$soko_lst2[$cmd]; }else{ $flg=-1; } }elsif($cmd>-1 && $soko_typ[$cmd]==20){ # 防具 if($db_a<1){ $db_a=$soko_lst2[$cmd]; }else{ $flg=-1;} }else{ $flg=-2; } if($flg == -1){ $log .= qq|これ以上持てません。出庫はキャンセルされました
|; }elsif($flg == -2){ $log .= qq|出庫はキャンセルされました
|; }else{ $log .= qq|出庫しました
|; # 倉庫リストを再構成 $soko = qq||; foreach(0..$#soko_lst2){ $soko .= qq|$soko_typ[$_]<>$soko_lst2[$_]<>$soko_cnt2[$_]<>$soko_lv[$_]_| if($_!=$cmd); } } } #----------------------------------------- # 装備一覧 sub eq_view{ $log .= qq|入庫または送付するアイテムを選択してください
モンスターはレベル1以上じゃないと入庫できません
入庫数は20が最大です
|; $log .= qq|送付する場合1000Gかかります
|; $log .= qq|
|; $log .= qq|\n|; $log .= qq|\n|; $log .= qq|やめる
\n|; foreach(0..$#eq){ if($eq_cnt[$_]>0){ if($_==0){ $log .= qq|[武] $dg_data[$eq[$_]][1] ($eq_cnt[$_])
\n|; }elsif($_==1){ $log .= qq|[防] $df_data[$eq[$_]][1] ($eq_cnt[$_])
\n|; }elsif($_==2){ $log .= qq|[道] $di_data[$eq[$_]][1] ($eq_cnt[$_])
\n|; }elsif($_==3){ $log .= qq|[盾] $de_data[$eq[$_]][1] ($eq_cnt[$_])
\n|; }elsif($_==4){ $log .= qq|[\モ\ン\] $dp_data[$eq[$_]][1] ($eq_cnt[$_])
\n|; }elsif($_==5){ $log .= qq|[馬] $du_data[$eq[$_]][1]
\n|; }elsif($_==6){ $log .= qq|[証] $syou_data[$eq[$_]][1]
\n|; }elsif($_==7){ $log .= qq|[\ス\1\] $skill_data[$eq[$_]][1]
\n|; }elsif($_==8){ $log .= qq|[\ス\2\] $skill_data[$eq[$_]][1]
\n|; }elsif($_==9){ $log .= qq|[\モ\ン\武\] $db_data[$eq[$_]][1]
\n|; } } } $log .= qq|
\n|; $log .= qq|送付先の名前
\n|; } #----------------------------------------- # 倉庫一覧 sub soko_view{ &soko_read; $log .= qq|出庫するアイテムを選択してください
\n|; $log .= qq|
\n|; $log .= qq|\n|; $log .= qq|\n|; $log .= qq|やめる
\n|; foreach(0..$#soko_lst2){ if($soko_lst2>0 && $soko_cnt2>0 || true){ $log .= qq||; $log .= qq|[武] $dg_data[$soko_lst2[$_]][1]($soko_cnt2[$_])\n| if($soko_typ[$_]==11); $log .= qq|[防] $df_data[$soko_lst2[$_]][1]($soko_cnt2[$_])\n| if($soko_typ[$_]==12); $log .= qq|[道] $di_data[$soko_lst2[$_]][1]($soko_cnt2[$_])\n| if($soko_typ[$_]==13); $log .= qq|[盾] $de_data[$soko_lst2[$_]][1]($soko_cnt2[$_])\n| if($soko_typ[$_]==14); $log .= qq|[\モ\ン\] $dp_data[$soko_lst2[$_]][1]($soko_cnt2[$_])\n| if($soko_typ[$_]==15); $log .= qq|[馬] $du_data[$soko_lst2[$_]][1]\n| if($soko_typ[$_]==16); $log .= qq|[証] $syou_data[$soko_lst2[$_]][1]\n| if($soko_typ[$_]==17); $log .= qq|[\ス\1\] $skill_data[$soko_lst2[$_]][1]\n| if($soko_typ[$_]==18); $log .= qq|[\ス\2\] $skill_data[$soko_lst2[$_]][1]\n| if($soko_typ[$_]==19); $log .= qq|[\モ\ン\武\] $db_data[$soko_lst2[$_]][1]\n| if($soko_typ[$_]==20); $log .= qq|4:$soko_lst2[$_]/$soko_cnt2[$_]/$soko_typ[$_]\n| if($soko_typ[$_] != 11 && $soko_typ[$_] != 12 && $soko_typ[$_] != 13 && $soko_typ[$_] != 14 && $soko_typ[$_] != 15 && $soko_typ[$_] != 16 && $soko_typ[$_] != 17 && $soko_typ[$_] != 18 && $soko_typ[$_] != 19 && $soko_typ[$_] != 20); } $log .= qq|
\n|; } $log .= qq|
|; # $tm = 320; } #----------------------------------------- # 倉庫品を配列に格納 sub soko_read{ my @line = split(/_/,$soko); foreach(0..$#line){ my ($item_type,$item_no,$cnt,$lv) = split(/<>/,$line[$_]); $soko_lst2[$_]=$item_no; $soko_cnt2[$_]=$cnt; $soko_typ[$_]=$item_type; $soko_lv[$_]=$lv; } } 1;