#-----------------------------------------------------------# # 罪と罰++ 二律背反 # 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 #--- [注意事項] --------------------------------------------# # 1.このスクリプトは以下の利用規程に従って配布しています。 # # http://www24.big.or.jp/~obo/game/ore_/gild/ # #-----------------------------------------------------------# #------------------------------------------------------------------------------- # ファイル IN 関連 #---------------------------------------# # 参加者データ全取得 # #---------------------------------------# # 参加者データファイル一覧取得 sub usrdata_read{ opendir(DIR,"$usrdata") || &error("ユーザデータ読みこみエラー",1); @usrfile = grep /\.cgi/,readdir(DIR); closedir(DIR); } # 参加者データ一括読み込み sub usrdata_open{ foreach (0 .. $#usrfile) { open(IN,"$usrdata$usrfile[$_]") || &error("Can't open $usrfile[$_]",1); $line = ; close(IN); push(@tdat,$line); } } #---------------------------------------# # 参加者データ個別取得 # #---------------------------------------# # 参加者データ個別読み込み sub usr_file_open{ open(IN,"$usrdata$id\.cgi") || &error("ユーザーIDが間違っているか、登録されていません。
Open Error : $usrdata$id\.cgi",1); @dat = ; close(IN); %DAT = ''; # chop $dat[0]; my @prats = split(/,/,$dat[0]); foreach (0 .. $#prats){ my($key,$v) = split(/;/,$prats[$_]); $DAT{$key} = $v; } &error("パスワードが間違っています",1) if($pw ne $DAT{'pw'} && $admin_pass ne $pw); &hash_data; # 行動セッションリセット $act_cnt=0 if($time-$la>3600*24); } # ハッシュ割り当て sub hash_data{ $pw = $DAT{'pw'}; # パスワード $gold = $DAT{'gold'}; # お金 $ygold = $DAT{'ygold'}; # お金 $nm = $DAT{'nm'}; # 名前 $lv = $DAT{'lv'}; # レベル $sei = $DAT{'sei'}; # 性別 $hp = $DAT{'hp'}; # 体力 $max_hp = $DAT{'max_hp'}; # 最大体力 $mp = $DAT{'mp'}; # 魔力 $max_mp = $DAT{'max_mp'}; # 最大魔力 $ua = $DAT{'ua'}; # 攻撃力 $ud = $DAT{'ud'}; # 防御力 $lr = $DAT{'lr'}; # 指揮力 $ag = $DAT{'ag'}; # 敏捷力 $sina = $DAT{'sina'}; $s_g = $DAT{'s_g'}; $ki = $DAT{'ki'}; $takarakuji = $DAT{'takarakuji'}; $atari_kuji = $DAT{'atari_kuji'}; $iseki_p = $DAT{'iseki_p'}; $sikan_y = $DAT{'sikan_y'}; $syoku = $DAT{'syoku'}; # 職業 $syoku_p = $DAT{'syoku_p'}; # 転職ポイント $de_a = $DAT{'de_a'}; # 盾 $de_cnt = $DAT{'de_cnt'}; # 盾 回数 $sogo_1 = $DAT{'sogo_1'}; #覇者 $sogo_2 = $DAT{'sogo_2'}; #英雄 $sogo_7 = $DAT{'sogo_7'}; #プチ英雄 $sogo_8 = $DAT{'sogo_8'}; #戦将軍 $sogo_9 = $DAT{'sogo_9'}; #プチ英雄 $sogo_10 = $DAT{'sogo_10'}; #軍師 $sogo_11 = $DAT{'sogo_11'}; #副管理人の称号 $sogo_12 = $DAT{'sogo_12'}; #勇者 $sogo_13 = $DAT{'sogo_13'}; #催眠術師 $sogo_14 = $DAT{'sogo_14'}; #謀報隊長 $sogo_15 = $DAT{'sogo_15'}; #奇襲隊長 $sogo_16 = $DAT{'sogo_16'}; #破壊神 $sogo_17 = $DAT{'sogo_17'}; #救世主 $sogo_18 = $DAT{'sogo_18'}; #副管理人の称号 $sogo_19 = $DAT{'sogo_19'}; #副管理人の称号 $sogo_20 = $DAT{'sogo_20'}; #副管理人の称号 $sogo_21 = $DAT{'sogo_21'}; #副管理人の称号 $sogo_22 = $DAT{'sogo_22'}; #副管理人の称号 $sogo_23 = $DAT{'sogo_23'}; #副管理人の称号 $sogo_24 = $DAT{'sogo_24'}; #副管理人の称号 $sogo_25 = $DAT{'sogo_25'}; #副管理人の称号 $sogo_26 = $DAT{'sogo_26'}; #副管理人の称号 $sogo_27 = $DAT{'sogo_27'}; #副管理人の称 $sogo_28 = $DAT{'sogo_28'}; #副管理人の称号 $sogo_29 = $DAT{'sogo_29'}; #副管理人の称号 $exe = $DAT{'exe'}; # 経験値 $mexe = $DAT{'mexe'}; # モンスター経験値 $rank = $DAT{'rank'}; # 階級 $rank_exe = $DAT{'rank_exe'}; # 貢献地 $grank = $DAT{'grank'}; # 軍階級 $grank_exe = $DAT{'grank_exe'}; # 軍貢献値 $skill1 = $DAT{'skill1'}; # スキル1 $skill2 = $DAT{'skill2'}; # スキル2 $tskill1 = $DAT{'tskill1'}; # スキル1 $tskill2 = $DAT{'tskill2'}; # スキル2 $tougi = $DAT{'tougi'}; # スキル1 $nogyo = $DAT{'nogyo'}; # 経験値 $syogyo = $DAT{'syogyo'}; # 階級 $tyohe = $DAT{'tyohe'}; # 軍貢献値 $tia = $DAT{'tia'}; # 軍貢献値 $ab = $DAT{'ab'}; # 経験値 $bc = $DAT{'bc'}; # 階級 $cd = $DAT{'cd'}; # 軍貢献値 $de = $DAT{'de'}; # 軍貢献値 $tan = $DAT{'tan'}; # 軍貢献値 $mahi = $DAT{'mahi'}; # 軍貢献値 $atan = $DAT{'atan'}; # 軍貢献値 $amahi = $DAT{'amahi'}; # 軍貢献値 $type_from = $DAT{'type_from'}; # 機種判別 $camp = $DAT{'camp'}; # 所属国 $sol = $DAT{'sol'}; # 部隊数 $nation = $DAT{'nation'}; # 対象国 $we = $DAT{'we'}; # 討伐 回数 $we_m = $DAT{'we_m'}; # ミニ討伐 回数 $no = $DAT{'no'}; # 農業回数 $sy = $DAT{'sy'}; # 商業回数 $ty = $DAT{'ty'}; # 徴兵回数 $ti = $DAT{'ti'}; # 農業回数 $sen = $DAT{'sen'}; # 洗脳回数 $gou = $DAT{'gou'}; # 強奪回数 $hou_b = $DAT{'hou_b'}; # 謀報回数 $tik = $DAT{'tik'}; # 謀報回数 $syu = $DAT{'syu'}; # 修行回数 $roto = $DAT{'roto'}; # プチロト回数 $sake = $DAT{'sake'}; # 飲み回数 $tensei = $DAT{'tensei'}; # 転生回数 $ikki = $DAT{'ikki'}; # 一騎打ち回数 $dp_a = $DAT{'dp_a'}; # ペット $rebe = $DAT{'rebe'}; # ペットレベル $tdp_a = $DAT{'tdp_a'};# 敵ペット $trebe = $DAT{'trebe'}; # 敵ペットレベル $soko = $DAT{'soko'}; # 倉庫(預かり所) $du_a = $DAT{'du_a'}; # 馬 $dg_a = $DAT{'dg_a'}; # 武具 $dg_cnt = $DAT{'dg_cnt'}; # 武具 回数 $df_a = $DAT{'df_a'}; # 防具 $df_cnt = $DAT{'df_cnt'}; # 防具 回数 $di_a = $DAT{'di_a'}; # 道具 $di_cnt = $DAT{'di_cnt'}; # 道具 回数 $db_a = $DAT{'db_a'}; # ペット武器 $tdb_a = $DAT{'tdb_a'}; # ペット武器敵 $sogo = $DAT{'sogo'}; # 称号 $so = $DAT{'so'}; # 代表称号 $sikan = $DAT{'sikan'}; # 仕官称号 $gazou = $DAT{'gazou'}; # icon $ltime = $DAT{'ltime'}; #新着表示 $w_a = $DAT{'w_a'}; # 連続攻撃アルメ $w_f = $DAT{'w_f'}; # 連続攻撃アルメ $w_i = $DAT{'w_i'}; # 連続攻撃アルメ $w_s = $DAT{'w_s'}; # 連続攻撃アルメ $w_y = $DAT{'w_y'}; # 連続攻撃アルメ $w_g = $DAT{'w_g'}; # 連続攻撃アルメ $war_cnt= $DAT{'war_cnt'}; # 連続攻撃アルメ $war_cr = $DAT{'war_cr'}; # 連続攻撃アルメ $gazou_rank = $DAT{'gazou_rank'}; # icon $type = $DAT{'type'}; # 行動判定(行動フラグ) $tm = $DAT{'tm'}; # 行動判定(行動フラグ) $bt = $DAT{'bt'}; # 戦闘時敵キャラ判別(行動フラグ) $bst = $DAT{'bst'}; # 技による能力上昇の判定 $ck = $DAT{'ck'}; # 戦闘判定(行動フラグ) $pr = $DAT{'pr'}; # 拘束時間 残り(行動フラグ) $la = $DAT{'la'}; # 更新時間 $roku = $DAT{'roku'}; # 前回給料が払われた時間(仕官した時間) $roku2 = $DAT{'roku2'}; # 前回銀行の利息が払われた時間 $mes = $DAT{'mes'}; # メッセージ $tnm = $DAT{'tnm'}; # 名前 敵 $etc= $DAT{'etc'}; # 汎用変数 $ushu = $DAT{'ushu'}; $hushu = $DAT{'hushu'}; $tid = $DAT{'tid'}; # ID 敵 $thp = $DAT{'thp'}; # 体力 敵 $thp_max = $DAT{'thp_max'}; # 最大体力 敵 $tmp = $DAT{'tmp'}; # 魔力 敵 $tlv = $DAT{'tlv'}; # レベル 敵 $tua = $DAT{'tua'}; # 攻撃力 敵 $tud = $DAT{'tud'}; # 防御力 敵 $tlr = $DAT{'tlr'}; # 指揮力 敵 $tag = $DAT{'tag'}; # 敏捷力 敵 $tdf_a = $DAT{'tdf_a'}; # 防具 敵 $tde_a = $DAT{'tde_a'}; # 盾 敵 $tdg_a = $DAT{'tdg_a'}; # 武器 敵 $tdu_a = $DAT{'tdu_a'}; #馬 敵 $syou_a = $DAT{'syou_a'}; # 武器 敵 $tsyou_a = $DAT{'tsyou_a'}; #馬 敵 $sou = $DAT{'sou'}; #戦争カウント $st_cnt2 = $DAT{'st_cnt2'}; #LVUPカウント $arm = $DAT{'arm'}; # 兵科 $arm_rank = $DAT{'arm_rank'}; # 兵科階級 $tarm = $DAT{'arm'}; # 敵兵科 $tarm_rank= $DAT{'arm_rank'}; # 敵兵科階級 $tcp = $DAT{'tcp'}; # 所属国 敵 $tsol = $DAT{'tsol'}; # 部隊数 敵 $tsg = $DAT{'tsg'}; # 称号 敵 $b_n = $DAT{'b_n'}; # 戦闘限界ターン $b_v = $DAT{'b_v'}; # 現在のターン数 $n = $_; # 配列インデックス $paa = $DAT{'paa'}; # 戦闘限界ターン $act_cnt = $DAT{'act_cnt'}; # 行動セッション値 $age_time = $DAT{'age_time'}; # 前回のレベルアップ < time式 $info_mes = $DAT{'info_mes'}; # 情報時に表示されるコメント $pr -= $time-$la; $pr = 0 if($pr<0); } # 国データ読み込み sub cdata_open{ open (IN,"$cmapfile") || &error("領土データファイルが開けませんでした",1); @cmap = ; close(IN) or die "Can't close : $!"; # 1行超えてたら最終行を残してリセット if($#cmap >= 1){ open (IO,">$cmapfile"); print IO $cmap[$#cmap]; close (IO); } %CP2 = ''; my @CP2 = split(/,/,$cmap[$#cmap]); } $town=$CP2[0];#各町の属国 $town_gd=$CP2[1];#各町の防衛力 open (IN,"$cdatfile") || &error("国データファイルが開けませんでした",1); @cdat = ; close(IN) or die "Can't close : $!"; %CP = ''; my @prats = split(/,/,$cdat[0]); foreach $prats (@prats){ my($k,$v) = split(/;/,$prats); $CP{$k} = $v; } $cn1=$CP{'cn1'};# 国1の国力 $cg1=$CP{'cg1'};# 国1の財政 $cf1=$CP{'cf1'};# 国1の蓄米 $cs1=$CP{'cs1'};# 国1の予備兵 $ce1=$CP{'ce1'};# 国1の現状 $c1 =$CP{'c1'}; # 国1の参加人数 $c1a=$CP{'c1a'};# 国1の定員数 $ck1=$CP{'ck1'};# 国1の訓練度 $ct1=$CP{'ct1'};# 国1の治安 $cn2=$CP{'cn2'}; $cg2=$CP{'cg2'}; $cf2=$CP{'cf2'}; $cs2=$CP{'cs2'}; $ce2=$CP{'ce2'}; $c2 =$CP{'c2'}; $c2a=$CP{'c2a'}; $ck2=$CP{'ck2'};# 国1の訓練度 $ct2=$CP{'ct2'}; $cn3=$CP{'cn3'}; $cg3=$CP{'cg3'}; $cf3=$CP{'cf3'}; $cs3=$CP{'cs3'}; $ce3=$CP{'ce3'}; $c3 =$CP{'c3'}; $c3a=$CP{'c3a'}; $ck3=$CP{'ck3'};# 国1の訓練度 $ct3=$CP{'ct3'}; $cn4=$CP{'cn4'}; $cg4=$CP{'cg4'}; $cf4=$CP{'cf4'}; $cs4=$CP{'cs4'}; $ce4=$CP{'ce4'}; $c4 =$CP{'c4'}; $c4a=$CP{'c4a'}; $ck4=$CP{'ck4'};# 国1の訓練度 $ct4=$CP{'ct4'}; $cn5=$CP{'cn5'}; $cg5=$CP{'cg5'}; $cf5=$CP{'cf5'}; $cs5=$CP{'cs5'}; $ce5=$CP{'ce5'}; $c5 =$CP{'c5'}; $c5a=$CP{'c5a'}; $ck5=$CP{'ck5'};# 国1の訓練度 $ct5=$CP{'ct5'}; $cn6=$CP{'cn6'}; $cg6=$CP{'cg6'}; $cf6=$CP{'cf6'}; $cs6=$CP{'cs6'}; $ce6=$CP{'ce6'}; $c6 =$CP{'c6'}; $c6a=$CP{'c6a'}; $ck6=$CP{'ck6'};# 国1の訓練度 $ct6=$CP{'ct6'}; $set=$CP{'set'}; $all_mem=$CP{'all_mem'}; $goal_no=$CP{'goal_no'}; # 現在何期か。 $hasya=$CP{'hasya'}; $hcamp=$CP{'hcamp'}; $wr_mes=$CP{'wr_mes'}; $wr_mes1=$CP{'wr_mes1'}; $wr_mes2=$CP{'wr_mes2'}; $wr_mes3=$CP{'wr_mes3'}; $wr_mes4=$CP{'wr_mes4'}; $wr_mes5=$CP{'wr_mes5'}; $wr_mes6=$CP{'wr_mes6'}; $tei_mes1=$CP{'tei_mes1'}; $tei_mes2=$CP{'tei_mes2'}; $tei_mes3=$CP{'tei_mes3'}; $tei_mes4=$CP{'tei_mes4'}; $tei_mes5=$CP{'tei_mes5'}; $tei_mes6=$CP{'tei_mes6'}; $tyanp_mes=$CP{'tyanp_mes'}; $cshu[1] = $CP{'cshu1'}; $cshu_rank[1] = $CP{'cshu_rank1'}; $cshu[2] = $CP{'cshu2'}; $cshu_rank[2] = $CP{'cshu_rank2'}; $cshu[3] = $CP{'cshu3'}; $cshu_rank[3] = $CP{'cshu_rank3'}; $cshu[4] = $CP{'cshu4'}; $cshu_rank[4] = $CP{'cshu_rank4'}; $cshu[5] = $CP{'cshu5'}; $cshu_rank[5] = $CP{'cshu_rank5'}; $cshu[6] = $CP{'cshu6'}; $cshu_rank[6] = $CP{'cshu_rank6'}; $hcshu[1] = $CP{'hcshu1'}; $hcshu_rank[1] = $CP{'hcshu_rank1'}; $hcshu[2] = $CP{'hcshu2'}; $hcshu_rank[2] = $CP{'hcshu_rank2'}; $hcshu[3] = $CP{'hcshu3'}; $hcshu_rank[3] = $CP{'hcshu_rank3'}; $hcshu[4] = $CP{'hcshu4'}; $hcshu_rank[4] = $CP{'hcshu_rank4'}; $hcshu[5] = $CP{'hcshu5'}; $hcshu_rank[5] = $CP{'hcshu_rank5'}; $hcshu[6] = $CP{'hcshu6'}; $hcshu_rank[6] = $CP{'hcshu_rank6'}; $cgen[1] = $CP{'cgen1'}; $cgen[2] = $CP{'cgen2'}; $cgen[3] = $CP{'cgen3'}; $cgen[4] = $CP{'cgen4'}; $cgen[5] = $CP{'cgen5'}; $cgen[6] = $CP{'cgen6'}; $hcgen[1] = $CP{'hcgen1'}; $hcgen[2] = $CP{'hcgen2'}; $hcgen[3] = $CP{'hcgen3'}; $hcgen[4] = $CP{'hcgen4'}; $hcgen[5] = $CP{'hcgen5'}; $hcgen[6] = $CP{'hcgen6'}; $horyo[1] = $CP{'horyo1'}; $horyo[2] = $CP{'horyo2'}; $horyo[3] = $CP{'horyo3'}; $horyo[4] = $CP{'horyo4'}; $horyo[5] = $CP{'horyo5'}; $horyo[6] = $CP{'horyo6'}; $ua_top=$CP{'ua_top'};#uaトップ $ud_top=$CP{'ud_top'};#udトップ $ag_top=$CP{'ag_top'};#agトップ $lr_top=$CP{'lr_top'};#lrトップ $hp_top=$CP{'hp_top'};#hpトップ $mp_top=$CP{'mp_top'};#mpトップ $ikki_top=$CP{'ikki_top'};#ikkiトップ $sou_top=$CP{'sou_top'};#sou_トップ $gold_top=$CP{'gold_top'};#gold_トップ $ua_t=$CP{'ua_t'};#uaトップ $ud_t=$CP{'ud_t'};#udトップ $ag_t=$CP{'ag_t'};#agトップ $lr_t=$CP{'lr_t'};#lrトップ $hp_t=$CP{'hp_t'};#hpトップ $mp_t=$CP{'mp_t'};#mpトップ $ikki_t=$CP{'ikki_t'};#ikkiトップ $sou_t=$CP{'sou_t'};#souトップ $gold_t=$CP{'gold_t'};#goldトップ $ua_top1=$CP{'ua_top1'};#uaトップ $ud_top1=$CP{'ud_top1'};#udトップ $ag_top1=$CP{'ag_top1'};#agトップ $lr_top1=$CP{'lr_top1'};#lrトップ $hp_top1=$CP{'hp_top1'};#hpトップ $mp_top1=$CP{'mp_top1'};#mpトップ $ikki_top1=$CP{'ikki_top1'};#ikkiトップ $sou_top1=$CP{'sou_top1'};#sou_トップ $gold_top1=$CP{'gold_top1'};#gold_トップ $ua_t1=$CP{'ua_t1'};#uaトップ $ud_t1=$CP{'ud_t1'};#udトップ $ag_t1=$CP{'ag_t1'};#agトップ $lr_t1=$CP{'lr_t1'};#lrトップ $hp_t1=$CP{'hp_t1'};#hpトップ $mp_t1=$CP{'mp_t1'};#mpトップ $ikki_t1=$CP{'ikki_t1'};#ikkiトップ $sou_t1=$CP{'sou_t1'};#souトップ $gold_t1=$CP{'gold_t1'};#goldトップ $ua_top2=$CP{'ua_top2'};#uaトップ $ud_top2=$CP{'ud_top2'};#udトップ $ag_top2=$CP{'ag_top2'};#agトップ $lr_top2=$CP{'lr_top2'};#lrトップ $hp_top2=$CP{'hp_top2'};#hpトップ $mp_top2=$CP{'mp_top2'};#mpトップ $ikki_top2=$CP{'ikki_top2'};#ikkiトップ $sou_top2=$CP{'sou_top2'};#sou_トップ $gold_top2=$CP{'gold_top2'};#gold_トップ $ua_t2=$CP{'ua_t2'};#uaトップ $ud_t2=$CP{'ud_t2'};#udトップ $ag_t2=$CP{'ag_t2'};#agトップ $lr_t2=$CP{'lr_t2'};#lrトップ $hp_t2=$CP{'hp_t2'};#hpトップ $mp_t2=$CP{'mp_t2'};#mpトップ $ikki_t2=$CP{'ikki_t2'};#ikkiトップ $sou_t2=$CP{'sou_t2'};#souトップ $gold_t2=$CP{'gold_t2'};#goldトップ $ua_top3=$CP{'ua_top3'};#uaトップ $ud_top3=$CP{'ud_top3'};#udトップ $ag_top3=$CP{'ag_top3'};#agトップ $lr_top3=$CP{'lr_top3'};#lrトップ $hp_top3=$CP{'hp_top3'};#hpトップ $mp_top3=$CP{'mp_top3'};#mpトップ $ikki_top3=$CP{'ikki_top3'};#ikkiトップ $sou_top3=$CP{'sou_top3'};#sou_トップ $gold_top3=$CP{'gold_top3'};#gold_トップ $ua_t3=$CP{'ua_t3'};#uaトップ $ud_t3=$CP{'ud_t3'};#udトップ $ag_t3=$CP{'ag_t3'};#agトップ $lr_t3=$CP{'lr_t3'};#lrトップ $hp_t3=$CP{'hp_t3'};#hpトップ $mp_t3=$CP{'mp_t3'};#mpトップ $ikki_t3=$CP{'ikki_t3'};#ikkiトップ $sou_t3=$CP{'sou_t3'};#souトップ $gold_t3=$CP{'gold_t3'};#goldトップ $ua_top4=$CP{'ua_top4'};#uaトップ $ud_top4=$CP{'ud_top4'};#udトップ $ag_top4=$CP{'ag_top4'};#agトップ $lr_top4=$CP{'lr_top4'};#lrトップ $hp_top4=$CP{'hp_top4'};#hpトップ $mp_top4=$CP{'mp_top4'};#mpトップ $ikki_top4=$CP{'ikki_top4'};#ikkiトップ $sou_top4=$CP{'sou_top4'};#sou_トップ $gold_top4=$CP{'gold_top4'};#gold_トップ $ua_t4=$CP{'ua_t4'};#uaトップ $ud_t4=$CP{'ud_t4'};#udトップ $ag_t4=$CP{'ag_t4'};#agトップ $lr_t4=$CP{'lr_t4'};#lrトップ $hp_t4=$CP{'hp_t4'};#hpトップ $mp_t4=$CP{'mp_t4'};#mpトップ $ikki_t4=$CP{'ikki_t4'};#ikkiトップ $sou_t4=$CP{'sou_t4'};#souトップ $gold_t4=$CP{'gold_t4'};#goldトップ $ua_top5=$CP{'ua_top5'};#uaトップ $ud_top5=$CP{'ud_top5'};#udトップ $ag_top5=$CP{'ag_top5'};#agトップ $lr_top5=$CP{'lr_top5'};#lrトップ $hp_top5=$CP{'hp_top5'};#hpトップ $mp_top5=$CP{'mp_top5'};#mpトップ $ikki_top5=$CP{'ikki_top5'};#ikkiトップ $sou_top5=$CP{'sou_top5'};#sou_トップ $gold_top5=$CP{'gold_top5'};#gold_トップ $ua_t5=$CP{'ua_t5'};#uaトップ $ud_t5=$CP{'ud_t5'};#udトップ $ag_t5=$CP{'ag_t5'};#agトップ $lr_t5=$CP{'lr_t5'};#lrトップ $hp_t5=$CP{'hp_t5'};#hpトップ $mp_t5=$CP{'mp_t5'};#mpトップ $ikki_t5=$CP{'ikki_t5'};#ikkiトップ $sou_t5=$CP{'sou_t5'};#souトップ $gold_t5=$CP{'gold_t5'};#goldトップ $ua_top6=$CP{'ua_top6'};#uaトップ $ud_top6=$CP{'ud_top6'};#udトップ $ag_top6=$CP{'ag_top6'};#agトップ $lr_top6=$CP{'lr_top6'};#lrトップ $hp_top6=$CP{'hp_top6'};#hpトップ $mp_top6=$CP{'mp_top6'};#mpトップ $ikki_top6=$CP{'ikki_top6'};#ikkiトップ $sou_top6=$CP{'sou_top6'};#sou_トップ $gold_top6=$CP{'gold_top6'};#gold_トップ $ua_t6=$CP{'ua_t6'};#uaトップ $ud_t6=$CP{'ud_t6'};#udトップ $ag_t6=$CP{'ag_t6'};#agトップ $lr_t6=$CP{'lr_t6'};#lrトップ $hp_t6=$CP{'hp_t6'};#hpトップ $mp_t6=$CP{'mp_t6'};#mpトップ $ikki_t6=$CP{'ikki_t6'};#ikkiトップ $sou_t6=$CP{'sou_t6'};#souトップ $gold_t6=$CP{'gold_t6'};#goldトップ if($camp==1){ $myua=$ua_top1; $myud=$ud_top1; $mylr=$lr_top1; $myag=$ag_top1; $myhp=$hp_top1; $mymp=$mp_top1; $myikki=$ikki_top1; $mysou=$sou_top1; $mygold=$gold_top1; $mua=$ua_t1; $mud=$ud_t1; $mlr=$lr_t1; $mag=$ag_t1; $mhp=$hp_t1; $mmp=$mp_t1; $mikki=$ikki_t1; $msou=$sou_t1; $mgold=$gold_t1; }elsif($camp==2){ $myua=$ua_top2; $myud=$ud_top2; $mylr=$lr_top2; $myag=$ag_top2; $myhp=$hp_top2; $mymp=$mp_top2; $myikki=$ikki_top2; $mysou=$sou_top2; $mygold=$gold_top2; $mua=$ua_t2; $mud=$ud_t2; $mlr=$lr_t2; $mag=$ag_t2; $mhp=$hp_t2; $mmp=$mp_t2; $mikki=$ikki_t2; $msou=$sou_t2; $mgold=$gold_t2; }elsif($camp==3){ $myua=$ua_top3; $myud=$ud_top3; $mylr=$lr_top3; $myag=$ag_top3; $myhp=$hp_top3; $mymp=$mp_top3; $myikki=$ikki_top3; $mysou=$sou_top3; $mygold=$gold_top3; $mua=$ua_t3; $mud=$ud_t3; $mlr=$lr_t3; $mag=$ag_t3; $mhp=$hp_t3; $mmp=$mp_t3; $mikki=$ikki_t3; $msou=$sou_t3; $mgold=$gold_t3; }elsif($camp==4){ $myua=$ua_top4; $myud=$ud_top4; $mylr=$lr_top4; $myag=$ag_top4; $myhp=$hp_top4; $mymp=$mp_top4; $myikki=$ikki_top4; $mysou=$sou_top4; $mygold=$gold_top4; $mua=$ua_t4; $mud=$ud_t4; $mlr=$lr_t4; $mag=$ag_t4; $mhp=$hp_t4; $mmp=$mp_t4; $mikki=$ikki_t4; $msou=$sou_t4; $mgold=$gold_t4; }elsif($camp==5){ $myua=$ua_top5; $myud=$ud_top5; $mylr=$lr_top5; $myag=$ag_top5; $myhp=$hp_top5; $mymp=$mp_top5; $myikki=$ikki_top5; $mysou=$sou_top5; $mygold=$gold_top5; $mua=$ua_t5; $mud=$ud_t5; $mlr=$lr_t5; $mag=$ag_t5; $mhp=$hp_t5; $mmp=$mp_t5; $mikki=$ikki_t5; $msou=$sou_t5; $mgold=$gold_t5; }elsif($camp==6){ $myua=$ua_top6; $myud=$ud_top6; $mylr=$lr_top6; $myag=$ag_top6; $myhp=$hp_top6; $mymp=$mp_top6; $myikki=$ikki_top6; $mysou=$sou_top6; $mygold=$gold_top6; $mua=$ua_t6; $mud=$ud_t6; $mlr=$lr_t6; $mag=$ag_t6; $mhp=$hp_t6; $mmp=$mp_t6; $mikki=$ikki_t6; $msou=$sou_t6; $mgold=$gold_t6; } if($camp==1){ $my_cn=$cn1; $my_cg=$cg1; $my_cf=$cf1; $my_cs=$cs1; $my_ce=$ce1; $my_ck=$ck1; $my_ct=$ct1; }elsif($camp==2){ $my_cn=$cn2; $my_cg=$cg2; $my_cf=$cf2; $my_cs=$cs2; $my_ce=$ce2; $my_ck=$ck2; $my_ct=$ct2; }elsif($camp==3){ $my_cn=$cn3; $my_cg=$cg3; $my_cf=$cf3; $my_cs=$cs3; $my_ce=$ce3; $my_ck=$ck3; $my_ct=$ct3; }elsif($camp==4){ $my_cn=$cn4; $my_cg=$cg4; $my_cf=$cf4; $my_cs=$cs4; $my_ce=$ce4; $my_ck=$ck4; $my_ct=$ct4; }elsif($camp==5){ $my_cn=$cn5; $my_cg=$cg5; $my_cf=$cf5; $my_cs=$cs5; $my_ce=$ce5; $my_ck=$ck5; $my_ct=$ct5; }elsif($camp==6){ $my_cn=$cn6; $my_cg=$cg6; $my_cf=$cf6; $my_cs=$cs6; $my_ce=$ce6; $my_ck=$ck6; $my_ct=$ct6; } # 友好度 for ($self=1; $self<7;$self++){ for ($other=1; $other<7;$other++){ $cfs[$self.$other] = $CP{'cfs'.$self.$other}; if ($other<$self){ # 友好度 $cfs[$self.$other] = int(rand(30)+40) if ($cfs[$self.$other]==""); } elsif ($other>$self) { # 条約 # $cfs[$self.$other] = 0; } # 設定値をクリア # $cfs[$self.$other] = ""; } } } # ログデータ読み込み sub read_data{ # 統一、リセット直後の戦争を抑止 if($type eq '戦争中' && $reset_time_limit-2 < int(($set-$time)/3600*24)){ $log .= qq|統一直後は、戦争できません。|; $log .= qq|撤退します
|; $tm = 0; $type = ''; # 撤退処理 if($camp == 1){ $cg1 += int($sol/10); $cf1 += int($sol); $cs1 += int($sol); }elsif($camp == 2){ $cg2 += int($sol/10); $cf2 += int($sol); $cs2 += int($sol); }elsif($camp == 3){ $cg3 += int($sol/10); $cf3 += int($sol); $cs3 += int($sol); }elsif($camp == 4){ $cg4 += int($sol/10); $cf4 += int($sol); $cs4 += int($sol); }elsif($camp == 5){ $cg5 += int($sol/10); $cf5 += int($sol); $cs5 += int($sol); }elsif($camp == 6){ $cg6 += int($sol/10); $cf6 += int($sol); $cs6 += int($sol); } } # キャラデータ読み込み &usr_file_open; # リロード規制 foreach(0 .. $#act_limit){ # エラー表示式(リロード抑制を明示的に行いたい方はコチラがオススメ。) #&error("行動は $act_limit[$_][1]秒以上間隔を空けて行なってくださいサーバーが重いので・",1)if($time<=$la+$act_limit[$_][1] && $hour==$act_limit[$_][0]); # リロード無効式 if($time<=$la+$act_limit[$_][1] && $hour==$act_limit[$_][0]){&error("行動は $act_limit[$_][1]秒以上間隔を空けて行なってくださいサーバーが重いので・",1) if($time<=$la+$act_limit[$_][1] && $hour==$act_limit[$_][0]); print "Status: 204\n\n"; if($mode ne "mes_write"){ &unlock($lock) if $lock_check; } exit; } } # 国データ読み込み &cdata_open; # 領土の属国読み込み $cn1=$cn2=$cn3=$cn4=$cn5=$cn6=0; my @ryodo = split(/\//,$town); my @gard = split(/\//,$town_gd); foreach (0 .. 38){ $town_nm[$_]=$ryodo[$_]; $town_gd_nm[$_]=$gard[$_]; if($town_nm[$_]==1){$cn1++;} if($town_nm[$_]==2){$cn2++;} if($town_nm[$_]==3){$cn3++;} if($town_nm[$_]==4){$cn4++;} if($town_nm[$_]==5){$cn5++;} if($town_nm[$_]==6){$cn6++;} # 機種別設定 if($mv_mode eq 'mv'){ if($ENV{'HTTP_USER_AGENT'}=~/DoCoMo/) {$type_from="I-mode";} elsif($ENV{'HTTP_USER_AGENT'} =~/^KDDI\-/i){$type_from="EZ-web";} elsif($ENV{'HTTP_USER_AGENT'} =~/J-PHONE/ ){$type_from="J-sky";} else{$type_from="M";} } if($mv_mode eq 'pc'){ $type_from="PC"; } if($type ne '討伐中'){ if($type ne '修行中'){ }} # 代表者 if($cshu[$camp] ne $nm && $so == 1){ $so = 0; $log .= qq|失脚のため国主の称号を失いました
|; if($cshu[$camp] eq ""){ $log .= qq|現在、国主はいません
|; }else{ $log .= qq|現在の国主は、$cshu[$camp]です
|; } }elsif($hcshu[$camp] ne $nm && $so == 2){ $so = 0; $log .= qq|失脚のため副国主の称号を失いました
|; if($hcshu[$camp] eq ""){ $log .= qq|現在、副国主はいません
|; }else{ $log .= qq|現在の副国主は、$hcshu[$camp]です
|; } } $id_p = $id; $pw_p = $pw; $next_lv = int(($lv*$lv)*10); $next_mlv = int((($rebe*$rebe)/15)+10); $max_sol = $g_p[$rank]; $max_hp = 500000 if($max_hp>500000); $max_mp = 500000 if($max_mp>500000); $ua = 10000 if($ua>10000); $ud = 10000 if($ud>10000); $lr = 10000 if($lr>10000); $ag = 10000 if($ag>10000); $rebe = 50 if($rebe>50); $rank = $#cl if($rank>$#cl); $rank_exe = 0 if($rank_exe<1); $grank = $#gcl if($grank>$#gcl); $grank_exe = 0 if($grank_exe<1); $lv = 130 if($lv>130); $hp = $max_hp if($hp>$max_hp); $mp = $max_mp if($mp>$max_mp); if($pr<1){ &settei;#設定読み込み &status;#ステータス表示 } $bmes="最新情報 ◎ $wr_mes\n" if $wr_mes; if($camp==1){ $bmes2="$cmp[$camp]最新偵察情報 
$tei_mes1\n" if $tei_mes1; }elsif($camp==2){ $bmes2="$cmp[$camp]最新偵察情報 
$tei_mes2\n" if $tei_mes2; }elsif($camp==3){ $bmes2="$cmp[$camp]最新偵察情報 
$tei_mes3\n" if $tei_mes3; }elsif($camp==4){ $bmes2="$cmp[$camp]最新偵察情報 
$tei_mes4\n" if $tei_mes4; }elsif($camp==5){ $bmes2="$cmp[$camp]最新偵察情報 
$tei_mes5\n" if $tei_mes5; }elsif($camp==6){ $bmes2="$cmp[$camp]最新偵察情報 
$tei_mes6\n" if $tei_mes6; } $data_reset = int(($cn1+$cn2+$cn3+$cn4+$cn5+$cn6) * $reset_point); ($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = gmtime(time + 90*24*60*60); $yearg += 1900; if ($secg < 10) { $secg = "0$secg"; } if ($ming < 10) { $ming = "0$ming"; } if ($hourg < 10) { $hourg = "0$hourg"; } if ($mdayg < 10) { $mdayg = "0$mdayg"; } $month = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[$mong]; $week = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')[$wdayg]; $dt_gmt = "$week, $mdayg\-$month\-$yearg $hourg:$ming:$secg GMT"; $cook="nm\:$nm\,id\:$id\,pw\:$pw"; print "Set-Cookie: TUMIBATU=$cook; expires=$dt_gmt\n"; } #クッキー所得 sub cookie_get { @pairs = split(/;/,$ENV{'HTTP_COOKIE'}); foreach $pair (@pairs) { local($name, $value) = split(/=/, $pair); $name =~ s/ //g; $DUMMY{$name} = $value; } @pairs = split(/,/,$DUMMY{'TUMIBATU'}); foreach $pair (@pairs) { local($name, $value) = split(/:/, $pair); $COOKIE{$name} = $value; } $c_id = $COOKIE{'id'}; $c_pw = $COOKIE{'pw'}; } #------------------------------------------------------------------------------- # ファイル OUT 関連 # 国データ&キャラデータ書き込み sub write_data{ &cdat_write; &dat_write; } # 国データ書き込み sub cdat_write{ # 友好度 $cfs_temp = ""; for ($self=1;$self<7;$self++){ for ($other=1;$other<7;$other++){ $cfs_temp .= "cfs$self$other;$cfs[$self.$other],"; }} $cdat = $cfs_temp; # 友好度 $cdat .= "cn1;$cn1,cg1;$cg1,cf1;$cf1,cs1;$cs1,ce1;$ce1,c1;$c1,c1a;$c1a,ck1;$ck1,ct1;$ct1,cn2;$cn2,cg2;$cg2,cf2;$cf2,cs2;$cs2,ce2;$ce2,c2;$c2,c2a;$c2a,ck2;$ck2,ct2;$ct2,cn3;$cn3,cg3;$cg3,cf3;$cf3,cs3;$cs3,ce3;$ce3,c3;$c3,c3a;$c3a,ck3;$ck3,ct3;$ct3,cn4;$cn4,cg4;$cg4,cf4;$cf4,cs4;$cs4,ce4;$ce4,c4;$c4,c4a;$c4a,ck4;$ck4,ct4;$ct4,cn5;$cn5,cg5;$cg5,cf5;$cf5,cs5;$cs5,ce5;$ce5,c5;$c5,c5a;$c5a,ck5;$ck5,ct5;$ct5,cn6;$cn6,cg6;$cg6,cf6;$cf6,cs6;$cs6,ce6;$ce6,c6;$c6,c6a;$c6a,ck6;$ck6,ct6;$ct6,set;$set,all_mem;$all_mem,goal_no;$goal_no,hasya;$hasya,hcamp;$hcamp,ad;$addr,ht;$host,date;$date,wr_mes;$wr_mes,wr_mes1;$wr_mes1,wr_mes2;$wr_mes2,wr_mes3;$wr_mes3,wr_mes4;$wr_mes4,wr_mes5;$wr_mes5,wr_mes6;$wr_mes6,tei_mes1;$tei_mes1,tei_mes2;$tei_mes2,tei_mes3;$tei_mes3,tei_mes4;$tei_mes4,tei_mes5;$tei_mes5,tei_mes6;$tei_mes6,tyanp_mes;$tyanp_mes6,sou_top;$sou_top,ikki_top;$ikki_top,gold_top;$gold_top,ua_top;$ua_top,ud_top;$ud_top,ag_top;$ag_top,lr_top;$lr_top,hp_top;$hp_top,mp_top;$mp_top,ua_t;$ua_t,ud_t;$ud_t,ag_t;$ag_t,lr_t;$lr_t,hp_t;$hp_t,mp_t;$mp_t,gold_t;$gold_t,sou_t;$sou_t,ikki_t;$ikki_t,sou_top1;$sou_top1,ikki_top1;$ikki_top1,gold_top1;$gold_top1,ua_top1;$ua_top1,ud_top1;$ud_top1,ag_top1;$ag_top1,lr_top1;$lr_top1,hp_top1;$hp_top1,mp_top1;$mp_top1,ua_t1;$ua_t1,ud_t1;$ud_t1,ag_t1;$ag_t1,lr_t1;$lr_t1,hp_t1;$hp_t1,mp_t1;$mp_t1,gold_t1;$gold_t1,sou_t1;$sou_t1,ikki_t1;$ikki_t1,sou_top2;$sou_top2,ikki_top2;$ikki_top2,gold_top2;$gold_top2,ua_top2;$ua_top2,ud_top2;$ud_top2,ag_top2;$ag_top2,lr_top2;$lr_top2,hp_top2;$hp_top2,mp_top2;$mp_top2,ua_t2;$ua_t2,ud_t2;$ud_t2,ag_t2;$ag_t2,lr_t2;$lr_t2,hp_t2;$hp_t2,mp_t2;$mp_t2,gold_t2;$gold_t2,sou_t2;$sou_t2,ikki_t2;$ikki_t2,sou_top3;$sou_top3,ikki_top3;$ikki_top3,gold_top3;$gold_top3,ua_top3;$ua_top3,ud_top3;$ud_top3,ag_top3;$ag_top3,lr_top3;$lr_top3,hp_top3;$hp_top3,mp_top3;$mp_top3,ua_t3;$ua_t3,ud_t3;$ud_t3,ag_t3;$ag_t3,lr_t3;$lr_t3,hp_t3;$hp_t3,mp_t3;$mp_t3,gold_t3;$gold_t3,sou_t3;$sou_t3,ikki_t3;$ikki_t3,sou_top4;$sou_top4,ikki_top4;$ikki_top4,gold_top4;$gold_top4,ua_top4;$ua_top4,ud_top4;$ud_top4,ag_top4;$ag_top4,lr_top4;$lr_top4,hp_top4;$hp_top4,mp_top4;$mp_top4,ua_t4;$ua_t4,ud_t4;$ud_t4,ag_t4;$ag_t4,lr_t4;$lr_t4,hp_t4;$hp_t4,mp_t4;$mp_t4,gold_t4;$gold_t4,sou_t4;$sou_t4,ikki_t4;$ikki_t4,sou_top5;$sou_top5,ikki_top5;$ikki_top5,gold_top5;$gold_top5,ua_top5;$ua_top5,ud_top5;$ud_top5,ag_top5;$ag_top5,lr_top5;$lr_top5,hp_top5;$hp_top5,mp_top5;$mp_top5,ua_t5;$ua_t5,ud_t5;$ud_t5,ag_t5;$ag_t5,lr_t5;$lr_t5,hp_t5;$hp_t5,mp_t5;$mp_t5,gold_t5;$gold_t5,sou_t5;$sou_t5,ikki_t5;$ikki_t5,sou_top6;$sou_top6,ikki_top6;$ikki_top6,gold_top6;$gold_top6,ua_top6;$ua_top6,ud_top6;$ud_top6,ag_top6;$ag_top6,lr_top6;$lr_top6,hp_top6;$hp_top6,mp_top6;$mp_top6,ua_t6;$ua_t6,ud_t6;$ud_t6,ag_t6;$ag_t6,lr_t6;$lr_t6,hp_t6;$hp_t6,mp_t6;$mp_t6,gold_t6;$gold_t6,sou_t6;$sou_t6,ikki_t6;$ikki_t6,cshu1;$cshu[1],cshu_rank1;$cshu_rank[1],cgen1;$cgen[1],cshu2;$cshu[2],cshu_rank2;$cshu_rank[2],cgen2;$cgen[2],cshu3;$cshu[3],cshu_rank3;$cshu_rank[3],cgen3;$cgen[3],cshu4;$cshu[4],cshu_rank4;$cshu_rank[4],cgen4;$cgen[4],cshu5;$cshu[5],cshu_rank5;$cshu_rank[5],cgen5;$cgen[5],cshu6;$cshu[6],cshu_rank6;$cshu_rank[6],cgen6;$cgen[6],hcshu1;$hcshu[1],hcshu_rank1;$hcshu_rank[1],hcgen1;$hcgen[1],hcshu2;$hcshu[2],hcshu_rank2;$hcshu_rank[2],hcgen2;$hcgen[2],hcshu3;$hcshu[3],hcshu_rank3;$hcshu_rank[3],hcgen3;$hcgen[3],hcshu4;$hcshu[4],hcshu_rank4;$hcshu_rank[4],hcgen4;$hcgen[4],hcshu5;$hcshu[5],hcshu_rank5;$hcshu_rank[5],hcgen5;$hcgen[5],hcshu6;$hcshu[6],hcshu_rank6;$hcshu_rank[6],hcgen6;$hcgen[6],horyo1;$horyo[1],horyo2;$horyo[2],horyo3;$horyo[3],horyo4;$horyo[4],horyo5;$horyo[5],horyo6;$horyo[6],aaa;$aaa,ccc;$ccc,eee;$eee,def_cnt;$def_cnt,nnn;$nnn,\n"; open (OUT,">$cdatfile") || &error("open error:$cdatfile",1); print OUT $cdat; close(OUT) or die "Can't close : $!"; } # 領土データ書き込み sub cmap_write{ $town_gd="";$town=""; foreach (0 .. 38){ $town_gd.="$town_gd_nm[$_]/"; $town.="$town_nm[$_]/"; } $cmap = "$town,$town_gd,\n"; open (OUT,">>$cmapfile") || &error("open error $cmapfile",1); print OUT $cmap; close(OUT) or die "Can't close : $!"; } # キャラデータ書き込み sub dat_write{ &error("open error no such a file!",1) if(!$nm || !$id); $dat[0] = "la;$time,nm;$nm,pw;$pw,id;$id,sei;$sei,type;$type,age_time;$age_time,act_cnt;$act_cnt,hp;$hp,max_hp;$max_hp,lv;$lv,mp;$mp,max_mp;$max_mp,rank;$rank,ua;$ua,ud;$ud,lr;$lr,ag;$ag,ck;$ck,tm;$tm,bt;$bt,bst;$bst,exe;$exe,rank_exe;$rank_exe,sol;$sol,nation;$nation,we;$we,camp;$camp,pr;$pr,tnm;$tnm,tid;$tid,thp;$thp,tlr;$tlr,tag;$tag,tsol;$tsol,tsg;$tsg,b_n;$b_n,b_v;$b_v,thp_max;$thp_max,tmy_ck;$tmy_ck,tlv;$tlv,db_a;$db_a,tdb_a;$tdb_a,tdg_a;$tdg_a,tdf_a;$tdf_a,tde_a;$tde_a,tua;$tua,tud;$tud,tmp;$tmp,tcp;$tcp,gold;$gold,roku;$roku,dg_a;$dg_a,dg_cnt;$dg_cnt,df_a;$df_a,df_cnt;$df_cnt,de_a;$de_a,de_cnt;$de_cnt,di_a;$di_a,di_cnt;$di_cnt,sogo;$sogo,so;$so,mes;$mes,info_mes;$info_mes,no;$no,ti;$ti,sy;$sy,ty;$ty,sen;$sen,gou;$gou,hou_b;$hou_b,tik;$tik,we_m;$we_m,syu;$syu,roto;$roto,sake;$sake,syoku;$syoku,syoku_p;$syoku_p,takarakuji;$takarakuji,atari_kuji;$atari_kuji,du_a;$du_a,tdu_a;$tdu_a,s_g;$s_g,ki;$ki,sou;$sou,ikki;$ikki,ygold;$ygold,sou_cnt;$sou_cnt,tensei;$tensei,ttensei;$ttensei,syou_a;$syou_a,tsyou_a;$tsyou_a,sogo_1;$sogo_1,sogo_2;$sogo_2,sogo_7;$sogo_7,sogo_8;$sogo_8,sogo_9;$sogo_9,sogo_10;$sogo_10,sogo_11;$sogo_11,sogo_12;$sogo_12,sogo_13;$sogo_13,sogo_14;$sogo_14,sogo_15;$sogo_15,sogo_16;$sogo_16,sogo_17;$sogo_17,sogo_18;$sogo_18,sogo_19;$sogo_19,sogo_20;$sogo_20,sogo_21;$sogo_21,sogo_22;$sogo_22,sogo_23;$sogo_23,sogo_24;$sogo_24,sogo_25;$sogo_25,arm;$arm,arm_rank;$arm_rank,tarm;$tarm,tarm_rank;$tarm_rank,gazou;$gazou,gazou_rank;$gazou_rank,nogyo;$nogyo,syogyo;$syogyo,tyohe;$tyohe,tia;$tia,ab;$ab,bc;$bc,cd;$cd,de;$de,skill1;$skill1,skill2;$skill2,tan;$tan,mahi;$mahi,atan;$atan,amahi;$amahi,tskill1;$tskill1,tskill2;$tskill2,sogo_26;$sogo_26,sogo_27;$sogo_27,sogo_28;$sogo_28,sogo_29;$sogo_29,tougi;$tougi,ltime;$ltime,etc;$etc,roku2;$roku2,st_cnt2;$st_cnt2,dp_a;$dp_a,tdp_a;$tdp_a,rebe;$rebe,trebe;$trebe,war_cnt;$war_cnt,war_cr;$war_cr,sikan;$sikan,w_a;$w_a,w_f;$w_f,w_i;$w_i,w_s;$w_s,w_y;$w_y,w_g;$w_g,grank;$grank,grank_exe;$grank_exe,soko;$soko,mexe;$mexe,ushu;$ushu,hushu;$hushu,iseki_p;$iseki_p,sikan_y;$sikan_y,sina;$sina,paa;$paa,bonus_cn;$bonus_cn,type_from;$type_from,\n"; $dat[1] = "$date<>$addr<>$host<>$agent<>\n"; open (OUT,">$usrdata$id\.cgi") || &error("open error:$usrdata$id\.cgi",1); print OUT @dat; close(OUT) or die "Can't close : $!"; } # 過去の栄光書き込み&バックアップ処理 sub hist_write{ $cdat ="cn1;$cn1,cg1;$cg1,cf1;$cf1,cs1;$cs1,ce1;$ce1,c1;$c1,c1a;$c1a,ck1;$ck1,ct1;$ct1,cn2;$cn2,cg2;$cg2,cf2;$cf2,cs2;$cs2,ce2;$ce2,c2;$c2,c2a;$c2a,ck2;$ck2,ct2;$ct2,cn3;$cn3,cg3;$cg3,cf3;$cf3,cs3;$cs3,ce3;$ce3,c3;$c3,c3a;$c3a,ck3;$ck3,ct3;$ct3,cn4;$cn4,cg4;$cg4,cf4;$cf4,cs4;$cs4,ce4;$ce4,c4;$c4,c4a;$c4a,ck4;$ck4,ct4;$ct4,cn5;$cn5,cg5;$cg5,cf5;$cf5,cs5;$cs5,ce5;$ce5,c5;$c5,c5a;$c5a,ck5;$ck5,ct5;$ct5,cn6;$cn6,cg6;$cg6,cf6;$cf6,cs6;$cs6,ce6;$ce6,c6;$c6,c6a;$c6a,ck6;$ck6,ct6;$ct6,set;$set,all_mem;$all_mem,goal_no;$goal_no,hasya;$hasya,hcamp;$hcamp,ad;$addr,ht;$host,date;$date,wr_mes;$wr_mes,\n"; open (DB,">>$histfile") || &error("open error:$histfile",1); print DB $cdat; close(DB) or die "Can't close : $!"; } sub hist_write2{ $cdat ="cn1;$cn1,cg1;$cg1,cf1;$cf1,cs1;$cs1,ce1;$ce1,c1;$c1,c1a;$c1a,ck1;$ck1,ct1;$ct1,cn2;$cn2,cg2;$cg2,cf2;$cf2,cs2;$cs2,ce2;$ce2,c2;$c2,c2a;$c2a,ck2;$ck2,ct2;$ct2,cn3;$cn3,cg3;$cg3,cf3;$cf3,cs3;$cs3,ce3;$ce3,c3;$c3,c3a;$c3a,ck3;$ck3,ct3;$ct3,cn4;$cn4,cg4;$cg4,cf4;$cf4,cs4;$cs4,ce4;$ce4,c4;$c4,c4a;$c4a,ck4;$ck4,ct4;$ct4,cn5;$cn5,cg5;$cg5,cf5;$cf5,cs5;$cs5,ce5;$ce5,c5;$c5,c5a;$c5a,ck5;$ck5,ct5;$ct5,cn6;$cn6,cg6;$cg6,cf6;$cf6,cs6;$cs6,ce6;$ce6,c6;$c6,c6a;$c6a,ck6;$ck6,ct6;$ct6,set;$set,all_mem;$all_mem,goal_no;$goal_no,hasya;$hasya,hcamp;$hcamp,ad;$addr,ht;$host,date;$date,tyanp_mes;$tyanp_mes,\n"; open (DB,">>$histfile2") || &error("open error:$histfile2",1); print DB $cdat; close(DB) or die "Can't close : $!"; } #------------------------------------------------------------------------------- # ファイルロック関連(rename式) # $lock = &lock if($lock_check); # &unlock($lock) if($lock_check); # -----ロック----- sub lock { my %lock = (dir => "$lockdir", basename => "$lockfile", timeout => 30, trytime => 10, @_); $lock{path} = $lock{dir} . $lock{basename}; for (my $i = 0; $i < $lock{trytime}; $i++, sleep 1) { return \%lock if (rename($lock{path}, $lock{current} = $lock{path} . time)); } opendir(LOCKDIR, $lock{dir}); my @filelist = readdir(LOCKDIR); closedir(LOCKDIR); foreach (@filelist) { if (/^$lock{basename}(\d+)/) { return \%lock if (time - $1 > $lock{timeout} and rename($lock{dir} . $_, $lock{current} = $lock{path} . time)); last; } } undef; &error("ファイルがロックされています"); } # -----ロック解除----- sub unlock { rename($_[0]->{current}, $_[0]->{path}); } #------------------------------------------------------------------------------- # フォームデータ関連 # フォームデコード処理 sub decode { local($buffer, @pairs, $name, $value); $post_flag=0; if($ENV{'REQUEST_METHOD'} eq "POST"){ $post_flag=1; &error("投稿量が大きすぎます") if($ENV{'CONTENT_LENGTH'}>102400); read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }else{ $buffer = $ENV{'QUERY_STRING'}; &error("投稿量が大きすぎます") if(length($buffer)>80000) } @pairs = split(/&/, $buffer); foreach (@pairs) { ($name,$value) = split(/=/); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 記号置換え $value =~ s/&/&/g; $value =~ s/\;/;\;/g; $value =~ s/,/,\;/g; $value =~ s//>/g; $value =~ s/"/"/g; $value =~ s/\///\;/g; $value =~ s/\./.\;/g; $value =~ s/cgi/c\;g\;i\;/g; # 改行等処理 $value =~ s/\r\n//g; $value =~ s/\r//g; $value =~ s/\n//g; # 文字コードをシフトJIS変換 &jcode'convert(*value, "sjis", "", "z"); $in{$name} = $value; # 一括削除用 if ($name eq "usr_del") { push(@USR_DEL,$value); } } $pw = $in{'pw'}; $cmd = $in{'cmd'}; $com = $in{'com'}; $id = $in{'id'}; $mode = $in{'mode'}; } #------------------------------------------------------------------------------- # アクセス制御関連 # アクセスチェック(アクセス拒否) sub axs_check { &get_host; local($flag)=0; foreach (@deny) { if (!$_) { next; } $_ =~ s/\*/\.\*/g; if ($host =~ /$_/i || $addr =~ /$_/i) { $flag=1; last; } } if ($flag) { &error("アクセスを許可されていません"); } } # ホスト情報取得 sub get_host { $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; $agent= $ENV{'HTTP_USER_AGENT'}; if ($get_remotehost) { if ($host eq "" || $host eq "$addr") { $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2); } } if ($host eq "") { $host = $addr; } } # 時間取得 sub get_time { $time = time; ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime($time); $min = "0$min" if($min<10); $sec = "0$sec" if($sec<10); $month++; @week=('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); $date = "$month/$mday $hour:$min:$sec"; srand($time); } # プレイ規制 sub safetime { foreach (0 .. $#safetime){ &error("プレイ規制時間中です。暫くお待ち下さい。") if $hour eq $safetime[$_]; } } #------------------------------------------------------------------------------- # 表示関連 # 圧縮転送 sub content_type { if($gzip){ $|=1; if($ENV{'HTTP_ACCEPT_ENCODING'}=~/gzip/ ){ print "Content-type: text/html; charset=shift_jis\n"; print "Content-encoding: gzip\n\n"; open(STDOUT,"| $gzip -1 -c"); }else{ print "Content-type: text/html; charset=shift_jis\n\n"; } print "\n"; } else { print "Content-type: text/html; charset=shift_jis\n\n"; print "\n"; } } #著作権表示(削除・変更不可) sub copyright{ if($mv_mode eq 'mv'){ print qq|
罪と罰++ 二律背反 $ver
BLANK BOARD[ねっと遊園地♪]| if(!$tm && !$log); print qq||; }else{ print <<"EOM";
罪と罰++ 二律背反 $ver
Vivid Studio.
BLANK BOARD[ねっと遊園地♪]
BLANK BOARD[ねっと遊園地♪]
EOM } } # エラー表示 sub error{ print "Content-type: text/html\n\n"; print "CGI Error\n"; print "

CGI Error

\n"; print "

This program encountered an internal error.

"; print "

Error: $_[0]

\n"; print ""; if ($_[1] && $lock_check) { &unlock($lock); } exit; } 1;#削除不可