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

    • 更新日志
  • 指南

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

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

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

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

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

角色

介绍

角色组件

配置项

名称类型必填说明
类型 文本true固定值:角色 表示这是一个角色组件
名称 文本true全局唯一标识
显示名 文本false
默认主角 逻辑false是否是可操控的主角,同时只能存在一个主角
等级 整数false配合成长组件使用
经验值 整数false被其他角色杀死后,对方可以获得的经验值
成长 文本false填写成长组件名称,可以自动获得对应等级的基础属性。
hp 整数false生命值
maxhp 整数false最大生命值
mp 整数false法力值
maxmp 整数false最大法力值
命中 整数false默认值:100
躲避 整数false默认值:0
暴击 整数false默认值:0
威望 整数false低威望角色无法发现,攻击高威望角色。默认:0
扩展属性... 整数false可配置自己的扩展属性值
内观 table {}false会自动显示到角色框控件中
外观 table {}false地图上的角色动画外观
外观次序 table {}false
包围盒 tablefalse{宽度,高度,x偏移,y偏移} 用于鼠标焦点判断,高度会影响技能命中位置 F12可以查看
移动帧速 整数false默认值:100 配合角色移动动画设置一个基础值,设定后不再改变,后续移速相关的属性都将以他为基础。
攻击间隔 整数false默认值:3000 单位:毫秒 <0 无法攻击
移动间隔 整数false默认值:1500 单位:毫秒 <0 无法移动
攻击速度 整数false默认值:0 百分比增幅,正值表示加速,负值表示减速
移动速度 整数false默认值:0 百分比增幅,正值表示加速,负值表示减速
跑动 逻辑false是否允许跑动,一次移动2格
方向 整数false出生时的方向 0为上 8个方向按顺时针为0-7 -1为随机
动作模式 整数false0:8方向   1:2方向  默认:0
智能等级 整数false默认:0
巡逻范围 整数/tablefalse角色巡逻功能
自动隐藏 文本false角色是否会自动隐藏
视野范围 整数false追击,寻找目标最远距离
保持距离 整数false与敌方保持一定距离。
主动攻击 逻辑false是否主动寻怪
自动战斗 逻辑false主角的自动战斗开关
锁定目标 逻辑false启用后右键移动不会取消正在攻击的目标
自动反击 整数false
尸体保留时间 整数false死亡倒地后后开始计时
出生效果 整数false
死亡效果 整数false
重生间隔 整数false <0 不重生
重生范围 整数false以刷新点为中心的范围
战斗警戒 整数false 0:攻击后转停止动作 1:攻击后停留在攻击动作第一帧
出现音效 table {}false触发后随机播放数组中的音效标识
攻击音效 table {}false触发后随机播放数组中的音效标识
命中音效 table {}false触发后随机播放数组中的音效标识
受伤音效 table {}false触发后随机播放数组中的音效标识
死亡音效 table {}false触发后随机播放数组中的音效标识
血条效果 tablefalse
掉血效果 tablefalse
名称效果 tablefalse
光影效果 tablefalse
影子大小 数值false影子缩放的比例,如果配置角色脚底会有一个影子效果
角色大小 数值false角色外观的缩放的比例,默认:1.0
装备 tablefalse
掉落 table {}false
掉落几率 整数false百分比属性 为掉落表中的几率进行增幅 默认:100
技能表 table {}false
附加 tablefalse自定义变量
资源表 tablefalse{
{标识="",文件=""},
{标识="",文件=""},
..
}
系统事件 tablefalse

威望

  1. 角色无法发现和攻击高于自身威望的敌对阵营目标。
  2. 角色组件的配置项中可以设置默认威望,状态组件可以改变状态时间内角色威望。
  3. 当攻击目标的威望发生变动,威望高于自身时仇恨会被清0。
  4. 利用好威望和仇恨,可以丰富扩展游戏玩法。

扩展属性

这里可以配置 在App.lua入口配置项中设置的扩展属性的具体数值。

{
    hp = 100,
    maxhp = 100,
    mp = 100,
    maxmp = 100,
    攻击 = 10,
    防御 = 0,
    ...
    ...
},

内观

当角色框控件显示模式为内观时显示在控件中。

内观 = {{位置="衣服",图片="图集_内观|00300",x=-216,y=-180},{位置="发型",图片="图集_内观|00401",x=-216,y=-180,颜色=RGBA(66,66,66,255)}},
名称类型必填说明
位置文本true位置为-1时,表示图片置底显示
图片文本true
动画文本false
x整数false显示坐标偏移x
y整数false显示坐标偏移y
颜色RGBAfalse

外观

