Project1

标题: 想自己重新设计状态栏布局,该咋整? [打印本页]

作者: 雷影    时间: 2018-5-25 11:53
标题: 想自己重新设计状态栏布局,该咋整?
当初VA时倒是弄懂了默认脚本的内容,修修改改也成了!
可这个MV,好像没找到状态窗口布局位置,想改也无从下手!
有没有大佬帮写一个脚本?
理想是图1这样


不能实现的话,弄成图2哪样也可以!

作者: yang1zhi    时间: 2018-5-25 12:36
在这个窗口里面
Window_Status

作者: 雷影    时间: 2018-5-25 15:08
yang1zhi 发表于 2018-5-25 12:36
在这个窗口里面
Window_Status

恩 谢谢 找到了!按照构想修改了各种数值的坐标位置!调整了窗口大小!
可是简介这部分因为是在另一个窗口里的!要怎样增加一个新窗口啊?
作者: yang1zhi    时间: 2018-5-25 15:44
本帖最后由 yang1zhi 于 2018-5-25 15:46 编辑
雷影 发表于 2018-5-25 15:08
恩 谢谢 找到了!按照构想修改了各种数值的坐标位置!调整了窗口大小!
可是简介这部分因为是在另一个窗 ...


Scene_Status.prototype.create = function() {
    Scene_MenuBase.prototype.create.call(this);
    this._statusWindow = new Window_Status();
    this._statusWindow.reserveFaceImages();
    this.addWindow(this._statusWindow);
    this._statusWindow.setHandler('cancel',   this.cancel.bind(this));
    this._statusWindow.setHandler('pagedown', this.nextActor.bind(this));
    this._statusWindow.setHandler('pageup',   this.previousActor.bind(this));
        this.createnlxsWindow();
};

