罪と罰++二律背反


* 討伐の連続化 [#s8bedf8e]

- ページ: [[罪罰改造板3]]
- 投稿者: [[freedom]]
- 優先順位: 緊急
- 状態: 提案
- カテゴリー: 設置できません
- 投稿日: 2008-01-26 (土) 22:41:42
- バージョン: 

** メッセージ [#wb9ba08d]
討伐勝利時、次の討伐を続行するを設置しようとしてテストすると
何も出来なくなります
また管理画面で見ると 討伐の80とでています....
下のどこをどうすればいいか教えてくださると助かります

#-----------------------------------------------------------#
#  罪と罰++ 二律背反 										#
#  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] を探索中です<br>\n";

		# NPC(魑魅魍魎)読み込み
		require './inc/ore_sub-npc_2.cgi';
		local $v=int(rand(7));
		&ck_ne_2;

		$log .="<hr size=1 noshade>\n";

		$log .="$cmp[$nation] に蔓延る $tnm を発見した!<br>\n";

		$log .="戦闘態勢をとります!<br>\n";

		$log2 .=qq|<form action="$script" method="$method" name="ore_">\n|;
		$log2 .=qq|<td align="center" valign="middle">\n| if($mv_mode eq 'pc');
		$log2 .=qq|<input type="hidden" name="id" value="$id">\n<input type="hidden" name="pw" value="$pw">\n|;
		$log2 .=qq|<input type="hidden" name="cmd" value="-1"><input $button1 type="submit" value=" 戦闘突入!!">$td_end</form>\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 .="戦闘中にバグが発生しました!強制的にメイン画面に戻ります<br>\n";
		}

		if($tm==40 && $cmd==-1){
			$tm=55;
			$log .="<p>$tnm との対決!!</p><p>どうしますか?</p>\n";
			$log .="<p>魑魅魍魎ステータス - $tnm ( HP $thp MP $tmp UA $tua UD $tud LV $tlv )</p>\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 は 脱兎の如く逃げ出した・・・<br>評価が著しく下がった<br>\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 は 脱兎の如く逃げ出した・・・<br>しかし! $tnm に追いつかれてしまった!!<br>\n";
					$tm=65;
					$rank_exe-=1;
				}

			}elsif($cmd==20){
				$log .="$tnm の討伐を行なう事に!<br>\n";
				$tm=65;
				$rank_exe+=1;
			}

		}elsif($tm==65){

			$log .="真剣勝負開始!<br>\n";
			$tm=75;

		}elsif($tm==75){

			&bt_cm;

			if($thp<1){
				# 獲得金
				$G =int(rand(25000))+((3000*$tlv)-($lv*80));
				$G =1 if($G<1);
				$G =int(rand(500))+1500 if($G>2000);
				$gold +=$G;
				# 経験値
				$E = int((($tlv*2)+$tua+$tud+$tag)*(rand($lv/8)+3))-$lv*2;
				$E = int(rand(300)+1300) if($E>1500);
				$exe+=$E;

				$thp=0;
				$bst ='';
				$bt =0;
				$log .="$nm は $tnm を倒した!<br>\n";
				$log .="$G の金 と $E の経験値を得た!<br>\n";
				$log .="<br>\n";

				# 賞金(自国優位)
				if($nation==$camp){
					$G =int($my_cg/(rand(6)+15));
					$G =int(rand(5000))+1500 if(int(2000>=$G));
					$G =int(rand(15000))+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(5000))+500 if(int(1000>=$G));
					$G =int(rand(10000))+2500 if(int(3500<=$G));
				}

				$exe+=$E;
				$gold+=$G;

				$tsol=int($tsol/2);

				$log .="$cmp[$nation]から $G の賞金を得た!<br>\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='';
				}

				


			}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 に敗れ去った…<br>\n";
				$log .="$G の金 と $E の経験値を得た<br>\n";
				$log .="<p></p>\n";

				$sol=int($sol/2);

				$rank_exe-=25;
				$log .="魑魅魍魎に返り討ちにあうという不名誉な敗北に、<br>貴方に対する評価が著しく低下した<br>\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 .="一階級降格されてしまった…<br>\n";
				}

				$sol=0;
				$tnm='';
				$ck= $tm = 0;
				$nation=0;#討伐
				$type='';

			}

		}

		# 拾得物処理 2
		if($cmd==40){
			&syutoku2;
		}elsif($cmd ==41){
			$log .="$nm は 気づかなかったフリをして立ち去った・・・・・・<br>\n";


			$sol=0;
			$tnm='';
			$ck = $tm = 0;
			$nation=0;#討伐
			$type='';
		}

		$log2 .=qq|<form action="$script" method="$method" name="ore_">\n|;
		$log2 .=qq|<td valign="middle">\n| if($mv_mode eq 'pc');
		$log2 .=qq|<input type="hidden" name="id" value="$id">\n<input type="hidden" name="pw" value="$pw">\n|;
		if($tsol<1||$sol<1){
			$log2 .=qq|<input type="hidden" name="cmd" value="-1">\n|;
		}if($tm==55){
			$log2 .=qq|<select name="cmd" size="1"><option value="10">逃げる</option><option value="20">闘う</option>\n|;
			$log2 .=qq|</select>|;
		}elsif($tm==65){
			$log2 .=qq|<input type="hidden" name="cmd" value="-1">\n|;
		}elsif($tm==75){
			&spell_sp;
 
 # 続行メニュー ここから
 }elsif($tm==80){ 
  $log2 .= qq|<select name="cmd" size="1">|;
  $log2 .= qq|<option value="-1" >やめる</option>|;
  $log2 .= qq|<option value="50" >討伐を続ける</option>|;
  $log2 .= qq|</select>|;
  $tm = 85;
 }elsif($tm==85){
  if($cmd==50){
   $tm=$ck=0;    
   $log .= "$nmは、探索を続けることにした";
  }else{
   $tm=$ck=0;
   $type='';
   $nation=0;
   $log .= "$nmは、探索を中止して帰路についた";
  }
 # 続行メニュー ここまで

		}elsif($tm>=100){
			$log2 .=qq|<select name="cmd" size="1"><option value="40">拾う</option><option value="41">ほっとく</option>\n|;
			$log2 .=qq|</select>|;
		}
		$log2 .=qq|<br>|;#テーブルずれ修正
		$log2 .=qq|<input type="submit" $button1 value="NEXT!">$td_end</form>\n|;#テーブル追加</tr></table>
	}

	&dat_write;

}