角色地图上显示的效果,可以是动画也可以是图片,当角色绑定了角色框控件,并且显示模式为外观时显示。

外观 = {{位置="衣服",动画="角色动画_男布衣"},{位置="染色",动画="角色动画_男布衣染色"}},

外观 = {{位置="衣服",图片="角色卡片_男默认",缩放=0.6,x=0,y=-40}},
名称类型必填说明
位置文本true通常为子类名称
动画/图片文本true
颜色RGBAfalse
缩放文本false
x数值false显示偏移x
y数值false显示偏移y

外观次序

  • 用于设置不同位置的外观在每个方向下的显示排序。从上开始顺时针8个方向。
  • 如果你有其他位置的纸娃娃,需要填到配置里面去,显示效果为一层一层的叠加,{"内裤","秋裤","外裤",....},缺省默认次序设置如下:
外观次序 =  {
    {"武器","衣服","染色","发型"},
    {"衣服","染色","武器","发型"},
    {"衣服","染色","武器","发型"},
    {"衣服","染色","武器","发型"},
    {"衣服","染色","武器","发型"},
    {"武器","衣服","染色","发型"},
    {"武器","衣服","染色","发型"},
    {"武器","衣服","染色","发型"}
}

动作模式

  • 是否让角色外观只显示左,右两个方向。
  • 0 8方向。角色外观是动画模式时,显示8个方向动作。
  • 1 2方向。角色外观只显示左,右(2,6)两个方向。
  • 图片型外观时,8方向和2方向动画效果不同,2方向偏向与横版游戏。

智能等级

  • 用于增强自动战斗时的追击效果。
  • 0 无寻路默认效果。
  • 1 开启自动寻路模式。

巡逻范围

随机移动

配置为整数时,单位是地图格子范围

  • >0 范围内随机移动。
  • <=0 不移动。
巡逻范围 = -1,
路径移动
  • 配置为table时,表明按指定格子路径循环移动。 { {格子x,格子y,停留时间},{格子x,格子y,停留时间},... }
配置说明
格子x目标格子
格子y目标格子
停留时间单位:毫秒
local 角色组 = 引擎.地图.创建角色("半魔人",40,72,"敌方",0,1);
角色组[1].巡逻范围 = {{40,72,5000},{49,81,5000},{56,75,5000}}
角色组[1].移动间隔 = 0

自动隐藏

  • 主动攻击型的角色如果视野范围内没有敌方时,可以设置自动消失。如:资源库中的 食人花
  • 填写一个动作名,角色隐藏和出现时会播放这个动作过渡。"动作名,反向播放" 动作名后面,配置1时表示这个动作隐藏时反向播放。
自动隐藏 = "出生,1", 

出生效果

角色在地图上出现时的效果。三种效果可选:0,1,2

配置说明
0无效果
1渐隐渐入
2空中落下

死亡效果

角色的死亡效果。四种效果可选:0,1,2,3

配置说明
0渐隐消失
1直接消失
2爆炸消失
3溶解消失

自动反击

设定角色被攻击后的反击逻辑。四种效果可选:0,1,2,3

配置说明
0目标自动变更为距离更近的角色
1目标始终固定为第一次的造成伤害角色
2目标变更为最后一次造成伤害的角色
3目标变更为仇恨值更大的角色

血条效果

角色是否显示自带的血条效果,支持多个血条效果同时显示。

名称类型说明
皮肤文本皮肤标识,可参考 App.lua 中的通用血条皮肤编写自己的血条皮肤
显示偏移整数相对与角色脚底坐标的Y轴偏移
血条颜色RGBA
过渡色RGBA血量减少时产生过渡效果
血条显示整数-1 不显示 0 焦点显示 1 持续显示 2 受伤显示
血量偏移整数相对血条的Y轴偏移
血量模式整数0 实际 1 百分比
血量显示整数-1 不显示 0 焦点显示 1 持续显示 2 受伤显示
属性绑定{最小值,最大值}支持属性名绑定,默认值:{"hp","maxhp"}
血条效果 = {
    {
        皮肤 = "通用血条",
        显示偏移 = -110,
        血条颜色 = RGBA(0,222,0,255),
        血条显示 = 1,
        血量显示 = 1,
        属性绑定= {"hp","maxhp"}
    },
    {
        皮肤 = "通用血条",
        显示偏移 = -116,
        血条颜色 = RGBA(0,100,222,255),
        血条显示 = 1,
        血量显示 = -1,
        属性绑定= {"mp","maxmp"}
    },
},

掉血效果

角色受伤时弹出一个艺术字效果。

