Appearance
Core Engine - 核心引擎
Core Engine VisuStella MZ - Yanfly.moe Wiki
核心引擎插件用于修复 RPG Maker MZ 源代码中可能存在的漏洞,并赋予游戏开发者对 RPG Maker MZ 各项功能的更多控制权,涵盖游戏机制、美学设计以及各种便捷性改进。
功能包括(但不限于)以下内容:
- 修复 RPG Maker MZ 基础代码中存在的漏洞。
- 为脚本调用相关的事件命令添加安全机制。
- 提供大量可通过插件参数激活的便捷性设置。
- 控制游戏中使用的各种文本颜色。
- 更改携带金币的最大数量,为其添加图标,并添加重叠部分的说明文字。
- 在游戏启动时预加载图像。
- 为游戏中的菜单添加特定的背景图像。
- 在屏幕顶部或底部会出现一个按钮辅助窗口,详细说明菜单中各个按钮的功能。此功能可以关闭。
- 选择要在菜单中显示哪些游戏内战斗角色参数(例如攻击力、防御力、敏捷等),并设定它们的最大值,同时添加大量注释标签,以便更好地控制通过装备、状态和其他特性对象获得的参数、X 参数和 S 参数加成。
- 控制 UI 对象的显示方式(例如菜单按钮、取消按钮、左右角色切换按钮)。
- 如果战斗分辨率更高,则重新定位角色和敌人。
- 允许职业名称和昵称在显示时支持文本代码。
- 确定窗口在游戏中的行为方式,例如是否会遮挡其他窗口、行高属性等等。
重要更新:漏洞修复
此插件旨在修复 RPG Maker MZ 中尚未解决或未处理的各种漏洞。以下是此插件已修复的漏洞列表:
普通攻击技能特性

敌人不受攻击技能特性的影响。这意味着,即使敌人的攻击技能特性改变,只要他们拥有攻击动作,就会一直使用攻击。此插件将对此进行调整,使攻击技能能够根据敌人攻击技能特性的设置而变化。
自动战斗角色的技能使用
如果拥有自动战斗能力的角色可以使用某个技能,但无法使用该技能的类型,则该角色在自动战斗中仍然可以使用该技能,即使在手动输入时无法使用该技能。
自动战斗攻击绕过封印
默认情况下,如果攻击技能被特性封印,且角色拥有自动战斗能力,则该技能仍然可以通过自动战斗使用。此问题现已修复,攻击能力被封印的角色将无法通过自动战斗进行攻击。
自动战斗锁定
CoreEngine AutoBattleLockUp.png
如果自动战斗角色遇到防御力/魔法防御力过高的敌人,则该角色将无法进行任何攻击。这可能会导致游戏卡顿和软锁。此插件将更改此行为,使其默认进行普通攻击。
新游戏后自动保存
通常情况下,通过“新游戏”选项开始新游戏时,不会触发自动保存。但是,如果您开始新游戏或加载已保存的游戏,然后进入游戏结束画面,返回标题画面,再开始新游戏,则会自动触发保存。核心引擎现在会修复此问题,阻止自动保存的发生。
战斗强制结束行动导致崩溃
根据各种情况,当前激活的战斗角色可能会因多种原因被从战斗系统中移除。但是,如果恰好目标也被移除,且仍有剩余行动,则会导致游戏崩溃。此插件将阻止这种情况的发生。由 Olivia 修复。
调试控制台刷新错误
在调试控制台(开发者工具)打开时按 F5 刷新,某些图形将无法正常加载。这个问题从 RPG Maker MZ 1.5.0 版本更新后开始出现,目前图像加载代码已回滚至 1.4.4 版本,该版本是最后稳定的版本。
手柄重复输入
手柄输入清除后没有延迟,会立即触发下一个输入帧。这会导致某些 RPG Maker MZ 菜单出现问题,因为在这些菜单中,输入必须清除,因为下一个帧会再次触发输入。此插件修改了此机制,使每次清除输入后,手柄输入再次被注册之前,都会有一个与键盘清除帧数相同的延迟。
战斗精灵不可见

如果在战斗中移除一名队员,然后将该队员重新添加到同一位置,则其精灵会显示为不可见。VisuStella 核心引擎将修复此问题,防止其再次发生。
Window_Message 窗口的立刻显示文本差异
http://www.yanfly.moe/wiki/File:CoreEngine_InstantTextBug.png
Window_Message 窗口在逐个绘制字母和即时显示文本时,文本显示效果有所不同。使用默认字体时这种差异并不明显,但使用 Arial 等字体时则非常明显。此错误是由于 Bitmap.measureTextWidth 方法对每个字母而非每个单词都使用四舍五入的值造成的。Core Engine 将提供一个错误修复程序,专门针对此问题进行修复,使 Window_Message 窗口在确定每个字母的宽度时不再使用任何四舍五入的值,无论文本是否即时显示。此更改仅影响 Window_Message 窗口,不会影响任何其他窗口,以避免产生意外的副作用。
插件参数 > 优化设置 > 其他 > 字体宽度修复
移动图片,原点差异

