2017年01月18日
6日目.イベント作成④
さっそくですが、前回の答え合わせから。
例題1:
スイッチ:「俺、この戦いが終わったら、彼女と結婚するんだ」
結果:戦いで死んだ

こういうことですね(笑)
例題2:
スイッチ1:「ここには罠は少ないから大丈夫さ!」
結果1:罠にかかって死んだ
スイッチ2:ひとつしかない罠に男がかかった
結果2:俺は助かった


これも、こういうことですね。
スイッチ1の結果によりセルフスイッチが入り、結果罠自体がなくなるという結果です。
例題3:
3つのボトルのどれかに毒が入っている。
3人の男のうち、2人がそれぞれ好きなボトルを手に取った。
俺に残されたボトルは残り1つだ。残り物に福があれば良いが。
スイッチ1:ボトル1を男1に取られる
スイッチ2:ボトル2を男2に取られる
スイッチ3:俺に残されたボトル3を選ぶ
結果:どう足掻いても男が選ぶボトルが固定される




こういうことですね。
--------------------
4-6.変数について
宣言通り、今回は変数についてです。
変数とは、スイッチの発展形だと思うとわかりやすいと思います。
スイッチは「ON」か「OFF」しか設定できませんが、変数は基本的には何でも設定できます。
とはいえ、普通にイベントコマンドを選択する場合は数字が主な記憶内容になります。
「変数」を操作するには、イベントコマンド[変数の操作]を設定します。
変数
操作対象となる変数を指定します。[一括]を選択すると、同時に複数の連続した変数を操作対象に指定出来ます。連続していなければいけないので、使い道は少ないですが、連続させることさえできればとても有効的な項目です。
操作
操作対象となる変数に、どういう操作を行うのかを選択します。下記の「オペランド」がその対象となる数値です。
代入
オペランドの数値をそのまま変数に格納します。
加算
オペランドの数値を変数の数値に足します。
例えば元々20の変数に20加算すれば、40となります。
減算
オペランドの数値を変数の数値から引きます。
例えば元々40の変数に20減算すれば、20となります。
乗算
オペランドの数値を変数の数値に掛けます。
例えば元々20の数値に2を乗算すれば、40となります。
除算
オペランドの数値を変数の数値で割ります。
例えば元々40の数値に2を除算すれば、20となります。
剰余
オペランドの数値を変数の数値で割り、その余りを変数に格納します。
例えば222の数値を10で剰余すれば、22÷10=22余り2なので、2となります。
オペランド
[操作]で扱う数値を指定します。
定数
入力欄に入力した数値
変数
指定した変数に格納されている数値
乱数
指定した 2 つの数値の間で発生するランダムな数値
ゲームデータ
指定したアイテムの所持数など、ゲーム内の各種データの数値
スクリプト
スクリプトは上級者向けの機能ですので、後日お話しますが、ツクマテで、トリアコンタン様がこういうものを作ってらっしゃいますので、上級者の方は参考にするとよいでしょう。 ちなみにスクリプトを使うと、数字以外のものを変数のオペラントに指定することも可能です。
例)数値入力の処理により、変数1に入っている3桁の数値がある。これを変数2に百の位、変数3に十の位、変数4に一の位をそれぞれ入れたい。
変数ID:変数名
001:元の数値
002:100の位
003:10の位
004:1の位
005:計算用変数
解答)
◆数値入力の処理:元の数値, 3桁
◆注釈:変数を2~4に代入します
◆変数の操作:#0002..0004 = 元の数値
◆注釈:2の数値は100で除算すればあっさり答えが出るので除算します。
◆変数の操作:#0002 100の位 /= 100
◆注釈:次に、10の位のうち、100の位が邪魔なので、それを処理します。
◆注釈:先ほど出した100の位を計算用変数に代入し……
◆変数の操作:#0005 計算用変数 = 100の位
◆注釈:それに100を乗算で、邪魔な100の位と同じ数値を出します。
◆変数の操作:#0005 計算用変数 *= 100
◆注釈:これを、10の位から減算で、100の位が消えますので、
◆変数の操作:#0003 10の位 -= 計算用変数
◆注釈:後は10で除算し、10の位は完成です。
◆変数の操作:#0003 10の位 /= 10
◆注釈:最後に、1の位は10の剰余で計算できます。
◆変数の操作:#0004 1の位 %= 10
さて、先ほどスイッチの発展形だと申し上げましたが、
実際、私は連続したイベントを起こす際、変数をスイッチとして使うことも多いです。
イベントが1段階進むごとに、対応する変数の値を1上げてやれば(もしくは、どこまで進んだかを表す数を代入してやれば)、イベントがどこまで進んだのかを記録できるからです。
例えばメインシナリオとサブシナリオがある場合、メインシナリオがある程度進まないと見付けられないクエストを作成することもできます。逆に、メインシナリオがある程度進むと受けられなくなるサブシナリオを作成することもできます。
長い長いメインシナリオがある場合、変数ならば数値としてならどこまでも記録可能ですので、スイッチの最大個数である5000を超えて記録することが可能です(そこまで長いシナリオを作るのは少し大変ですが)。
また、スイッチは至るところに配置すると思いますので、どれがどのスイッチだったのか、スイッチの名前だけでは忘れてしまって……ということも防げたりします。
上級者の方であれば、スクリプトを使うことにより、このようなこともできます。
手順1.予め、必要のないアクター99の名前を「アクト」と決めておく
手順2.最初は名前を知らないアクター2の名前を「???」にしておく。名前が???のまま仲間になる。
手順3.スクリプトにてアクター「アクト」の名前($gameActors.actor(99).name)を変数1に取得
手順4.アクター「???」が、「俺の名前はアクトだ」と名乗る
手順5.スクリプトで「$gameActors.actor(2).setName("$gameVariables.value(1)")」と指定することにより、アクター2の名前が「???」から「アクト」に変わる
名前も知らないアクター、というのは良くあるのですが、名前を知らないはずなのになりゆきで共闘することになった場合、共闘になった瞬間に名前バレするのを防ぐことができます。
まぁプレイヤーに決めさせれば解決なんですがw
--------------------
今回は変数についてでした。
次回は条件分岐についてお話します。
また明日、お会いしましょう。
例題1:
スイッチ:「俺、この戦いが終わったら、彼女と結婚するんだ」
結果:戦いで死んだ

