commit dc9058e0da1866e26c1809493b7accfe11915893 Author: sanjeok77 Date: Mon Jun 22 21:09:26 2026 +0900 Initial commit of original files diff --git a/backup/backup_flag1 b/backup/backup_flag1 new file mode 100644 index 0000000..9c9236e --- /dev/null +++ b/backup/backup_flag1 @@ -0,0 +1,2 @@ +# このファイルは削除及びリネームしないでください。 +# 毎日24時に1回バックアップを取り、一週間経つと上書きされます。 \ No newline at end of file diff --git a/backup/index.html b/backup/index.html new file mode 100644 index 0000000..d0dc3b5 --- /dev/null +++ b/backup/index.html @@ -0,0 +1,8 @@ + + + +のぞいちゃイヤ〜。 + + + + diff --git a/campbbs.cgi b/campbbs.cgi new file mode 100644 index 0000000..c40bb6c --- /dev/null +++ b/campbbs.cgi @@ -0,0 +1,309 @@ +#!/usr/local/bin/perl +# サーバーの環境に合わせて変更して下さい。 +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # +# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # +# BLANK BOARD [ http://pom.to/ ] # +#-----------------------------------------------------------# +$ver = '作戦会議室 v1.1'; # バージョン情報(変更不可) +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#=============================================================================== +# 設定項目 + +#------------------------------------------------------------------------------- +# 各種ファイル + +require './inc/ore_sub-bbs.cgi'; # 各種掲示板共通な設定項目読み込み + +$script = "./campbbs.cgi"; # このスクリプトのパス + +$logfile = "./logdata/camp_log_"; # ログファイルの一部($logfile$camp.\cgiとなる) + +$memfile = "./logdata/camp_mem_"; # 参加者ファイルの一部($memfile$camp.\cgiとなる) + +$lockkey = 0; # ファイルロック(0=no 1=yes) + +$lockfile = "./camp.lock"; # ロックファイル名 + +#------------------------------------------------------------------------------- +# 環境設定 + +$title = "作戦会議室"; # タイトル名 + +$max = 100; # 最大保有記事数 + +$reload_mn = 5; # 最短リロード間隔(この秒数以内に発言するとエラー[負荷対策]) + +$reload_limit= 120; # この秒数発言がないと退室扱いにする + +$com_limit = 240; # コメントの最大文字数(半角換算) + +$tagkey = 0; # タグの許可 (0=no 1=yes) + +$nolink = 1; # URL宣伝排除 (0=no 1=yes) + +# 機種別設定 +if($mv_mode eq 'mv'){ + + # モバイル用設定 + + $log_last= 15; # 表示行数(モバイル) + + # BODYタグ装飾 + $body = 'bgcolor="black" text="white" link="pink" vlink="pink" alink="pink"'; + + $hr_color= 'white'; # 罫線の色(モバイル) +}else{ + + # PC用設定 + + @reload_time= (90,120,180); # リロード時間 + + $log_last= 50; # 表示行数(PC) + + # BODYタグ装飾 + $body = 'bgcolor="#111122" text="#ddddee" link="#ffddee" vlink="#ffddee" alink="#ffddee"'; +} + +#=============================================================================== +# 以下処理 基本的にこれ以下はいじらないように。 + +#------------------------------------------------------------------------------- +# メイン処理 +&axs_check; # アクセス制御 +&decode; # フォームデコード +&mandata_open; # 参加者ログ読み込み +&get_time; # 日時取得 +&error("無所属の方はご利用になれません。
交流広場をご利用ください。") if(!$DAT{'camp'}); +&member; +if($mode eq "regist" && $com){ ®ist; } # 書き込み処理 +&html; # ページ表示 + +#------------------------------------------------------------------------------- +# 記事表示部 +sub html { + # 表示開始 + &header; + + if($mv_mode eq 'mv'){ + print <<"EOM"; +$camp_info[$DAT{'camp'}][0]専用
$title +
+ + + + + +
+
+ + + + +
+EOM + } + else{ + + print <<"EOM"; + + + + + + + + + + + + + + + + + + + + + +
+$title
+〜 $camp_info[$DAT{'camp'}][0]の作戦会議室 〜 +
+ + + + + + + +
+更新: +
+ + + + +
+EOM + } + + # 参加者表示:$member + ($mv_mode eq 'mv') ? + print qq|参加者($num)
\n|: + print qq|

参加者($num):$member

