コメント

このコメントは、【トピック】ある事をすると次のイベントが発生させるには、どうすれば?へのコメントです。

コメントの内容

   mini ___(投稿日:2011/06/04 00:06/04/11)
endを入れた…? 一体何処に…?

はて。まあそれはそこらへんに置いておきまして、
長々と書いていきます。着いてきてくださいね。

まず、変数名またはフラグ名は、一目で意味がわかるものにするよう
心がけるといいと思います。
ちょっとした所にちょこっと使うのならまだ大丈夫なのですが、
後々に「これ何ぞ?」となってくることがありますので、
その時に意味のある変数名だと助かるんですよね。
人に見せるときにも一々説明しなくても良くなりますし。

さて。
こういう入れ子の場合、外からよりも中から作って、
それを囲んでいくとうまくいくことが多いです。
(もちろん大外から作っていっても大丈夫ですが)

まずは選択肢と、それに対するリアクションを作ります。
クエストを受けていない状態の所です。
case speakWithSelect(2 , "あいよ" , "嫌だ" ,
  "お願いしますぜ旦那ぁ…")
 when 0  # はいの場合
  speak("よろしくー")
  setFlag("クエ受注" , true) # イベントはここで終わってくれます
 when 1  # いいえの場合
  speak("なんでだよー")
end

クエストを受けている場合は上記文を全く使わないので、
これ全てをif文で条件分岐させます。
同じ文を書くと長くなるので、上記文全てをまとめて
スクリプトBとしますね。
if(getFlag("クエ受注"))  # 以下クエストを受けていた場合
 ~処理内容~
elsif  # 以下クエストを受けていない場合
 スクリプトB
end

初めはクエ受注フラグがfalseですので、elsif以下を実行します。
elsif以下スクリプトBにて、質問に「はい」と答えると、
クエ受注フラグがtrueとなり、次回以降elsif以下ではなく、
if~elsif内のスクリプトを実行します。
次に、この部分…スクリプトAを作ります。

クエストを受注している場合、そのクエストを
クリアしているかしていないかで、処理が分岐しますよね?よって、
if(getFlag("クエクリア"))
  ~プチ幽霊を倒している場合~
  (クリアフラグがtrue)
elsif
 ~プチ幽霊を倒していない場合~
  (クリアフラグがfalse)
end

となります。

クエクリアの場合は、お礼の言葉の後、
クリアフラグと受注フラグをfalseにします。
このままですといつまでも御礼の言葉を言われ続けて、
再びクエストを受けることが出来ませんので。
クエクリアしていない場合は、「畑の~」と
ヒントメッセージを表示することにします。
if(getFlag("クエクリア"))  # クエクリアの場合
  speak("マジあんがとー")
 setFlag("クエ受注" , false)
 setFlag("クエクリア" , false)
elsif  # クエクリアしていない場合
 speak("畑に行けばいいんじゃね")
end

これがクエストを受けていた場合のスクリプトAになりますので、
これらを全て組み合わせると以下のようになります。ゲソ。
if(getFlag("クエ受注"))  # 以下クエストを受けていた場合
 if(getFlag("クエクリア"))  # クエクリアの場合
   speak("マジあんがとー")
  setFlag("クエ受注" , false)
  setFlag("クエクリア" , false)
 elsif  # クエクリアしていない場合
  speak("畑に行けばいいんじゃね")
 end
elsif  # 以下クエストを受けていない場合
 case speakWithSelect(2 , "あいよ" , "嫌だ" ,
   "お願いしますぜ旦那ぁ…")
  when 0  # はいの場合
   speak("よろしくー")
   setFlag("クエ受注" , true)
  when 1  # いいえの場合
   speak("なんでだよー")
 end
end


多分こんな感じで書けば動くと思うんですけどねー。
長文乱文失礼しました。何かあればどうぞー。

コメントの内容(一番最初の投稿)

   mini ___(投稿日:2011/06/04 00:06/04/11)
endを入れた…? 一体何処に…?

はて。まあそれはそこらへんに置いておきまして、
長々と書いていきます。着いてきてくださいね。

まず、変数名またはフラグ名は、一目で意味がわかるものにするよう
心がけるといいと思います。
ちょっとした所にちょこっと使うのならまだ大丈夫なのですが、
後々に「これ何ぞ?」となってくることがありますので、
その時に意味のある変数名だと助かるんですよね。
人に見せるときにも一々説明しなくても良くなりますし。

さて。
こういう入れ子の場合、外からよりも中から作って、
それを囲んでいくとうまくいくことが多いです。
(もちろん大外から作っていっても大丈夫ですが)

まずは選択肢と、それに対するリアクションを作ります。
クエストを受けていない状態の所です。
case speakWithSelect(2 , "あいよ" , "嫌だ" ,
  "お願いしますぜ旦那ぁ…")
 when 0  # はいの場合
  speak("よろしくー")
  setFlag("クエ受注" , true) # イベントはここで終わってくれます
 when 1  # いいえの場合
  speak("なんでだよー")
end

クエストを受けている場合は上記文を全く使わないので、
これ全てをif文で条件分岐させます。
同じ文を書くと長くなるので、上記文全てをまとめて
スクリプトBとしますね。
if(getFlag("クエ受注"))  # 以下クエストを受けていた場合
 ~処理内容~
elsif  # 以下クエストを受けていない場合
 スクリプトB
end

初めはクエ受注フラグがfalseですので、elsif以下を実行します。
elsif以下スクリプトBにて、質問に「はい」と答えると、
クエ受注フラグがtrueとなり、次回以降elsif以下ではなく、
if~elsif内のスクリプトを実行します。
次に、この部分…スクリプトAを作ります。

クエストを受注している場合、そのクエストを
クリアしているかしていないかで、処理が分岐しますよね?よって、
if(getFlag("クエクリア"))
  ~プチ幽霊を倒している場合~
  (クリアフラグがtrue)
elsif
 ~プチ幽霊を倒していない場合~
  (クリアフラグがfalse)
end

となります。

クエクリアの場合は、お礼の言葉の後、
クリアフラグと受注フラグをfalseにします。
このままですといつまでも御礼の言葉を言われ続けて、
再びクエストを受けることが出来ませんので。
クエクリアしていない場合は、「畑の~」と
ヒントメッセージを表示することにします。
if(getFlag("クエクリア"))  # クエクリアの場合
  speak("マジあんがとー")
 setFlag("クエ受注" , false)
 setFlag("クエクリア" , false)
elsif  # クエクリアしていない場合
 speak("畑に行けばいいんじゃね")
end

これがクエストを受けていた場合のスクリプトAになりますので、
これらを全て組み合わせると以下のようになります。ゲソ。
if(getFlag("クエ受注"))  # 以下クエストを受けていた場合
 if(getFlag("クエクリア"))  # クエクリアの場合
   speak("マジあんがとー")
  setFlag("クエ受注" , false)
  setFlag("クエクリア" , false)
 elsif  # クエクリアしていない場合
  speak("畑に行けばいいんじゃね")
 end
elsif  # 以下クエストを受けていない場合
 case speakWithSelect(2 , "あいよ" , "嫌だ" ,
   "お願いしますぜ旦那ぁ…")
  when 0  # はいの場合
   speak("よろしくー")
   setFlag("クエ受注" , true)
  when 1  # いいえの場合
   speak("なんでだよー")
 end
end


多分こんな感じで書けば動くと思うんですけどねー。
長文乱文失礼しました。何かあればどうぞー。