このスクリプトでTypeError: "this" is not a functionと出てきてしまいます。
Posted: 2020年4月13日(月) 12:40
if ($gameVariables.value(4) <= 113 && $gameVariables.value(4) >=108) {
var targetID = $gameVariables.value(4) - 107;
var aaa = Math.abs(targetID - $gameVariables.value(100));
if (aaa >= 3) {
this.changeHp($gameActors.actor(targetID),(this.param(3)*2)-$gameActors.actor($gameVariables.value(100)).param(2), true);
}
}
オンラインアクションPvPで対象のイベントIDの値によって対象かどうか判断し、そうだった場合に対象actorのHPを増減させるスクリプトなのですが、おそらくthisの部分に問題があるのだと思います。
変数の4番にはターゲットのイベントIDが代入されています。
actorの位置にそれぞれ見えないイベントを置いてそれによって当たり判定などを行っています。(全プレイヤーの座標は共有されている)
108~113までがプレイヤーの下に置かれているイベントです。
107引くことによってプレイヤーナンバーに変換しています(プレイヤー1~6まで)
プレイヤー1~3は同じチーム、4~6は同じチームなので差の絶対値が3以上の場合のみ攻撃が通ると判断します。
そして問題の箇所です。
ターゲットになったプレイヤーの防御力*2-攻撃しているプレイヤー(自身)の攻撃力分ターゲットになったプレイヤーのHPを減らしています。
ゲーム変数100は他プレイヤーと共有されず、自身のプレイヤーナンバーが格納されています。
このスクリプトが実行された時点で真っ黒になりエラーになってしまいます。
内容はあまり関係ないような気がしますが、わかりやすくなるように書いておきます。助けてください、吐きそうです。
var targetID = $gameVariables.value(4) - 107;
var aaa = Math.abs(targetID - $gameVariables.value(100));
if (aaa >= 3) {
this.changeHp($gameActors.actor(targetID),(this.param(3)*2)-$gameActors.actor($gameVariables.value(100)).param(2), true);
}
}
オンラインアクションPvPで対象のイベントIDの値によって対象かどうか判断し、そうだった場合に対象actorのHPを増減させるスクリプトなのですが、おそらくthisの部分に問題があるのだと思います。
変数の4番にはターゲットのイベントIDが代入されています。
actorの位置にそれぞれ見えないイベントを置いてそれによって当たり判定などを行っています。(全プレイヤーの座標は共有されている)
108~113までがプレイヤーの下に置かれているイベントです。
107引くことによってプレイヤーナンバーに変換しています(プレイヤー1~6まで)
プレイヤー1~3は同じチーム、4~6は同じチームなので差の絶対値が3以上の場合のみ攻撃が通ると判断します。
そして問題の箇所です。
ターゲットになったプレイヤーの防御力*2-攻撃しているプレイヤー(自身)の攻撃力分ターゲットになったプレイヤーのHPを減らしています。
ゲーム変数100は他プレイヤーと共有されず、自身のプレイヤーナンバーが格納されています。
このスクリプトが実行された時点で真っ黒になりエラーになってしまいます。
内容はあまり関係ないような気がしますが、わかりやすくなるように書いておきます。助けてください、吐きそうです。