ページ 11

【解決済み】使用したスキルのIDを取得する方法

Posted: 2019年3月31日(日) 03:49
by yukkukomei
こんばんは。
前から、プレイヤーや敵が使用したスキルのIDを取得しようと模索していたのですが
どうも私の力だけでは解決できそうになく質問させていただきました。

viewtopic.php?t=1687
こちらのトピックにプラグインによる解決法、スプリクトによる解決法の2つが提示されていましたが
プラグインを使用し、敵が使用したスキルIDを取得しようとすると
window.isDevToolsOpen is not a function
というエラーが起きてしまいます。

そのため、同トピックに投稿されていたスプリクトの
var skill = $gameParty.inBattle() ? BattleManager._subject.lastBattleSkill() : $gameParty.menuActor().lastMenuSkill();
if (skill) {
$gameVariables.setValue(20,skill.mpCost); //変数20番にセット
}
3行目の.mpcostを.idに変えて試してみましたが今度は
BattleManager._subjectlastBattleSkill is not a function
というエラーになってしまいました。

新規プロジェクトでも発生した現象ですのでプラグインの競合ではないと思います。
プラグイン、スプリクトを使用した際に発生したエラーのコンソール画面を添付いたします。
1つ目の画像がスプリクト使用時、2つ目の画像がプラグイン使用時です。

javaスプリクトについては全くの素人なので、私には何が原因なのか特定することができませんでした。
どうかご存知の方がいらっしゃいましたらご助力いただけると幸いです。

よろしくおねがいいたします。

Re: 使用したスキルのIDを取得する方法

Posted: 2019年3月31日(日) 09:06
by マンカインド
こんにちわ。

とりあえずプラグインの該当エラーのみ修正してみました。
TkoolMV_PluginCommandBook.js
(74.68 KiB) ダウンロード数: 122 回
しかし、ここでエラーがでるということはプラグインコマンド実行でのエラーが発端となっています。
またエラーになりましたらお知らせください。

Re: 使用したスキルのIDを取得する方法

Posted: 2019年3月31日(日) 10:56
by yukkukomei
返信ありがとうございます。
プラグインを修正していただいた結果エラーで止まることはなくなりましたが
敵の行動、味方の行動1回づつエラーが発生しておりスキルIDは反映されませんでした。

またコンソール画面を添付いたします。
よろしくお願いいたします。

Re: 使用したスキルのIDを取得する方法

Posted: 2019年4月01日(月) 23:44
by マンカインド
こんばんわ、コンソール画像の添付ありがとうございます。

こちらの環境だと以下のようにスキルとコモンの設定をして、
バトル中にスキルを使用すると指定した変数にスキルIDが代入されています。
sk_02439.jpg
sk_02438.jpg
そちらではどのようにプラグインコマンドの呼び出しを行っていますでしょうか?

Re: 使用したスキルのIDを取得する方法

Posted: 2019年4月02日(火) 03:17
by yukkukomei
こんばんは。返信ありがとうございます。
私も同じ方法でプラグインコマンドを呼び出していました。
なのでいくつか検証してみたところ、おそらくですがエラーが出る2つの原因を特定しました。

1つ目はスキルID1や2の攻撃や防御など、コマンドから発動するスキルからコモンイベントを呼び出そうとすると発生しました。
エラーの種類はすべて TypeError: Cannot read property 'id' of null でした。

2つ目はコモンイベントを設定したスキルを敵が使用するとスキルIDに関わらず発生しました。
エラーの種類はすべて TypeError: BattleManaer._subject.lastBattleSkill is not a function でした。

私はスキルID1の攻撃スキルにコモンイベントを設定していた為2つのエラーが同時に表示されたようです。

そちらの環境でも再現できますでしょうか?
改めてよろしくお願いいたします。

Re: 使用したスキルのIDを取得する方法

Posted: 2019年4月05日(金) 22:27
by マンカインド
こんばんわ。
こちらでも同様の現象が発生するか確認してみました。

1つ目については確認できませんでしたが、2つ目については確認できました。
プラグインの仕様として、このプラグインコマンドは味方が使用したスキルでのみ正しく取得することができます。
(元のスレッドに「プレイヤーが使ったスキルID」という前提がありましたね)

なので、取り急ぎエネミーがスキルを使用した際にも変数にスキルIDが代入されるよう修正してみました。
TkoolMV_PluginCommandBook.js
(75.45 KiB) ダウンロード数: 49 回

Re: 使用したスキルのIDを取得する方法

Posted: 2019年4月06日(土) 13:46
by yukkukomei
こんにちは。修正ありがとうございます。
敵が使用したスキルは正しく変数に格納されました。

ただ、変わらずコマンドからスキルを使用すると Cannot read property 'id' of null が起きます。
これはスキルID1を"攻撃"から"ファイア"に変えても変わらず起こりました。
ツクールはSteam版、バージョンは最新です。

データベースの設定とコンソール画面を添付いたします。
新規プロジェクトを作成し、デフォルトのこうもり×2を相手に戦闘テストを行いました。
この通りに設定していただいても再現できないでしょうか?
何度も申し訳ありませんが、改めてよろしくおねがいいたします。

Re: 使用したスキルのIDを取得する方法

Posted: 2019年4月06日(土) 19:12
by まっつUP
yukkukomei様

TkoolMV_PluginCommandBook.jsと
以下のトピックに貼ってあるプラグインを同時に導入することで
一部条件で選択したスキルを取得できないというトピック中の不具合がなくなると思います。
追記:プラグインの機能自体は単体でも動きますが変数代入のため。
viewtopic.php?f=5&p=27776#p27776

setLastBattleSkillはデフォルトでは戦闘中のスキルウインドウのスキル選択の際のみに
呼び出される使用のため、それ以外でのスキル選択に対応させる必要があるためです。

Re: 使用したスキルのIDを取得する方法

Posted: 2019年4月06日(土) 22:51
by yukkukomei
返信ありがとうございます。
そちらのプラグインを一緒に導入し、希望通りの動作ができました!

お二方ともありがとうございます!

Re: 【解決済み】使用したスキルのIDを取得する方法

Posted: 2019年4月06日(土) 23:01
by マンカインド
まっつUP さん >
フォローありがとうございます。助かりました。


yukkukomei さん >
無事に解決されたようでなによりです。
コンソール画面を見ると余計なログが出ていましたので一応修正しました。
TkoolMV_PluginCommandBook.js
(75.46 KiB) ダウンロード数: 233 回