ページ 11

変数代入:アクターの●番目のスキルのID

Posted: 2021年11月16日(火) 02:12
by 初心者&質問者
特定の変数に
「あるアクターが●番目に所持(習得)しているスキルのID」を代入するには
どうすればいいでしょうか?

調べてみて、下記を変数代入のスクリプトに入れてみたのですが

――――――――――――――――

$gameActors.actor(1).skills()

――――――――――――――――

次のエラーが出てしまいます。

[object,object][object,object]


スクリプトに弱いので、正しい書き方がわかる方
お願いします。

Re: 変数代入:アクターの●番目のスキルのID

Posted: 2021年11月17日(水) 00:57
by 冷やっこ
初心者&質問者 さんが書きました:特定の変数に
「あるアクターが●番目に所持(習得)しているスキルのID」を代入するには
どうすればいいでしょうか?

調べてみて、下記を変数代入のスクリプトに入れてみたのですが

――――――――――――――――

$gameActors.actor(1).skills()

――――――――――――――――

次のエラーが出てしまいます。

[object,object][object,object]


スクリプトに弱いので、正しい書き方がわかる方
お願いします。


こんばんは!

特定のアクターが現在所持しているスキルに対して「●番目のスキルIDを変数に代入する」、と言う解釈で
よろしいでしょうか?(覚えた順番ではありません)
もしそれでよろしければ…

コード: 全て選択

◆スクリプト:var actID = $gameActors.actor(1) //アクターID
:     :var posseNO = 2                  //●番目のスキル
:     :var vID = 11                     //代入する変数
:     :
:     :if (actID.skills().length >= posseNO){
:     :$gameVariables.setValue(vID ,actID.skills()[posseNO - 1].id)
:     :}
上記でアクター1が所持している2番目のスキルIDを変数11に代入します。
上3行の数値はご自分のゲームに合わせて変更して下さい。
ただ、上記のスクリプトですとスキルタイプの魔法、必殺技、また防御や逃げるなどのスキルを
習得している場合、それらも含めて全てのスキルから2番目に所持しているスキルIDを変数に
代入してしまいます。もしそれでもよろしければ良いのですが。

コード: 全て選択

◆スクリプト:var actID = $gameActors.actor(1) //アクターID
:     :var posseNO = 2                  //●番目のスキル
:     :var vID = 11                     //代入する変数
:     :var type = 1                     //スキルタイプ
:     :
:     :if (actID.skills().filter(function(item) {return item.stypeId==type;}).length >= posseNO){
:     :$gameVariables.setValue(vID ,actID.skills().filter(function(item) {
:     :return item.stypeId==type;})[posseNO - 1].id)
:     :}
上記は調べるスキルタイプを選択できます。
ツクールデフォルトですとスキルタイプ1が魔法で2が必殺技です。
上記ですと魔法、必殺技、また防御や逃げるなどのスキルを習得していてもあくまで
スキルタイプ1の魔法で所持している2番目のスキルIDが変数に代入されます。


以上になりますがいかがでしょうか。

Re: 変数代入:アクターの●番目のスキルのID

Posted: 2021年11月17日(水) 01:36
by 初心者&質問者
ありがとうございます!

1つ目に教えて頂いたスクリプトで試してみました。
無事、特定の番号のスクリプトIDを変数に代入する事ができました。