Project1

标题: 如何将存档行走图改为脸图 [打印本页]

作者: 歌若先生    时间: 2022-1-9 13:31
标题: 如何将存档行走图改为脸图
存档图标默认是行走图,我用的人物是3头身,会导致身体显示不全,求个方法把行走图改为脸图
作者: cenhangkai    时间: 2022-1-9 17:54
把下列代码 复制粘贴成插件,插件名字:CD
然后就可以使用了。
——————————————————————
  1. /*:
  2. * @plugindesc 存档行走图改为脸图
  3. * @author CHK
  4. *
  5. * @help
  6. * 即插即用。仅限存/读 档界面。
  7. *
  8. *
  9. * @param 脸图X轴偏移
  10. * @desc 默认190。
  11. * @default 190
  12. *
  13. * @param 脸图Y轴偏移
  14. * @desc 默认0。
  15. * @default 0
  16. *
  17. * @param 自定义脸图宽度
  18. * @desc 默认根据 列表宽度 自动缩放。
  19. * @default 0
  20. *
  21. * @param 自定义脸图高度
  22. * @desc 默认根据 列表高度 自动缩放。
  23. * @default 0
  24. *
  25. * @param 显示几个成员的脸图
  26. * @desc 填写0,则默认为 所有战斗成员(候补未出战的不算)。
  27. * @default 0
  28. */

  29. (function() {
  30.        
  31.   var parameters = PluginManager.parameters('CD');
  32.   var XP = Number(parameters['脸图X轴偏移'] || 190);
  33.   var YP = Number(parameters['脸图Y轴偏移'] || 0);
  34.   var WP = Number(parameters['自定义脸图宽度'] || 0);
  35.   var HP = Number(parameters['自定义脸图高度'] || 0);
  36.   var RS = Number(parameters['显示几个成员的脸图'] || 0);
  37.   
  38. Window_SavefileList.prototype.drawContents = function(info, rect, valid) {
  39.     var bottom = rect.y + rect.height;
  40.     if (rect.width >= 420) {
  41.                 if (valid) this.drawPartyFace(info, rect.x + XP, rect.y + YP);
  42.         this.drawGameTitle(info, rect.x + 192, rect.y, rect.width - 192);
  43.     }
  44.     var lineHeight = this.lineHeight();
  45.     var y2 = bottom - lineHeight;
  46.     if (y2 >= lineHeight) {
  47.         this.drawPlaytime(info, rect.x, y2, rect.width);
  48.     }
  49. };

  50. Window_SavefileList.prototype.drawPartyFace = function(info, x, y) {
  51.     if (info.faces) {
  52.                 var ChangDu = RS>0?RS:info.faces.length;
  53.                 if (RS>info.faces.length) ChangDu = info.faces.length;
  54.         for (var i = 0; i < ChangDu; i++) {
  55.             var width = WP>0?WP:this.itemHeight();
  56.                         var height = HP>0?HP:this.itemHeight();
  57.                         this.contents._context.imageSmoothingEnabled = false;
  58.                         this.drawFace(info.faces[i][0], info.faces[i][1], x + i * width, y, width, height);
  59.                         this.contents._context.imageSmoothingEnabled = true;
  60.         }
  61.     }
  62. };

  63. })();
复制代码

作者: 歌若先生    时间: 2022-1-9 21:58
cenhangkai 发表于 2022-1-9 17:54
把下列代码 复制粘贴成插件,插件名字:CD
然后就可以使用了。
———————————————————— ...

太感谢啦
作者: Nightcat♪    时间: 2023-3-14 22:13
感谢分享!!
作者: 小秋橙    时间: 2023-3-14 23:36

直接使用官方插件AltSaveScreen.js即可,效果如图:

JAVASCRIPT 代码复制下载
  1. //=============================================================================
  2. // AltSaveScreen.js
  3. //=============================================================================
  4.  
  5. /*:
  6.  * @plugindesc Alternative save/load screen layout.
  7.  * @author Yoji Ojima
  8.  *
  9.  * @help This plugin does not provide plugin commands.
  10.  */
  11.  
  12. /*:ja
  13.  * @plugindesc セーブ/ロード画面のレイアウトを変更します。
  14.  * @author Yoji Ojima
  15.  *
  16.  * @help このプラグインには、プラグインコマンドはありません。
  17.  */
  18.  
  19. (function() {
  20.  
  21.     var _Scene_File_create = Scene_File.prototype.create;
  22.     Scene_File.prototype.create = function() {
  23.         _Scene_File_create.call(this);
  24.         this._listWindow.height = this._listWindow.fittingHeight(8);
  25.         var x = 0;
  26.         var y = this._listWindow.y + this._listWindow.height;
  27.         var width = Graphics.boxWidth;
  28.         var height = Graphics.boxHeight - y;
  29.         this._statusWindow = new Window_SavefileStatus(x, y, width, height);
  30.         this._statusWindow.setMode(this.mode());
  31.         this._listWindow.statusWindow = this._statusWindow;
  32.         this._listWindow.callUpdateHelp();
  33.         this.addWindow(this._statusWindow);
  34.     };
  35.  
  36.     var _Scene_File_start = Scene_File.prototype.start;
  37.     Scene_File.prototype.start = function() {
  38.         _Scene_File_start.call(this);
  39.         this._listWindow.ensureCursorVisible();
  40.         this._listWindow.callUpdateHelp();
  41.     };
  42.  
  43.     Window_SavefileList.prototype.windowWidth = function() {
  44.         return Graphics.boxWidth;
  45.     };
  46.  
  47.     Window_SavefileList.prototype.maxCols = function() {
  48.         return 4;
  49.     };
  50.  
  51.     Window_SavefileList.prototype.numVisibleRows = function() {
  52.         return 5;
  53.     };
  54.  
  55.     Window_SavefileList.prototype.spacing = function() {
  56.         return 8;
  57.     };
  58.  
  59.     Window_SavefileList.prototype.itemHeight = function() {
  60.         return this.lineHeight() * 2;
  61.     };
  62.  
  63.     var _Window_SavefileList_callUpdateHelp =
  64.             Window_SavefileList.prototype.callUpdateHelp;
  65.     Window_SavefileList.prototype.callUpdateHelp = function() {
  66.         _Window_SavefileList_callUpdateHelp.call(this);
  67.         if (this.active && this.statusWindow) {
  68.             this.statusWindow.setId(this.index() + 1);
  69.         }
  70.     };
  71.  
  72.     function Window_SavefileStatus() {
  73.         this.initialize.apply(this, arguments);
  74.     }
  75.  
  76.     Window_SavefileStatus.prototype = Object.create(Window_Base.prototype);
  77.     Window_SavefileStatus.prototype.constructor = Window_SavefileStatus;
  78.  
  79.     Window_SavefileStatus.prototype.initialize = function(x, y, width, height) {
  80.         Window_Base.prototype.initialize.call(this, x, y, width, height);
  81.         this._id = 1;
  82.     };
  83.  
  84.     Window_SavefileStatus.prototype.setMode = function(mode) {
  85.         this._mode = mode;
  86.     };
  87.  
  88.     Window_SavefileStatus.prototype.setId = function(id) {
  89.         this._id = id;
  90.         this.refresh();
  91.     };
  92.  
  93.     Window_SavefileStatus.prototype.refresh = function() {
  94.         this.contents.clear();
  95.         var id = this._id;
  96.         var valid = DataManager.isThisGameFile(id);
  97.         var info = DataManager.loadSavefileInfo(id);
  98.         var rect = this.contents.rect;
  99.         this.resetTextColor();
  100.         if (this._mode === 'load') {
  101.             this.changePaintOpacity(valid);
  102.         }
  103.         this.drawFileId(id, rect.x, rect.y);
  104.         if (info) {
  105.             this.changePaintOpacity(valid);
  106.             this.drawContents(info, rect, valid);
  107.             this.changePaintOpacity(true);
  108.         }
  109.     };
  110.  
  111.     Window_SavefileStatus.prototype.drawFileId = function(id, x, y) {
  112.         this.drawText(TextManager.file + ' ' + id, x, y, 180);
  113.     };
  114.  
  115.     Window_SavefileStatus.prototype.drawContents = function(info, rect, valid) {
  116.         var bottom = rect.y + rect.height;
  117.         var playtimeY = bottom - this.lineHeight();
  118.         this.drawText(info.title, rect.x + 192, rect.y, rect.width - 192);
  119.         if (valid) {
  120.             this.drawPartyfaces(info, rect.x, bottom - 144);
  121.         }
  122.         this.drawText(info.playtime, rect.x, playtimeY, rect.width, 'right');
  123.     };
  124.  
  125.     Window_SavefileStatus.prototype.drawPartyfaces = function(info, x, y) {
  126.         if (info && info.faces) {
  127.             for (var i = 0; i < info.faces.length; i++) {
  128.                 var data = info.faces[i];
  129.                 this.drawFace(data[0], data[1], x + i * 150, y);
  130.             }
  131.         }
  132.     };
  133.  
  134. })();

作者: 拂千柳    时间: 2023-5-17 23:16
cenhangkai 发表于 2022-1-9 17:54
把下列代码 复制粘贴成插件,插件名字:CD
然后就可以使用了。
———————————————————— ...

请问可以商用吗
作者: 拂千柳    时间: 2023-5-19 15:58
cenhangkai 发表于 2022-1-9 17:54
把下列代码 复制粘贴成插件,插件名字:CD
然后就可以使用了。
———————————————————— ...

谢谢大佬~




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