Project1

标题: 真是服了,好不容易从XP转到MZ好好深耕,你告诉我要出HD2D? [打印本页]

作者: SailCat    时间: 2026-4-5 20:43
标题: 真是服了,好不容易从XP转到MZ好好深耕,你告诉我要出HD2D?




那你告诉我这一个月的辛苦算什么?算什么????

论坛能不能上传js文件啊,我这插件都发布不了……

  1. //=============================================================================
  2. // RPG Maker MZ - SailCat's Engine Plugin Core
  3. //=============================================================================

  4. /*:zh
  5. * @target MZ
  6. * @plugindesc [SEP] SailCat Engine Plugin的公共依赖组件
  7. * @author SailCat
  8. * @help SEPCore.js
  9. * v 1.0.0 (2026-04-06) 初版
  10. *
  11. * 本插件是SEP(SailCat's Engine Plugin)引擎的公共依赖组件。
  12. * 所有SEP系列插件均需依赖本插件,且放在本插件之后。
  13. *
  14. * 本插件实现以下功能:
  15. *
  16. * 0. 修复了 RMMZ 默认引擎的已知问题。
  17. *    a) 数据库状态变动后,Game_Actor.states() 可能返回 undefined 的问题。
  18. *    b) 数据库技能变动后,Game_Actor.skills() 可能返回 undefined 的问题。
  19. *    c) Game_Actor.discardEquip() 方法未及时刷新角色状态的问题。
  20. *    d) 数据库物品/武器/防具变动后,Game_Party.items(), weapons(), armors()
  21. *       可能返回带有 undefined 的数组的问题。
  22. *    e) 因伤害公式引用变量没有套壳,未赋值变量会整个伤害公式返回 NaN 的问题。
  23. * 1. 提供一个函数 `SEP.Flow.extend`,用于为指定类的指定方法
  24. *    添加处理函数(扩展方法),并可通过序列号指定扩展方法的执行顺序。
  25. *    每个序列号只能有一个处理函数,重复注册会覆盖先前注册的函数。
  26. *    此举旨在解决多个插件扩展同一方法时,注入顺序引发的 alias 黑洞问题。
  27. * 2. 对任何带有备注的数据,若其备注以"{"开头,以"}"结尾,则将其解析为json。
  28. *    如果解析成功,结果对象会赋给该数据对象的noteObj属性。
  29. * 3. 对没有单独备注栏的数据(敌群、动画、公共事件)添加了备注功能,
  30. *    若其名称中包含特定分隔符,其后内容视为备注。
  31. * 4. 允许对系统级数据添加全局备注,并在加载时解析。
  32. * 5. 提供一套为追加了实例变量的旧存档兼容的解决方案。
  33. * 6. 为 String 类追加了 toCamelCase 等实用转换函数,方便插件编写时找到对应。
  34. * 7. 提供一系列实用的解析和校验工具(如 evalFormula、parsePluginParams等)。
  35. *
  36. * 【工具模块 (SEP.Tools)】
  37. *   核心封装了高频利用函数,便于您编写扩展插件时直接借用:
  38. *   - evalFormula(expr, params, defaultValue, context) : 安全执行公式求值。
  39. *   - parsePluginParams(params, rules) : 支持嵌套数组和对象的深度参数解包。
  40. *   - parseNoteArray(item, tagName) : 从数据缓存内抽取 JSON 或 逗号分割数组。
  41. *   - parseNoteMap(item, tagName, defaultValue, nameResolver) :
  42. *     从数据缓存内抽取 JSON 对象,并根据 nameResolver 解析键名。
  43. *   - parseBoolean(str) : 智能识别 True/False、对/否等多种文字型布尔变量。
  44. *   - parsePluginNote(str) : 将独立的长文本字符串解析为参数树。
  45. *
  46. * 【扩展方法序列号规则】
  47. *   - 负数:前置扩展,按升序执行,返回值被忽略。
  48. *   - 0   :核心方法(唯一),可被覆盖。首次注册时,自动设为MZ引擎默认方法。
  49. *   - 正数:后置扩展,按升序执行,每个函数接收 (原始参数..., 当前结果),
  50. *           返回新结果(返回 undefined 则保持当前结果),以最后的结果为准。
  51. *
  52. * 【扩展方法注册】
  53. *   SEP.Flow.extend(classObject, methodName, sequence, handler);
  54. *
  55. * 参数说明:
  56. *   classObject  - 目标类(构造函数),例如 DataManager、Game_Actor 等。
  57. *   methodName   - 要扩展的方法名(字符串)。
  58. *   sequence     - 整数,指定执行顺序,不可重复。
  59. *   handler      - 处理函数,使用与原始方法相同的 this。
  60. *                  前置函数:接收原始参数,不返回值,但可控制流程或改参数。
  61. *                  核心函数:接收可能更新的参数,返回核心结果。
  62. *                  后置函数:接收 (原始参数..., 当前结果),可返回新结果。
  63. *                            若函数不需要修改结果,可忽略最后一个参数,
  64. *                            若处理函数不返回或返回 undefined 则链到前一处理。
  65. *
  66. * 【示例】
  67. *   // 后置扩展,基于原返回值修改
  68. *   SEP.Flow.extend(DataManager, 'onLoad', 100, function(object, result) {
  69. *       // 对 result 进行处理
  70. *       return modifiedResult;
  71. *   });
  72. *
  73. *   // 后置扩展,仅执行副作用,不关心返回值(省略 result 参数)
  74. *   SEP.Flow.extend(DataManager, 'onLoad', 200, function(object) {
  75. *       // 做一些事情,不返回或返回 undefined
  76. *       // 它会在顺序号为100的函数之后执行,不论插件安装顺序如何
  77. *   });
  78. *
  79. *   // 覆盖核心方法
  80. *   SEP.Flow.extend(DataManager, 'onLoad', 0, function(object) {
  81. *       return myOwnResult;
  82. *   });
  83. *
  84. *   // 前置扩展,不参与返回值
  85. *   SEP.Flow.extend(DataManager, 'onLoad', -50, function(object) {
  86. *       // 做一些准备
  87. *       // 它会在顺序号为-10的函数之前执行,不论插件安装顺序如何
  88. *   });
  89. *
  90. *   // 前置扩展,控制流程
  91. *   SEP.Flow.extend(DataManager, 'onLoad', -100, function(object) {
  92. *       // 做一些可能导致跳过后续流程的准备
  93. *       // 它会在顺序号为-50的函数之前执行,不论插件安装顺序如何
  94. *       return undefined;            // 不进行流程控制
  95. *       return [true, newParams];    // 以新参数依签名序替换原参数并继续执行
  96. *       return [false, dummyResult]; // 立即结束执行链处理,返回dummyResult
  97. *       return [seq, dummyResult, newParams]
  98. *       // 跳转到数值 seq 代表的执行链位置,从其后开始执行,以dummyResult
  99. *       // 代入其后首个函数的链式返回值,并以新参数依签名序替换函数原参数
  100. *   });
  101. *
  102. * 【追加实例变量存档兼容】
  103. *   在插件中为Game系等能存档的类追加实例变量时,需使用方法
  104. *   SEP.Compatibility.addProperty(target, identifier, initValue, fixMethod);
  105. *
  106. * 参数说明:
  107. *   target     - 目标对象,一般在初始化函数中注册实例变量时,传入this。
  108. *   identifier - 标识符,存储实例变量的标识名(字符串)。
  109. *   initValue  - 初始化值,该值将在追加后立即赋值给变量,类型自动识别。
  110. *   fixMethod  - 可选,加载旧存档时调用的额外修复函数,不能用箭头函数!
  111. *                额外修复函数中的this必须指向需要修复的对象本身。
  112. *                额外修复函数会在每次加载存档时,检查调用需求,具体为:
  113. *                - 若无此实例变量,或有但类型不符,会重新赋值并调用该函数;
  114. *                - 若有此实例变量,且为引用类型,仅调用函数;
  115. *                - 若有此实例变量,且为简单数值类型,不调用函数。
  116. *
  117. * 该指令会同时为实例变量设置默认值,故一般在 initMembers 或类似方法中调用。
  118. *
  119. * 【示例】
  120. *   SEP.Flow.extend(Game_Battler, 'initMembers', -500, function() {
  121. *       SEP.Compatibility.addProperty(this, "_newParam", [], function() {
  122. *           this._newParam.fill(0);
  123. *       });
  124. *   });
  125. *
  126. * fixMethod 函数会在 DataManager.correctDataErrors (标准修复位)中调用,
  127. * 请确认在处理修复逻辑前,所引用的相关对象已初始化($game系对象已建立)。
  128. * 函数应专注于修复当前对象,可应用$data系的数据,但不建议指向其他同类对象。
  129. *   
  130. * 本插件必须加载于所有其他SEP引擎插件之前。
  131. * 不建议在本插件与其他SEP引擎插件之间,插入其他的第三方插件。
  132. * 但在本插件前或所有SEP插件之后使用第三方插件,则对功能无影响。
  133. *
  134. * @param noteDelimiter
  135. * @text 备注分隔符
  136. * @desc 无独立备注栏的数据(如动画、敌群),其名称中用于切分备注的特殊符号。
  137. * @default //
  138. *
  139. * @param systemNote
  140. * @text 系统全局备注
  141. * @type note
  142. * @desc 弥补全数据库“系统”项没有备注栏的问题。
  143. * 填写的内容将作为 $dataSystem 的系统级备注进行解析。
  144. * @default
  145. *  
  146. */
