|
|
- %%% -------------------------------------------------------
- %%% @author huangyongxing@yeah.net
- %%% @doc 场景
- %%% -------------------------------------------------------
- %%% 关于场景网格的划分
- %%% 场景划分网格是为了进行广播优化,对于非全场景广播的场景可以大幅降低移动和战斗等更新广播量
- %%% 场景网络划分后,对每个网格进行统一编号,按从左至右、从下至上的顺序编号,不需要用两个值来标识
- %%% 例如HORIZ_GRID_CNT(场景横向宽度网格数量)为5时,编号如下:
- %%% ...
- %%% 11 12 13 14 15
- %%% 6 7 8 9 10
- %%% 1 2 3 4 5
- %%% 场景元素信息变更需要广播时通常可以最多只对周围9个网格进行广播,即九宫格广播
- %%% -------------------------------------------------------
- %%% 关于场景坐标
- %%% 坐标系原点在屏幕左下角,每个像素对应一个坐标点
- %%% 服务端和客户端中角色坐标即为这个坐标系中的坐标
- %%% -------------------------------------------------------
- %%% 关于场景玩家数记录
- %%% 1. scene_role_count包含场景进程对应角色数量、相应各房间(CopyId区分)的角色数量
- %%% 场景进程存储这份数据在进程字典中,便于读写更新操作
- %%% 同时将这份数据写入ETS表供其他进程查询用
- %%% scene_mgr为ETS所有者,对ETS表只读;场景进程对ETS表只写不读;其他进程只读
- %%% 2. 除了场景角色数量,还有每个网格附近九格区域角色总数量记录,只保存在场景进程的进程字典
- %%% 附近九格角色总数量主要用于广播减频功能
- %%% @doc
- %%% -------------------------------------------------------
- -ifndef(SCENE_HRL).
- -define(SCENE_HRL, ok).
-
- -include("mon.hrl").
-
- %% 场景数据结构
- -define(ETS_SCENE, ets_scene).
-
- %% 场景玩家数(进程字典KEY,同时也是相应ETS表的表名)
- -define(SCENE_ROLE_COUNT, scene_role_count).
-
- %% 特定网格(AreaId)的附近九格区域总人数记录(进程字典KEY)
- -define(AREA_ROLE_COUNT(AreaId, CopyId), {area_role_count, CopyId, AreaId}).
-
- %% 场景中记录各房间或区域有哪些角色的进程字典KEY
- -define(AREA_ROLES(AreaId, CopyId), {area_roles, CopyId, AreaId}). % 场景区域中的角色Key
- -define(ROOM_ROLES(CopyId), {room_roles, CopyId}). % 场景房间中的角色key
-
- %% 场景配置中,某场景是否全场景广播的属性值
- -define(BROADCAST_0, 0). % 不广播
- -define(BROADCAST_1, 1). % 广播
-
- %% 怪物类型定义 0普通怪,1采集怪,2任务采集怪,3护送怪,4拾取怪,6进击怪,7塔防怪,9自动进击怪,10非进攻巡逻怪
- -define(MON_KIND_NORMAL, 0). % 普通怪
- -define(MON_KIND_COLLECT, 1). % 采集怪
- -define(MON_KIND_TASK_COLLECT, 2). % 任务采集怪
- -define(MON_KIND_CONVOY, 3). % 护送怪
- -define(MON_KIND_PICK, 4). % 拾取怪
-
- -define(MON_KIND_ATT, 6). % 进击怪
- -define(MON_KIND_TOWER_DEF, 7). % 塔防怪
- -define(MON_KIND_ATT_AUTO, 9). % 自动进击怪:根据指定的攻击对象自动寻路
- -define(MON_KIND_WALK_AUTO, 10). % 宝宝副本特殊怪物(遇到攻击会反击,否则按规定路径行走)
-
- %% 怪物Boss定义 0普通怪(普通怪),1普通野外怪(普通怪),2精英怪物(普通怪),3赏金BOSS(赏金专用),4世界BOSS(世界BOSS专用),
- %% 5不死BOSS,6副本BOSS,7任务BOSS,8战场BOSS(不可被击退),9废都BOSS,10废都BOSS精英,11活动BOSS
- -define(MON_NORMAL, 0). % 普通怪(普通怪)
- -define(MON_NORMAL_OUSIDE, 1). % 普通野外怪(普通怪)
- -define(MON_ELITE, 2). % 精英怪物(普通怪)
- -define(MON_REWARD_BOSS, 3). % 赏金BOSS(赏金专用)/次元幻魔
- -define(MON_WORLD_BOSS, 4). % 世界BOSS(世界BOSS专用)
- -define(MON_KEEP_ALIVE, 5). % 不死BOSS: 受击时血量高于100,血量不变(血量变化由具体玩法处理);小于100时,自然扣血
- -define(MON_DUN_BOSS, 6). % 副本BOSS
- -define(MON_TASK_BOSS, 7). % 任务BOSS
- -define(MON_ACT_BATTLE, 8). % 战场BOSS(不可被击退)
- -define(MON_DESERTED_BOSS, 9). % 废都BOSS/混乱星域
- -define(MON_DESERTED_ELITE, 10). % 废都BOSS精英/混乱星域
- -define(MON_ACT_BOSS, 11). % 活动BOSS
- -define(MON_HOME_BOSS, 12). % 幻魔之家BOSS
- -define(MON_HOME_GBOSS, 13). % 幻魔之家(社团)BOSS
-
- %% 传送类型
- -define(TRANS_TYPE_SERVER, 0). % 服务器传送
- -define(TRANS_TYPE_FLY, 1). % 小飞鞋
- -define(TRANS_TYPE_WORLD, 2). % 世界传送(到场景出生点)
- -define(TRANS_TYPE_GATE_NEAR, 3). % 传送门 - 邻近城市传送(传统传送门)
- -define(TRANS_TYPE_GATE_ANY, 4). % 传送门 - 任意城市传送(需服务端计算距指定坐标最近的目标场景传送门)
-
- -define(IN_IDLE, 0). %% 正常状态
- -define(IN_FIRE, 1). %% 祝火状态
-
- %% 不死怪: 血量高于100时,血量不变,小于100时,自然扣血
- -define(KEEP_ALIVE_MON_DIE_HP, 100).
-
- %% 大世界镜像场景id
- -define(MIRROR_IMAGE_SCENE(SceneId), (SceneId * 10 + 1)).
- %% -------------------------------------------------------
- %% 场景逻辑点坐标与网格说明
- %%
- %% LOGIC_PT 即 logic point,服务端与客户端约定,
- %% 按一定宽度与高度(单位:像素),划分出的方格,即为逻辑点
- %%
- %% GRID 即为网格(九宫格广播依赖于网格划分,相邻九个GRID组成一个广播的九宫格)
- %%
- %% HORIZ_GRID_CNT 即为 水平方向上网格的数量(为了使网格采用一维数组编号,
- %% 所以需要定义此值。此值与网格的像素宽度,共同决定了地图水平宽度上限)
- %% 网格编号由服务端管理(广播需要),不发送给前端
- %%
- %% -------------------------------------------------------
-
- %% GRID_WIDTH 和 GRID_HEIGHT 需要按主流分辨率来决定,
- %% 九格广播的情况下,一个网格要超半屏,才不易引起边界上突然失踪的问题
- %% 在近3D的视角下,横向无偏角,实际长度一致,纵向有偏角,实际需要更长一些
- -define(LOGIC_PT_WIDTH, 100). % 一个逻辑坐标点X轴(水平)方向长度(pixel)
- -define(LOGIC_PT_HEIGHT, 100). % 一个逻辑坐标点Y轴(垂直)方向长度(pixel)
- -define(GRID_WIDTH, (12 * ?LOGIC_PT_WIDTH)). % 一个网格的横向像素长度(pixel)
- -define(GRID_HEIGHT, (12 * ?LOGIC_PT_HEIGHT)). % 一个网格的纵向像素长度(pixel)
- %% 场景横向划分网格数量:
- %% 可支持的地图横向宽度上限为?GRID_WIDTH * ?HORIZ_GRID_CNT,地图宽度如超出会引起移动广播问题
- -define(HORIZ_GRID_CNT, 30).
-
- %% 坐标系原点在屏幕左下角
- -define(GRID_OFFSET_M, 0). % 九宫格中间格子编号偏移值
- -define(GRID_OFFSET_R, 1). % 九宫格右边格子编号偏移值
- -define(GRID_OFFSET_L, -1). % 九宫格左边格子编号偏移值
- -define(GRID_OFFSET_U, ?HORIZ_GRID_CNT). % 九宫格上边格子编号偏移值
- -define(GRID_OFFSET_D, -?HORIZ_GRID_CNT). % 九宫格下边格子编号偏移值
- -define(GRID_OFFSET_LU, (?HORIZ_GRID_CNT-1)). % 九宫格左上边格子编号偏移值
- -define(GRID_OFFSET_LD, (-?HORIZ_GRID_CNT-1)). % 九宫格左下边格子编号偏移值
- -define(GRID_OFFSET_RU, (?HORIZ_GRID_CNT+1)). % 九宫格右上边格子编号偏移值
- -define(GRID_OFFSET_RD, (-?HORIZ_GRID_CNT+1)). % 九宫格右下边格子编号偏移值
- %% -------------------------------------------------------
-
- %% 场景类型定义.(特殊的活动最好新加场景类型)
- %% 主类型-影响生成逻辑,客户端ui, 对应#ets_scene.type
- -define(SCENE_TYPE_NORMAL, 0). % 主城(普通场景)
- -define(SCENE_TYPE_OUTSIDE, 1). % 野外场景
- -define(SCENE_TYPE_DUNGEON, 2). % 副本场景
- -define(SCENE_TYPE_WORLD_BOSS, 3). % 世界BOSS场景
- -define(SCENE_TYPE_GUILD, 4). % 公会场景
- -define(SCENE_TYPE_ACTIVE, 5). % 活动场景(通用)
- -define(SCENE_TYPE_VOID_FAM, 6). % 无尽领域
- -define(SCENE_TYPE_REWARD_BOSS, 7). % 赏金BOSS场景
- -define(SCENE_TYPE_GWAR, 8). % 百团大战
- -define(SCENE_TYPE_ARENA, 9). % 9 竞技联赛(竞技场)
- -define(SCENE_TYPE_HOT_SPRING, 10). % 10 舞池派对(温泉)
- -define(SCENE_TYPE_MADNESS, 11). % 狂战领域
- -define(SCENE_TYPE_3v3, 12). % 3V3
- -define(SCENE_TYPE_DRUMWAR, 13). % 钻石大战
- -define(SCENE_TYPE_1vN, 14). % 1vN
- -define(SCENE_TYPE_CAMP_WAR, 15). % 跨服团战
- -define(SCENE_TYPE_CGW, 16). % 跨服国战
- -define(SCENE_TYPE_WASTELAND, 17). % 废土战场(饥饿游戏)场景
- -define(SCENE_TYPE_DESERTED_BOSS, 18). % 混乱星域BOSS场景
- -define(SCENE_TYPE_JUMP_ACT, 19). % 跳一跳玩法
- -define(SCENE_TYPE_HOME_BOSS, 20). % 幻魔/社团之家
- -define(SCENE_TYPE_EXP_SEA, 21). % 经验海
-
- %% 下面的作废 新增顶掉 删掉旧功能
- -define(SCENE_TYPE_TOPPK, 99). % 巅峰竞技
-
- %% 次类型:按场景的对角色的影响而分,对应 #ets_scene.subtype
- -define(SCENE_SUBTYPE_NORMAL, 0). % 场景次类型-自由切换pk模式场景,入场pk状态看pkstate,入场后可以切换pk状态
- -define(SCENE_SUBTYPE_SAFE, 1). % 场景次类型-安全场景,强制切换为和平状态。无法战斗
- -define(SCENE_SUBTYPE_PK, 2). % 场景次类型-强制切换pk状态场景,入场pk状态看pkstate,入场后不能切换pk状态
- -define(SCENE_SUBTYPE_GROUP, 3). % 场景次类型-强制切换pk为和平状态场景,入场后不能切换pk状态,pk按照分组模式
-
- %% 场景所在节点类型 #ets_scene.cls_type
- -define(SCENE_CLS_TYPE_GAME, 0). % 非跨服场景
- -define(SCENE_CLS_TYPE_CENTER, 1). % 跨服场景
-
- %% 场景所在节点类型 #ets_scene.broadcast
- -define(BROADCAST_AREA, 0). % 九宫格广播
- -define(BROADCAST_ALL, 1). % 全场景广播
-
- %% 场景mark类型
- -define(SCENE_MASK_NORMAL, 0).
- -define(SCENE_MASK_BLOCK, -1).
- -define(SCENE_MASK_SAFE, -2).
-
- %% 移动类型
- -define(MOVE_ROLE_WALK, 0). % 正常走路
- -define(MOVE_ROLE_JUMP, 1). % 跳跃(主动式)
- -define(MOVE_ROLE_ACCELERATE, 2). % 任务加速
- -define(MOVE_ROLE_FLASH, 3). % 闪现移动
- -define(MOVE_ROLE_TASK_JUMP, 4). % 任务飞行、起跳点跳跃等(被动式)
- -define(MOVE_ROLE_DASH, 5). % 冲刺(前端用)
- -define(MOVE_ROLE_BLINK, 6). % 瞬移
- %% 服务端内部值,由MOVE_ROLE_JUMP转换而来,以精确度为代价省去场景进程中的计算逻辑
- -define(MOVE_ROLE_JUMP_COST_ENG, 101). % 跳跃(消耗能量,服务端MOVE_ROLE_JUMP的特定状态)
-
- %% 伙伴战斗类型
- -define(PARTNER_BATTLE_TYPE_NO, 0). % 不出战
- -define(PARTNER_BATTLE_TYPE_GROUP, 1). % 伙伴组出战(位置1、2为一组,位置3、4为一组)
- -define(PARTNER_BATTLE_TYPE_DIE_SHIFT, 2). % 死亡切换(默认出两个)
- -define(PARTNER_BATTLE_TYPE_ROBOT_ALL, 3). % 机器人的伙伴
-
- %% 复活类型
- % 1元宝原地复活
- % 2绑定元宝原地复活
- % 3回城复活
- % 4原血量复活
- % 5原地满血复活
- % 8挂机自动复活
- % 9通用副本复活
- -define(REVIVE_DUNGEON, 9). %% 副本复活
-
-
- %% --------------------------------------------------------------
- %% 以下复活类型待定
- -define(REVIVE_KF_3V3, 10). %% 跨服3v3
- -define(REVIVE_MELEE, 11). %% 大乱斗钻石原地复活
- -define(REVIVE_DRUMWARD, 12). %% 钻石大战复活
- -define(REVIVE_KF_TOWN_WAR_OWN, 13). %% 跨服城战复活点复活
- -define(REVIVE_KF_TOWN_WAR_BORN, 14). %% 跨服城战出生点复活
- -define(REVIVE_MELEE_FREE, 15). %% 大乱斗免费原地复活
- -define(REVIVE_FOR_GOODS, 16). %% 使用复活券原地复活
-
- -define(REVIVE_MAX_TYPE, ?REVIVE_FOR_GOODS). %% 最大复活类型
-
- %% 脱离战斗时间(s)
- -define(ESCAPE_ATT_TIME, 10).
-
- -define(EXP_SHARE_ALL_TO_ATTACKER, 0). % 所有伤害者获得所有经验
- -define(EXP_SHARE_PART_TO_ATTACKER, 1). % 按照伤害比例分配经验
- -define(EXP_SHARE_TO_SCENE, 2). % 同场景的玩家获得经验 比例按动态经验和个人等级挂钩
- -define(EXP_SHARE_ALL_TO_ATTACKER_DYNAMIC, 3). % 所有伤害者获得所有经验 比例按动态经验和个人等级挂钩
-
-
- %% 场景房间人数上限的最小限制
- -ifdef(DEV_SERVER).
- -define(MIN_SCENE_MAX_ROLE, 1).
- -else.
- -define(MIN_SCENE_MAX_ROLE, 30).
- -endif.
-
- %% 玩家场景更新类型
- -define(SCENE_USER_UPDATE_MATE_ROLE, 10). % 羁绊对象更新
- -define(SCENE_USER_UPDATE_MATE_TITLE, 11). % 羁绊称号更新
- -define(SCENE_USER_UPDATE_MATE_LV, 12). % 羁绊等级更新
- -define(SCENE_USER_UPDATE_FOLLOW_GUARD, 13). % 守护跟随更新
- %% -----------------------------------------------------------------
- %% 一些特殊的场景或场景类型定义
- %% -----------------------------------------------------------------
-
- %% 需要服务器强制自动动态创建分线的场景类型
- -define(SCENE_TYPE_NEED_SUB_LINE, [
- ?SCENE_TYPE_NORMAL
- ,?SCENE_TYPE_OUTSIDE
- ,?SCENE_TYPE_GWAR
- ,?SCENE_TYPE_MADNESS
- ,?SCENE_TYPE_VOID_FAM
- ]).
-
- %% 玩家能够主动切换分线的场景类型SCENE_TYPE_NORMAL和SCENE_TYPE_OUTSIDE 见12040和12041协议
- -define(SCENE_TYPE_CAN_ACTIVE_SWITCH, [
- ?SCENE_TYPE_NORMAL,
- ?SCENE_TYPE_OUTSIDE
- ]).
-
- %% 掉落归属显示的boss
- -define(IS_DROP_BOSS(X), lists:member(X,
- [
- ?MON_REWARD_BOSS,
- ?MON_DESERTED_BOSS,
- ?MON_DESERTED_ELITE,
- ?MON_HOME_BOSS,
- ?MON_HOME_GBOSS
- ])).
-
- %% 是不是boss
- -define(IS_BOSS(X),
- lists:member(X,
- [
- ?MON_REWARD_BOSS,
- ?MON_DUN_BOSS,
- ?MON_TASK_BOSS,
- ?MON_DESERTED_BOSS,
- ?MON_DESERTED_ELITE,
- ?MON_HOME_BOSS,
- ?MON_HOME_GBOSS
- ]
- )).
-
- %% 禁止通过12005协议传送进入的场景id列表
- -define(FORBID_SCENE_IDS, [4101, 4301, 4302]).
- %% -----------------------------------------------------------------
-
- %% 场景进程字典
- %% Key:{dungeon_hp_rate, CopyId}, Value:HpRateList. 副本辅助信息,CopyId:副本id
-
- %% 怪物进程字典
- %% Key:{dungeon_hp_rate, MonId}, Value:HpRateList. 副本血量额外触发
-
- %% 场景数据结构
- -record(ets_scene, {
- id = 0 :: non_neg_integer(), % 场景ID包括资源id
- pool_id=0 :: non_neg_integer(), % 场景进程id
- % bpid = 0, % 广播进程pid
- name = <<>>, % 场景名称
- type = 0 :: non_neg_integer(), % 场景主类型(参考上面定义)
- subtype = 0 :: non_neg_integer(), % 场景次类型(参考上面定义)
- cls_type = 0 :: non_neg_integer(), % 所在节点(参考上面定义)
- broadcast = 0 :: non_neg_integer(), % 广播类型(参考上面定义)
- x = 0 :: non_neg_integer(), % 默认开始点
- y = 0 :: non_neg_integer(), % 默认开始点
- elem=[] :: list(), % 传送阵坐标
- requirement = [] :: list(), % 进入需求[{lv, SLv, RLv}]
- mask = "", % 障碍点数据
- npc = [], % npc数据
- mon = [], % 默认怪物数据
- jump = [], % 跳跃点配置
- width = 0 :: non_neg_integer(), % 场景资源宽度px
- height = 0 :: non_neg_integer(), % 场景资源长度px
- is_have_safe_area = 0 :: non_neg_integer(), % 是否有安全区(0没有, 1有)
- is_have_minimap = 0 :: non_neg_integer(), % 是否有小地图(0:无;1:有小地图)
- mount = 0 :: non_neg_integer(), % 是否可以上坐骑(0不能,1可以)
- parnter_battle_type = 0, % 伙伴战斗类型
- fuhuoscene = 0 :: non_neg_integer(), % 复活场景
- reborn_xys = [] :: list() % 复活坐标列表([{X, Y}, ...])
- }).
-
- %% 场景玩家数
- -record(scene_role_count, {
- key = {0, 0} % SceneKey: {场景Id, 场景PoolId}
- ,type = 0 % 场景类型
- ,num = 0 % 当前场景进程下的场景人数
- ,change_time = 0 % 变更时间
- ,num_maps = #{} % 不同房间(copy_id)的人数 #{CopyId => Num}
- }).
-
- %% 场景其他属性
- -record(ets_scene_other, {
- id = 0, % 场景id
- room_max_people = 100 % 房间最大人数
- }).
-
- %% 场景用户数据
- %% 只保留场景所需的信息
- -record(ets_scene_user, {
- id = 0, % 角色id
- scene = 0, % 场景id
- scene_pool_id=0, % 场景进程id
- copy_id = 0, % 房间id
- x = 0, % X坐标
- y = 0, % Y坐标
- last_load_scene = 0, % 最近load的场景(用于检测是否全新进入场景,避免复活或其他load_scene操作影响)
- last_load_pool = 0, % 最近load的场景分线(用于检测是否全新进入场景,避免复活或其他load_scene操作影响)
- server_id = 0, % 来自的服务器独立唯一标识
- node=none, % 来自节点
- platform = "", % 平台标示
- server_num = 0, % 所在的服标示
- server_name = <<>>, % 选择服务器的名字
- source="", % 渠道来源
- sid = undefined, % 玩家发送消息进程
- pid = undefined, % 玩家进程
- figure=undefined, % #figure{} (figure.hrl)
- battle_attr=undefined, % #battle_attr{} (attr.hrl)
- skill_list = [], % 技能列表
- skill_cd = [], % 技能cd
- skill_combo = [], % 技能连技(切换场景清空)
- skill_combo_ders = [], % 连技受击者(combo技能不重新选择攻击目标)[{Sign, Id}]
- shaking_skill = 0, % 正在前摇的技能id
- main_skill = {0, 0}, % 连技中主技能
- skill_link = [], % 连接技能
- skill_passive = [], % 被动技能的汇总(人物的被动=人被+天赋+xxx...)
- skill_pet_passive = [], % 宠物独立战斗的被动技能列表
- skill_talent_active_list = [], % 天赋主动技能列表 [{SkillId, SkillLv}]
- att_list = [], % 正在攻击我的怪物列表
- collect_pid = {0, 0, 0}, % 正在采集的目标:{MonPid, MonId, MonCfgId}
- hp_resume_ref = undefined, % 回血定时器
- follow_target_xy={0,0}, % 跟随目标xy坐标
- online = 1, % 是否真实在线
- team = 0, % 组队 #status_team{} (team.hrl)
- dun_multi = 0, % 跨服组队 #role_dun_multi{} 只放team_id和dun_id
- is_ride = 0, % 是否骑乘
- mount_figure = 0, % 坐骑id
- follow_pet = 0, % 宠物跟随
- show = 0, % 展示
- quickbar_skills = [], % 当前技能快捷栏装备的技能
- change_scene_sign = 0, % 排队换线标志
- leave_scene_sign = 0, % 离开场景标志(某些活动在进入排队前就已经切换成离开场景标识)
- boss_tired = 0, % 世界BOSS疲劳值
- bl_who = 0, % boss归属标识:0:不显示;1:显示
- baby_battle_attr = undefined, % 宝具战斗属性
- partner_battle_attr = undefined, % 伙伴/ai娘战斗属性
- child_battle_attr = undefined, % 孩子战斗属性
- scene_att_objects = [], % 场景攻击方对象ID列表 [#scene_att_object{}]
- mate_role_id = 0, % 配对玩家id 目前是海滩约会对象的id 默认为0
- att_tired = 0, % 攻击疲劳值,100为上限,不能造成伤害
- act_label = [], % 活动标识 [{K,V}]
- be_follow_mons = [], % 被跟随的怪物自增id列表
- boss_crush_r = 0, % boss碾压参数
- can_att_list = [], % 可攻击对象 [{对象类型, 对象列表}] eg:[{?BATTLE_SIGN_MON, [怪物配置Id]}, {?BATTLE_SIGN_PLAYER, [玩家ID: 空则表示所有]}]
- cannot_beatt_list = [] % 不可被攻击对象 [{对象类型, 对象列表}]
- ,mate_name = "" % 展示的羁绊名字
- ,mate_title = "" % 羁绊称号,如果该称号不为空,则显示该称号
- ,mate_lv = 0 % 羁绊称号等级
- ,support_id = 0 % 被协助玩家id
- ,support_name = "" % 被协助玩家名字
- ,support_team = 0 % 被协助玩家队伍id
- ,support_team_name = "" % 被协助玩家队长名字
- ,support_content = [] % 被协助者简要信息
- ,scene_motion = undefined % 运动能量相关行为信息
- ,badge = []
- ,role_dance = 0
- ,god_fighting = []
- ,offline_hosting = [] % 离线托管数据
- ,deserted_boss_tired = [] % 废都boss疲劳值
- ,support_pet_list = [] % 助战宠物列表[{宠物Id,星级,是否觉醒,是否主战}]
- ,unite_buffs = #{} % 联合BUFF
- ,reb_protect_time = 0 % 赏金boss免战时间
- ,deb_protect_time = 0 % 星域幻魔免战时间
- }).
-
- -record(ets_npc, {
- id = 0, % 唯一id
- target = 0, % 开服N天后 本服跨服主城NPC映射 任务使用
- func = 0, % 功能
- icon = 0, % 场景模型资源id
- image = 0, % 头像
- title = "", % 称谓
- name = "", % npc名字
- scene = 0, % npc所在场景
- copy_id = 0, % npc所在房间
- show = 1, % 默认是否显示 1显示 0不显示(默认显示)
- anima = "", % 模型动作和角度参数
- sname = "",
- x,
- y,
- talk,
- realm = 0,
- icon_scale = 0
- }).
-
- %% 场景进程状态数据结构
- -record(scene_state, {
- scene = #ets_scene{} % 场景数据
- ,msg_count = 0 % 已处理的消息数量
- ,msg_filter_len = 0 % 消息需要检查过滤的数量
- ,mon_mgr_pid = undefined % 场景怪物逻辑进程
- }).
-
- %% A*寻路
- -record(path_point, {
- xy,
- g,
- h,
- f,
- last_point
- }).
-
- %% add_buff_to_role AI参数
- -record(add_buff_to_role_args, {
- role_num = 0 % 给多少个玩家增加buff
- ,skill_id = 0 % 技能Id
- ,skill_lev = 0 % 技能等级
- ,scene = 0 % 场景Id
- ,scene_pool_id = 0 % 场景分线Id
- ,effect = [] % buff定时完了要执行什么效果。比如创建怪物[#create_mon_args{}]
- ,buff_time = 0 % buff持续时间
- ,role_id_list = [] % 玩家Id列表
- }).
-
- -endif.
|