アイテム何度も貰っても困りますよ奥さん(ごめんなさい)(質問掲示板

投稿: User icon mini akan 投稿:2011/02/03 03:44:03(最新:2011/02/03 06:40:03)
アイテムを何度も貰ってしまうのですが、どうしたら一度だけで終わらせられるのでしょうか?
助けて下さい…

コメントする

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

コメント一覧

User icon mini 退会したユーザー(投稿日:2011/02/03 06:40, 履歴)
いえいえ、頑張って下さい。
User icon mini akan(投稿日:2011/02/03 05:38, 履歴)
おかげで上手く出来ました。
ありがとうございます!
User icon mini 退会したユーザー(投稿日:2011/02/03 05:13, 履歴)
ひゃあああ得意げに送信ボタンを押したは良いものの、凄い分かり辛いですねスミマセン!

if getFlag("ドラゴンソード貰った") != true
    giveItem(**********)
    setFlag("ドラゴンソード貰った", true)
end

この3行を説明したのがさっきの長ったらしいコメントになんですが、実際にコピペして動かしてみると分かり易いかもしれません。
giveItemの**********を適当なアイテム番号に差し替えれば動くと思います。
User icon mini 退会したユーザー(投稿日:2011/02/03 05:01, 履歴)
「フラグ」を使えば解決します。
フラグというのは、貰ったか貰ってないかを記憶できる機能です。

さてこの機能、どういう使い方をすれば「アイテムを何度も渡さないように出来るが」ですが、手順は以下の通りです。
1.アイテムを貰ったという事を記録させる。
2.アイテムを貰う前に「アイテムを貰ったか」確認する。
以上です。順を追って説明します。

まず1.ですが、「setFlag関数」を使います。「関数リスト>命令リスト>フラグ設定関数」がソレです。
ダブルクリックすると「フラグ名」「フラグ」という入力欄が出るので、「フラグ名」には記憶しておきたい条件(例えば「ドラゴンソード貰った」とか)を、「フラグ」にはtrue(trueかfalse選べますが、これはスイッチのON・OFFのようなものです)を選択してOKします。
これをアイテムを渡すスクリプトの直後辺りに入れて置けば、下準備はOKです。

さて2.ですが、「getFlag関数」を使って記憶したフラグを確認します。関数の場所はsetの隣ですね。
さっきのフラグ名を入れてOKを押すとスクリプトが入りますが、これだけではアイテムを渡すスクリプトを止めれません。
そこでif文を使います。(http://rmake.jp/document/script_manual)
リンクでは数式を使ってやや数学っぽいですが、getFlagを使うこともできます。
if getFlag("ドラゴンソード貰った") != true
giveItem(**********)
end

「if 条件」と「end」の間のスクリプトは、条件が正しい時のみ動きます。この例では条件「getFlag("ドラゴンソード貰った") != true」が、つまりドラゴンソード貰ってない時にgiveItemスクリプトが動きます。

長くなりましたが、このようにすればスクリプトが2回以上動きません。
(別解答として、イベントそのものを動かさない方法もあります。これはイベントエディタの左下にある「有効条件」に、if文の条件を放りこめば、その条件が正しい時のみイベントが動く、というものです。)

この辺りの詳しい使い方は、運営者さんの講座ページを参考にしてみるのも良いかと思います:
・Rmake基本スクリプト講座(1) 【speak,if,flag,関数の使い方】
http://rmake.jp/games/4912/play