复制代码

作者: 89444640    时间: 2026-4-6 10:33
所以不要半路换引擎嘛,旧房子设计不合理这改改哪改改,造价比拆了重新建一栋新房子便宜多了。
作者: 无忧谷主幻    时间: 2026-4-6 12:47
这就是我为什么明知道XP性能低下,却依然不换的原因
换了之后还要花时间熟悉功能
作者: 阿尔卑斯    时间: 2026-4-7 02:13
你是玩引擎还是做游戏?
作者: 写给妖精的情诗    时间: 2026-4-7 09:12
手上的游戏用了哪个引擎就用哪个做完,后续的游戏再考虑新引擎,除非旧引擎做着不顺手,或者是觉得新引擎太符合心意了。
如果对游戏引擎和各种绘画之类的工具选择困难症的话,看着steamdb.info/tech/这个网页的几十上百个游戏引擎和zhihu.com/tardis/zm/art/642818025?source_id=1005这个网页的几十个画图软件那不是麻了。
作者: Arrose    时间: 2026-4-7 12:17
我一直都是打成压缩包来传
作者: 丿梁丶小柒    时间: 2026-4-9 09:27
活到老学到老不是
作者: 习惯就好    时间: 2026-4-9 15:37
本帖最后由 习惯就好 于 2026-4-12 19:22 编辑

