ver-23 修复 ver-20/ver-22 在部分运行环境载入地图时调用缺失的 debug.getmetatable 导致 FATAL。地图音量接入现在使用引擎内部保存的原元表,保留地图对象身份和元表保护;不要求前端提供调试 API。未配置地图音乐、仅使用旧音乐对象的项目也可照常载图、读档。
旧的 引擎.创建音乐(...)、设置 循环/音量、停止() → 修改 音乐 → 播放() 调用继续可用。地图两个音量属性仅控制自动配乐及环境声,不会接管手动创建的音乐对象;缺少地图音乐字段时不创建自动播放对象。接入完成后才标记,重复加载不会叠加包装。
验证:在主动缺少 debug.getmetatable 的环境,ver-22 真实引擎读档复现旧错误,ver-23 通过相同用例、加密存读档、旧引用身份及音量保留验证。属于本机 App.exe 独立测试,尚未取得同事客户端的复测结论。
当前地图提供两个可读写属性:
| 属性 | 类型/默认值 | 控制范围 | |
| 音乐音效音量 | 整数,100 | 地图配置地图音乐对应的循环音乐 | |
| 环境音效音量 | 整数,100 | 地图配置环境音乐对应的循环环境声 | |
引擎.地图.音乐音效音量 = 40
引擎.地图.环境音效音量 = 25
-- 只静音环境声,音乐保持原值;环境声播放位置继续前进。
引擎.地图.环境音效音量 = 0
两项均限制为 0~100、向下取整,非数值或 NaN 忽略。它们属于当前引擎实例的统一设置,通过地图对象访问;跨图保留,保存的旧地图引用读写也作用于这两个统一值。尚无当前地图时引擎.地图为 nil,需在地图载入后设置。引擎不自动写入角色存档或本地文件。
两路资源从地图配置读取,分别比较资源标识。切到同一标识继续播放;缺少/false/空串停止该路;注册错误仅使该路失败,不影响另一条音频或地图载入。地图暂停/隐藏不会自动暂停音乐;地图重置本身不重播同曲。单独创建音乐的登录曲不受这两个属性控制,进入游戏时应停止登录曲。
配套前端使用audio_settings.dat独立保存普通音效、音乐、环境音量,旧文件环境音量默认 40;登录期间将地图两路静音,首次正式进入地图后停止登录曲并恢复本地选择。读档不会覆盖本地音量。候选字节码隔离与真实 App.exe 独立静音测试通过,完整游戏听感和设置窗口操作待用户复测。
提示
游戏中当前主角所在地图,可以通过 引擎.地图快捷访问。
使用全局引擎接口引擎.取地图随机空位(地图名称, 配置),可在当前地图提前选取另一张已注册地图的非障碍格,不需要切图或执行目标地图创建事件。支持模板障碍与配置地图格子,可选格子矩形范围和地图边距。
local x,y,错误 = 引擎.取地图随机空位('祖玛寺庙', {边距=2})
if x >= 0 then
调试输出('目标格子',x,y) -- 保存到你的藏宝目标数据,不是像素坐标
else
调试输出(错误)
end
它不是地图对象新增方法,也不是刷怪接口。现有地图对象.取出空位仍用于已加载地图,行为不变。非障碍不保证入口可达,也不排除角色占位;实际刷怪前需复查。完整参数、-1 失败语义和同步读取/扫描预算见引擎接口。
ver-34修正飘灰和低雾可见度,并允许低雾区域="当前视野"随镜头显示;原固定矩形数组仍支持。需要新增HeimeiWeather34两张纹理,参见地图天气。
ver-33新增类型="飘灰"/"落叶"/"低雾";落叶支持落地停留,低雾必须指定世界像素矩形数组区域。落地叶片与低雾使用地表层,三类仍互斥切换;新增HeimeiWeather33两张图集,详细调用、数量和验证边界见地图天气。
ver-24 兼容发布器将天气图片标识和文件统一转换为 PNGZ;优先原注册标识,未注册时查询同名 PNG/PNGZ 替代注册,不改内置图集切片。四种天气新增 画质='极高':雨雪沙粒子、雾团、水花预算和地面池容量按高档取整后翻倍,沙幕/雾噪声/雪幕噪声由 2 层增至 4 层。低、中、高行为及默认中档保持;速度、脚印步距、闪电频率与配置亮度沿用原值。全部 8 张图片继续使用 HeimeiWeather17。隔离回归及真实 App.exe 的 PNG、PNGZ、别名映射共 24 场景通过,完整游戏视觉和帧率待用户复测,详见地图天气。
ver-19 修复天气精灵复用后错误显示界面图集:每批绘制绑定当前天气纹理。沿用 Res/HeimeiWeather17/ 和原 设置天气 参数;安装新库并重启生效。旧版故障对照、隔离回归与真实 App.exe 离线验证通过,用户完整游戏画面待复测;详见地图天气。
地图对象提供设置天气(配置)、清除天气(淡出毫秒)、暂停天气(逻辑值)和取天气(),支持雨、雪、雾、黄沙,默认关闭、按地图隔离。ver-17 修复快速移动缺雪和公共边缘裁剪,积雪按地图共享进度并有界预生成,增加角色前景雪幕、雾图集保护边和可选 2D 氛围景深。需安装 Res/HeimeiWeather17/ 的 8 张 PNG 和 1 个 WAV,新增 atmosphere.png,不能混用旧 fog/ground 图集。
引擎.地图.设置天气 {类型='下雨', 雨量='中雨', 密度=0.7, 画质='中', 淡入=1000, 雷暴=false}
引擎.地图.清除天气(1000)
新增积雪.预生成距离、雪幕浓度、雪幕颜色与氛围景深。根配置颜色=0x5F9641D2可将底雾和团雾一起染成绿色,只产生视觉效果,不实现中毒。氛围景深用远景染色/近景压暗/暗角模拟远近感,不是真实深度或景深模糊,也不改地图环境色和黑白画面。
取天气()新增地图积雪进度、雪幕浓度和氛围景深开关;保留积雪覆盖/积雪网格尺寸,落雪数表示当前准备范围内的有效覆盖格数。新区域和视距换级继承本天气的地图进度,不重新积累;雪面图形缓存仍有上限,不是永久全图存档。完整参数、返回值、资源、暂停和层级见地图天气。
普通地面默认等待积雪覆盖达到 0.2 后留印;雪地=true仅跳过覆盖判定,不负责铺雪。地面雪先于角色,前景雪幕/雾/氛围在角色之后、普通 UI 之前;不能自动给宝箱顶面或屋顶积雪。仅主角生成脚印,可用地面区域限制。清除/切换/重新设置天气释放旧状态;地图重置先清除,再执行原重置与创建回调。
通过系统设置开启,不新增地图方法。实际扣血后在当前地图生成原生上层血滴和下层血迹,使用有界复用池;切换当前地图、地图清空/重置时释放,暂停/隐藏冻结视觉计时。地面血迹不是永久存档,空中血滴不提供逐角色/墙体深度遮挡;配置、PNGZ 资源和验证边界见战斗血液效果。
| 日期 | 版本 | 简易记录 | |
| 2026-09-13 | ver-13 | 增加四个天气方法和重置时清理规则,支持雨雪雾黄沙;隔离与原生合成地图验证,实际项目视觉待验收。 | |
| 2026-09-13 | ver-14 | 扩展雨雪量、水花、雷暴、团雾、阵风与雪地脚印配置及查询统计;区分地面/天空层级,安装路径升级为 HeimeiWeather14。 | |
| 2026-09-13 | ver-15 | 修正默认风向雨丝与世界坐标团雾,暂停清除更新余量;独立连续沙幕、渐进粉雪及清晰压痕,雷暴新增压暗/余闪,资源升级为 HeimeiWeather15。 | |
| 2026-09-13 | ver-16 | 同步新版资源、水花与浓雾控制、首版黄沙默认行为、连续积雪及其查询和释放边界。 | |
| 2026-09-13 | ver-17 | 同步移动补雪、地图共享积雪进度与预生成、雪幕和可选 2D 氛围景深;新增资源、绿色雾示例及层级/缓存边界。 | |
| 2026-09-13 | ver-18 | 补充全局引擎的目标地图随机取点用法,与现有地图对象取出空位区分;地图对象和天气行为未修改。 | |
| 2026-09-14 | ver-20 | 新增两项统一地图音量属性,分别控制地图音乐和环境音乐,跨图保留、静音续播。 | |
| 2026-09-15 | ver-23 | 修复缺失调试 API 时地图音量接入报错;保留旧音乐调用、地图身份及跨图音量。 | |
| 2026-09-16 | ver-24 | 天气兼容 PNGZ 注册标识,四天气新增极高画质;补充数量/容量翻倍及独立验证边界。 | |
| 2026-09-16 | ver-29 | 新增血液视觉节点生命周期清理;说明地图层级、切换/重置释放及暂停/隐藏冻结边界。 | |
| 名称 | 类型 | 说明 | |
宽度 | 数值 | 当前地图的宽度。 | |
高度 | 数值 | 当前地图的高度。 | |
格子宽度 | 数值 | 当前地图的格子宽度。 | |
格子高度 | 数值 | 当前地图的格子高度。 | |
格子列数 | 数值 | 当前地图的格子列数。 | |
格子行数 | 数值 | 当前地图的格子行数。 | |
鼠标坐标x | 数值 | 鼠标指针的当前地图坐标x | |
鼠标坐标y | 数值 | 鼠标指针的当前地图坐标y | |
鼠标格子x | 数值 | 鼠标指针的当前地图格子x | |
鼠标格子y | 数值 | 鼠标指针的当前地图格子y | |
逻辑时间 | 数值 | 地图当前逻辑时间 单位:毫秒 | |
焦点 | 角色对象 | 当前鼠标的焦点角色 | |
友方数量 | 数值 | 友方阵营的角色数量 | |
友方存活 | 数值 | 友方阵营的存活数量 | |
敌方数量 | 数值 | 敌方阵营的角色数量 | |
敌方存活 | 数值 | 敌方阵营的存活数量 | |
中立数量 | 数值 | 中立阵营的角色数量 | |
中立存活 | 数值 | 中立阵营的存活数量 | |
- 类型:
逻辑 - 读写:
读写 - 说明:用于配合镜头位置变化时使用,将镜头缓动到新的目标点。
- 类型:
RGBA/nil - 读写:
读写 - 说明:动态读写地图当前环境色。
nil表示取消环境色。 - ver-31:角色等对象的
光影效果 = {} 或缺少 颜色 时,不提交该对象灯光;不影响环境色及对象本身绘制。合法 RGBA(包括 0)仍按原亮度规则绘制。
- 类型:
逻辑 - 读写:
读写 - 说明:地图是否显示为黑白效果。
- 类型:
逻辑 - 读写:
读写 - 说明:是否触发系统事件中的
鼠标事件。
- 类型:
角色对象 - 读写:
只读 - 说明:你可以在脚本中使用
引擎.地图.主角 快捷获得当前的主角对象。
- 类型:
包含属性{x,y}的table - 读写:
只写 - 说明:更改当前地图的镜头绑定。
引擎.地图.镜头对象 = 引擎.地图.主角
引擎.地图.镜头对象 = 其他角色.....
引擎.地图.镜头对象 = {x=100,y=100} -- 固定镜头位置
动态镜头 = {x=100,y=100}
引擎.地图.镜头对象 = 动态镜头 -- 绑定一个自己的镜头位置对象
动态镜头.x = 动态镜头.x + 10 -- 改变x,y值镜头也会随之移动
动态镜头.y = 动态镜头.y + 10
- 类型:
小数 - 读写:
读写 - 说明:镜头的视野缩放倍数,默认:1.0。
- 类型:
小数 - 读写:
读写 - 说明:地图逻辑加速倍数,默认:1.0。
- 类型:
{x,y} - 读写:
只读 - 说明:地图配置项中的初始位置。
| 创建角色 |
| 说明:在地图上动态创建角色。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 名称 | 文本 | true | 角色组件的名称 |
| 格子x | 整数 | true | 刷怪的中心点x |
| 格子y | 整数 | true | 刷怪的中心点y |
| 阵营 | 文本 | true | "敌方" "友方" "中立" |
| 范围 | 整数 | true | 距离中心刷怪点的半径 |
| 数量 | 整数 | true | 刷几只怪 |
| 附加 | table | true | 可以替换掉默认配置项属性
| 参数名称 |
值的类型 |
说明描述 |
| 等级 | 数值 | |
| 经验 | 数值 | |
| 经验值 | 整数 | 被击杀对方可获得的经验值数量 |
| hp | 数值 | |
| mp | 数值 | |
| maxhp | 数值 | |
| maxmp | 数值 | |
| 角色大小 | 数值 | |
| 方向 | 数值 | 出生方向:0-7 |
| 重生间隔 | 整数 | |
| 显示名 | 文本 | |
| 仇恨联动 | 整数 | 格子范围,受伤后会通知联动范围内所有的友方一起攻击仇恨来源.默认:0 |
| 血条效果 | table | |
| 主动攻击 | 逻辑 | |
| 自动战斗 | 逻辑 | |
| 巡逻范围 | 整数/table | |
| 移动间隔 | 整数 | |
| 攻击间隔 | 整数 | |
| 视野范围 | 整数 | |
| 自动反击 | 整数 | |
| 优先级 | 数值 | 敌方主动攻击时,会被优先作为目标.默认:0 |
| 状态 | table | |
| 掉落 | table | |
| 装备 | table | 同角色配置项中的 装备 |
| 附加 | table | |
|
示例
地图对象.创建角色("稻草人",20,20,"敌方",20,6);
local 附加配置 =
{
角色大小=1.0,
重生间隔=300000,
附加={boss=true},
掉落={"木剑 1/1","金币100 4/1"},
状态={
{"通用增强",{maxhp_百分比=100,攻击_百分比=30,防御_百分比=30}},
{"BOSS增强",{}}
}
}
地图对象.创建角色("稻草人BOSS",20,20,"敌方",20,1,附加配置);
| 返回值 |
值的类型 |
说明描述 |
| 角色对象组 | table {} | 返回实际刷新成功的角色对象数组 |
注意事项
1、使用前确保角色组件是否已经正确添加到项目中。
|
| 取出角色 |
| 说明:在地图上取出有效角色。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 格子x | 整数 | true | 中心点x |
| 格子y | 整数 | true | 中心点y |
| 范围 | 整数 | true | 距离半径 |
| 阵营 | 整数 | false | 1:友方 -1:敌方 0:中立 |
| 威望 | 整数 | false | 限制多少威望内 -1:不限制 |
| 包含死亡 | 逻辑 | false | 是否包含死亡角色 默认:false |
| 取出数量 | 整数 | false | 最多取出几个角色 |
示例
local 主角对象 = 引擎.地图.主角
local 角色组 = 主角对象.地图.取出角色(主角对象.格子x,主角对象.格子y,5,-主角对象.阵营)
调试输出("附近敌方数量:" ,#角色组)
| 返回值 |
值的类型 |
说明描述 |
| 角色对象组 | table {} | 返回角色对象数组 |
|
| 查找角色 |
| 说明:从角色id取出角色对象。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| id | 整数 | true | 角色id |
示例
local 角色对象
if (self.客户端.cid == tbl.cid) then
角色对象 = 引擎.地图.主角
else
角色对象 = 引擎.地图.查找角色(tbl.id)
end
if (角色对象 == nil) then
调试输出("角色不存在")
return
end
引擎.屏幕提示(tbl.msg,{
停留时间=12000,动画效果=0,气泡皮肤="透明气泡",限制宽度=6*20,
x=0,y=-角色对象.角色高度 - 24,
分组="_msg_" .. tbl.cid, 清空分组=true}
,角色对象)
|
| 地图格子 |
| 说明:取出或者改变地图格子状态。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 格子x | 整数 | true | |
| 格子y | 整数 | true | |
| 类型 | 整数 | false | 不填表示取出 填写表示设置 0通行 1障碍 2透明 3障碍+透明 |
示例
调试输出(地图对象.地图格子(20,20)) -- 取出
地图对象.地图格子(20,20,1) -- 设置成障碍
| 返回值 |
值的类型 |
说明描述 |
| 类型 | 整数 | 0通行 1障碍 2透明 3障碍+透明 |
|
| 地图光源 |
| 说明:改变地图光源可视状态。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 名称标识 | 文本 | true | |
| 可视 | 逻辑 | true | |
示例
|
| 掉落物品 |
| 说明:往地图对象中掉落一个物品。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 格子x | 整数 | true | |
| 格子y | 整数 | true | |
| 道具名称 | 文本 | true | 延迟执行 |
| 是否固定掉落位置 | 逻辑 | false | |
| 附加 | table | false | 如果填写会传递到道具的 创建 事件中。默认:nil |
示例
local 损失金币 = 99999
local 道具对象 = 引擎.地图.掉落物品(引擎.地图.主角.格子x,引擎.地图.主角.格子y,"死亡金币",true)
if (道具对象) then
道具对象.显示名 = "金币(" .. 损失金币 .. ")"
end
引擎.地图.掉落物品(引擎.地图.主角.格子x,引擎.地图.主角.格子y,"棉布衣",true,{系统任务=true})
| 返回值 |
值的类型 |
说明描述 |
| 道具对象 | 道具对象 | 掉落成功返回道具对象否则为nil |
|
| 设置主角 |
| 说明:将一个角色对象设置成主角。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 角色对象 | 角色组件 | true | |
| 切换镜头 | 逻辑 | false | 是否自动绑定镜头 默认:true |
示例
|
| 显示气泡 |
| 说明:持久显示一个气泡提示。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| x | 整数 | true | 地图坐标x |
| y | 整数 | true | 地图坐标y |
| 气泡内容 | 文本 | true | |
| 气泡皮肤 | 文本 | false | |
示例
引擎.加入事件("系统时钟",{},0,false) -- 持久显示的气泡 需要一个帧事件保持持续显示
-----------------------------------------------------
系统时钟 = function (tbl,dt,time)
local 鼠标角色 = 引擎.鼠标角色
if (鼠标角色) then
local 丰富文本 = "Lv" .. 鼠标角色.等级 .. " " .. 鼠标角色.显示名
引擎.地图.显示气泡(鼠标角色.x,鼠标角色.y - 鼠标角色.角色高度 * 0.5,丰富文本)
end
end,
|
| 重置 |
| 说明:还原地图到第一次进入时的状态。 |
示例
注意事项
1、地图配置项中的地图角色会重新刷新。
2、会再次触发地图配置项中的创建事件。
3、主角会回到出生点,如果有宠物会自动清空。
|
| 抖动 |
| 说明:产生一次地图抖动效果,抖动幅度会根据时间逐渐衰弱。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 持续时间 | 整数 | true | 单位:毫秒 |
| 抖动幅度 | 整数 | true | |
示例
|
| 坐标转换 |
| 说明:转换坐标。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| x | 整数 | true | |
| y | 整数 | true | |
| 模式 | 整数 | true | 0.地图坐标转屏幕坐标
1.屏幕坐标转地图坐标
2.地图坐标转地图格子
3.地图格子转地图坐标 |
示例
local 地图坐标x,地图坐标y = 引擎.地图.坐标转换(50,50,3)
调试输出(地图坐标x,地图坐标y)
|
| 取出空位 |
| 说明:从指定格子范围内取出非障碍格子。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 格子x | 整数 | true | |
| 格子y | 整数 | true | |
| 范围 | 整数 | false | 指定格子距离 默认:1 |
| 模式 | 整数 | false | 默认:0 0:最近的一个有效位置 1:随机一个有效位置 |
示例
local 主角对象 = 引擎.地图.主角
local 格子x,格子y = 引擎.地图.取出空位(主角对象.格子x,主角对象.格子y)
调试输出(格子x,格子y )
| 返回值 |
值的类型 |
说明描述 |
| 格子x | 整数 | -1:表示取出失败 |
| 格子y | 整数 | -1:表示取出失败 |
|
| 添加节点 |
| 说明:在地图上添加一个节点,成功返回节点对象。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 组件配置 | table | true | 文本,动画...等基石组件 |
| 图层 | 整数 | false | 0:地表1:顶层 2:物件排序层 默认:0 |
| z | 整数 | false | 排序层节点的z值,默认:0 |
示例
local 选中脚底动画 = {
名称 = "脚底动画",
类型 = "动画",
x = 0,
y = 0,
动画 = "脚底动画",
动作 = "default",
默认可视 = false,
}
self.脚底动画 = 引擎.地图.添加节点(选中脚底动画,0) -- 0地表 1顶层
| 返回值 |
值的类型 |
说明描述 |
| 组件对象 | 对象对象 / nil | 失败返回 nil |
|
| 取出节点 |
| 说明:从节点名称取出节点对象。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 组件名称 | 文本 | false | |
示例
local 脚底动画 = 引擎.地图.取出节点("脚底动画")
脚底动画.可视 = false
| 返回值 |
值的类型 |
说明描述 |
| 组件对象 | 对象 / nil | 取出失败返回 nil |
|
| 清除节点 |
| 说明:清除节点。销毁模式,清除后不可再次调用! |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 组件名称 | 文本/组件对象 | false | |
示例
|
| 加入事件 |
| 说明:往地图对象中加入一个自定义事件。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 事件名称 | 文本 | true | 触发的事件名称 |
| 附加信息 | table | false | 事件触发时可以取出 |
| 延迟时间 | 数值 | false | 延迟执行 |
| 自动销毁 | 逻辑 | false | 是否只执行一次,默认:true |
示例
系统事件 = {
创建 = function(地图对象)
地图对象.加入事件("自动刷怪",{},500,false)
end,
自动刷怪 = function (地图对象,tbl,dt,time)
调试输出(tbl,dt,time)
end,
}
|
提示
利用自定义事件,可以在不同对象之间进行交互。 自定义事件。
| 删除事件 |
| 说明:删除指定自定义事件。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 事件名称 | 文本 | true | |
示例
系统事件 = {
创建 = function(地图对象)
地图对象.加入事件("自动刷怪",{},500,false)
end,
自动刷怪 = function (地图对象,tbl,dt,time)
地图对象.删除事件("自动刷怪")
end,
}
|
| 2026-09-14 | ver-19 | 同步天气纹理绑定修复、原参数与资源兼容条件及验证边界。 |
- 2026-09-19,ver-31:地图绘制跳过缺少颜色的光影配置,修复开启环境色后的 GET_A(nil);1,078 项定点隔离检查通过,用户前端复测待确认。