Dream Mod 3.0Dream Mod 3.0
首页
快速开始
资源库
首页
快速开始
资源库
  • 进度

    • 更新日志
  • 指南

    • 快速上手
    • App.lua
    • Server.lua
    • 地图
    • 角色
    • 道具
    • 技能
    • 状态
    • 窗口
    • 成长
    • DmTcpClient
    • WebSocketClient
    • SqliteDB
    • 皮肤
    • 自定义组件
  • Api

    • 引擎
    • 地图
    • 角色
    • 道具
    • 技能
    • 状态
    • 窗口
    • 自定义组件
    • 音乐
    • 缓动
    • 全局
  • 控件

    • 标签
    • 按钮
    • 图片框
    • 动画框
    • 模型框
    • 文本框
    • 进度条
    • 技能格子
    • 快捷格子
    • 包裹格子
    • 道具格子
    • 角色框
    • 选择框
    • 选择夹
    • 容器
    • 地图框
    • 滑块条
    • 滚动条
    • 组合框
    • 输入框
    • 列表框
  • 组件

    • 文本
    • 艺术字
    • 精灵
    • 矩形
    • 圆形
    • 动画
    • 模型
  • 其他

    • 丰富文本
    • 模板变量
    • 资源格式
    • 游戏盒子
    • 资源列表
  • 自定义功能

    • 战斗血液效果
    • 地图天气
  • 地图

    地图音乐与环境音乐(ver-20)

    在地图配置中直接声明两个资源标识:

    local 地图配置 = {
    
        类型 = "地图",
    
        名称 = "封神陵",
    
        地图模板 = "封神陵模版",
    
        地图音乐 = "P失乐园",
    
        环境音乐 = false, -- 设置为已注册的环境音乐资源标识后自动播放
    
    }
    
    return 地图配置
    
    
    字段类型默认/行为
    地图音乐文本/false/nil缺少时停止地图音乐;文本须为已注册的音乐资源标识。
    环境音乐文本/false/nil缺少时停止环境音乐;使用独立音乐对象,可与地图音乐同时循环。

    引擎实际载入地图成功后处理两路音频,包括默认首地图和已缓存地图的再次进入。两路默认循环,各自与上一次资源标识比较:同标识保持当前位置,变化时先停止旧曲并加载新曲。nil/false/空串关闭对应路;无效类型按关闭处理。未注册标识/缺失文件使该路失败,不能沿用上一张地图的声音。载入地图失败时继续保留原地图及音频。只查询未进入地图的配置或空位不会触发播放。

    通过引擎.地图.音乐音效音量与引擎.地图.环境音效音量分别调节。默认 100,0 静音且保持播放进度,跨地图继承。音量持久化由项目自行保存;配置中不支持每图覆盖这两个统一音量。环境音乐适合持续风声、水声等背景循环;原有技能、攻击、界面和天气雷声仍使用普通音效路径。

    配套前端 22 张地图已将既有配乐写入game/map/map.lua。新库以这里的字段为准;L地图数据.音乐仅供尚未替换库时的过渡代码,修改它不会影响 ver-20 自动播放。当前未提供环境声素材,22 张地图的环境音乐均为 false;请先注册自己的资源,再填写标识。

    验证:真实 Game_Map 注册器已确认保留这两个字段,原生独立静音项目验证自动循环、同文件双路、切图、空配置停播及音量继承。远程资源下载及完整用户游戏听感未实测。

    介绍

    地图是一个指定宽高和行列的矩形网格,可以配置项制作也可以直接使用地图模板。

    基础
    local 地图配置 = {
    
        类型 = "地图",
    
        名称 = "新手地图",
    
        格子宽度 = 64,
    
        格子高度 = 32,
    
        格子列数 = 24,
    
        格子行数 = 48,
    
        默认地图 = true,
    
        初始位置 = {x=12,y=24}
    
    }
    
    
    
    return 地图配置 
    
    
    地图模板
    local 地图配置 = {
    
    	类型 = "地图",
    
    	名称 = "泡点图",
    
    	默认地图 = true,
    
    	初始位置 = {x=22,y=19},
    
    	地图模板 = "泡点图",
    
    	资源表 = {
    
    		{标识="泡点图",文件="dmstore_JD36KaqD2UCbEDOuDt0A"}, 
    
    	}
    
    }
    
    return 地图配置 
    
    

    配置项

    名称 类型 必填 说明
    类型 文本true固定值: 表示这是一个地图组件
    名称 文本true全局唯一的地图标识
    格子宽度 整数false地图逻辑格子的宽度
    格子高度 整数false地图逻辑格子的高度
    格子列数 整数false
    格子行数 整数false
    默认地图 逻辑false是否是游戏中默认加载的首地图
    初始位置 {x=?,y=?,范围=?} false 作为首地图时主角的出生点
    边距 tablefalse {左,上,右,下} 用于扩展或减少黑边,增强角色画面居中细节效果。
    例:{-256,-256,256,256} 上下左右都增加256像素黑边
    地图模板 文本false资源标识
    小地图 文本false图片类型的资源标识,会自动显示到[地图框]控件中
    网格显示 逻辑false是否默认显示网格
    网格宽度 整数false默认:1
    网格颜色 RGBAfalse
    环境色 RGBAfalse设置一个全局环境色,环境光
    地图物件 tablefalse{
    {类型,坐标x,坐标y,资源标识,锚点x,锚点y},
    {类型,坐标x,坐标y,资源标识,锚点x,锚点y},
    ...
    }
    地图格子 tablefalse{
    {格子x,格子y,类型},
    {格子x,格子y,类型},
    ...
    }
    地图角色 tablefalse{
    {名称,阵营,格子x,格子y,范围,数量},
    {名称,阵营,格子x,格子y,范围,数量},
    ...
    }
    地图门点 tablefalse{
    {格子x,格子y,目标地图,目标格子x,目标格子y,角色方向},
    {格子x,格子y,目标地图,目标格子x,目标格子y,角色方向},
    ..
    }
    地图光源 tablefalse{
    {x,y,锚点x,锚点y,水平缩放,垂直缩放,颜色},
    {x,y,锚点x,锚点y,水平缩放,垂直缩放,颜色},
    ..
    }
    资源表 tablefalse{
    {标识="",文件=""},
    {标识="",文件=""},
    ..
    }
    鼠标事件 逻辑false是否触发系统事件中的 鼠标事件 默认:false
    障碍掉宝 逻辑false是否允许道具掉落到障碍里。 默认:false
    屏幕位置 tablefalse将地图显示在指定屏幕位置
    系统事件 tablefalse

    环境色

    • 颜色值为RGBA,当地图中的组件有光影效果时,A会影响所有光影亮度,
    • ver-31:空光影表或缺少颜色的对象不产生灯光,开启环境色不会因此调用 GET_A(nil);完整光影配置的行为不变。
    环境色 = RGBA(255,255,255,255),  -- 正常
    
    环境色 = RGBA(40,40,40,255),  -- 黑灯瞎火
    
    环境色 = RGBA(153,204,230,255), -- 雪山青 雪地、冰川、寒冷环境
    
    
    
    环境色 = RGBA(30,30,30,128), -- 当地图中有光影组件的时候,所有光影的亮度降低50%
    
    

    地图物件

    > 地图物件可以是图片,动画,显示在地表或是参与物件排序。

    名称类型是否必填说明
    显示位置整数true0最底层 1地表1层 2地表2层 3物件层(参与地图排序) 4最顶层
    坐标x整数true地图坐标x
    坐标y整数true地图坐标y
    资源标识文本true如果是动画需要用逗号分割,指定动作 例:门点动画,默认
    锚点x整数true如果是动画,这个值为同步编组,相同编组的动画播放速度同步。0:无编组
    锚点y整数true
    水平缩放小数false
    垂直缩放小数false
    名称标识文本false
    默认可视整数false0:默认不显示 1:默认显示
    资源表 = {
    
        {标识="门点动画",文件="100/地表特效/atlas.json"},
    
        {标识="美女图",文件="100/美女.jpg"},
    
        {标识="路牌",文件="100/路牌.png"},
    
        {标识="小树",文件="100/小树.png"},
    
        
    
    },
    
    
    
    地图物件 = {
    
        {0,986,619,"美女图",0,0},{1,1529,780,"路牌",60,105},{1,1410,860,"小树",118,112},{0,1410,860,"门点动画,default",118,112}
    
    },
    
    

    地图格子

    > 设置障碍格子,透明格子信息。

    名称类型是否必填说明
    格子x整数true地图格子x
    格子y整数true地图格子y
    类型整数true1障碍 2透明 3障碍+透明
    地图格子 = {
    
        {25,19,1},{17,22,2},{18,22,2}
    
    },
    
    

    地图角色

    > 设置地图角色刷新。

    名称类型是否必填说明
    名称文本true角色组件的名称
    阵营文本true友方 中立 敌方
    格子x整数true刷新中心点x
    格子y整数true刷新中心点y
    范围整数true刷新范围
    数量整数true刷新数量
    等级整数false角色等级
    经验数值false角色经验
    经验值整数false被击杀对方可获得的经验值数量
    角色大小数值false
    方向数值false出生方向:0-7
    重生间隔整数false
    血条效果tablefalse
    主动攻击逻辑false
    巡逻范围整数/tablefalse
    移动间隔整数false
    攻击间隔整数false
    视野范围整数false
    显示名文本false
    仇恨联动整数false格子范围,受伤后会通知联动范围内所有的友方一起攻击仇恨来源
    状态tablefalse
    掉落tablefalse
    附加tablefalse
    地图角色 = {
    
        {名称="将军",阵营="中立",格子x=22,格子y=10,范围=0,数量=1},
    
        {名称="稻草人",阵营="敌方",格子x=22,格子y=10,范围=0,数量=4},
    
    
    
        {
    
            名称="稻草人BOSS",
    
            阵营="敌方",
    
            格子x=22,
    
            格子y=10,
    
            范围=0,
    
            数量=1,
    
            角色大小=1.0,
    
            重生间隔=300000,
    
            附加={boss=true},
    
            掉落={"木剑 1/1","金币100 4/1"},
    
            状态={
    
                {"通用增强",{maxhp_百分比=100,攻击_百分比=30,防御_百分比=30}},
    
                {"BOSS增强",{}}
    
            }
    
        },
    
    },
    
    

    地图门点

    > 设置地图自动传送的格子。

    名称类型是否必填说明
    格子x整数true
    格子y整数true
    目标地图名文本true
    目标格子x整数true
    目标格子y整数true
    传送后角色方向整数true
    地图门点 = {
    
        {29,17,"暗殿密室2",24,18,2}
    
    },
    
    

    地图光源

    > 设置地图光源

    名称类型是否必填说明
    坐标x整数true
    坐标y整数true
    锚点x数值true
    锚点y数值true
    水平缩放数值true
    垂直缩放数值true
    颜色RGBAtrue
    名称标识文本false
    默认可视整数false0:默认不显示 1:默认显示
    地图光源 = {
    
        {3650,2888,0.5,0.5,1,1,RGBA(255, 255, 0,255)},
    
        {2474,2665,0.5,0.5,2,2,RGBA(255, 255, 255,255)},
    
    
    
    },
    
    

    屏幕位置

    • 设置地图在屏幕上的显示区域
    • 默认镜头显示在屏幕中心,可以通过镜头微调中心位置。
    名称类型是否必填说明
    坐标x整数true屏幕坐标x
    坐标y整数true屏幕坐标x
    宽度数值true显示宽度
    高度数值true显示高度
    镜头偏移x数值false
    镜头偏移y数值false
    屏幕位置 = {400,0,400,280,-96,0},
    
    

    藏宝图提前选点(ver-18)

    地图通过现有配置注册后,可调用引擎.取地图随机空位('地图名称', {边距=2, 范围={20,30,80,60}}),范围可省略。返回 0 起始的格子 x、y,失败返回 -1、-1、错误文本;不是像素坐标。

    未进入地图时读取模板障碍并叠加本配置的地图格子,不调用场景加载/创建事件;无模板地图按行列和手工障碍取点。模板资源须已在正常资源表中声明。地图创建回调中临时设置的障碍无法提前预知,加载后调用则使用当前静态障碍数组。

    没有新增地图根配置字段。不会自动刷新 BOSS、预留坐标或保证入口连通,应保存取点结果并在业务真正刷怪时重新校验。范围/边距/失败条件与性能限制见引擎接口。

    天气(ver-24)

    ver-24 的天气支持发布后统一 PNGZ 文件及标识,继续使用已注册的 HeimeiWeather17 资源。可在下方调用中加入 画质='极高';四天气的粒子、雾团、相关地面容量及流动层在高档基础上翻倍。未指定仍为中档。此选项不改变天气速度、脚印步距或雷暴时序;图集布局、关闭开关和绘制层级沿用原行为。真实 App.exe 独立 24 场景通过,用户完整游戏视觉和帧率仍待复测。

    ver-19 修复天气精灵复用后错误显示界面图集:每批绘制绑定当前天气纹理。沿用 Res/HeimeiWeather17/ 和原 设置天气 参数;安装新库并重启生效。旧版故障对照、隔离回归与真实 App.exe 离线验证通过,用户完整游戏画面待复测;详见地图天气。

    通过地图创建事件开启天气,先安装 Res/HeimeiWeather17/ 的 8 张图片与 1 个雷声资源,并在资源表声明。新增 atmosphere.png,fog/ground 图集布局已改变。不要每帧重复设置,每次成功设置会替换原天气并清空其积雪进度。

    系统事件 = {
    
        创建 = function(地图对象)
    
            地图对象.设置天气 {
    
                类型='下雪', 雪量='大雪', 画质='极高', 密度=0.85, 淡入=1000,
    
                积雪={强度=0.82, 积累速度=1, 停留=15000, 预生成距离=256},
    
                雪幕浓度=0.12, 雪地=false,
    
                脚印={停留=6000}, 阵风=true,
    
            }
    
        end,
    
    }
    
    

    未新增地图根配置天气字段。参数、资源、画质和验证状态详见地图天气。天气只推进当前可视地图,适配屏幕位置宽高。地表 → 水花/雪面/脚印 → 角色 → 雪幕/底雾/氛围景深 → 团雾/天空天气/闪电 → 普通窗口/UI;天气也可能覆盖地图内部气泡。地面效果固定世界坐标并跟随视距,前景雪幕不是物体顶面积雪。

    示例用于普通地面,积雪覆盖达到 0.2 才留印。已有雪地素材时可设雪地=true跳过覆盖判定,但它不负责铺雪。ver-17 的地图共享积雪进度由当前天气持续推进,新区域/瞬移/视距换级继承已有进度;有界网格缓存提前准备视野周围及运动前方,不维护永久全图雪面。清除/切换/重新设置会释放;非当前地图和暂停时进度冻结。

    大雾支持根配置颜色=0x5F9641D2表现绿色瘴气,仍需项目另做毒伤逻辑;四种天气都可选氛围景深={远景颜色=0x376F94FF, 远景浓度=0.55, 近景压暗=0.16, 边缘压暗=0.18, 清晰范围=0.7}。这是 2D 气氛叠层,不读取真实深度、不改环境色或黑白状态、不识别屋顶/宝箱轮廓。

    当前脚印只跟踪主角,不自动识别屋顶、室内或地面材质,可用最多 32 个世界像素矩形组成的地面区域限制地面效果,不能限制天空天气。

    更新记录

    日期版本简易记录
    2026-09-13ver-13补充地图创建事件设置天气的用法及视口、资源和显示层级条件。
    2026-09-13ver-14更新天气创建示例、新版资源和地面/天空分层;说明雪地标记、短暂主角脚印与地面区域边界。
    2026-09-13ver-15更新专用资源和世界坐标雾/连续沙幕说明;雷暴明暗为私有叠层,不修改地图原有环境色与黑白画面,薄雪和脚印视觉调整。
    2026-09-13ver-16同步新版资源、水花与浓雾控制、首版黄沙默认行为、连续积雪及其查询和释放边界。
    2026-09-13ver-17同步移动补雪、地图共享积雪进度与预生成、雪幕和可选 2D 氛围景深;新增资源、绿色雾示例及层级/缓存边界。
    2026-09-13ver-18说明未进入地图的模板/配置障碍取点、地图注册及创建回调边界;不增加根配置或自动刷怪行为。
    2026-09-14ver-20地图配置新增地图音乐和环境音乐字段,载入成功后分路自动循环、同曲续播和空配置停止。
    2026-09-16ver-24补充 PNGZ 发布兼容、极高天气创建示例以及数量/容量和验证边界。

    系统事件

    🔹 创建

    地图创建后触发

    回调参数 类型 说明描述
    地图对象 地图对象

    示例

    系统事件 = {
    
        创建 = function (地图对象)
    
            调试输出(地图对象.名称, 地图对象.格子行数,地图对象.格子列数)
    
        end
    
    }
    
    

    🔹 鼠标事件

    • 地图上发生鼠标事件时触发。需要开启配置项中的 鼠标事件。
    • 按下 事件时 返回 true 可以阻止主角移动。
    回调参数 类型 说明描述
    地图对象 地图组件
    事件 文本 按下 弹起 移动 滚轮
    信息 table
    成员 类型 说明
    键值 整数鼠标按键
    屏幕坐标 {x,y}屏幕鼠标坐标
    地图坐标 {x,y}地图鼠标坐标
    地图格子 {x,y}地图鼠标格子
    焦点 角色对象鼠标有角色时返回角色 否则返回nil

    示例

    系统事件 = {
    
    
    
    	鼠标事件 = function (地图对象,事件,信息)
    
    		
    
    		if(地图对象.附加.镜头 == nil) then
    
    			地图对象.附加.镜头 = {x=地图对象.主角.x,y=地图对象.主角.y,_x=信息.屏幕坐标.x,_y=信息.屏幕坐标.y}
    
    			引擎.地图.镜头对象 = 地图对象.附加.镜头
    
    		end
    
    
    
    		local 镜头信息 = 地图对象.附加.镜头
    
    
    
    
    
    		if (事件 == "按下") then
    
    
    
    			if (信息.键值 == 1) then	-- 右键
    
    				镜头信息.开始移动 = true
    
    				镜头信息._x = 信息.屏幕坐标.x
    
    				镜头信息._y = 信息.屏幕坐标.y
    
    
    
    			elseif (信息.键值 == 0) then	-- 左键
    
    
    
    				local 格子状态 = 地图对象.地图格子(信息.地图格子.x,信息.地图格子.y)
    
    				格子状态 = 格子状态 == 1 and 0 or 1 
    
    
    
    				地图对象.地图格子(信息.地图格子.x,信息.地图格子.y,格子状态)
    
    
    
    			end
    
    
    
    		
    
    			local 焦点角色 = 信息.焦点
    
    
    
    			if (焦点角色) then
    
    				调试输出("焦点角色",焦点角色.名称)
    
    			--	焦点角色.自动战斗 = false
    
    			--	焦点角色.主动攻击 = false
    
    			--	焦点角色.移动控制 = true
    
    			end
    
    
    
    
    
    			return true	-- 拦截事件
    
    
    
    		elseif (事件 == "弹起") then
    
    			镜头信息.开始移动 = false
    
    
    
    
    
    		elseif (事件 == "移动") then
    
    
    
    			if (镜头信息.开始移动) then
    
    
    
    				local px = 信息.屏幕坐标.x - 镜头信息._x 
    
    				local py = 信息.屏幕坐标.y - 镜头信息._y 
    
    
    
    				镜头信息.x = 镜头信息.x - px * 地图对象.视距 
    
    				镜头信息.y = 镜头信息.y - py * 地图对象.视距 
    
    				镜头信息._x = 信息.屏幕坐标.x
    
    				镜头信息._y = 信息.屏幕坐标.y
    
    
    
                    地图对象.镜头平滑移动 = true
    
    			
    
    			end
    
    
    
    		elseif (事件 == "滚轮") then 
    
    
    
    			if (信息.键值 > 0) then -- 上滚动
    
    				地图对象.视距 = math.max(0.5,地图对象.视距 - 0.2)
    
    			else 
    
    				地图对象.视距 = math.min(6,地图对象.视距 + 0.2)
    
    			end
    
    
    
                地图对象.镜头平滑移动 = false
    
    
    
    		end
    
    
    
    	end
    
    
    
    }
    
    

    🔹 自定义事件

    是指通过Api 加入事件 创建的事件。

    回调参数 类型 说明描述
    地图对象 地图对象
    事件附加 table 是指通过Api [加入事件]中传递进来的 附加信息
    dt 数值 事件执行的实际间隔时间
    time 数值 事件执行的总时间

    示例

    系统事件 = {
    
    
    
        创建 = function(地图对象)
    
            地图对象.加入事件("自动刷怪",{名称="稻草人",数量=1},500,false)
    
        end,
    
    
    
        自动刷怪 = function (地图对象,附加,dt,time)
    
            地图对象.创建角色(附加.名称,20,20,"敌方",6,附加.数量); 
    
        end,
    
    
    
    }
    
    
    | 2026-09-14 | ver-19 | 同步天气纹理绑定修复、原参数与资源兼容条件及验证边界。 |
    • 2026-09-19,ver-31:地图绘制跳过缺少颜色的光影配置,修复开启环境色后的 GET_A(nil);1,078 项定点隔离检查通过,用户前端复测待确认。