刚去搜了一下,好像是画质能得到极致提升的东西,
有点期待,我也想要个能编辑3d的引擎试试
作者: Hketket    时间: 7 天前
没必要跟风吧?
又不是没有人学到老用到老,更何况半途换引擎游戏永远也做不好。
作者: Hketket    时间: 7 天前
习惯就好 发表于 2026-4-9 15:37
刚去搜了一下,好像是画质能得到极致提升的东西,
有点期待,我也想要个能编辑3d的引擎试试 ...

前提是不像Unite那样还要下一个别的引擎,那样的话还不如用以前的版本。
至少个人不太喜欢后台挂两个引擎的同时还要注册+网络.......
作者: zeniusi193    时间: 6 天前
學的時候還是UE3
現在自己的項用在UE4
上班在用UE5
要準備去看UE6
作者: fux2    时间: 6 天前
我的建议是继续MZ,不要考虑这新鲜玩意儿
作者: leliel    时间: 3 天前
不要跟最新,用那个最稳定的
作者: 穗群原的绅士    时间: 前天 00:27
本来想点进来嘲笑的,看到楼主是谁沉默了
不过这玩意刚出肯定不好用
作者: xiaolu0415    时间: 前天 09:57
喔,那看看效果如何再作决定。搞成3D不知道怎么样
作者: SailCat    时间: 前天 17:17
fux2 发表于 2026-5-29 20:46
我的建议是继续MZ,不要考虑这新鲜玩意儿

已经决定继续MZ了,SEP插件已经扩充到25个
作者: 卡奥尼特    时间: 昨天 10:35
还是继续用MZ吧,而我用的是VA(RPG Maker VX Ace),没什么影响。
RMU2U我就不考虑了
作者: 1176140663    时间: 10 小时前
没有社区支持的话,个人开发者可能还要等些时间让新的rpgmaker社区成熟吧。还有3D+2D风格的rpg开发引擎不是早就有了吗




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