名称类型说明
艺术字文本资源标识
字体颜色RGBA
字体间距整数
缩放小数默认缩放倍数 默认:1.0
平滑逻辑缩放时是否启用平滑效果 默认:false
动画效果整数0-4 内置5种效果
暴击颜色RGBA
暴击缩放小数默认:1.0

名称效果

让角色显示一个名称。

名称类型说明
颜色RGBA
显示偏移整数相对于角色中心的Y轴偏移
名称显示整数0 焦点显示 1 持续显示

光影效果

让角色增加一个光影效果。

名称类型说明
锚点x小数光源效果锚点x
锚点y小数光源效果锚点y
水平缩放小数光影的水平缩放倍数
垂直缩放小数光影的垂直缩放倍数
颜色RGBA光影的色调
光影效果 = {锚点x=0.5,锚点y=0.5,水平缩放=2.0,垂直缩放=2.0,颜色=RGBA(255, 220, 180,255)},

装备

  • 为角色增加一些初始装备,增强角色属性,还可以关联装备格子控件,格子道具发生变化时角色属性同步变化,
  • 位置数量和位置名称都没有限制,可以随意填写。
名称类型说明
名称文本道具的名称
显示外观逻辑如果道具有外观,会替换角色的纸娃娃
格子文本格子控件的url 写法:"窗口名称/控件名称"
附加table默认:{} 会传递到道具的创建事件中
装备 = {
    武器 = {名称="八荒刀",显示外观=true,格子="角色窗口/主角武器"},
    衣服 = {名称="",显示外观=true,格子="角色窗口/主角衣服"},
    左手镯 = {名称="",显示外观=true,格子="角色窗口/主角手镯1"},
    右手镯 = {名称="",显示外观=true,格子="角色窗口/主角手镯2"},
    戒指1 = {名称="",显示外观=true,格子="角色窗口/主角戒指1"},
    戒指2 = {名称="",显示外观=true,格子="角色窗口/主角戒指2"},

    稻草人的配饰 = {名称="木剑",显示外观=false},
    青铜兽的牙齿 = {名称="铜戒指",显示外观=false},
    ...
    ...
},

掉落

  • 角色死亡后是否触发道具掉落。格式为 {"道具名称 掉落数量/最大几率","道具名称 掉落数量/最大几率",...}
  • 物品掉落前会触发道具事件创建,可以在这里实现随机属性。
掉落 = {"八荒刀 1/2","粗布衣 1/2","金创药小 1/2","金币100 1/2"}

掉落几率

  • 为掉落表中的所有道具进行统一的掉落增幅。默认值:100
  • 假设 木剑 1/10 掉落几率 = 200,此时 木剑的实际效果是 1/5
  • 假设 木剑 1/10 掉落几率 = 50,此时 木剑的实际效果是 1/20
  • 假设 木剑 1/10 掉落几率 = 0,此时 木剑 不会掉落

技能表

  • 角色自带的技能,你可以填完整的技能对象配置,也可以使用已经加入系统的公共技能组件。版本号 > 0.1
  • 使用公共技能组件,可以设置不同的属性 自动释放 优先级 间隔 hp mp
    技能表 = { 
        {
            名称 = "火球术",
            自动释放 = true,
            优先级 = 1,
            间隔 = 2000,
            mp = 5,
        },
        {
            类型 = "技能",
            名称 = "普通攻击",
            显示名 = "普通攻击",
            图标 = "",
            攻击距离 = 1,
            动作 = "攻击",
            目标阵营 = "敌方",		
            目标位置 = 0,		   		
            伤害延迟 = 500,
            伤害公式 = "a.攻击 ^ 2 / ( a.攻击 + b.防御 ) * (0.8 + math.random()*0.2)", -- a 我方 b 敌方
            受伤效果 = {几率=100,动作=true,音效=true},
        },

    },

系统事件

🔹 创建

角色在地图中创建后触发

回调参数类型说明描述
角色对象 角色对象

示例

系统事件 = {
    创建 = function (角色对象)
        调试输出(角色对象.名称)
    end
}

🔹 出生

角色出生,重生时触发

回调参数类型说明描述
角色对象 角色对象
重生次数 整数

示例

系统事件 = {
    出生 = function (角色对象,重生次数)
        调试输出(角色对象.名称,重生次数)
    end
}

🔹 移动

  • 角色对象移动时触发。
  • 信号:0 角色准备移动 返回 false 可以拦截移动
  • 信号:1 角色开始移动 返回 false 可以拦截移动
  • 信号:2 角色移动完成 返回 false 可以拦截移动并返回上个位置。
回调参数类型说明描述
角色对象 角色对象
x 整数信号:0,1时,x,y是将要移动到的目标格子
y 整数信号:2时,x,y是已经抵达的地图格子
信号 整数移动信号 0:准备移动 1:开始移动 2:移动完成
方向 整数移动方向
步距 整数移动的距离

