私設SoS2オーナー応援BBS

新規発言一覧最新記事過去一覧検索ダウンロードページHOME

スレッド

└◇356:
街とダンジョン [masaki] 02/15 15:52

 ├◇357:Re:街とダンジョン [moon] 02/15 18:53
 │└◇358:補足 [moon] 02/15 18:57
 │ └◇359:Re:補足 [masaki] 02/16 13:23
 │  └◇360:Re[2]:補足 [moon] 02/16 15:13
 │   └◇361:Re[3]:補足 [masaki] 02/16 16:42
 │    └◇362:Re[4]:補足 [masaki] 02/16 19:20
 │     └◇363:Re[5]:補足 [moon] 02/16 20:16
 │      └◇364:Re[6]:補足 [masaki] 02/16 21:32
 │       └◇365:Re[7]:補足 [moon] 02/16 22:20
 │        └◇367:Re[8]:補足 [masaki] 02/16 22:46
 │         └◇368:Re[9]:補足 [moon] 02/16 23:53
 │          ├◇369:補足 [moon] 02/17 00:14
 │          │└◇372:Re:補足 [masaki] 02/17 06:36
 │          │ └◇373:Re[2]:補足 [moon] 02/17 09:08
 │          └◇370:Re[10]:補足 [masaki] 02/17 06:23
 └◇374:Re:街とダンジョン [masaki] 02/17 17:51
  └◇375:Re[2]:街とダンジョン [moon] 02/17 19:15
   └◇376:Re[3]:街とダンジョン [masaki] 02/17 20:17
    └◇377:Re[4]:街とダンジョン [moon] 02/17 22:49
     └◇379:Re[5]:街とダンジョン [masaki] 02/18 15:15
      └◇380:Re[6]:街とダンジョン [moon] 02/18 21:09<-last