像这样就是加个窗口
重点是
this._statusWindow = new Window_Status();
这是产生个新的Window_Status赋值给this._statusWindow
然后是
this.addWindow(this._statusWindow);
把这个窗口添加到显示板上
setHandler这些是按键指令
窗口怎么写,就参考Window_Status这些Window_开头的,这些都是窗口。
抄一份过来,修改后,再添加进来就是个新窗口了
作者: 雷影    时间: 2018-5-25 19:29
yang1zhi 发表于 2018-5-25 15:44
Scene_Status.prototype.create = function() {
    Scene_MenuBase.prototype.create.call(this);
    t ...

看不懂啊!在原本的代码上修修改改还勉强可以,要重写一个的话不知道要怎么入手!
能不能帮写完啊!就是在Window_Status里,下方增加一个能显示2~3行角色简介文字的窗口!
作者: yang1zhi    时间: 2018-5-25 19:43
雷影 发表于 2018-5-25 19:29
看不懂啊!在原本的代码上修修改改还勉强可以,要重写一个的话不知道要怎么入手!
能不能帮写完啊!就是 ...

Window_Status本身是窗口,
要增加窗口应该是在Scene_Status。
和VA差不多吧。
VA的应该是
@statusWindow = Window_Status.new
下面还要加个释放
而MV的不用写释放
不过要写addWindow
作者: 雷影    时间: 2018-5-26 17:58
yang1zhi 发表于 2018-5-25 19:43
Window_Status本身是窗口,
要增加窗口应该是在Scene_Status。
和VA差不多吧。

能不能帮写一个完整的啊!
作者: yang1zhi    时间: 2018-5-26 18:28
雷影 发表于 2018-5-26 17:58
能不能帮写一个完整的啊!

JAVASCRIPT 代码复制
  1. //-----------------------------------------------------------------------------
  2. // Window_Status_xiamian
  3. //
  4. // The window for displaying full status on the status screen.
  5.  
  6. var Status_xiamian_create = Scene_Status.prototype.create
  7. Scene_Status.prototype.create = function() {
  8.     Status_xiamian_create.call(this);
  9.     this._status_xiamianWindow = new Window_Status_xiamian();
  10.     this.addWindow(this._status_xiamianWindow);
  11. };
  12.  
  13. var Status_xiamian_refreshActor = Scene_Status.prototype.refreshActor
  14. Scene_Status.prototype.refreshActor = function() {
  15.         Status_xiamian_refreshActor.call(this);
  16.     var actor = this.actor();
  17.     this._status_xiamianWindow.setActor(actor);
  18. };
  19.  
  20.  
  21. function Window_Status_xiamian() {
  22.     this.initialize.apply(this, arguments);
  23. }
  24.  
  25. Window_Status_xiamian.prototype = Object.create(Window_Selectable.prototype);
  26. Window_Status_xiamian.prototype.constructor = Window_Status_xiamian;
  27.  
  28.  
  29. Window_Status_xiamian.prototype.initialize = function() {
  30.     var width = Graphics.boxWidth;
  31.     var height = Graphics.boxHeight/4;
  32.         var x = 0
  33.         var y = 459
  34.     Window_Selectable.prototype.initialize.call(this, x, y, width, height);
  35.     this._actor = null;
  36.     this.refresh();
  37.     this.activate();
  38. };
  39.  
  40. Window_Status_xiamian.prototype.setActor = function(actor) {
  41.     if (this._actor !== actor) {
  42.         this._actor = actor;
  43.         this.refresh();
  44.     }
  45. };
  46.  
  47. Window_Status_xiamian.prototype.refresh = function() {
  48.     this.contents.clear();
  49.         if (!this._actor) {return}
  50.         console.log(this._actor)
  51.         this.drawTextEx(this._actor.profile(), 0, 0);
  52. };

作者: tseyik    时间: 2018-5-26 19:27
https://triacontane.blogspot.hk/2016/03/gui.html
GUI画面デザインプラグイン


 パラメータ「デザインモード」を「ON」にすると、マウスのドラッグ&ドロップで既存のウィンドウや追加したウィンドウの位置をグラフィカルに調整し、横幅などのプロパティを自由に変更できます。位置を調整したらデザインモードをOFFにして起動すると、変更した位置が反映されています。
指定可能なプロパティ

    ウィンドウの横幅
    ウィンドウの高さ
    ウィンドウの余白
    ウィンドウのフォントサイズ
    ウィンドウの1行のあたりの高さ
    ウィンドウの背景透明度
    ウィンドウの行数
    ウィンドウの背景画像ファイル名
作者: 雷影    时间: 2018-5-26 21:56
本帖最后由 雷影 于 2018-5-26 22:57 编辑
yang1zhi 发表于 2018-5-26 18:28
//-----------------------------------------------------------------------------
// Window_Status_x ...


Maximum call stack size exceeded
出现这个错误!原来的脚本我只是改了改各种坐标!没改代码!
我把这一段放在最下面就出现这个错误!

折腾了一下出现这个显示!

作者: 雷影    时间: 2018-5-26 22:02
tseyik 发表于 2018-5-26 19:27
https://triacontane.blogspot.hk/2016/03/gui.html
GUI画面デザインプラグイン

感谢!不过我这里打不开!404错误?
作者: 雷影    时间: 2018-5-27 07:33
yang1zhi 发表于 2018-5-26 18:28
//-----------------------------------------------------------------------------
// Window_Status_x ...

按照你说的,新建一个空白工程测试!什么都没动,就添加了你那段!
难道是MV版本问题?我现在用的是1.2.0版本!


要不帮看看整段代码有啥问题吧!
JAVASCRIPT 代码复制
  1. //=============================================================================
  2. // Window_Status
  3. //=============================================================================
  4. /*:
  5. * @plugindesc 状态栏重新排版
  6. *
  7. */
  8. //-----------------------------------------------------------------------------
  9.  
  10. Window_Status.prototype = Object.create(Window_Selectable.prototype);
  11. Window_Status.prototype.constructor = Window_Status;
  12. Window_Status.prototype.initialize = function() {
  13.     var width = Graphics.boxWidth-200;
  14.     var height = Graphics.boxHeight-200;
  15.     Window_Selectable.prototype.initialize.call(this, 100, 50, width, height);
  16.     this.refresh();
  17.     this.activate();
  18. };
  19.  
  20. Window_Status.prototype.setActor = function(actor) {
  21.     if (this._actor !== actor) {
  22.         this._actor = actor;
  23.         this.refresh();
  24.     }
  25. };
  26.  
  27. Window_Status.prototype.refresh = function() {
  28.     this.contents.clear();
  29.     if (this._actor) {
  30.         var lineHeight = this.lineHeight();
  31.         this.drawBlock1(lineHeight * 0);
  32.         this.drawHorzLine(lineHeight * 1);
  33.         this.drawBlock2(lineHeight * 2);
  34.         this.drawHorzLine(lineHeight * 6);
  35.         this.drawBlock3(lineHeight * 7);
  36.         this.drawHorzLine(lineHeight * 13);
  37.         this.drawBlock4(lineHeight * 14);
  38.     }
  39. };
  40.  
  41. Window_Status.prototype.drawBlock1 = function(y) {
  42.     this.drawActorName(this._actor, 192, y);
  43.     this.drawActorClass(this._actor, 192, y+40);
  44.     this.drawActorNickname(this._actor, 432, y);
  45. };
  46.  
  47. Window_Status.prototype.drawBlock2 = function(y) {
  48.     this.drawActorFace(this._actor, 10, 10);
  49.     this.drawBasicInfo(200, y);
  50.     this.drawExpInfo(400, y);
  51. };
  52. //装备,能力值显示的位置
  53. Window_Status.prototype.drawBlock3 = function(y) {
  54.     this.drawEquipments(10, y -50);//装备显示的位置
  55.     this.drawParameters(300, y -50);//能力值显示的位置
  56. };
  57.  
  58. Window_Status.prototype.drawBlock4 = function(y) {
  59.     this.drawProfile(6, y);//人物简介
  60. };
  61.  
  62. Window_Status.prototype.drawHorzLine = function(y) {
  63.     var lineY = y + this.lineHeight() / 2 - 1;
  64.     this.contents.paintOpacity = 48;
  65.     this.contents.fillRect(0, lineY, this.contentsWidth(), 2, this.lineColor());
  66.     this.contents.paintOpacity = 255;
  67. };
  68.  
  69. Window_Status.prototype.lineColor = function() {
  70.     return this.normalColor();
  71. };
  72. //等级 异常状态图标 HP MP位置
  73. Window_Status.prototype.drawBasicInfo = function(x, y) {
  74.     var lineHeight = this.lineHeight();
  75.     this.drawActorLevel(this._actor, x, y + lineHeight * 0);
  76.     this.drawActorIcons(this._actor, 10, y + lineHeight * 2+10);
  77.     this.drawActorHp(this._actor, x, y + lineHeight * 1);
  78.     this.drawActorMp(this._actor, x, y + lineHeight * 2);
  79. };
  80. //HP MP数值描绘
  81. Window_Status.prototype.drawParameters = function(x, y) {
  82.     var lineHeight = this.lineHeight();
  83.     for (var i = 0; i < 6; i++) {
  84.         var paramId = i + 2;
  85.         var y2 = y + lineHeight * i;
  86.         this.changeTextColor(this.systemColor());
  87.         this.drawText(TextManager.param(paramId), x, y2, 160);
  88.         this.resetTextColor();
  89.         this.drawText(this._actor.param(paramId), x + 160, y2, 60, 'right');
  90.     }
  91. };
  92.  
  93. //绘制经验值位置
  94. Window_Status.prototype.drawExpInfo = function(x, y) {
  95.     var lineHeight = this.lineHeight();
  96.     var expTotal = TextManager.expTotal.format(TextManager.exp);
  97.     var expNext = TextManager.expNext.format(TextManager.level);
  98.     var value1 = this._actor.currentExp();
  99.     var value2 = this._actor.nextRequiredExp();
  100.     if (this._actor.isMaxLevel()) {
  101.         value1 = '-----';
  102.         value2 = '-----';
  103.     }
  104.     this.changeTextColor(this.systemColor());
  105.     this.drawText(expNext, x, y + lineHeight * 1, 0);
  106.     this.drawText(expTotal, x, y + lineHeight * 2, 0);
  107.     this.resetTextColor();
  108.     this.drawText(value2, x+80, y + lineHeight * 1, 270,'left');
  109.     this.drawText(value1, x+80, y + lineHeight * 2, 270,'left');
  110. };
  111.  
  112. //装备显示
  113. Window_Status.prototype.drawEquipments = function(x, y) {
  114.     var equips = this._actor.equips();
  115.     var count = Math.min(equips.length, this.maxEquipmentLines());
  116.     for (var i = 0; i < count; i++) {
  117.         this.drawItemName(equips[i], x, y + this.lineHeight() * i);
  118.     }
  119. };
  120.  
  121. //显示简介
  122. Window_Status.prototype.drawProfile = function(x, y) {
  123.     this.drawTextEx(this._actor.profile(), x, y);
  124. };
  125.  
  126. Window_Status.prototype.maxEquipmentLines = function() {
  127.     return 6;
  128. };
  129.  
  130.  
  131.  
  132. // Window_Status_xiamian
  133. //
  134. // The window for displaying full status on the status screen.
  135.  
  136. var Status_xiamian_create = Scene_Status.prototype.create
  137. Scene_Status.prototype.create = function() {
  138.     Status_xiamian_create.call(this);
  139.     this._status_xiamianWindow = new Window_Status_xiamian();
  140.     this.addWindow(this._status_xiamianWindow);
  141. };
  142.  
  143. var Status_xiamian_refreshActor = Scene_Status.prototype.refreshActor
  144. Scene_Status.prototype.refreshActor = function() {
  145.         Status_xiamian_refreshActor.call(this);
  146.     var actor = this.actor();
  147.     this._status_xiamianWindow.setActor(actor);
  148. };
  149.  
  150.  
  151. function Window_Status_xiamian() {
  152.     this.initialize.apply(this, arguments);
  153. }
  154.  
  155. Window_Status_xiamian.prototype = Object.create(Window_Selectable.prototype);
  156. Window_Status_xiamian.prototype.constructor = Window_Status_xiamian;
  157. Window_Status_xiamian.prototype.initialize = function() {
  158.     var width = Graphics.boxWidth;
  159.     var height = Graphics.boxHeight/4;
  160.         var x = 0
  161.         var y = 459
  162.     Window_Selectable.prototype.initialize.call(this, x, y, width, height);
  163.     this._actor = null;
  164.     this.refresh();
  165.     this.activate();
  166. };
  167.  
  168. Window_Status_xiamian.prototype.setActor = function(actor) {
  169.     if (this._actor !== actor) {
  170.         this._actor = actor;
  171.         this.refresh();
  172.     }
  173. };
  174.  
  175. Window_Status_xiamian.prototype.refresh = function() {
  176.     this.contents.clear();
  177.         if (!this._actor) {return}
  178.         console.log(this._actor)
  179.         this.drawTextEx(this._actor.profile(), 0, 0);
  180. };
  181.  
  182. function Window_Status() {
  183.     this.initialize.apply(this, arguments);
  184. }

作者: yang1zhi    时间: 2018-5-27 10:45
你怎么把默认的Window_Status顺序都改了
function Window_Status()不是应该在最前面的吗。
VA里不是也有initialize吗,放一开始的。

作者: yang1zhi    时间: 2018-5-27 10:46
我那个,你不用添加到里面。你新建个JS文件,复制进去,保存,放到plugins里面,再设置成插件,就能用了
作者: 雷影    时间: 2018-5-27 11:15
yang1zhi 发表于 2018-5-27 10:46
我那个,你不用添加到里面。你新建个JS文件,复制进去,保存,放到plugins里面,再设置成插件,就能用了 ...

按照你说的,新建一个空白工程测试!什么都没动,就添加了你那段!然后就是12楼那样的错误!
apply啥的!
作者: yang1zhi    时间: 2018-5-27 11:46
雷影 发表于 2018-5-27 11:15
按照你说的,新建一个空白工程测试!什么都没动,就添加了你那段!然后就是12楼那样的错误!
apply啥的! ...

你看清楚
function Window_Status() {
    this.initialize.apply(this, arguments);
}
这个被你从Window_Status的最开始,移动到了最底下。
我写的是Window_Status_xiamian  名字已经改过了
已经是个新窗口了。和Window_Status没任何关系。
作者: tseyik    时间: 2018-5-27 12:10
GraphicalDesignMode.js

作者: 雷影    时间: 2018-5-27 17:21
tseyik 发表于 2018-5-27 12:10
[fold=GraphicalDesignMode.js]//===================================================================== ...


这啥意思啊!?1.3版本以下不能用?
作者: tseyik    时间: 2018-5-27 17:35
// Version
// 2.8.2 2018/05/20 YEP_BattleEngineCore.jsとの併用時、デザインモードで一部ウィンドウで透明状態の切り替えが機能しない競合を解消
// 2.8.1 2018/01/30 最新のNW.jsで動作するよう修正
// 2.8.0 2017/07/26 コンソールからの関数実行で直前に編集したウィンドウの位置を変更できる機能を追加
// 2.7.0 2017/04/11 2.6.0の修正で追加ウィンドウの位置変更が正常に動作しない問題を修正
//                  選択肢ウィンドウについて位置変更を一時的に無効化するプラグインコマンドを追加
// 2.6.0 2017/04/07 追加したピクチャやウィンドウについて任意のスイッチがONのときのみ表示できる機能を追加
// 2.5.0 2017/03/11 ウィンドウを非表示にできる機能を追加
// 2.4.0 2017/01/09 カスタムウィンドウに表示する内容に揃えを指定できる機能を追加しました。
// 2.3.1 2016/11/30 RPGアツマールで画面がNowLoadingから進まなくなる場合がある問題を修正しました。
// 2.3.0 2016/11/25 メッセージウィンドウの背景の表示可否を固定にできる機能を追加しました。
// 2.2.1 2016/11/12 Macの場合、Ctrlキーの代わりにoptionキーを使用するようヘルプを追記
// 2.2.0 2016/11/03 ウィンドウごとに使用するフォントを設定できる機能を追加
// 2.1.0 2016/09/28 アイコンサイズをフォントサイズに合わせて自動で拡縮できる機能を追加
//                  操作対象のウィンドウにフォーカスしたときに枠の色を変えて明示する機能を追加
//                  数値項目のプロパティを設定する際にJavaScript計算式を適用できる機能を追加
// 2.0.0 2016/08/22 本体v1.3.0によりウィンドウ透過の実装が変更されたので対応
// 1.1.3 2016/08/05 本体v1.3.0にて表示される警告を抑制
// 1.1.2 2016/07/20 一部のウィンドウでプロパティロード後にコンテンツが再作成されない問題を修正
// 1.1.1 2016/07/17 余白とフォントサイズの変更が、画面切り替え後に元に戻ってしまう問題を修正
// 1.1.0 2016/07/11 メッセージウィンドウのみ位置変更を一時的に無効化するプラグインコマンドを追加
// 1.0.2 2016/04/02 liply_memoryleak_patch.jsとの競合を解消
// 1.0.1 2016/03/28 一部のウィンドウのプロパティを変更しようとするとエラーが発生する現象の修正
// 1.0.0 2016/03/13 初版
// 0.9.0 2016/03/05 ベータ版
作者: tseyik    时间: 2018-5-27 19:50
1.5.1



作者: 雷影    时间: 2018-5-27 22:30
tseyik 发表于 2018-5-27 19:50
1.5.1

换了1.5.1还是没反应,是哪设置错了吗?


没有网格。F8显示394行有问题


394行貌似是判断功能打开,没打开的样子





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1