\n|; + + # ログを展開 + open(IN,"$logfile$DAT{'camp'}\.cgi") || &error("Open Error : $logfile$DAT{'camp'}\.cgi"); + local $log_last_flag=0; + while () { + $log_last_flag++; + local($date,$nm,$camp,$com,$sogo,$addr,$host) = split(/<>/); + $nm = qq|$nm [$sogo_p[$sogo]]| if($sogo); + ($mv_mode eq 'mv') ? $com =~ s/ハァト/\&\#63726<\/font>/g : $com =~ s/ハァト/ゥ<\/span>/g ; + + ($mv_mode eq 'mv') ? + print qq|$nm:$com [$camp_info[$camp][0] $date]
\n|: + print qq|$nm : $com [ $camp_info[$camp][0] $date ]
\n|; + last if $log_last_flag > $log_last; + } + close(IN); + + # 著作権表示(削除禁止) + print "
\n"; + ©right; + exit; +} + +#------------------------------------------------------------------------------- +# ログ書き込み処理 +sub regist { + + # ファイルロック + if ($lockkey) { &lock; } + + # ログを読み込み + open(IN,"$logfile$DAT{'camp'}\.cgi") || &error("Open Error : $logfile$DAT{'camp'}\.cgi"); + @lines = ; + close(IN); + + # 最大記事数処理 + while ($max <= @lines) { pop(@lines); } + + # ログ更新処理 + unshift (@lines,"$date<>$DAT{'nm'}<>$DAT{'camp'}<>$com<>$DAT{'sogo'}<>$addr<>$host<>$agent<>\n"); + open(OUT,">$logfile$DAT{'camp'}\.cgi") || &error("Write Error : $logfile$DAT{'camp'}\.cgi"); + print OUT @lines; + close(OUT); + + # ロック解除 + if (-e $lockfile) { unlink($lockfile); } +} + +#------------------------------------------------------------------------------- +# 在室者処理 +sub member { + open(IN,"$memfile$DAT{'camp'}\.cgi") || &error("Open Error : $memfile$DAT{'camp'}\.cgi"); + @data = ; + close(IN); + + $member=""; + @new=(); + $flag=0; + $flag2=0; + foreach (@data) { + ($time2,$name2,$host2) = split(/<>/); + + # 発言のない者は削除 + if ($time-$reload_limit > $time2) { next; } + elsif ($host2 eq "$addr") { + + # 発言/更新間隔 +# &error("$reload_mn秒以上間隔を空けて発言してください。") if($reload_mn+$time2>$time); + if($reload_mn+$time2>$time){ + print "Status: 204\n\n"; + exit; + } + + # 退室者は削除 + if ($_[0] eq 'bye') { next; } + + # ホスト名が同一であれば時間と名前を更新 + $_ = "$time<>$DAT{'nm'}<>$addr<>\n"; + $name2 = $DAT{'nm'}; + $flag=1; + } + # 更新用配列 @new に追加 + if ($name2 ne "$host2") { + push(@new,$_); + + # 参加者表示用文字列を作成 + if(!$flag2){$member .="$name2◇";$flag2=1;} + else{$member .="$name2◆";$flag2=0;} + } + } + # 新規参加者を追加 + if (!$flag && $mv_mode eq 'pc') { + if ($DAT{'nm'} ne "$host") { + push(@new,"$time<>$DAT{'nm'}<>$addr<>\n"); + $member .= (!$flag2) ? "$DAT{'nm'} [IN]◇" : "$DAT{'nm'} [IN]◆"; + } + } + # 参加者数を認識 + $num = @new; + + # ファイル更新 + open(OUT,">$memfile$DAT{'camp'}\.cgi") || &error("Write Error : $memfile$DAT{'camp'}\.cgi"); + eval "flock(OUT,2);"; + truncate(OUT,0); + seek(OUT,0,0); + print OUT @new; + close(OUT); +} + +#------------------------------------------------------------------------------- +# HTMLのヘッダー +sub header { + print "Content-type: text/html\n\n"; + print <<"EOM"; + + + +$title +EOM + if($mv_mode eq 'pc' && $DAT{'camp'}){ + print <<"EOM"; + +$css + +EOM + } + (!$_[0] && $mv_mode eq 'pc') ? print qq|\n| : print "\n" ; +} + + + + + diff --git a/hist.cgi b/hist.cgi new file mode 100644 index 0000000..f4c670c --- /dev/null +++ b/hist.cgi @@ -0,0 +1,217 @@ +#!/usr/local/bin/perl +# サーバーの環境に合わせて変更して下さい。 +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # +# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # +# BLANK BOARD [ http://pom.to/ ] # +#-----------------------------------------------------------# +$ver = '過去の栄光 v1.0'; # バージョン情報(変更不可) +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#=============================================================================== +# 設定項目 + +#------------------------------------------------------------------------------- +# 各種ファイル + +require './inc/ore_sub-bbs.cgi'; # 各種掲示板共通な設定項目読み込み + +$script = "./hist.cgi"; # このスクリプトのパス + +$logfile = "./logdata/hist_log.cgi"; # ログファイルのパス + +#------------------------------------------------------------------------------- +# 環境設定 + +$title = "過去の栄光"; # タイトル名 + +$maxlog = 60; # 最大記録行数 + +# 機種別設定 +if($mv_mode eq 'mv'){ + + # モバイル用設定 + + $log_last= 15; # 表示行数(モバイル) + + # BODYタグ装飾 + $body = 'bgcolor="black" text="white" link="pink" vlink="pink" alink="pink"'; + + $hr_color= 'white'; # 罫線の色(モバイル) +}else{ + + # PC用設定 + + $log_last= 50; # 表示行数(PC) + + # BODYタグ装飾 + $body = 'bgcolor="#111122" text="#ddddee" link="#ffddee" vlink="#ffddee" alink="#ffddee" style="font-size:14px"'; +} + +#=============================================================================== +# 以下処理 基本的にこれ以下はいじらないように。 + +#------------------------------------------------------------------------------- +# メイン処理 +&axs_check; +&decode_hist; +$ore_game_ =($mode eq 'guest') ? $index : $ore_game ; +&html; + +#------------------------------------------------------------------------------- +# 記事表示部 +sub html { + # 表示開始 + &header; + + if($mv_mode eq 'mv'){ + print <<"EOM"; +$title +
+ + + + +
+EOM + } + else{ + + print <<"EOM"; + + + + + + + + + + +
+$title
+〜 悠久の大地の歩み 〜 +
+ + + + +
+EOM + } + + ($mv_mode eq 'mv') ? + print qq|
\n|: + print qq|
\n|; + + # ログ読み込み + open(IN,"$logfile") || &error("Open Error : $logfile"); + my @lines = ; + close(IN); + + # 行数調整 + if($#lines > $maxlog){ + foreach(0 .. $#lines-$maxlog){ shift(@lines); } + } + open (OUT,">$logfile") || &error("open error:$logfile"); + print OUT @lines; + close(OUT) or die "Can't close : $!"; + + # 記事展開 + @lines = reverse(@lines); + foreach(0 .. $log_last){ + + last if(!$lines[$_]); + my @y1 = split(/,/,$lines[$_]); + $y1[43] =~ s/wr_mes;//g; + + if($mv_mode eq 'pc'){ + foreach(1 .. $#camp_info){ + $y1[43] =~ s/$camp_info[$_][0]/$camp_info[$_][0]<\/span>/g; + } + } + print "
  • $y1[43]
    \n"; + } + + # 著作権表示(削除禁止) + print "
    \n"; + ©right; + exit; +} + +#------------------------------------------------------------------------------- +# デコード処理 +sub decode_hist { + local($buffer, @pairs, $name, $value); + $post_flag=0; + if($ENV{'REQUEST_METHOD'} eq "POST"){ + $post_flag=1; + &error("投稿量が大きすぎます") if($ENV{'CONTENT_LENGTH'}>8192); + read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); + }else{ + $buffer = $ENV{'QUERY_STRING'}; + &error("投稿量が大きすぎます") if(length($buffer)>7500) + } + @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; + + # 荒らし処理 1 + $value =~ s/(
    ){4,}//g; + $value =~ s/( | ){6,}//g; + + $value =~ s/\r//g; + $value =~ s/\n//g; + + # 記号置換え 1 + $value =~ s/\s/ /g; + $value =~ s//>/g; + $value =~ s/\"/"/g; + # 記号置換え 2 + $value =~ s/\?/?\;/g; + $value =~ s/,/,\;/g; + $value =~ s/'/'\;/g; + $value =~ s/`/`\;/g; + $value =~ s/\;/;\;/g; + $value =~ s/\\/\\;/g; + $value =~ s/\|/|\;/g; + $value =~ s/\///\;/g; + $value =~ s/\./.\;/g; + + # 文字コードをシフトJIS変換 + &jcode'convert(*value, "sjis", "", "z"); + + $in{$name} = $value; + } + + $pw = $in{'pw'}; if(length($in{'pw'})>8) { &error("文字数エラーです3"); } + $id = $in{'id'}; if(length($in{'id'})>24) { &error("文字数エラーです4"); } + + if ($base_url) { + $ref_url = $ENV{'HTTP_REFERER'}; + $ref_url =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; + if ($ref_url !~ /$base_url/i) { &error("不正なアクセスです"); } + } +} + +#------------------------------------------------------------------------------- +# HTMLのヘッダー +sub header { + print "Content-type: text/html\n\n"; + print <<"EOM"; + + + +$title +EOM + print "$css" if($mv_mode eq 'pc'); + print "\n\n"; +} + diff --git a/html/Help.html b/html/Help.html new file mode 100644 index 0000000..86763f1 --- /dev/null +++ b/html/Help.html @@ -0,0 +1,302 @@ + + +罪と罰++ 取り扱い説明書 + + + + + +罪と罰++ 取り扱い説明書 +
     
    +
     
    +- ストーリー - +目的 - +ステータス説明 - +コマンド説明 -
    +- メニュー説明 - +特殊技・階級技 - +アドバイス(参考) - +
     
    +- タイトルへ戻る - +
     
    +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            
          ヤマト神国 
      ソーディナ
    帝国
         
        アルメリア
    王国
       
       永遠の証
    跡地
        
      フラリン
    教国
         
        イギス
    連合国
       
            

    エルタニア ワールドマップ
    +
     
    +
    +■ ストーリー +
     
    +幾千年も昔、この地は魑魅魍魎や負の業に塗れた混沌によって支配されていた。
    +この地の神々は辟易し、安息の地を創造するべくその地の中心に位置する大陸を隆起させ下界と隔てた。
    +その大地はエルタニアと名づけられた。
    +神々は自らの力と引き換えにエルタニアの中心に聖木「永遠の証」を育んだ。
    +永遠の証は大地に根付き、その根は負の業を浄化し秩序を生み出すという。
    +
     
    +エルタニアにひしめき合う国家は、永遠の証の加護により、長らく平和な時を刻んでいた。
    +
     
    +時はエルタニア暦591年
    +長らく存続していた秩序が終わりを迎える。
    +永い時を経て永遠の証に綻びが生じていたのである。
    +
     
    +そして綻びが風穴へと変わるとき、
    +エルタニアは負の業に塗れた混沌の闇へと包まれた。
    +
     
    +大陸北方を支配する大国、ソーディナ王国で、突如大規模な内乱が発生。
    +王家は根絶やされ、新たに宰相であったギザロフが王位につき、
    +ソーディナ王国もソーディナ帝国とその名を変えてしまったのだ。
    +更に皇帝となったギザロフが最初に行なった命令、
    +それは、大陸の全国家に対し一切の降伏や譲歩を
    +認めない冷徹な宣戦布告であった。
    +皇帝ギザロフ率いるソーディナ帝国軍は他を寄せ付けない圧倒的な強さで他国を次々と支配していった。
    +
     
    +そんな中、大陸の西に位置し武勇で名を馳せるアルメリア王国と、
    +大陸の国教であるマーナ教の聖地、フラリン教国も己の思惑とは別に戦乱に巻き込まれる事となった。
    +唯一、大小の国からなる大陸南方の国、イギス連合共和国が徹底抗戦の構えを見せていたが、
    +政治的まとまりを欠く連合国は鉄の結束力を持つソーディナ帝国軍の前に徐々に追い込まれていった。
    +
     
    +聖木「永遠の証」に生じた風穴は拡大の一途を辿り、
    +エルタニア暦603年、永遠の証はついに消滅。そのことにより下界と隔てていた結界が崩壊した。
    +下界においてエルタニア大陸の北に位置する孤島ヤマト。
    +その地を支配していたヤマト神国も、結界崩壊によりエルタニアの覇権を狙う。
    +
     
    +ここに戦乱の時代が幕を開けたのである… +
     
    +
     
    +
    +■ 目的 +
     
    +特にありません。
    プレイヤー次第です。 +本ゲームは、ひたすら修行して最強キャラになるのも良し、
    +戦争を起こしてエルタニアの地を統一するのも良し、
    +下克上の世で策略を練っても良し、
    +エルタニアの地に蔓延る魑魅魍魎を討伐して英雄になるのも良し、など
    +とても自由度の高いゲームに仕上がっています。 +
     
    +
     
    +
    +■ ステータス説明 +
     
    +NAME(名前) - プレイヤーの名前
    +
     
    +LEVEL(レベル) - プレイヤーのレベル レベル×レベル×10で1レベルUP
    +
     
    +体力(HP) - キャラクタの生命力 これがゼロになると戦闘で敗北します
    +
     
    +精神(MP) - キャラクタの精神力 これを消費する事で様々な必殺技が使用できます
    +
     
    +*注 - このゲームではHP・MPを回復するコマンドは基本的にありません。
    +    体力・精神共に毎分1ポイントづつ自然に回復します。
    +    つまり体力を10回復したいなら10分待てば良いという事です。ちなみにリロードしまくってると全然回復しません(笑

    +
     
    +UA - キャラクタの攻撃力 これが高ければ高い程、相手に与えるダメージが大きくなります
    +
     
    +UD - キャラクタの防御力 これが高ければ高い程、相手から受けるダメージが少なくなります
    +
     
    +LR - キャラクタの指揮力 これが高ければ高い程、政治効率・部隊能力が上がります
    +
     
    +GOLD(お金) - キャラクタの所持金 能力を上げたり兵を雇ったりする為に必要です。
    +                  国に属していると階級に応じて六時間毎に給与が出ます。
    +                  これは仕官してから、もしくは最後に給与を貰ってから六時間後という事になります。
    +                  そして、仮に12時間ほっといたから、給与が2回分でるという事はありません。
    +                  後は修業で勝利した場合や戦争で勝利すると得られます

    +
     
    +経験値 - キャラクタの経験値 一定値まで上げる事によってレベルが上昇します
    +
     
    +称号 - 現在キャラクタが取得している称号です。
    +
     
    +武具 - 現在キャラクタが装備している武具です。装備すると戦闘中の通常攻撃が強化します。武具は1つしか持つことが出来ません。
    +
     
    +道具 - 現在キャラクタが所持している道具です。戦闘中に使用することができます。道具は1つしか持つことが出来ません。
    +
     
    +所属 - キャラクタの所属 現在のキャラクタの所属です。国に属していると国の名前が、放浪していると無所属と表示されます
    +
     
    +兵数 - キャラクタの兵 現在、キャラクタが指揮している部隊の最大兵数です。 階級によって指揮できる兵数は違います
    +
     
    +RANK(階級) - キャラクタの階級 キャラクタの現在の階級です。国の仕事に従事したり戦争で勝利する事で上昇します
    +
     
    +総国力 - 現在の各国の総合的な国力です。この数値で給与が増減します。また各国のどれかが1万を超えると一応ゲーム終了です。
    +        ゲームクリアになると国データが総て初期状態に戻ります。キャラクタデータに変化はありません。
    +
     
    +国家予算 - 現在の各国の国家予算です。これがないと戦争が起こせません。商業をおこなう事で増えます。
    +
     
    +兵糧 - 現在の各国の兵糧です。これがないと戦争が起こせません。農業をおこなう事で増えます。
    +
     
    +総兵士数 - 現在の各国の兵士数です。これがないと戦争を起こせません。
    +        また敵に攻め込まれた場合にないと、戦時徴兵がおこなわれる事になり、
    +        総兵士数は防衛に出た部隊の最大数になりますが、国力が著しく低下します。注意が必要です。
    +
     
    +    注 - 一応言っておきますが国データはプレイヤー全員の共有物です。
    +
     
    +定員 - 各国の参加定員です。これを越すと一時的に入国制限がかかります。
    +
     
    +
    +■ コマンド説明 +
     
    +修行 - 登録キャラクタとの対戦。所属による制限なし。
    +       リストから対戦相手を選び戦闘を行う。勝利するとお金と経験値を獲得できる。
    +       ただし、自キャラと敵キャラのレベル差で入手経験値とお金の額が変化するので注意
    +
    +      戦闘の仕方 -
    +
    +        修業時の戦闘はプレイヤーキャラクタ先攻で交互に攻撃を繰り返して行われます。
    +        コマンドは最初は『攻撃』コマンドしかありませんが、レベルが上がっていくとコマンドが増えます。
    +        それを特殊コマンドといい、つまりRPGでいう所の魔法です。
    +        精神を消費しますが、特殊コマンドは強力な攻撃なので短期に決着をつけたい場合などに使うと良いでしょう。
    +        ちなみに特殊攻撃はレベルが5の倍数づつ覚えます。LV5、LV10、LV15…
    +        階級が上級騎士以上の「階級技」という、技を使用できるようになります。
    +        階級技はレベルに関係なく使用することができます。ちなみに4種類の階級技が存在します。

    +         ○ - 特殊技・階級技
    + +
     
    +内政 - 国に所属している場合に実行可能なコマンド。
    +
    +     農業 - 農作を行い兵糧を蓄える。
    +     商業 - 商業を行い国家予算を増やす
    +     軍備 - 戦争に備え軍備を強化する
    +     軍備コマンド - 軍備を行います。
    +          兵を雇う - 兵を雇います。この時使われるのはキャラクタのお金です。
    +          兵を訓練する - キャラクタの部隊の兵を訓練します。最大は100。
    +    
    +     内政を行なう事によってキャラクタの評価が高まり一定になる毎に階級が上がる。
    +     階級が上がれば給与が増える。キャラクタが率いる部隊数が増える。
    +     ちなみに無所属に階級はありません。無所属では給与は出ません。無所属では部隊自体持てません。
    +     階級が上級騎士以上の場合、内政を行うと功労金がもらえます。
    +     功労金は階級が高いほど高額になります。

    + +
    + 兵を訓練する -
    +
    +     キャラクタの率いる部隊を訓練します。訓練する事で戦争時の部隊能力が上昇します。
    +
     
    +戦争 - 国に所属している場合に実行可能なコマンド。
    +     キャラクタの部隊総数に対して国家予算が1/10 兵糧が1/1以上あれば他国に攻め込めます。
    +     敵国に攻め込み勝利する事で敵国の国力を奪えます。国力=領土と考えて下さい。
    +
    +     戦争が始まると敵国から適当に選ばれたプレイヤーキャラクタ、またはNPCが防衛部隊として出現します。
    +
    +     - 戦争の進め方 -
    +
    +     戦争ではジャンケンの要領で戦闘を行います。
    +
    +     攻撃陣形→防御陣形→突撃陣形→攻撃陣形…
    +
    +     という具合に、敵が防御陣形時に攻撃陣形を取れば、相手に多大な損害を与える事ができ、
    +     反対に敵が攻撃陣形時に防御陣形を取ってしまうと、自部隊に甚大な被害がでてしまうのです。
    +
    +    - 一騎討ち -
    +
    +     状況によって敵から一騎討ちを申し込まれる場合があります。
    +     断るのも受けるのも自由ですが断ると評価がすこし下がり受ければすこし上がります。
    +     一騎討ちの流れは修業モードとまったく変わりません。相手のHPを0にすれば勝ちです。
    +     一騎討ちに勝利すると普段より多めに評価値が上昇し、負けると多めに下がります。気をつけて下さい。
    +
    +    戦争では勝っても負けても経験値とお金が手に入りますが、撤退した場合は無報酬です。
    +    ただ撤退すれば兵力はその時点の数値で国の総兵士数に戻りますから、勝てない相手と当たってしまったら撤退した方が利口です。
    +    無闇に戦って兵力がゼロになるまで戦ってしまうと、確かに僅かな経験値とお金が手に入りますが、
    +    総兵士数は出撃したキャラクタ部隊の兵士数だけドーンと減ってしまいます。
    +    兵士はプレイヤー全員の共有物という事を良く考えて戦闘に望んでください。
    +
     
    +能力 - キャラクタの能力上昇コマンド。所属による制限なし。
    +     お金を1万G支払う事で各能力(HP、MP、UA、UD、LR)を上昇させる事が出来ます。
    +     各ステータスの上限は体力・精神は9999。他は999です。
    +
     
    +仕官 - キャラクタを国に仕官させたり、野に下ったりする為のコマンドです。
    +     このゲームではスタート直後は全員無所属です。
    +     ですから自分の好きな国にこのコマンドで仕官して下さい。
    +    一応言っておきますが、このゲームで無所属していても良い事はひとつもありません。
    +     また他国に亡命した場合は階級が1〜5下がりますので注意して下さい。
    +    仕官はレベル2からです。
    +    各国にはそれぞれ定員があります。これを超えると一時的に入国不可になります。
    +    他国や無所属に亡命した場合、元国に移籍料を払います。移籍料のうち微量を元国の国家予算に割り当てられます。
    +    移籍料は階級が高くなると安くなり、元国の国家予算に割り当てられる金額が増えます。

    +
     
    +情報 - 現在所属している国の情報が見れます。
    +
     
    +回復 - 大金を支払うことでHP/MPを瞬時に全回復させます。レベルが高いほど高額になります。
    +     ただし、レベル40以上は額が上がりません。
    +
     
    +宝くじ - 1回500Gで宝くじを行えます。約半数の方は元がとれることでしょう。
    +
    +     壱等賞 - 10万G
    +     弐等賞 - 5万G
    +     参等賞 - 1万G
    +     四等賞 - 1千G
    +     幸運賞 - HPもしくはMP全回復
    +     不幸賞 - HPもしくはMP半減
    +     罪罰賞 - ハグレメタルの剣(希少)
    +
     
    +討伐 - エルタニアの地に蔓延る魑魅魍魎を征伐します。
    +     討伐に成功すると地位と賞金を獲得できます。魑魅魍魎はとてつもなく強大です。
    +     討伐を繰り返すことで、エルタニアの英雄になることができます。
    +     また、魑魅魍魎はごく稀に隠し武具や隠しアイテムを落とすことがあります。
    +
     
    +軍事 - 敵国に対する戦略
    +
    +     諜報 - 敵国に諜報員を送り込み資金調達ルートを錯乱させる。敵国の国家予算を奪取
    +     強奪 - 敵国に奇襲攻撃をかけ、兵糧を奪取
    +     洗脳 - 敵国の兵士陣を洗脳し、自国に引き入れる。敵国の兵士数を奪取
    +
     
    +
     
    +
    +■ メニュー説明 +
     
    +国際交流酒場 - 罪罰++プレイヤーのためのチャット・・・・形骸化しているような・・
    +
     
    +国際交流広場 - プレイヤー同士の交流の場
    +
     
    +各国作戦会議 - 各国専用の作戦会議室。無所属は利用できません。
    +
     
    +ショッピングモール - 武具や道具の売買、お金の融資など。 +
     
    +     武具 - 武具を買ったり売ったりできます。
    +     道具 - 道具を買ったり売ったりできます。
    +     金融 - お金を借りれます。借金をすると返済までの期間、烙印を押されます。
    +                烙印の称号が付加されると、いくつかの行動が制限されるので注意です。
    +                また、借金には利息がつきますので、できるだけ早めに返済してください。 +
     
    +公式条約 - 各国間で結んだ条約や同盟など・・・・形骸化しているような・・
    +
     
    +過去の栄光 - 過去に行われた各国の攻防の記録
    +
     
    +
     
    +
    +■ アドバイス(参考) +
     
    +罪罰++は、プレイヤーの方が思っている以上に結構簡単に重複登録は見破れます。
    +なので、重複登録はしないようにして下さい。見つけ次第全キャラ削除します。ルール違反はいけません。
    +ちなみに参加人数は最大で170名です。
    +
     
    +
     
    +
     
    +
     
    +
     
    +
     
    +■ タイトルへ戻る + + \ No newline at end of file diff --git a/html/Help_i.html b/html/Help_i.html new file mode 100644 index 0000000..89ca528 --- /dev/null +++ b/html/Help_i.html @@ -0,0 +1,120 @@ + + + +説明書[モバイル版] + + +[9] トップに戻る +
    +説明書 +
    +[1] どんなゲーム? +/[2] ステータス説明 +/[3] コマンド説明 +/[4] メニュー説明 +/[5] 階級・特殊技 + +
    +1 どんなゲーム? +
    +罪と罰++ は、悠久の大地「エルタニア」を舞台とするマルチプレイRPGです。
    +このゲームには目的がありません。自らを鍛え最強のキャラに育てえるも良し、国に所属してエルタニアの覇権を狙うも良し、魑魅魍魎を討伐して英雄になるのも良しと、プレイヤーは自由に行動可能です。 
    +また、プレイヤー間のコミュニケーションが最も重要なポイントとなっているため、渋いゲームの割には、何故か カップル続出のげ〜む です。 
    +
    +[0] 先頭に戻る +
    +2 ステータス説明 +
    +NM - 名前
    +LV - レベル >>レベル×レベル×10で1レベルUP
    +HP - 生命力
    +MP - 精神力 >>特殊技・階級技に必要
    +UA - 攻撃力
    +UD - 防御力
    +LR - 指揮力 >>政治効率・部隊能力に影響
    +GOLD - 所持金 
    +経験値 - レベルアップに必要
    +称号 - 取得している称号
    +武具 - 装備している武具
    +道具 - 所持している道具
    +所属 - 国籍 >>放浪していると無所属
    +兵数 - 指揮している部隊の最大兵数 >> 階級により増減
    +階級 - 現在の階級 >>内政や戦争に勝利すると上昇
    +
    +総国力 - この数値で給与が増減します。既定値に達するとゲームクリアになり、国データが総て初期状態に戻る。キャラクタデータは変化しない。
    +国家予算 - 戦争を起こすのに必要。商業をおこなうと増加
    +兵糧 - 戦争を起こすのに必要。農業をおこなうと増加
    +総兵士数 - 戦争を起こすのに必要。少ないと敵に攻め込まれた時に国力が著しく低下する場合がある
    +
    +[0] 先頭に戻る +
    +3 コマンド説明 +
    +修行 - 登録キャラクタとの対戦
    +修業時の戦闘はプレイヤーキャラクタ先攻で交互に攻撃を繰り返して行われる。
    +コマンドは最初は『攻撃』コマンドしかありませんが、レベルが上がっていくと特殊技が利用可能。
    +精神を消費しますが、特殊コマンドは強力な攻撃なので短期に決着をつけたい場合などに使うと良い
    +特殊技はレベルが5の倍数づつ覚える。LV5、LV10、LV15…
    +階級が上級騎士以上の「階級技」を使用可能。
    +階級技はレベルに関係なく使用可能。4種類の階級技が存在する
    +
    +内政 - 国に所属している場合に実行可能なコマンド
    +農業 - 兵糧増加
    +商業 - 国家予算増加
    +軍備 - 戦争に備え軍備の強化
    +軍備コマンド -
    +・兵を雇う - 兵を雇う。使われるのはキャラクタ持ちです。
    +・兵を訓練する - キャラクタの部隊の兵を訓練。最大は100。
    +・兵を訓練する - キャラクタの率いる部隊を訓練。訓練する事で戦争時の部隊能力が上昇。
    +
    +戦争 - 国所属の場合に実行可能
    +キャラクタの部隊総数に対して国家予算が1/10 兵糧が1/1以上あれば他国に攻め込める。
    +敵国に攻め込み勝利する事で敵国の国力を奪える。
    +戦争が始まると敵国から適当に選ばれたプレイヤーキャラクタ、またはNPCが防衛部隊として出現。
    +- 戦争の進め方 -
    +戦争ではジャンケンの要領で戦闘を行う。
    +攻撃陣形→防御陣形→突撃陣形→攻撃陣形…
    +という具合に、敵が防御陣形時に攻撃陣形を取れば、相手に多大な損害を与える事ができ、
    +反対に敵が攻撃陣形時に防御陣形を取ってしまうと、自部隊に甚大な被害がでてしまう。
    +- 一騎討ち -
    +断ると評価が少し下がり、受ければ少し上昇。
    +一騎討ちに勝利すると多めに評価値が上昇し、負けると多めに減少。
    +勝っても負けても経験値とお金が手に入るが、撤退は無報酬。
    +ただ撤退すれば兵力はその時点の数値で国の総兵士数に戻るから、勝てない相手の場合は撤退した方が利口。
    +
    +能力 - 能力上昇コマンド。所属による制限なし。
    +
    +仕官 - 国に仕官したり、放浪の身になったりする。
    +無所属していても良い事はひとつもない。仕官はレベル2から
    +
    +情報 - 現在所属している国の情報
    +
    +回復 - HP/MPを瞬時に全回復
    +
    +宝くじ - 1回500G
    +壱等10万G/弐等5万G/参等1万G/四等1千G/幸運 HPもしくはMP全回復/不幸 HP MP半減/罪罰 ハグレメタルの剣
    +
    +討伐 - 魑魅魍魎を征伐。
    +討伐に成功すると地位と賞金を獲得。
    +ごく稀に隠し武具や隠しアイテムを落とすことがある。
    +多く討伐すると英雄になれる。
    +
    +軍事 - 敵国に対する戦略
    +諜報 - 国家予算を奪取
    +強奪 - 兵糧を奪取
    +洗脳 - 敵国の兵士数を奪取
    +
    +[0] 先頭に戻る +
    +4 メニュー説明 +
    +交流広場 - プレイヤー同士の交流場
    +作戦会議 - 作戦会議室。無所属は利用不可。
    +ショッピング - 武具や道具の売買、お金の融資など。 
    +金融で借金をすると返済まで烙印の称号が付加され、いくつかの行動が制限されるので注意。 
    +公式条約 - 各国間で結んだ条約や同盟など
    +過去の栄光 - 過去に行われた各国の攻防の記録
    +
    +[0] 先頭に戻る + + diff --git a/html/newgame.html b/html/newgame.html new file mode 100644 index 0000000..b8c058b --- /dev/null +++ b/html/newgame.html @@ -0,0 +1,32 @@ + + + + +新規登録 + + + +
    +新規登録 +
    +プレイヤー名:(全角4〜8文字)
    +ID:(半角英数4〜12文字)
    +パスワード:(半角英数4〜8文字)
    + +
    +INDEXへ + + diff --git a/html/ore_.css b/html/ore_.css new file mode 100644 index 0000000..6fe0a1d --- /dev/null +++ b/html/ore_.css @@ -0,0 +1,33 @@ +body { font-size: 12px; font-family: "MS Pゴシック", "Osaka"} +.moji1 { font-size: 14px; font-style: normal; font-weight: 400; color: #bbbbcc} +.moji2 { font-size: 12px; font-style: normal; font-weight: 400; color: #bbbbcc} +.button1{ + font-family: "MS Pゴシック", "Osaka"; font-size: 14px; font-weight: 400; color: #bbbbcc; + border: 4px #666699 ridge; cursor: hand; background-color: #111122; + width:160px; height:28px; +} +.button2{ + font-family: "MS Pゴシック", "Osaka"; font-size: 14px; font-weight: 400; color: #bbbbcc; + border: 2px #9999CC ridge; cursor: hand; background-color: #222244; + height:24px; +} +.button3{ + font-family: "MS Pゴシック", "Osaka"; font-size: 12px; font-weight: 400; color: #9999bb; + border: 1px #9999CC solid; cursor: hand; background-color: #222244; + height:20px; +} +select { + font-family: "MS Pゴシック", "Osaka"; font-size: 14px; font-weight: 400; color: #ccccee; + cursor: hand; background-color: #333366; + width:160px; height:28px; +} +td { font-size:11pt;color:#222222} +.bar { + scrollbar-face-color: #333333; + scrollbar-highlight-color: #333333; + scrollbar-shadow-color: #000000; + scrollbar-arrow-color: #ffffff; + scrollbar-base-color: #000000; + scrollbar-3d-light-color: #ffffff; + scrollbar-dark-shadow-color: #000000 +} diff --git a/html/st.html b/html/st.html new file mode 100644 index 0000000..b0b29e3 --- /dev/null +++ b/html/st.html @@ -0,0 +1,153 @@ + + +罪と罰++ 特殊技・階級技 + + + + + +罪と罰++ 特殊技・階級技 +
     
    +
     
    +- アルメリア王国 - +フラリン教国 - +イギス連合国 - +ソーディナ帝国 - +ヤマト神国 -
    +- 無所属 - +階級技 - +
     
    +- 取り扱い説明書に戻る - +タイトルへ戻る - +
     
    +
     
    +
    +■ アルメリア王国 +
     
    +●レベル5 疾風剣 [MP -6] UA1.5倍攻撃 +
     
    +○レベル10 生命功 [MP -9] 体力10回復 +
     
    +●レベル15 奉撃功 [MP -12] 戦闘中UA-UP +
     
    +○レベル20 炎蒼旋 [MP -15] 防御無視で30ダメージ +
     
    +●レベル25 鋼気 [MP -18] 戦闘中UD-UP +
     
    +○レベル30 絶心功 [MP -21] 体力50回復 +
     
    +●レベル35 鳳凰転生 [MP -60] 敵体力4〜8割ダメージ(リスクあり) +
     
    +○レベル40 魂砕き [MP -90] 確率で敵瞬殺(リスクあり) +
     
    +
     
    +
    +■ フラリン教国 +
     
    +●レベル5 バーティカルソード [MP -6] UA1.5倍攻撃 +
     
    +○レベル10 アタック [MP -12] 戦闘中UA-UP +
     
    +●レベル15 ヒール [MP -6] 体力10回復 +
     
    +○レベル20 セイントクロス [MP -18] 防御無視で30ダメージ、更に体力回復 +
     
    +●レベル25 アンクレアブレイク [MP -30] 敵UAをゼロに。 +
     
    +○レベル30 ハイヒール [MP -21] 体力50回復 +
     
    +●レベル35 夢を継ぐ者 [MP -45] 140〜200ダメージ +
     
    +○レベル40 龍破斬 [MP -90] 200〜350ダメージ +
     
    +
     
    +
    +■ イギス連合国 +
     
    +●レベル5 ソードスラッシュ [MP -6] 防御無視で15ダメージ +
     
    +○レベル10 アタック [MP -12] 戦闘中UA-UP +
     
    +●レベル15 ソードダンス [MP -12] 防御無視で25ダメージ +
     
    +○レベル20 シールド [MP -18] 戦闘中UD-UP +
     
    +●レベル25 アーマーブレイク [MP -25] 敵UDをゼロに。 +
     
    +○レベル30 ハイヒール [MP -21] 体力50回復 +
     
    +●レベル35 オーガソード [MP -40] UA3倍攻撃 +
     
    +○レベル40 アルティメットアタック [MP -99] 防御無視でHPとMPにUA3倍攻撃 +
     
    +
     
    +
    +■ ソーディナ帝国 +
     
    +●レベル5 暗黒剣 [MP -9] UA2倍攻撃 +
     
    +○レベル10 デッドクラウン [MP -12] 防御無視で20ダメージ、更に体力回復 +
     
    +●レベル15 ナイトメア [MP -10] 敵MPに30ダメージ +
     
    +○レベル20 黒炎 [MP -15] 防御無視で30ダメージ +
     
    +●レベル25 絶心功 [MP -21] 体力50回復 +
     
    +○レベル30 アタック [MP -12] 戦闘中UA-UP +
     
    +●レベル35 シールド  [MP -18] 戦闘中UD-UP +
     
    +○レベル40 地獄門 [MP -70] 防御無視で200〜250ダメージ +
     
    +
     
    +
    +■ ヤマト神国 +
     
    +●レベル5 壱式 [MP -10] 防御無視で30ダメージ(リスクあり) +
     
    +○レベル10 壱式・断 [MP -10] UA1.5倍攻撃 +
     
    +●レベル15 弐式 [MP -20] 防御無視で70ダメージ(リスクあり) +
     
    +○レベル20 弐式・裂 [MP -20] UA2〜2.5倍攻撃(リスクあり) +
     
    +●レベル25 参式 [MP -30] 防御無視で120ダメージ(リスクあり) +
     
    +○レベル30 参式・波 [MP -30] UA3〜3.5倍攻撃(リスクあり) +
     
    +●レベル35 零式 [MP -60] 防御無視で200ダメージ(リスクあり) +
     
    +●レベル40 零式・絶 [MP -80] UA5〜6倍攻撃(リスクあり) +
     
    +
     
    +
    +■ 無所属 +
     
    +●レベル5 マジン剣 [MP -3] UA5倍攻撃 +
     
    +○レベル10 全回復 [MP -9] 体力完全回復 +
     
    +●レベル5以上 マジン剣 [MP -9] クリティカルヒット(UA4倍攻撃) ある条件により2.5%〜10%の確率で発動 +
     
    +○レベル10〜20 連続技 [MP -10] マジン剣 + 半回復  ある条件により2.5%〜10%の確率で発動 +
     
    +
     
    +
    +■ 階級技(各国共通・無所属不可) +
     
    +●上級騎士 ファイアー [MP -5] (UA + UD)の2倍攻撃 +
     
    +○大隊長 アイスストーム [MP -25] (UA + UD)の2.5倍攻撃 +
     
    +●上級大将 ダイヤキュート [MP -50] (UA + UD)の3倍攻撃 +
     
    +○元帥 ブレインダムド [MP -100] (UA + UD)の4倍攻撃 +
     
    +
     
    +
     
    +
     
    +
     
    +■ タイトルへ戻る + + \ No newline at end of file diff --git a/html/st_i.html b/html/st_i.html new file mode 100644 index 0000000..720da05 --- /dev/null +++ b/html/st_i.html @@ -0,0 +1,91 @@ + + +特殊・階級技[モバイル版] + + + +[9]説明書に戻る +
    +特殊・階級技 +
    +アルメリア王国 +/フラリン教国 +/イギス連合国 +/ソーディナ帝国 +/ヤマト神国 +/無所属 +/階級技 +
    +■ アルメリア王国
    +●レベル5 疾風剣 [MP -6] UA1.5倍攻撃
    +○レベル10 生命功 [MP -9] 体力10回復
    +●レベル15 奉撃功 [MP -12] 戦闘中UA-UP
    +○レベル20 炎蒼旋 [MP -15] 防御無視で30ダメージ
    +●レベル25 鋼気 [MP -18] 戦闘中UD-UP
    +○レベル30 絶心功 [MP -21] 体力50回復
    +●レベル35 鳳凰転生 [MP -60] 敵体力4~8割ダメージ(リスクあり)
    +○レベル40 魂砕き [MP -90] 確率で敵瞬殺(リスクあり) +[0]先頭に戻る +
    +■ フラリン教国
    +●レベル5 バーティカルソード [MP -6] UA1.5倍攻撃
    +○レベル10 アタック [MP -12] 戦闘中UA-UP
    +●レベル15 ヒール [MP -6] 体力10回復
    +○レベル20 セイントクロス [MP -18] 防御無視で30ダメージ、更に体力回復
    +●レベル25 アンクレアブレイク [MP -30] 敵UAをゼロに。
    +○レベル30 ハイヒール [MP -21] 体力50回復
    +●レベル35 夢を継ぐ者 [MP -45] 140~200ダメージ
    +○レベル40 龍破斬 [MP -90] 200~350ダメージ +[0]先頭に戻る +
    +■ イギス連合国
    +●レベル5 ソードスラッシュ [MP -6] 防御無視で15ダメージ
    +○レベル10 アタック [MP -12] 戦闘中UA-UP
    +●レベル15 ソードダンス [MP -12] 防御無視で25ダメージ
    +○レベル20 シールド [MP -18] 戦闘中UD-UP
    +●レベル25 アーマーブレイク [MP -25] 敵UDをゼロに。
    +○レベル30 ハイヒール [MP -21] 体力50回復
    +●レベル35 オーガソード [MP -40] UA3倍攻撃
    +○レベル40 アルティメットアタック [MP -99] 防御無視でHPとMPにUA3倍攻撃 +[0]先頭に戻る +
    +■ ソーディナ帝国 +
    +●レベル5 暗黒剣 [MP -9] UA2倍攻撃
    +○レベル10 デッドクラウン [MP -12] 防御無視で20ダメージ、更に体力回復
    +●レベル15 ナイトメア [MP -10] 敵MPに30ダメージ
    +○レベル20 黒炎 [MP -15] 防御無視で30ダメージ
    +●レベル25 絶心功 [MP -21] 体力50回復
    +○レベル30 アタック [MP -12] 戦闘中UA-UP
    +●レベル35 シールド [MP -18] 戦闘中UD-UP
    +○レベル40 地獄門 [MP -70] 防御無視で200~250ダメージ +[0]先頭に戻る +
    +■ ヤマト神国 +
    +●レベル5 壱式 [MP -10] 防御無視で30ダメージ(リスクあり)
    +○レベル10 壱式・断 [MP -10] UA1.5倍攻撃
    +●レベル15 弐式 [MP -20] 防御無視で70ダメージ(リスクあり)
    +○レベル20 弐式・裂 [MP -20] UA2~2.5倍攻撃(リスクあり)
    +●レベル25 参式 [MP -30] 防御無視で120ダメージ(リスクあり)
    +○レベル30 参式・波 [MP -30] UA3~3.5倍攻撃(リスクあり)
    +●レベル35 零式 [MP -60] 防御無視で200ダメージ(リスクあり)
    +●レベル40 零式・絶 [MP -80] UA5~6倍攻撃(リスクあり)
    +[0]先頭に戻る +
    +■ 無所属 +
    +●レベル5 マジン剣 [MP -3] UA5倍攻撃
    +○レベル10 全回復 [MP -9] 体力完全回復
    +●レベル5以上 マジン剣 [MP -9] クリティカルヒット(UA4倍攻撃) ある条件により2.5%~10%の確率で発動
    +○レベル10~20 連続技 [MP -10] マジン剣 + 半回復 ある条件により2.5%~10%の確率で発動 +[0]先頭に戻る +
    +■ 階級技(各国共通・無所属不可)
    +●上級騎士 ファイアー [MP -5] (UA + UD)の2倍攻撃
    +○大隊長 アイスストーム [MP -25] (UA + UD)の2.5倍攻撃
    +●上級大将 ダイヤキュート [MP -50] (UA + UD)の3倍攻撃
    +○元帥 ブレインダムド [MP -100] (UA + UD)の4倍攻撃 +[0]先頭に戻る + + \ No newline at end of file diff --git a/imgs/bb.gif b/imgs/bb.gif new file mode 100644 index 0000000..1cf0848 Binary files /dev/null and b/imgs/bb.gif differ diff --git a/imgs/index.html b/imgs/index.html new file mode 100644 index 0000000..d0dc3b5 --- /dev/null +++ b/imgs/index.html @@ -0,0 +1,8 @@ + + + +のぞいちゃイヤ〜。 + + + + diff --git a/imgs/r2_c2.gif b/imgs/r2_c2.gif new file mode 100644 index 0000000..2f5d020 Binary files /dev/null and b/imgs/r2_c2.gif differ diff --git a/imgs/spacer.gif b/imgs/spacer.gif new file mode 100644 index 0000000..fc25609 Binary files /dev/null and b/imgs/spacer.gif differ diff --git a/imgs/spc.gif b/imgs/spc.gif new file mode 100644 index 0000000..fc25609 Binary files /dev/null and b/imgs/spc.gif differ diff --git a/imgs/title.gif b/imgs/title.gif new file mode 100644 index 0000000..d719ad8 Binary files /dev/null and b/imgs/title.gif differ diff --git a/imgs/title_game.png b/imgs/title_game.png new file mode 100644 index 0000000..9c9df0e Binary files /dev/null and b/imgs/title_game.png differ diff --git a/imgs/title_text.png b/imgs/title_text.png new file mode 100644 index 0000000..831be32 Binary files /dev/null and b/imgs/title_text.png differ diff --git a/inc/ore_sub-ability.cgi b/inc/ore_sub-ability.cgi new file mode 100644 index 0000000..133fc97 --- /dev/null +++ b/inc/ore_sub-ability.cgi @@ -0,0 +1,172 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# 能力メニュー + +sub ability{ + + if(!$type){ + + &abi_up_data; + + $log .= "UA $va G UD $vd G LR $vl G AG $vg G
    体力・精神を15000 G を使いそれぞれの能\力を上げます
    \n"; + $tm=0; + $type='能力'; + + &ability_menu; + + } + + &dat_write; +} + +sub ability_menu{ + + # 能力コマンド + @st = ('やめる','HP-UP','MP-UP','UA-UP','UD-UP','LR-UP','AG-UP'); + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; +} + +#------------------------------------------------------------------------------- +# 能力処理 +sub ability_exe{ + + if(!$tm){ + + &abi_up_data; + + if($cmd<=0){ + $log .= "止めておきます
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }elsif($cmd==1){ + if($gold<15000){ + $log .= "お金が足りません
    \n"; + $tm = $cmd = 0; + $type=''; + &ability_menu; + }else{ + $log .= "最大HPが3上がった
    \n"; + $max_hp+=3; + $gold-=15000; + $tm = $cmd = 0; + $type=''; + &call_main_st; + } + }elsif($cmd==2){ + if($gold<15000){ + $log .= "お金が足りません
    \n"; + $tm = $cmd = 0; + $type=''; + &ability_menu; + }else{ + $log .= "最大MPが3上がった
    \n"; + $max_mp+=3; + $gold-=15000; + $tm = $cmd = 0; + $type=''; + &call_main_st; + } + }elsif($cmd==3){ + if($gold<$va){ + $log .= "お金が足りません
    \n"; + $tm = $cmd = 0; + &ability_menu; + }else{ + $log .= "攻撃力が1上がった
    \n"; + $ua++; + $gold-=$va; + $tm = $cmd = 0; + $type=''; + &call_main_st; + } + }elsif($cmd==4){ + if($gold<$vd){ + $log .= "お金が足りません
    \n"; + $tm = $cmd = 0; + &ability_menu; + }else{ + $log .= "防御力が1上がった
    \n"; + $ud++; + $gold-=$vd; + $tm = $cmd = 0; + $type=''; + &call_main_st; + } + }elsif($cmd==5){ + if($gold<$vl){ + $log .= "お金が足りません
    \n"; + $tm = $cmd = 0; + &ability_menu; + }else{ + $log .= "指揮力が1上がった
    \n"; + $lr++; + $gold-=$vl; + $tm = $cmd = 0; + $type=''; + &call_main_st; + } + }elsif($cmd==6){ + if($gold<$vg){ + $log .= "お金が足りません
    \n"; + $tm = $cmd = 0; + &ability_menu; + }else{ + $log .= "敏捷力が1上がった
    \n"; + $ag++; + $gold-=$vg; + $tm = $cmd = 0; + $type=''; + &call_main_st; + } + } + } + + &dat_write; + +} + +# 能力上昇値計算 +sub abi_up_data{ + + $va=int($ua*$ua)*100; + $va=15000 if($va<15000); + $va=500000 if($va>500000); + $vd=int($ud*$ud)*100; + $vd=15000 if($vd<15000); + $vd=500000 if($vd>500000); + $vl=int($lr*$lr)*100; + $vl=30000 if($vl<30000); + $vl=500000 if($vl>500000); + $vg=int($ag*$ag)*100; + $vg=15000 if($vg<15000); + $vg=500000 if($vg>500000); + + return ($va,$vd,$vl,$vg); + +} + + + + + +1; diff --git a/inc/ore_sub-base-p1_pc.cgi b/inc/ore_sub-base-p1_pc.cgi new file mode 100644 index 0000000..21f6e6c --- /dev/null +++ b/inc/ore_sub-base-p1_pc.cgi @@ -0,0 +1,150 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # +# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # +# BLANK BOARD [ http://pom.to/ ] # +#-----------------------------------------------------------# +# 表示 PC用パーツ1 Version 1.0 # +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# 通常表示用 +sub layout_flag_0{ + print < + + +EOM + + if($log){ + print <<"EOM"; + + + + +
    + +$log + +
    + +
    +EOM +} + + my @metu=('','(亡)'); + my $reset_time_out = int(($set-$time)/(3600*24)); + print <<"EOM"; + + + + +
    + +$bmes + +
    + +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     $cmp[1]$metu[$ce1]$cmp[2]$metu[$ce2]$cmp[3]$metu[$ce3]$cmp[4]$metu[$ce4]$cmp[5]$metu[$ce5]
    総国力$cn1$cn2$cn3$cn4$cn5
    国家\予\算$cg1$cg2$cg3$cg4$cg5
    総兵糧$cf1$cf2$cf3$cf4$cf5
    総兵士数$cs1$cs2$cs3$cs4$cs5
    所属人数$c1/$c1a$c2/$c2a$c3/$c3a$c4/$c4a$c5/$c5a
    + +
    + + + + + + + + +
    +
    - System Infomation -
    +
    +  第 $goal_no 期
    +  統一期限まで 後 $reset_time_out日 + +
    + +
    + + + + + +
    +参加総数: $all_mem名 / $sanka人定員
    +統一国力: $data_reset  難易度: $reset_point +
    +前回の覇者: $hasya [$cmp[$hcamp]] +
    + + + + + +EOM +} + + + + + +1; diff --git a/inc/ore_sub-base_mv.cgi b/inc/ore_sub-base_mv.cgi new file mode 100644 index 0000000..03d6308 --- /dev/null +++ b/inc/ore_sub-base_mv.cgi @@ -0,0 +1,82 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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.1 # +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# 画面レイアウト +sub html{ + + local($shop_i); + $shop_i = qq|2.ショッピング/| if(!$type && $cmd<=0); + + print "Content-type: text/html; charset=shift_jis\n\n" ; + + print qq|$titleh
    |; + print qq|$title_i
    | if(!$tm && !$log); + + if($lt_mode =~ /00/){print qq|$log1
    | if(!$tm && !$log)} + else{print qq|$log1
    |;} + + print qq|$log2
    |; + print qq|$log
    |; + + if(!$type && $cmd<=0){ + print qq|9.タイトル/1.交流広場/$shop_i3.過去の栄光/4.公式条約/5.作戦会議
    | if($lt_mode =~ /01/); + print qq|$bmes
    | if($lt_mode =~ /02/ && !$log); + print qq|$rst
    | if($lt_mode =~ /03/ && !$log); + print qq|参加総数:$now_sanka名/$sanka人定員//統一国力:$data_reset/難易度:$reset_point//前回の覇者: $hasya [$cmp[$hcamp]]
    | if($lt_mode =~ /04/ && !$log); + print qq|現在の参加者
    $now_nm| if($lt_mode =~ /05/ && !$log); + print qq|
    $kakiko
    | if($lt_mode =~ /06/ && !$log); + }else{ + print qq|9.タイトル/1.交流広場/$shop_i3.過去の栄光/4.公式条約/5.作戦会議
    | if($lt_mode =~ /11/); + print qq|$bmes
    | if($lt_mode =~ /22/); + print qq|$rst
    | if($lt_mode =~ /33/); + print qq|参加総数:$now_sanka名/$sanka人定員//統一国力:$data_reset/難易度:$reset_point//前回の覇者: $hasya [$cmp[$hcamp]]
    | if($lt_mode =~ /44/); + print qq|プレイ人数
    $now_nm| if($lt_mode =~ /55/); + print qq|
    $kakiko
    | if($lt_mode =~ /66/); + } +} + +#------------------------------------------------------------------------------- +#ステータス表示 +sub status{ + +$log1.=< +LV$lv $gold\G
    +HP$hp/$max_hp MP$mp/$max_mp
    +UA$ua/UD$ud/LR$lr/AG$ag
    +経験値$exe/$next_lv
    +$cmp[$camp] $cl[$rank]
    +部隊$g_p[$rank] 訓練度$sol_lv
    +EOM +$log1.="称号[$sogo_p[$sogo]]
    " if($sogo); +$log1.="[$dg_data[$dg_a][1]]/$dg_cnt
    " if($dg_a && $dg_cnt); +$log1.="[$df_data[$df_a][1]]/$df_cnt
    " if($df_a && $df_cnt); +$log1.="[$di_data[$di_a][1]]/$di_cnt
    " if($di_a && $di_cnt); + +my @metu=('','(亡)'); + +$rst.=<$cmp[2]$metu[$ce2] 国力$cn2 予\算$cg2 兵糧$cf2 兵士$cs2 人数$c2/$c2a +
    $cmp[3]$metu[$ce3] 国力$cn3 予\算$cg3 兵糧$cf3 兵士$cs3 人数$c3/$c3a +
    $cmp[4]$metu[$ce4] 国力$cn4 予\算$cg4 兵糧$cf4 兵士$cs4 人数$c4/$c4a +
    $cmp[5]$metu[$ce5] 国力$cn5 予\算$cg5 兵糧$cf5 兵士$cs5 人数$c5/$c5a +
    +EOM +} + + + + + +1;#削除不可 diff --git a/inc/ore_sub-base_pc.cgi b/inc/ore_sub-base_pc.cgi new file mode 100644 index 0000000..1865f6a --- /dev/null +++ b/inc/ore_sub-base_pc.cgi @@ -0,0 +1,368 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # +# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # +# BLANK BOARD [ http://pom.to/ ] # +#-----------------------------------------------------------# +# PC用サブルーチン Version 1.1 # +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# 画面レイアウト +sub html{ + + # ヘッダー&圧縮転送有無 + &content_type; + + # マウス自動操作チート撃退 戦闘時に4/400 の確立で発動 + my $no_mouse = ($no_mouse && $type eq '修行中') ? int(rand(400)) : 100 ; + + print < + +$titleh + +EOM + +# Javascript自動操作チート防衛(frame取り込み防衛) +if($no_js){ + print < + + +EOM +} + + print < + +
    + + + + +
    +$title +
    + + + + + + + +
    + + + + + +
    +$log1 +
    + +
    + + + + + + + +EOM + if($no_mouse==0){ + print qq|$log2|; + } + print< +
    +
    + + +EOM + if($no_mouse==1){ + print qq|$log2|; + } + print< +
    +
    + + +EOM + +if(!$type && $cmd<=0){ + print <<"EOM"; + + + + + +EOM +} + print <<"EOM"; + + + + + +EOM + if($no_mouse==2){ + print qq|$log2|; + } + print< +
    +
    + + +EOM + if($no_mouse>=3){ + print qq|$log2|; + } + print< + + + +
    + +
    + + + + + +
    + + + +
    + + + + +
    + + + +
    + + + +
    +
    +EOM + + my($uti, $sti, $cuti, $csti) = times(); + $uti += $cuti; + $sti += $csti; + my($cpu) = $uti + $sti; + my $disp="CPUs($cpu): User($uti) System($sti)
    "; + + if($layout_flag==1){ + print < +
    + +$log + +
    +

    +EOM + }elsif(!$layout_flag){ + require './inc/ore_sub-base-p1_pc.cgi';&layout_flag_0; + } + + print <<"EOM"; +$disp
    +
    +$kakiko +EOM + +} + +#------------------------------------------------------------------------------- +#ステータス表示 +sub status{ + + &settei;#設定読み込み + + my( + $hp_v,$hp_c,$hp_y, + $mp_v,$mp_c,$mp_y, + $ua_v,$ua_c, + $ud_v,$ud_c, + $lr_v,$lr_c, + ); + + #HPグラフ + if($max_hp <= 75){ + $hp_v = $hp*2; + $hp_c = "#00bbff"; + $hp_y = $max_hp*2-$hp*2; + }elsif($max_hp <= 300){ + $hp_v = $hp; + $hp_c = "#0099ff"; + $hp_y = $max_hp-$hp; + }elsif($max_hp <= 600){ + $hp_v = int($hp/2); + $hp_c = "#0077ff"; + $hp_y = int($max_hp/2-$hp/2); + }elsif($max_hp <= 1200){ + $hp_v = int($hp/4); + $hp_c = "#0055ff"; + $hp_y = int($max_hp/4-$hp/4); + }elsif($max_hp <= 2400){ + $hp_v = int($hp/8); + $hp_c = "#0033ff"; + $hp_y = int($max_hp/8-$hp/8); + }elsif($max_hp <= 4800){ + $hp_v = int($hp/16); + $hp_c = "#0011ff"; + $hp_y = int($max_hp/16-$hp/16); + }else{ + $hp_v = int($hp/32); + $hp_c = "#0011ff"; + $hp_y = int($max_hp/32-$hp/32); + } + #MPグラフ + if($max_mp <= 75){ + $mp_v = $mp*2; + $mp_c = "#00ffcc"; + $mp_y = $max_mp*2-$mp*2; + }elsif($max_mp <= 300){ + $mp_v = $mp; + $mp_c = "#00ddcc"; + $mp_y = $max_mp-$mp; + }elsif($max_mp <= 600){ + $mp_v = int($mp/2); + $mp_c = "#00bbcc"; + $mp_y = int($max_mp/2-$mp/2); + }elsif($max_mp <= 1200){ + $mp_v = int($mp/4); + $mp_c = "#0099cc"; + $mp_y = int($max_mp/4-$mp/4); + }elsif($max_mp <= 2400){ + $mp_v = int($mp/8); + $mp_c = "#0077cc"; + $mp_y = int($max_mp/8-$mp/8); + }elsif($max_mp <= 4800){ + $mp_v = int($mp/16); + $mp_c = "#0055cc"; + $mp_y = int($max_mp/16-$mp/16); + }else{ + $mp_v = int($mp/32); + $mp_c = "#0033cc"; + $mp_y = int($max_mp/32-$mp/32); + } + #UAグラフ + if($ua <= 25){ + $ua_v = $ua*4; + $ua_c = "#99ccff"; + }elsif($ua <= 50){ + $ua_v = $ua*2; + $ua_c = "#9999ff"; + }elsif($ua <= 100){ + $ua_v = $ua; + $ua_c = "#9966ff"; + }elsif($ua <= 500){ + $ua_v = int($ua/2); + $ua_c = "#9933ff"; + }else{ + $ua_v = int($ua/4); + $ua_c = "#9900ff"; + } + #UDグラフ + if($ud <= 25){ + $ud_v = $ud*4; + $ud_c = "#33ffff"; + }elsif($ud <= 50){ + $ud_v = $ud*2; + $ud_c = "#33ccff"; + }elsif($ud <= 100){ + $ud_v = $ud; + $ud_c = "#3399ff"; + }elsif($ud <= 500){ + $ud_v = int($ud/2); + $ud_c = "#3366ff"; + }else{ + $ud_v = int($ud/4); + $ud_c = "#3333ff"; + } + #LRグラフ + if($lr <= 25){ + $lr_v = $lr*4; + $lr_c = "#ccccff"; + }elsif($lr <= 50){ + $lr_v = $lr*2; + $lr_c = "#cc99ff"; + }elsif($lr <= 100){ + $lr_v = $lr; + $lr_c = "#cc66ff"; + }elsif($lr <= 500){ + $lr_v = int($lr/2); + $lr_c = "#cc33ff"; + }else{ + $lr_v = int($lr/4); + $lr_c = "#cc00ff"; + } + #LRグラフ + if($ag <= 25){ + $ag_v = $ag*4; + $ag_c = "#ccccff"; + }elsif($ag <= 50){ + $ag_v = $ag*2; + $ag_c = "#cc99ff"; + }elsif($ag <= 100){ + $ag_v = $ag; + $ag_c = "#cc66ff"; + }elsif($ag <= 500){ + $ag_v = int($ag/2); + $ag_c = "#cc33ff"; + }else{ + $ag_v = int($ag/4); + $ag_c = "#cc00ff"; + } + + $hp_y = (!$hp_y) ? "" : ""; + $mp_y = (!$mp_y) ? "" : ""; + $ua_y = (!$dg_a) ? "" : ""; + $ud_y = (!$df_a) ? "" : ""; + + $log1.=< +$nm   $seibetu[$sei]    ID: $id
    +レベル $lv 階 級 $cl[$rank] 称 号 [$sogo_p[$sogo]]
    +
    +体 力[HP] $hp_y $hp/$max_hp
    +魔 力[MP] $mp_y $mp/$max_mp
    +攻撃力[UA] $ua_y $ua +$dg_data[$dg_a][4]
    +防御力[UD] $ud_y $ud +$df_data[$df_a][4]
    +指揮力[LR] $lr
    +敏捷力[AG] $ag
    +
    +資 金 $gold 経験値 $exe/$next_lv 貢献値 $rank_exe
    +
    +所 属 $cmp[$camp] 部 隊 $g_p[$rank] 訓練度 $sol_lv
    +
    +武 具 [$dg_data[$dg_a][1]] 回数 [$dg_cnt]
    +防 具 [$df_data[$df_a][1]] 回数 [$df_cnt]
    +道 具 [$di_data[$di_a][1]] 回数 [$di_cnt] + +EOM + +} + + + + + +1;#削除不可 diff --git a/inc/ore_sub-battle.cgi b/inc/ore_sub-battle.cgi new file mode 100644 index 0000000..855c994 --- /dev/null +++ b/inc/ore_sub-battle.cgi @@ -0,0 +1,1109 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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.1 +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +#修行処理2 +sub bt_st { + + &bt_cm; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + if($thp<1||$hp<1){ + $log2 .=qq|\n|; + }else{ + &spell_sp; + } + $log2 .=qq|
    \n|;#テーブルずれ修正 + $log2 .=qq|$td_end
    \n|;#テーブル追加 + + &dat_write; + +} + +#------------------------------------------------------------------------------- +#戦闘処理 +sub bt_cm { + + $layout_flag=1; + + $ua_a = $ua+$dg_data[$dg_a][4]; # $uaに武具値付加 + $ud_a = $ud+$df_data[$df_a][4]; # $udに防具値付加 + + $tua_a = $tua+$dg_data[$tdg_a][4]; # $tuaに武具値付加 + $tud_a = $tud+$df_data[$tdf_a][4]; # $tudに防具値付加 + + my $btp = $ag + int(rand($lv/10)+1); + my $bte = $tag+ int(rand($tlv/10)+1); + + ($btp>=$bte) ? &attack_myself : &attack_enemy ; + if($thp>0 && $hp>0){($btp>=$bte) ? &attack_enemy : &attack_myself ;} + + # 02/10 戦争時、攻めた国の人でない人がでてくることへの対処 $tnm >> $tnm_p + $tnm_p = $tnm if(!$tnm_p); + $log .="

    $nm ( HP $hp / MP $mp ) VS $tnm_p ( HP $thp / MP $tmp )

    \n"; + +} + +# 攻撃--自分 +sub attack_myself{ + + $log .="\n"; + + if($cmd == 1){ + local ($v,$vv); + + $vv=int(rand(1500)); + + $v = $ua_a-$tud_a; + $v += int(sqrt($ua)) if($bst =~ /W/); + + $v = 1 if($v<1); + + if($dg_a && $dg_cnt){#武具呼び出し + $log .="$nm は $dg_data[$dg_a][1] で攻撃!!
    $tnm に $v の傷を与えた!
    \n"; + $thp -= $v; + $dg_cnt--; + if($dg_cnt<=0){ + $log .="$dg_data[$dg_a][1] が壊れた!!
    \n"; + $dg_a = $dg_cnt = 0; + } + elsif(!$vv){ + $log .="当たり所が悪く $dg_data[$dg_a][1] が壊れた!!
    \n"; + $dg_a = $dg_cnt = 0; + } + }else{ + $v = int((rand(4))+$v); + $thp -= $v; + $log .="$nm は $tnm に $v の傷を与えた!
    \n"; + } + + }elsif($cmd >= 2){ + $v = $cmd -2; + + if($rank >= 8){# 階級技呼び出し + &st_cm_k; + } + + if($di_a == 1){#賢者の石 + my $ss=int($lv/2); + my ($v,$vv); + if(int($hp+$ss) < $max_hp){ + $hp += $ss; + }else{ + $v=$max_hp-$hp; + $hp += $v; + } + if(int($mp+$ss) < $max_mp){ + $mp += $ss; + }else{ + $vv=$max_mp-$mp; + $mp += $vv; + } + $log .="$di_data[$di_a][1] の作用により$nm は体力と精神が $ss 回復した!
    \n"; + + $di_cnt--; + + if($di_cnt<=0){ + $log .="$di_data[$di_a][1] が砕け散った!
    \n"; + $di_a=0; + } + } + + # 道具呼び出し + &dogu_k if($di_a > 1 && $cmd==15); + + if($v=$sp_mp[$v]){ + $mp -= $sp_mp[$v]; + + if($camp==0){ + + if($lv < 10){$ch =int(rand(10));}#クリティカルヒット率 + elsif($lv >= 10 && $lv < 15){$ch =int(rand(15));} + elsif($lv >= 15 && $lv < 20){$ch =int(rand(25));} + elsif($lv >= 20 && $lv < 30){$ch =int(rand(50));} + elsif($lv >= 30 && $lv < 40){$ch =int(rand(75));} + else{$ch =int(rand(125));} + + if($v == 0 && $ch == 0 || ($ch == 1 && $lv > 5 && $lv < 10)){ + $v = int($ua*4); + $v = 1 if($v<1); + $thp -= $v; + $log .="必殺 マジン剣!クリティカルヒット! $tnm に $v の傷を与えた!
    \n"; + }elsif($v == 0 && $ch == 1 && $lv >= 10 && $lv < 20){ + $hp += int($max_hp/3) if($hp < $max_hp - int($max_hp/3)); + $v = int($ua*2); + $v = 1 if($v<1); + $thp -= $v; + $log .="半回復!体力がある程度回復した!
    連続技! 必殺 マジン剣!$tnm に $v の傷を与えた!
    \n"; + }elsif($v == 0 && $ch >= 2 || ($ch == 1 && $lv >= 20)){ + $v = int($ua*2); + $v = 1 if($v<1); + $thp -= $v; + $log .="必殺 マジン剣!$tnm に $v の傷を与えた!
    \n"; + }elsif($v == 1){ + $hp = $max_hp; + $log .="全回復!体力が完全に回復した!
    \n"; + } + + }elsif($camp==1){ + + if($v == 0){ + $v = int($ua*1.5); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*1.5) if($bst =~ /W/); + $v = $v-$tud; + $v = 1 if($v<1); + $thp -= $v; + $log .="必殺疾風剣!$tnm に $v の傷を与えた!
    \n"; + }elsif($v == 1 ){ + $v = int($max_hp-$hp); + $v = 30 if($v>30); + $hp += $v; + $log .="生命功!体力を $v 回復した!
    \n"; + }elsif($v == 2){ + $bst .= 'W' unless($bst =~ /W/); + $log .="奉撃功!攻撃力が上がった
    \n"; + }elsif($v == 3){ + $thp -= 30; + $log .="炎蒼旋!$tnm に 30 の傷を与えた!
    \n"; + }elsif($v == 4){ + $bst .= 'S' unless($bst =~ /S/); + $log .= "鋼気!防御力が上がった
    \n"; + }elsif($v == 5){ + $v = int($max_hp-$hp); + $v = 50 if($v>50); + $hp += $v; + $log .="絶心功!体力を$v回復した!
    \n"; + }elsif($v == 6){ + $dh =int(rand(3)) ; + if($dh==0){ + $v = int($thp*0.8); + $thp -= $v; + $thp = 1 if($thp < 1); + $vv = int($mp/4); + $mp -= $vv; + $log .="奥義 鳳凰転生!!$tnm を瀕死の状態に追い込んだ!
    しかし余波を食らい $nm は $vv の精神を失った。
    \n" if($thp <= 1); + $log .="奥義 鳳凰転生!!$tnm に$vの傷を与えた!
    しかし余波を食らい $nm は $vv の精神を失った。
    \n" if($thp > 1); + }else{ + $v = int($thp*0.5); + $thp -= $v; + $thp = 1 if($thp < 1); + $log .="奥義 鳳凰転生!!$tnm を瀕死の状態に追い込んだ!
    \n" if($thp <= 1); + $log .="奥義 鳳凰転生!!$tnm に$vの傷を与えた!
    \n" if($thp > 1); + } + }elsif($v == 7){ + $dh =int(rand(20)) ; + if($dh <= 3){ + $log .="秘奥義 魂砕き!!$tnm は心を粉々に砕かれた!
    \n"; + $thp=0; + }elsif($dh == 4){ + $v = int($hp*0.9); + $hp -= $v; + $log .="秘奥義 魂砕き!!自爆!! $nm は心が粉々に砕けちった!
    \n"; + }elsif($dh >= 5 && $dh <= 12){ + $v = int(($tud+$tua)*2-$tud); + $thp -= $v; + $log .="秘奥義 魂砕き!!失敗した!!
    しかし $tnm に $v のダメージを与えることに成功!
    \n"; + }else{ + $log .="失\敗\した…しかし最悪の事態だけは免れた。
    \n"; + } + } + + }elsif($camp==2){ + + if($v == 0){ + $v = int($ua*1.5); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*1.5) if($bst =~ /W/); + $v = $v-$tud; + $v = 1 if($v<1); + $thp -= $v; + $log .="バーティカルソード!$tnm に $v の傷を与えた!
    \n"; + }elsif($v == 1 ){ + $bst .= 'W' unless($bst =~ /W/); + $log .="アタック!攻撃力が上がった
    \n"; + }elsif($v == 2){ + $v = int($max_hp-$hp); + $v = 30 if($v>30); + $hp += $v; + $log .="ヒール!体力を$v回復した!
    \n"; + }elsif($v == 3){ + $thp -= 30; + $v = int($max_hp-$hp); + $v = 10 if($v>10); + $hp += $v; + $log .="セイントクロス!$tnm に30の傷を与え、更にその体力を僅かばかり吸い取った!
    \n"; + }elsif($v == 4){ + $tua = 1; + $log .= "秘術 アンクレアブレイク! $tnm のUAをゼロにした!
    \n"; + }elsif($v == 5){ + $v = int($max_hp-$hp); + $v = 50 if($v>50); + $hp += $v; + $log .="ハイヒール!体力を$v回復した!
    \n"; + }elsif($v == 6){ + $v = 140 + int(rand(60)) -$tud; + $thp -= $v; + $log .="時の流れに埋れし者……永久(とわ)の夢を継ぐ者……
    今汝の名において、穢れし者を浄化せよ・・・!!
    $tnm に $v の傷を与えた!
    \n"; + }elsif($v == 7){ + $log .="黄昏よりも暗き者……血の流れより赤き者……
    (省略)
    ……等しく滅びを与えんことを! 龍破斬!!
    \n"; + $v = 200 + int(rand(150)) - $tud; + $thp -= $v; + $log .="$tnm に $v の傷を与えた!
    \n"; + } + + }elsif($camp==3){ + + if($v == 0){ + $thp -= 15; + $log .="ソードスラッシュ!$tnm に 15 の傷を与えた!
    \n"; + }elsif($v == 1 ){ + $bst .= 'W' unless($bst =~ /W/); + $log .="アタック!UAが上がった
    \n"; + }elsif($v == 2){ + $thp -= 25; + $log .="ソードダンス!$tnm に 25 の傷を与えた!
    \n"; + }elsif($v == 3){ + $bst .= 'S' unless($bst =~ /S/); + $log .= "シールド!防御力が上がった
    \n"; + }elsif($v == 4){ + $tud = 1; + $log .= "奥義 アーマーブレイク! $tnm のUDをゼロにした!
    \n"; + }elsif($v == 5){ + $v = int($max_hp-$hp); + $v = 50 if($v>50); + $hp += $v; + $log .="ハイヒール!体力を$v回復した!
    \n"; + }elsif($v == 6){ + $v = int($ua*3); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*3) if($bst =~ /W/); + $v = $v-$tud; + $v = 1 if($v<1); + $thp -= $v; + $log .="オーガソード!$tnm に $v の傷を与えた!
    \n"; + }elsif($v == 7){ + $v = int($ua*3); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*3) if($bst =~ /W/); + $v = 100 if($v < 100); + $thp -= $v; + $tmp -= $v; + $log .="秘奥義 アルティメットアタック!$tnm のHPとMPに $v の傷を与えた!
    \n"; + } + + }elsif($camp==4){ + + if($v == 0){ + $v = int($ua*2); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*2) if($bst =~ /W/); + $v = $v-$tud; + $v = 1 if($v<1); + $thp -= $v; + $log .="暗黒剣!$tnm に $v の傷を与えた!
    \n"; + }elsif($v == 1 ){ + $thp -= 20; + $v = int($max_hp-$hp); + $v = 10 if($v>10); + $hp += $v; + $log .="デッドクラウン!$tnm に20の傷を与え、更にその体力を僅かばかり吸い取った!
    \n"; + }elsif($v == 2){ + $tmp -= 30; + $log .="ナイトメア!$tnm の MP に 30 のダメージを与えた!
    \n"; + }elsif($v == 3){ + $thp -= 30; + $log .="黒炎!$tnm に 30 の傷を与えた!
    \n"; + }elsif($v == 4){ + $v = int($max_hp-$hp); + $v = 50 if($v>50); + $hp += $v; + $log .="絶心功!体力を$v回復した!
    \n"; + }elsif($v == 5){ + $bst .= 'W' unless($bst =~ /W/); + $log .="アタック!UAが上がった
    \n"; + }elsif($v == 6){ + $bst .= 'S' unless($bst =~ /S/); + $log .= "シールド!防御力が上がった
    \n"; + }elsif($v == 7){ + $v = int(rand(50)) + 200; + $thp -= $v; + $log .="開け地獄の門!$tnm に $v の傷を与えた!
    \n"; + } + }elsif($camp==5){ + + if($v == 0){ + $dh =int(rand(2)) ; + if($dh==0){ + $thp -= 30; + $log .="壱式!$tnm に 30 の傷を与えた!
    \n"; + }elsif($dh==1){ + $thp -= 20; + $log .="壱式! かわされた!!
    しかし、風圧により $tnm に 20 の傷を与えた!
    \n"; + } + }elsif($v == 1 ){ + $v = int($ua*1.5); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*1.5) if($bst =~ /W/); + $v = $v-$tud; + $v = 1 if($v<1); + $thp -= $v; + $log .="壱式・断!$tnm に $v の傷を与えた!
    \n"; + }elsif($v == 2){ + $dh =int(rand(2)) ; + if($dh==0){ + $thp -= 70; + $log .="弐式!$tnm に 70 の傷を与えた!
    \n"; + }elsif($dh==1){ + $thp -= 35; + $log .="弐式! かわされた!!
    しかし、風圧により $tnm に 35 の傷を与えた!
    \n"; + } + }elsif($v == 3){ + $dh =int(rand(3)) ; + if($dh==0){ + $v = int($ua*2.5); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*2.5) if($bst =~ /W/); + $v = $v-$tud; + $v = 1 if($v<1); + $thp -= $v; + $log .="弐式・裂!$tnm に $v の傷を与えた!
    \n"; + }elsif($dh==1){ + $v = int($ua*2.5); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*2.5) if($bst =~ /W/); + $v = $v-$tud; + $v = 1 if($v<1); + $thp -= $v; + $hp -= 15; + $log .="弐式・裂!$tnm に $v の傷を与えた!
    しかし技を制御しきれず\暴\走し $nm は15の傷を負った。
    \n"; + }elsif($dh==2){ + $v = int($ua*2.5); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*2.5) if($bst =~ /W/); + $v = $v-$tud; + $v = 1 if($v<1); + $thp -= $v; + $mp -= 15; + $log .="弐式・裂!$tnm に $v の傷を与えた!
    しかし精神に負荷がかかり $nm は15のMPを失った。
    \n"; + } + }elsif($v == 4){ + $dh =int(rand(2)) ; + if($dh==0){ + $thp -= 120; + $log .="参式!$tnm に 120 の傷を与えた!
    \n"; + }elsif($dh==1){ + $thp -= 60; + $log .="参式! かわされた!!
    しかし、風圧により $tnm に 60 の傷を与えた!
    \n"; + } + }elsif($v == 5){ + $dh =int(rand(3)) ; + if($dh==0){ + $v = int($ua*3.5); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*3.5) if($bst =~ /W/); + $v = $v-$tud; + $v = 1 if($v<1); + $thp -= $v; + $log .="参式・波!$tnm に $v の傷を与えた!
    \n"; + }elsif($dh==1){ + $v = int($ua*3.5); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*3.5) if($bst =~ /W/); + $v = $v-$tud; + $v = 1 if($v<1); + $thp -= $v; + $hp -= 30; + $log .="参式・波!$tnm に $v の傷を与えた!
    しかし技を制御しきれず\暴\走し $nm は30の傷を負った。
    \n"; + }elsif($dh==2){ + $v = int($ua*3.5); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*3.5) if($bst =~ /W/); + $v = $v-$tud; + $v = 1 if($v<1); + $thp -= $v; + $mp -= 30; + $log .="参式・波!$tnm に $v の傷を与えた!
    しかし精神に負荷がかかり $nm は30のMPを失った。
    \n"; + } + }elsif($v == 6){ + $dh =int(rand(2)) ; + if($dh==0){ + $thp -= 200; + $log .="零式!$tnm に 200 の傷を与えた!
    \n"; + }elsif($dh==1){ + $thp -= 100; + $log .="零式! かわされた!!
    しかし、風圧により $tnm に 100 の傷を与えた!
    \n"; + } + }elsif($v == 7){ + $dh =int(rand(3)) ; + if($dh==0){ + $v = int($ua*5); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*5) if($bst =~ /W/); + $v = $v-$tud; + $v = 1 if($v<1); + $thp -= $v; + $log .="零式・絶!$tnm に $v の傷を与えた!
    \n"; + }elsif($dh==1){ + $v = int($ua*6); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*6) if($bst =~ /W/); + $v = $v-$tud; + $v = 1 if($v<1); + $thp -= $v; + $hp -= 60; + $log .="零式・絶!$tnm に $v の傷を与えた!
    しかし技を制御しきれず\暴\走し $nm は60の傷を負った。
    \n"; + }elsif($dh==2){ + $v = int($ua*6); + $v = int(sqrt($ua)) + $ua if($bst =~ /W/); + $v = int($v*6) if($bst =~ /W/); + $v = $v-$tud; + $v = 1 if($v<1); + $thp -= $v; + $mp -= 60; + $log .="零式・絶!$tnm に $v の傷を与えた!
    しかし精神に負荷がかかり $nm は60のMPを失った。
    \n"; + } + } + + } + + } + + } + + $log .="
    \n"; + + # 勝利処理 + &battle_win if($thp <= 0 && $type eq '修行中'); + +} + +# 勝利処理 +sub battle_win{ + $G =int(rand(200))+((500*$tlv)-($lv*200)); + $v =$lv-5; + $z =$lv-10; + $G =int(rand(500))+1500 if($G>2000); + $G =int($G/2) if($tlv<$v); + $G =int($G/3) if($tlv<$z); + $G =1 if($G<1); + $gold +=$G; + $E =int((((((rand(5))+5)+$tlv)*2)*0.8)-$lv); + $E =1 if($E<1); + $E =int(rand(50))+250 if($E>300); + $exe+=$E; + $tm =0; + $thp=0; + $bst =''; + $bt =0; + $ck =0; + $cmd=-1; + $type=''; + $log .="$nm は $tnm を倒した!
    \n"; + $log .="$G の金 と $E の経験値を得た!
    \n"; + $tnm_p = $tnm; # 02/10 戦争時、攻めた国の人でない人がでてくることへの対処 + $tnm =''; +} + +# 攻撃--敵側 +sub attack_enemy{ + + $log .="\n"; + + if(($cmd != -1)&&($thp>0)){ + $log .="$tnm の攻撃! \n"; + $p=int(rand(6)); + + if($tcp==0){ + + if($lv < 10){$ch =int(rand(20));}#アンラッキーヒット率 + elsif($lv >= 10 && $lv < 15){$ch =int(rand(32));} + elsif($lv >= 15 && $lv < 25){$ch =int(rand(16));} + elsif($lv >= 25 && $lv < 40){$ch =int(rand(8));} + else{$ch =int(rand(4));} + + if($tlv>=5&&$tlv<10&&$tmp>=3&&$p==0){ + if($ch == 0){ + $v = int($tua*4); + $v = 1 if($v<1); + $hp -= $v; + $log .="必殺 マジン剣!痛恨の一撃! $nm は $v の傷を受けた!
    \n"; + $tmp-=3; + }else{ + $v = int($tua*2); + $v = 1 if($v<1); + $hp -= $v; + $log .="必殺 マジン剣!$nm は $v の傷を受けた!
    \n"; + $tmp-=3; + } + }elsif($tlv>=10&&$tmp>=9&&$p==1){ + if($ch == 0){ + $v = int($tua*4); + $v = 1 if($v<1); + $hp -= $v; + $log .="必殺 マジン剣!痛恨の一撃! $nm に $v の傷を与えた!
    \n"; + $tmp-=3; + }elsif($ch == 1){ + $thp += int($thp_max/3) if($thp < $thp_max - int($thp_max/3)); + $v = int($tua*2); + $v = 1 if($v<1); + $hp -= $v; + $log .="半回復!体力がある程度回復した!
    敵の猛攻撃! 必殺 マジン剣!$nm に $v の傷を与えた!
    \n"; + $tmp-=9; + }elsif($ch > 1){ + $ch2 =int(rand(3)); + if($ch2 == 0 || $ch2 == 1){ + $v = int($tua*2); + $v = 1 if($v<1); + $hp -= $v; + $log .="必殺 マジン剣!$nm は $v の傷を受けた!
    \n"; + $tmp-=3; + }else{ + $thp = $thp_max; + $log .="全回復!体力が完全に回復した!
    \n"; + $tmp-=9; + } + } + }else{ + # 敵キャラ通常攻撃処理 + &bogu_bt; + } + }elsif($tcp==1){ + if($tlv>=40&&$tmp>=90&&$p==0){ + $dh =int(rand(20)) ; + if($dh <= 3){ + $log .="秘奥義 魂砕き!!意識が遠のく…。
    \n"; + $hp=0; + $tmp-=90; + }elsif($dh == 4){ + $v = int($thp*0.9); + $thp -= $v; + $log .="秘奥義 魂砕き!!自爆!! $tnm は心が粉々に砕けちった!
    \n"; + $tmp-=90; + }elsif($dh >= 5 && $dh <= 12){ + $v = int(($ud+$ua)*2-$ud); + $hp -= $v; + $log .="秘奥義 魂砕き!!寸でのところで $nm は避けた!!
    しかし避けきれず $v の傷を負った!
    \n"; + $tmp-=90; + }else{ + $log .="失\敗\したようだ♪
    \n"; + $tmp-=90; + } + }elsif($tlv>=35&&$tmp>=60&&$p==1){ + $dh =int(rand(3)) ; + if($dh==0){ + $v = int($hp*0.8); + $hp -= $v; + $hp = 1 if($hp < 1); + $vv = int($tmp/4); + $tmp -= $vv; + $log .="奥義 鳳凰転生!!$nm は瀕死の状態に陥った!
    しかし余波を食らい $tnm は $vv の精神を失った。
    \n" if($thp <= 1); + $log .="奥義 鳳凰転生!!$nm は$vの傷を負った!
    しかし余波を食らい $tnm は $vv の精神を失った。
    \n"; + $tmp-=60; + }else{ + $v = int($hp*0.5); + $hp -= $v; + $hp = 1 if($hp < 1); + $log .="奥義 鳳凰転生!!$nm は瀕死の状態に陥った!
    \n" if($thp <= 1); + $log .="奥義 鳳凰転生!!$nm は $v の傷を負った!
    \n"; + $tmp-=60; + } + }elsif($tlv>=30&&$tmp>=21&&$p==2){ + $v = int($thp_max-$thp); + $v = 50 if($v>50); + $thp += $v; + $log .="絶心功!体力を$v回復した!
    \n"; + $tmp-=21; + }elsif($tlv>=20&&$tmp>=15&&$p==3){ + $hp -= 30; + $log .="炎蒼旋!$nm は 30 の傷を受けた!
    \n"; + $tmp-=15; + }elsif($tlv>=10&&$tmp>=9&&$p==4){ + $v = int($thp_max-$thp); + $v = 30 if($v>30); + $thp += $v; + $log .="生命功!体力を $v 回復してしまった!
    \n"; + $tmp-=9; + }elsif($tlv>=5&&$tmp>=6&&$p==5){ + $v = int($tua*1.5); + $v = $v-$ud; + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 1 if($v<1); + $hp -= $v; + $log .="必殺疾風剣!$nm は $v の傷を受けてしまった!
    \n"; + $tmp-=6; + }else{ + # 敵キャラ通常攻撃処理 + &bogu_bt; + } + }elsif($tcp==2){ + + if($tlv>=40&&$tmp>=90&&$p==0){ + $v = 200 + int(rand(150)) - $ud; + $hp -= $v; + $log .="黄昏よりも暗き者……血の流れより赤き者……
    (省略)
    ……等しく滅びを与えんことを! 龍破斬!!
    \n"; + $tmp-=85; + $log .="$nm は $v の傷を負った!
    \n"; + }elsif($tlv>=35&&$tmp>=45&&$p==2){ + $v = 140 + int(rand(60)) -$ud; + $hp -= $v; + $log .="時の流れに埋れし者……永久(とわ)の夢を継ぐ者……
    今汝の名において、穢れし者を浄化せよ・・・!!
    $nm は $v の傷を負った!
    \n"; + $tmp-=45; + }elsif($tlv>=20&&$tmp>=18&&$p==3){ + $hp -= 30; + $v = int($thp_max-$thp); + $v = 10 if($v>10); + $thp += $v; + $log .="セイントクロス!$nm は30の傷を受け、更にその体力を僅かばかり吸い取られた!
    \n"; + $tmp-=18; + }elsif($tlv>=15&&$tmp>=12&&$p==4){ + $v = int($thp_max-$thp); + $v = 30 if($v>30); + $thp += $v; + $log .="ヒール!体力を $v 回復してしまった!
    \n"; + $tmp-=12; + }elsif($tlv>=5&&$tmp>=6&&$p==5){ + $v = int($tua*1.5); + $v = $v-$ud; + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 1 if($v<1); + $hp -= $v; + $log .="バーティカルソード!$nm は $v の傷を受けてしまった!
    \n"; + $tmp-=6; + }else{ + # 敵キャラ通常攻撃処理 + &bogu_bt; + } + + }elsif($tcp==3){ + + if($tlv>=40&&$tmp>=85&&$p==0){ + $v = int($tua*3); + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 100 if($tua<2); + $v = 100 if($v < 100); + $hp -= $v; + $mp -= $v; + $log .="秘奥義 アルティメットアタック!$nm はHPとMPに $v のダメージを受けてしまった!
    \n"; + $tmp-=85; + }elsif($tlv>=30&&$tmp>=40&&$p==2){ + $v = int($tua*3); + $v = $v-$ud; + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 1 if($v<1); + $hp -= $v; + $log .="渾身の一撃!$nm は $v の傷を受けてしまった!
    \n"; + $tmp-=40; + }elsif($tlv>=25&&$tmp>=18&&$p==3){ + $v = int($thp_max-$thp); + $v = 50 if($v>50); + $thp += $v; + $log .="ハイヒール!体力を$v回復した!
    \n"; + $tmp-=18; + }elsif($tlv>=15&&$tmp>=12&&$p==4){ + $hp -= 25; + $log .="ソードダンス!$nm は 25 の傷を受けてしまった!
    \n"; + $tmp-=12; + }elsif($tlv>=5&&$tmp>=6&&$p==5){ + $hp -= 15; + $log .="ソードスラッシュ!$nm は 15 の傷を受けてしまった!
    \n"; + $tmp-=6; + }else{ + # 敵キャラ通常攻撃処理 + &bogu_bt; + } + + }elsif($tcp==4){ + + if($tlv>=40&&$tmp>=90&&$p==0){ + $v = int(rand(50)) + 200; + $hp -= $v; + $log .="開け地獄の門!$nm は $v の傷を受けた!
    \n"; + $tmp-=90; + }elsif($tlv>=20&&$tmp>=15&&$p==2){ + $hp -= 30; + $log .="黒炎!$nm は 30 の傷を受けた!
    \n"; + $tmp-=15; + }elsif($tlv>=15&&$tmp>=12&&$p==3){ + $mp -= 30; + $log .="ナイトメア!$nm のMPに30のダメージを与えた!
    \n"; + $tmp-=12; + }elsif($tlv>=10&&$tmp>=9&&$p==4){ + $hp -= 20; + $v = int($thp_max-$thp); + $v = 10 if($v>10); + $thp += $v; + $log .="デッドクラウン!$nm は20の傷を受け、更にその体力を僅かばかり吸い取られた!
    \n"; + $tmp-=9; + }elsif($tlv>=5&&$tmp>=9&&$p==5){ + $v = int($tua*2); + $v = $v-$ud; + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 1 if($v<1); + $hp -= $v; + $log .="暗黒剣!$nm は $v の傷を受けてしまった!
    \n"; + $tmp-=9; + }else{ + # 敵キャラ通常攻撃処理 + &bogu_bt; + } + + }elsif($tcp==5){ + + if($tlv>=40&&$tmp>=90&&$p==0){ + $dh =int(rand(3)) ; + if($dh==0){ + $v = int($tua*5); + $v = $v-$ud; + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 1 if($v<1); + $hp -= $v; + $log .="零式・裂!$nm は $v の傷を受けてしまった!
    \n"; + $tmp-=99; + }elsif($dh==1){ + $v = int($tua*6); + $v = $v-$ud; + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 1 if($v<1); + $hp -= $v; + $log .="零式・裂!$nm は $v の傷を受けてしまった!
    しかし技を制御しきれず\暴\走し $tnm は60の傷を負った。
    \n"; + $tmp-=99; + $thp-=60; + }elsif($dh==2){ + $v = int($tua*6); + $v = $v-$ud; + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 1 if($v<1); + $hp -= $v; + $log .="零式・裂!$nm は $v の傷を受けてしまった!
    しかし精神に負荷がかかり $tnm は60のMPを失った。
    \n"; + $tmp-=99; + $tmp-=60; + } + }elsif($tlv>=35&&$tmp>=40&&$p==1){ + $dh =int(rand(2)) ; + if($dh==0){ + $hp -= 200; + $log .="零式!$nm は 200 の傷を受けた!
    \n"; + $tmp-=60; + }elsif($dh==1){ + $hp -= 100; + $log .="零式! 身を翻し避けた!!
    しかし、風圧により $nm は 100 の傷を負った!
    \n"; + $tmp-=60; + } + }elsif($tlv>=30&&$tmp>=45&&$p==2){ + $dh =int(rand(3)) ; + if($dh==0){ + $v = int($tua*3.5); + $v = $v-$ud; + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 1 if($v<1); + $hp -= $v; + $log .="参式・波!$nm は $v の傷を受けてしまった!
    \n"; + $tmp-=30; + }elsif($dh==1){ + $v = int($tua*3.5); + $v = $v-$ud; + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 1 if($v<1); + $hp -= $v; + $log .="参式・波!$nm は $v の傷を受けてしまった!
    しかし技を制御しきれず\暴\走し $tnm は30の傷を負った。
    \n"; + $tmp-=30; + $thp-=30; + }elsif($dh==2){ + $v = int($tua*3.5); + $v = $v-$ud; + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 1 if($v<1); + $hp -= $v; + $log .="参式・波!$nm は $v の傷を受けてしまった!
    しかし精神に負荷がかかり $tnm は30のMPを失った。
    \n"; + $tmp-=30; + $tmp-=30; + } + }elsif($tlv>=25&&$tmp>=30&&$p==3){ + $dh =int(rand(2)) ; + if($dh==0){ + $hp -= 120; + $log .="参式!$nm は 120 の傷を受けた!
    \n"; + $tmp-=30; + }elsif($dh==1){ + $hp -= 60; + $log .="参式! 身を翻し避けた!!
    しかし、風圧により $nm は 60 の傷を負った!
    \n"; + $tmp-=30; + } + }elsif($tlv>=20&&$tmp>=30&&$p==4){ + $dh =int(rand(3)) ; + if($dh==0){ + $v = int($tua*2.5); + $v = $v-$ud; + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 1 if($v<1); + $hp -= $v; + $log .="弐式・裂!$nm は $v の傷を受けてしまった!
    \n"; + $tmp-=20; + }elsif($dh==1){ + $v = int($tua*2.5); + $v = $v-$ud; + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 1 if($v<1); + $hp -= $v; + $log .="弐式・裂!$nm は $v の傷を受けてしまった!
    しかし技を制御しきれず\暴\走し $tnm は15の傷を負った。
    \n"; + $tmp-=20; + $thp-=15; + }elsif($dh==2){ + $v = int($tua*2.5); + $v = $v-$ud; + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 1 if($v<1); + $hp -= $v; + $log .="弐式・裂!$nm は $v の傷を受けてしまった!
    しかし精神に負荷がかかり $tnm は15のMPを失った。
    \n"; + $tmp-=20; + $tmp-=15; + } + }elsif($tlv>=15&&$tmp>=20&&$p==5){ + $dh =int(rand(2)) ; + if($dh==0){ + $hp -= 70; + $log .="弐式!$nm は 70 の傷を受けた!
    \n"; + $tmp-=20; + }elsif($dh==1){ + $hp -= 35; + $log .="弐式! 身を翻し避けた!!
    しかし、風圧により $nm は 35 の傷を負った!
    \n"; + $tmp-=20; + } + }elsif($tlv>=10&&$tmp>=15&&$p==6){ + $v = int($tua*1.5); + $v = $v-$ud; + $v -= int(sqrt($ud)) if($bst =~ /S/); + $v = 1 if($v<1); + $hp -= $v; + $log .="壱式・断!$nm は $v の傷を受けてしまった!
    \n"; + $tmp-=10; + }elsif($tlv>=5&&$tmp>=10&&$p==7){ + $dh =int(rand(2)) ; + if($dh==0){ + $hp -= 30; + $log .="参式!$nm は 120 の傷を受けた!
    \n"; + $tmp-=10; + }elsif($dh==1){ + $hp -= 20; + $log .="参式! 身を翻し避けた!!
    しかし、風圧により $nm は 20 の傷を負った!
    \n"; + $tmp-=10; + } + }else{ + # 敵キャラ通常攻撃処理 + &bogu_bt; + } + } + + } + + $log .="
    \n"; + + # 負け処理 + &battle_lost if($hp <= 0 && $type eq '修行中'); + +} + +# 負け処理 +sub battle_lost{ + $tm = 0; + $cmd=-1; + $bst =''; + $bt =0; + $ck =0; + $hp =0; + $type=''; + $G=int(rand(10))+1; + $E=int(rand(5))+1; + $gold+=$G; + $exe+=$E; + $log .="あなたは $tnm に敗れ去った…
    \n"; + $log .="$G の金 と $E の経験値を得た
    \n"; + $tnm_p = $tnm; # 02/10 戦争時、攻めた国の人でない人がでてくることへの対処 + $tnm=''; +} + +#------------------------------------------------------------------------------- +# 敵キャラ通常攻撃処理 +sub bogu_bt{ + $v = $tua_a-$ud_a; + $v -= int(sqrt($tud)) if($bst =~ /S/); + + $v = 1 if($v<1); + + # 通常ダメージ補正 << 強者が弱者ばかり相手にしないように + if($lv <= 15){$v += int((rand(2))+$v);} + elsif($lv > 15 && $lv <= 30){$v += int((rand(4))+$v);} + else{$v += int((rand(8))+$v);} + + if($tdg_a>0){#武具呼び出し + $log .="$dg_data[$tdg_a][1] で反撃!!
    $nm は $v の傷を負った!
    \n"; + $hp -= $v; + }else{ + $v = int((rand(4))+$v); + $hp -= $v; + $log .="$v の反撃を受けた!
    \n"; + } + + if($df_a && $df_cnt){#防具呼び出し + $df_cnt--; + if($df_cnt<=0){ + $log .="$tnmの鋭い攻撃により $nmの $df_data[$df_a][1] が壊れた!!
    \n"; + $df_a = $df_cnt = 0; + } + } +} + +#------------------------------------------------------------------------------- +#戦闘時のセレクトメニュー表示 +sub spell_sp { + $log2 .=""; +} + +#------------------------------------------------------------------------------- +#階級技(プレイヤー用) +sub st_cm_k { + if($v == 8 && $camp > 0){ + $v = int(($ua+$ud)*2)-$tud; + $v = 1 if($v<1); + $thp -= $v; + $log .="$kspell[0]!$tnm に $v の傷を与えた!
    \n"; + $mp -= $ksp_mp[0]; + }elsif($v == 9 && $camp > 0){ + $v = int(($ua+$ud)*2.5)-$tud; + $v = 1 if($v<1); + $thp -= $v; + $log .="$kspell[1]!$tnm に $v の傷を与えた!
    \n"; + $mp -= $ksp_mp[1]; + }elsif($v == 10 && $camp > 0){ + $v = int(($ua+$ud)*3)-$tud; + $v = 1 if($v<1); + $thp -= $v; + $log .="$kspell[2]!$tnm に $v の傷を与えた!
    \n"; + $mp -= $ksp_mp[2]; + }elsif($v == 11 && $camp > 0){ + $v = int(($ua+$ud)*4)-$tud; + $v = 1 if($v<1); + $thp -= $v; + $log .="$kspell[3]!$tnm に $v の傷を与えた!
    \n"; + $mp -= $ksp_mp[3]; + } +} + +#------------------------------------------------------------------------------- +#道具(PC用) +sub dogu_k { + my $v; + + if($di_a == 2){ + $hp = $max_hp; + $mp = $max_mp; + $di_cnt=0; + $di_a=0; + $log .="$nm は $di_data[2][1] を使った! 体力と魔力が 全回復した!
    \n"; + }elsif($di_a == 3){ + $hp = $max_hp; + $di_cnt=0; + $di_a=0; + $log .="$nm は $di_data[3][1] を使った! 体力が 全回復した!
    \n"; + }elsif($di_a == 4){ + $mp = $max_mp; + $di_cnt=0; + $di_a=0; + $log .="$nm は $di_data[4][1] を使った! 魔力が 全回復した!
    \n"; + }elsif($di_a == 11){ + if(int($hp+80) < $max_hp){ + $v=80; + $hp += $v; + }else{ + $v=$max_hp-$hp; + $hp += $v; + } + if(int($mp+60) < $max_mp){ + $vv=60; + $mp += $vv; + }else{ + $vv=$max_mp-$mp; + $mp += $vv; + } + $di_cnt=0; + $di_a=0; + $log .="$nm は $di_data[11][1]を使った!
    体力が $v 回復し、さらに精神が $vv 回復した!
    \n"; + }elsif($di_a == 12){ + if(int($mp+80) < $max_mp){ + $v=80; + $mp += $v; + }else{ + $v=$max_mp-$mp; + $mp += $v; + } + $di_cnt=0; + $di_a=0; + $log .="$nm は $di_data[12][1] を使った! 精神が $v 回復した!
    \n"; + }elsif($di_a == 13){ + if(int($mp+40) < $max_mp){ + $v=40; + $mp += $v; + }else{ + $v=$max_mp-$mp; + $mp += $v; + } + $di_cnt=0; + $di_a=0; + $log .="$nm は $di_data[13][1] を使った! 精神が $v 回復した!
    \n"; + }elsif($di_a == 14){ + if(int($hp+100) < $max_hp){ + $v=100; + $hp += $v; + }else{ + $v=$max_hp-$hp; + $hp += $v; + } + $di_cnt=0; + $di_a=0; + $log .="$nm は $di_data[14][1] を使った! 体力が $v 回復した!
    \n"; + }elsif($di_a == 15){ + if(int($hp+50) < $max_hp){ + $v=50; + $hp += $v; + }else{ + $v=$max_hp-$hp; + $hp += $v; + } + $di_cnt=0; + $di_a=0; + $log .="$nm は $di_data[15][1] を使った! 体力が $v 回復した!
    \n"; + } +} + + + + + +1; diff --git a/inc/ore_sub-bbs.cgi b/inc/ore_sub-bbs.cgi new file mode 100644 index 0000000..ff7d3b7 --- /dev/null +++ b/inc/ore_sub-bbs.cgi @@ -0,0 +1,305 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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.1 +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#=============================================================================== +# 各種掲示板共通設定項目 + +require './jcode.pl'; # jcode.plのパス + +$ore_game = './ore_.cgi'; # 罪と罰++本体のパス +$index = './index.cgi'; # 罪と罰++トップページ +$usrdata = "./usrdata/"; # キャラデータ格納ディレクトリ。 + +$no_window = 1; # 現状維持・拘束時間以外の他窓禁止(0:なし 1:あり)[負荷対策] + +# 各国設定情報 +@camp_info =( ['無所属', '#eeeeee'], + ['アルメリア王国', '#ee9999'], + ['フラリン教国', '#00eeee'], + ['イギス連合国', '#88ee88'], + ['ソーディナ帝国', '#ffccff'], + ['ヤマト神国', '#55bbff']); + +# 称号 +@sogo_p =('----','覇者','英雄','借金王','鬼畜',' ',' ',' ',' ',' ','管理人'); + +# デバックモード +# なし:PC・モバイル両対応 +# pc :PC限定モード(モバイル非対応) +# mv :モバイル固定モード(PC上でモバイル画面をエミュレート表示) +$mv_mode = ''; + +# 機種別設定 +if( $ENV{'HTTP_USER_AGENT'}=~/DoCoMo/ || + $ENV{'HTTP_USER_AGENT'}=~/UP\.Browser/ || + $ENV{'HTTP_USER_AGENT'}=~/J-PHONE/ || + $ENV{'HTTP_USER_AGENT'}=~/ASTEL/ || + $ENV{'HTTP_X_JPHONE_MSNAME'} || $mv_mode eq 'mv'){ + + $mv_mode= 'mv'; # モバイル用フラグ(変更不可) + $method = "GET"; # フォームメソッド(モバイル) +}else{ + + $mv_mode= 'pc'; # PC用フラグ(変更不可) + $method = "POST"; # フォームメソッド(PC) + + # スタイルシート + $css =< + + +EOM + +} + +# ホスト名取得モード +# --> 0 : $ENV{'REMOTE_HOST'} で取得できる場合 +# --> 1 : gethostbyaddr で取得できる場合 +$get_remotehost = 1; + +# 他サイトから投稿排除時に指定 (http://から書く) +$base_url = ""; + +# アクセス制限(ホスト名もしくはIPアドレスを記述) +@deny = ( + "anonymizer.com", + "cache*.*.interlog.com", + "", + "" + ); + + +#=============================================================================== +# 以下処理 基本的にこれ以下はいじらないように。 + +#------------------------------------------------------------------------------- +# 参加者データ個別読み込み +sub mandata_open{ + + open(IN,"$usrdata$id\.cgi") || &error("Open Error : $usrdata$id\.cgi"); + $dat = ; + close(IN); + + %DAT = ''; + my @prats = split(/,/,$dat); + foreach (0 .. $#prats){ + my($key,$v) = split(/;/,$prats[$_]); + $DAT{$key} = $v; + } + + if($pw ne $DAT{'pw'}){ &error("パスワードが間違ってます"); } + + if($no_window){ + &error("現在のイベントを終了してからご利用ください。") if($DAT{'pr'}<=0 && $DAT{'type'}); + } + +} + +#------------------------------------------------------------------------------- +# デコード処理 +sub decode { + local($buffer, @pairs, $name, $value); + $post_flag=0; + if($ENV{'REQUEST_METHOD'} eq "POST"){ + $post_flag=1; + &error("投稿量が大きすぎます") if($ENV{'CONTENT_LENGTH'}>8192); + read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); + }else{ + $buffer = $ENV{'QUERY_STRING'}; + &error("投稿量が大きすぎます") if(length($buffer)>7500) + } + @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; + + # 文字コードをシフトJIS変換 + &jcode'convert(*value, "sjis", "", "z"); + + $value =~ s/\&/&\;/g; + $value =~ s/\;/;\;/g; + $value =~ s/\,/,\;/g; + + # タグ処理 + if ($tagkey) { + $value =~ s///g; + $value =~ s/<>/<>/g; + } else { + $value =~ s//>/g; + $value =~ s/\"/"/g; + } + + # 改行等処理 + if ($name eq "comment" && $br_mode) { + $value =~ s/\r\n/
    /g; + $value =~ s/\r/
    /g; + $value =~ s/\n/
    /g; + } else { + $value =~ s/\r//g; + $value =~ s/\n//g; + } + + # 荒らし処理 1 + $value =~ s/(
    ){4,}//g; + $value =~ s/( | ){6,}//g; + + # 記号置換え + $value =~ s/\///\;/g; + $value =~ s/\./.\;/g; + $value =~ s/cgi/c\;g\;i\;/g; + + $in{$name} = $value; + } + + &no_link($in{'comment'}) if($nolink); + + $com = $in{'comment'}; if(length($in{'comment'})>$com_limit) { &error("文字数エラーです 1"); } + $mode = $in{'mode'}; if(length($in{'mode'})>10) { &error("文字数エラーです 2"); } + $pw = $in{'pw'}; if(length($in{'pw'})>8 || !$in{'pw'}) { &error("文字数エラーです 3"); } + $id = $in{'id'}; if(length($in{'id'})>24 || !$in{'id'}) { &error("文字数エラーです 4"); } + $ids = $in{'ids'}; if(length($in{'ids'})>12) { &error("文字数エラーです 5"); } + $rd = $in{'rd'}; if(length($in{'rd'})>1) { &error("文字数エラーです 6"); } + + if ($base_url) { + $ref_url = $ENV{'HTTP_REFERER'}; + $ref_url =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; + if ($ref_url !~ /$base_url/i) { &error("不正なアクセスです"); } + } +} + +#------------------------------------------------------------------------------- +# エラー処理 +sub error { + if (-e $lockfile) { unlink($lockfile); } + + &header(1); + print "

    ERROR !

    \n"; + print "

    $_[0]\n"; + print "


    \n"; + ©right; + exit; +} + +#------------------------------------------------------------------------------- +# ロックファイルの生成 +sub lock { + local($lflag) = 0; + foreach (1 .. 5) { + if (-e $lockfile) { sleep(1); } + else { + open(LOCK,">$lockfile") || &error("Can't create $lockfile"); + close(LOCK); + $lflag = 1; + last; + } + } + if ($lflag == 0) { &error("LOCK is BUSY"); } +} + +#------------------------------------------------------------------------------- +# アクセスチェック(アクセス拒否) +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); + $hour= "0$hour" if($hour<10); + $min = "0$min" if($min<10); + $sec = "0$sec" if($sec<10); + $month++; + $month = "0$month" if(month<10); + @week=('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); + $date = "$month/$mday($week[$wday]) $hour:$min"; + srand($time); +} + +#------------------------------------------------------------------------------- +# プレイ規制 +sub safetime { + foreach (0 .. $#safetime){ + &error("プレイ規制時間中です。暫くお待ち下さい。") if $hour eq $safetime[$_]; + } +} + +#------------------------------------------------------------------------------- +# URL排除 +sub no_link { + $_[0] =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+)/$1/g; +} + +#------------------------------------------------------------------------------- +# 削除変更不可 必ず表示すること +#著作権表示(削除・変更不可) +sub copyright{ + if($mv_mode eq 'mv'){ + print <<"EOM"; +

    +過去の栄光 $ver
    +BLANK BOARD[ねっと遊園地♪] + + +EOM + }else{ + print <<"EOM"; + + + +EOM + } +} + + + + +1;#削除不可 diff --git a/inc/ore_sub-changes.cgi b/inc/ore_sub-changes.cgi new file mode 100644 index 0000000..d75b70d --- /dev/null +++ b/inc/ore_sub-changes.cgi @@ -0,0 +1,142 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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.2 +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# 仕官メニュー +sub changes{ + + if(!$type){ + + &usrdata_read; + &usrdata_open; + require './inc/ore_sub-members-p1.cgi';&member_list; + + $log .= "参加者集計を更新します。
    \n"; + $log .= "全参加者:$all_mem
    $cmp[0]:$c0
    $cmp[1]:$c1/$c1a
    $cmp[2]:$c2/$c2a
    $cmp[3]:$c3/$c3a
    $cmp[4]:$c4/$c4a
    $cmp[5]:$c5/$c5a
    \n" if($mv_mode eq 'pc'); + $tm=0; + $type='仕官'; + + &changes_menu1; + + } + + &dat_write; +} + +sub changes_menu1{ + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + + $log2 .=qq|$td_end
    \n|; +} + +sub changes_menu2{ + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; +} + +#------------------------------------------------------------------------------- +# 仕官処理 +sub changes_exe{ + + if(!$tm){ + + $log .= "現在の所属から新たな所属へ
    \n"; + $tm=1; + $type='仕官'; + + &changes_menu2; + + }elsif($tm==1){ + + if($cmd<=-1 || $cmd>$#cmp){ + $log .= "やめておきます
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }elsif($cmd>=0 && (($c1 >= $c1a && $cmd == 1)||($c2 >= $c2a && $cmd == 2)||($c3 >= $c3a && $cmd == 3)||($c4 >= $c4a && $cmd == 4)||($c5 >= $c5a && $cmd == 5))){ + for($i=1,$j=1;$i<=$#cmp;$i++,$j++){ + if($cmd==$j){ + $log .= "$cmp[$i] は定員一杯で入国できません
    \n"; + } + } + $tm = $cmd = 0; + $type=''; + &call_main_st; + }elsif($lv < $clv){ + $log .= "仕官はレベル $clv からです。
    まずは修行で己を鍛えてください。
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }else{ + + if($lv >= 20 && $camp && $cmd){#レベルが15以上で先が無所属以外で元が無所属以外(国→国) + $gold -=(15-$rank)*(int($lv/4))*8; + $log .= "国家移籍料金として金貨 $zx を支払います。
    \n"; + + my $zy = $rank*(int($lv/10))*4; + if($camp == 1){$cg1 += $zy;} + elsif($camp == 2){$cg2 += $zy;} + elsif($camp == 3){$cg3 += $zy;} + elsif($camp == 4){$cg4 += $zy;} + elsif($camp == 5){$cg5 += $zy;} + $log .= "$cmp[$camp] の国家\予\算が $zy 上昇した。
    \n"; + + }elsif($lv >= 20 && !$cmd){#レベルが15以上で先が無所属(無or国→無) + + $gold -=(15-$rank)*(int($lv/4))*8; + $log .= "国家移籍料金として金貨 $zx を支払います。
    \n"; + + my $zy = $rank*(int($lv/10))*4; + if($camp == 1){$cg1 += $zy;} + elsif($camp == 2){$cg2 += $zy;} + elsif($camp == 3){$cg3 += $zy;} + elsif($camp == 4){$cg4 += $zy;} + elsif($camp == 5){$cg5 += $zy;} + $log .= "$cmp[$camp] の国家\予\算が $zy 上昇した。
    \n"; + + } + + $camp = $cmd; + #レベルによる仕官時のマイナス値 + $rank-=($lv > 40)? int(rand(3))+3 : int(rand(4))+1; + + $rank=1 if($rank<1); + $rank=0 if(!$camp); + $log .= "$cmp[$camp] へと所属を変え、$cl[$rank] の階級が与えられた
    \n"; + $roku=$time; + + $tm = $cmd = 0; + $type=''; + &call_main_st; + } + } + + &write_data; + +} + + + + + +1; diff --git a/inc/ore_sub-infomation_mv.cgi b/inc/ore_sub-infomation_mv.cgi new file mode 100644 index 0000000..0951f9b --- /dev/null +++ b/inc/ore_sub-infomation_mv.cgi @@ -0,0 +1,125 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# 情報 +sub infomation_com{ + $log .= qq|現在の $cmp[$camp] の将兵一覧
    \n|; + + local(@usrfile,@tdat); + + # 参加者データファイル一覧取得/読み込み + &usrdata_read; + &usrdata_open; + require './inc/ore_sub-members-p1.cgi';&member_list; + + if($camp eq'' || $camp < 1 || $camp > 5){ + + foreach (0 .. $#tdat){ + + %R = ''; + my @prats = split(/,/,$tdat[$_]); + foreach $prats (@prats){ + my($y,$x) = split(/;/,$prats); + $R{$y} = $x; + } + + $NM_V = $R{'nm'}; + $HP_MAX_V = $R{'max_hp'}; + $MP_MAX_V = $R{'max_mp'}; + $LV_V = $R{'rank'}; + $TM_V = $R{'lv'}; + $UA_V = $R{'ua'}; + $UD_V = $R{'ud'}; + $LR_V = $R{'lr'}; + $AG_V = $R{'ag'}; + $DG_A_V = $R{'dg_a'};#武具 + $DF_A_V = $R{'df_a'};#防具 + $SOGO_V = $R{'sogo'};#称号 + $SEI_V = $R{'sei'};#性別 + $MES_V = $R{'info_mes'}; + + $TYPE_V = ($R{'type'}) ? "$R{'type'}" : "待機中"; + + $cnt = $_+1; + + if($R{'camp'} == 0){ + $log .=qq|$cnt位 Lv$TM_V|; + + # 称号 + $log .= ($SOGO_V > 0) ? "$NM_V [$sogo_p[$SOGO_V]]" : "$NM_V"; + + $log .=qq|HP$HP_MAX_V/MP$MP_MAX_V/UA$UA_V/UD$UD_V/LR$LR_V/AG$AG_V $cl[$LV_V]
    \n|; + + } + } + + }else{ + + foreach(0 .. $#tdat){ + %R = ''; + my @prats = split(/,/,$tdat[$_]); + foreach $prats (@prats){ + my($y,$x) = split(/;/,$prats); + $R{$y} = $x; + } + + if($camp == $R{'camp'}){ + $NM_V{$R{'nm'}} = $R{'nm'}; + $HP_MAX_V{$R{'nm'}} = $R{'max_hp'}; + $MP_MAX_V{$R{'nm'}} = $R{'max_mp'}; + $LV_V{$R{'nm'}} = $R{'rank'}; + $TM_V{$R{'nm'}} = $R{'lv'}; + $UA_V{$R{'nm'}} = $R{'ua'}; + $UD_V{$R{'nm'}} = $R{'ud'}; + $LR_V{$R{'nm'}} = $R{'lr'}; + $AG_V{$R{'nm'}} = $R{'ag'}; + $DG_A{$R{'nm'}} = $R{'dg_a'};#武具 + $DF_A{$R{'nm'}} = $R{'df_a'};#防具 + $SOGO_V{$R{'nm'}} =$R{'sogo'};#称号 + $SEI_V{$R{'nm'}} =$R{'sei'};#性別 + $MES_V{$R{'nm'}} =$R{'info_mes'}; + + $TYPE_V{$R{'nm'}} = ($R{'type'}) ? "$R{'type'}" : "待機中"; + + $N_M{$R{'nm'}} = $_; + } + } + + $l = $rk = 1; + foreach $nm (sort sclv keys(%LV_V)){ + $lv_v = $LV_V{$nm}; + next if($lv_v<=0); + if($lv_v<$prv_lv){ $rk = $l; } + + $log .="$rk位 Lv$TM_V{$nm} "; + + #称号 + $log .= ($SOGO_V{$nm} > 0) ? "$NM_V{$nm} [$sogo_p[$SOGO_V{$nm}]]" : "$NM_V{$nm}"; + + $log .=qq| HP$HP_MAX_V{$nm}/MP$MP_MAX_V{$nm}/UA$UA_V{$nm}/UD$UD_V{$nm}/LR$LR_V{$nm}/AG$AG_V{$nm} $cl[$lv_v]
    \n|; + + $prv_lv = $lv_v; + $l++; + } + } + + $tm = $cmd = 0; + $layout_flag=1; + &call_main_st; +} + + + + + +1;#削除不可 diff --git a/inc/ore_sub-infomation_pc.cgi b/inc/ore_sub-infomation_pc.cgi new file mode 100644 index 0000000..91ea833 --- /dev/null +++ b/inc/ore_sub-infomation_pc.cgi @@ -0,0 +1,164 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # +# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # +# BLANK BOARD [ http://pom.to/ ] # +#-----------------------------------------------------------# +# 情報 PC用サブルーチン Version 1.0 # +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# 情報 +sub infomation_com{ + $log .= qq|現在の $cmp[$camp] に所属する将兵一覧

    \n|; + + if($com){ + if($com =~ /:/){ &error("名前に不正な文字( : )が含まれています。",1); } + if($com =~ /;/){ &error("名前に不正な文字( ; )が含まれています。",1); } + if($com =~ /,/){ &error("名前に不正な文字( , )が含まれています。",1); } + if($com =~ /"/){ &error("名前に不正な文字( \" )が含まれています。",1); } + if($com =~ /'/){ &error("名前に不正な文字( ' )が含まれています。",1); } + if($com =~ /\//){ &error("名前に不正な文字( / )が含まれています。",1); } + if(length($com)>80){ &error("全角40文字までです。",1); } + $com =~ s/\n//g; + $info_mes=$com; + } + + local(@usrfile,@tdat); + + # 参加者データファイル一覧取得/読み込み + &usrdata_read; + &usrdata_open; + require './inc/ore_sub-members-p1.cgi';&member_list; + + if($camp eq'' || $camp < 1 || $camp > 5){ + + $log .= "\n"; + + foreach (0 .. $#tdat){ + + %R = ''; + my @prats = split(/,/,$tdat[$_]); + foreach $prats (@prats){ + my($y,$x) = split(/;/,$prats); + $R{$y} = $x; + } + + $NM_V = $R{'nm'}; + $HP_MAX_V = $R{'max_hp'}; + $MP_MAX_V = $R{'max_mp'}; + $LV_V = $R{'rank'}; + $TM_V = $R{'lv'}; + $UA_V = $R{'ua'}; + $UD_V = $R{'ud'}; + $LR_V = $R{'lr'}; + $AG_V = $R{'ag'}; + $DG_A_V = $R{'dg_a'};#武具 + $DF_A_V = $R{'df_a'};#防具 + $SOGO_V = $R{'sogo'};#称号 + $SEI_V = $R{'sei'};#性別 + $MES_V = $R{'info_mes'}; + + $TYPE_V = ($R{'type'}) ? "$R{'type'}" : "待機中"; + + $cnt = $_+1; + + if($R{'camp'} == 0){ + $log .=qq|$TYPE_V\n"; + + $log .=qq|\n|; + } + } + + }else{ + + foreach(0 .. $#tdat){ + %R = ''; + my @prats = split(/,/,$tdat[$_]); + foreach $prats (@prats){ + my($y,$x) = split(/;/,$prats); + $R{$y} = $x; + } + + if($camp == $R{'camp'}){ + $NM_V{$R{'nm'}} = $R{'nm'}; + $HP_MAX_V{$R{'nm'}} = $R{'max_hp'}; + $MP_MAX_V{$R{'nm'}} = $R{'max_mp'}; + $LV_V{$R{'nm'}} = $R{'rank'}; + $TM_V{$R{'nm'}} = $R{'lv'}; + $UA_V{$R{'nm'}} = $R{'ua'}; + $UD_V{$R{'nm'}} = $R{'ud'}; + $LR_V{$R{'nm'}} = $R{'lr'}; + $AG_V{$R{'nm'}} = $R{'ag'}; + $DG_A{$R{'nm'}} = $R{'dg_a'};#武具 + $DF_A{$R{'nm'}} = $R{'df_a'};#防具 + $SOGO_V{$R{'nm'}} =$R{'sogo'};#称号 + $SEI_V{$R{'nm'}} =$R{'sei'};#性別 + $MES_V{$R{'nm'}} =$R{'info_mes'}; + + $TYPE_V{$R{'nm'}} = ($R{'type'}) ? "$R{'type'}" : "待機中"; + + $N_M{$R{'nm'}} = $_; + } + } + + $log .=qq|
    順位LV名前体力/精神攻撃/防御/指揮/敏捷武具防具階級行動
    $cnt$TM_V|; + + # 称号 + $log .= ($SOGO_V > 0) ? "$NM_V [$sogo_p[$SOGO_V]]" : "$NM_V"; + + $log .="$HP_MAX_V/$MP_MAX_V$UA_V/$UD_V/$LR_V/$AG_V$dg_data[$DG_A_V][1]$df_data[$DF_A_V][1]$cl[$LV_V]
    >> 備考: $seibetu[$SEI_V]    格言: $MES_V
    \n|; + + $l = $rk = 1; + foreach $nm (sort sclv keys(%LV_V)){ + $lv_v = $LV_V{$nm}; + next if($lv_v<=0); + if($lv_v<$prv_lv){ $rk = $l; } + + $log .="\n"; + + $log .=qq|\n|; + + $prv_lv = $lv_v; + $l++; + } + } + + $log .="
    順位LV名前体力/精神攻撃/防御/指揮/敏捷武具防具階級行動
    $rk$TM_V{$nm}"; + + #称号 + $log .= ($SOGO_V{$nm} > 0) ? "$NM_V{$nm} [$sogo_p[$SOGO_V{$nm}]]" : "$NM_V{$nm}"; + + $log .="$HP_MAX_V{$nm}/$MP_MAX_V{$nm}$UA_V{$nm}/$UD_V{$nm}/$LR_V{$nm}/$AG_V{$nm}$dg_data[$DG_A{$nm}][1]$df_data[$DF_A{$nm}][1]$cl[$lv_v]$TYPE_V{$nm}
    >> 備考: $seibetu[$SEI_V{$nm}]    格言: $MES_V{$nm}
    \n"; + + $log.=<
    +
    +
    + + + + + + +
    +コメントは全角40文字まで。 +
    +
    +EOM + + $log .="\n"; + + $tm = $cmd = 0; + $layout_flag=1; + &call_main_st; +} + + + + + +1;#削除不可 diff --git a/inc/ore_sub-main.cgi b/inc/ore_sub-main.cgi new file mode 100644 index 0000000..6243f57 --- /dev/null +++ b/inc/ore_sub-main.cgi @@ -0,0 +1,152 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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.1 +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# メインメニュー +sub main_st { # メイン + + # 回復 + + $hrg=int($time-$la); + $hrg=int($hrg/$hrg_time); + $hrg=0 if($hrg<1); + $d=$time; + $d=$d-$roku; + + if($ck!=1){ + for($x=0;$x<$hrg;++$x){ + $hp++; + $mp++; + } + } + + $hp=$max_hp if($hp>$max_hp); + $mp=$max_mp if($mp>$max_mp); + + # 給料 + + if($camp>0&&$d>21600){ + $v=$g_p[$rank]; + $v=int($v/5); + $v=int($my_cn*0.8)+$v; + $gold+=$v; + $log .= " $v の給与が支給された
    "; + $d-=21600; + $roku=$time; + } + + # データリセット + + if( $cn1>=$data_reset|| + $cn2>=$data_reset|| + $cn3>=$data_reset|| + $cn4>=$data_reset|| + $cn5>=$data_reset){ + $log .="全国統一が成された!
    国力が初期化されます
    \n"; + require './inc/ore_sub-main_reset.cgi';&reset_cdat; + } + if($set<$time){ + require './inc/ore_sub-main_reset.cgi';&reset_time_limit; + } + + # 経験 + + $next_rank=int(($rank*$rank)*3); + + if($rank_exe>=$next_rank){ + if($camp!=0&&$rank<14){ + $log .="日頃の仕事ぶりが認められ階級があがった
    \n"; + $rank++; + $rank_exe-=$next_rank; + } + } + + if($exe>$next_lv){ + $log .="経験を積みより強く成長した
    \n"; + $lv++; + $a =int(rand(2)); + $max_hp +=int($a); + $b =int(rand(2)); + $max_mp +=int($b); + $w =int(rand(2)); + $ua +=int($w); + $d =int(rand(2)); + $ud +=int($d); + $l =int(rand(2)); + $lr +=int($l); + + if($lv<=5){$gg=2;} + if($lv<=10){$gg=1;} + $g =int(rand(2)+$gg); + $ag +=int($g); + + $exe-=$next_lv; + $log .="体力が$a上がった
    精神力が$b上がった
    攻撃が$w上がった
    防御が$d上がった
    指揮が$l上がった
    敏捷が$g上がった
    \n"; + } + + # アナウンス + + if($mes && $pr<1){ + $log .="$mes
    \n"; + $mes=''; + } + + # 内政義務制 + if($act_cnt>=$act_cnt_limit && $camp){ + $log .= "行動セッションが限界に達しています。一度内政を行ってください。
    \n"; + $tm=0; + }elsif($act_cnt>=$act_cnt_limit && !$camp){ + $log .= "行動セッションが限界に達しています。休憩してください。
    \n"; + $pr=int($GMT/2); + $tm=0; + # 行動カウントのリセット(無条件) + $act_cnt=0; + } + + # メインコマンド + my @c = ('現状維持','修業','内政','戦争','能力','仕官','情報','討伐','軍事'); + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + &write_data; + +} + +#------------------------------------------------------------------------------- +# 拘束時間 +sub wt_st { + $whour = int($pr/3600); + $wmin = int(($pr%3600)/60); + $wsec = $pr%60; + if($whour>0){ + $wmin = "0$wmin" if($wmin<10); + $log .="行動中・・・あと$whour時間$wmin分\n"; + }elsif($wmin>0){ + $wsec = "0$wsec" if($wsec<10); + $log .="行動中…あと$wmin分\n"; + }else{ + $log .="行動中…あと$wsec秒\n"; + } +} + + + + + +1; diff --git a/inc/ore_sub-main_reset.cgi b/inc/ore_sub-main_reset.cgi new file mode 100644 index 0000000..051238b --- /dev/null +++ b/inc/ore_sub-main_reset.cgi @@ -0,0 +1,104 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# 統一処理(国データリセット) +sub reset_cdat{ + + if($limit_mode){ + require './inc/ore_sub-members-p1.cgi'; + &member_adjust; + } + + # 旧式・固定モード + if(!$reset_cdat){ + my @camp_pw = (0,4500,4500,3500,5000,3500); # 国力 変更可能 + my @camp_gl = (0,900,200,400,250,300); # 国家予算 + my @camp_fd = (0,2000,5000,3500,8000,6000); # 総兵糧 + my @camp_sl = (0,3000,2500,4000,5000,4000); # 総兵士数 + + $cn1=$camp_pw[1]; + $cg1=$camp_gl[1]; + $cf1=$camp_fd[1]; + $cs1=$camp_sl[1]; + + $cn2=$camp_pw[2]; + $cg2=$camp_gl[2]; + $cf2=$camp_fd[2]; + $cs2=$camp_sl[2]; + + $cn3=$camp_pw[3]; + $cg3=$camp_gl[3]; + $cf3=$camp_fd[3]; + $cs3=$camp_sl[3]; + + $cn4=$camp_pw[4]; + $cg4=$camp_gl[4]; + $cf4=$camp_fd[4]; + $cs4=$camp_sl[4]; + + $cn5=$camp_pw[5]; + $cg5=$camp_gl[5]; + $cf5=$camp_fd[5]; + $cs5=$camp_sl[5]; + } + + # ランダムモード + else{ + + # リセット処理 + + $cn1=int(rand(40))*100+2500; + $cn2=int(rand(40))*100+2500; + $cn3=int(rand(40))*100+2500; + $cn4=int(rand(40))*100+2500; + $cn5=int(rand(40))*100+2500; + + $cg1=int(rand(50))*20+200; + $cg2=int(rand(50))*20+200; + $cg3=int(rand(50))*20+200; + $cg4=int(rand(50))*20+200; + $cg5=int(rand(50))*20+200; + + $cf1=int(rand(60))*100+2500; + $cf2=int(rand(60))*100+2500; + $cf3=int(rand(60))*100+2500; + $cf4=int(rand(60))*100+2500; + $cf5=int(rand(60))*100+2500; + + $cs1=int(rand(60))*50+2000; + $cs2=int(rand(60))*50+2000; + $cs3=int(rand(60))*50+2000; + $cs4=int(rand(60))*50+2000; + $cs5=int(rand(60))*50+2000; + } + $ce1=$ce2=$ce3=$ce4=$ce5=0; + $set=$reset_time_limit * 3600 * 24 + $time; + $goal_no++; + # 国データを配列化したいけど、めんどくさいからいいや・・・。 +} + +#------------------------------------------------------------------------------- +# タイムアウトによるリセット +sub reset_time_limit{ + + $log .="長き年月が過ぎたが、戦乱の世を制する覇者は最後まで出現しなかった。
    各国データがリセットされます。\n"; + $wr_mes="長き年月が過ぎたが、戦乱の世を制する覇者は最後まで出現しなかった。各国データがリセットされた"; + &reset_cdat; + &hist_write; +} + + + + + +1; diff --git a/inc/ore_sub-map-p1_pc.cgi b/inc/ore_sub-map-p1_pc.cgi new file mode 100644 index 0000000..4b5b6cd --- /dev/null +++ b/inc/ore_sub-map-p1_pc.cgi @@ -0,0 +1,54 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # +# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # +# BLANK BOARD [ http://pom.to/ ] # +#-----------------------------------------------------------# +# マップ PC用サブルーチン Version 1.0 # +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +############################################################# +# 以下処理 基本的にこれ以下はいじらないように。 + +#------------------------------------------------------------------------------- +# クリッカブルマップ +sub mapdata{ +$log.=<
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            
          $cmp[5] 
      $cmp[4]     
        $cmp[1]   
       永遠の証
    跡地
        
      $cmp[2]     
        $cmp[3]   
            

    エルタニア ワールドマップ
    +EOM +} + + + + + +1;#削除不可 diff --git a/inc/ore_sub-members-p1.cgi b/inc/ore_sub-members-p1.cgi new file mode 100644 index 0000000..c07b46a --- /dev/null +++ b/inc/ore_sub-members-p1.cgi @@ -0,0 +1,106 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# 参加人数取得 +sub member_list{ + + $all_mem=$#tdat+1; + + # 参加者合計取得 + $c0 = grep(/camp;0/, @tdat); + $c1 = grep(/camp;1/, @tdat); + $c2 = grep(/camp;2/, @tdat); + $c3 = grep(/camp;3/, @tdat); + $c4 = grep(/camp;4/, @tdat); + $c5 = grep(/camp;5/, @tdat); + + if($limit_mode){ + $c1a = $c2a = $c3a = $c4a = $c5a = ($all_mem<18) ? 3 : int($all_mem/6)+1 ; + &member_adjust if(!$member_flag); + } + + &cdat_write; +} + +#------------------------------------------------------------------------------- +# 前回統一の優劣設定(参加人数) +sub member_adjust{ + + $c1a = $c2a = $c3a = $c4a = $c5a = ($all_mem<18) ? 3 : int($all_mem/6)+1 ; + + local($rca_p,$rca_m); + $rca_p=1 if($all_mem<50); + $rca_p=2 if($all_mem=>50 && $all_mem<100); + $rca_p=3 if($all_mem=>100 && $all_mem<150); + $rca_p=4 if($all_mem=>150 && $all_mem<200); + $rca_p=5 if($all_mem=>200); + + if($all_mem<50){ + $rca_p=0; + $rca_m=-1; + } + elsif($all_mem=>50 && $all_mem<100){ + $rca_p=0; + $rca_m=-2; + } + elsif($all_mem=>100 && $all_mem<150){ + $rca_p=1; + $rca_m=-3; + } + elsif($all_mem=>150 && $all_mem<200){ + $rca_p=1; + $rca_m=-4; + } + elsif($all_mem=>200){ + $rca_p=2; + $rca_m=-5; + } + + if($cn1>=$data_reset || $hcamp==1){ + $c1a +=$rca_m; + $c2a +=$rca_p; + $c3a +=$rca_p; + $c4a +=$rca_p; + $c5a +=$rca_p; + }elsif($cn2>=$data_reset || $hcamp==2){ + $c1a +=$rca_p; + $c2a +=$rca_m; + $c3a +=$rca_p; + $c4a +=$rca_p; + $c5a +=$rca_p; + }elsif($cn3>=$data_reset || $hcamp==3){ + $c1a +=$rca_p; + $c2a +=$rca_p; + $c3a +=$rca_m; + $c4a +=$rca_p; + $c5a +=$rca_p; + }elsif($cn4>=$data_reset || $hcamp==4){ + $c1a +=$rca_p; + $c2a +=$rca_p; + $c3a +=$rca_p; + $c4a +=$rca_m; + $c5a +=$rca_p; + }elsif($cn5>=$data_reset || $hcamp==5){ + $c1a +=$rca_p; + $c2a +=$rca_p; + $c3a +=$rca_p; + $c4a +=$rca_p; + $c5a +=$rca_m; + } +} + + + + + +1; diff --git a/inc/ore_sub-mission.cgi b/inc/ore_sub-mission.cgi new file mode 100644 index 0000000..ca8b18c --- /dev/null +++ b/inc/ore_sub-mission.cgi @@ -0,0 +1,436 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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.1 +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +#軍事メニュー +sub mission{ + + if(!$type){ + + $log .= "軍事を行います。実行するものを選んで下さい。
    \n"; + $tm=0; + $type='軍事'; + + &mission_menu; + + } + + &dat_write; +} + +sub mission_menu{ + + # 軍事コマンド + my @gu = ('やめる','諜報','強奪','洗脳'); + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; +} + + +sub misson_menu2{ + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; +} + +#------------------------------------------------------------------------------- +#軍事処理 +sub mission_exe{ + + if(!$tm){ + + if($camp<1){ + $log .= "放浪の身でこの軍事は行なえません。
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }elsif($sogo==3||$sogo==4){ + $log .= "まずは借金を返済して$sogo_p[$sogo] の烙印を消してください。
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }elsif($cmd<=0 || $cmd>$#cmp){ + $log .= "軍事を中止します
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }elsif($cmd==1){ + $log .= "敵国に諜報員を送り込み、資金調達ルートをかく乱させます。
    標的国を選んで下さい
    \n"; + &call_mapdata if($mv_mode eq 'pc'); + &misson_menu2; + $tm=31; + }elsif($cmd==2){ + $log .= "敵国の兵糧を強奪します。標的国を選んで下さい(クリッカブルマップ対応)
    \n"; + &call_mapdata if($mv_mode eq 'pc'); + &misson_menu2; + $tm=32; + }elsif($cmd==3){ + $log .= "敵国の兵士を洗脳し、自国へ引き入れます。
    標的国を選んで下さい
    \n"; + &call_mapdata if($mv_mode eq 'pc'); + &misson_menu2; + $tm=33; + } + }elsif($tm==31){#諜報内容1 + &gun_tm31; + }elsif($tm==32){#略奪内容1 + &gun_tm32; + }elsif($tm==33){#洗脳内容1 + &gun_tm33; + }elsif($tm==34){#諜報内容2 + &gun_tm34; + }elsif($tm==35){#強奪内容2 + &gun_tm35; + }elsif($tm==36){#洗脳内容2 + &gun_tm36; + } + + &write_data; +} + +#洗脳内容 +sub gun_tm33{ + + if($cmd<=0){ + $log .= "洗脳を中止します
    \n"; + $tm = $cmd = 0; + &mission_menu; + }elsif($cmd>0){ + $v=$cmd; + if($v==$camp){ + $log .= "自国は洗脳できません。
    \n"; + $tm = $cmd = 0; + &mission_menu; + }elsif( (($cmd==1&&$cs1<2500) || ($cmd==1&&$ce1==1))|| + (($cmd==2&&$cs2<2500) || ($cmd==2&&$ce2==1))|| + (($cmd==3&&$cs3<2500) || ($cmd==3&&$ce3==1))|| + (($cmd==4&&$cs4<2500) || ($cmd==4&&$ce4==1))|| + (($cmd==5&&$cs5<2500) || ($cmd==5&&$ce5==1))){ + $log .= "亡国または、総兵士数2500未満の国を洗脳することはできません。
    \n"; + $tm = $cmd = 0; + &misson_menu2; + }elsif($v==0){ + $log .= "
    \n"; + $tm = $cmd = 0; + &mission_menu; + }else{ + $log .= "$cmp[$v]の兵士陣を洗脳します。
    \n"; + $log .= "催眠術師を送り込みます。敵国国境まで$GMW時間です
    \n"; + + $nation=$v; + $pr=$GMT; + $tm=36; + } + } +} + +#洗脳内容2 +sub gun_tm36{ + + &syogo; + + $vv=int(rand(3)); + if($vv > 0){#成功確率 + + $mes = "$cmp[$nation] の 兵士陣の洗脳に成功しました!
    $cmp[$nation] から"; + + $wr_mes ="$date $cmp[$camp] の $syogo が $cmp[$nation] の兵士"; + + $v=int(((rand(10)+1)*5)*$lr); + $v=2300 + int(rand(300)) if($v>2300); + $rank_exe++; + $mes .= "$v 人の兵士を洗脳し、$cmp[$camp]の兵として取り込みました。"; + + $wr_mes .="$v 人を洗脳することに成功! $cmp[$camp]の兵として取り込みました"; + + if($camp==1){ + $cs1 += $v; + }elsif($camp==2){ + $cs2 += $v; + }elsif($camp==3){ + $cs3 += $v; + }elsif($camp==4){ + $cs4 += $v; + }elsif($camp==5){ + $cs5 += $v; + } + if($nation==1 && $cs1>=$v){ + $cs1 -= $v; + }elsif($nation==2 && $cs2>=$v){ + $cs2 -= $v; + }elsif($nation==3 && $cs3>=$v){ + $cs3 -= $v; + }elsif($nation==4 && $cs4>=$v){ + $cs4 -= $v; + }elsif($nation==5 && $cs5>=$v){ + $cs5 -= $v; + } + $nation=0; + $tm = $cmd = 0; + $type=''; + &call_main_st; + + &hist_write;#国ログ + }else{ + $mes = "$cmp[$nation] の兵士陣の洗脳に失敗した・・・。"; + + $wr_mes ="$date $cmp[$camp] の $syogo が $cmp[$nation] の兵士陣を洗脳を企てたが、失敗したようだ"; + + &gun_no; + + &hist_write;#国ログ + } +} +#強奪内容1 +sub gun_tm32{ + + &syogo; + + if($cmd<=0){ + $log .= "強奪を中止します
    \n"; + $tm = $cmd = 0; + &mission_menu; + }elsif($cmd>0){ + $v=$cmd; + if($v==$camp){ + $log .= "自国は強奪できません。
    \n"; + $tm = $cmd = 0; + &mission_menu; + }elsif( (($cmd==1&&$cf1<5000) || ($cmd==1&&$ce1==1))|| + (($cmd==2&&$cf2<5000) || ($cmd==2&&$ce2==1))|| + (($cmd==3&&$cf3<5000) || ($cmd==3&&$ce3==1))|| + (($cmd==4&&$cf4<5000) || ($cmd==4&&$ce4==1))|| + (($cmd==5&&$cf5<5000) || ($cmd==5&&$ce5==1))){ + $log .= "亡国または、総兵糧5000未満の国を強奪することはできません。\n"; + $tm = $cmd = 0; + &mission_menu; + }elsif($v==0){ + $log .= "
    \n"; + $tm = $cmd = 0; + &mission_menu; + }else{ + $log .= "$cmp[$v]から兵糧を強奪します。
    \n"; + $log .= "奇襲部隊を送り込みます。敵国国境まで$GMW時間です
    \n"; + + $nation=$v; + $pr=$GMT; + $tm=35; + } + } +} +#強奪内容2 +sub gun_tm35{ + + &syogo; + + $vv=int(rand(3)); + if($vv > 0){#成功確率 + + $mes = "$cmp[$nation] に奇襲攻撃をかけ、強奪に成功しました!
    $cmp[$nation] から"; + + $wr_mes ="$date $cmp[$camp] の $syogo が $cmp[$nation] に奇襲攻撃を実施。"; + + $v=int(((rand(10)+1)*10)*$lr); + $v=4500 + int(rand(1000)) if($v>4500); + $rank_exe++; + $vv=int($v/3*2); + $mes .= "$v の兵糧を強奪し、
    そのうち $vv を持ち帰り$cmp[$camp]の兵糧に割り当てた。
    "; + + $wr_mes .="$v の兵糧を強奪することに成功した"; + + if($camp==1){ + $cf1 += $vv; + }elsif($camp==2){ + $cf2 += $vv; + }elsif($camp==3){ + $cf3 += $vv; + }elsif($camp==4){ + $cf4 += $vv; + }elsif($camp==5){ + $cf5 += $vv; + } + if($nation==1 && $cf1>=$v){ + $cf1 -= $v; + }elsif($nation==2 && $cf2>=$v){ + $cf2 -= $v; + }elsif($nation==3 && $cf3>=$v){ + $cf3 -= $v; + }elsif($nation==4 && $cf4>=$v){ + $cf4 -= $v; + }elsif($nation==5 && $cf5>=$v){ + $cf5 -= $v; + } + $nation=0; + $tm = $cmd = 0; + $type=''; + &call_main_st; + + &hist_write;#国ログ + }else{ + $mes = "$cmp[$nation] の 奇襲攻撃に失敗した・・・。
    "; + + $wr_mes ="$date $cmp[$camp] の $syogo が $cmp[$nation] に奇襲攻撃を行ったが、失敗したようだ"; + + &gun_no; + + &hist_write;#国ログ + } +} + +#諜報内容 1 +sub gun_tm31{ + + if($cmd<=0){ + $log .= "諜報を中止します
    \n"; + $tm = $cmd = 0; + &mission_menu; + }elsif($cmd>0){ + $v=$cmd; + if($v==$camp){ + $log .= "自国は諜報できません。
    \n"; + $tm = $cmd = 0; + &mission_menu; + }elsif( (($cmd==1&&$cg1<600) || ($cmd==1&&$ce1==1))|| + (($cmd==2&&$cg2<600) || ($cmd==2&&$ce2==1))|| + (($cmd==3&&$cg3<600) || ($cmd==3&&$ce3==1))|| + (($cmd==4&&$cg4<600) || ($cmd==4&&$ce4==1))|| + (($cmd==5&&$cg5<600) || ($cmd==5&&$ce5==1))){ + $log .= "亡国または、国家\予\算800以下の国を諜報することはできません。\n"; + $tm = $cmd = 0; + &mission_menu; + }elsif($v==0){ + $log .= "
    \n"; + $tm = $cmd = 0; + &mission_menu; + }else{ + $log .= "$cmp[$v]の資金調達ルートを撹乱させます
    \n"; + $log .= "諜報員を送り込みます。敵国国境まで$GMW時間です
    \n"; + + $nation=$v; + $pr=$GMT; + $tm=34; + } + } +} +#諜報内容 2 +sub gun_tm34{ + + &syogo; + + $vv=int(rand(3)); + if($vv > 0){ + + $mes = "$cmp[$nation] の 資金調達ルートの撹乱に成功!
    $cmp[$nation] から"; + + $wr_mes ="$date $cmp[$camp] の $syogo が $cmp[$nation] の資金調達ルートを撹乱し、"; + + $v=int(((rand(5)+1)*5)*$lr); + $v=600 + int(rand(200)) if($v>600); + $rank_exe++; + $vv=int($v/2); + $mes .= "$v の国家予\算が流失した!
    そのうち $vv を持ち帰り$cmp[$camp]の国家予\算に割り当てた。
    "; + + $wr_mes .="$v の国家予\算を流失させることに成功した"; + + if($camp==1){ + $cg1 += $vv; + }elsif($camp==2){ + $cg2 += $vv; + }elsif($camp==3){ + $cg3 += $vv; + }elsif($camp==4){ + $cg4 += $vv; + }elsif($camp==5){ + $cg5 += $vv; + } + if($nation==1 && $cg1>=$v){ + $cg1 -= $v; + }elsif($nation==2 && $cg2>=$v){ + $cg2 -= $v; + }elsif($nation==3 && $cg3>=$v){ + $cg3 -= $v; + }elsif($nation==4 && $cg4>=$v){ + $cg4 -= $v; + }elsif($nation==5 && $cg5>=$v){ + $cg5 -= $v; + } + $nation=0; + $tm = $cmd = 0; + $type=''; + &call_main_st; + + &hist_write;#国ログ + }else{ + $mes = "$cmp[$nation] の 資金調達ルートの撹乱に失敗した・・・。
    "; + + $wr_mes ="$date $cmp[$camp] の $syogo が $cmp[$nation] の資金調達ルートの撹乱を策略したが、失敗したようだ"; + + &gun_no; + + &hist_write;#国ログ + } + +} + +#軍事失敗の国ステータス減少 +sub gun_no{ + + $rank_exe-=5; + + $tm = $cmd = 0; + $type=''; + &call_main_st; + + $v=int(rand(50)+1); + $v2=int(rand(200)+1); + $v3=int(rand(100)+1); + + if($camp==1&&$cg1>$v&&$cf1>$v2&&$cs1>$v3){ + $cg1 -= $v; + $cf1 -= $v2; + $cs1 -= $v3; + }elsif($camp==2&&$cg2>$v&&$cf2>$v2&&$cs2>$v3){ + $cg2 -= $v; + $cf2 -= $v2; + $cs2 -= $v3; + }elsif($camp==3&&$cg3>$v&&$cf3>$v2&&$cs3>$v3){ + $cg3 -= $v; + $cf3 -= $v2; + $cs3 -= $v3; + }elsif($camp==4&&$cg4>$v&&$cf4>$v2&&$cs4>$v3){ + $cg4 -= $v; + $cf4 -= $v2; + $cs4 -= $v3; + }elsif($camp==5&&$cg51>$v&&$cf5>$v2&&$cs5>$v3){ + $cg5 -= $v; + $cf5 -= $v2; + $cs5 -= $v3; + } +} + + + + + +1; diff --git a/inc/ore_sub-npc_1.cgi b/inc/ore_sub-npc_1.cgi new file mode 100644 index 0000000..c327364 --- /dev/null +++ b/inc/ore_sub-npc_1.cgi @@ -0,0 +1,93 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # +# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # +# BLANK BOARD [ http://pom.to/ ] # +#-----------------------------------------------------------# +# NPC定義 Version 1.0 +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# NPC定義(国) +sub ck_ne_1 { + + if($nation==1){ + @boss =('ランス皇子','グスタフ老','アルニード将軍','フィリナ将軍','傭兵隊');# 国1のNPC + @bs_lv =(99,80,40,30,15); # レベル + @bs_h =(20000,18000,14000,12000,2000,100); # 最大兵数 + @bs_hp =(1000,450,300,200,100); # 最大HP + @bs_mp =(300,100,90,150,40); # 最大MP + @bs_ua =(55,80,60,45,10, 99,55,80,60,45,150,200); # UA + @bs_ud =(50,75,30,30,5); # UD + @bs_l =(50,75,45,30,5,99); # LR + @bs_ag =(80,80,55,40,20); # AG + + }elsif($nation==2){ + @boss =('エカテリーナ女王','ギリナム将軍','ルーシア将軍','グルューン将軍','傭兵隊'); + @bs_lv =(99,55,40,30,15); + @bs_h =(20000,18000,10000,6000,2000,100); + @bs_hp =(1600,500,250,200,30); + @bs_mp =(400,100,200,150,40); + @bs_ua =(40,60,65,25,10); + @bs_ud =(40,45,60,20,5); + @bs_l =(30,65,40,20,5); + @bs_ag =(70,80,50,35,25); + + }elsif($nation==3){ + @boss =('ヤン元帥','シェーンコップ将軍','アッテンボロー将軍','ミンツ将軍','傭兵隊'); + @bs_lv =(99,50,40,30,15); + @bs_h =(20000,16000,12000,10000,2000,100); + @bs_hp =(999,3000,150,250,30); + @bs_mp =(4000,130,120,70,40); + @bs_ua =(50,65,30,40,10); + @bs_ud =(60,70,35,35,5); + @bs_l =(75,40,35,30,5); + @bs_ag =(90,40,60,40,30); + + }elsif($nation==4){ + @boss =('皇帝ギザロフ','ランフォード将軍','ランディウス将軍','リーヴァス将軍','傭兵隊'); + @bs_lv =(99,60,40,30,15); + @bs_h =(30000,18000,16000,14000,2000,100); + @bs_hp =(2500,350,400,250,30); + @bs_mp =(99999,150,120,70,40); + @bs_ua =(60,75,60,40,10); + @bs_ud =(50,60,55,50,5); + @bs_l =(80,70,55,45,5); + @bs_ag =(60,90,50,30,20); + + }elsif($nation==5){ + @boss =('皇帝ゾーマ','バラモス将軍','カンダタ将軍','オルデカ将軍','傭兵隊'); + @bs_lv =(30,60,40,30,15); + @bs_h =(50000,4000,30000,2000,10000,1000); + @bs_hp =(5000,4000,3000,2000,1000); + @bs_mp =(99999,150,120,70,40); + @bs_ua =(60,75,60,40,10); + @bs_ud =(99,60,55,50,5); + @bs_l =(80,70,55,45,5); + @bs_ag =(40,40,50,20,20); + + } + + $tnm =$boss[$v]; + $tsol =$bs_h[$v]; + $tlv =$bs_lv[$v]; + $thp =$bs_hp[$v]; + $thp_max=$bs_hp[$v]; + $tmp =$bs_mp[$v]; + $tua =$bs_ua[$v]; + $tud =$bs_ud[$v]; + $tlr =$bs_l[$v]; + $tag =$bs_ag[$v]; + $tsol_lv=100; + $tcp =$nation; + +} + + + + + +1; diff --git a/inc/ore_sub-npc_2.cgi b/inc/ore_sub-npc_2.cgi new file mode 100644 index 0000000..1c7f1a3 --- /dev/null +++ b/inc/ore_sub-npc_2.cgi @@ -0,0 +1,86 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # +# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # +# BLANK BOARD [ http://pom.to/ ] # +#-----------------------------------------------------------# +# NPC定義 Version 1.0 +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# NPC定義(魑魅魍魎) +sub ck_ne_2 { + + if($nation==1){ + @boss =('アモン','バアル','ザエボス','ヴァッサゴ','サミジーナ','マルバス','ブォルフォール'); # 国1のNPC + @bs_lv =(99,99,99,80,40,30,35); # レベル + @bs_hp =(6000,2000,2000,6000,900,1500,600); # 最大HP + @bs_mp =(6000,4000,600,1500,900,1500,400); # 最大MP + @bs_ua =(180,110,65,90,70,55,40); # UA + @bs_ud =(300,99,50,75,50,30,30); # UD + @bs_l =(120,70,95,65,50,40,35); # LR + @bs_ag =(60,87,70,77,57,45,36); # AG + + }elsif($nation==2){ + @boss =('バルバトス','パイモン','ブエル','グイソン','シトリー','ベレス','レラージュ'); + @bs_lv =(99,99,99,55,40,40,35); + @bs_hp =(8000,1200,3000,2500,800,1000,300); + @bs_mp =(8000,1600,4000,1000,800,600,800); + @bs_ua =(99,300,150,130,140,80,40); + @bs_ud =(99,99,80,90,60,50,20); + @bs_l =(99,99,30,65,40,20,5); + @bs_ag =(50,70,70,77,57,40,36); + + }elsif($nation==3){ + @boss =('エリゴール','ゼパール','ボーティス','バシム','サロス','プルソン','マラクス'); + @bs_lv =(99,99,99,50,40,35,35); + @bs_hp =(4000,4000,999,3000,1200,1000,4000); + @bs_mp =(4000,4000,4000,1000,1440,2100,6000); + @bs_ua =(110,110,80,75,90,180,60); + @bs_ud =(110,99,70,80,45,45,25); + @bs_l =(110,99,85,50,45,40,25); + @bs_ag =(70,80,70,80,60,40,36); + + }elsif($nation==4){ + @boss =('イポス','ハボリム','ナベリウス','カーシモラル','ブーネ','ロノウェ','ベリス'); + @bs_lv =(99,99,99,60,40,35,35); + @bs_hp =(5000,2000,1500,1000,800,1500,500); + @bs_mp =(1000,1500,5000,1000,600,900,400); + @bs_ua =(99,200,60,95,100,40,50); + @bs_ud =(99,99,70,60,55,60,5); + @bs_l =(99,99,80,70,55,45,5); + @bs_ag =(60,70,80,70,80,60,40); + + }elsif($nation==5){ + @boss =('アスタロス','フォルネウス','フォラス','アスモダイ','ガープ','フールフール','マルコキアス'); + @bs_lv =(99,99,99,60,40,35,40); + @bs_hp =(2000,20000,4000,3000,2000,1500,800); + @bs_mp =(2000,20000,6000,1500,150,2000,4000); + @bs_ua =(150,99,90,105,90,70,30); + @bs_ud =(200,99,130,90,85,80,35); + @bs_l =(99,110,100,85,75,35,99); + @bs_ag =(60,10,50,60,70,60,40); + } + + $tnm =$boss[$v]; + $tlv =$bs_lv[$v]; + $thp =$bs_hp[$v]; + $thp_max=$bs_hp[$v]; + $tmp =$bs_mp[$v]; + $tua =$bs_ua[$v]; + $tud =$bs_ud[$v]; + $tlr =$bs_l[$v]; + $tag =$bs_ag[$v]; + $tsol_lv=100; + $tcp=$nation; + +} + + + + + +1; diff --git a/inc/ore_sub-politics.cgi b/inc/ore_sub-politics.cgi new file mode 100644 index 0000000..02f40fd --- /dev/null +++ b/inc/ore_sub-politics.cgi @@ -0,0 +1,299 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# 内政メニュー +sub politics{ + + if(!$type){ + + if($camp<1){ + $log .= "放浪の身では内政は行えない
    \n"; + $tm = $cmd = 0; + &call_main_st; + + }else{ + + $log .= "内政を行います。実行するものを選んで下さい
    \n"; + $tm=0; + $type='内政'; + + &politics_menu; + + &dat_write; + } + } +} + +sub politics_menu{ + # 内政コマンド + my @hm = ('やめる','農業','商業','徴兵','兵を訓練する'); + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; +} + +#------------------------------------------------------------------------------- +# 内政処理 +sub politics_exe{ + + if(!$tm){ + + if($cmd<=0){ + $log .= "あとで行うことにした。
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + + # 農業 + }elsif($cmd==1){ + + # 行動カウントのリセット(無条件) + $act_cnt=0; + + $log .= "農業を行います。結果は$GMW時間後。
    \n"; + $v=int(((rand(10)+1)*100)*$lr); + $v=9999 if($v>9999); + $tm=25; + $rank_exe++; + $pr=$GMT; + + if($camp==1){ + $cf1 += $v; + }elsif($camp==2){ + $cf2 += $v; + }elsif($camp==3){ + $cf3 += $v; + }elsif($camp==4){ + $cf4 += $v; + }elsif($camp==5){ + $cf5 += $v; + } + $mes = "$v の兵糧を得た"; + + $tm=50; + + # 商業 + }elsif($cmd==2){ + + # 行動カウントのリセット(無条件) + $act_cnt=0; + + $log .= "商業を行います。結果は$GMW時間後。
    \n"; + $v=int(((rand(10)+1)*15)*$lr);#最初は$v=int(((rand(10)+1)*10)*$lr); + $v=999 if($v>999); + $tm=25; + $rank_exe++; + $pr=$GMT; + + if($camp==1){ + $cg1 += $v; + }elsif($camp==2){ + $cg2 += $v; + }elsif($camp==3){ + $cg3 += $v; + }elsif($camp==4){ + $cg4 += $v; + }elsif($camp==5){ + $cg5 += $v; + } + $mes = "$v G 国家予\算が増えた"; + + $tm=50; + + # 徴兵-1 + }elsif($cmd==3){ + $log .= "徴兵を実行しますか?兵 1 人につき 1 G必要です
    \n"; + $tm=15; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + # 兵を訓練する + }elsif($cmd==4){ + + if($my_cs<1){ + $log .= "兵がいません
    \n"; + $tm = $cmd = 0; + &politics_menu; + }elsif($sol_lv>99){ + $log .= "訓練度はこれ以上あがりません
    \n"; + $tm = $cmd = 0; + &politics_menu; + }else{ + + # 行動カウントのリセット(限界時のみ) + $act_cnt=0 if($act_cnt>$act_cnt_limit); + + $log .= "兵の訓練を行ないます
    \n"; + $pr=int($GMT/2); + $x = int($lr/2); + if($x<1){ + $x=1; + } + $v = int((rand(20))+$x); + $sol_lv += $v; + if($sol_lv>100){ + $sol_lv=100; + } + $mes = "訓練度が $v 上昇した"; + $tm=50; + } + } + + # 徴兵-2 + }elsif($tm==15){ + + $z=$g_p[$rank]-$sol; + if($cmd<=0){ + $log .= "あとで行うことにした。
    \n"; + $tm = $cmd = 0; + &politics_menu; + }elsif($cmd==1){ + + # 行動カウントのリセット(無条件) + $act_cnt=0; + + $log .= "最大千人規模の徴兵を実行します。結果は$GMW時間後に
    \n"; + $S = int(((rand(50))+100)*$lr); + $S = 1000 if($S>1000); + $rank_exe++; + + if($S<$gold){ + $gold-=$S; + }elsif($gold<$S){ + $S=$gold; + $gold=0; + } + + if($camp==1){ + $cs1+=$S; + }elsif($camp==2){ + $cs2+=$S; + }elsif($camp==3){ + $cs3+=$S; + }elsif($camp==4){ + $cs4+=$S; + }elsif($camp==5){ + $cs5+=$S; + } + + $mes = "$S 人の兵が集まった"; + $pr=$GMT; + $tm=50; + }elsif($cmd==2){ + + # 行動カウントのリセット(無条件) + $act_cnt=0; + + $log .= "最大五千人規模の徴兵を実行します。結果は$GMW時間後に
    \n"; + $S = int(((rand(50))+100)*$lr); + $S = 5000 if($S>5000); + $rank_exe+=int(rand(2)+1); + + if($S<$gold){ + $gold-=$S; + }elsif($gold<$S){ + $S=$gold; + $gold=0; + } + + if($camp==1){ + $cs1+=$S; + }elsif($camp==2){ + $cs2+=$S; + }elsif($camp==3){ + $cs3+=$S; + }elsif($camp==4){ + $cs4+=$S; + }elsif($camp==5){ + $cs5+=$S; + } + + $mes = "$S 人の兵が集まった"; + $pr=$GMT; + $tm=50; + }elsif($cmd==3){ + + # 行動カウントのリセット(無条件) + $act_cnt=0; + + $log .= "最大一万人規模の徴兵を実行します。結果は$GMW時間後に
    \n"; + $S = int(((rand(50))+100)*$lr); + $S = 10000 if($S>10000); + $rank_exe+=int(rand(3)+1); + + if($S<$gold){ + $gold-=$S; + }elsif($gold<$S){ + $S=$gold; + $gold=0; + } + + if($camp==1){ + $cs1+=$S; + }elsif($camp==2){ + $cs2+=$S; + }elsif($camp==3){ + $cs3+=$S; + }elsif($camp==4){ + $cs4+=$S; + }elsif($camp==5){ + $cs5+=$S; + } + + $mes = "$S 人の兵が集まった"; + $pr=$GMT; + $tm=50; + } + } + + # 内政の終了(功労金授与) + elsif($tm==50){ + if($rank > 7 && $sogo!=3 && $sogo!=4){#烙印は無効化 + $gold += $v = $rank * 200; + $log .= "今までの功績が認められ国より $v Gの功労金をもらった。
    \n"; + } + $tm = $cmd = 0; + $type=""; + &call_main_st; + } + # 内政の終了(功労金なし) + elsif($tm==55){ + $tm = $cmd = 0; + $type=""; + &call_main_st; + } + + &write_data; + +} + + + + + +1; diff --git a/inc/ore_sub-shop-lotto.cgi b/inc/ore_sub-shop-lotto.cgi new file mode 100644 index 0000000..f9f8721 --- /dev/null +++ b/inc/ore_sub-shop-lotto.cgi @@ -0,0 +1,149 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# 宝くじ処理 +sub lotto{ + + if($tm==90){ + if($cmd<=0){ + $log .= "またお越しください…
    \n"; + $tm = $cmd = 0; + &shop_menu; + }elsif($cmd==1){ + $S = 500; + if($S < $gold){ + $gold -= $S; + $log .= "五百Gを支払った…
    さぁ当たったかな〜?
    \n"; + $tm=95; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|$td_end
    \n|; + + }else{ + $log .= "お金が足りないよ! タダじゃ夢も買えないこの現実・・・
    \n"; + $tm = $cmd = 0; + &shop_menu; + } + } + }elsif($tm==95){ # 宝くじ処理 + + my $dh =int(rand(450)) ; + if($dh == 0){ + $gold += 100000; + $log .="ドンドンヒューヒューパフパフ♪
    壱等賞が当たった!!!
    $nm は \十\万\Gを獲得した!
    \n"; + $tm = $cmd = 0; + &shop_menu; + }elsif($dh > 0 && $dh <= 2){ + $gold += 50000; + $log .="ドンドンヒューヒューパフパフ♪
    弐等賞が当たった!!!
    $nm は 五万Gを獲得した!
    \n"; + $tm = $cmd = 0; + &shop_menu; + }elsif($dh > 10 && $dh <= 20){ + $gold += 10000; + $log .="ドンドンヒューヒューパフパフ♪
    参等賞が当たった!!!
    $nm は 壱万Gを獲得した!
    \n"; + $tm = $cmd = 0; + &shop_menu; + }elsif($dh > 20 && $dh <= 60){ + $gold += 1000; + $log .="ドンドンヒューヒューパフパフ♪
    四等賞が当たった!!!
    $nm は 壱千Gを獲得した!
    \n"; + $tm = $cmd = 0; + &shop_menu; + }elsif($dh == 447){ + $dh =int(rand(2)) ; + if($dh){ + $hp = $max_hp; + $log .="ドンドンヒューヒューパフパフ♪
    幸運賞が当たった!!!
    $nm は HP が全回復した!
    \n"; + }else{ + $mp = $max_mp; + $log .="ドンドンヒューヒューパフパフ♪
    幸運賞が当たった!!!
    $nm は MP が全回復した!
    \n"; + } + $tm = $cmd = 0; + &shop_menu; + }elsif($dh == 448){ + $dh =int(rand(2)) ; + if($dh){ + $hp = int($hp/2); + $log .="ガーーン!!  不幸賞が当たってしまった・・・。
    $nm は HP が半分になった・・・。
    \n"; + }else{ + $mp = int($mp/2); + $log .="ガーーン!!  不幸賞が当たってしまった・・・。
    $nm は MP が半分になった・・・。
    \n"; + } + $tm = $cmd = 0; + &shop_menu; + }elsif($dh == 449){#$dh == 449 + $dh =int(rand(5)) ; + if($dh==0){ + $log .="おーっと!! 滅多に当たらない$dg_data[1][1]が当たった!!

    装備する場合、現在所持している武具は破棄されます。
    どうしますか?
    \n"; + $tm = 100; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + }elsif($dh==1){ + $log .="おーっと!! 滅多に当たらない$df_data[1][1]が当たった!!

    装備する場合、現在所持している防具は破棄されます。
    どうしますか?
    \n"; + $tm = 115; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + }else{ + $log .= "外れた・・・ また挑戦してくださいネェ♪
    \n"; + $tm = $cmd = 0; + &shop_menu; + } + }else{ + $log .= "外れた・・・ また挑戦してくださいネェ♪
    \n"; + $tm = $cmd = 0; + &shop_menu; + } + + }elsif($tm==100){#宝くじ 罪罰賞処理 + if($cmd){ + $log .="$nm は $dg_data[1][1]を手に入れた!!
    \n"; + $dg_a = 1; + $dg_cnt = $dg_data[1][3]; + }else{ + $log .="$nm は 涙をしのんで諦めた・・・・・・\n"; + } + $tm = $cmd = 0; + &shop_menu; + }elsif($tm==115){#宝くじ 罪罰賞処理 + if($cmd){ + $log .="$nm は $df_data[1][1]を手に入れた!!
    \n"; + $df_a = 1; + $df_cnt = $df_data[1][3]; + }else{ + $log .="$nm は 涙をしのんで諦めた・・・・・・\n"; + } + $tm = $cmd = 0; + &shop_menu; + } +} + + + + + +1; diff --git a/inc/ore_sub-shop-medical.cgi b/inc/ore_sub-shop-medical.cgi new file mode 100644 index 0000000..e74c768 --- /dev/null +++ b/inc/ore_sub-shop-medical.cgi @@ -0,0 +1,122 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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.1 +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +# 診療所 +sub medical{ + + if($tm==120){ + + if($cmd<=0){ + $log .= "またお越しください…
    \n"; + $tm = $cmd = 0; + &shop_menu; + + # 治療-1 + }elsif($cmd==1){ + + $S = ($lv < 50) ? $lv*2000 : 100000; + $log .= "…ここでは古の秘術によって体力と魔力を
    瞬時に全快まで回復してさしあげられます
    …ただし$SG\頂きますが…
    \n"; + $tm=125; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + # 性転換-1 + }elsif($cmd==2){ + + $log.="ここでは性転換手術を受けられます。
    ただし入院と手術費に20万G ほどかかりますが・・・
    "; + $tm=135; + + $log2 .= qq|
    |; + $log2 .= qq|\n| if($mv_mode eq 'pc'); + $log2 .= qq|\n|; + $log2 .= qq|\n|; + $log2 .= qq|
    \n|; + $log2 .= qq|$td_end
    \n|; + } + + # 治療-2 + }elsif($tm==125){ + + if($cmd<=0){ + $log .= "$nm は立ち去った。
    \n"; + $tm = $cmd = 0; + &shop_menu; + }else{ + $S = ($lv < 50) ? $lv*2000 : 100000; + if($S < $gold){ + $hp = $max_hp; + $mp = $max_mp; + $gold -= $S; + $log .= "$SGを支払った…
    体力と魔力が全回復した。
    \n"; + $tm = $cmd = 0; + &shop_menu; + }else{ + $log .= "お金が足りないわ…
    \n"; + $tm=0; + &shop_menu; + } + } + + # 性転換-2 + }elsif($tm==135){ + + if($cmd<=0){ + $log .= "$nm は何事も無かったように立ち去った。
    \n"; + $tm = $cmd = 0; + &shop_menu; + }else{ + if($gold>=200000){ + + $gold-=200000; + $log.="オペを開始します。目覚めるとそこは別世界になっていることでしょう。
    "; + $pr=$GMT*8; + + if($sei==1){ + $sei=2; + $sei2="女性"; + }else{ + $sei=1; + $sei2="男性"; + } + $mes.= qq|麻酔から目を覚ました。$nm は $sei2 になった。|; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }else{ + $log2.="お金が足りません。"; + $tm = $cmd = 0; + &shop_menu; + } + } + } +} + + + + + +1; diff --git a/inc/ore_sub-shop-p1_mv.cgi b/inc/ore_sub-shop-p1_mv.cgi new file mode 100644 index 0000000..d7188b6 --- /dev/null +++ b/inc/ore_sub-shop-p1_mv.cgi @@ -0,0 +1,73 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # +# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # +# BLANK BOARD [ http://pom.to/ ] # +#-----------------------------------------------------------# +# お買い物 PC用パーツ1 Version 1.0 # +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +############################################################# +# 以下処理 基本的にこれ以下はいじらないように。 + +#------------------------------------------------------------------------------- +#武具(ショッピング) +sub bugu_s{ + + $log.=< + + + +EOM + + foreach(11 .. $#dg_data){ + $log .=qq|
    \n|; + $log .=qq|$dg_data[$_][1] $dg_data[$_][2]G 回数$dg_data[$_][3] $dg_data[$_][5]\n|; + } + $log .=qq|
    \n|; + +} + +#------------------------------------------------------------------------------- +#防具(ショッピング) +sub bogu_s{ + + $log.=< + + + +EOM + + foreach(11 .. $#df_data){ + $log .=qq|
    \n|; + $log .=qq|$df_data[$_][1] $df_data[$_][2]G 回数$df_data[$_][3] $df_data[$_][5]\n|; + } + $log .=qq|
    \n|; + +} + +#------------------------------------------------------------------------------- +#道具(ショッピング) +sub dogu_s{ + $log.=< + + + +EOM + + foreach(11 .. $#di_data){ + $log .=qq|
    \n|; + $log .=qq|$di_data[$_][1] $di_data[$_][2]G 回数$di_data[$_][3] $di_data[$_][4]\n|; + } + $log .=qq|
    \n|; +} + + + + + +1;#削除不可 diff --git a/inc/ore_sub-shop-p1_pc.cgi b/inc/ore_sub-shop-p1_pc.cgi new file mode 100644 index 0000000..ba45ccc --- /dev/null +++ b/inc/ore_sub-shop-p1_pc.cgi @@ -0,0 +1,103 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # +# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # +# BLANK BOARD [ http://pom.to ] # +#-----------------------------------------------------------# +# お買い物 PC用パーツ1 Version 1.5 # +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +############################################################# +# 以下処理 基本的にこれ以下はいじらないように。 + +#------------------------------------------------------------------------------- +# 武具(ショッピング) +sub bugu_s{ + + $log.=< + + + + + + + + + + + + +EOM + + foreach(11 .. $#dg_data){ + $log .=qq|\n|; + $log .=qq|\n|; + } + $log .=qq|
     武具値段回数説明
    \n|; + $log .=qq|$dg_data[$_][1]$dg_data[$_][2]$dg_data[$_][3]$dg_data[$_][5]
    \n|; + $log .=qq|
    \n|; +} + +#------------------------------------------------------------------------------- +# 防具(ショッピング) +sub bogu_s{ + + $log.=< + + + + + + + + + + + + +EOM + + foreach(11 .. $#df_data){ + $log .=qq|\n|; + $log .=qq|\n|; + } + $log .=qq|
     防具値段回数説明
    \n|; + $log .=qq|$df_data[$_][1]$df_data[$_][2]$df_data[$_][3]$df_data[$_][5]
    \n|; + $log .=qq|
    \n|; +} + +#------------------------------------------------------------------------------- +# 道具(ショッピング) +sub dogu_s{ + $log.=< + + + + + + + + + + + +EOM + + foreach(11 .. $#di_data){ + $log .=qq|\n|; + $log .=qq|\n|; + } + $log .=qq|
     道具値段回数説明
    \n|; + $log .=qq|$di_data[$_][1]$dg_data[$_][2]$di_data[$_][3]$di_data[$_][4]
    \n|; + $log .=qq|
    \n|; +} + + + + + +1;#削除不可 diff --git a/inc/ore_sub-shop.cgi b/inc/ore_sub-shop.cgi new file mode 100644 index 0000000..3c0f68e --- /dev/null +++ b/inc/ore_sub-shop.cgi @@ -0,0 +1,505 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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.1 +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +#ショッピングモールメニュー +sub shop{ + + if(!$type){ + + $log .= "$nm はショッピングモールに来た。
    \n"; + $tm=0; + $type='お買い物'; + + &shop_menu; + + } + + &dat_write; +} + +sub shop_menu{ + # ショッピングモール + my @sg = ('去る','武具屋','防具屋','道具屋','金融業','プチロト','診療所'); + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; +} + +#------------------------------------------------------------------------------- +#ショッピングモール処理 +sub shop_exe{ + # 行き先選択 + if(!$tm){ + if($cmd<=0){ + $log .= "$nm は逃げるように立ち去った。
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }elsif($cmd==1){ + $log .= "いらっしゃい。今日はどうするんだい?
    \n"; + $tm=10; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + }elsif($cmd==2){ + $log .= "いらっしゃいませ。何をお求めですか?
    \n"; + $tm=30; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + }elsif($cmd==3){ + $log .= "ようこそ。色々なものを扱ってます。
    \n"; + $tm=50; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + }elsif($cmd==4){ + $log .= "いらっしゃい。マネーショップにようこそ。
    \n"; + $tm=70; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + }elsif($cmd==5){ + $log .= "イラッシャイマセェ〜♪一枚五百Gになりまぁす♪
     
    壱等 \十\万\G
    弐等 五万G
    参等 壱万G
    四等 壱千G

    幸運賞 ???
    不幸賞 ???

    罪罰賞1 $dg_data[1][1] (希少)
    罪罰賞2 $df_data[1][1] (希少)\n"; + $tm=90; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + }elsif($cmd==6){ + $log .= "いらっしゃい。罪罰診療所にようこそ。
    \n"; + $tm=120; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + }elsif($cmd==7){ + $log .= "きっと素敵な恋始まる!? 結婚相談所へようこそ♪
    \n"; + $tm=150; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + } + + # 武具屋 - 買 or 売 + }elsif($tm==10){ + if($cmd<=0){#消 + $log .= "なんだ、やめるのかい。また来てくれよな!
    \n"; + $tm = $cmd = 0; + &shop_menu; + }elsif($cmd==1){#買-1 + if($sogo==3||$sogo==4){ + $log .= "$sogo_p[$sogo] の烙印ついてちゃ買い物はできないぜ。
    \n"; + $tm = $cmd = 0; + &shop_menu; + }else{ + $log .= "何を買うんだい?
    ちなみに武具は1個しか所持できないぜ!
    \n"; + $tm=12; + require "./inc/ore_sub-shop-p1_$mv_mode\.cgi";&bugu_s; + } + }elsif($cmd==2){#売-1 + if($dg_a==0){ + $log .= "$nm さんは武具を所持してないぜ!
    \n"; + $tm = $cmd = 0; + &shop_menu; + }else{ + if($dg_a<=10){ + my $v = int(($dg_data[$dg_a][2]-$dg_data[$dg_a][2]/$dg_cnt)/2); + $log .= "お! 隠し武器の$dg_data[$dg_a][1] じゃないか! どこで手に入れだんだい?
    ぜひ $v Gで買い取らせてくれ。\n"; + $tm=25; + }else{ + my $v = int(($dg_data[$dg_a][2]-$dg_data[$dg_a][2]/$dg_cnt)/2); + $log .= "そうだねえ、$dg_data[$dg_a][1] は $v Gで買い取るよ!
    \n"; + $tm=25; + } + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + } + } + }elsif($tm==12){#買-2 + if($cmd<=0){#消 + $log .= "なんだやめるのかい。で、他にどうするんだ?
    \n"; + }else{ + foreach(11 .. $#dg_data){ + if($cmd eq $_ && $gold >= $dg_data[$_][2]){ + $log .= "$dg_data[$_][2]Gを支払い、$dg_data[$_][1] を購入しました。
    \n"; + $gold -= $dg_data[$_][2]; + $dg_a = $_; + $dg_cnt = $dg_data[$_][3]; + }elsif($cmd eq $_ && $gold<$dg_data[$_][2]){ + $log .= "お金が足りないよ!
    \n"; + } + } + } + $tm = $cmd = 0; + &shop_menu; + }elsif($tm==25){#売-2 + if($cmd<=0){#消 + $log .= "なんだやめるのかい。で、他にどうするんだ?
    \n"; + }elsif($cmd==1){ + my $v = int(($dg_data[$dg_a][2]-$dg_data[$dg_a][2]/$dg_cnt)/2); + $log .= "$dg_data[$dg_a][1] を $v G で売却しました。
    \n"; + $gold += $v; + $dg_a = $dg_cnt = 0; + } + $tm = $cmd = 0; + &shop_menu; + + # 防具屋 - 買 or 売 + }elsif($tm==30){ + if($cmd<=0){#消 + $log .= "またおこしください。
    \n"; + $tm = $cmd = 0; + &shop_menu; + }elsif($cmd==1){#買-1 + if($sogo==3||$sogo==4){ + $log .= "$sogo_p[$sogo] の烙印ついてる方はお買い上げできません。
    \n"; + $tm=0; + &shop_menu; + }else{ + $log .= "何をお求めですか?
    防具の所持は1個までとなっております。
    \n"; + $tm=32; + require "./inc/ore_sub-shop-p1_$mv_mode\.cgi";&bogu_s; + } + }elsif($cmd==2){#売-1 + if($df_a==0){ + $log .= "$nm さまは防具を所持できません。
    \n"; + $tm = $cmd = 0; + &shop_menu; + }else{ + if($df_a<=10){ + my $v = int(($df_data[$df_a][2]-$df_data[$df_a][2]/$df_cnt)/2); + $log .= "お! 隠し防具の$df_data[$df_a][1] ですね! どこで手に入れたんですか?
    ぜひ $v Gで買い取らせてください。\n"; + $tm=45; + }else{ + my $v = int(($df_data[$df_a][2]-$df_data[$df_a][2]/$df_cnt)/2); + $log .= "そうですね・・・ $df_data[$df_a][1] は $v Gで買い取らせて頂きますが。
    \n"; + $tm=45; + } + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + } + } + }elsif($tm==32){#売-2 + if($cmd<=0){#消 + $log .= "その他はどうしますか?
    \n"; + }else{ + foreach(11 .. $#df_data){ + if($cmd eq $_ && $gold >= $df_data[$_][2]){ + $log .= "$df_data[$_][2]Gを支払い、$df_data[$_][1] を購入しました。
    \n"; + $gold -= $df_data[$_][2]; + $df_a = $_; + $df_cnt = $df_data[$_][3]; + }elsif($cmd eq $_ && $gold<$df_data[$_][2]){ + $log .= "お金が足りません。
    \n"; + } + } + } + $tm = $cmd = 0; + &shop_menu; + }elsif($tm==45){#買-2 + if($cmd<=0){#消 + $log .= "他にどうしますか?
    \n"; + }elsif($cmd==1){ + my $v = int(($df_data[$df_a][2]-$df_data[$df_a][2]/$df_cnt)/2); + $log .= "$df_data[$df_a][1] を $v G で売却しました。
    \n"; + $gold += $v; + $df_a = $df_cnt = 0; + } + $tm = $cmd = 0; + &shop_menu; + + # 道具屋 - 買 or 売 + }elsif($tm==50){ + if($cmd<=0){#消 + $log .= "他なにか御用ですか?
    \n"; + $tm = $cmd = 0; + &shop_menu; + }elsif($cmd==1){#買-1 + if($sogo==3||$sogo==4){ + $log .= "$sogo_p[$sogo] の烙印ついていては買い物はできません。
    \n"; + $tm = $cmd = 0; + &shop_menu; + }else{ + $log .= "何をお買い上げですか?
    ちなみに道具は1個しか所持できません。
    \n"; + $tm=52; + require "./inc/ore_sub-shop-p1_$mv_mode\.cgi";&dogu_s; + } + }elsif($cmd==2){#売-1 + if(!$di_a){ + $log .= "$nm さんは道具を所持していません。
    \n"; + $tm = $cmd = 0; + &shop_menu; + }else{ + if($di_a<=10){ + my $v = int(($di_data[$di_a][2])/2); + $log .= "お! 隠しアイテムの$di_data[$di_a][1] じゃないですか!どこで手に入れたんですか?
    ぜひ $v Gで買い取らせてください。\n"; + $tm=65; + }else{ + my $v = int(($di_data[$di_a][2])/2); + $log .= "そうですねえ、$di_data[$di_a][1] は $v G で買い取ります。
    \n"; + $tm=65; + } + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + } + } + }elsif($tm==52){#買-2 + if($cmd<=0){#消 + $log .= "他何か御用ですか?
    \n"; + }else{ + foreach(11 .. $#di_data){ + if($cmd eq $_ && $gold >= $di_data[$_][2]){ + $log .= "$di_data[$_][2]Gを支払い、$di_data[$_][1] を購入しました。
    \n"; + $gold -= $di_data[$_][2]; + $di_a = $_; + $di_cnt = $di_data[$_][3]; + }elsif($cmd eq $_ && $gold<$di_data[$_][2]){ + $log .= "お金が足りません。お引取り願います。
    \n"; + } + } + } + $tm = $cmd = 0; + &shop_menu; + }elsif($tm==65){ + if($cmd<=0){#消 + $log .= "他何か御用ですか?
    \n"; + }elsif($cmd==1){ + my $v = int(($di_data[$di_a][2])/2); + $log .= "$di_data[$di_a][1] を $v G で売却しました。
    \n"; + $gold += $v; + $di_a = 0; + } + $tm = $cmd = 0; + &shop_menu; + + # 金融業 + }elsif($tm==70){ + if($cmd<=0){#消 + $log .= "ご利用はご計画的に♪
    \n"; + $tm = $cmd = 0; + &shop_menu; + }elsif($cmd==1){#借 + if($sogo==3||$sogo==4){ + $log .= "これ以上は身のためにならないよ。早いトコ返してくれないと恐いオニーサンが来るよ・・・。
    \n"; + $tm = $cmd = 0; + &shop_menu; + }else{ + &syakin; + $log .= "金借りたいのかい。いくら借りたいんだ?
    $vw G $sogo_p[3]の烙印
    $vx G $sogo_p[4]の烙印
     
    烙印は借金を返済するか、他の称号を取得するまで外れません。\n"; + $tm=72; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + + } + }elsif($cmd==2){#返 + if($sogo!=3&&$sogo!=4){ + $log .= "$nm さんに返済義務はないよ。
    \n"; + $tm = $cmd = 0; + &shop_menu; + }else{ + $log .= "やっと借金返済してくれるのかい。$nm さんの返済額は"; + &syakin; + if($sogo==3){ + $log .= "$vw2 Gだよ。\n"; + }elsif($sogo==4){ + $log .= "$vx2 Gだよ。\n"; + } + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + + $tm=74; + } + } + }elsif($tm==72){#借 - 額 + if($cmd<=0){#消 + $log .= "なんだやめるのかい。で、他にどうするんだ?
    \n"; + $tm = $cmd = 0; + &shop_menu; + }elsif($cmd==1){ + &syakin; + $gold +=$vw; + $sogo =3; + $log .= "$vw G を借りました。$nm は$sogo_p[3] の烙印がつきました・・・
    \n"; + $tm = $cmd = 0; + &shop_menu; + }elsif($cmd==2){ + &syakin; + $gold +=$vx; + $sogo =4; + $log .= "$vx G を借りました。$nm は$sogo_p[4] の烙印がつきました・・・
    \n"; + $tm = $cmd = 0; + &shop_menu; + } + }elsif($tm==74){#返 - 額 + if($cmd<=0){#消 + $log .= "早いとこ、金返してくれよ! で、他にどうするんだ?
    \n"; + $tm = $cmd = 0; + &shop_menu; + }elsif($cmd==1){ + &syakin; + if($sogo==3){ + if($gold > $vw2){ + $gold -=$vw2; + $log .= "借金$vw2 G を返済しました。
    \n"; + $sogo =0; + }else{ + $log .= "そんな はした金じゃ足りないよ!
    \n"; + } + }elsif($sogo==4){ + if($gold > $vx2){ + $gold -=$vx2; + $log .= "借金$vx2 G を返済しました。
    \n"; + $sogo =0; + }else{ + $log .= "そんな はした金じゃ足りないよ!
    \n"; + } + } + $tm = $cmd = 0; + &shop_menu; + } + } + + # 宝くじ + elsif($tm>=90 && $tm<120){require './inc/ore_sub-shop-lotto.cgi';&lotto;} + + # 診療所 + elsif($tm>=120 && $tm<140){require './inc/ore_sub-shop-medical.cgi';&medical;} + + # 結婚相談所 + elsif( $tm>=150 && $tm<200 && $mv_mode eq 'pc' && + $lv>=15 && $lv<=50){require './inc/ore_sub-shop-marry.cgi';&marry;} + + &dat_write; + +} + +#------------------------------------------------------------------------------- +#借金計算 +sub syakin { + if($lv < 40){ + $vw = int($lv*1000); + $vx = int($lv*2000); + $vw2 = int($lv*1250); + $vx2 = int($lv*2500); + }else{ + $vw = 40000; + $vx = 80000; + $vw2 = 50000; + $vx2 = 100000; + } +} + + + + + +1; diff --git a/inc/ore_sub-subdue.cgi b/inc/ore_sub-subdue.cgi new file mode 100644 index 0000000..6c767fb --- /dev/null +++ b/inc/ore_sub-subdue.cgi @@ -0,0 +1,91 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +#討伐メニュー +sub subdue{ + + if(!$type){ + + $log .= "エルタニアの地に蔓延る魑魅魍魎を討伐します。
    成功すると地位と賞金が獲得できます。
    \n"; + $tm=0; + $type='討伐'; + &call_mapdata if($mv_mode eq 'pc'); + + &subdue_menu; + + }elsif($type eq '討伐'){ &subdue_exe } + + &dat_write; +} + +sub subdue_menu{ + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; +} + +#------------------------------------------------------------------------------- +#討伐処理(討伐 >> 討伐中へ移行まで) +sub subdue_exe{ + + if(!$tm){ + + if($cmd<=0 || $cmd>$#cmp){ + $log .= "またお越しください…
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }elsif($cmd){ + + if($camp<1){ + $log .= "放浪の身で討伐は行えません
    \n"; + $tm = $cmd = 0; + &call_main_st; + }else{ + my $x = int($g_p[$rank]/3); + if($max_sol<=$my_cs){ + $sol= $max_sol; + }elsif($max_sol>$my_cs){ + $sol= $my_cs; + } + my $y = int($sol/10); + + $log .= "$cmp[$cmd]の魑魅魍魎を討伐します
    \n"; + + $log .= "探索を開始します。
    \n"; + $nation=$cmd; + $tm=0; + $type='討伐中'; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + + $log2 .=qq|$td_end
    \n|; + } + } + } + &dat_write; +} + + + + + +1; diff --git a/inc/ore_sub-subduetime.cgi b/inc/ore_sub-subduetime.cgi new file mode 100644 index 0000000..42f3394 --- /dev/null +++ b/inc/ore_sub-subduetime.cgi @@ -0,0 +1,348 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +#討伐中処理 +sub ws_st { + if(!$tm && !$ck){ + + $log .="$date $cmp[$nation] を探索中です
    \n"; + + # NPC(魑魅魍魎)読み込み + require './inc/ore_sub-npc_2.cgi'; + local $v=int(rand(7)); + &ck_ne_2; + + $log .="
    \n"; + + $log .="$cmp[$nation] に蔓延る $tnm を発見した!
    \n"; + + $log .="戦闘態勢をとります!
    \n"; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|$td_end
    \n|; + + $tm=40; + $ck=1; + }elsif($ck){ + + # 戦闘処理読み込み + require './inc/ore_sub-battle.cgi'; + + if(!$b_n && !$tlr){ + $tm = 0; + $ck = 0; + $nation = 0;#討伐 + $type=''; + + $log .="戦闘中にバグが発生しました!強制的にメイン画面に戻ります
    \n"; + } + + if($tm==40 && $cmd==-1){ + $tm=55; + $log .="

    $tnm との対決!!

    どうしますか?

    \n"; + $log .="

    魑魅魍魎ステータス - $tnm ( HP $thp MP $tmp UA $tua UD $tud LV $tlv )

    \n"; + } + + if($tm==55){ + + if($cmd==10){ + + my $btp = $ag + int(rand($lv)*0.8); + my $bte = $tag+ int(rand($tlv)*0.8); + + if($btp>=$bte){ + $log .="$nm は 脱兎の如く逃げ出した・・・
    評価が著しく下がった
    \n"; + $tm=0; + $v = int(2 + rand(4)); + $rank_exe-=$v; + + $sol=0; + $tnm=''; + $ck=0; + $nation=0;#討伐 + $type=''; + + $vv = int(rand(2)); + if(!$vv){ + $we-- if($we>0); + } + }else{ + $log .="$nm は 脱兎の如く逃げ出した・・・
    しかし! $tnm に追いつかれてしまった!!
    \n"; + $tm=65; + $rank_exe-=1; + } + + }elsif($cmd==20){ + $log .="$tnm の討伐を行なう事に!
    \n"; + $tm=65; + $rank_exe+=1; + } + + }elsif($tm==65){ + + $log .="真剣勝負開始!
    \n"; + $tm=75; + + }elsif($tm==75){ + + &bt_cm; + + if($thp<1){ + # 獲得金 + $G =int(rand(200))+((500*$tlv)-($lv*50)); + $G =1 if($G<1); + $G =int(rand(500))+1500 if($G>2000); + $gold +=$G; + # 経験値 + $E = int((($tlv*2)+$tua+$tud+$tag)*(rand($lv/10)+3))-$lv*2; + $E = int(rand(300)+1300) if($E>1500); + $exe+=$E; + + $thp=0; + $bst =''; + $bt =0; + $log .="$nm は $tnm を倒した!
    \n"; + $log .="$G の金 と $E の経験値を得た!
    \n"; + $log .="
    \n"; + + # 賞金(自国優位) + if($nation==$camp){ + $G =int($my_cg/(rand(6)+15)); + $G =int(rand(500))+1500 if(int(2000>=$G)); + $G =int(rand(1500))+4000 if(int(5000<=$G)); + }else{ + if($nation==1){$G =int($cg1/(rand(11)+20));} + elsif($nation==2){$G =int($cg2/(rand(11)+20));} + elsif($nation==3){$G =int($cg2/(rand(11)+20));} + elsif($nation==4){$G =int($cg2/(rand(11)+20));} + elsif($nation==5){$G =int($cg2/(rand(11)+20));} + + $G =int(rand(500))+500 if(int(1000>=$G)); + $G =int(rand(1000))+2500 if(int(3500<=$G)); + } + + $exe+=$E; + $gold+=$G; + + $tsol=int($tsol/2); + + $log .="$cmp[$nation]から $G の賞金を得た!
    \n";#討伐 + + $V =int(rand(4)); + $sol_lv-=$V; + $rank_exe+=int($V*2)+5; + + # 拾得物処理 1 + if(int(rand(100))==0){ + &syutoku1; + }else{ + $sol=0; + $tnm=''; + $ck = $tm = 0; + $nation=0; + $type=''; + } + + $we++; + if($we>250){ + $log .="エルタニアの地に蔓延る魑魅魍魎の討伐の励みより $nm は $sogo_p[2] の称号を授かった!
    \n"; + $sogo =2; + $we =0; + } + + }elsif($hp<1){ + + $bst =''; + $bt =0; + $ck =0; + $hp =0; + $G=int(rand(10))+1; + $E=int(rand(5))+1; + $gold+=$G; + $exe+=$E; + $log .="あなたは $tnm に敗れ去った…
    \n"; + $log .="$G の金 と $E の経験値を得た
    \n"; + $log .="

    \n"; + + $sol=int($sol/2); + + $rank_exe-=25; + $log .="魑魅魍魎に返り討ちにあうという不名誉な敗北に、
    貴方に対する評価が著しく低下した
    \n"; + if($rank_exe<1){ + $rank--; + $rank=1 if($rank<1); + $next_rank=int(($rank*$rank)*3); + $v=$next_rank-10; + $rank_exe=$v; + $log .="一階級降格されてしまった…
    \n"; + } + + $sol=0; + $tnm=''; + $ck= $tm = 0; + $nation=0;#討伐 + $type=''; + + } + + } + + # 拾得物処理 2 + if($cmd==40){ + &syutoku2; + }elsif($cmd ==41){ + $log .="$nm は 気づかなかったフリをして立ち去った・・・・・・
    \n"; + + $sol=0; + $tnm=''; + $ck = $tm = 0; + $nation=0;#討伐 + $type=''; + } + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + if($tsol<1||$sol<1){ + $log2 .=qq|\n|; + }if($tm==55){ + $log2 .=qq||; + }elsif($tm==65){ + $log2 .=qq|\n|; + }elsif($tm==75){ + &spell_sp; + }elsif($tm>=100){ + $log2 .=qq||; + } + $log2 .=qq|
    |;#テーブルずれ修正 + $log2 .=qq|$td_end
    \n|;#テーブル追加 + } + + &dat_write; + +} + +#拾得物処理 +sub syutoku1{ + + $log .="$tnm が消滅した場所に何か落ちている・・・・・
    $nm は "; + + my $S = int(rand(10)+1); + + # 武具 + if($S == 1){ + $log .="$dg_data[2][1]を発見した!!

    装備する場合、現在所持している武具"; + $tm = 110; + }elsif($S == 2){ + $log .="$dg_data[3][1]を発見した!!

    装備する場合、現在所持している武具"; + $tm = 120; + }elsif($S == 3){ + $log .="$dg_data[4][1]を発見した!!

    装備する場合、現在所持している武具"; + $tm = 130; + + # 道具 + }elsif($S == 4){ + $log .="$di_data[1][1]を発見した!!

    装備する場合、現在所持している道具"; + $tm = 140; + }elsif($S == 5){ + $log .="$di_data[2][1]を発見した!!

    装備する場合、現在所持している道具"; + $tm = 150; + }elsif($S == 6){ + $log .="$di_data[3][1]を発見した!!

    装備する場合、現在所持している道具"; + $tm = 160; + }elsif($S == 7){ + $log .="$di_data[4][1]を発見した!!

    装備する場合、現在所持している道具"; + $tm = 170; + + # 防具 + }elsif($S == 8){ + $log .="$df_data[2][1]を発見した!!

    装備する場合、現在所持している道具"; + $tm = 180; + }elsif($S == 9){ + $log .="$df_data[3][1]を発見した!!

    装備する場合、現在所持している道具"; + $tm = 190; + }elsif($S == 10){ + $log .="$df_data[4][1]を発見した!!

    装備する場合、現在所持している道具"; + $tm = 200; + } + $log .="は破棄されます。
    どうしますか?
    "; +} + +#拾得物処理2 +sub syutoku2{ + $log .="$nm は "; + + # 武具2 + if($tm==110){ + $log .="$dg_data[2][1]"; + $dg_a = 2; + $dg_cnt=$dg_data[2][3]; + }elsif($tm==120){ + $log .="$dg_data[3][1]"; + $dg_a = 3; + $dg_cnt=$dg_data[3][3]; + }elsif($tm==130){ + $log .="$dg_data[4][1]"; + $dg_a = 4; + $dg_cnt=$dg_data[4][3]; + + # 道具2 + }elsif($tm==140){ + $log .="$di_data[1][1]"; + $di_a = 1; + $di_cnt=$di_data[1][3]; + }elsif($tm==150){ + $log .="$di_data[2][1]"; + $di_a = 2; + $di_cnt=$di_data[2][3]; + }elsif($tm==160){ + $log .="$di_data[3][1]"; + $di_a = 3; + }elsif($tm==170){ + $log .="$di_data[4][1]"; + $di_a = 4; + $di_cnt=$di_data[4][3]; + + # 防具2 + }elsif($tm==180){ + $log .="$df_data[2][1]"; + $df_a = 2; + $df_cnt=$df_data[2][3]; + }elsif($tm==190){ + $log .="$df_data[3][1]"; + $df_a = 3; + $df_cnt=$df_data[3][3]; + }elsif($tm==200){ + $log .="$df_data[4][1]"; + $df_a = 4; + $df_cnt=$df_data[4][3]; + } + + $log .="を手に入れた!!
    \n"; + + $sol=0; + $tnm=''; + $ck = $tm = 0; + $nation=0;#討伐 + $type=''; +} + + + + + +1; diff --git a/inc/ore_sub-system.cgi b/inc/ore_sub-system.cgi new file mode 100644 index 0000000..84bbcfa --- /dev/null +++ b/inc/ore_sub-system.cgi @@ -0,0 +1,497 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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'}; # お金 + $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'}; # 敏捷力 + $exe = $DAT{'exe'}; # 経験値 + $rank = $DAT{'rank'}; # 階級 + $rank_exe = $DAT{'rank_exe'}; # 貢献値 + $camp = $DAT{'camp'}; # 所属国 + $sol = $DAT{'sol'}; # 部隊数 + $sol_lv = $DAT{'sol_lv'}; # 部隊訓練度 + $nation = $DAT{'nation'}; # 対象国 + $we = $DAT{'we'}; # 討伐 回数 + $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'}; # 道具 回数 + $sogo = $DAT{'sogo'}; # 称号 + $type = $DAT{'type'}; # 行動判定(行動フラグ) + $tm = $DAT{'tm'}; # 行動判定(行動フラグ) + $bt = $DAT{'bt'}; # 戦闘時敵キャラ判別(行動フラグ) + $bst = $DAT{'bst'}; # 技による能力上昇の判定 + $ck = $DAT{'ck'}; # 戦闘判定(行動フラグ) + $pr = $DAT{'pr'}; # 拘束時間 残り(行動フラグ) + $la = $DAT{'la'}; # 更新時間 + $roku = $DAT{'roku'}; # 前回給料が払われた時間(仕官した時間) + $mes = $DAT{'mes'}; # メッセージ + $tnm = $DAT{'tnm'}; # 名前 敵 + $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'}; # 防具 敵 + $tdg_a = $DAT{'tdg_a'}; # 武器 敵 + $tcp = $DAT{'tcp'}; # 所属国 敵 + $tsol = $DAT{'tsol'}; # 部隊数 敵 + $tsg = $DAT{'tsg'}; # 称号 敵 + $tsol_lv = $DAT{'tsol_lv'}; # 敵部隊訓練度 + $b_n = $DAT{'b_n'}; # 戦闘限界ターン + $b_v = $DAT{'b_v'}; # 現在のターン数 + $n = $_; # 配列インデックス + + $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,"$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の定員数 + $cn2=$CP{'cn2'}; + $cg2=$CP{'cg2'}; + $cf2=$CP{'cf2'}; + $cs2=$CP{'cs2'}; + $ce2=$CP{'ce2'}; + $c2 =$CP{'c2'}; + $c2a=$CP{'c2a'}; + $cn3=$CP{'cn3'}; + $cg3=$CP{'cg3'}; + $cf3=$CP{'cf3'}; + $cs3=$CP{'cs3'}; + $ce3=$CP{'ce3'}; + $c3 =$CP{'c3'}; + $c3a=$CP{'c3a'}; + $cn4=$CP{'cn4'}; + $cg4=$CP{'cg4'}; + $cf4=$CP{'cf4'}; + $cs4=$CP{'cs4'}; + $ce4=$CP{'ce4'}; + $c4 =$CP{'c4'}; + $c4a=$CP{'c4a'}; + $cn5=$CP{'cn5'}; + $cg5=$CP{'cg5'}; + $cf5=$CP{'cf5'}; + $cs5=$CP{'cs5'}; + $ce5=$CP{'ce5'}; + $c5 =$CP{'c5'}; + $c5a=$CP{'c5a'}; + $set=$CP{'set'}; + $all_mem=$CP{'all_mem'}; + $goal_no=$CP{'goal_no'}; # 現在何期か。 + $hasya=$CP{'hasya'}; + $hcamp=$CP{'hcamp'}; + $wr_mes=$CP{'wr_mes'}; + + if($camp==1){ + $my_cn=$cn1; + $my_cg=$cg1; + $my_cf=$cf1; + $my_cs=$cs1; + $my_ce=$ce1; + }elsif($camp==2){ + $my_cn=$cn2; + $my_cg=$cg2; + $my_cf=$cf2; + $my_cs=$cs2; + $my_ce=$ce2; + }elsif($camp==3){ + $my_cn=$cn3; + $my_cg=$cg3; + $my_cf=$cf3; + $my_cs=$cs3; + $my_ce=$ce3; + }elsif($camp==4){ + $my_cn=$cn4; + $my_cg=$cg4; + $my_cf=$cf4; + $my_cs=$cs4; + $my_ce=$ce4; + }elsif($camp==5){ + $my_cn=$cn5; + $my_cg=$cg5; + $my_cf=$cf5; + $my_cs=$cs5; + $my_ce=$ce5; + } +} + +# ログデータ読み込み +sub read_data{ + + # キャラデータ読み込み + &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]){ + print "Status: 204\n\n"; + if($mode ne "mes_write"){ + &unlock($lock) if $lock_check; + } + exit; + } + } + + # 国データ読み込み + &cdata_open; + + $id_p = $id; + $pw_p = $pw; + + $next_lv = int(($lv*$lv)*10); + $max_sol = $g_p[$rank]; + $sol_lv = 1 if($sol_lv<1); + $sol_lv = 100 if($sol_lv>100); + $max_hp = 9999 if($max_hp>9999); + $max_mp = 9999 if($max_mp>9999); + $mp = 1 if($mp<1); + $ua = 999 if($ua>999); + $ud = 999 if($ud>999); + $lr = 999 if($lr>999); + $ag = 999 if($ag>999); + $rank = 14 if($rank>14); + $rank_exe = 0 if($rank_exe<1); + $lv = 1 if($lv<1); + $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; + + $data_reset = int(($cn1+$cn2+$cn3+$cn4+$cn5) * $reset_point); + +} + +#------------------------------------------------------------------------------- +# ファイル OUT 関連 + +# 国データ&キャラデータ書き込み +sub write_data{ + &cdat_write; + &dat_write; +} + +# 国データ書き込み +sub cdat_write{ + $cdat = "cn1;$cn1,cg1;$cg1,cf1;$cf1,cs1;$cs1,ce1;$ce1,c1;$c1,c1a;$c1a,cn2;$cn2,cg2;$cg2,cf2;$cf2,cs2;$cs2,ce2;$ce2,c2;$c2,c2a;$c2a,cn3;$cn3,cg3;$cg3,cf3;$cf3,cs3;$cs3,ce3;$ce3,c3;$c3,c3a;$c3a,cn4;$cn4,cg4;$cg4,cf4;$cf4,cs4;$cs4,ce4;$ce4,c4;$c4,c4a;$c4a,cn5;$cn5,cg5;$cg5,cf5;$cf5,cs5;$cs5,ce5;$ce5,c5;$c5,c5a;$c5a,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 (OUT,">$cdatfile") || &error("open error:$cdatfile",1); + print OUT $cdat; + 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,sol_lv;$sol_lv,nation;$nation,we;$we,camp;$camp,pr;$pr,tnm;$tnm,tid;$tid,thp;$thp,tlr;$tlr,tag;$tag,tsol;$tsol,tsg;$tsg,tsol_lv;$tsol_lv,b_n;$b_n,b_v;$b_v,thp_max;$thp_max,tlv;$tlv,tdg_a;$tdg_a,tdf_a;$tdf_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,di_a;$di_a,di_cnt;$di_cnt,sogo;$sogo,mes;$mes,info_mes;$info_mes,\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,cn2;$cn2,cg2;$cg2,cf2;$cf2,cs2;$cs2,ce2;$ce2,c2;$c2,c2a;$c2a,cn3;$cn3,cg3;$cg3,cf3;$cf3,cs3;$cs3,ce3;$ce3,c3;$c3,c3a;$c3a,cn4;$cn4,cg4;$cg4,cf4;$cf4,cs4;$cs4,ce4;$ce4,c4;$c4,c4a;$c4a,cn5;$cn5,cg5;$cg5,cf5;$cf5,cs5;$cs5,ce5;$ce5,c5;$c5,c5a;$c5a,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 : $!"; +} + +#------------------------------------------------------------------------------- +# ファイルロック関連(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'}>1024); + read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); + }else{ + $buffer = $ENV{'QUERY_STRING'}; + &error("投稿量が大きすぎます") if(length($buffer)>800) + } + @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;#削除不可 diff --git a/inc/ore_sub-training_mv.cgi b/inc/ore_sub-training_mv.cgi new file mode 100644 index 0000000..779114c --- /dev/null +++ b/inc/ore_sub-training_mv.cgi @@ -0,0 +1,243 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +#修行メニュー +sub training{ + + if(!$type){ + + if($hp<4){ + $log .= "体力が少なすぎます
    \n"; + $tm= $cmd = 0; + $type=''; + &call_main_st; + }else{ + $log .= "修行を行います
    \n"; + $tm= $cmd = 0; + $type = '修行'; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + } + } + &dat_write; +} + +#------------------------------------------------------------------------------- +# 修行処理1 +sub training_exe{ + + if($cmd==0){ + $log .= "修行を中止します
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + + }elsif($cmd==1){ + + open(IN,"$usrdata$tid\.cgi") || &error("Open Error : $usrdata$tid\.cgi",1); + $tdat = ; + close(IN); + + %VS = ''; + my @prats = split(/,/,$tdat); + foreach $prats (@prats){ + my ($u,$q) = split(/;/,$prats); + $VS{$u} = $q; + } + + $tid = $VS{'id'}; # ID + $tnm = $VS{'nm'}; # 名前 + $tlv = $VS{'lv'}; # レベル + $thp = $VS{'max_hp'}; # HP + $thp_max= $VS{'max_hp'}; # MAX_HP + $tmp = $VS{'max_mp'}; # MP + $tua = $VS{'ua'}; # UA + $tud = $VS{'ud'}; # UD + $tag = $VS{'ag'}; # AG + $tcp = $VS{'camp'}; # 所属 + $tsg = $VS{'sogo'}; # 称号 + + $tdf_a = $VS{'df_a'}; # 防具 + $tdg_a = $VS{'dg_a'}; # 武具 + + $log .="前回の対戦相手と修行を行います。
    試合開始!
    \n"; + $type = '修行中'; + $tm = 0; + + $cmd =-1; +# $log2 .=qq|
    \n|; +# $log2 .=qq|\n\n|; +# $log2 .=qq|\n|; +# $log2 .=qq|$td_end
    \n|; + + # 行動セッション加算 + $act_cnt++; + +# &dat_write; + + require './inc/ore_sub-battle.cgi'; &bt_st; + + }else{&sele_list;} + +} + +#------------------------------------------------------------------------------- +# 修行リスト表示 +sub sele_list { + + local(@usrfile,@BT_LIST,@tdat); + + # 参加者データファイル一覧取得 + &usrdata_read; + + # 表示参加者ランダム選出 + foreach(0 .. $bt_count){ + $bt_list = int(rand($#usrfile)); + + $flag = 0; + foreach(0 .. $#BT_LIST){ + $flag = 1 if $bt_list eq $BT_LIST[$_]; + } + push(@BT_LIST,$bt_list) if !$flag; + } + @BT_LIST = sort(@BT_LIST); + + # ランダム選出参加者のデータ一括読み込み + foreach (0 .. $#BT_LIST) { + open(IN,"$usrdata$usrfile[$BT_LIST[$_]]") || &error("Can't open $usrfile[$BT_LIST[$_]].cgi",1); + push(@tdat,); + close(IN); + } + + # 参加者ステータス取得 + foreach(0 ..$#tdat){ + %R = ''; + my @prats = split(/,/,$tdat[$_]); + foreach $prats (@prats){ + my($y,$x) = split(/;/,$prats); + $R{$y} = $x; + } + + if($nm ne $R{'nm'}){ + $NM_V{$R{'nm'}} = $R{'nm'}; # 名前 + $HP_MAX_V{$R{'nm'}} = $R{'max_hp'}; # HP + $MP_MAX_V{$R{'nm'}} = $R{'max_mp'}; # MP + $LV_V{$R{'nm'}} = $R{'lv'}; # レベル + $TM_V{$R{'nm'}} = $R{'tm'}; # 行動 + $UA_V{$R{'nm'}} = $R{'ua'}; # UA + $UD_V{$R{'nm'}} = $R{'ud'}; # UD + $LR_V{$R{'nm'}} = $R{'lr'}; # LR + $AG_V{$R{'nm'}} = $R{'ag'}; # AG + $CP_V{$R{'nm'}} = $R{'camp'}; # 所属 + $SG_V{$R{'nm'}} = $R{'sogo'}; # 称号 + $N_M{$R{'nm'}} = $R{'id'}; # ID + } + } + + # 修行リスト表示 + if(!$tm){ + + $l = $rk = 1; + foreach $nm (sort sclv keys(%LV_V)){ + $lv_v = $LV_V{$nm}; + next if($lv_v<=0); + if($lv_v<$prv_lv){ $rk = $l; } + + $log .=qq|$rk位 Lv$lv_v |; + + # 称号 + $log .= ($SG_V{$nm} > 0) ? "$NM_V{$nm} [$sogo_p[$SG_V{$nm}]]" : "$NM_V{$nm}"; + + $log .=qq| HP$HP_MAX_V{$nm}/MP$MP_MAX_V{$nm}/UA$UA_V{$nm}/UD$UD_V{$nm}/AG$AG_V{$nm}
    \n|; + + $prv_lv = $lv_v; + $l++; + } + + $log .=qq|中止する |; + + $tm=1; + + # 行動セッション加算 + $act_cnt++; + + $layout_flag=1; + &dat_write; + } + + # 対戦相手割り当て + elsif($tm){ + + if($com){ + open(IN,"$usrdata$com\.cgi") || &error("Open Error : $usrdata$com\.cgi",1); + $tdat = ; + close(IN); + + %VS = ''; + my @prats = split(/,/,$tdat); + foreach $prats (@prats){ + my ($u,$q) = split(/;/,$prats); + $VS{$u} = $q; + } + + $tid = $VS{'id'}; # ID + $tnm = $VS{'nm'}; # 名前 + $tlv = $VS{'lv'}; # レベル + $thp = $VS{'max_hp'}; # HP + $thp_max= $VS{'max_hp'}; # MAX_HP + $tmp = $VS{'max_mp'}; # MP + $tua = $VS{'ua'}; # UA + $tud = $VS{'ud'}; # UD + $tag = $VS{'ag'}; # AG + $tcp = $VS{'camp'}; # 所属 + $tsg = $VS{'sogo'}; # 称号 + + $tdf_a = $VS{'df_a'}; # 防具 + $tdg_a = $VS{'dg_a'}; # 武具 + + $log .="試合開始!
    \n"; + $type = '修行中'; + $tm = 0; + + require './inc/ore_sub-battle.cgi'; &bt_st; + } + elsif(!$com){ + $log .="中止した…
    \n"; + $type = ''; + $tm = 0; + &call_main_st; + } + } + +# &dat_write; +} + + + + + +1;#削除不可 + + + + + +1;#削除不可 diff --git a/inc/ore_sub-training_pc.cgi b/inc/ore_sub-training_pc.cgi new file mode 100644 index 0000000..bf772bd --- /dev/null +++ b/inc/ore_sub-training_pc.cgi @@ -0,0 +1,274 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # +# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # +# BLANK BOARD [ http://pom.to/ ] # +#-----------------------------------------------------------# +# 修行 PC用 Version 1.1 # +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +#修行メニュー +sub training{ + + if(!$type){ + + if($hp<4){ + $log .= "体力が少なすぎます。
    \n"; + $tm= $cmd = 0; + $type=''; + &call_main_st; + }else{ + $log .= "修行を行います。
    \n"; + $tm= $cmd = 0; + $type = '修行'; + + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; + } + } + &dat_write; +} + +#------------------------------------------------------------------------------- +# 修行処理1 +sub training_exe{ + + if($cmd==0){ + $log .= "修行を中止します
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + + }elsif($cmd==1 && !$com){ + + # GETによる不正処理にペナルティ + &penalty if($mv_mode eq 'pc' && $method eq 'POST' && !$post_flag); + + open(IN,"$usrdata$tid\.cgi") || &error("Open Error : $usrdata$tid\.cgi",1); + $tdat = ; + close(IN); + + %VS = ''; + my @prats = split(/,/,$tdat); + foreach $prats (@prats){ + my ($u,$q) = split(/;/,$prats); + $VS{$u} = $q; + } + + $tid = $VS{'id'}; # ID + $tnm = $VS{'nm'}; # 名前 + $tlv = $VS{'lv'}; # レベル + $thp = $VS{'max_hp'}; # HP + $thp_max= $VS{'max_hp'}; # MAX_HP + $tmp = $VS{'max_mp'}; # MP + $tua = $VS{'ua'}; # UA + $tud = $VS{'ud'}; # UD + $tag = $VS{'ag'}; # AG + $tcp = $VS{'camp'}; # 所属 + $tsg = $VS{'sogo'}; # 称号 + + $tdf_a = $VS{'df_a'}; # 防具 + $tdg_a = $VS{'dg_a'}; # 武具 + + $log .="前回の対戦相手と修行を行います。
    試合開始!
    \n"; + $type = '修行中'; + $tm = 0; + + $cmd =-1; +# $log2 .=qq|
    \n|; +# $log2 .=qq|\n\n|; +# $log2 .=qq|\n|; +# $log2 .=qq|$td_end
    \n|; + + # 行動セッション加算 + $act_cnt++; + +# &dat_write; + + require './inc/ore_sub-battle.cgi'; &bt_st; + + }else{&sele_list;} + +} + +#------------------------------------------------------------------------------- +# 修行リスト表示 +sub sele_list { + + # GETによる不正処理にペナルティ + &penalty if($mv_mode eq 'pc' && $method eq 'POST' && !$post_flag); + + local(@usrfile,@BT_LIST,@tdat); + + # 参加者データファイル一覧取得 + &usrdata_read; + + # 表示参加者ランダム選出 + foreach(0 .. $bt_count){ + $bt_list = int(rand($#usrfile)); + + $flag = 0; + foreach(0 .. $#BT_LIST){ + $flag = 1 if $bt_list eq $BT_LIST[$_]; + } + push(@BT_LIST,$bt_list) if !$flag; + } + @BT_LIST = sort(@BT_LIST); + + # ランダム選出参加者のデータ一括読み込み + foreach (0 .. $#BT_LIST) { + open(IN,"$usrdata$usrfile[$BT_LIST[$_]]") || &error("Can't open $usrfile[$BT_LIST[$_]].cgi",1); + push(@tdat,); + close(IN); + } + + # 参加者ステータス取得 + foreach(0 ..$#tdat){ + %R = ''; + my @prats = split(/,/,$tdat[$_]); + foreach $prats (@prats){ + my($y,$x) = split(/;/,$prats); + $R{$y} = $x; + } + + if($nm ne $R{'nm'}){ + $NM_V{$R{'nm'}} = $R{'nm'}; # 名前 + $HP_MAX_V{$R{'nm'}} = $R{'max_hp'}; # HP + $MP_MAX_V{$R{'nm'}} = $R{'max_mp'}; # MP + $LV_V{$R{'nm'}} = $R{'lv'}; # レベル + $TM_V{$R{'nm'}} = $R{'tm'}; # 行動 + $UA_V{$R{'nm'}} = $R{'ua'}; # UA + $UD_V{$R{'nm'}} = $R{'ud'}; # UD + $LR_V{$R{'nm'}} = $R{'lr'}; # LR + $AG_V{$R{'nm'}} = $R{'ag'}; # AG + $CP_V{$R{'nm'}} = $R{'camp'}; # 所属 + $SG_V{$R{'nm'}} = $R{'sogo'}; # 称号 + $N_M{$R{'nm'}} = $R{'id'}; # ID + } + } + + # 修行リスト表示 + if(!$tm){ + + $log .=qq|
    \n|; + $log .=qq|\n\n|; + $log .=qq|\n|; + $log .=qq|\n\n|; + + $l = $rk = 1; + foreach $nm (sort sclv keys(%LV_V)){ + $lv_v = $LV_V{$nm}; + next if($lv_v<=0); + if($lv_v<$prv_lv){ $rk = $l; } + + $log .= ($agent !~ /Mac/) ? + qq|\n|; + + $prv_lv = $lv_v; + $l++; + } + $log .="
    順位LV名前体力/精神攻撃/防御/指揮/敏捷所属
    \n|: + qq|
    \n|; + + $log .="$rk$lv_v"; + + # 称号 + $log .= ($SG_V{$nm} > 0) ? "$NM_V{$nm} [$sogo_p[$SG_V{$nm}]]" : "$NM_V{$nm}"; + + $log .=qq|$HP_MAX_V{$nm}/$MP_MAX_V{$nm}$UA_V{$nm}/$UD_V{$nm}/$LR_V{$nm}/$AG_V{$nm}$cmp[$CP_V{$nm}]
    \n"; + $log .="
    \n"; + $log .="\n"; + + $tm=1; + + # 行動セッション加算 + $act_cnt++; + + $layout_flag=1; + &dat_write; + } + + # 対戦相手割り当て + elsif($tm){ + + if($com){ + open(IN,"$usrdata$com\.cgi") || &error("Open Error : $usrdata$com\.cgi",1); + $tdat = ; + close(IN); + + %VS = ''; + my @prats = split(/,/,$tdat); + foreach $prats (@prats){ + my ($u,$q) = split(/;/,$prats); + $VS{$u} = $q; + } + + $tid = $VS{'id'}; # ID + $tnm = $VS{'nm'}; # 名前 + $tlv = $VS{'lv'}; # レベル + $thp = $VS{'max_hp'}; # HP + $thp_max= $VS{'max_hp'}; # MAX_HP + $tmp = $VS{'max_mp'}; # MP + $tua = $VS{'ua'}; # UA + $tud = $VS{'ud'}; # UD + $tag = $VS{'ag'}; # AG + $tcp = $VS{'camp'}; # 所属 + $tsg = $VS{'sogo'}; # 称号 + + $tdf_a = $VS{'df_a'}; # 防具 + $tdg_a = $VS{'dg_a'}; # 武具 + + $log .="試合開始!
    \n"; + $type = '修行中'; + $tm = 0; +# $log2 .=qq|$td_end\n|; + + require './inc/ore_sub-battle.cgi'; &bt_st; + } + elsif(!$com){ + $log .="中止した…
    \n"; + $type = ''; + $tm = 0; + &call_main_st; + } + } + +# &dat_write; +} + +# 不正GET処理のペナルティ +sub penalty{ + $pr=3600*24*3; + $sogo=4; + $camp=0; + + $tm = $cmd = 0; + $type='服役中'; + $max_hp =int($max_hp*0.8); + $max_mp =int($max_mp*0.8); + $ua =int($ua*0.8); + $ud =int($ud*0.8); + $lr =int($lr*0.8); + $ag =int($ag*0.8); + + &dat_write; + + &error("不正処理です。ペナルティが発生します。",1); +} + + + + + +1;#削除不可 diff --git a/inc/ore_sub-war.cgi b/inc/ore_sub-war.cgi new file mode 100644 index 0000000..a6e4582 --- /dev/null +++ b/inc/ore_sub-war.cgi @@ -0,0 +1,148 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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.1 +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +#戦争メニュー +sub war{ + + if(!$type){ + + $log .= "戦争を実行します。攻め込む国を選んで下さい
    \n"; + $tm=0; + $type='戦争'; + &call_mapdata if($mv_mode eq 'pc'); + + &war_menu; + } + &dat_write; +} + +sub war_menu{ + $log2 .=qq|
    \n|; + $log2 .=qq|\n| if($mv_mode eq 'pc'); + $log2 .=qq|\n\n|; + + $log2 .=qq|
    \n|; + $log2 .=qq|$td_end
    \n|; +} + +#------------------------------------------------------------------------------- +#戦争処理(戦争 >> 戦争中へ移行まで) +sub war_exe{ + + if(!$tm){ + if($camp<=0){ + $log .= "放浪の身で戦争は起こせません
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }elsif($sogo==4){ + $log .= "まずは借金を返済して$sogo_p[$sogo] の烙印を消してください。
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }else{ + if($cmd<=0 || $cmd>$#cmp){ + $log .= "戦争を中止します
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }elsif($cmd>0){ + $v=$cmd; + if($v==$camp){ + $log .= "自国には攻め込めません
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }elsif( ($cmd==1&&$cn1==0)|| + ($cmd==2&&$cn2==0)|| + ($cmd==3&&$cn3==0)|| + ($cmd==4&&$cn4==0)|| + ($cmd==5&&$cn5==0)){ + $log .= "国力0の国を攻めることはできません。
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }elsif($v==0){ + $log .= "
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }else{ + $x=int($g_p[$rank]/3); + if($max_sol<=$my_cs){ + $sol=$max_sol; + }elsif($max_sol>$my_cs){ + $sol=$my_cs; + } + $y=int($sol/10); + if($my_cs<$x){ + $log .= "兵数が少なすぎます。予\備\兵\数を1/3以上確保して下さい
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }elsif($my_cg<$y){ + $log .= "戦争を行なうだけのお金が我が国にはありません。
    出撃兵数の約\十\分の一の金が必要です
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }elsif($my_cf<$sol){ + $log .= "戦争を行なうだけの兵糧がありません。
    出撃兵数と同数の兵糧が必要です
    \n"; + $tm = $cmd = 0; + $type=''; + &call_main_st; + }else{ + $log .= "$cmp[$v]に攻め込みます
    \n"; + + 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); + } + + $log .= "行軍開始します。敵国国境まで$GMW時間です
    \n"; + $nation=$v; + $pr=$GMT; + $tm=0; + $type='戦争中'; + } + } + } + } + } + &write_data; +} + + + + + +1; diff --git a/inc/ore_sub-wartime.cgi b/inc/ore_sub-wartime.cgi new file mode 100644 index 0000000..e6e3918 --- /dev/null +++ b/inc/ore_sub-wartime.cgi @@ -0,0 +1,876 @@ +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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/ # +#-----------------------------------------------------------# + +#------------------------------------------------------------------------------- +#戦争中処理 +sub wr_st { + + &syogo; + + if(!$ck){ + $log .="$date $cmp[$nation] に進入しました
    \n"; + $tm=0; + + &usrdata_read; + + $sach=0; + while($sach<15){ + + my $tg = int(rand($#usrfile)); + + open(IN,"$usrdata$usrfile[$tg]") || &error("Can't open $usrfile[$tg].cgi",1); + $tdat=; + close(IN); + + # 参加者ステータス取得 + %DAT = ''; + @prats = split(/,/,$tdat); + foreach $prats (@prats){ + ($key,$v) = split(/;/,$prats); + $DAT{$key} = $v; + } + + $z = ($lv-20); + + if ($nation==$DAT{'camp'} && $DAT{'lv'}>$z){ + $tnm = $DAT{'nm'}; #名前 敵 + $tlv = $DAT{'lv'}; #レベル 敵 + $thp = $DAT{'max_hp'}; #HP + $thp_max= $DAT{'max_hp'}; #HP + $tmp = $DAT{'max_mp'}; #MP + $tua = $DAT{'ua'}; #UA + $tud = $DAT{'ud'}; #UD + $tag = $DAT{'ag'}; #AG + $tcp = $DAT{'camp'}; #所属 + $tdf_a = $DAT{'df_a'}; #防具 敵 + $tdg_a = $DAT{'dg_a'}; #武具 敵 + $tlr = $DAT{'lr'}; #LR + $tsol = $g_p[$DAT{'rank'}];#階級 + $tsol_lv= $DAT{'sol_lv'}; # + $ck=1; + } + $sach++; + } + + # NPC読み込み + if(!$tnm){ + require './inc/ore_sub-npc_1.cgi'; + local $v=int(rand(5)); + &ck_ne_1; + } + + if($nation==1){ + $t_cs=$cs1; + }elsif($nation==2){ + $t_cs=$cs2; + }elsif($nation==3){ + $t_cs=$cs3; + }elsif($nation==4){ + $t_cs=$cs4; + }elsif($nation==5){ + $t_cs=$cs5; + } + + + if($tsol<=$t_cs){ + $t_cs-=$tsol; + }elsif($tsol>$t_cs){ + $tsol=$t_cs; + } + + if($nation==1){ + $cs1-=$tsol; + }elsif($nation==2){ + $cs2-=$tsol; + }elsif($nation==3){ + $cs3-=$tsol; + }elsif($nation==4){ + $cs4-=$tsol; + }elsif($nation==5){ + $cs5-=$tsol; + } + + + if($tsol<100){ + $log .="$cmp[$nation] 側は\予\備\兵不足の為、市民を急遽徴兵したようだ
    \n"; + $tsol=$g_p[$DAT{'rank'}]; + if($nation==1){ + $cn1-=100; + $cn1=0 if($cn1<1); + }elsif($nation==2){ + $cn2-=100; + $cn2=0 if($cn2<1); + }elsif($nation==3){ + $cn3-=100; + $cn3=0 if($cn3<1); + }elsif($nation==4){ + $cn4-=100; + $cn4=0 if($cn4<1); + }elsif($nation==5){ + $cn5-=100; + $cn5=0 if($cn5<1); + } + + &hist_write;#国ログ + + } + + if($tsol<100){ + $tsol=$bs_h[$v]; + } + + $b_n = int((rand(6))+5); + $log .="今回の作戦の戦闘限界ターンは $b_n ターンです
    \n"; + $b_v=0; + + $log .="
    \n"; + + $log .="$cmp[$nation] から $tnm が率いる防衛部隊が出撃してきた!
    \n"; + + $log .="
    \n"; + + $log .="侵攻作戦を実行に移します!戦闘開始!
    \n"; + + $log2 .="
    \n"; + $log2 .="\n" if($mv_mode eq 'pc'); + $log2 .="\n"; + $log2 .="\n"; + + $log .="
    \n"; + + $ck=1; + }elsif($ck==1){ + + # 戦闘処理読み込み + require './inc/ore_sub-battle.cgi'; + + $j=int($b_n-$b_v); + $j=0 if($j<1); + $log .="

    $cmp[$camp]軍 $nm $cl[$rank] 指揮($lr) 部隊数($sol) VS $cmp[$nation]軍 $tnm 指揮($tlr) 部隊数($tsol)

    \n"; + + $log .="

    - 戦闘限界まであと $j ターン -

    \n"; + + $log .="
    \n"; + + $qz = int($lv-20); + + if($b_n eq'' && $tlr eq''){ + $tm = $ck = $cmd = 0; + $nation = 0; + $type=''; + $log .="戦闘中にバグが発生しました!強制的にメイン画面に戻ります
    \n"; + &call_main_st; + } + + if($j>2 && $tm<10 && $cmd !=-1){ + my $l=int(rand(5)); + if($l==0 && $qz<$tlv){ + $tm=50; + $log .="

    なんと敵軍を指揮する $tnm から一騎討ちの申\し込みが!

    どうしますか?

    \n"; + + $log .="

    敵将ステータス - $tnm ( HP $thp MP $tmp UA $tua UD $tud LV $tlv )

    \n"; + + } + } + + if($tm==50){ + + if($cmd==10){ + $log .="一騎討ちの申\し込みを断った
    評価がほんの少し下がった
    \n"; + $tm=0; + $rank_exe-=1; + }elsif($cmd==20){ + $log .="$tnm の挑戦を受けてこの戦いの勝敗を架けた一騎討ちを行なう事に!
    \n"; + $tm=60; + $rank_exe+=1; + } + + }elsif($tm==60){ + + $log .="真剣勝負開始!
    \n"; + $tm=70; + + }elsif($tm==70){ + + # 戦闘処理呼び出し + &bt_cm; + + if($thp<1){ + $G =int(rand(200))+((500*$tlv)-($lv*50)); + $G =1 if($G<1); + $G =int(rand(500))+1500 if($G>2000); + $gold +=$G; + $E =int((((((rand(5))+5)+$tlv)*2)*0.8)-$lv); + $E =1 if($E<1); + $E =int(rand(50))+250 if($E>300); + $exe+=$E; + $thp=0; + $bst =''; + $bt =0; + $log .="$nm は $tnm を倒した!
    \n"; + $log .="$G の金 と $E の経験値を得た!
    \n"; + $log .="

    \n"; + + $H =int(rand(51)); $E = int((100+$H)*$lv); + $E = int((rand(500))+1800) if($E>2000); + $G = 20000; + #改造前は50+$H + $N = $H+150; + #ここまで + $exe+=$E; + $gold+=$G; + + if($camp==1){ + $cs1+=int($sol); + $cn1+=$N; + }elsif($camp==2){ + $cs2+=int($sol); + $cn2+=$N; + }elsif($camp==3){ + $cs3+=int($sol); + $cn3+=$N; + }elsif($camp==4){ + $cs4+=int($sol); + $cn4+=$N; + }elsif($camp==5){ + $cs5+=int($sol); + $cn5+=$N; + } + + $tsol=int($tsol/2); + + if($nation==1){ + $cs1+=$tsol; + }elsif($nation==2){ + $cs2+=$tsol; + }elsif($nation==3){ + $cs3+=$tsol; + }elsif($nation==4){ + $cs4+=$tsol; + }elsif($nation==5){ + $cs5+=$tsol; + } + + if($nation==1){ + $cn1-=$N; + $cn1=0 if($cn1<1); + }elsif($nation==2){ + $cn2-=$N; + $cn2=0 if($cn2<1); + }elsif($nation==3){ + $cn3-=$N; + $cn3=0 if($cn3<1); + }elsif($nation==4){ + $cn4-=$N; + $cn4=0 if($cn4<1); + }elsif($nation==5){ + $cn5-=$N; + $cn5=0 if($cn5<1); + } + + $log .="敵軍は $tnm の敗北に戦意を喪失しました!将を欠いた部隊など敵ではありません
    敵軍を追撃し、かなりの被害を与えました!
    \n"; + + $log .="$cmp[$nation]から $N の国力を奪いました
    更に$E の経験値と $G の報酬を得た!
    \n"; + + $wr_mes ="$date $cmp[$camp] の $syogo が $cmp[$nation] に侵攻、$tnm と一騎討ちの末これを下し $N の国力を奪う事に成功したようです"; + + &touitu; + + $V =int(rand(6))+5; + $sol_lv-=$V; + $rank_exe+=int($V*2)+5; + $sol=0; + $tnm=''; + $ck = $tm = $cmd = 0; + $nation=0; + $type=''; + + &hist_write;#国ログ + + }elsif($hp<1){ + + $bst =''; + $bt =0; + $ck =0; + $hp =0; + $G=int(rand(10))+1; + $E=int(rand(5))+1; + $gold+=$G; + $exe+=$E; + $log .="あなたは $tnm に敗れ去った…
    \n"; + $log .="$G の金 と $E の経験値を得た
    \n"; + $log .="

    \n"; + + $sol=int($sol/2); + + if($camp==1){ + $cs1+=int($sol); + $cn1+=$N; + }elsif($camp==2){ + $cs2+=int($sol); + $cn2+=$N; + }elsif($camp==3){ + $cs3+=int($sol); + $cn3+=$N; + }elsif($camp==4){ + $cs4+=int($sol); + $cn4+=$N; + }elsif($camp==5){ + $cs5+=int($sol); + $cn5+=$N; + } + + if($nation==1){ + $cs1+=$tsol; + }elsif($nation==2){ + $cs2+=$tsol; + }elsif($nation==3){ + $cs3+=$tsol; + }elsif($nation==4){ + $cs4+=$tsol; + }elsif($nation==5){ + $cs5+=$tsol; + } + + $log .="一騎討ちに敗れ指揮官を失ったあなたの部隊は敵にかなりの損害を与えられた…
    \n"; + + $rank_exe-=15; + $log .="部隊全滅という不名誉な敗北に、貴方に対する評価が著しく低下した
    \n"; + if($rank_exe<1){ + $rank--; + $rank=1 if($rank<1); + $next_rank=int(($rank*$rank)*3); + $v=$next_rank-10; + $rank_exe=$v; + $log .="一階級降格されてしまった…
    \n"; + } + + $wr_mes ="$date $cmp[$camp] の $syogo が $cmp[$nation] に侵攻、$tnm と一騎討ちを演じるが敗北し部隊は敗走したようです"; + + $sol=0; + $tnm=''; + $ck = $tm = $cmd = 0; + $nation=0; + $type=''; + + &hist_write;#国ログ + + } + + }elsif($tm<1){ + + if($cmd==10){ + + my $btp = $ag + int(rand($lv/2) +1); + my $bte = $tag+ int(rand($tlv/2)+1); + + if($j<3){ + $log .="ここまで戦闘が進行した状態での退却は不\可\能\です
    \n"; + $b_n+=1; + }elsif($btp<$bte){ + $log .="敵軍に逃走経路を塞がれ、もはや撤退は不可能です。
    \n"; + $b_n+=1; + }else{ + + $log .="残念ですが作戦を中止し退却します
    \n"; + + if($camp==1){ + $cs1+=int($sol); + }elsif($camp==2){ + $cs2+=int($sol); + }elsif($camp==3){ + $cs3+=int($sol); + }elsif($camp==4){ + $cs4+=int($sol); + }elsif($camp==5){ + $cs5+=int($sol); + } + + if($nation==1){ + $cs1+=$tsol; + }elsif($nation==2){ + $cs2+=$tsol; + }elsif($nation==3){ + $cs3+=$tsol; + }elsif($nation==4){ + $cs4+=$tsol; + }elsif($nation==5){ + $cs5+=$tsol; + } + + $wr_mes ="$date $cmp[$camp] の $syogo が $cmp[$nation] に侵攻、 $tnm 防衛部隊と交戦。余儀なく撤退した模様"; + + $sol_lv-=int(rand(40)); + $rank_exe-=1; + $rank_exe = 0 if($rank_exe<1); + + $tnm=''; + $ck = $tm = $cmd = 0; + $nation=0; + $type=''; + + &hist_write;#国ログ + + } + }elsif($cmd==1){ + $l=int(rand(3)); + if($l==0){ + $x=int(($sol/100)+($lr*10))+$sol_lv; + $y=int(($tsol/100)+($tlr*10))+$tsol_lv; + $x=1 if($x<1); + $y=1 if($y<1); + $log .="$nm (攻撃陣形) VS $tnm (攻撃陣形)
    \n"; + $log .="○自軍被害 $y ●敵軍被害 $x
    \n"; + $sol-=$y; + $tsol-=$x; + }elsif($l==1){ + $x=int((($sol/100)+($lr*10))*2)+$sol_lv; + $y=int((($tsol/100)+($tlr*10))*0.5)+$tsol_lv; + $x=1 if($x<1); + $y=1 if($y<1); + $log .="$nm (攻撃陣形) VS $tnm (防御陣形)
    \n"; + $log .="○自軍被害 $y ●敵軍被害 $x
    \n"; + $sol-=$y; + $tsol-=$x; + }elsif($l==2){ + $x=int((($sol/100)+($lr*10))*0.5)+$sol_lv; + $y=int((($tsol/100)+($tlr*10))*2)+$tsol_lv; + $x=1 if($x<1); + $y=1 if($y<1); + $log .="$nm (攻撃陣形) VS $tnm (突撃陣形)
    \n"; + $log .="○自軍被害 $y ●敵軍被害 $x
    \n"; + $sol-=$y; + $tsol-=$x; + } + }elsif($cmd==2){ + $l=int(rand(3)); + if($l==0){ + $x=int((($sol/100)+($lr*10))*0.5)+$sol_lv; + $y=int((($tsol/100)+($tlr*10))*2)+$tsol_lv; + $x=1 if($x<1); + $y=1 if($y<1); + $log .="$nm (防御陣形) VS $tnm (攻撃陣形)
    \n"; + $log .="○自軍被害 $y ●敵軍被害 $x
    \n"; + $sol-=$y; + $tsol-=$x; + }elsif($l==1){ + $x=int(($sol/100)+($lr*10))+$sol_lv; + $y=int(($tsol/100)+($tlr*10))+$tsol_lv; + $x=1 if($x<1); + $y=1 if($y<1); + $log .="$nm (防御陣形) VS $tnm (防御陣形)
    \n"; + $log .="○自軍被害 $y ●敵軍被害 $x
    \n"; + $sol-=$y; + $tsol-=$x; + }elsif($l==2){ + $x=int((($sol/100)+($lr*10))*2)+$sol_lv; + $y=int((($tsol/100)+($tlr*10))*0.5)+$tsol_lv; + $x=1 if($x<1); + $y=1 if($y<1); + $log .="$nm (防御陣形) VS $tnm (突撃陣形)
    \n"; + $log .="○自軍被害 $y ●敵軍被害 $x
    \n"; + $sol-=$y; + $tsol-=$x; + } + }elsif($cmd==3){ + $l=int(rand(3)); + if($l==0){ + $x=int((($sol/100)+($lr*10))*2)+$sol_lv; + $y=int((($tsol/100)+($tlr*10))*0.5)+$tsol_lv; + $x=1 if($x<1); + $y=1 if($y<1); + $log .="$nm (突撃陣形) VS $tnm (攻撃陣形)
    \n"; + $log .="○自軍被害 $y ●敵軍被害 $x
    \n"; + $sol-=$y; + $tsol-=$x; + }elsif($l==1){ + $x=int((($sol/100)+($lr*10))*0.5)+$sol_lv; + $y=int((($tsol/100)+($tlr*10))*2)+$tsol_lv; + $x=1 if($x<1); + $y=1 if($y<1); + $log .="$nm (突撃陣形) VS $tnm (防御陣形)
    \n"; + $log .="○自軍被害 $y ●敵軍被害 $x
    \n"; + $sol-=$y; + $tsol-=$x; + }elsif($l==2){ + $x=int(($sol/100)+($lr*10))+$sol_lv; + $y=int(($tsol/100)+($tlr*10))+$tsol_lv; + $x=1 if($x<1); + $y=1 if($y<1); + $log .="$nm (突撃陣形) VS $tnm (突撃陣形)
    \n"; + $log .="○自軍被害 $y ●敵軍被害 $x
    \n"; + $sol-=$y; + $tsol-=$x; + } + } + + $log .="
    \n"; + + if($sol<1&&$tsol<1){ + $log .="両軍ともに壊滅的損害を受け戦闘継続が不可能となりました
    今回の作戦は引き分けです\n"; + + $log .="国力は両陣営とも変化なし
    \n"; + + $H =int(rand(21)); + + $E = int((20+$H)*$lv); + $E = int(rand(50))+170 if($E>200); + $G = 5000; + $exe+=$E; + $gold+=$G; + $rank_exe-=10; + $log .="部隊全滅という不名誉な敗北の為、貴方に対する評価が著しく低下した
    \n"; + if($rank_exe<1){ + $rank--; + $rank=1 if($rank<1); + $next_rank=int(($rank*$rank)*3); + $v=$next_rank-10; + $rank_exe=$v; + $log .="一階級降格されてしまった…
    \n"; + } + + $log .="$E の経験値と $G の報酬を得た
    \n"; + + $wr_mes ="$date $cmp[$camp] の $syogo が $cmp[$nation] に侵攻、$tnm 防衛部隊に阻まれ激戦の末、両軍壊滅したようです"; + + $sol=0; + $sol_lv=0; + $tnm=''; + $ck = $tm = $cmd = 0; + $nation=0; + $type=''; + + &hist_write;#国ログ + + }elsif($tsol<1){ + $log .="敵部隊を撃破しました!
    我が軍の勝利です!
    \n"; + $H =int(rand(51)); + $E = int((100+$H)*$lv); + $E = int((rand(500))+1800) if($E>2000); + $G = 20000; + #改造前は50+$H + $N = $H+150; + #ここまで + $exe+=$E; + $gold+=$G; + + if($camp==1){ + $cs1+=int($sol); + $cn1+=$N; + }elsif($camp==2){ + $cs2+=int($sol); + $cn2+=$N; + }elsif($camp==3){ + $cs3+=int($sol); + $cn3+=$N; + }elsif($camp==4){ + $cs4+=int($sol); + $cn4+=$N; + }elsif($camp==5){ + $cs5+=int($sol); + $cn5+=$N; + } + + if($nation==1){ + $cn1-=$N; + $cn1=0 if($cn1<1); + }elsif($nation==2){ + $cn2-=$N; + $cn2=0 if($cn2<1); + }elsif($nation==3){ + $cn3-=$N; + $cn3=0 if($cn3<1); + }elsif($nation==4){ + $cn4-=$N; + $cn4=0 if($cn4<1); + }elsif($nation==5){ + $cn5-=$N; + $cn5=0 if($cn5<1); + } + + $log .="$cmp[$nation]から $N の国力を奪いました
    $E の経験値と $G の報酬を得た!
    \n"; + + $wr_mes ="$date $cmp[$camp] の $syogo が $cmp[$nation] に侵攻、$tnm 防衛部隊を撃破。 $N の国力を奪う事に成功したようです"; + + &touitu; + + $V =int(rand(6))+10; + $sol_lv-=$V; + $rank_exe+=$V; + $sol=0; + $tnm=''; + $ck = $tm = $cmd = 0; + $nation=0; + $type=''; + + &hist_write;#国ログ + + }elsif($sol<1){ + $log .="我が軍は敗北しました…。残念ですが撤退します。
    \n"; + + $log .="国力は両陣営とも変化なし
    \n"; + + $H =int(rand(21)); + + $E = int((20+$H)*$lv); + $E = int(rand(50))+170 if($E>200); + $G = 5000; + $exe+=$E; + $gold+=$G; + + $log .="$E の経験値と $G の報酬を得た
    \n"; + + $wr_mes ="$date $cmp[$camp] の $syogo が $cmp[$nation] に侵攻、$tnm 防衛部隊の前に敗退したようです"; + + if($nation==1){ + $cs1+=$tsol; + }elsif($nation==2){ + $cs2+=$tsol; + }elsif($nation==3){ + $cs3+=$tsol; + }elsif($nation==4){ + $cs4+=$tsol; + }elsif($nation==5){ + $cs5+=$tsol; + } + + $rank_exe-=10; + $log .="部隊全滅という不名誉な敗北に、貴方に対する評価が著しく低下した
    \n"; + if($rank_exe<1){ + $rank--; + $rank=1 if($rank<1); + $next_rank=int(($rank*$rank)*3); + $v=$next_rank-10; + $rank_exe=$v; + $log .="一階級降格されてしまった…
    \n"; + } + + $sol=0; + $tnm=''; + $ck = $tm = $cmd = 0; + $nation=0; + $type=''; + + &hist_write;#国ログ + }elsif($b_n<$b_v){ + $log .="戦闘限界ターンを超えてしまった…これ以上は戦えません
    \n"; + + $log .="国力は両陣営とも変化なし
    \n"; + + $H =int(rand(21)); + + $E = int((20+$H)*$lv); + $E = int(rand(50))+170 if($E>200); + $G = 5000; + $exe+=$E; + $gold+=$G; + + $log .="$E の経験値と $G の報酬を得た
    \n"; + + $wr_mes ="$date $cmp[$camp] の $syogo が $cmp[$nation] に侵攻、$tnm 防衛部隊に阻まれ戦闘限界をオーバーしたようです"; + + $rank_exe-=5; + $log .="作戦に失敗した為、貴方に対する評価が低下した
    \n"; + if($rank_exe<1){ + $rank--; + $rank=1 if($rank<1); + $next_rank=int(($rank*$rank)*3); + $v=$next_rank-10; + $rank_exe=$v; + $log .="一階級降格されてしまった…
    \n"; + } + + $sol_lv-=int(rand(40)); + $sol=0; + $tnm=''; + $ck = $tm = $cmd = 0; + $nation=0; + $type=''; + + &hist_write;#国ログ + } + + $b_v+=1 if($cmd>0); + + } + + $log2 .="\n"; + $log2 .="\n" if($mv_mode eq 'pc'); + $log2 .="\n"; + $log2 .="\n"; + if($tsol<1||$sol<1){ + $log2 .="\n"; + }elsif($tm==50){ + $log2 .=""; + }elsif($tm==60){ + $log2 .="\n"; + }elsif($tm==70){ + &spell_sp; + }elsif($tm<1){ + $log2 .=""; + } + $log2 .="
    ";#テーブルずれ修正 + $log2 .="$td_end
    \n";#テーブル追加 + } + + if($cn1<1&&$ce1<1){ + + $wr_mes ="$date $cmp[1] が $syogo によって壊滅的損害を受け亡国となりました。"; + + $ce1=1; + + &hist_write;#国ログ + + }elsif($cn2<1&&$ce2<1){ + + $wr_mes ="$date $cmp[2] が $syogo によって壊滅的損害を受け亡国となりました。"; + + $ce2=1; + + &hist_write;#国ログ + + }elsif($cn3<1&&$ce3<1){ + + $wr_mes ="$date $cmp[3] が $syogo によって壊滅的損害を受け亡国となりました。"; + + $ce3=1; + + &hist_write;#国ログ + + }elsif($cn4<1&&$ce4<1){ + + $wr_mes ="$date $cmp[4] が $syogo によって壊滅的損害を受け亡国となりました。"; + + $ce4=1; + + &hist_write;#国ログ + + }elsif($cn5<1&&$ce5<1){ + + $wr_mes ="$date $cmp[5] が $syogo によって壊滅的損害を受け亡国となりました。"; + + $ce5=1; + + &hist_write;#国ログ + + }elsif($cn1>1000&&$ce1>0){ + + $wr_mes ="$date $cmp[1] が $syogo の活躍により亡国から復興しました。"; + + $ce1=0; + + &hist_write;#国ログ + + }elsif($cn2>1000&&$ce2>0){ + + $wr_mes ="$date $cmp[2] が $syogo の活躍により亡国から復興しました。"; + + $ce2=0; + + &hist_write;#国ログ + + }elsif($cn3>1000&&$ce3>0){ + + $wr_mes ="$date $cmp[3] が $syogo の活躍により亡国から復興しました。"; + + $ce3=0; + + &hist_write;#国ログ + + }elsif($cn4>1000&&$ce4>0){ + + $wr_mes ="$date $cmp[4] が $syogo の活躍により亡国から復興しました。"; + + $ce4=0; + + &hist_write;#国ログ + + }elsif($cn5>1000&&$ce5>0){ + + $wr_mes ="$date $cmp[5] が $syogo の活躍により亡国から復興しました。"; + + $ce5=0; + + &hist_write;#国ログ + } + + $layout_flag=1; + &write_data; + &hist_write if($touitu_flag); +} + +#------------------------------------------------------------------------------- +#統一処理 +sub touitu{ + + &syogo; + + if($camp==1){ + if($cn1>=$data_reset){ + + $wr_mes ="$date $cmp[$camp] が $syogo 等の活躍により大陸を制覇しました!!!"; + + $sogo=1;#覇者記録 + $hasya=$nm;#覇者記録 + $hcamp=$camp; + $touitu_flag=1; + } + }elsif($camp==2){ + if($cn2>=$data_reset){ + + $wr_mes ="$date $cmp[$camp] が $syogo 等の活躍により大陸を制覇しました!!!"; + + $sogo=1;#覇者記録 + $hasya=$nm;#覇者記録 + $hcamp=$camp; + $touitu_flag=1; + } + }elsif($camp==3){ + if($cn3>=$data_reset){ + + $wr_mes ="$date $cmp[$camp] が $syogo 等の活躍により大陸を制覇しました!!!"; + + $sogo=1;#覇者記録 + $hasya=$nm;#覇者記録 + $hcamp=$camp; + $touitu_flag=1; + } + }elsif($camp==4){ + if($cn4>=$data_reset){ + + $wr_mes ="$date $cmp[$camp] が $syogo 等の活躍により大陸を制覇しました!!!"; + + $sogo=1;#覇者記録 + $hasya=$nm;#覇者記録 + $hcamp=$camp; + $touitu_flag=1; + } + }elsif($camp==5){ + if($cn5>=$data_reset){ + + $wr_mes ="$date $cmp[$camp] が $syogo 等の活躍により大陸を制覇しました!!!"; + + $sogo=1;#覇者記録 + $hasya=$nm;#覇者記録 + $hcamp=$camp; + $touitu_flag=1; + } + } +} + + + + + +1; diff --git a/index.cgi b/index.cgi new file mode 100644 index 0000000..0874043 --- /dev/null +++ b/index.cgi @@ -0,0 +1,312 @@ +#!/usr/local/bin/perl +# サーバーの環境に合わせて変更して下さい。 +require './ore_config.cgi'; # ore_config.cgiのパス +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # +# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # +# BLANK BOARD [ http://www17.big.or.jp/~obochan/chat/ ] # +#-----------------------------------------------------------# +# トップページ Version 1.0 +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# + +#=============================================================================== +# 設定項目 +$help = "./html/Help.html"; # 取り扱い説明書[PC] +$help_i = "./html/Help_i.html"; # 取り扱い説明書[MV] + +#=============================================================================== +# 以下処理 基本的にこれ以下はいじらないように。 +&get_time; # 日時取得 +&axs_check; # アクセスチェック +&read_data_index; # ログデータ読み込み + +print "Content-type: text/html; charset=shift_jis\n\n" ; +# メニュー表示 +($mv_mode eq 'mv') ? &html_top_mv : &html_top_pc ; +# 削除・移動・変更不可 +©right; + +exit; + +#------------------------------------------------------------------------------- +# html生成(PC) +sub html_top_pc{ + print <<"EOM"; + + + + +$titleh + + + + + + + + +
    + + + + + + + + + +
    + +









    + + + + + + + + + + + + + + + + + + + + + + +
    + +悠久の大地へ
    +EOM + + if($now_nm_cnt>=$play_limit){ + print qq|
    現在ログイン規制中

    |; +} + else{ + print <<"EOM"; +ユーザーID: +
    +パスワード: + + +EOM +} + + print <<"EOM"; +
    +
             +>> プレイ中の参加者 [ $now_nm_cnt 名] +
    +
    +$now_nm +
    +
    + +
    + +
    +
    +新規登録
    +登録する前に必ず↓を読んで下さい。 +
    +
    + +
    +
    +取り扱い説明書
    +読まないとワケわかりませんよ? +
    +
    + +
    +
    +過去の栄光
    +悠久の大地の歴史を振り返る +
    +
    + +
    +
    +本館へ戻る
    +
    +
    + +
    +
    +罪と罰++の石碑
    +悠久の大地で覇者となった人の名前 +
    +
    + +
    +
    +
    +  >> 現在登録人数 [ $now_sanka 名] 最大登録人数 [ $sanka 名]
    +    削除放置期間 [ $del_limit 日] プレイ規制時間帯 [ $safe_time ] +
    +

    +
    +  携帯(i-mode,J-Sky)に完全対応,ezweb対応。PC要らずです。
    +  携帯からPCと同じURLにアクセスするだけです。 +
    + +
    +
    + +
    + +EOM +} + +#------------------------------------------------------------------------------- +# html生成(モバイル) +sub html_top_mv{ + print <<"EOM"; + + + + +$titleh + + + +$title_i +
    +   君が望む永遠 それは悠久の大地に +
    +
    +続きから
    +EOM + + if($now_nm_cnt>=$play_limit){ + print qq|現在ログイン規制中|; +} + else{ + print <<"EOM"; +I D:
    +パスワード: + + +EOM +} + print <<"EOM"; +
    +
    +
    1.新規登録
    登録する前に必ず↓を読んで下さい
    +2.説 明 書
    読まないとワケわかりませんよ?
    +3.過去の栄光
    悠久の大地の歴史を振り返る
    +4.罪と罰++石碑
    悠久の大地で覇者となった人の名前
    +9.本館へ戻る
    +プレイ中のキャラ $now_nm_cnt名
    +$now_nm +
    +現在登録人数[$now_sanka名]
    +最大登録人数[$sanka 名]
    +削除放置期間[$del_limit日]
    +プレイ規制時間帯[$safe_time]
    +
    +
    + +EOM +} + +#------------------------------------------------------------------------------- +# データ読み込み +# 参加者データ一括読み込み +sub read_data_index{ + + local @tdat; + # 参加者データファイル一覧取得/一括読み込み + &usrdata_read; + &usrdata_open; + + $now_sanka=$#tdat+1; + $now_nm_cnt=0; + foreach(0 .. $#tdat){ + %DAT = ''; + my @prats = split(/,/,$tdat[$_]); + foreach $prats (@prats){ + my($key,$v) = split(/;/,$prats); + $DAT{$key} = $v; + } + + # 現在のプレイヤー抽出 + if($player_now>=$time-$DAT{'la'}){ + if($mv_mode eq 'pc'){ + $now_nm .= ($DAT{'sogo'}) ? qq|
    $DAT{'nm'} [$sogo_p[$DAT{'sogo'}]] [$cmp[$DAT{'camp'}]]
    | : qq|
    $DAT{'nm'} [$cmp[$DAT{'camp'}]]
    | ; + }else{ + $now_nm .= ($DAT{'sogo'}) ? "$DAT{'nm'} [$sogo_p[$DAT{'sogo'}]]/" : "$DAT{'nm'}/" ; + } + $now_nm_cnt++; + } + } + + foreach (0 .. $#safetime){ + $safe_time .= ($safetime[$_]<0) ? "--" : "$safetime[$_],"; + } + + # 自動バックアップ + &auto_backup if($backdata); + + return ($now_nm,$now_sanka,$now_nm_cnt,$safe_time); +} + +#------------------------------------------------------------------------------- +# 自動バップアップ +sub auto_backup{ + + my $backup_flag1 = "backup_flag1"; + my $backup_flag2 = "backup_flag2"; + + # フラグ消失は作成 + if(!-e "$backdata$backup_flag1" && !-e "$backdata$backup_flag2"){ + open (OUT,">$backdata$backup_flag1"); + print OUT "このファイルは削除及びリネームしないでください。"; + close(OUT) or die "Can't close : $!"; + chmod($chmod,"$backdata$backup_flag1"); + } + + # 0時にバックアップ + if(!$hour){ + if(-e "$backdata$backup_flag1"){ + open (OUT,">$backdata$week[$wday]\.cgi"); + print OUT @tdat; + close(OUT) or die "Can't close : $!"; + chmod($chmod,"$backdata$week[$wday]\.cgi"); + + rename("$backdata$backup_flag1","$backdata$backup_flag2"); + } + }else{ + rename("$backdata$backup_flag2","$backdata$backup_flag1"); + } +} + + diff --git a/jcode.pl b/jcode.pl new file mode 100644 index 0000000..04dad39 --- /dev/null +++ b/jcode.pl @@ -0,0 +1,785 @@ +package jcode; +;###################################################################### +;# +;# jcode.pl: Perl library for Japanese character code conversion +;# +;# Copyright (c) 1995-2000 Kazumasa Utashiro +;# Internet Initiative Japan Inc. +;# 3-13 Kanda Nishiki-cho, Chiyoda-ku, Tokyo 101-0054, Japan +;# +;# Copyright (c) 1992,1993,1994 Kazumasa Utashiro +;# Software Research Associates, Inc. +;# +;# Use and redistribution for ANY PURPOSE are granted as long as all +;# copyright notices are retained. Redistribution with modification +;# is allowed provided that you make your modified version obviously +;# distinguishable from the original one. THIS SOFTWARE IS PROVIDED +;# BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES ARE +;# DISCLAIMED. +;# +;# Original version was developed under the name of srekcah@sra.co.jp +;# February 1992 and it was called kconv.pl at the beginning. This +;# address was a pen name for group of individuals and it is no longer +;# valid. +;# +;# The latest version is available here: +;# +;# ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/ +;# +;; $rcsid = q$Id: jcode.pl,v 2.13 2000/09/29 16:10:05 utashiro Exp $; +;# +;###################################################################### +;# +;# PERL4 INTERFACE: +;# +;# &jcode'getcode(*line) +;# Return 'jis', 'sjis', 'euc' or undef according to +;# Japanese character code in $line. Return 'binary' if +;# the data has non-character code. +;# +;# When evaluated in array context, it returns a list +;# contains two items. First value is the number of +;# characters which matched to the expected code, and +;# second value is the code name. It is useful if and +;# only if the number is not 0 and the code is undef; +;# that case means it couldn't tell 'euc' or 'sjis' +;# because the evaluation score was exactly same. This +;# interface is too tricky, though. +;# +;# Code detection between euc and sjis is very difficult +;# or sometimes impossible or even lead to wrong result +;# when it includes JIS X0201 KANA characters. So JIS +;# X0201 KANA is ignored for automatic code detection. +;# +;# &jcode'convert(*line, $ocode [, $icode [, $option]]) +;# Convert the contents of $line to the specified +;# Japanese code given in the second argument $ocode. +;# $ocode can be any of "jis", "sjis" or "euc", or use +;# "noconv" when you don't want the code conversion. +;# Input code is recognized automatically from the line +;# itself when $icode is not supplied (JIS X0201 KANA is +;# ignored in code detection. See the above descripton +;# of &getcode). $icode also can be specified, but +;# xxx2yyy routine is more efficient when both codes are +;# known. +;# +;# It returns the code of input string in scalar context, +;# and a list of pointer of convert subroutine and the +;# input code in array context. +;# +;# Japanese character code JIS X0201, X0208, X0212 and +;# ASCII code are supported. X0212 characters can not be +;# represented in SJIS and they will be replased by +;# "geta" character when converted to SJIS. +;# +;# See next paragraph for $option parameter. +;# +;# &jcode'xxx2yyy(*line [, $option]) +;# Convert the Japanese code from xxx to yyy. String xxx +;# and yyy are any convination from "jis", "euc" or +;# "sjis". They return *approximate* number of converted +;# bytes. So return value 0 means the line was not +;# converted at all. +;# +;# Optional parameter $option is used to specify optional +;# conversion method. String "z" is for JIS X0201 KANA +;# to X0208 KANA, and "h" is for reverse. +;# +;# $jcode'convf{'xxx', 'yyy'} +;# The value of this associative array is pointer to the +;# subroutine jcode'xxx2yyy(). +;# +;# &jcode'to($ocode, $line [, $icode [, $option]]) +;# &jcode'jis($line [, $icode [, $option]]) +;# &jcode'euc($line [, $icode [, $option]]) +;# &jcode'sjis($line [, $icode [, $option]]) +;# These functions are prepared for easy use of +;# call/return-by-value interface. You can use these +;# funcitons in s///e operation or any other place for +;# convenience. +;# +;# &jcode'jis_inout($in, $out) +;# Set or inquire JIS start and end sequences. Default +;# is "ESC-$-B" and "ESC-(-B". If you supplied only one +;# character, "ESC-$" or "ESC-(" is prepended for each +;# character respectively. Acutually "ESC-(-B" is not a +;# sequence to end JIS code but a sequence to start ASCII +;# code set. So `in' and `out' are somewhat misleading. +;# +;# &jcode'get_inout($string) +;# Get JIS start and end sequences from $string. +;# +;# &jcode'cache() +;# &jcode'nocache() +;# &jcode'flush() +;# Usually, converted character is cached in memory to +;# avoid same calculations have to be done many times. +;# To disable this caching, call &jcode'nocache(). It +;# can be revived by &jcode'cache() and cache is flushed +;# by calling &jcode'flush(). &cache() and &nocache() +;# functions return previous caching state. +;# +;# --------------------------------------------------------------- +;# +;# &jcode'h2z_xxx(*line) +;# JIS X0201 KANA (so-called Hankaku-KANA) to X0208 KANA +;# (Zenkaku-KANA) code conversion routine. String xxx is +;# any of "jis", "sjis" and "euc". From the difficulty +;# of recognizing code set from 1-byte KATAKANA string, +;# automatic code recognition is not supported. +;# +;# &jcode'z2h_xxx(*line) +;# X0208 to X0201 KANA code conversion routine. String +;# xxx is any of "jis", "sjis" and "euc". +;# +;# $jcode'z2hf{'xxx'} +;# $jcode'h2zf{'xxx'} +;# These are pointer to the corresponding function just +;# as $jcode'convf. +;# +;# --------------------------------------------------------------- +;# +;# &jcode'tr(*line, $from, $to [, $option]) +;# &jcode'tr emulates tr operator for 2 byte code. Only 'd' +;# is interpreted as an option. +;# +;# Range operator like `A-Z' for 2 byte code is partially +;# supported. Code must be JIS or EUC, and first byte +;# have to be same on first and last character. +;# +;# CAUTION: Handling range operator is a kind of trick +;# and it is not perfect. So if you need to transfer `-' +;# character, please be sure to put it at the beginning +;# or the end of $from and $to strings. +;# +;# &jcode'trans($line, $from, $to [, $option) +;# Same as &jcode'tr but accept string and return string +;# after translation. +;# +;# --------------------------------------------------------------- +;# +;# &jcode'init() +;# Initialize the variables used in this package. You +;# don't have to call this when using jocde.pl by `do' or +;# `require' interface. Call it first if you embedded +;# the jcode.pl at the end of your script. +;# +;###################################################################### +;# +;# PERL5 INTERFACE: +;# +;# Current jcode.pl is written in Perl 4 but it is possible to use +;# from Perl 5 using `references'. Fully perl5 capable version is +;# future issue. +;# +;# Since lexical variable is not a subject of typeglob, *string style +;# call doesn't work if the variable is declared as `my'. Same thing +;# happens to special variable $_ if the perl is compiled to use +;# thread capability. So using reference is generally recommented to +;# avoid the mysterious error. +;# +;# jcode::getcode(\$line) +;# jcode::convert(\$line, $ocode [, $icode [, $option]]) +;# jcode::xxx2yyy(\$line [, $option]) +;# &{$jcode::convf{'xxx', 'yyy'}}(\$line) +;# jcode::to($ocode, $line [, $icode [, $option]]) +;# jcode::jis($line [, $icode [, $option]]) +;# jcode::euc($line [, $icode [, $option]]) +;# jcode::sjis($line [, $icode [, $option]]) +;# jcode::jis_inout($in, $out) +;# jcode::get_inout($string) +;# jcode::cache() +;# jcode::nocache() +;# jcode::flush() +;# jcode::h2z_xxx(\$line) +;# jcode::z2h_xxx(\$line) +;# &{$jcode::z2hf{'xxx'}}(\$line) +;# &{$jcode::h2zf{'xxx'}}(\$line) +;# jcode::tr(\$line, $from, $to [, $option]) +;# jcode::trans($line, $from, $to [, $option) +;# jcode::init() +;# +;###################################################################### +;# +;# SAMPLES +;# +;# Convert any Kanji code to JIS and print each line with code name. +;# +;# while (defined($s = <>)) { +;# $code = &jcode'convert(*s, 'jis'); +;# print $code, "\t", $s; +;# } +;# +;# Convert all lines to JIS according to the first recognized line. +;# +;# while (defined($s = <>)) { +;# print, next unless $s =~ /[\033\200-\377]/; +;# (*f, $icode) = &jcode'convert(*s, 'jis'); +;# print; +;# defined(&f) || next; +;# while (<>) { &f(*s); print; } +;# last; +;# } +;# +;# The safest way of JIS conversion. +;# +;# while (defined($s = <>)) { +;# ($matched, $icode) = &jcode'getcode(*s); +;# if (@buf == 0 && $matched == 0) { +;# print $s; +;# next; +;# } +;# push(@buf, $s); +;# next unless $icode; +;# while (defined($s = shift(@buf))) { +;# &jcode'convert(*s, 'jis', $icode); +;# print $s; +;# } +;# while (defined($s = <>)) { +;# &jcode'convert(*s, 'jis', $icode); +;# print $s; +;# } +;# last; +;# } +;# print @buf if @buf; +;# +;###################################################################### + +;# +;# Call initialize function if it is not called yet. This may sound +;# strange but it makes easy to embed the jcode.pl at the end of +;# script. Call &jcode'init at the beginning of the script in that +;# case. +;# +&init unless defined $version; + +;# +;# Initialize variables. +;# +sub init { + $version = $rcsid =~ /,v ([\d.]+)/ ? $1 : 'unknown'; + + $re_bin = '[\000-\006\177\377]'; + + $re_jis0208_1978 = '\e\$\@'; + $re_jis0208_1983 = '\e\$B'; + $re_jis0208_1990 = '\e&\@\e\$B'; + $re_jis0208 = "$re_jis0208_1978|$re_jis0208_1983|$re_jis0208_1990"; + $re_jis0212 = '\e\$\(D'; + $re_jp = "$re_jis0208|$re_jis0212"; + $re_asc = '\e\([BJ]'; + $re_kana = '\e\(I'; + + $esc_0208 = "\e\$B"; + $esc_0212 = "\e\$(D"; + $esc_asc = "\e(B"; + $esc_kana = "\e(I"; + + $re_sjis_c = '[\201-\237\340-\374][\100-\176\200-\374]'; + $re_sjis_kana = '[\241-\337]'; + + $re_euc_c = '[\241-\376][\241-\376]'; + $re_euc_kana = '\216[\241-\337]'; + $re_euc_0212 = '\217[\241-\376][\241-\376]'; + + # Use `geta' for undefined character code + $undef_sjis = "\x81\xac"; + + $cache = 1; + + # X0201 -> X0208 KANA conversion table. Looks weird? Not that + # much. This is simply JIS text without escape sequences. + ($h2z_high = $h2z = <<'__TABLE_END__') =~ tr/\041-\176/\241-\376/; +! !# $ !" % !& " !V # !W +^ !+ _ !, 0 !< +' %! ( %# ) %% * %' + %) +, %c - %e . %g / %C +1 %" 2 %$ 3 %& 4 %( 5 %* +6 %+ 7 %- 8 %/ 9 %1 : %3 +6^ %, 7^ %. 8^ %0 9^ %2 :^ %4 +; %5 < %7 = %9 > %; ? %= +;^ %6 <^ %8 =^ %: >^ %< ?^ %> +@ %? A %A B %D C %F D %H +@^ %@ A^ %B B^ %E C^ %G D^ %I +E %J F %K G %L H %M I %N +J %O K %R L %U M %X N %[ +J^ %P K^ %S L^ %V M^ %Y N^ %\ +J_ %Q K_ %T L_ %W M_ %Z N_ %] +O %^ P %_ Q %` R %a S %b +T %d U %f V %h +W %i X %j Y %k Z %l [ %m +\ %o ] %s & %r 3^ %t +__TABLE_END__ + %h2z = split(/\s+/, $h2z . $h2z_high); + %z2h = reverse %h2z; + + $convf{'jis' , 'jis' } = *jis2jis; + $convf{'jis' , 'sjis'} = *jis2sjis; + $convf{'jis' , 'euc' } = *jis2euc; + $convf{'euc' , 'jis' } = *euc2jis; + $convf{'euc' , 'sjis'} = *euc2sjis; + $convf{'euc' , 'euc' } = *euc2euc; + $convf{'sjis' , 'jis' } = *sjis2jis; + $convf{'sjis' , 'sjis'} = *sjis2sjis; + $convf{'sjis' , 'euc' } = *sjis2euc; + $h2zf{'jis' } = *h2z_jis; + $z2hf{'jis' } = *z2h_jis; + $h2zf{'euc' } = *h2z_euc; + $z2hf{'euc' } = *z2h_euc; + $h2zf{'sjis'} = *h2z_sjis; + $z2hf{'sjis'} = *z2h_sjis; +} + +;# +;# Set escape sequences which should be put before and after Japanese +;# (JIS X0208) string. +;# +sub jis_inout { + $esc_0208 = shift || $esc_0208; + $esc_0208 = "\e\$$esc_0208" if length($esc_0208) == 1; + $esc_asc = shift || $esc_asc; + $esc_asc = "\e\($esc_asc" if length($esc_asc) == 1; + ($esc_0208, $esc_asc); +} + +;# +;# Get JIS in and out sequences from the string. +;# +sub get_inout { + local($esc_0208, $esc_asc); + $_[$[] =~ /($re_jis0208)/o && ($esc_0208 = $1); + $_[$[] =~ /($re_asc)/o && ($esc_asc = $1); + ($esc_0208, $esc_asc); +} + +;# +;# Recognize character code. +;# +sub getcode { + local(*s) = @_; + local($matched, $code); + + if ($s !~ /[\e\200-\377]/) { # not Japanese + $matched = 0; + $code = undef; + } # 'jis' + elsif ($s =~ /$re_jp|$re_asc|$re_kana/o) { + $matched = 1; + $code = 'jis'; + } + elsif ($s =~ /$re_bin/o) { # 'binary' + $matched = 0; + $code = 'binary'; + } + else { # should be 'euc' or 'sjis' + local($sjis, $euc) = (0, 0); + + while ($s =~ /(($re_sjis_c)+)/go) { + $sjis += length($1); + } + while ($s =~ /(($re_euc_c|$re_euc_kana|$re_euc_0212)+)/go) { + $euc += length($1); + } + $matched = &max($sjis, $euc); + $code = ('euc', undef, 'sjis')[($sjis<=>$euc) + $[ + 1]; + } + wantarray ? ($matched, $code) : $code; +} +sub max { $_[ $[ + ($_[ $[ ] < $_[ $[ + 1 ]) ]; } + +;# +;# Convert any code to specified code. +;# +sub convert { + local(*s, $ocode, $icode, $opt) = @_; + return (undef, undef) unless $icode = $icode || &getcode(*s); + return (undef, $icode) if $icode eq 'binary'; + $ocode = 'jis' unless $ocode; + $ocode = $icode if $ocode eq 'noconv'; + local(*f) = $convf{$icode, $ocode}; + &f(*s, $opt); + wantarray ? (*f, $icode) : $icode; +} + +;# +;# Easy return-by-value interfaces. +;# +sub jis { &to('jis', @_); } +sub euc { &to('euc', @_); } +sub sjis { &to('sjis', @_); } +sub to { + local($ocode, $s, $icode, $opt) = @_; + &convert(*s, $ocode, $icode, $opt); + $s; +} +sub what { + local($s) = @_; + &getcode(*s); +} +sub trans { + local($s) = shift; + &tr(*s, @_); + $s; +} + +;# +;# SJIS to JIS +;# +sub sjis2jis { + local(*s, $opt, $n) = @_; + &sjis2sjis(*s, $opt) if $opt; + $s =~ s/(($re_sjis_c|$re_sjis_kana)+)/&_sjis2jis($1) . $esc_asc/geo; + $n; +} +sub _sjis2jis { + local($s) = shift; + $s =~ s/(($re_sjis_c)+|($re_sjis_kana)+)/&__sjis2jis($1)/geo; + $s; +} +sub __sjis2jis { + local($s) = shift; + if ($s =~ /^$re_sjis_kana/o) { + $n += $s =~ tr/\241-\337/\041-\137/; + $esc_kana . $s; + } else { + $n += $s =~ s/($re_sjis_c)/$s2e{$1}||&s2e($1)/geo; + $s =~ tr/\241-\376/\041-\176/; + $esc_0208 . $s; + } +} + +;# +;# EUC to JIS +;# +sub euc2jis { + local(*s, $opt, $n) = @_; + &euc2euc(*s, $opt) if $opt; + $s =~ s/(($re_euc_c|$re_euc_kana|$re_euc_0212)+)/ + &_euc2jis($1) . $esc_asc + /geo; + $n; +} +sub _euc2jis { + local($s) = shift; + $s =~ s/(($re_euc_c)+|($re_euc_kana)+|($re_euc_0212)+)/&__euc2jis($1)/geo; + $s; +} +sub __euc2jis { + local($s) = shift; + local($esc); + + if ($s =~ tr/\216//d) { + $esc = $esc_kana; + } elsif ($s =~ tr/\217//d) { + $esc = $esc_0212; + } else { + $esc = $esc_0208; + } + + $n += $s =~ tr/\241-\376/\041-\176/; + $esc . $s; +} + +;# +;# JIS to EUC +;# +sub jis2euc { + local(*s, $opt, $n) = @_; + $s =~ s/($re_jp|$re_asc|$re_kana)([^\e]*)/&_jis2euc($1,$2)/geo; + &euc2euc(*s, $opt) if $opt; + $n; +} +sub _jis2euc { + local($esc, $s) = @_; + if ($esc !~ /^$re_asc/o) { + $n += $s =~ tr/\041-\176/\241-\376/; + if ($esc =~ /^$re_kana/o) { + $s =~ s/([\241-\337])/\216$1/g; + } + elsif ($esc =~ /^$re_jis0212/o) { + $s =~ s/([\241-\376][\241-\376])/\217$1/g; + } + } + $s; +} + +;# +;# JIS to SJIS +;# +sub jis2sjis { + local(*s, $opt, $n) = @_; + &jis2jis(*s, $opt) if $opt; + $s =~ s/($re_jp|$re_asc|$re_kana)([^\e]*)/&_jis2sjis($1,$2)/geo; + $n; +} +sub _jis2sjis { + local($esc, $s) = @_; + if ($esc =~ /^$re_jis0212/o) { + $s =~ s/../$undef_sjis/g; + $n = length; + } + elsif ($esc !~ /^$re_asc/o) { + $n += $s =~ tr/\041-\176/\241-\376/; + if ($esc =~ /^$re_jp/o) { + $s =~ s/($re_euc_c)/$e2s{$1}||&e2s($1)/geo; + } + } + $s; +} + +;# +;# SJIS to EUC +;# +sub sjis2euc { + local(*s, $opt,$n) = @_; + $n = $s =~ s/($re_sjis_c|$re_sjis_kana)/$s2e{$1}||&s2e($1)/geo; + &euc2euc(*s, $opt) if $opt; + $n; +} +sub s2e { + local($c1, $c2, $code); + ($c1, $c2) = unpack('CC', $code = shift); + + if (0xa1 <= $c1 && $c1 <= 0xdf) { + $c2 = $c1; + $c1 = 0x8e; + } elsif (0x9f <= $c2) { + $c1 = $c1 * 2 - ($c1 >= 0xe0 ? 0xe0 : 0x60); + $c2 += 2; + } else { + $c1 = $c1 * 2 - ($c1 >= 0xe0 ? 0xe1 : 0x61); + $c2 += 0x60 + ($c2 < 0x7f); + } + if ($cache) { + $s2e{$code} = pack('CC', $c1, $c2); + } else { + pack('CC', $c1, $c2); + } +} + +;# +;# EUC to SJIS +;# +sub euc2sjis { + local(*s, $opt,$n) = @_; + &euc2euc(*s, $opt) if $opt; + $n = $s =~ s/($re_euc_c|$re_euc_kana|$re_euc_0212)/$e2s{$1}||&e2s($1)/geo; +} +sub e2s { + local($c1, $c2, $code); + ($c1, $c2) = unpack('CC', $code = shift); + + if ($c1 == 0x8e) { # SS2 + return substr($code, 1, 1); + } elsif ($c1 == 0x8f) { # SS3 + return $undef_sjis; + } elsif ($c1 % 2) { + $c1 = ($c1>>1) + ($c1 < 0xdf ? 0x31 : 0x71); + $c2 -= 0x60 + ($c2 < 0xe0); + } else { + $c1 = ($c1>>1) + ($c1 < 0xdf ? 0x30 : 0x70); + $c2 -= 2; + } + if ($cache) { + $e2s{$code} = pack('CC', $c1, $c2); + } else { + pack('CC', $c1, $c2); + } +} + +;# +;# JIS to JIS, SJIS to SJIS, EUC to EUC +;# +sub jis2jis { + local(*s, $opt) = @_; + $s =~ s/$re_jis0208/$esc_0208/go; + $s =~ s/$re_asc/$esc_asc/go; + &h2z_jis(*s) if $opt =~ /z/; + &z2h_jis(*s) if $opt =~ /h/; +} +sub sjis2sjis { + local(*s, $opt) = @_; + &h2z_sjis(*s) if $opt =~ /z/; + &z2h_sjis(*s) if $opt =~ /h/; +} +sub euc2euc { + local(*s, $opt) = @_; + &h2z_euc(*s) if $opt =~ /z/; + &z2h_euc(*s) if $opt =~ /h/; +} + +;# +;# Cache control functions +;# +sub cache { + ($cache, $cache = 1)[$[]; +} +sub nocache { + ($cache, $cache = 0)[$[]; +} +sub flushcache { + undef %e2s; + undef %s2e; +} + +;# +;# X0201 -> X0208 KANA conversion routine +;# +sub h2z_jis { + local(*s, $n) = @_; + if ($s =~ s/$re_kana([^\e]*)/$esc_0208 . &_h2z_jis($1)/geo) { + 1 while $s =~ s/(($re_jis0208)[^\e]*)($re_jis0208)/$1/o; + } + $n; +} +sub _h2z_jis { + local($s) = @_; + $n += $s =~ s/(([\041-\137])([\136\137])?)/ + $h2z{$1} || $h2z{$2} . $h2z{$3} + /ge; + $s; +} + +sub h2z_euc { + local(*s) = @_; + $s =~ s/\216([\241-\337])(\216([\336\337]))?/ + $h2z{"$1$3"} || $h2z{$1} . $h2z{$3} + /ge; +} + +sub h2z_sjis { + local(*s, $n) = @_; + $s =~ s/(($re_sjis_c)+)|(([\241-\337])([\336\337])?)/ + $1 || ($n++, $h2z{$3} ? $e2s{$h2z{$3}} || &e2s($h2z{$3}) + : &e2s($h2z{$4}) . ($5 && &e2s($h2z{$5}))) + /geo; + $n; +} + +;# +;# X0208 -> X0201 KANA conversion routine +;# +sub z2h_jis { + local(*s, $n) = @_; + $s =~ s/($re_jis0208)([^\e]+)/&_z2h_jis($2)/geo; + $n; +} +sub _z2h_jis { + local($s) = @_; + $s =~ s/((\%[!-~]|![\#\"&VW+,<])+|([^!%][!-~]|![^\#\"&VW+,<])+)/ + &__z2h_jis($1) + /ge; + $s; +} +sub __z2h_jis { + local($s) = @_; + return $esc_0208 . $s unless $s =~ /^%/ || $s =~ /^![\#\"&VW+,<]/; + $n += length($s) / 2; + $s =~ s/(..)/$z2h{$1}/g; + $esc_kana . $s; +} + +sub z2h_euc { + local(*s, $n) = @_; + &init_z2h_euc unless defined %z2h_euc; + $s =~ s/($re_euc_c|$re_euc_kana)/ + $z2h_euc{$1} ? ($n++, $z2h_euc{$1}) : $1 + /geo; + $n; +} + +sub z2h_sjis { + local(*s, $n) = @_; + &init_z2h_sjis unless defined %z2h_sjis; + $s =~ s/($re_sjis_c)/$z2h_sjis{$1} ? ($n++, $z2h_sjis{$1}) : $1/geo; + $n; +} + +;# +;# Initializing JIS X0208 to X0201 KANA table for EUC and SJIS. This +;# can be done in &init but it's not worth doing. Similarly, +;# precalculated table is not worth to occupy the file space and +;# reduce the readability. The author personnaly discourages to use +;# X0201 Kana character in the any situation. +;# +sub init_z2h_euc { + local($k, $s); + while (($k, $s) = each %z2h) { + $s =~ s/([\241-\337])/\216$1/g && ($z2h_euc{$k} = $s); + } +} +sub init_z2h_sjis { + local($s, $v); + while (($s, $v) = each %z2h) { + $s =~ /[\200-\377]/ && ($z2h_sjis{&e2s($s)} = $v); + } +} + +;# +;# TR function for 2-byte code +;# +sub tr { + # $prev_from, $prev_to, %table are persistent variables + local(*s, $from, $to, $opt) = @_; + local(@from, @to); + local($jis, $n) = (0, 0); + + $jis++, &jis2euc(*s) if $s =~ /$re_jp|$re_asc|$re_kana/o; + $jis++ if $to =~ /$re_jp|$re_asc|$re_kana/o; + + if (!defined($prev_from) || $from ne $prev_from || $to ne $prev_to) { + ($prev_from, $prev_to) = ($from, $to); + undef %table; + &_maketable; + } + + $s =~ s/([\200-\377][\000-\377]|[\000-\377])/ + defined($table{$1}) && ++$n ? $table{$1} : $1 + /ge; + + &euc2jis(*s) if $jis; + + $n; +} + +sub _maketable { + local($ascii) = '(\\\\[\\-\\\\]|[\0-\133\135-\177])'; + + &jis2euc(*to) if $to =~ /$re_jp|$re_asc|$re_kana/o; + &jis2euc(*from) if $from =~ /$re_jp|$re_asc|$re_kana/o; + + grep(s/(([\200-\377])[\200-\377]-\2[\200-\377])/&_expnd2($1)/ge, + $from, $to); + grep(s/($ascii-$ascii)/&_expnd1($1)/geo, + $from, $to); + + @to = $to =~ /[\200-\377][\000-\377]|[\000-\377]/g; + @from = $from =~ /[\200-\377][\000-\377]|[\000-\377]/g; + push(@to, ($opt =~ /d/ ? '' : $to[$#to]) x (@from - @to)) if @to < @from; + @table{@from} = @to; +} + +sub _expnd1 { + local($s) = @_; + $s =~ s/\\(.)/$1/g; + local($c1, $c2) = unpack('CxC', $s); + if ($c1 <= $c2) { + for ($s = ''; $c1 <= $c2; $c1++) { + $s .= pack('C', $c1); + } + } + $s; +} + +sub _expnd2 { + local($s) = @_; + local($c1, $c2, $c3, $c4) = unpack('CCxCC', $s); + if ($c1 == $c3 && $c2 <= $c4) { + for ($s = ''; $c2 <= $c4; $c2++) { + $s .= pack('CC', $c1, $c2); + } + } + $s; +} + +1; diff --git a/lock/lock b/lock/lock new file mode 100644 index 0000000..a7930f5 --- /dev/null +++ b/lock/lock @@ -0,0 +1 @@ +# このファイルは削除及びリネームしないでください。 \ No newline at end of file diff --git a/logdata/camp_log_1.cgi b/logdata/camp_log_1.cgi new file mode 100644 index 0000000..e69de29 diff --git a/logdata/camp_log_2.cgi b/logdata/camp_log_2.cgi new file mode 100644 index 0000000..e69de29 diff --git a/logdata/camp_log_3.cgi b/logdata/camp_log_3.cgi new file mode 100644 index 0000000..e69de29 diff --git a/logdata/camp_log_4.cgi b/logdata/camp_log_4.cgi new file mode 100644 index 0000000..e69de29 diff --git a/logdata/camp_log_5.cgi b/logdata/camp_log_5.cgi new file mode 100644 index 0000000..e69de29 diff --git a/logdata/camp_mem_1.cgi b/logdata/camp_mem_1.cgi new file mode 100644 index 0000000..e69de29 diff --git a/logdata/camp_mem_2.cgi b/logdata/camp_mem_2.cgi new file mode 100644 index 0000000..e69de29 diff --git a/logdata/camp_mem_3.cgi b/logdata/camp_mem_3.cgi new file mode 100644 index 0000000..e69de29 diff --git a/logdata/camp_mem_4.cgi b/logdata/camp_mem_4.cgi new file mode 100644 index 0000000..e69de29 diff --git a/logdata/camp_mem_5.cgi b/logdata/camp_mem_5.cgi new file mode 100644 index 0000000..e69de29 diff --git a/logdata/cdata.cgi b/logdata/cdata.cgi new file mode 100644 index 0000000..1fa645f --- /dev/null +++ b/logdata/cdata.cgi @@ -0,0 +1 @@ +cn1;4500,cg1;340,cf1;7500,cs1;2650,ce1;0,c1;0,c1a;2,cn2;4800,cg2;720,cf2;4700,cs2;4600,ce2;0,c2;0,c2a;3,cn3;2900,cg3;1060,cf3;6500,cs3;4650,ce3;0,c3;0,c3a;3,cn4;4600,cg4;1060,cf4;5000,cs4;4950,ce4;0,c4;0,c4a;3,cn5;6400,cg5;1120,cf5;6800,cs5;4050,ce5;0,c5;0,c5a;3,set;1019738536,all_mem;0,goal_no;1,hasya;,hcamp;,ad;,ht;,date;,wr_mes;罪と罰++ 二律背反 v02-04-16, diff --git a/logdata/hist_log.cgi b/logdata/hist_log.cgi new file mode 100644 index 0000000..e69de29 diff --git a/logdata/index.html b/logdata/index.html new file mode 100644 index 0000000..d0dc3b5 --- /dev/null +++ b/logdata/index.html @@ -0,0 +1,8 @@ + + + +のぞいちゃイヤ〜。 + + + + diff --git a/logdata/park_log.cgi b/logdata/park_log.cgi new file mode 100644 index 0000000..e69de29 diff --git a/logdata/park_mem.cgi b/logdata/park_mem.cgi new file mode 100644 index 0000000..e69de29 diff --git a/logdata/public_log.cgi b/logdata/public_log.cgi new file mode 100644 index 0000000..e69de29 diff --git a/ore_.cgi b/ore_.cgi new file mode 100644 index 0000000..6a6ab0f --- /dev/null +++ b/ore_.cgi @@ -0,0 +1,77 @@ +#!/usr/local/bin/perl +# サーバーの環境に合わせて変更して下さい。 +require './ore_config.cgi'; # ore_config.cgiのパス +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 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.1 +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# +# 以下処理 基本的にこれ以下はいじらないように。 + +&error("現在メンテナンス中。しばらくお待ち下さい(約 $ertm 分間)
    内訳:$erni") if $er; +&get_time; # 日時取得 +&safetime; # プレイ規制 +&decode; # フォームデコード +&axs_check; # アクセスチェック +# ファイルロック(rename式) +$lock = &lock if $lock_check; +&read_data; # ログデータ読み込み + +# 初回のみAG無い人に割り当て +$ag=int($lv*1.08) if(!$ag); + +# 拘束時間 +if($pr>$spend_time){ require './inc/ore_sub-main.cgi'; &wt_st; } + +# 初期メニュー +elsif(!$type && $cmd==1 && $act_cnt<$act_cnt_limit) { require "./inc/ore_sub-training_$mv_mode\.cgi"; &training; } +elsif(!$type && $cmd==2) { require './inc/ore_sub-politics.cgi'; &politics; } +elsif(!$type && $cmd==3 && $act_cnt<$act_cnt_limit) { require './inc/ore_sub-war.cgi'; &war; } +elsif(!$type && $cmd==4 && $act_cnt<$act_cnt_limit) { require './inc/ore_sub-ability.cgi'; &ability; } +elsif(!$type && $cmd==5 && $act_cnt<$act_cnt_limit) { require './inc/ore_sub-changes.cgi'; &changes; } +elsif(!$type && $cmd==6) { require "./inc/ore_sub-infomation_$mv_mode\.cgi";&infomation_com; } +elsif(!$type && $cmd==7 && $act_cnt<$act_cnt_limit) { require './inc/ore_sub-subdue.cgi'; &subdue; } +elsif(!$type && $cmd==8 && $act_cnt<$act_cnt_limit) { require './inc/ore_sub-mission.cgi'; &mission; } +elsif(!$type && $cmd==20) { require './inc/ore_sub-shop.cgi'; &shop; } + +# 続行メニュー +elsif($type eq '修行') { require "./inc/ore_sub-training_$mv_mode\.cgi"; &training_exe; } +elsif($type eq '修行中') { require './inc/ore_sub-battle.cgi'; &bt_st; } +elsif($type eq '戦争') { require './inc/ore_sub-war.cgi'; &war_exe; } +elsif($type eq '戦争中') { require './inc/ore_sub-wartime.cgi'; &wr_st; } +elsif($type eq '討伐') { require './inc/ore_sub-subdue.cgi'; &subdue_exe; } +elsif($type eq '討伐中') { require './inc/ore_sub-subduetime.cgi';&ws_st; } +elsif($type eq '軍事') { require './inc/ore_sub-mission.cgi'; &mission_exe; } +elsif($type eq '内政') { require './inc/ore_sub-politics.cgi'; &politics_exe; } +elsif($type eq '仕官') { require './inc/ore_sub-changes.cgi'; &changes_exe; } +elsif($type eq '能力') { require './inc/ore_sub-ability.cgi'; &ability_exe; } +elsif($type eq 'お買い物') { require './inc/ore_sub-shop.cgi'; &shop_exe; } + +else { require './inc/ore_sub-main.cgi'; &main_st; } + +# ファイルアンロック(rename式) +&unlock($lock) if $lock_check; + +&html; # メニュー表示 +©right; # 削除・移動・変更不可 + +exit; + +# 以下呼び出し用サブルーチン(メンテナンス性向上のため) +sub call_main_st { require './inc/ore_sub-main.cgi'; &main_st; } +sub call_mapdata { require './inc/ore_sub-map-p1_pc.cgi';&mapdata; } + +sub sclv{ $LV_V{$b} <=> $LV_V{$a}; } + +sub syogo{ $syogo = ($sogo > 0) ? "$nm [$sogo_p[$sogo]]" : "$nm"; } + + + + + diff --git a/ore_admin.cgi b/ore_admin.cgi new file mode 100644 index 0000000..e5bb4f8 --- /dev/null +++ b/ore_admin.cgi @@ -0,0 +1,1226 @@ +#!/usr/local/bin/perl +# サーバーの環境に合わせて変更して下さい。 +require './ore_config.cgi'; # ore_.plのパス +#-----------------------------------------------------------# +# 罪と罰++ 二律背反 # +# 管理者機能 # +# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # +# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # +# BLANK BOARD [ http://pom.to/ ] # +#-----------------------------------------------------------# +$ver = 'v1.1'; # バージョン情報は書き換え不可 +#--- [注意事項] --------------------------------------------# +# 1.このスクリプトは以下の利用規程に従って配布しています。 # +# http://www24.big.or.jp/~obo/game/ore_/gild/ # +#-----------------------------------------------------------# +# 以下処理 基本的にこれ以下はいじらないように。 + +&get_time; # 日時取得 +&decode; # フォームデコード +&axs_check; # アクセスチェック +&usr_del if($mode eq 'usr_del'); # キャラ削除 +&usr_regist if($mode eq 'usr_regist'); # キャラデータ変更 +&usr_regist2 if($mode eq 'usr_regist2'); # キャラデータ変更2 +&cdat_regist if($mode eq 'cdat_regist'); # 国データ変更 +&cdat_regist2 if($mode eq 'cdat_regist2'); # 国データ変更2 +&rd_usrdata if($mode eq 'rd_usrdata'); # $usrdata内ファイル全削除 +&rd_backdata if($mode eq 'rd_backdata'); # $backdata内ファイル全削除 +&cdata_reset if($mode eq 'cdata_reset'); # 国パラメータ初期化 +&restore_all_usr if($mode eq 'restore_all_usr');# 全参加者ログ一括復旧(バックアップデータ差し替え) +&restore_person if($mode eq 'restore_person'); # 個別全参加者ログ復旧(バックアップデータ差し替え) +&restore_cdat if($mode eq 'restore_cdat'); # 国ログ復旧(バックアップデータ差し替え) +&usr_list; # キャラリスト表示 + +exit; + +#------------------------------------------------------------------------------- +# キャラリスト表示 +sub usr_list{ + + &admin_head; + +if($comment){ + print <<"EOM"; + + + + +
    $comment
    +
    +EOM +} + print < + + + + + + + + + + + + + + + + + + + + + + + + +
    ソートデータ\表\示
    +
    +EOM + + if($in{'list_view'}){ + + print < + +削除 +ログイン +編集 +名前 +I D +パスワード +性別 +レベル +所属 +HP +MP +UA +UD +LR +AG +所持金 +階級 +行動 +最終ログイン +IPアドレス +ホスト名 +ブラウザ + +EOM + + # 参加者データファイル一覧取得 + &usrdata_read; + + # 参加者データ一括読み込み + foreach (0 .. $#usrfile) { + open(IN,"$usrdata$usrfile[$_]") || &error("Can't open $usrfile[$_]"); + @line = ; + close(IN); + push(@dat,$line[0]); + push(@dat2,$line[1]); + } + + local(@usr_data); + + foreach (0 .. $#dat){ + %DAT = ''; + my @prats = split(/,/,$dat[$_]); + foreach (0 .. $#prats){ + my ($key,$v) = split(/;/,$prats[$_]); + $DAT{$key} = $v; + } + + my @y1 = split(/<>/,$dat2[$_]); + + $in{'list_view'}=0 if($in{'list_view'}==-5); + + if($in{'list_view'} eq $DAT{'camp'} || $in{'list_view'} eq -1){ + $id = $DAT{'id'}; + # ハッシュ読み込み + &hash_data; + + push(@usr_data,"$nm<>$id<>$pw<>$sei<>$lv<>$camp<>$max_hp<>$max_mp<>$ua<>$ud<>$lr<>$gold<>$rank<>$sogo<>$y1[0]<>$y1[1]<>$y1[2]<>$y1[3]<>$la<>$ag<>$type<>"); + } + } + + @usr_data = @{&csvsort('<>',$in{'list_sort'},@usr_data)}; + + foreach(0 .. $#usr_data){ + my @y2 = split(/<>/,$usr_data[$_]); + + $y2_0 = (!$y2[13]) ? "$y2[0]" : "$y2[0] [$sogo_p[$y2[13]]]" ; + $y2[14] ="" if($y2[14] =~ /date/); + $y2[20] = "待機中" if(!$y2[20]); + print <<"EOM"; + + + + +$y2_0 +$y2[1] +$y2[2] +$seibetu[$y2[3]] +$y2[4] +$cmp[$y2[5]] +$y2[6] +$y2[7] +$y2[8] +$y2[9] +$y2[10] +$y2[19] +$y2[11] +$cl[$y2[12]] +$y2[20] +$y2[14] +$y2[15] +$y2[16] +$y2[17] + +EOM + } + } + print <<"EOM"; + +

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    キャラ削除      国データ編集      国データリセット      Warning!! ディレクトリ/データ全削除
                      
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    キャラログ個別復旧    全キャラログ復旧    国ログ復旧
    ID + +日時 + +    
    日時 + +    
    日時 + +
    +
    + +EOM + &admin_end; + exit; +} + +# 個別参加者ログ復旧(バックアップデータ差し替え) +sub restore_person{ + + &error("パスワードが違います!") if($in{'administrator'} ne $admin_pass); + + # ファイルロック(rename式) + $lock = &lock if $lock_check; + + open(IN,"$in{'restore_date'}") || &error("Open Error : $in{'restore_date'}",1); + my @tdat = ; + close(IN); + + $in{'restore_usr'} =~ s/\.cgi//g; + + foreach (0 .. $#tdat){ + + %R = ''; + my @prats = split(/,/,$tdat[$_]); + foreach $prats (@prats){ + my($y,$x) = split(/;/,$prats); + $R{$y} = $x; + + if($in{'restore_usr'} eq $R{'id'}){ + open (OUT,">$usrdata$R{'id'}\.cgi") || &error("open error:$usrdata$R{'id'}\.cgi",1); + print OUT $tdat[$_]; + close(OUT) or die "Can't close : $!"; + } + } + } + + &unlock($lock) if $lock_check; + + $comment ="$in{'restore_date'}から$usrdata$in{'restore_usr'}\.cgiを復旧完了"; + +} + +# 全参加者ログ一括復旧(バックアップデータ差し替え) +sub restore_all_usr{ + + &error("パスワードが違います!") if($in{'administrator'} ne $admin_pass); + + # ファイルロック(rename式) + $lock = &lock if $lock_check; + + open(IN,"$in{'restore_date'}") || &error("Open Error : $in{'restore_date'}",1); + my @tdat = ; + close(IN); + + foreach (0 .. $#tdat){ + + %R = ''; + my @prats = split(/,/,$tdat[$_]); + foreach $prats (@prats){ + my($y,$x) = split(/;/,$prats); + $R{$y} = $x; + } + + open (OUT,">$usrdata$R{'id'}\.cgi") || &error("open error:$usrdata$R{'id'}\.cgi",1); + print OUT $tdat[$_]; + close(OUT) or die "Can't close : $!"; + + } + + &unlock($lock) if $lock_check; + + $comment ="$in{'restore_date'}に含まれる全キャラ復旧完了"; + +} + +# 国ログ復旧(バックアップデータ差し替え) +sub restore_cdat{ + + # ファイルロック(rename式) + $lock = &lock if $lock_check; + + open (IN,"$histfile") || &error("Open error : $histfile"); + my @hist_dat = ; + close(IN) or die "Can't close : $!"; + + foreach(0 .. $#hist_dat){ + my @y1 = split(/,/,$hist_dat[$_]); + $y1[42] =~ s/date;//g; + print qq|