356● 街とダンジョン[ masaki ] 2003 02/15 15:52
街移動で、Aという街に行けばそこがダンジョンになっているようにしようと改造をはじめました。。
街移動(town.pl)に
<input type="submit" value=" 移動 "></td></form><td>
<form method="POST" action="sos2.cgi">
<input type="hidden" name="mode" value="make_con">
<input type="hidden" name="name" value="$nm">
<input type="hidden" name="id" value="$id">
<input type="hidden" name="pass" value="$ps">
<input type="hidden" name="town_w" value="$Fm{'town_w'}">
<input type="submit" value="行動画面">
というばしょがあったので、
<form method="POST" action="sos2.cgi">
の場所をdungeon.plとつなげればいいのかな?(違うかも)
と思ったのですが、どのようにすればいいでしょうか?
(まったく的外れでしょうか?(^^;)
town.plはこんな感じです。(;;
http://m3voyage.hp.infoseek.co.jp/town.txt
スレッド一覧


357● Re:街とダンジョン[ moon ] 2003 02/15 18:53
> 街移動で、Aという街に行けばそこがダンジョンになっているようにしようと改造をはじめました。。
> 街移動(town.pl)に
> <input type="submit" value=" 移動 "></td></form><td>
> <form method="POST" action="sos2.cgi">
> <input type="hidden" name="mode" value="make_con">
> <input type="hidden" name="name" value="$nm">
> <input type="hidden" name="id" value="$id">
> <input type="hidden" name="pass" value="$ps">
> <input type="hidden" name="town_w" value="$Fm{'town_w'}">
> <input type="submit" value="行動画面">
> というばしょがあったので、
> <form method="POST" action="sos2.cgi">
> の場所をdungeon.plとつなげればいいのかな?(違うかも)
> と思ったのですが、どのようにすればいいでしょうか?
> (まったく的外れでしょうか?(^^;)
> town.plはこんな感じです。(;;

スクリプトを詳しくは見ていませんが、その町自体がダンジョンならnormal_actionで$twや$twnとかの町を識別する変数を使用してダンジョンを表示するかを判定したほうが楽なような気がしますが・・・。
例えば、
  if($tw eq 'ダンジョンがある町1'){
    # ダンジョンの表示や行動メニュー1
  }
  elsif($tw eq 'ダンジョンがある町2'){
    # ダンジョンの表示や行動メニュー2
  }
  else{
    # 通常の行動メニュー
  }
のような感じで。
町移動もダンジョンも詳しくは分からないので見当違いかもしれませんが。

# スクリプトを全部載せるのはどうかと少し思ってしまいました。(再配布にあたるのでは、という意味でそう思ったのですがどうなのでしょうね?)
スレッド一覧


358● 補足[ moon ] 2003 02/15 18:57
> 例えば、
>   if($tw eq 'ダンジョンがある町1'){
>     # ダンジョンの表示や行動メニュー1
>   }
>   elsif($tw eq 'ダンジョンがある町2'){
>     # ダンジョンの表示や行動メニュー2
>   }
>   else{
>     # 通常の行動メニュー
>   }
> のような感じで。

require 'dungeon.pl';は必要に応じてダンジョンの表示前に。

また、次のような書き方も。
  if($tw eq 'ダンジョンがある町1' || $tw eq 'ダンジョンがある町2'){
    require 'dungeon.pl';
    # ダンジョンの表示や行動メニュー
  }
  else{
    # 通常の行動メニュー
  }
スレッド一覧


359● Re:補足[ masaki ] 2003 02/16 13:23
そうですね。全部載せるのは再配布のような気がします。。
以後気をつけます。御忠告ありがとうございました。

最初の方法でやってみたのですが、
http://m3voyage.hp.infoseek.co.jp/sos.jpg
こんな風になってしまします(;;
この下に、さらにまたプレイヤーのデータが表示されています。
(左上の文字が気になりますが(^^;)
怪しいと思うのは
Main Programの
if ($Fm{'mode'} eq 'dungeon_select') { require 'dungeon.pl'; &dungeonselect_form }
normal actionの
&input('radio','mode','dungeon_select','',"ダンジョン攻略に出かける<br>\n") if $av ne 'dead';
あたりです。(でも、どこもおかしくなさそうですが)
あとは、僕のやり方が間違っているとしか・・・。
# Sub Normal Action #
sub normal_action {
    if($tw eq 1){
&get_file; &list_in;
    print qq|<tr>|;
    &form('start');
    print qq|<td valign=top>|;
    &input('radio','mode','note_before','',"手紙を書く<br>\n");
#1の街のときの行動(省略)
&input('radio','mode','dungeon_select','',"ダンジョン攻略に出かける<br>\n") if $av ne 'dead';
&OKbuttoninform('n');
    print qq|</td>|;
    &form('end');
}
else{
&get_file; &list_in;
    print qq|<tr>|;
    &form('start');
    print qq|<td valign=top>|;
    &input('radio','mode','find_partner',' checked',"他のプレイヤーを探す<br>\n");
    &input('radio','mode','note_before','',"手紙を書く<br>\n");
#その他の街での行動(省略)
&OKbuttoninform('n');
    print qq|</td>|;
    &form('end');
}
という感じです。。
見にくくてすみません(;;
スレッド一覧


360● Re[2]:補足[ moon ] 2003 02/16 15:13
> そうですね。全部載せるのは再配布のような気がします。。
> 以後気をつけます。御忠告ありがとうございました。

これは忠告ではなくただ疑問に思っただけです。まあ、どっちでも良いのですが。(笑)

> 最初の方法でやってみたのですが、
> http://m3voyage.hp.infoseek.co.jp/sos.jpg
> こんな風になってしまします(;;
> この下に、さらにまたプレイヤーのデータが表示されています。
> (左上の文字が気になりますが(^^;)

左上の文字は&header;が2度実行されているからです。
同様に2つ目のプレイヤーデータが表示されるのは&partner_data;が2度実行されているからでしょうね・・・。

町に行った瞬間にダンジョンに行くのではなく、行くかどうかを選択できるということだったのですか?
しかも、ダンジョン専用の画面が用意されているようだし。

それなら、normal_actionではダンジョンと普通の町で行動メニューを分けず普通の行動メニューを追加するように、
  &input('radio','mode','dungeon_select','',"ダンジョン攻略に出かける<br>\n") if($tw eq '1' && $av ne 'dead');
とかを追加すれば良いだけでは?
スレッド一覧


361● Re[3]:補足[ masaki ] 2003 02/16 16:42
> 左上の文字は&header;が2度実行されているからです。
> 同様に2つ目のプレイヤーデータが表示されるのは&partner_data;が2度実行されているからでしょうね・・・。
&header;も&partner_data;も、normal_action内にはないのですが(;;
よくわからないです。。すみません。。
> それなら、normal_actionではダンジョンと普通の町で行動メニューを分けず普通の行動メニューを追加するように、
>   &input('radio','mode','dungeon_select','',"ダンジョン攻略に出かける<br>\n") if($tw eq '1' && $av ne 'dead');
> とかを追加すれば良いだけでは?
はい。。まったくその通りです。(笑)
なんだか難しく考えすぎていたみたいですね(^^;
スレッド一覧


362● Re[4]:補足[ masaki ] 2003 02/16 19:20
dungeon.pl内の
# Sub DungeonSelect Form -- ダンジョン選択フォーム--
sub dungeonselect_form {
&header;
&table_top;
&msg;
&dungeon_select    if $Fm{'mode'} eq 'dungeon_select';
&table_bottom;
}
の&headerかと思いましたがこれも違いました。。
説明書通りではないと大変ですね(^^;
(変更点が多いですし)
スレッド一覧


363● Re[5]:補足[ moon ] 2003 02/16 20:16
> dungeon.pl内の
> # Sub DungeonSelect Form -- ダンジョン選択フォーム--
> sub dungeonselect_form {
> &header;
> &table_top;
> &msg;
> &dungeon_select    if $Fm{'mode'} eq 'dungeon_select';
> &table_bottom;
> }
> の&headerかと思いましたがこれも違いました。。
> 説明書通りではないと大変ですね(^^;
> (変更点が多いですし)

うまくいったか微妙な返信だったので、うまくいったと判断し何も返信しませんでしたが一部まだだったのですね。(笑)

以下、確認事項。
・dungeon_selectは何をやっているものですか?(想像は出来ますが)
・dungeonselect_formの後に続く処理は何も無いですよね?
・流れは「ダンジョン攻略に出かける」→「dungeonselect_form」→終了、ですか?(それとも違う処理?)
・画像の状態は何をした後ですか?

とりあえず、流れを見極めないことには・・・。
スレッド一覧


364● Re[6]:補足[ masaki ] 2003 02/16 21:32
> 以下、確認事項。
> ・dungeon_selectは何をやっているものですか?(想像は出来ますが)
いくつかあるダンジョンの中から行きたいダンジョンを選ぶ物です。
(そのまんまかな(^^;)
> ・dungeonselect_formの後に続く処理は何も無いですよね?
続く処理はないです。上ので終わりです。
> ・流れは「ダンジョン攻略に出かける」→「dungeonselect_form」→終了、ですか?(それとも違う処理?)
ダンジョン攻略に出かける⇒dungeonselect_form⇒dungeon_action⇒終了 です。。
> ・画像の状態は何をした後ですか?
画像は「ダンジョン攻略に出かける」をしたあとです。
> とりあえず、流れを見極めないことには・・・。
はい(^^;
色々とすみません(^^;
スレッド一覧


365● Re[7]:補足[ moon ] 2003 02/16 22:20
> > ・dungeonselect_formの後に続く処理は何も無いですよね?
> 続く処理はないです。上ので終わりです。
で、if ($Fm{'mode'} eq 'dungeon_select') { require 'dungeon.pl'; &dungeonselect_form }なら、これの実行時は選択画面しか表示されない(行動画面やプレイヤーデータが表示されない)ということになるような。(dungeon_selectでそこまで表示しているのなら大丈夫ですが)

> > ・流れは「ダンジョン攻略に出かける」→「dungeonselect_form」→終了、ですか?(それとも違う処理?)
> ダンジョン攻略に出かける⇒dungeonselect_form⇒dungeon_action⇒終了 です。。
> > ・画像の状態は何をした後ですか?
> 画像は「ダンジョン攻略に出かける」をしたあとです。

dungeonselect_form⇒dungeon_actionということなのでdungeon_actionのほう(もしくはそこから呼び出されるサブルーチン)で&header;が余分に実行されているのでは?

# 例によって、push(@msg,'〜');または場所によってprint '〜';で確認したほうが流れ確認には早いような。(とりあえず、付ける場所はdungeon系のサブルーチンの先頭)
スレッド一覧


367● Re[8]:補足[ masaki ] 2003 02/16 22:46
> # 例によって、push(@msg,'〜');または場所によってprint '〜';で確認したほうが流れ確認には早いような。(とりあえず、付ける場所はdungeon系のサブルーチンの先頭)
むむ・・。
push(@msg'〜')などを付けて調べると言う事ですか?

@rcdlines = &get_user("$Fm{'id'}");
    @dstslines = &get_dstatus("$Fm{'id'}");
    local($ipng,$north,$south,$east,$west) = get_dungeon($ufln,$upox,$upoy);
    &get_file; &list_in;

    &form('start');
    print qq|<td valign=top>|;
    print qq|シナリオ:$usnm<br>|;
    print qq|<img src="$imgdir$ipng" width=$ig_wd height=$ig_ht>\n|;
    print qq| <img src="$imgdir$ivntpng" width=$ig_wd height=$ig_ht>\n| if ($discoverflag == 1);
    print qq|<br>現在位置 X $upox Y $upoy<br><br>|;

    if ($fight_flag) {
        #ダンジョン内での戦闘
    }
    else {#移動・その他の行動
        
    }
    &OKbuttoninform('n');
    print qq|</td>|;
    &form('end');
いまいちわからないのですが・・。
(本当にすみません(;;)
検索してみましたが、&headerはありませんでした。。
スレッド一覧


368● Re[9]:補足[ moon ] 2003 02/16 23:53
> push(@msg'〜')などを付けて調べると言う事ですか?

そうです。

何をやっているのかが分からなくなってきたので、確認ですが現象は画像のまま変わっていませんよね?
あと、画像のときのHTMLソースがあったほうが良いです。

# 「ダンジョン選択」「dungeonselect_form」を一度実行した後、「dungeonselect_form」「dungeon_action」の繰り返し、なら大枠としては変なところが見つからないんだけどな・・・。
スレッド一覧


369● 補足[ moon ] 2003 02/17 00:14
本当にheaderが2度実行されているかの確認もしておいたほうが良いかな、ということでsub headerに以下を追加。

$xxx++;
$zzz = "header count $xxx";
print "$zzz<br>";
push(@msg,$zzz);

ちなみに、追加した後は画面で確認するのではなくHTMLで確認したほうが正確です。(これに限りませんが)
スレッド一覧


372● Re:補足[ masaki ] 2003 02/17 06:36
トップからずっと、
header count1
でしたが、ダンジョンへ行くをしたところ
header count2
もでてきました(;;
やっぱりdungeonselectでしょうか?(・・;
スレッド一覧


373● Re[2]:補足[ moon ] 2003 02/17 09:08
> トップからずっと、
> header count1
> でしたが、ダンジョンへ行くをしたところ
> header count2
> もでてきました(;;
> やっぱりdungeonselectでしょうか?(・・;

dungeonselect_formが毎回呼び出される必要があるのか分からないので何とも言えないですが、呼び出す必要が無いならそうして試してみてください。

あと一つ思い付いたのですが、dungeon_actionの実行はplay_formの中ですか?
それとも、メイン処理分岐(Main Program)の中ですか?

前者の場合、dungeon_actionの中でも&player_data;を実行している場合2度目になるので画像のようになると思います。(もちろん&dungeonselect_formも実行されているのなら&header;も2度目になります。)

# 関係ないですけれどアップしてもらったテキストを表示するとHTMLとして表示されますね・・・。(iswebの仕様なのかな?それともうちだけ?)
# HTMLだとバナーが付くのにテキストだとバナーが付かないようなのでこれを悪用している人がいそう。(笑)
スレッド一覧


370● Re[10]:補足[ masaki ] 2003 02/17 06:23
・dungeonselect_formに一つ&headerがあったので削除してみましたが、プレイヤーのデータの周りの枠(だけ)が消えてしまいました。
http://m3voyage.hp.infoseek.co.jp/sos0.txt(ソース)
・結局、あの画像の状態から変化なしです(TT
http://m3voyage.hp.infoseek.co.jp/sos1.txt
スレッド一覧


374● Re:街とダンジョン[ masaki ] 2003 02/17 17:51
> あと一つ思い付いたのですが、dungeon_actionの実行はplay_formの中ですか?
> それとも、メイン処理分岐(Main Program)の中ですか?
Main Programの中です(;;
> # 関係ないですけれどアップしてもらったテキストを表示するとHTMLとして表示されますね・・・。(iswebの仕様なのかな?それともうちだけ?)
ほんとですね(^^;
スレッド一覧


375● Re[2]:街とダンジョン[ moon ] 2003 02/17 19:15
> Main Programの中です(;;

では、それはどういうふうに記述されていますか?
もし、
require 'dungeon.pl';
&header;
&table_top;
&msg;
&dungeonselect_form;
&dungeon_action;
&table_bottom;
とかなら原因そのままなんだけれどな。(笑)
スレッド一覧


376● Re[3]:街とダンジョン[ masaki ] 2003 02/17 20:17
> では、それはどういうふうに記述されていますか?
> もし、
> require 'dungeon.pl';
> &header;
> &table_top;
> &msg;
> &dungeonselect_form;
> &dungeon_action;
> &table_bottom;
> とかなら原因そのままなんだけれどな。(笑)
え・・。(冷汗
もしかしたら、moonさんが聞いているのと違う事を答えてしまったかもしれません(^^;
Main Programというのは
if ($Fm{'mode'} eq 'dungeon_select') { require 'dungeon.pl'; &dungeonselect_form }
のことかと思っていました(;;
(でも、play_formの中には、dungeon系の物は一つもないです。。)
dungeon.pl内のdungeonselectなら
&header;
&table_top;
&msg;
&dungeon_select    if $Fm{'mode'} eq 'dungeon_select';
&player_data;
&table_bottom;
となっていますが(^^;
(意味不明なことばかり言ってすみません(;;)
スレッド一覧


377● Re[4]:街とダンジョン[ moon ] 2003 02/17 22:49
> え・・。(冷汗
> もしかしたら、moonさんが聞いているのと違う事を答えてしまったかもしれません(^^;
> Main Programというのは
> if ($Fm{'mode'} eq 'dungeon_select') { require 'dungeon.pl'; &dungeonselect_form }
> のことかと思っていました(;;
> (でも、play_formの中には、dungeon系の物は一つもないです。。)
> dungeon.pl内のdungeonselectなら
> &header;
> &table_top;
> &msg;
> &dungeon_select    if $Fm{'mode'} eq 'dungeon_select';
> &player_data;
> &table_bottom;
> となっていますが(^^;
> (意味不明なことばかり言ってすみません(;;)

いえ、dungeonselect_formではなくてdungeon_actionがどこで実行されているか(+そこまでとその後の流れ)が知りたかったのです。
そして、No.375に書いたような感じになっていたら良いなあと。(笑)

ところで、No.367のスクリプトはdungeon_actionのものなのでしょうか?(これを聞いても問題解決には結びつきませんがなんか気になっていたので。)
スレッド一覧


379● Re[5]:街とダンジョン[ masaki ] 2003 02/18 15:15
いくらやっても無理なようなので諦める事にしました(;;
(レス遅れてすみません)
>ところで、No.367のスクリプトはdungeon_actionのものなのでしょうか?(これを聞いても問題解決には結びつきませんがなんか気になっていたので。)
そうです。dungeon_action内のものです(^^;

質問なのですが、moonさんのところのダンジョンは配布予定はないですか?(すごく自分勝手ですみません(泣泣)

スクリプトをみて、大体理解できるようにはなってきたのですが…。
「慣れ」ですね慣れ!(笑)
ありがとうございました。
スレッド一覧


380● Re[6]:街とダンジョン[ moon ] 2003 02/18 21:09
> いくらやっても無理なようなので諦める事にしました(;;
> (レス遅れてすみません)
> >ところで、No.367のスクリプトはdungeon_actionのものなのでしょうか?(これを聞いても問題解決には結びつきませんがなんか気になっていたので。)
> そうです。dungeon_action内のものです(^^;

お役に立てず申し訳ないです。(自分的にはiswebのテキスト形式のことが分かったので役に立ちましたが。(笑))
端から見ているので分からなかっただけで、問題は案外簡単なところにあると思いますよ。(無責任な発言で申し訳ないですが)
まあ、また気が向いたときにでもチャレンジしてみてください。

> 質問なのですが、moonさんのところのダンジョンは配布予定はないですか?(すごく自分勝手ですみません(泣泣)
>
> スクリプトをみて、大体理解できるようにはなってきたのですが…。
> 「慣れ」ですね慣れ!(笑)
> ありがとうございました。

ダンジョンは配布しません。
なにしろ、このSoS2を公開して1週間くらいで付け足したものなのでとても人に見せるようなスクリプトではないので。
スレッド一覧

CGIROOM