話しかける回数で、イベントを変えるスクリプトに関する質問(質問掲示板)
投稿: 退会したユーザー
投稿:2011/12/03 20:47:03(最新:2011/12/04 20:03:04)
if !getFlag("初期化したかどうか")
setFlag("初期化したかどうか", true)
setVariable("話しかけた回数", 0)
setVariable("話しかけた回数",
getVariable("話しかけた回数") + 1)
if getVariable("話しかけた回数") == 1
speak("兵士「一戦目は、『部長ズ』です。」")
speak("山口部長「**先生に言っておくから」")
stopBGM()
playBGM(38728)
startTurnBattle(13283, 13283, 13280, 13280)
stopBGM()
playBGM(83)
if getVariable("話しかけた回数") == 2
speak("兵士「二戦目は、『大沼カップル』です。」")
speak("大沼「ストーカーサイコ―!!!」")
stopBGM()
playBGM(38728)
startTurnBattle(13281, 13282)
stopBGM()
playBGM(83)
if getVariable("話しかけた回数") == 3
if getVariable("話しかけた回数") == 4
if getVariable("話しかけた回数") == 5
end
end
end
end
end
end
という風に、掲示板を見てつくってみたのですが、二回目に話しかけても、バトルが始まりませんでした。
もう自分の力では、これ以上無理なのですが、どうすればいいですか?
※ ここで出ている名前は、こういうキャラでゲームを作っていますが、名前はてきとうです。
よろしくおねがいします。
ツイート
setFlag("初期化したかどうか", true)
setVariable("話しかけた回数", 0)
setVariable("話しかけた回数",
getVariable("話しかけた回数") + 1)
if getVariable("話しかけた回数") == 1
speak("兵士「一戦目は、『部長ズ』です。」")
speak("山口部長「**先生に言っておくから」")
stopBGM()
playBGM(38728)
startTurnBattle(13283, 13283, 13280, 13280)
stopBGM()
playBGM(83)
if getVariable("話しかけた回数") == 2
speak("兵士「二戦目は、『大沼カップル』です。」")
speak("大沼「ストーカーサイコ―!!!」")
stopBGM()
playBGM(38728)
startTurnBattle(13281, 13282)
stopBGM()
playBGM(83)
if getVariable("話しかけた回数") == 3
if getVariable("話しかけた回数") == 4
if getVariable("話しかけた回数") == 5
end
end
end
end
end
end
という風に、掲示板を見てつくってみたのですが、二回目に話しかけても、バトルが始まりませんでした。
もう自分の力では、これ以上無理なのですが、どうすればいいですか?
※ ここで出ている名前は、こういうキャラでゲームを作っていますが、名前はてきとうです。
よろしくおねがいします。
コメントする
コメントするには、ログインする必要があります。
コメント一覧
退会したユーザー(投稿日:2011/12/04 19:20,
履歴)
ありがとうございます。
>超基本です。
基本もできていないのか…
すごいですね、言い方が悪いかもしれませんが
aoihikawaさんの言いますように回答を書いていただきました。
「こいつ、回答を書かないとわからないかな」なんて思わせてしまったんでしょうか。情けないですorz
aoihikawaさま、rurun9さま
ありがとうございました。
>超基本です。
基本もできていないのか…
すごいですね、言い方が悪いかもしれませんが
aoihikawaさんの言いますように回答を書いていただきました。
「こいつ、回答を書かないとわからないかな」なんて思わせてしまったんでしょうか。情けないですorz
aoihikawaさま、rurun9さま
ありがとうございました。
>何もなりませんでした
そりゃー何もならんでしょうな(2度目
一度指摘された部分を直してすらいないのだから、思い通りに動く筈がないでしょう?
>Rmake記法
>調べましたが
嘘はいけません。
リンク先を全部読むだけで「pre 表記の書き方」がちゃんとあります
単に書いてある事を読んですらいないのは、調べた、とは言いません
さて。
話しかけた回数で分岐するイベントスクリプトをつくるんですよね。
最初に考えるのは、回数を数えるための変数を用意する事
これで話しかけた回数を数えられるようになりました
次に、回数により分岐する処理をつくります
超基本です。ワカリマセンじゃなく理解してないだけです。やる気あるのか疑われるくらいの初歩です
こうした根本的な書き方に関しての説明が、最初にリンクを貼った「スクリプト言語のマニュアル」あたりに書いてあるんですよ
知りたい事だけが直接書かれているワケではないけれど、少しずつ覚えていかないと更に複雑なゲームを作る事が全くできなくなっちゃいますよー
そりゃー何もならんでしょうな(2度目
一度指摘された部分を直してすらいないのだから、思い通りに動く筈がないでしょう?
>Rmake記法
>調べましたが
嘘はいけません。
リンク先を全部読むだけで「pre 表記の書き方」がちゃんとあります
単に書いてある事を読んですらいないのは、調べた、とは言いません
さて。
話しかけた回数で分岐するイベントスクリプトをつくるんですよね。
最初に考えるのは、回数を数えるための変数を用意する事
if !getVariable("回数") #変数に中身が無い場合は0を入れる setVariable("回数",0) end #話しかけたので回数を1増やす setVariable("回数",getVariable("回数")+1) speak("今 ",getVariable("回数")," 回目だよ") #続く
次に、回数により分岐する処理をつくります
#続き if getVariable("回数")==1 elsif getVariable("回数")==2 elsif getVariable("回数")==3 elsif getVariable("回数")==4 elsif getVariable("回数")==5 else setVariable("回数",0) speak("回数をリセットしたよ") end
こうした根本的な書き方に関しての説明が、最初にリンクを貼った「スクリプト言語のマニュアル」あたりに書いてあるんですよ
知りたい事だけが直接書かれているワケではないけれど、少しずつ覚えていかないと更に複雑なゲームを作る事が全くできなくなっちゃいますよー
退会したユーザー(投稿日:2011/12/04 17:45,
履歴)
aoihikawaさんありがとうございます
コピペさせていただきました
テストプレーをすると、話しかけても何もなりませんでした。
もう一度、どうすればいいか、教えてください。
よろしくお願いします。
コピペさせていただきました
テストプレーをすると、話しかけても何もなりませんでした。
もう一度、どうすればいいか、教えてください。
よろしくお願いします。
if、elsifの後に入る条件式が
実行条件です。
スクリプトを整形しなおしてみると
getVariable("話しかけた回数") が「1」のときに
実行するスクリプトがないことがわかります。
修正前
修正後
実行条件です。
スクリプトを整形しなおしてみると
getVariable("話しかけた回数") が「1」のときに
実行するスクリプトがないことがわかります。
修正前
if !getFlag("初期化したかどうか") setFlag("初期化したかどうか", true) setVariable("話しかけた回数", 0) setFlag("初期化したかどうか", false) setVariable("話しかけた回数",0) setVariable("話しかけた回数",getVariable("話しかけた回数")+1) getVariable("話しかけた回数") == 1 speak("兵士「一戦目は、『部長ズ』です。」") speak("山口部長「**先生に言っておくから」") stopBGM() playBGM(38728) startTurnBattle(13283, 13283, 13280, 13280) stopBGM() playBGM(83) elsif getVariable("話しかけた回数") == 2 speak("兵士「二戦目は、『大沼カップル』です。」") speak("大沼「ストーカーサイコ―!!!」") stopBGM() playBGM(38728) startTurnBattle(13281, 13282) stopBGM() playBGM(83) elsif getVariable("話しかけた回数") == 3 elsif getVariable("話しかけた回数") == 4 elsif getVariable("話しかけた回数") == 5 end
修正後
if !getFlag("初期化したかどうか") setFlag("初期化したかどうか", true) setVariable("話しかけた回数", 0) setFlag("初期化したかどうか", false) setVariable("話しかけた回数",0) setVariable("話しかけた回数",getVariable("話しかけた回数")+1) elsif getVariable("話しかけた回数") == 1 #elsif文がなかった speak("兵士「一戦目は、『部長ズ』です。」") speak("山口部長「**先生に言っておくから」") stopBGM() playBGM(38728) startTurnBattle(13283, 13283, 13280, 13280) stopBGM() playBGM(83) elsif getVariable("話しかけた回数") == 2 speak("兵士「二戦目は、『大沼カップル』です。」") speak("大沼「ストーカーサイコ―!!!」") stopBGM() playBGM(38728) startTurnBattle(13281, 13282) stopBGM() playBGM(83) elsif getVariable("話しかけた回数") == 3 elsif getVariable("話しかけた回数") == 4 elsif getVariable("話しかけた回数") == 5 end
退会したユーザー(投稿日:2011/12/04 14:10,
履歴)
書き込みありがとうございます。
下のように書き換えたのですが、今度は、一回目に話しかけた内容と変わりませんでした。
if !getFlag("初期化したかどうか")
setFlag("初期化したかどうか", true)
setVariable("話しかけた回数", 0)
setFlag("初期化したかどうか", false)
setVariable("話しかけた回数",0)
setVariable("話しかけた回数",getVariable("話しかけた回数")+1)
getVariable("話しかけた回数") == 1
speak("兵士「一戦目は、『部長ズ』です。」")
speak("山口部長「**先生に言っておくから」")
stopBGM()
playBGM(38728)
startTurnBattle(13283, 13283, 13280, 13280)
stopBGM()
playBGM(83)
elsif
getVariable("話しかけた回数") == 2
speak("兵士「二戦目は、『大沼カップル』です。」")
speak("大沼「ストーカーサイコ―!!!」")
stopBGM()
playBGM(38728)
startTurnBattle(13281, 13282)
stopBGM()
playBGM(83)
elsif
getVariable("話しかけた回数") == 3
elsif
getVariable("話しかけた回数") == 4
elsif
getVariable("話しかけた回数") == 5
end
どうすればいいですか?
>Rmake記法
調べましたが、どうすれば枠の中に入れるのかわかりません。
前に、何かで『囲む』と教えてもらった気がしますが、囲むとは、
文の上下左右に書くんですか?
そして、何を書けばいいんでしょうか?
よろしくお願いします。
下のように書き換えたのですが、今度は、一回目に話しかけた内容と変わりませんでした。
if !getFlag("初期化したかどうか")
setFlag("初期化したかどうか", true)
setVariable("話しかけた回数", 0)
setFlag("初期化したかどうか", false)
setVariable("話しかけた回数",0)
setVariable("話しかけた回数",getVariable("話しかけた回数")+1)
getVariable("話しかけた回数") == 1
speak("兵士「一戦目は、『部長ズ』です。」")
speak("山口部長「**先生に言っておくから」")
stopBGM()
playBGM(38728)
startTurnBattle(13283, 13283, 13280, 13280)
stopBGM()
playBGM(83)
elsif
getVariable("話しかけた回数") == 2
speak("兵士「二戦目は、『大沼カップル』です。」")
speak("大沼「ストーカーサイコ―!!!」")
stopBGM()
playBGM(38728)
startTurnBattle(13281, 13282)
stopBGM()
playBGM(83)
elsif
getVariable("話しかけた回数") == 3
elsif
getVariable("話しかけた回数") == 4
elsif
getVariable("話しかけた回数") == 5
end
どうすればいいですか?
>Rmake記法
調べましたが、どうすれば枠の中に入れるのかわかりません。
前に、何かで『囲む』と教えてもらった気がしますが、囲むとは、
文の上下左右に書くんですか?
そして、何を書けばいいんでしょうか?
よろしくお願いします。
・Rmake記法
を使って、スクリプト部分を枠の中に入れた方が見易いですよ
>何もならない
そりゃー何もならんでしょうな
話しかけた回数をカウントする位置、がif文の中にありますよね?
「初期化」==falseのときに「初期化」=trueにしてるので、ココを通過するのは1回ポッキリです
しかも
続けて書いてるから常に「回数」は1のまま
つまり「回数」を数える事ができていないワケです
とりあえず紙に枝分かれする樹形図でも書いて考えてみてはどうでしょ?
を使って、スクリプト部分を枠の中に入れた方が見易いですよ
>何もならない
そりゃー何もならんでしょうな
話しかけた回数をカウントする位置、がif文の中にありますよね?
「初期化」==falseのときに「初期化」=trueにしてるので、ココを通過するのは1回ポッキリです
しかも
setVariable("回数",0) setVariable("回数",getVariable("回数")+1)
つまり「回数」を数える事ができていないワケです
とりあえず紙に枝分かれする樹形図でも書いて考えてみてはどうでしょ?
退会したユーザー(投稿日:2011/12/04 12:06,
履歴)
書き込みありがとうございます。
二回目に話しかけても何もなりませんでした。(エラーは出ていません)
どうすればいいですか?
if !getFlag("初期化したかどうか")
setFlag("初期化したかどうか", true)
setVariable("話しかけた回数", 0)
setVariable("話しかけた回数",
getVariable("話しかけた回数") + 1)
getVariable("話しかけた回数") == 1
speak("兵士「一戦目は、『部長ズ』です。」")
speak("山口部長「**先生に言っておくから」")
stopBGM()
playBGM(38728)
startTurnBattle(13283, 13283, 13280, 13280)
stopBGM()
playBGM(83)
elsif
getVariable("話しかけた回数") == 2
speak("兵士「二戦目は、『大沼カップル』です。」")
speak("大沼「ストーカーサイコ―!!!」")
stopBGM()
playBGM(38728)
startTurnBattle(13281, 13282)
stopBGM()
playBGM(83)
elsif
getVariable("話しかけた回数") == 3
elsif
getVariable("話しかけた回数") == 4
elsif
getVariable("話しかけた回数") == 5
end
二回目に話しかけても何もなりませんでした。(エラーは出ていません)
どうすればいいですか?
if !getFlag("初期化したかどうか")
setFlag("初期化したかどうか", true)
setVariable("話しかけた回数", 0)
setVariable("話しかけた回数",
getVariable("話しかけた回数") + 1)
getVariable("話しかけた回数") == 1
speak("兵士「一戦目は、『部長ズ』です。」")
speak("山口部長「**先生に言っておくから」")
stopBGM()
playBGM(38728)
startTurnBattle(13283, 13283, 13280, 13280)
stopBGM()
playBGM(83)
elsif
getVariable("話しかけた回数") == 2
speak("兵士「二戦目は、『大沼カップル』です。」")
speak("大沼「ストーカーサイコ―!!!」")
stopBGM()
playBGM(38728)
startTurnBattle(13281, 13282)
stopBGM()
playBGM(83)
elsif
getVariable("話しかけた回数") == 3
elsif
getVariable("話しかけた回数") == 4
elsif
getVariable("話しかけた回数") == 5
end
if文はendで閉じないといけません。
endで閉じる前に次のifを書くと、それはネスト(入れ子)になります。
なので「話しかけた回数」が1のときのif文の中に、回数が1以外のときの処理を入れても無駄になっちゃうんですね。
「話しかけた回数」によって分岐するのだから、if~elsif~endにするかもしくはcase~when~endで良いと思います。
参考
・ヘルプ/スクリプト言語のマニュアル
・スクリプト/つくってみよう0
endで閉じる前に次のifを書くと、それはネスト(入れ子)になります。
if getFlag(a) if getFlag(b) speak("ココを通過するのはaがtrueで、しかもbもtureだった場合") end #b終 speak("こちらはaがtrueなら必ず通ります") end #a終
「話しかけた回数」によって分岐するのだから、if~elsif~endにするかもしくはcase~when~endで良いと思います。
参考
・ヘルプ/スクリプト言語のマニュアル
・スクリプト/つくってみよう0
分からないところについて
質問してみることも大切ですが、
まずは、自分で理解できるところまで
しっかりと調べてみて、
理解できた通りかどうか
簡単なスクリプトを書いて
テストしてみましょう。
もし、よろしければ
こちらにもスクリプトの基本部分について
掲載しておりますので、
ご一読いただけましたら幸いです。
Rmakeで自由なゲームをつくろう / 第01回 スクリプトって何?