* 街中での戦闘呼び出しについて [#l822f1ff] - ページ: [[罪罰改造板3]] - 投稿者: [[たぬたぬ]] - 優先順位: 普通 - 状態: 提案 - カテゴリー: エラーが出ます - 投稿日: 2007-11-29 (木) 12:31:50 - バージョン: ** メッセージ [#r7f41ac7] ショッピングモールの中、または待機中でもいいのですが、 ある条件がそろった時にいきなり戦闘に入るようにしたいのですが、なかなかうまくいきません。 いろいろ錯誤しているのですがどうも・・・orz http://tanutanu.sakura.ne.jp/tanu_battle_test.txt においておきます。 闘うを選んでも進まない状態です、汚いスクリプトで申し訳ないですm(_ _)m ぜひご助言をよろしくお願いいたします。 -------- - 急襲(混同を防ぐために勝手に名付けます^^;)に突入した際に$typeは変更していますでしょうか?それに付随してore_cgiは変更しましたでしょうか? -- [[三毛猫たま]] &new{2007-11-29 (木) 14:31:49}; - 現状維持更新時に襲われた場合には、終了後にまた現状維持(待機中)に戻るだけなのですが、買い物中だと急襲直前の$tmやら$cmdも控えておくか急襲終了後に道端?(=店に入る前)に戻る($type=買い物状態を保持)かしなければならないので、ore_.cgiに少々工夫が必要かもしれません。(それと急襲中の$tm$cmdに変る変数と) -- [[三毛猫]] &new{2007-11-29 (木) 14:38:44}; - 例えば、続行メニューに、elsif($type eq '買物で襲われ中') { require './inc/ore_sub-tanu_battle_test.cgi'; &quest_exe; } ←こんな感じで? -- [[三毛猫]] &new{2007-11-29 (木) 14:48:57}; - 実装しようとしている場所は、お店の「話す」コマンドです。話すをクリックすると、txtファイルの$quest==28の部分が呼び出され、$typeの値は'遭遇中'となります。(ore_.cgiの方にも手を加えてあります。)戦闘が終わったら現状維持の画面に戻すはずなのですが、戦闘が進まないので確認のしようがない状態で・・・(汗 -- [[たぬたぬ]] &new{2007-11-29 (木) 20:13:39}; - 載せたスクリプトは討伐をコピペして$tmの値をいじって加工したものなんです。。。 -- [[たぬたぬ]] &new{2007-11-29 (木) 20:15:49}; - 載せたスクリプトのまま実行すると、キャラの$tmは1512まで進んで、(選択部分は、戦う or 逃げるが表示)そこから何を選択してもそこで止まってしますます。if($tm==1512)の中の$cmd判定をしてくれないようですorz -- [[たぬたぬ]] &new{2007-11-29 (木) 21:12:35}; - UPされたテキストだと不整合な部分が多くて、そこから原因を割り出すのはちょっと厳しいです^^;;>$tmの流れとか選択肢の部分とか。 -- [[三毛猫]] &new{2007-11-30 (金) 01:34:17}; - 討伐の$tmを弄っただけなら、そんなに問題は出ないと思うんですけどねぇ。。。(~_~;) -- [[三毛猫]] &new{2007-11-30 (金) 01:36:22}; - 途中までですが、実際にやってみました。 まず、神殿の選択肢にクエストを追加。 神殿処理のリソースを維持するために、$tm==1198(←ぉぃらの場合の戦闘呼び出しの番号)を追加。 elsif(($tm>=190 && $tm<200)||$tm==1198){require './inc/ore_sub-shop-tensei.cgi';&tensei;} (コレをしないとリソースの中に居てくれなくなる) }elsif($cmd==4){#くえすと? $log .= "助手「いらっしゃいです〜♪<br> じゃ、まず闘ってみましょうか〜♪(何」<br>\n"; $tm=1198; $tnm = "闇$nm"; #名前 敵 $tlv = $lv; #レベル 敵 〜略〜 $tlr = $lr; #LR $ck=1; $log .="$tnm が現れた!<br>\n"; $log .="<p>どうしますか?</p>\n"; $log .="<p>敵ステータス - $tnm ( HP $thp MP $tmp UA $tua UD $tud LV $tlv )</p>\n"; $log2 .=qq|<form action="$script" method="$method" name="ore_">\n|; 〜略〜 $log2 .=qq|</select><br>\n|; $log2 .=qq|<input type="submit" $button1 value="NEXT">$td_end</form>\n|; } で、 }elsif($tm==1198){#$ckは要るのか? if($cmd<=0){ $log .= "$nm は慌てて立ち去った。<br>\n"; $tm = $cmd = 0; &shop_menu; }elsif($cmd==1){ # 戦闘処理読み込み require './inc/ore_sub-battle.cgi'; &bt_st; if($thp<1){ 〜略〜 やってみて思ったこと。 神殿の中に作りこもうとした(これだとore_.cgiを弄る必要がない)のだけれども、 実際のところ、メニュー表示の調整やら$tm・リソースを持ってくるための現在地?調整だのがメンドイです^^;; 討伐の複製でやってるのなら、タブンshop内でのリソースの保持云々(elsif(($tm>=190 && $tm<200)||$tm==1198){require './inc/ore_sub-shop-tensei.cgi';&tensei;})で引っかかってたのではないかな?っと思うのです。 (複製の方もやってみますね〜) -- [[三毛猫]] &new{2007-11-30 (金) 10:24:36}; - ありがとうございますm(_ _)m 三毛猫さんのを参考に改良してみました。しかしやはり戦闘がバグりますorzhttp://tanutanu.sakura.ne.jp/tanu_battle_test_v2.txt -- [[たぬたぬ]] &new{2007-11-30 (金) 13:46:31}; - 更新版だと、戦闘はするのですが、闘うを選択直後すでに戦闘が始まっている状態で、次に攻撃すると今度は選択肢が出なくなるというバグに。。。 -- [[たぬたぬ]] &new{2007-11-30 (金) 13:49:47}; - すぐに戦闘が始まるのはNEXTボタンで$cmd=-1で$tmを増やしてワンクッション入れればできそうな感じですが、でもやっぱりいろいろおかしいですねorz -- [[たぬたぬ]] &new{2007-11-30 (金) 13:50:54}; - 戦争処理の整合させるのが大変そうなので、途中で諦めたんです^^;;>上にUPしたの。 -- [[三毛猫]] &new{2007-11-30 (金) 14:22:20}; - 討伐をほぼそのまま持ってくるタイプのは、たぶんウチの「遠征」の方が流用させやすいと思うので、挑戦中です。>目処がついたらまた書きますので。。。 -- [[三毛猫]] &new{2007-11-30 (金) 14:26:26}; - ちゃんと動いたのでご報告を。 ~ 神殿内の処理。$tm==1198にて、 }elsif($tm==1198){#$ckは要るのか? if($cmd<=0){ $log .= "$nm は慌てて立ち去った。<br>\n"; $tm = $cmd = 0; &shop_menu; }elsif($cmd==1){ $type='くえすと中'; $log .= "戦闘開始!<br>\n"; $tm=65;#←多分ポイント。 $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="submit" $button1 value="NEXT">$td_end</form>\n|; &dat_write; } } ore_.cgiにて、 elsif($type eq 'くえすと中'){ require './inc/ore_sub-qtime.cgi';&quest_st; } を追加。 ore_sub-qtime.cgiの中身は sub quest_st { if($ck){ # 戦闘処理読み込み require './inc/ore_sub-battle.cgi'; if(!$b_n && !$tlr){ $tm = 0; $ck = 0; $nation = 0;#猫討伐 $type=''; $log .="戦闘中にバグが発生しました!強制的にメイン画面に戻ります<br>\n"; } if($tm==65){ $log .="真剣勝負開始!<br>\n"; $tm=75; }elsif($tm==75){ &bt_cm; if($thp<1 && $hp>0){ # 獲得金 $G =int(rand(200))+((500*$tlv)-($lv*50)); 〜略〜 $ck = $tm = 0; $nation=0; $type=''; }elsif($hp<1 && $thp>0){ $bst =''; $bt =0; 〜略〜 $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==65){ $log2 .=qq|<input type="hidden" name="cmd" value="-1">\n|; }elsif($tm==75){ &spell_sp; } $log2 .=qq|<br>|;#テーブルずれ修正 $log2 .=qq|<input type="submit" $button1 value="NEXT!">$td_end</form>\n|;#テーブル追加</tr></table> } &dat_write; } こんな感じで。。(必要最小限になっています)-- [[三毛猫]] &new{2007-11-30 (金) 19:08:14}; - elsif($tm==1198){〜の中に「NEXT」ボタンと次のステップへの導入要素($tmと$type)を。>qtimeの方は、導入要素をどの時点で一番効率よく受け取れるかで、$tm==65にしました。(長文掲載で申し訳ない<(_ _;)>) -- [[三毛猫]] &new{2007-11-30 (金) 19:25:28}; - 本当にありがとうございますm(_ _)m。無事に動きました。例のqusetのファイルの中だと何をどうしても闘うを選んだ後の$cmdの判定をしてくれないので全てshopに記述したところ問題なく動きましたm(_ _)m -- [[たぬたぬ]] &new{2007-12-01 (土) 20:21:13}; #comment