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

返信する
アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

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

投稿記事 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上がったステータスを取得できるのでしょうか。
教えていただけると助かります。
よろしくお願いします。
最後に編集したユーザー ビービー [ 2017年7月10日(月) 22:08 ], 累計 1 回
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
奏ねこま
記事: 702
登録日時: 2016年1月20日(水) 20:04

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

投稿記事 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)を指すようになります。

こんな感じで。
アバター
ビービー
記事: 308
登録日時: 2016年1月12日(火) 18:40

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

投稿記事 by ビービー »

奏ねこまさん

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

本当にありがとうございました。
これにて解決済みとさせていただきます。
------------------------------------------------------
Twitterやってます。
https://twitter.com/BB_ENTER
ブログもやってます。
http://bb-entertainment-blog.blogspot.jp/
返信する

“MV:質問”に戻る