示例

系统事件 = {
    移动 = function (角色对象,x,y,信号,方向,步距)
        -- 信号 0 准备移动  1 开始移动  2 完成移动
        local 地图对象 = 角色对象.地图
        if (地图对象.名称 == "地图1") then
            if (信号 == 2 and x == 7 and  y == 5) then
                --角色对象.瞬移(2,5,2,"地图2")
                return false    -- 拦截 回到上一个格子
            end
        end
    end,
}

🔹 受伤

  • 角色对象受伤时触发。
  • 返回数值可以修改掉血结果。
回调参数类型说明描述
角色对象 角色对象
掉血值 整数
剩余血量 整数
总血量 整数
伤害来源 角色对象
伤害类型 文本默认 躲避 暴击 其他:通过受伤接口传递进来的类型
伤害组件 技能对象/状态对象/nil哪种组件产生的伤害

示例

系统事件 = {
    受伤 = function (角色对象,掉血值,剩余血量,总血量,伤害来源,伤害类型,伤害组件)
        
        if (掉血值 <= 0) then -- 无伤害 躲避
            引擎.弹出文字(角色对象.x,角色对象.y-角色对象.角色高度 * 0.5,"躲" ,"艺术字2",角色对象.地图,{动效=3});
            return
        end

        if (伤害类型 == "暴击") then
            引擎.弹出文字(角色对象.x,角色对象.y-角色对象.角色高度 * 0.5,"暴" ,"艺术字2",角色对象.地图,{动效=3});
        end

        if (伤害组件 and 伤害组件.类型 == "技能" and 伤害类型 ~= "连伤") then
            if (伤害组件.名称 == "基本剑术") then
                local 半血 = math.ceil(掉血值 * 0.5)
                角色对象.受伤(半血,伤害来源,"连伤", {掉血效果 = 3},伤害组件)
                角色对象.受伤(半血,伤害来源,"连伤", {掉血效果 = 3},伤害组件)
            end
        end
        
    end,
}

🔹 死亡

角色死亡后触发

回调参数类型说明描述
角色对象 角色对象
伤害来源 角色对象 只有被角色对象杀死才会有伤害来源

示例

系统事件 = {
    死亡 = function(角色对象,伤害来源)	
        调试输出("死亡了", 角色对象.名称)
    end,
}

🔹 点击

角色被鼠标点击时触发,返回true可以拦截角色移动事件。

回调参数类型说明描述
角色对象 角色对象
键值 整数 0:左键 1:右键 2:中键。
功能键 整数1:Ctrl 2:Shift 3:Alt 是否处于按下状态

示例

系统事件 = {
    点击 = function(角色对象,键值,功能键)	

        if (键值 == 1) then -- 右键点击 
            return 
        end

        引擎.对话(0,0,"",
        [[
        你要干什么?
        
        #Y#@传送@去下个地图@  
        
        #Y#@exit@没事@
        ]]) 

        return true -- 拦截移动
    end,

    传送 = function ()
        
        if (引擎.地图.名称 == "暗殿密室2") then
            引擎.地图.主角.瞬移(22,19,0,"泡点图")
        else
            引擎.地图.主角.瞬移(24,26,0,"暗殿密室2")
        end
        
        return true
    end,
}

🔹 升级

角色等级发生变化时触发

回调参数类型说明描述
角色对象 角色对象
等级 整数

示例

系统事件 = {
    升级 = function(角色对象,等级)	
        引擎.屏幕提示("#G升到" .. 等级 .. "级了!")
    end
}

🔹 目标变化

角色的攻击目标发生变化时候触发

回调参数类型说明描述
角色对象 角色对象
目标角色 角色对象

示例

系统事件 = {
    目标变化 = function (角色对象,目标角色)
        if (目标角色 == nil) then
            L系统.选中目标(nil)
        else 
            L系统.选中目标(目标角色)
        end
    end
}

🔹 获得经验

从其他角色身上获得经验后触发,可以返回整数值修改

回调参数类型说明描述
角色对象 角色对象
经验值 整数

示例

系统事件 = {
    获得经验 = function(角色对象,经验值)	
        引擎.屏幕提示("#G经验 +" .. 经验值)
    --    return 经验值 * 2  -- 双倍经验 
    end
}

🔹 移动完成

角色调用接口 移动到 抵达目标点触发

回调参数类型说明描述
角色对象 角色对象
格子x 整数
格子y 整数

示例

系统事件 = {
    移动完成 = function (角色对象,x,y)
        调试输出(角色对象.名称,x,y)
    end
}
Prev
地图
Next
道具