(解決済)ターン数をカウントするプラグインについて

温州みかん

ユーザー
現状、バトル中ずっと表示されています。

下図のようにコマンド入力中にターン数を表示、
コマンド入力後、バトルの処理の開始フェーズになったところで、非表示にし、
再度コマンド入力フェーズで表示、
を繰り返したいのですが、うまくいきません。
もしかしたら、とても基本的なことかもしれませんが、プラグインに詳しくないので解りません。
プラグインの作成講座などを拝見して、感覚的に作っています。
ターン数プラグインの概要.jpg
詳しくて、心優しいかたがいらっしゃいましたら、教えてください。


// TurnCounter-6.js
//
/*:
* @plugindesc 戦闘のコマンド入力時に任意の変数に指定したターン数を表示するプラグイン
* @author UnshuMikan
*
* @param TurnNumber
* @desc ターン数を数える変数
* @default 10
*
* @help なお、ターン経過はコモンイベント等で処理するが必要があります
* このプラグインの利用報告、クレジット記載は不要です
* してくれれば、うれしいという程度です
* このプラグインはコトノハさまのInfoWindowsを参考に作成しました
* 改造及び再配布 可
*/

(function() {
var parameters = PluginManager.parameters('TurnCounter-6');
var TurnNumber = Number(parameters['TurnNumber']);


// Window_PartyCommand


// バトルスクリーンで表示する宣言
var Scene_battle_start = Scene_Battle.prototype.start;
Scene_Battle.prototype.start = function() {
Scene_battle_start.call(this);
this._InfoWindow = new Window_Info();
this.addWindow(this._InfoWindow);
};

// ウィンドウ内の情報を更新するタイミングを宣言
var _Scene_Battle_update = Scene_Battle.prototype.update;
Scene_Battle.prototype.update = function() {
_Scene_Battle_update.call(this);
this._InfoWindow.setText();
};


// ウィンドウを定義
function Window_Info() {
this.initialize.apply(this, arguments);
}
Window_Info.prototype = Object.create(Window_Base.prototype);
Window_Info.prototype.constructor = Window_Info;
Window_Info.prototype.initialize = function() {
var x = 0;
var y = 370;
var width = 190;
var height = 74;
Window_Base.prototype.initialize.call(this, x, y, width, height);
};

Window_Info.prototype.setText = function(str) {
this._text = str;
this.refresh();
};

// ウインドウ内に表示する文字など
Window_Info.prototype.refresh = function() {
this.contents.clear();
this.resetTextColor();
this.drawText("ターン " + $gameVariables.value(TurnNumber) , 1, 1);
};

Window_Info.prototype.standardFontSize = function() {
return 24;
};
Window_Info.prototype.standardBackOpacity = function() {
return 255;
};
Window_Info.prototype.standardPadding = function() {
return 18;
};

// ウィンドウを一度閉じる
Scene_Battle.prototype.changeInputWindow = function() {
if (BattleManager.isInputting()) {
if (BattleManager.actor()) {
this.startActorCommandSelection();
} else {
this.startPartyCommandSelection();
}
} else {
this.endCommandSelection();
// ここに何かを入れると、ターン数のウインドウが一度閉じてくれる気がする
}
};
})();
 

剣崎宗二

ユーザー
先ずは何点かヒントを。
・Windowの開閉(表示/消す)は  閉が.hide() 、開は.show()によって可能かと。
・開をstartPartyCommandSelection辺り、閉をendCommandSelectionに接続するのが良いかもしれません
(個人的にはBattleManager側でやりますが、その場合窓の取得などちょっと難易度は上がるので…)
 

温州みかん

ユーザー
剣崎宗二さま

ご教授ありがとうございます。
Scene_Battle.prototype.start; につなげて表示していたので、.show() .hide() で組みなおしてみます。
 

温州みかん

ユーザー
剣崎宗二さまをはじめ、皆様方のおかげで目的とするプラグインが作成できました。
この場を借りてお礼申し上げます。
// TurnCounter.js
//
/*:
* @plugindesc 戦闘のコマンド入力時に任意の変数に指定したターン数を表示するプラグイン
* @author UnshuMikan
*
* @param TurnNumber
* @desc ターン数を数える変数
* @default 10
*
* @help なお、ターン経過はコモンイベント等で処理するが必要があります
* このプラグインの利用報告、クレジット記載は不要です
* してくれれば、うれしいという程度です
* このプラグインはコトノハさまのInfoWindowsを参考に作成しました
* 改造及び再配布 可
*/

(function() {
var parameters = PluginManager.parameters('TurnCounter');
var TurnNumber = Number(parameters['TurnNumber']);


// Window_PartyCommand


// バトルスクリーンで表示する宣言
var Scene_battle_start = Scene_Battle.prototype.start;
Scene_Battle.prototype.start = function() {
Scene_battle_start.call(this);
this._InfoWindow = new Window_Info();
this.addWindow(this._InfoWindow);
this._InfoWindow.close();
};

// ウィンドウ内の情報を更新するタイミングを宣言
var _Scene_Battle_update = Scene_Battle.prototype.update;
Scene_Battle.prototype.update = function() {
_Scene_Battle_update.call(this);
this._InfoWindow.setText();
};




// ウィンドウを定義
function Window_Info() {
this.initialize.apply(this, arguments);
}
Window_Info.prototype = Object.create(Window_Base.prototype);
Window_Info.prototype.constructor = Window_Info;
Window_Info.prototype.initialize = function() {
var x = 0;
var y = 370;
var width = 190;
var height = 74;
Window_Base.prototype.initialize.call(this, x, y, width, height);
};

Window_Info.prototype.setText = function(str) {
this._text = str;
this.refresh();
};

// ウインドウ内に表示する文字など
Window_Info.prototype.refresh = function() {
this.contents.clear();
this.resetTextColor();
this.drawText("ターン " + $gameVariables.value(TurnNumber) , 1, 1);
};

Window_Info.prototype.standardFontSize = function() {
return 24;
};
Window_Info.prototype.standardBackOpacity = function() {
return 255;
};
Window_Info.prototype.standardPadding = function() {
return 18;
};


// 表示の開始
var Scence_battle_startPartyCommandSelection = Scene_Battle.prototype.startPartyCommandSelection
Scene_Battle.prototype.startPartyCommandSelection = function() {
Scence_battle_startPartyCommandSelection.call(this);
this._InfoWindow.open();
};

// 表示の終了
var Scence_battle_endCommandSelection = Scene_Battle.prototype.endCommandSelection
Scene_Battle.prototype.endCommandSelection = function() {
Scence_battle_endCommandSelection.call(this);
this._InfoWindow.close();
};
})();
 

剣崎宗二

ユーザー
変数の代わりに$gameTroop.turnCount()を使えば或いはコモンイベントでカウントする必要が無くなるかもしれません。
(0スタートで+1する必要がある可能性もございますが…)
 

温州みかん

ユーザー
this.drawText("ターン " + $gameVariables.value(TurnNumber) , 1, 1);
のかわりに
var n = $gameTroop.turnCount() + 1;
this.darwText("ターン ” + n , 1 , 1);
でいいような気がしますが・・・よくわかりません( ゚Д゚)
いろいろと探っています。

実は、公開しいるゲームに「ターン表示がうざったい」という趣旨の書き込みがあり、バージョンアップの際に、ならプラグインで表示しようと思ったのがきっかけです。
コモンイベントで表示していました。
ターン数のカウントをゲーム内の変数10で処理しているのは、そういう経緯です。
 
トップ