ページ 11

【解決済み】次のレベルのステータスの取得方法を教えてください。

Posted: 2017年7月10日(月) 20:20
by ビービー
こんばんは。

スクリプトについて質問させてください。
レベルアップする前にどのくらいステータスが上がるか
プレイヤーがわかるように画面に表示したかったので。
こちらのhttp://tm.yumineko.com/viewtopic.php?f= ... 1%AB#p7330
記事にて投稿されている「レベルアップ時のステータス表示」プラグインの
スクリプトを一部抜き出して下記のようにしてみたんですがうまくいきませんでした。

コード: 全て選択

var text = "";
for(var i = 0; i < 8; i++){
    var paramName = TextManager.param(i);
    var nextParam = this.currentClass().params[i][this._level + 1];
    var currentParam = this.currentClass().params[i][this._level];
    text += "%1 %2 ⇒ %3\n".format(paramName, currentParam, nextParam);
}
$gameVariables.setValue(1,text);
おそらくthisが指定しているものがないからなような気がしているんですが、
色々やってみてもうまくいきません。
どうすればアクター1の現在のステータスとレベルが1上がったステータスを取得できるのでしょうか。
教えていただけると助かります。
よろしくお願いします。

Re: 次のレベルのステータスの取得方法を教えてください。

Posted: 2017年7月10日(月) 20:52
by 奏ねこま
>おそらくthisが指定しているものがないからなような気がしているんですが、

おっしゃる通りなので、thisの代わりにアクターを渡してあげれば良いです。

コード: 全て選択

var text = "";
var _this = $gameActors.actor(1);
for(var i = 0; i < 8; i++){
    var paramName = TextManager.param(i);
    var nextParam = _this.currentClass().params[i][_this._level + 1];
    var currentParam = _this.currentClass().params[i][_this._level];
    text += "%1 %2 ⇒ %3\n".format(paramName, currentParam, nextParam);
}
$gameVariables.setValue(1,text);
thisそのままだと都合が悪いので、「_this」とか適当に名前を変えて、
「var _this = $gameActors.actor(1)」で、_thisにアクターを設定してます。

余談ですが、thisをそのまま利用するちょっと変わったやり方も。これは覚えなくても良いです。
こんなのもあるんだー程度の認識で。

コード: 全て選択

var text = "";
(function(){
for(var i = 0; i < 8; i++){
    var paramName = TextManager.param(i);
    var nextParam = this.currentClass().params[i][this._level + 1];
    var currentParam = this.currentClass().params[i][this._level];
    text += "%1 %2 ⇒ %3\n".format(paramName, currentParam, nextParam);
}
}.bind($gameActors.actor(1)))();
$gameVariables.setValue(1,text);
元のfor文を「(function(){」と「}.bind($gameActors.actor(1)))();」で挟んでます。
これで、for文中のthisが$gameActors.actor(1)を指すようになります。

こんな感じで。

Re: 次のレベルのステータスの取得方法を教えてください。

Posted: 2017年7月10日(月) 22:07
by ビービー
奏ねこまさん

丁寧に教えていただきありがとうございます。
わかりやすくて簡単に実行でき、望み通りに動いてくれました。

本当にありがとうございました。
これにて解決済みとさせていただきます。