こういうことですね(笑)
例題2:
スイッチ1:「ここには罠は少ないから大丈夫さ!」
結果1:罠にかかって死んだ
スイッチ2:ひとつしかない罠に男がかかった
結果2:俺は助かった


これも、こういうことですね。
スイッチ1の結果によりセルフスイッチが入り、結果罠自体がなくなるという結果です。
例題3:
3つのボトルのどれかに毒が入っている。
3人の男のうち、2人がそれぞれ好きなボトルを手に取った。
俺に残されたボトルは残り1つだ。残り物に福があれば良いが。
スイッチ1:ボトル1を男1に取られる
スイッチ2:ボトル2を男2に取られる
スイッチ3:俺に残されたボトル3を選ぶ
結果:どう足掻いても男が選ぶボトルが固定される




こういうことですね。
--------------------
4-6.変数について
宣言通り、今回は変数についてです。
変数とは、スイッチの発展形だと思うとわかりやすいと思います。
スイッチは「ON」か「OFF」しか設定できませんが、変数は基本的には何でも設定できます。
とはいえ、普通にイベントコマンドを選択する場合は数字が主な記憶内容になります。
「変数」を操作するには、イベントコマンド[変数の操作]を設定します。
変数
操作対象となる変数を指定します。[一括]を選択すると、同時に複数の連続した変数を操作対象に指定出来ます。連続していなければいけないので、使い道は少ないですが、連続させることさえできればとても有効的な項目です。
操作
操作対象となる変数に、どういう操作を行うのかを選択します。下記の「オペランド」がその対象となる数値です。
代入
オペランドの数値をそのまま変数に格納します。
加算
オペランドの数値を変数の数値に足します。
例えば元々20の変数に20加算すれば、40となります。
減算
オペランドの数値を変数の数値から引きます。
例えば元々40の変数に20減算すれば、20となります。
乗算
オペランドの数値を変数の数値に掛けます。
例えば元々20の数値に2を乗算すれば、40となります。
除算
オペランドの数値を変数の数値で割ります。
例えば元々40の数値に2を除算すれば、20となります。
剰余
オペランドの数値を変数の数値で割り、その余りを変数に格納します。
例えば222の数値を10で剰余すれば、22÷10=22余り2なので、2となります。
オペランド
[操作]で扱う数値を指定します。
定数
入力欄に入力した数値
変数
指定した変数に格納されている数値
乱数
指定した 2 つの数値の間で発生するランダムな数値
ゲームデータ
指定したアイテムの所持数など、ゲーム内の各種データの数値
スクリプト
スクリプトは上級者向けの機能ですので、後日お話しますが、ツクマテで、トリアコンタン様がこういうものを作ってらっしゃいますので、上級者の方は参考にするとよいでしょう。 ちなみにスクリプトを使うと、数字以外のものを変数のオペラントに指定することも可能です。
例)数値入力の処理により、変数1に入っている3桁の数値がある。これを変数2に百の位、変数3に十の位、変数4に一の位をそれぞれ入れたい。
変数ID:変数名
001:元の数値
002:100の位
003:10の位
004:1の位
005:計算用変数
解答)
◆数値入力の処理:元の数値, 3桁
◆注釈:変数を2~4に代入します
◆変数の操作:#0002..0004 = 元の数値
◆注釈:2の数値は100で除算すればあっさり答えが出るので除算します。
◆変数の操作:#0002 100の位 /= 100
◆注釈:次に、10の位のうち、100の位が邪魔なので、それを処理します。
◆注釈:先ほど出した100の位を計算用変数に代入し……
◆変数の操作:#0005 計算用変数 = 100の位
◆注釈:それに100を乗算で、邪魔な100の位と同じ数値を出します。
◆変数の操作:#0005 計算用変数 *= 100
◆注釈:これを、10の位から減算で、100の位が消えますので、
◆変数の操作:#0003 10の位 -= 計算用変数
◆注釈:後は10で除算し、10の位は完成です。
◆変数の操作:#0003 10の位 /= 10
◆注釈:最後に、1の位は10の剰余で計算できます。
◆変数の操作:#0004 1の位 %= 10
さて、先ほどスイッチの発展形だと申し上げましたが、
実際、私は連続したイベントを起こす際、変数をスイッチとして使うことも多いです。
イベントが1段階進むごとに、対応する変数の値を1上げてやれば(もしくは、どこまで進んだかを表す数を代入してやれば)、イベントがどこまで進んだのかを記録できるからです。
例えばメインシナリオとサブシナリオがある場合、メインシナリオがある程度進まないと見付けられないクエストを作成することもできます。逆に、メインシナリオがある程度進むと受けられなくなるサブシナリオを作成することもできます。
長い長いメインシナリオがある場合、変数ならば数値としてならどこまでも記録可能ですので、スイッチの最大個数である5000を超えて記録することが可能です(そこまで長いシナリオを作るのは少し大変ですが)。
また、スイッチは至るところに配置すると思いますので、どれがどのスイッチだったのか、スイッチの名前だけでは忘れてしまって……ということも防げたりします。
上級者の方であれば、スクリプトを使うことにより、このようなこともできます。
手順1.予め、必要のないアクター99の名前を「アクト」と決めておく
手順2.最初は名前を知らないアクター2の名前を「???」にしておく。名前が???のまま仲間になる。
手順3.スクリプトにてアクター「アクト」の名前($gameActors.actor(99).name)を変数1に取得
手順4.アクター「???」が、「俺の名前はアクトだ」と名乗る
手順5.スクリプトで「$gameActors.actor(2).setName("$gameVariables.value(1)")」と指定することにより、アクター2の名前が「???」から「アクト」に変わる
名前も知らないアクター、というのは良くあるのですが、名前を知らないはずなのになりゆきで共闘することになった場合、共闘になった瞬間に名前バレするのを防ぐことができます。
--------------------
今回は変数についてでした。
次回は条件分岐についてお話します。
また明日、お会いしましょう。
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/5838651
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック