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

    • 更新日志
  • 指南

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

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

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

    • 文本
    • 艺术字
    • 精灵
    • 矩形
    • 圆形
  • 其他

    • 丰富文本
    • 模板变量
    • 游戏盒子

地图

介绍

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

基础
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是否是游戏中默认加载的首地图
初始位置 tablefalse {x,y} 作为首地图时主角的出生点
边距 tablefalse {左,上,右,下} 用于扩展或减少黑边,例:{0,0,0,-200}
地图模板 文本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会影响所有光影亮度,
环境色 = 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出生方向:0-7
重生间隔整数false
血条效果tablefalse
主动攻击逻辑false
巡逻范围整数/tablefalse
移动间隔整数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},

系统事件

🔹 创建

地图创建后触发

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

示例

系统事件 = {
    创建 = 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,

}
Prev
App.lua
Next
角色