如果先使用“左上角”设置“显示图片”事件命令,然后使用“居中”设置“移动图片”事件命令,RPG Maker MZ 原本会直接跳转到新的原点,而不会进行平滑过渡。此插件可以实现原点之间的平滑过渡。
过度保护的掩护

当生命值极低的友方单位被友方非必定命中技能(例如治疗或增益)锁定时,如果另一名友方单位处于替身状态,则另一名友方单位会“保护”原本被锁定的友方单位并承受治疗或增益效果。
现在,对于任何作用范围为友方单位的技能,替身状态都不会触发。
队伍成员切换后技能列表窗口仍然激活
如果技能列表窗口处于激活状态(即玩家可以移动光标),并且当前查看的队伍成员通过按键命令切换,那么在之前的 RPG Maker MZ 中,即使光标暂时隐藏,该窗口仍然会保持激活状态。按下方向键后,光标会重新出现,技能类型窗口和技能列表窗口都会同时激活,这可能会导致许多潜在问题。
移除和销毁精灵图导致的崩溃
现在,对于正在被移除和销毁的精灵图,会进行纹理检查以防止崩溃。万一有人通过脚本调用创建精灵图并再次通过脚本调用将其移除,则可能会出现崩溃。
状态窗口名称垂直裁剪问题
在战斗状态窗口中,当显示角色名称时,用于显示名称文本的位图无法垂直延伸到顶部,导致小写字母“Q”和“G”等被裁剪掉,难以区分。Core Engine 会通过扩展位图来解决这个问题,留出足够的空间。此修复由 Irina 完成。
结束清除效果
在 RPG Maker MZ 中,在场景切换时(例如从地图场景切换到战斗场景)请求动画可能会导致崩溃。这是因为动画队列不会立即启动,并且很可能会为该场景注册错误的动画目标。此插件会在场景结束时强制清除所有已注册的动画和气泡效果,以防止崩溃。
计时器精灵
默认情况下,RPG Maker MZ 会将 Sprite_Timer 添加到其精灵集中,无论是地图还是战斗场景。但这存在一个主要问题:当精灵集受到滤镜、缩放和/或模糊效果的影响时,计时器精灵的清晰度会受到影响,导致玩家难以理解其信息。为了确保计时器精灵不会被其他元素遮挡,核心引擎会将其添加到父场景而不是精灵集中。
无法使用的战斗道具
如果队伍中任何成员能够在战斗中使用某个道具,那么所有成员都能使用该道具,即使该成员原本应该无法使用该道具。现在,战斗道具的可用状态将逐个检查,而不是以队伍整体为单位进行检查。
水面图块错误
在 RPG Maker MZ 1.5.0 及更高版本和 1.6.0 及更高版本中,如果您从头开始创建图块集,似乎会出现一个新的错误!该错误会导致许多图块在无意中变成水面图块。您可以通过关闭项目中的所有插件,将船只放置在通常为地面的图块上,然后观察船只如何穿过这些图块来发现问题。
有两种方法可以解决这个问题。由于此问题涉及图块集 JSON 数据,我们无法通过插件代码进行修复。不过,有一些方法可以绕过这个问题,使正确的水体标志出现在需要的位置。
将一个正常运行的图块集复制到当前出现问题的图块集上,并重新应用图块属性,例如可通行性、地形标签等。这将确保水体可通行性图块被正确复制。
如果您使用的是 RPG Maker MZ 1.5.0 或更高版本,请选择一个正常运行的图块集(通常是新建项目时预先存在的图块集),单击“复制页面”按钮,然后转到出现问题的图块集并单击“粘贴页面”。您需要重新应用其他属性,例如通行能力和地形标签,但水面图块标记现在应该可以正常工作了。
插件本身无法修复此问题,因为标记数据非常敏感,不应在游戏过程中进行修改,否则插件所做的更改可能与预期设置不符。
但是,此插件在遇到此类图块时也会发出警报消息。请注意此消息,并执行上述两个步骤之一来修复问题。
窗口箭头精灵撕裂
如果 RPG Maker MZ 中的窗口对象的宽度为奇数,则窗口的箭头元素将位于半个像素上,导致箭头看起来模糊,并且会出现精灵撕裂问题。现在已通过将宽度值四舍五入到最接近的整数来修复此问题。
窗口客户端区域缩放错误
如果窗口的缩放值不是 1.0,则客户端区域(可交互部分)将无法正确缩放,并出现裁剪现象。现在这个问题已通过调整客户区大小以适应窗口的缩放值并向上取整到最接近的整数来解决。
窗口皮肤溢出
此错误已在 RPG Maker MZ v1.3.0 及更高版本的核心脚本中修复。
自 v1.2.0 版本更新以来,Window.prototype._refreshBack 的帧值已从 96 更改为 95。这会导致窗口皮肤溢出窗口的预期边界。核心引擎现已还原此更改,以防止溢出效果的发生。
主要变更:新增硬编码功能
此插件为 RPG Maker MZ 的功能添加了一些新的硬编码功能。以下是这些功能的列表。
滚动联动图片
如果远景图的文件名以感叹号 (!) 开头,则该效果会与地图滚动联动。现在图片也遵循同样的规则。如果图片的文件名以感叹号 (!) 开头,则该图片也会与地图滚动联动。
移动路线脚本
如果移动路线脚本命令中的代码执行失败,游戏不会崩溃,而是会像什么都没发生一样,只是在控制台中显示错误原因。
脚本调用安全机制
如果条件分支、控制变量和/或脚本调用中的代码无法激活,游戏不会崩溃,而是会像什么都没发生一样,只是在控制台中显示错误原因。
数字分组
您可以更改游戏中数字的显示和转换方式。您可以通过进入插件管理器 > VisuMZ_0_OptionsCore > 便捷设置 > 数字分组,然后根据需要启用或禁用此选项。
数字分组将遵循插件参数设置的国家/地区规则。如果设置为默认值“en-US”,则 1234567.123456 将变为 1,234,567.123456。将其设置为“es-ES”,则结果将变为 1.234.567,123456。
此处使用 JavaScript 的 Number.toLocaleString() 函数,因此会遵循其自身的规则。这意味着如果小数点后有尾随零,则会将其截断。例如,123.45000 将变为 123.45。超过 6 位小数的数字将被四舍五入。例如,0.123456789 将变为 0.123457。
为了确保文本代码的准确性,方括号 [ 和 ]、< 和 > 之间的数字将不进行数字分组。例如,I[1234] 将保持为 I[1234]。
如果您想输入一个不进行数字分组的数字,请使用 将其括起来。输入 1234567890 将得到 1234567890。
显示滚动文本,新增功能
只要安装了 VisuStella MZ 核心引擎,“显示滚动文本”事件命令现在就拥有了新增功能。如果游戏开发者在滚动文本中插入“// Script Call”(不带引号),则整个“显示滚动文本”事件命令将作为一个巨大的脚本调用事件命令运行。
添加此功能的原因是,“脚本...”事件命令最多只能包含 12 行代码。这意味着对于任何超过 12 行代码的脚本调用,都无法通过常规方式实现,因为每个脚本调用都会作为单独的实例运行。
通过重新定义“显示滚动文本”事件命令,使其能够作为扩展的“脚本...”事件命令运行,现在可以更轻松地实现此功能,并减少代码行数。
如果“显示滚动文本”事件命令的内容中不包含“// Script Call”,则不会出现此效果。
注释标签
角色相关注释标签
参数限制可以在插件参数中调整,但这并不能解除修改角色初始等级或最高等级超出编辑器限制的功能。要实现此操作,必须使用注释标签。
职业相关标签
由于标签系统允许角色等级超过 99 级,您可能希望某些职业在等级超过 99 级后也能学习某些技能。
敌人相关注释标签
敌人现在有了等级。等级本身没有任何其他作用,它只是用来存储数值。这样,等级就可以用于伤害公式(例如 a.atk - b.level)而不会导致任何错误。要给敌人添加等级,请使用以下注释标签。这些注释标签还允许您突破数据库的限制,调整基础参数、经验值和金币数量。
动画相关注释标签
RPG Maker MZ 中的动画由 Effekseer 制作,动画系统也进行了改进。但是,现在动画只能以目标为中心,无法附加到头部或脚部。请在数据库中动画的名称中添加以下标签以调整其位置。
提升游戏体验的注释标签
默认情况下,RPG Maker MZ 在随机遭遇战结束后不提供最小遭遇步数限制。这意味着玩家在结束一场战斗后,只需走一步即可立即进入下一场战斗。“最小遭遇步数”这一提升游戏体验的改进功能允许您在战斗之间设置缓冲步数,让玩家有喘息的空间。
基本、X 和 S 参数相关注释标签
战斗者的参数(或一些开发者所称的属性)决定了战斗者的表现。这些设置允许您以更可控的方式改变行为并提升特性对象。
注:X参数和S参数分别指的是追加能力值和特殊能力值
图块集相关注释标签
JavaScript注释标签:基本、X 和 S 参数
以下是为具备 JavaScript 知识的用户准备的注释标签。这些注释标签主要针对基础参数、X 参数和 S 参数。
战斗设置相关注释标签
无论战斗系统的默认设置如何,这些标签都会更改战斗设置。将这些标签插入地图的注释框或部队名称中即可生效。如果特定战斗同时存在这两种标签,则优先使用部队名称中的设置。
现在敌群页面(即使未运行)的任何注释中, 该标签就会生效。



