2かいめのイベントをやらせない方法(質問掲示板)
投稿: mrburein
投稿:2015/04/11 07:37:11(最新:2015/04/14 19:50:14)
イベントで渡したあとにもう一度イベントをさせないためにはどうすればいいですか?
ツイート
# スクリプトに関する質問の場合はこの下にスクリプトを記載してください # ↓↓↓スクリプトはここから↓↓↓ m = getItemIndexWithId(19405) if m == -1 speak("まただぶりか!\nやるよ") setFlag("レアカード") speak("レアカードを貰った") giveItem(19400) elsif speak("こんどこそは…") end speak("ポケモンカードのレアカード欲しいなあ") m=getItemIndexWithId(19400) if m == -1 elsif m != -1 getFlag("レアカード") speak("それは私のほしいレアカード!") fadeOut(0,0,0) fadeIn() case speakWithSelect(2,"はい","いいえ", "レアカードをあげますか?") when 0 speak("ありがとう!\nお礼にこれあげる!") giveItem(19399) removeItemWithIndex(m) speak("ハートを貰った") when 1 speak("なんだ…") end end # ↑↑↑スクリプトはここまで↑↑↑
コメントする
コメントするには、ログインする必要があります。
コメント一覧
質問に答える前にいくつか言っておきたいことが・・・
・質問するときはスクリプトをそのまま書くだけではなく、どのようなイベントを作りたいのかなるべく具体的に書いてください。スクリプトを見ただけでは分からないことのほうが多いですから。例えば、上のスクリプト(レアカードをもらうイベント)と、下のスクリプト(ハートをもらうイベント)は別々に書いているんでしょうか?それともひとつながりのスクリプトですか?
・エラーメッセージが出た場合、メッセージからどこにエラーがあるか分かります。たぶん今回の場合、メッセージが出ていると思いますのでこちらを参考にして確認してみてください。
前置きが長くなりましたが、上のスクリプトと下のスクリプトは別々のものと考えてお答えします。
イベントが1回しか起きないようにするにはフラグを使うのが一番簡単です。
getItemIndexWithIdを条件に使うと、条件になるアイテムがなくなるとイベントが戻ってしまうので面倒です。
ここでは"レアカード"と"ハート"という2つのフラグを使ったスクリプトを例示します。
(レアカードをもらうイベント)
(ハートをもらうイベント)
フラグはスクリプトの基本なので正確に内容を理解しておいたほうがいいですよ。
・質問するときはスクリプトをそのまま書くだけではなく、どのようなイベントを作りたいのかなるべく具体的に書いてください。スクリプトを見ただけでは分からないことのほうが多いですから。例えば、上のスクリプト(レアカードをもらうイベント)と、下のスクリプト(ハートをもらうイベント)は別々に書いているんでしょうか?それともひとつながりのスクリプトですか?
・エラーメッセージが出た場合、メッセージからどこにエラーがあるか分かります。たぶん今回の場合、メッセージが出ていると思いますのでこちらを参考にして確認してみてください。
前置きが長くなりましたが、上のスクリプトと下のスクリプトは別々のものと考えてお答えします。
イベントが1回しか起きないようにするにはフラグを使うのが一番簡単です。
getItemIndexWithIdを条件に使うと、条件になるアイテムがなくなるとイベントが戻ってしまうので面倒です。
ここでは"レアカード"と"ハート"という2つのフラグを使ったスクリプトを例示します。
(レアカードをもらうイベント)
if getFlag("レアカード") speak("こんどこそは…") else speak("まただぶりか!\nやるよ") speak("レアカードを貰った") giveItem(19400) setFlag("レアカード", true) end
(ハートをもらうイベント)
if getFlag("レアカード") if getFlag("ハート") speak("ありがとう") #レアカードを渡した後の反応 else speak("それは私のほしいレアカード!") fadeOut(0,0,0) fadeIn() case speakWithSelect(2,"はい","いいえ", "レアカードをあげますか?") when 0 speak("ありがとう!\nお礼にこれあげる!") giveItem(19399) removeItemWithIndex(getItemIndexWithId(19400)) speak("ハートを貰った") setFlag("ハート", true) when 1 speak("なんだ…") end end else speak("レアカードほしいなあ・・・") #レアカードをもらっていないときの反応 end
フラグはスクリプトの基本なので正確に内容を理解しておいたほうがいいですよ。
横から失礼します。
>これで2回目のイベントを起きないようにするにはどうしましょう
idohakaさんに「どのようなイベントを作りたいのかなるべく具体的に」…と言われたばかりですよ!もうちょっと考えましょう。
いきなり複雑なのを作ろうとしないで、これを見て
自分のできる事から始めたらどうでしょうか?
Rmake基本スクリプト講座(1)
質問掲示板
>これで2回目のイベントを起きないようにするにはどうしましょう
idohakaさんに「どのようなイベントを作りたいのかなるべく具体的に」…と言われたばかりですよ!もうちょっと考えましょう。
いきなり複雑なのを作ろうとしないで、これを見て
自分のできる事から始めたらどうでしょうか?
Rmake基本スクリプト講座(1)
質問掲示板
m = getItemIndexWithId(19405) if getFlag("a", true) speak("ありがとう!") if getFlag("渡す") speak("やってくれたのか!\nありがとう!\nハートを2つやる!") giveItem(19399) giveItem(19399) setFlag("a") if getFlag("a", true) speak("ありがとう!") elsif m == -1 #プレゼントを持っていない speak("きみ!\n俺のファンにプレゼントをくれてやってくれないか") case speakWithSelect(2,"はい","いいえ", "引き受けますか?") when 0 speak("よろしくね!") speak("プレゼントをもらった") giveItem(19405) setFlag("引き受ける", true) when 1 speak("やっぱダメか…") end else #すでにプレゼントを持っている speak("頼んだぞ。") end speak("はるかたそ~") m = getItemIndexWithId(19405) if getFlag("渡す") #プレゼントを渡した speak("どうもありがとう!") elsif getFlag("引き受ける") && m != -1 #依頼を受けてプレゼントを持っている speak("これは?\nはるかの写真か!\nあいつに100点と伝えといてくれ!") speak("プレゼントを渡した") removeItemWithIndex(m) getItemIndexWithId(19405) setFlag("渡す", true) elsif getFlag("引き受ける") && m == -1 #依頼を受けたが、プレゼントを捨てるなどしたため持っていない speak("そんなことなどどうでもいい") elsif !getFlag("引き受ける") && m != -1 #依頼を受けていないがプレゼントは持っている speak("わー、いいなあ\nほしいなあ") else #依頼を受けていないしプレゼントを持っていない end
上の34行です
退会したユーザー(投稿日:2015/04/13 18:48,
履歴)
私なりに考えました。こんな感じでどうでしょう?
イベント《A》(頼む人)
m = getItemIndexWithId(19405)
if getFlag("a")
speak("もうないぞ!?")
elsif getFlag("渡す")
speak("やってくれたのか!\nありがとう!\nハートを2つやる!")
giveItem(19399)
giveItem(19399)
setFlag("a", true)
elsif m == -1
#プレゼントを持っていない
speak("きみ!\n俺のファンにプレゼントをくれてやってくれないか")
case speakWithSelect(2,"はい","いいえ",
"引き受けますか?")
when 0
speak("よろしくね!")
speak("プレゼントをもらった")
giveItem(19405)
setFlag("引き受ける", true)
when 1
speak("やっぱダメか…")
end
else
#すでにプレゼントを持っている
speak("頼んだぞ。")
end
・・・・・・・・・・・・・・・・・・・・・・・・・・・
イベント《B》(貰う人)
speak("はるかたそ~")
m = getItemIndexWithId(19405)
if getFlag("渡す")
#プレゼントを渡した
speak("どうもありがとう!")
elsif getFlag("引き受ける") && m != -1
#依頼を受けてプレゼントを持っている
speak("これは?\nはるかの写真か!\nあいつに100点と伝えといてくれ!")
speak("プレゼントを渡した")
removeItemWithIndex(m)
getItemIndexWithId(19405)
setFlag("渡す", true)
elsif getFlag("引き受ける") && m == -1
#依頼を受けたが、プレゼントを捨てるなどしたため持っていない
speak("そんなことなどどうでもいい")
elsif !getFlag("引き受ける") && m != -1
#依頼を受けていないがプレゼントは持っている
speak("わー、いいなあ\nほしいなあ")
else
#依頼を受けていないしプレゼントを持っていない
end
イベント《A》(頼む人)
m = getItemIndexWithId(19405)
if getFlag("a")
speak("もうないぞ!?")
elsif getFlag("渡す")
speak("やってくれたのか!\nありがとう!\nハートを2つやる!")
giveItem(19399)
giveItem(19399)
setFlag("a", true)
elsif m == -1
#プレゼントを持っていない
speak("きみ!\n俺のファンにプレゼントをくれてやってくれないか")
case speakWithSelect(2,"はい","いいえ",
"引き受けますか?")
when 0
speak("よろしくね!")
speak("プレゼントをもらった")
giveItem(19405)
setFlag("引き受ける", true)
when 1
speak("やっぱダメか…")
end
else
#すでにプレゼントを持っている
speak("頼んだぞ。")
end
・・・・・・・・・・・・・・・・・・・・・・・・・・・
イベント《B》(貰う人)
speak("はるかたそ~")
m = getItemIndexWithId(19405)
if getFlag("渡す")
#プレゼントを渡した
speak("どうもありがとう!")
elsif getFlag("引き受ける") && m != -1
#依頼を受けてプレゼントを持っている
speak("これは?\nはるかの写真か!\nあいつに100点と伝えといてくれ!")
speak("プレゼントを渡した")
removeItemWithIndex(m)
getItemIndexWithId(19405)
setFlag("渡す", true)
elsif getFlag("引き受ける") && m == -1
#依頼を受けたが、プレゼントを捨てるなどしたため持っていない
speak("そんなことなどどうでもいい")
elsif !getFlag("引き受ける") && m != -1
#依頼を受けていないがプレゼントは持っている
speak("わー、いいなあ\nほしいなあ")
else
#依頼を受けていないしプレゼントを持っていない
end
退会したユーザー(投稿日:2015/04/13 19:01,
履歴)
たぶん2つのイベントを、1つのように
スクリプトを書いた感じなので、最初
わかりませんでした。;
「イベント【A】に、こうスクリプトを書きました。
イベント【B】に、こうスクリプトを書きました。」
と、別々に書いてくれると嬉しいです。
あと台詞も紛らわしいので、簡素にやりたい事を
編集してから質問した方がいいかもしれませんね。
イベントの方は上手く動きましたでしょうか?
スクリプト見ると、ごちゃまぜ感タップリなので
cdv30200さんが言ったとおり、勉強しながら
コツコツ作るのも楽しいですよ?
私も勉強中です♪
超初心者生意気発言失礼しました。
黒いリボンでした★
スクリプトを書いた感じなので、最初
わかりませんでした。;
「イベント【A】に、こうスクリプトを書きました。
イベント【B】に、こうスクリプトを書きました。」
と、別々に書いてくれると嬉しいです。
あと台詞も紛らわしいので、簡素にやりたい事を
編集してから質問した方がいいかもしれませんね。
イベントの方は上手く動きましたでしょうか?
スクリプト見ると、ごちゃまぜ感タップリなので
cdv30200さんが言ったとおり、勉強しながら
コツコツ作るのも楽しいですよ?
私も勉強中です♪
超初心者生意気発言失礼しました。
黒いリボンでした★
退会したユーザー(投稿日:2015/04/13 19:07,
履歴)
ボソボソ・・
『でも今回この事で、アイテムの方で管理が出来る事を
初めて知ってしまった私。
(今までフラグと変数でしか管理出来なかったので。///;)
超ラッキーです。私も色々使っちゃお♪』
『でも今回この事で、アイテムの方で管理が出来る事を
初めて知ってしまった私。
(今までフラグと変数でしか管理出来なかったので。///;)
超ラッキーです。私も色々使っちゃお♪』
退会したユーザー(投稿日:2015/04/14 17:11,
履歴)
♪(w|壁
if setVariable("1") == 0 m = getItemIndexWithId(19405) if m == -1 speak("まただぶりか!\nやるよ") setFlag("レアカード") speak("レアカードを貰った") giveItem(19400) elsif speak("こんどこそは…") end speak("ポケモンカードのレアカード欲しいなあ") m=getItemIndexWithId(19400) if m == -1 elsif m != -1 getFlag("レアカード") speak("それは私のほしいレアカード!") fadeOut(0,0,0) fadeIn() case speakWithSelect(2,"はい","いいえ", "レアカードをあげますか?") when 0 speak("ありがとう!\nお礼にこれあげる!") giveItem(19399) removeItemWithIndex(m) speak("ハートを貰った") when 1 speak("なんだ…") end end else end
#開始スクリプト setVariable("1", 0)
初心者の自分が書いたものですが作動するはずです。
それか・・・
if getFlag("1") else m = getItemIndexWithId(19405) if m == -1 speak("まただぶりか!\nやるよ") setFlag("レアカード") speak("レアカードを貰った") giveItem(19400) elsif speak("こんどこそは…") end speak("ポケモンカードのレアカード欲しいなあ") m=getItemIndexWithId(19400) if m == -1 elsif m != -1 getFlag("レアカード") speak("それは私のほしいレアカード!") fadeOut(0,0,0) fadeIn() case speakWithSelect(2,"はい","いいえ", "レアカードをあげますか?") when 0 speak("ありがとう!\nお礼にこれあげる!") giveItem(19399) removeItemWithIndex(m) speak("ハートを貰った") when 1 speak("なんだ…") end end setFlag("1", true) end
フラグは何もしない状態では"false"になっています。
これはスイッチがOFFになっている状態と考えてください。
スイッチをONにする場合は、
というふうに書きます。
見ているとsetとgetを混同しているようですが、
getFlagはフラグが現在どういう状態になっているかを確認するスクリプトで、ifなどの条件式に使います。
例えば、
と書いた場合、フラグaがtrueの状態であることが条件となります。
ちなみに、このスクリプトは
と省略して書いてもOKです。
あとは最初に書いたスクリプトを参考にして作ってみてください。
今回の場合、m = getItemIndexWithId(19405)は使わなくてもいいと思います。もちろん使ってもできますが、スクリプトが複雑になります。まずはフラグを使ったやり方を覚えたほうが役に立つと思いますよ。
::(._.)p