- 累计送礼:
- 0 个
- 累计收礼:
- 1 个
TA的每日心情 | 开心 2026-7-12 04:10 |
|---|
签到天数: 209 天 连续签到: 2 天 [LV.7]常住居民III

管理员
  
- VIP
- 7
- 卡币
- 58751
- OK点
- 16
- 推广点
- 0
- 同能卷
- 50
- 积分
- 68660


|
从日志记录来看,前后花了10天时间,ruby->js那可太麻烦了,而且为了适配MZ的新引擎特性,移植中做了相当多的改动
先预告一下,放出完整的说明文档,2天后会正式上传工程(正好我也需要一点时间来做模板工程、截图等)
主要是也收集一下MZ这边的制作者们,都需要哪些对话框增强特性,我提供的特性够不够,不够的话,我还可以加
JAVASCRIPT 代码 - //=============================================================================
- // RPG Maker MZ - SailCat's Extended Message UI
- //=============================================================================
- /*:zh
- * @target MZ
- * @plugindesc [SEP] 扩展消息界面
- * 统合选项列表和数值输入到消息窗口,并极大增强消息窗口的控制能力。
- * @author SailCat
- * @help SEPUIMessageEx.js
- * v 1.0.0 (2026-07-09) 初版
- *
- * 本插件依赖 SEPUICore.js 1.0.0 以上版本。
- *
- * 功能概览:
- *
- * 1. 可将选项列表和数值输入统合到消息窗口内部,统一界面风格。
- * 2. 增补支持30余项转义文本指令,用于宏替换游戏数据文字和控制窗口行为。
- * a) 角色/队员/敌人的属性值
- * b) 职业/技能/物品/武器/防具/状态/敌人/敌群/图块的名称
- * c) 任意地图名称(来自地图信息表)或当前地图名称(来自地图名字段)
- * d) 属性/武器类别/防具类别/装备类型/技能类型的名称
- * e) 公式计算值
- * f) 文本用语(TextManager)中的名称
- * g) 指针式引用变量值
- * h) 支持多种文字格式:上下标、下划线、删除线、制表位、颜色、对齐等。
- * 3. 可拓展选项列表支持的最大选项数,最高可至12项。
- * 4. 消息窗口可以吸附到说话角色或事件上,显示fuki箭头并自动跟随移动。
- * 5. 可以通过插件指令开启或关闭长文章功能,连缀相邻的消息指令形成长文章。
- * 6. 支持在消息窗口两侧显示角色立绘。
- * 7. 支持根据说话人不同,自动切换窗口皮肤和fuki箭头样式。
- * 8. 可以通过插件指令设置消息窗口打字播放音效。
- *
- * 使用说明:
- *
- * 1. 首先开启本插件(需要SEP UI核心插件1.0.0以上版本)。
- * 2. 完成插件参数配置中的统合模式、最大选项数、颜色和排版相关配置等。
- * 3. 使用增补支持的转义文本指令,对文本内容进行宏替换和格式化操作。
- * 具体支持的转义文本指令列表,请参考下方文档说明。
- * 4. 开启长文章后,相邻的消息指令如果窗口、头像、姓名均一致,则自动连缀。
- * 5. 在选择项指令中使用\/拆分子项,并可将选中子项序号存入变量以便后续使用。
- *
- * 注意事项:
- *
- * 1. 统合模式下,不再创建选项列表/数值输入子窗口,改为在消息窗中操作。
- * 2. 原生模式下,行为与引擎默认一致。
- * 受原生模式的窗口尺寸与分辨率限制,最大可见选项数可能受限。
- * 3. 当显示角色立绘时,消息窗口会被固定在屏幕底端,吸附及事件调整位置无效。
- * 但是,使用\@[-2]将窗口全屏无边化有效,只是会遮挡立绘。
- * 4. 当显示角色立绘时,消息窗口会被缩小到屏幕的一半宽度,但最小可保证显示
- * 游戏系统配置中“脸图显示时消息窗口宽度”的文字数。
- * 5. 为符合用户习惯,部分转义文本指令在有无参数时行为有别,请正确使用。
- * 6. fuki箭头可以单独指令图片文件,若未指令,则会从窗口皮肤中自动检测。
- * 窗口皮肤从(120, 36)到(144, 60)的区域若有相关图案,裁切上下两半使用。
- * 若仍未检测到,会切割窗口边框四角图案,拼接成fuki箭头图案使用。
- * 7. 开启长文章模式时,若连缀了文章,则消息不会再自动收入选择项、数值输入
- * 和物品选择,无论是否为统合模式。这是因为消息窗口本身被加高,可能造成
- * 显示空间不足或遮挡。若需令选择项与前面的消息同屏显示,请先关闭长文章。
- * 8. 被\/拆分的选择项不同子项,在被选中后会进入原本的同一选项的分支,例如:
- * 显示选择项:选项1, 选项2a\/选项2b, 选项3, 选项4a\/选项4b\/选项4c
- * 选项1的场合
- * // 事件指令列表1
- * 选项2a\/选项2b的场合
- * // 事件指令列表2
- * 选项3的场合
- * // 事件指令列表3
- * 选项4a\/选项4b\/选项4c的场合
- * // 事件指令列表4
- * 分歧结束
- * 在显示选择项时,所有子项会被打散,窗口列出共计7个选项,每条一行:
- * 选项1, 选项2a, 选项2b, 选项3, 选项4a, 选项4b, 选项4c
- * 若选中选项2a或选项2b,均会进入事件指令列表2。此时,通过存入变量可以
- * 判断选中的是2a(值为1)还是2b(值为2)。
- * 如果没有指定子项存储的变量,则具体的子项信息会丢失,无法判断。
- * 9. 使用插件指令更改窗口皮肤,优先于按照说话人名称映射皮肤。
- * 10.按照说话人姓名映射皮肤时,说话人姓名需与插件配置中注册的名称精确一致,
- * 包括大小写、空格(含前后空格)、标点等,均需完全一致,否则无效。
- * 11.若要关闭打字音效,使用插件指令将SE文件名设置为空即可。
- * 快速显示的消息,会直接显示出来,不会触发打字音效。
- *
- * 【增强版转义文本指令集,含MZ原生指令,适用于所有drawTextEx方法绘制的文字】
- *
- * 信息替换类:
- * 指令 参数示例 说明
- * \\ (无参数) 显示反斜杠
- * \N[角色ID] \N[1] 显示角色名称
- * \N[角色ID.] \N[1.] 显示角色昵称
- * \N[角色ID.属性名] \N[1.mhp] 显示角色的指定属性值
- * \P[队员序号] \P[1] 显示队员名称
- * \P[队员序号.] \P[1.] 显示队员昵称
- * \P[队员序号.属性名] \P[1.mhp] 显示队员的指定属性值
- * \E[敌人序号] \E[1] 显示敌人名称
- * \E[敌人序号.属性名] \E[1.mhp] 显示敌人的指定属性值
- * - 在战斗中,敌人序号指敌人在当前敌群中的顺序号,从1开始
- * - 在战斗外,敌人序号指敌人自己的数据ID编号
- * \V[变量ID] \V[1] 显示变量值
- * \V[\V[变量ID]] \V[\V[1]] 显示指针式引用变量值,可多次嵌套
- * - 由于\V指令会先于其他所有指令被替换,故可用变量来指定其他指令的参数
- * \%[公式] \%[1+2*3] 显示公式计算值
- * \%{公式} \%{1+2*3} 同上,支持公式中有方括号的情况
- * - 公式中可直接引用以下变量和方法:
- * v[变量ID] 变量值
- * s[开关ID] 开关值
- * ss[独立开关键] 独立开关值
- * p 等同于$gameParty
- * l 等同于$gamePlayer
- * a(角色ID) 等同于$gameActors.actor(角色ID)
- * b(敌人ID) 等同于$gameTroop.enemy(敌人ID)
- * ev(事件ID) 等同于$gameMap.event(事件ID)
- * \G (无参数) 显示货币单位
- * \T[文本用语键] \T[attack] 显示文本用语中的指定名称
- * \I[图标ID] \I[1] 显示指定图标
- * \M[地图ID] \M[1] 显示指定地图名称(来自地图信息表)
- * \M (无参数) 显示当前地图名称(来自地图名字段)
- * \CL[职业ID] \CL[1] 显示指定职业名称
- * \SK[技能ID] \SK[1] 显示指定技能名称(带有图标)
- * \IT[物品ID] \IT[1] 显示指定物品名称(带有图标)
- * \WE[武器ID] \WE[1] 显示指定武器名称(带有图标)
- * \AR[防具ID] \AR[1] 显示指定防具名称(带有图标)
- * \SA[状态ID] \SA[1] 显示指定状态名称(带有图标)
- * \TR[敌群ID] \TR[1] 显示指定敌群名称
- * \TI[图块ID] \TI[1] 显示指定图块名称
- * \EL[属性ID] \EL[1] 显示指定属性名称
- * \WT[武器类别ID] \WT[1] 显示指定武器类别名称
- * \AT[防具类别ID] \AT[1] 显示指定防具类别名称
- * \ET[装备类型ID] \ET[1] 显示指定装备类型名称
- * \ST[技能类型ID] \ST[1] 显示指定技能类型名称
- * \EV[事件ID] \EV[1] 显示指定事件名称
- * \ [重复次数] \ [3] 显示指定数量的连续空格
- * \,[数字] \,[100403] 显示逗号分隔的数字
- * - 在中文、日语、韩文环境下,100403显示为10,0403
- * - 在其他语言环境下,100403显示为100,403
- * \#[数字] \#[123] 显示指定数字的本地语言化表达
- * - 例如,在中文环境下,123显示为一百二十三
- *
- * 颜色控制类:
- * 指令 参数示例 说明
- * \C[颜色序号] \C[1] 改变文字颜色,按系统调色板序号
- * \C[颜色值] \C[#846DC5] 改变文字颜色,按CSS颜色值
- * \C[颜色名] \C[red] 改变文字颜色,按CSS基本颜色名
- * \C[rgb(r,g,b)] \C[rgb(0,0,0)]改变文字颜色,按RGB颜色值
- * \O[透明度] \O[128] 改变文字透明度,按0~255的数值
- * 若启用扩展颜色支持,则还支持:
- * \C[hsl(h,s%,l%)] \C[hsl(0,100%,50%)] 改变文字颜色,按HSL颜色值
- * \C[扩展颜色名] \C[aliceblue] 改变文字颜色,按CSS扩展颜色名
- * 若启用透明颜色支持,则还支持:
- * \C[rgba(r,g,b,a)] \C[rgba(0,0,0,0.5)] 改变文字颜色,按RGBA颜色值
- * \C[hsla(h,s%,l%,a)] \C[hsla(0,100%,50%,0.5)] 改变文字颜色,按HSLA颜色值
- * \C[带透明度的颜色值] \C[#FF808080] 改变文字颜色,按带透明度的HEX颜色值
- * \C[transparent] \C[transparent] 将文字色变为透明
- *
- * 格式控制类:
- * 指令 参数示例 说明
- * \FF[字体] \FF[Arial] 改变文字字体
- * \FS[字号] \FS[24] 改变文字字号
- * \{ (无参数) 将文字字号增加12(不超过96)
- * \} (无参数) 将文字字号减少12(不低于24)
- * \PX[X坐标] \PX[100] 改变下一个字的起始X坐标
- * \PY[Y坐标] \PY[100] 改变下一个字的起始Y坐标
- * \JX[X坐标增量] \JX[10] 使下一个字的打印位置横向平移
- * \JY[Y坐标增量] \JY[10] 使下一个字的打印位置纵向平移
- * \J[Tab次数] \J[2] 使下一个字的打印位置跳跃2个Tab空格
- * - Tab空格位置由“制表符停靠点”参数配置,未指定或超出时每4个字符停靠一次
- * \] (无参数) 本行剩余文字靠另一侧对齐
- * - 一般情况为向右对齐,若为从右向左打印的语言,则为向左对齐
- * \[ (无参数) 本行剩余文字居中对齐
- * \: (无参数) 下一行文字缩进至这个位置开始显示
- * \` (无参数) 下一行文字取消缩进,从头开始显示
- * \/ (无参数) 手动换行
- * \B[粗体文字] \B[强调] 将括号内文字变为粗体
- * \I[斜体文字] \I[引用] 将括号内文字变为斜体
- * - 斜体文字不能为纯数字,否则会被引擎识别为图标变换
- * \BI[粗斜体文字] \BI[着重] 将括号内文字变为粗斜体
- * \*或\B (无参数) 切换粗体,使用一次打开,再次关闭
- * \_或\I (无参数) 切换斜体,使用一次打开,再次关闭
- * \U[下划线文字] \U[关键词] 将括号内文字加上下划线
- * \S[删除线文字] \S[删除] 将括号内文字加上删除线
- * \U[下划线型] \U[2] 为后续文字加上指定形状的下划线
- * - 下划线型参数为0~10,表示不同的下划线样式,其中0为取消下划线:
- * 1: 单实线 2: 双实线 3: 粗实线 4: 点虚线 5: 短虚线
- * 6: 长虚线 7: 点划线 8: 双点划线 9: 波浪线 10: 着重号
- * \S[删除线型] \S[3] 为后续文字加上指定形状的删除线
- * - 删除线型参数为0~10,表示不同的删除线样式,其中0为取消删除线:
- * 1: 单实线 2: 双实线 3: 粗实线 4: 粗块线 5: 全遮挡
- * 6: 示亡框 7: 横阴影 8: 竖阴影 9: 网格影 10: 字加框
- * \SP[上标] \SP[2] 将括号内文字以上标式样显示
- * \SB[下标] \SB[2] 将括号内文字以下标式样显示
- * \~ (无参数) 重置字体样式为默认设置
- *
- * 【增强版转义控制指令集,含MZ原生指令,仅适用于对话框窗口】
- *
- * 显示流控制类:
- * 指令 参数示例 说明
- * \. (无参数) 暂停等待0.25秒
- * \; (无参数) 暂停等待0.5秒
- * \| (无参数) 暂停等待1秒
- * \Z[帧数] \Z[60] 暂停等待指定帧数(1秒=60帧)
- * \> (无参数) 立即显示剩余文字
- * \< (无参数) 取消立即显示剩余文字
- * \^ (无参数) 消息结束后立即关闭窗口
- * \^[帧数] \^[60] 消息结束后延迟指定帧数关闭窗口
- * \K[速度] \K[4] 改变消息文字的显示速度,越大越慢
- * \SE[系统音效编号] \SE[1] 播放指定的系统音效(编号1-24)
- * \SE[音效文件名] \SE[Fire1] 播放指定的系统音效(文件名)
- *
- * 外观控制类:
- * 指令 参数示例 说明
- * \$ (无参数) 显示金钱窗口
- * \W[变量ID] \W[1] 显示指定ID的变量窗口
- * \@[事件ID] \@[1] 将对话框吸附到指定ID的事件上
- * \@[0] \@[0] 将对话框吸附到主角上
- * \@[-1] \@[-1] 取消对话框吸附,恢复默认位置
- * \@[-2] \@[-2] 将对话框全屏无边化,覆盖整个画面
- * \@[-3] \@[-3] 将对话框缩小至刚好容纳文字的大小
- * \@[N+角色ID] \@[N1] 将对话框吸附到指定ID的角色上
- * - 如角色在队,吸附到主角队列的对应人物上,如角色不在队或未开启队列行进
- * 则吸附到主角上
- * \@[P+队员序号] \@[P1] 将对话框吸附到指定序号的队员上
- * - 如开启队列行进,吸附到对应位置的人物上,若超出队列人数则吸附到主角上
- * \@[E+敌人序号] \@[E1] 将对话框吸附到指定序号的敌人上
- * - 仅限战斗中使用,敌人序号指敌人在当前敌群中的顺序号,从1开始
- * - 以上吸附格式均可追加水平和垂直偏移像素值,如 \@[1,10,-20]
- * \@ (无参数) 对话框智能吸附
- * - 智能吸附的检测按照以下优先级进行:
- * a) 若当前对话指令有脸图,且与角色对应,则吸附到该角色上
- * b) 若当前对话指令有姓名,且与角色对应,则吸附到该角色上
- * c) 若当前对话指令有姓名,且与指令所在的事件名称对应,则吸附到该事件上
- * d) 战斗中,若当前对话指令有姓名,且与敌人对应,则吸附到该敌人上
- * e) 以上均不满足,则吸附到主角上
- * - 若打开插件参数的“自动吸附”配置,则智能吸附全时生效,无需显式指令
- * - 对话框吸附生效(不是-1或-2的值)时,对话框会缩小到刚好容纳文字的宽高
- * 并显示指向吸附对象的fuki箭头,且会始终跟随对象移动
- * 若吸附对象在屏幕可视范围外,对话框显示于所在方向的角上,fuki箭头外指
- * \L[立绘文件名] \L[Actor1] 显示指定立绘图片在左侧
- * \L[角色ID] \L[1] 显示指定角色的立绘图片在左侧
- * - 以上格式均可追加水平中心点和垂直偏移像素值,如 \L[Actor1,120,-10]
- * \R[立绘文件名] \R[Actor1] 显示指定立绘图片在右侧
- * \R[角色ID] \R[1] 显示指定角色的立绘图片在右侧
- * - 以上格式均可追加水平中心点和垂直偏移像素值,如 \R[Actor1,120,-10]
- * - 若要用角色ID指定立绘,需安装官方插件ActorPictures.js并指定角色立绘
- * - 立绘文件需放在 img/pictures/ 目录下
- * - 显示立绘时,消息窗口会被固定在屏幕底端,事件指令中的调整和吸附均无效
- *
- * 【fuki箭头图片素材规格说明】
- * fuki箭头图片素材的规格为,宽度建议为12-24像素,高度须为偶数像素。
- * 其上部1/2的区域,作为指向上方的fuki箭头;
- * 其下部1/2的区域,作为指向下方的fuki箭头。
- * 当需要fuki箭头指向左侧或右侧时,会自动将图片旋转90度使用。
- *
- * 本插件在MIT许可证下发布。
- * [url]https://opensource.org/licenses/mit-license.php[/url]
- *
- * @base SEPUICore
- * @orderAfter SEPUICore
- *
- * @param unifiedMode
- * @text 统合模式
- * @desc 选项和数值输入的展示方式。
- * @type select
- * @option 统合到消息窗口
- * @value auto
- * @option 原生独立窗口
- * @value native
- * @default auto
- *
- * @param maxVisibleChoices
- * @text 最大可见选项数
- * @desc 解放选项列表的最大可见选项数,最高支持12项。
- * 项数会受到屏幕高度的限制,非统合模式原始分辨率约为9项。
- * @type number
- * @min 6
- * @max 12
- * @default 6
- *
- * @param allowExtendedColors
- * @text 扩展颜色支持
- * @desc 是否支持 HSL/HSLA 颜色和 CSS 扩展颜色名。
- * @type boolean
- * @default true
- * @on 启用
- * @off 禁用
- *
- * @param allowTransparentColors
- * @text 透明颜色支持
- * @desc 是否支持 RGBA/HSLA 颜色和透明关键字。
- * @type boolean
- * @default true
- * @on 启用
- * @off 禁用
- *
- * @param tabStop
- * @text 制表符停靠点
- * @desc 制表符停靠点的水平位置,单位像素。
- * 如果留空,则每4个字符宽度为一个停靠点。
- * @type number[]
- *
- * @param scriptFontSize
- * @text 上/下标字体大小
- * @desc 上标/下标的字体大小,相对于当前字号的比例值
- * @type number
- * @decimals 2
- * @min 0.2
- * @max 0.5
- * @default 0.35
- *
- * @param variableWindowStyle
- * @text 变量窗口样式
- * @desc 变量窗口的样式配置。
- * @type note
- * @default "\n\n\n\n\n"
- *
- * @param actorPictureStyle
- * @text 角色立绘样式
- * @desc 角色立绘的样式配置。
- * @type select
- * @option 对齐长边
- * @value cover
- * @option 对齐短边
- * @value contain
- * @option 原始尺寸
- * @value original
- * @default cover
- *
- * @param actorPictureMarginH
- * @text 角色立绘水平边距
- * @desc 角色立绘的水平边距,单位像素或百分比
- * 也可组合使用,如20%+40
- * @type string
- * @default 0
- *
- * @param actorPictureMarginV
- * @text 角色立绘垂直边距
- * @desc 角色立绘的垂直边距,单位像素或百分比
- * 也可组合使用,如20%+40
- * @type string
- * @default 0
- *
- * @param autoSnap
- * @text 自动吸附
- * @desc 根据脸图、姓名等自动将对话框吸附到说话角色或事件。
- * @type boolean
- * @default true
- * @on 启用
- * @off 禁用
- *
- * @param windowskinMap
- * @text 窗口皮肤映射
- * @desc 指定说话人姓名、窗口皮肤、fuki箭头的对应关系
- * @type struct[]
- * @default []
- *
- * @param fukiArrowImage
- * @text Fuki箭头图片
- * @desc fuki箭头的图片文件名,放在 img/system/ 下。
- * 留空则从窗口皮肤自动检测。
- * @type file
- * @dir img/system/
- *
- * @param choiceExpandVar
- * @text 展开选项变量
- * @desc 选项含\/拆分时,将选中子项序号(从1开始)存入该变量。
- * 设为0则禁用。
- * @type number
- * @min 0
- * @default 0
- *
- * @command longArticle
- * @text 长文章模式
- * @desc 连缀相邻的消息指令,形成长文章。
- *
- * @arg enabled
- * @text 启用
- * @desc 是否启用长文章模式。
- * @type boolean
- * @on 启用
- * @off 禁用
- * @default true
- *
- * @command longArticleMaxLines
- * @text 最大行数
- * @desc 设置长文章模式下的最大行数,超过则自动分页。
- *
- * @arg maxLines
- * @text 最大行数
- * @desc 长文章最大行数,超过则自动分页,超出屏幕高度也会分页。
- * 若设置为0,则只受屏幕高度限制。
- * @type number
- * @min 0
- * @default 0
- *
- * @command choiceExpandVar
- * @text 展开选项变量
- * @desc 指定接收\/拆分子项序号(从1开始)的变量。
- *
- * @arg variableId
- * @text 变量ID
- * @desc 设为0则禁用存储。
- * @type number
- * @min 0
- * @default 0
- *
- * @command setTypingSE
- * @text 设置打字音效
- * @desc 设置当前消息窗口的打字音效。
- *
- * @arg se
- * @text 打字音效
- * @desc 打字音效的文件名,放在 audio/se/ 下。
- * @type file
- * @dir audio/se/
- *
- * @arg volume
- * @text 音量
- * @desc 打字音效的音量,0~100。
- * @type number
- * @min 0
- * @max 100
- * @default 90
- *
- * @arg pitch
- * @text 音调
- * @desc 打字音效的音调,50~150。
- * @type number
- * @min 50
- * @max 150
- * @default 100
- *
- * @arg pan
- * @text 声道
- * @desc 打字音效的声道,-100~100。
- * @type number
- * @min -100
- * @max 100
- * @default 0
- *
- * @command setMessageWindowskin
- * @text 更改消息窗口皮肤
- * @desc 更改当前消息窗口的窗口皮肤。
- *
- * @arg windowskin
- * @text 窗口皮肤
- * @desc 窗口皮肤的文件名,放在 img/system/ 下。
- * @type file
- * @dir img/system/
- *
- * @arg fukiArrow
- * @text Fuki箭头
- * @desc fuki箭头的图片文件名,放在 img/system/ 下。
- * 留空则从窗口皮肤自动检测。
- * @type file
- * @dir img/system/
- *
- */
- /*~struct~windowskin:zh
- * @param name
- * @text 说话人姓名
- * @desc 对应的说话人姓名,若留空,则匹配所有说话人。
- * 必须严格匹配名称(区分大小写),相应的皮肤才会生效。
- * @type string
- * @default ""
- *
- * @param windowskin
- * @text 窗口皮肤
- * @desc 对应的窗口皮肤文件名,放在 img/system/ 下。
- * @type file
- * @dir img/system/
- * @default ""
- *
- * @param fukiArrow
- * @text Fuki箭头
- * @desc 对应的fuki箭头图片文件名,放在 img/system/ 下。
- * @type file
- * @dir img/system/
- * @default ""
- *
- */
复制代码
本帖来自P1论坛作者来自网络,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址: https://rpg.blue/forum.php?mod=viewthread&tid=499143 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。 |
|