ページ 11

アクターがスキルを習得しているかどうかスクリプトで判定したいのですが……

Posted: 2023年1月26日(木) 15:44
by もぐたん
ググって調べたのですが、以下のようなスクリプトがでてきました。

if($gameActors.actor(1).isLearnedSkill(1)){
$gameSwitches.setValue(1,true)
}

しかし、なぜかこれでは判定されない(スイッチ1がONにならない)ようなのです。
初歩的すぎる質問かもしれませんが、解決方法をお教えいただけないでしょうか。

Re: アクターがスキルを習得しているかどうかスクリプトで判定したいのですが……

Posted: 2023年1月27日(金) 15:11
by やもり
スクリプト自体はそれで合っています。
多分スイッチがオンにならない原因は『攻撃はスキルとして覚えていないから』だと思います。
試しに職業の習得するスキルに『攻撃』を追加するか、isLearnedSkill(n)のnに覚えているスキルのIDをいれてください。

Re: アクターがスキルを習得しているかどうかスクリプトで判定したいのですが……

Posted: 2023年1月27日(金) 19:03
by もぐたん
ありがとうございます。
以下のように変えてみましたが、やはりスイッチ1001はONにならず……。

if($gameActors.actor(4).isLearnedSkill(4)){
$gameSwitches.setValue(1001,true)
}

条件分岐のアクター4がスキル4を習得しているでやると、スイッチ1001はonになります。
なぜ……。

Re: アクターがスキルを習得しているかどうかスクリプトで判定したいのですが……

Posted: 2023年1月27日(金) 20:07
by ecf5DTTzl6h6lJj02
こんばんは。
もぐたん さんが書きました:ありがとうございます。
以下のように変えてみましたが、やはりスイッチ1001はONにならず……。

if($gameActors.actor(4).isLearnedSkill(4)){
$gameSwitches.setValue(1001,true)
}

条件分岐のアクター4がスキル4を習得しているでやると、スイッチ1001はonになります。
なぜ……。

攻撃や防御が実際にはアクターが習得していないので、isLearnedSkill で false が返ってしまうのは前述の通りですが、
isLearnedSkill ではもう一つ、武器や防具、ステートで追加されるスキルは false が返るという仕様があります。
もし、武器や防具、ステートで追加したスキルをチェックしたいという場合は、
isLearnedSkill ではなく hasSkill を使用してチェックしてください。
(条件分岐のアクター4がスキル4を習得している のチェックは この hasSkill を使用してチェックしています)

Re: アクターがスキルを習得しているかどうかスクリプトで判定したいのですが……

Posted: 2023年1月27日(金) 20:10
by やもり
すみません、こっちに直してください。このまま入れれば動くはずです

// 『== true』は条件を満たしている場合
if($gameActors.actor(4).isLearnedSkill(4) == true)
{$gameSwitches.setValue(1001,true)}
else //elseはそうで無ければ~の場合
{//ここのカッコ内は条件を満たさない場合の処理を書きます
$gameSwitches.setValue(1001, false)
}

詳しくはこちらのhttps://tkool.jp/mz/plugin/javascript/if.htmlを見てみてください。

Re: アクターがスキルを習得しているかどうかスクリプトで判定したいのですが……

Posted: 2023年1月27日(金) 21:20
by もぐたん
ecf5DTTzl6h6lJj02さん
やもりさん
ありがとうございました。
isLearnedSkillをhasSkillに変えたところ、 無事判定してくれました。
アクターの所でスキル追加していたのですが、どうやらそれはisLearnedSkillでは拾ってくれないようですね。
これで進めることが出来ます、ありがとうございました。