敵が倒された時の実行内容について(質問掲示板

投稿:   39 mini tomato 投稿:2010/07/19 23:53:19(最新:2010/07/22 09:24:22)
いくつかのモンスターにフラグを仕込んで、それらを倒した時にイベントを発生させたいのですが、上手くいきません。

どうやらフラグの設定がまずいようです。
そこで、敵が倒された時の実行内容に、フラグを設定する場合どうやったらいいのでしょうか。

ちなみに私はよくわからないまま

倒された時の実行内容、
setFlag("フラグ", true)

発生するイベントの実行内容、
if getflag("フラグ")
speak("")
else
end

という風に作りました。自動再生式なので、延々とイベントが再生されます。

初歩的な質問で申し訳ありません。

コメントする

コメントするには、ログインする必要があります。

コメント一覧

  39 mini tomato(投稿日:2010/07/22 09:24, 履歴)
ありがとうございます!
条件どうしをつないだら、上手く行きました。

ご迷惑おかけしました。
Zararu128x128 mini dycoon(投稿日:2010/07/21 22:27, 履歴)
条件を && でつないでない場合そういうことが起こりうるかと思います。
有効条件スクリプトや && については以下を参照してください。
http://rmake.jp/document/script_manual

もし、問題が起こった場合問題がありそうな場所の
コードなどを合わせて提示いただけると
答えが得やすい場合もあるかと思います。

Rmake記法の
{{{code

}}}
を使うとコードを表示しやすいです。
実際に使う場合は全角の中括弧は半角にしてください。

よろしくお願いします。
  39 mini tomato(投稿日:2010/07/21 15:35, 履歴)
自動再生成功しました!
ありがとうございます!!

ただ、イベントの有効条件でフラグが一本だけなら問題ないのですが、
一気に三十本ほど設定したところ、最後の三十番目のフラグを持っている敵を倒した瞬間、フラグをすべて回収し終わる前にイベントが発生してしまうようです。

お手数ですが、よろしければご確認ください。

shirosaboten様、dycoon様、お付き合いしていただき重ねてお礼申し上げます。
またご教授くだされば幸いです。
Zararu128x128 mini dycoon(投稿日:2010/07/21 11:39, 履歴)
バグを修正しました。
動作するようになっているかと思います。

よろしくお願いします。
Zararu128x128 mini dycoon(投稿日:2010/07/21 10:39, 履歴)
詳細な報告ありがとうございました。

敵の数を増やしてみたところ、
問題の現象と思われるものが再現しました。
Rmakeのバグと思われますので修正を試みます。

よろしくお願いします。

  39 mini tomato(投稿日:2010/07/21 01:27, 履歴)
テスト用に別のゲームとマップシーンを用意して作ったら問題なく自動再生されました。
私の方に原因があるみたいです(;゚д゚)

とりあえずイベントは再生されるので、フラグの設定と取得は大丈夫みたいですが。
だとしたら他のイベントに問題があるのでしょうか。

マップは一つ。
他のイベントは話しかけて発生するタイプばかり七つ。
うち四つはいまだによくわかっていない変数を、二つは選択肢を使っています。
まだ全部確認していませんが、どのイベントに話しかけても、最後に自動再生のイベントが発生するようです。

ちなみに他のイベントに有効条件は用いていません。

あぁ、なんだか沢山回答していただいたのに、ふがいない返答ばかりで申し訳ありませんorz
これからもう一回見直してみます。

お力添えに物凄く感謝しています。本当にありがとうございます。
Zararu128x128 mini dycoon(投稿日:2010/07/20 23:13, 履歴)
自動実行されるイベントの有効条件を書き忘れていました。
getFlag("出現")


Rmake側のバグかなと思う動作をしているようでしたので
対応させていただいております。

よろしくお願いします。
      mini shirosaboten(投稿日:2010/07/20 22:54, 履歴)
tomatoさんの『ほかのイベント』というのは自動実行のイベントではないですか?

たとえば二つのイベントが同じ有効条件で自動実行、もしくは有効条件は別でもともに条件を満たしている場合、座標の小さいほうから順番に実行されると思います。
イベントをコピーして使った場合なんかに有効条件がそのままだった、ということがあるのかな、と…


あと、setFlag("フラグ", true)にしても同イベントの実行内容に続きがある場合はその内容を実行してから、自動実行イベントに移ります。

と、そういうわけでもないのかな…?^^;
Zararu128x128 mini dycoon(投稿日:2010/07/20 22:38, 履歴)
Rmakeのご利用ありがとうございます。

以下のようなスクリプトを書いて動作確認してみました。


倒されたときの実行内容
setFlag("出現", true)


  • 自動実行されるイベント

イベント実行内容
speak("出現しました。")
setFlag("出現", false)
speak("消えます。")


これで敵を倒したときに、
自動実行のイベントが実行されることを確認しました。

もしよろしければ、再現の具体的な条件などを書いていただけると
原因究明などおこなえるかと思います。

よろしくお願いします。
  39 mini tomato(投稿日:2010/07/20 21:40, 履歴)
回答ありがとうございます!
有効条件に書くべきところを、実行条件にしていたようです。

ですが、敵を倒してフラグを有効にした瞬間にイベントが発生するのではなく、敵を倒したあと、何か他のイベントを開いたときに、続く形で発生してしまいます。

自動再生というのは、そういう意味なのでしょうか。

よろしければもう一度ご教授をお願いします。
      mini shirosaboten(投稿日:2010/07/20 13:28, 履歴)
こんにちは。
自動実行のイベントは有効条件を満たしている限り実行するので、これだとこのマップに入ったとたんキャラが動かなくなっていませんか?

発生するイベント側の有効条件と実行内容の使い分けをする必要があります。
希望通りの動きを実現する方法ですが

有効条件:getFlag("フラグ")
実行内容:speak("なんたらかんたら")
     setFlag("フラグ", false)

これでよろしいかと。
有効条件にフラグや変数の状況を設定すれば、それ以外のとき(条件を満たさないとき)はこの自動実行のイベントは実行されません。
かならず実行内容の最後に有効条件を満たさなくさせる内容を入れてください。これがないと有効条件が『有効』なままなので、イベントがループします。

有効条件もいろいろな変数、フラグを組み合わせられるので、必ずしも敵を倒したことによって得られるようになるフラグを再度オフにする必要はないです(敵を倒したフラグが敵の出現条件にもなってるときなど…)