テスト用のコモンイベント
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

テスト用のコモンイベント

2017-09-18 18:41
    ※ツクールMVの記事です。
    ※この記事を見て試したことで何か良くないことが起きても
    著者は責任を取れません。ご了承下さい。



    たぶん始めましての方が多いと思います。まっつUPです。
    いつもはツクールMVでゲームをツクるついでにプラグインを作っています。
    初めてまともに書いた記事ですので至らないところがあると思いますが
    許してください、なんでもはしません。

    この記事ではテストプレイ中にあると便利なコモンイベントを紹介します。

    全知全能の全てのアクターを仲間し
    アイテムというアイテムを取り揃えます。


    とりあえず余計なことは言わずに解説していきたいと思います。
    記事の先頭に画像があると思いますが
    普通のイベントコマンドではなくスクリプトコマンドも入れています。

    <コモンイベントの基本設定>
    特定のスイッチがオンになった時に自動実行になる設定です。
    テストプレイ中にF9からゲーム中のスイッチのオンオフが
    できることをご存知だと思うのでそこから実行して下さい。
    コモンイベントのIDと名前は任意です。

    <実行内容>
    コモンイベントなので他にイベントコマンドの移動ルートで
    プレイヤーの移動速度早くするなどできるのがいいですね。

    別に理解しなくても同じように書けば動くと思いますが
    それでは記事を書いた意味があまりないので一応。

    ◆スイッチの操作:#0001 テスト用 = OFF
    オフにしないと永遠に自動実行されるので必須です。
    自動実行なので最終的にオフになればどこに置いてもいいです。

    そしてお待ちかねのスクリプトコマンドです。
    2つ分ありますが1つ目のが分かれば2つ目のも分かります。
    というかアクターの部分が理解できれば全て分かります。
    プラグインの方がいいのですがどうせテスト用なのでガリガリ書きました。
    コピペしたらインデントが崩れました(半ギレ)

    $dataActors.forEach(function(actor) {

    if(actor && actor.name !== ''){

    var member = $gameActors.actor(actor.id);

    member.setup(member.actorId());

    $gameParty.addActor(member.actorId());

    $dataSkills.forEach(function(skill) {

    if(skill && skill.name !== ''){

    member.learnSkill(skill.id);

    }

    })

    }

    });

    著者はjavascriptは詳しくないので
    間違った表現があるかもしれませんが
    許してください、なんでもはしません(念押し)


    forEach文を多用しています。
    .forEachの「.」よりも前に指定した配列の全ての要素に対して
    順番に一回ずつ与えた関数を実行します。
    function(actor)のように引数のactorが
    各要素として使えるので$dataActors[i]みたいに
    しなくていいので涙が出るくらい楽です。

    内容ではどれも最初にIF文で処理を分岐させていますね。
    これはデータベース上で名前が入力されているか評価しています。
    これを見ている皆さんなら後からデータが追加されることを
    見越して十分なスペースをつくりながらデータベースを編集していますね?
    そういった事情も考えて名前のあるアイテムにのみ処理します。

    var member = $gameActors.actor(actor.id);
    アクターのデータに関してのみ
    要素が変わるたびローカル変数「member」に
    アクターのオブジェクトを入れています。
    これを入れずにエラー起こしました(4敗)

    member.setup(member.actorId());
    ツクールでプラグインを良く組む方には
    必須ではないということがわかると思いますが一応入れます。
    これはイベントコマンドの「メンバーの入れ替え」で
    初期化にチェックを入れたときと本質的に同じ処理です。
    既に仲間になっていても初期化されることが分かります。
    前述の通り主体はアクターのオブジェクトです。

    $gameParty.addActor(member.actorId());
    実際にアクターをパーティにいれます。
    引数にはアクターIDを入れることに注意して下さい。

    $dataSkills.forEachの部分では名前の分岐のあと
    member.learnSkill(skill.id);
    としています。
    主体はアクターのオブジェクトです。
    引数にスキルIDを入れてスキルを覚えさせています。
    これらの処理は$dataActors.forEachの内容なので
    全てのアクターが全てのスキルを覚えるわけです。

    2つ目のスクリプトコマンドです。
    楽です。

    $gameParty.setupBattleTestItems();

    $dataWeapons.forEach(function(item) {

    if(item && item.name !== ''){

    $gameParty.gainItem(item, 10, true);

    }

    });

    $dataArmors.forEach(function(item) {

    if(item && item.name !== ''){

    $gameParty.gainItem(item, 10, true);

    }

    });

    console.log('テストプレイコモン発動');

    $gameParty.setupBattleTestItems();
    元からコアスクリプトに入っているメソッドです。
    メソッド名から分かるように本体バトルテストで使うものです。
    その振る舞いは名前のあるアイテムを全て所持するというものです。
    YOJI OJIMA is god.

    $dataWeapons.forEachと$dataArmors.forEachでは
    全く同じ処理をしています。

    $gameParty.gainItem(item, 10, true);
    それぞれ名前の分岐後に入れているこれは
    指定されたアイテムの個数を指定の数加算するクッソ便利なメソッドです。
    アイテムならなんでも指定することができます。
    武器と防具で同じ処理を入れられるのもそのためです。

    console.log('テストプレイコモン発動');
    ディベロッパーツール(コンソール)に引数の値を表示できます。

    まさかここを見ている人でエディタでテストプレイ中に
    F8で開けるディベロッパーツール(コンソール)を
    開いていない人はいないと思いますが

    何らかの文字列や数値を表示したい方がいると思うので一応。

    なお、今更感ありますが
    if(item && item.name !== ''){
    と、item && から条件式を始めているのは
    参照するデータによって0番目にnullが入っていることがあるためです。
    興味がある方はぜひご自身のゲームプロジェクトの
    「data」フォルダをご覧になってください。

    <追加で入れた方がよさそうなイベントコマンド>

    ◆SEの演奏:Absorb1 (90, 100, 0)
    コモンイベントが発動されたか分かるように。特に意味は無いです。

    ◆所持金の増減:+ 9999999
    ◆レベルの増減:パーティ全体, + 98
    イベントコマンドをそのまま使っただけです。
    ◆全回復:パーティ全体
    レベルを上げた場合は変わっていないhpを最大値まで引き上げましょう。

    <その他注意>
    ※根拠のない自信のある方はそのままぶちこんで大丈夫だと思いますが
     それ以外の方は新規プロジェクトで十分に試してから使ってください。
    ※うまくいかなかった場合は記述にミスがあるかプラグインが悪さをしていると思います。
    ※コードの汚さは書くものの心の汚さに比例するので気にしないでください。

    以上です、ご閲覧ありがとうございました。


    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。