まず結論だけ書くと
コード: 全て選択
const actor = BattleManager.actor();
const weaponName = actor && actor.equips()[0] ? actor.equips()[0].name : "";
$gameVariables.setValue(1, weaponName);
ここを
コード: 全て選択
const actor = BattleManager.actor();
const actionName = actor && actor.currentAction() ? actor.currentAction().item().name : "";
$gameVariables.setValue(1, actionName);
とかにすると、スキル・アイテム名が取れます。
違う変数・ピクチャ番号を使う等、工夫してみて頂けますでしょうか。
以下余談
ピータンパン さんが書きました:色々試したのですが、ActorcCommand以外だとエラーになるので
ActorCommand関数内で取りました!
なんとなく他の質問を見るかぎり、ここじゃダメなんだろうなーってのは分かったんですけど、
他に取れるところがなかったので仕方なく・・・やっぱダメですかっ?
ピータンパン さんが書きました:攻撃、アイテム、スキル、それぞれActorCommandの関数内とかで取れたりしますか!?
Window_ActorCommand クラスですよね。
ちょっと話は戻りますが
Window_ActorCommand における this._actor を参照するのがダメなのかというと…
Window_ActorCommand 内に処理を追加するなら別に構わないと思います。
私は Scene_Battle に処理を追加して BattleManager.actor() を参照するように書きましたが
実をいうと Scene_Battle の startActorCommandSelection() という処理を通過した時点で
この this._actor とBattleManager.actor() は同一のアクターオブジェクトになります。
細かいことは省きますが、結果は同じです。
ただ…
Scene_Battle が 各種ウィンドウを子要素に持っているのですが
ウィンドウ同士はお互いの状態をあまり気にしていなくて、その状態管理は Scene_Battle が担当しています。
今回はエネミー選択ウィンドウ (Window_BattleEnemy) の開閉状態でピクチャを制御しようという話でしたが
Window_ActorCommand は Window_BattleEnemy の状態を知らないので
Window_ActorCommand 内で全部処理させるのは微妙だし this._actor を使うのはやめよう
ついでに上の階層 … Scene_Battle に処理させようかな、と考えた次第です。