最終更新: kenken2020 2023年12月07日(木) 17:31:21履歴
目次
スクリプトで_lastTargetIndexのIDを使う場合、NULLアクセス対策をする場合がある
$gameTroop.members()[敵のID].isStateAffected(1)
$gameTroop.members()._lastTargetIndex
$gameVariables._data[5][0] += 10;
--$gameActors.actor(m).isStateAffected(n)
--m;アクターID? n;確認したいステートID
$gameParty.inBattle() ? BattleManager._subject._lastTargetIndex : $gameParty.members()._lastTargetIndex
- _lastTargetIndexでIDを取得した場合、あくまでターン開始時?に選んだバトラーのIDなので、
スクリプトで_lastTargetIndexのIDを使う場合、NULLアクセス対策をする場合がある
$gameTroop.members()[敵のID].isStateAffected(1)
$gameTroop.members()._lastTargetIndex
- BattleManager._subject.isEnemy() // 使用者がエネミーかどうか
- BattleManager._subject.index() // 使用者のエネミーインデックスを取得
- BattleManager._subject.actorId() // 使用者のアクターIDを取得
- BattleManager._subject.index();最後に行動したアクター・敵キャラのインデックス
- BattleManager._subject._lastTargetIndex //最後の行動で対象になったアクター・敵キャラのインデックス
$gameVariables.value(変数のID)[値]
$gameVariables._data[5][0] += 10;
- $gameActors
- Game_Actors
- ゲーム実行中のアクターのデータ 管理番号順(1スタート)
- 例:$gameActors.actor(1).name()
- $gameParty
- Game_Party
- 加入しているアクター 加入順(0スタート)
- 例:$gameParty.members()[0].name()
- $gameTroop.members()[n].name()
- 指定したインデックスの敵キャラの表示名(同一の敵キャラが複数いる場合に後ろに「A」「B」...がつきます)
- 現在行動しているキャラ:BattleManager._subject
- 現在行動しているキャラのインデックス
- BattleManager._subject.index()
- 現在行動しているキャラのは敵か味方か?
- trueなら味方、falseなら敵
- BattleManager._subject.isActor()
- 味方の場合
- $gameParty.members()[n].isStateAffected(n)
- $gameParty.members[n].states()
- 有効になっているステートの配列を取得
- ステートの名称を取得
- $gameParty.members()[0].states()[0].name
- 敵の場合
- $gameTroop.members()[m].isStateAffected(n)
- m;敵のインデックス n;確認したいステートID
- ステートの名称を取得
- 味方の場合
- $gameParty.members()[n].addState(id)
- 指定したステートidのステートを付与
- $gameParty.members()[n].removeState(id)
- 指定したステートidのステートを解除
- $gameParty.members()[n].addState(id)
- *ステートのアイコンが消えるタイミングはずれるので注意
- 敵の場合
- $gameTroop.members()[m].addState(id)
- 指定したステートidのステートを付与
- $gameTroop.members()[m].removeState(id)
- 指定したステートidのステートを解除
- $gameTroop.members()[m].addState(id)
- 最後に攻撃した敵
$gameParty.inBattle() ? BattleManager._subject._lastTargetIndex : $gameParty.members()._lastTargetIndex
- プラグインの名前
- @plugindesc ****
- @author
- 制作者の名前
- @help
- ツクールMVで表示されるヘルプ文
- @param *****
- パラメータの名前
- @desc *****
- パラメータの説明
- @default ***
- プラグイン管理画面でのパラメータのデフォルトの値
- 戦闘の行動ルーチンに関する処理はVSコード(JS)で書く?
- ツクールMVでは変数を追うのが大変。変更や置換・削除が難しい
- 敵(バトラー)と味方(アクター)の情報を独自の配列変数に格納したい。
- 敵のステート配列(文字列)
- 敵のステート配列(数字)
- 敵の数は8体、ステートの数は10ぐらい
- 要素数は8
- 味方のステート配列(文字列)
- 味方のステート配列(数字)
- 味方の数は3体(今回は仲間の入れ替えはなし)、ステートの数は10ぐらい
- 要素数は3
- 誰が誰を攻撃したか(敵)(文字列)
- 誰が誰を攻撃したか(敵)(数字)
- 要素数は8
- 誰が誰を攻撃したか(味方)(文字列)
- 誰が誰を攻撃したか(味方)(数字)
- 要素数は3
- オブジェクトはプロパティの集合
- プロパティとは名前(キー)と値(バリュー)が対になったもの
- プロパティの名前(キー)には文字列またはSymbolが利用できる
- 値には任意のデータを指定できる
- 1つのオブジェクトは複数のプロパティを持てる
- 配列や関数などもオブジェクトの一種
const traffic_light = { blue: "go", yellow: "slow down", red: "stop" } console.log(traffic_light.blue);
- Consoleにはプロパティ名blue の値である go が出力される
- 関数の場合
function hello() { alert("hello, techacademy."); } hello();
- 上と同じ意味になる
const hello = function() { alert("hello, techacademy."); } hello();
- 参考サイト
- メソッドとはオブジェクトのプロパティに代入された関数のこと
- あるオブジェクトのプロパティに関数を定義した場合、関数と呼ばずにそのオブジェクトのメソッドと呼ぶ
- 参考サイト
- インスタンス(実体)を作成する関数のことをコンストラクタと呼ぶ
- コンストラクタタによってインスタンスを作り初期化も行う
- JavaScriptでは関数オブジェクトとコンストラクタを使うことで、疑似的なクラスを実現できる仕組みになっている
- functionで疑似的なクラスを作ったり、new演算子でインスタンスを作っていた
- サンプルコード
- Personというコンストラクタを定義して、その中に名前を表すnameと、年齢を表すageのプロパティを定義
function Person(name, age) { this.name = name; this.age = age; }
実際にインスタンスを作成する際は、以下のように「new Person()」でコンストラクタを呼び出して使います。 var person1 = new Person('太郎', 22); var person2 = new Person('次郎', 31); console.log( person1.name ); console.log( person1.age ); console.log( person2.name ); console.log( person2.age ); 実行結果: 太郎 22 ||= 次郎 31 「new」を付けることで、生成されるインスタンスが「this」にセットされるわけです。 上記のサンプルコードでは「new Person('太郎', 22)」のthisにperson1がセットされ、「new Person(‘次郎', 31)」のthisにperson2がセットされます。 *JavaScriptのPrototypeとは何か? -prototypeとは継承のようなもの -あるオブジェクトが他のオブジェクトの性質(メソッドやプロパティ等)を引き継ぐ仕組み -JavaScriptにクラス構文に対応したのは2015年以降 *pluginCommand 関数 -最初のコマンド名が command 引数で渡される -コマンド名はプラグイン名にあわせた方が良い *プラグインコマンドのテンプレート =|JS| (() => { "use strict"; const pluginName = 'ファイル名'; const _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand; Game_Interpreter.prototype.pluginCommand = function (command, args) { _Game_Interpreter_pluginCommand.call(this, command, args); if (command === pluginName) { //処理 } }; })();
- 参考サイト
- 即時関数は、関数を定義すると同時に実行するための構文
(function () { //処理 }());◎引数付きの場合
(function (param1, param2) { //処理 }('hoge', 'fuga'));
コメントをかく