# 拾得物処理 1
if(int(rand(200))==0){
  &syutoku1;
}else{
  $sol=0;
  $tnm='';

  # 続行メニュー
  # $ck = $tm = 0;
  # $nation=0;
  # $type='';
  $tm = 80;
}
sub syutoku1{

	$log .="$tnm が消滅した場所に何か落ちている・・・・・<br>$nm は ";

	my $S = int(rand(10)+1);

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

	# 道具
	}elsif($S == 4){
		$log .="$di_data[1][1]を発見した!!<br><br>装備する場合、現在所持している道具";
		$tm = 140;
	}elsif($S == 5){
		$log .="$di_data[2][1]を発見した!!<br><br>装備する場合、現在所持している道具";
		$tm = 150;
	}elsif($S == 6){
		$log .="$di_data[3][1]を発見した!!<br><br>装備する場合、現在所持している道具";
		$tm = 160;
	}elsif($S == 7){
		$log .="$di_data[4][1]を発見した!!<br><br>装備する場合、現在所持している道具";
		$tm = 170;

	# 防具
	}elsif($S == 8){
		$log .="$df_data[2][1]を発見した!!<br><br>装備する場合、現在所持している道具";
		$tm = 180;
	}elsif($S == 9){
		$log .="$df_data[3][1]を発見した!!<br><br>装備する場合、現在所持している道具";
		$tm = 190;
	}elsif($S == 10){
		$log .="$df_data[4][1]を発見した!!<br><br>装備する場合、現在所持している道具";
		$tm = 200;
	}
	$log .="は破棄されます。<br>どうしますか?<br>";
}

#拾得物処理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 .="を手に入れた!!<br>\n";

       $sol=0;
       $tnm='';
       # $ck = $tm = 0;
       # $nation=0;#討伐
       # $type='';

       $tm = 80;
}





1;

--------
- まず、おかしいところは拾得1の部分でしょうか。この部分を追加したのだと思いますが、148行付近を修正することになりますね。 -- [[あくあ]] &new{2008-01-27 (日) 13:37:24};
- この部分が何をしているのかというとtype=0,tm=0で討伐を抜けて初期メニューに戻る処理になります。この部分を#で無効にして、tm=80に変えることで討伐の80番の処理に飛ぶことになります。それはいいのですが、[[freedom]]さんがこの処理を追加したのは、討伐のどの状態でも必ず、最後に実行される部分になります。ということは、tmが最後に必ず80番になってしまうわけです。
- あと全部張るのはやめましょ。丸投げしているように見えてしまいますよ。プログラムを変更した結果、(意図とは違う動作だとしても)正確に実行されている訳ですから変更した場所を良く考えましょう --  &new{2008-01-27 (日) 13:38:31};
- 全部はって申し訳ありません以降気を付けます,148行目は経験値を得たという風になっていますがここになにかするということでしょうか? -- [[freedom]] &new{2008-01-27 (日) 15:14:49};
- 初心者なのでできれば詳しく教えてください すいません 一応このページの討伐の連続化のようにやったつもりでしたが... -- [[freedom]] &new{2008-01-27 (日) 15:16:16};
- 貼り付けられているソースで数えましたので、前後10行くらいを見てください。あくまで拾得1の部分を修正することを考えてください -- [[あくあ]] &new{2008-01-27 (日) 16:11:23};
- 言っている意味はだいたい分かるのですが 拾得1の貼付けた場所が悪いってことですよね? -- [[freedom]] &new{2008-01-27 (日) 16:28:02};
- 80番に行かないようにすれば良いんですよね? できればソースはって欲しいんですけど無理ですかね? とりあえず困っています -- [[freedom]] &new{2008-01-27 (日) 16:29:22};


#comment


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS