%% ---------------------------------------------------------------------------
|
|
%% @doc server.hrl
|
|
%% @author ming_up@foxmail.com
|
|
%% @since 2016-04-06
|
|
%% @deprecated 功能性record保存在独立文件就可以了,在mod_login:server_login处初始化
|
|
%% ---------------------------------------------------------------------------
|
|
-define(ETS_ONLINE, ets_online). % 在线列表
|
|
-define(ETS_ROLE_FUNC_CHECK, ets_role_func_check). % 玩家在线功能定时检测超时的数据
|
|
|
|
%% #player_status.mark 用法
|
|
-define(MARK_SELF_CHARGE, 2#00000001). %% 自充值标记
|
|
-define(CHECK_MARK_WITH(Mark, CheckMark), Mark band CheckMark > 0).
|
|
-define(ADD_MARK(OldMark, Mark), OldMark bor Mark).
|
|
-define(REMOVE_MARK(OldMark, Mark), OldMark band (bnot Mark)).
|
|
|
|
%% ets_role_func_check中的FuncType类型定义
|
|
-define(FUNC_TYPE_FASHION, fashion). %% 时装
|
|
-define(FUNC_TYPE_DESIGNATION, designation). %% 称号
|
|
-define(FUNC_TYPE_VIP, vip). %% vip
|
|
-define(FUNC_TYPE_SUP_VIP, sup_vip). %% 贵族
|
|
-define(FUNC_TYPE_MIDNIGHT_LOG, midnight_log). %% 跨天在线日志记录
|
|
-define(FUNC_TYPE_BUFF, goods_buff_time_out). %% 物品buff过期
|
|
-define(FUNC_TYPE_RUSH_RANK_LV, rush_rank_lv). %% 开服冲榜等级榜
|
|
|
|
%% 玩家身上的过期时间检查
|
|
-record(ets_role_func_check, {
|
|
key_id = {0, 0}, % {RoleId, FuncType} 每分钟检查一次
|
|
end_times = [] % 结束时间列表|或者结束时间点:例如称号功能[{称号id, 结束时间}...]
|
|
}).
|
|
|
|
%% 只为玩家统计用的,不要加别的字段进来了
|
|
-record(ets_online, {
|
|
id = 0, % 角色id
|
|
pid = 0, % 玩家进程
|
|
sid = undefined % 发送进程
|
|
}).
|
|
|
|
%%记录用户一些常用信息
|
|
-record(player_status, {
|
|
id = 0, % 角色在本服id
|
|
server_id = 0, % 角色所在的服务器id
|
|
platform = "", % 平台标示
|
|
server_num = 0, % 所在的服标示
|
|
server_name = <<>>, % 选择服务器的名字
|
|
reg_server_id = 0, % 选择服务器的服id
|
|
accid = 0, % 平台账号id
|
|
accname = [], % 平台账号
|
|
acc_roles = [], % 同一账号下的角色id列表
|
|
source="", % 渠道来源
|
|
login_time_before_last = 0, % 上一次登陆时间
|
|
last_login_time = 0, % 最后登陆时间
|
|
last_logout_time = 0, % 上一次退出游戏时间(unixtime,秒)
|
|
comeback_state = 0, % 玩家封测回归状态
|
|
|
|
socket = none, % socket
|
|
|
|
c_rename = 0, % 是否可以免费改名
|
|
c_rename_time = 0, % 上次改名时间(unixtime,秒)
|
|
|
|
ip = "", % ip地址 如 "0.0.0.0"
|
|
network_type = 0, % 网络类型(0:未知网络|1:wifi网络|2:4g网络)
|
|
online = 1, % 是否真实在线 0:离线;1:在线;2离线挂机中
|
|
|
|
figure=undefined, % 角色独有外观信息#figure{}(include/figure.hrl)
|
|
battle_attr=undefined, % 基础战斗属性#battle_attr{}(include/attr.hrl)
|
|
|
|
gold = 0, % 钻石
|
|
bgold = 0, % 绑钻
|
|
fgold = 0, % 粉钻
|
|
coin = 0, % 铜钱
|
|
bcoin = 0, % 绑定铜钱
|
|
gcoin = 0, % 公会货币 废弃
|
|
gfame = 0, % 社团贡献
|
|
honour = 0, % 名望券
|
|
chat = undefined, % 聊天设置 #status_chat{}
|
|
chat_limit_new = [], % 角色聊天次数监控
|
|
skill = undefined, % 技能 #status_skill{}(include/skill.hrl)
|
|
|
|
scene = 0 :: non_neg_integer(), % 场景id
|
|
scene_pool_id=0, % 场景进程id(一般在跨服或者单进程无法承载的时候使用,默认为0)
|
|
copy_id = 0, % 同一场景不同房间标示(可以数字,字符串任意)
|
|
pre_scene_time = 0, % 准备切换场景时间(在野外或者pk场景需要原地等待5秒)
|
|
fin_change_scene = 0, % 完成切换场景(0否|1是)
|
|
change_scene_num = 0, % 切换场景次数
|
|
fin_change_scene_ref = none, % 完成切换场景定时器引用(设置默认超时时间)
|
|
y = 0, % x坐标(px)
|
|
x = 0, % y坐标(px)
|
|
longitude = 0, % 经度
|
|
latitude = 0, % 纬度
|
|
last_load_scene = 0, % 最近load的场景(用于检测是否全新进入场景,避免复活或其他load_scene操作影响)
|
|
last_load_pool = 0, % 最近load的场景分线(用于检测是否全新进入场景,避免复活或其他load_scene操作影响)
|
|
old_scene_info = undefined, % 存储可能需要回到的上一个场景位置 {OldScene, OldScenePooldId, OldCopyId, OldX, OldY}
|
|
reconnect=0, % 活动玩法中重连 0否| 1正常登录重连| 2relogin重连
|
|
|
|
pid = undefined, % 玩家服务进程
|
|
|
|
exp = 0, % 角色当前经验
|
|
exp_lim = 0, % 当前等级经验上限
|
|
exp_list = 0, % 角色等级经验列表 [{type, exp}|...] 列表数量控制在20条
|
|
talk_lim= 0, % 是否被禁言(0否,1是)
|
|
talk_lim_type = 0, % 禁言类型
|
|
talk_lim_time = 0, % 禁言截止时间
|
|
quickbar = undefined, % 技能快捷栏,#quickbar{}
|
|
team = undefined, % 队伍记录,登录会初始化为#status_team{} include/team.hrl
|
|
|
|
cell_num = 0, % 背包格子数
|
|
storage_num = 0, % 仓库格子数
|
|
|
|
last_att_main = 0, % 上次主技能出手时间(只计人物出手,用于限制出手频率,判断技能间公共cd)(ms)
|
|
last_att_time = 0, % 上次主动攻击的时间(技能有选定目标进行释放,含人物其他战斗单位出手)(ms)
|
|
last_be_att_time = 0, % 上次被攻击的时间(ms)
|
|
last_be_kill = [], % 上一次击杀我的玩家信息(用于玩家上线0血提示)[{sign, 1|2}, {name, Name}, {lv, Lv}]
|
|
|
|
can_att_list = [], % 可攻击对象 [{对象类型, 对象列表}] eg:[{?BATTLE_SIGN_MON, [怪物配置Id]}, {?BATTLE_SIGN_PLAYER, [玩家ID: 空则表示所有]}]
|
|
cannot_beatt_list = [], % 不可被攻击对象 [{对象类型, 对象列表}]
|
|
|
|
is_pay = false, % 是否有充值,true为有充值
|
|
last_pay_time = 0, % 最后充值时间
|
|
reg_time = 0, % 注册时间
|
|
sid = undefined, % 异步广播进程
|
|
|
|
change_scene_sign = 0, % 排队换线标志
|
|
leave_scene_sign = 0, % 离开场景标志(某些活动在进入排队前就已经切换成离开场景标识) 这种状态下不能攻击和受到玩家攻击
|
|
counter_pid = none, % 玩家终生次数处理进程
|
|
combat_power = 0, % 战斗力
|
|
hightest_combat_power = 0, % 历史最高战斗力
|
|
hightest_combat_power_cd = 0, % 历史最高战斗力cd结束时间戳
|
|
role_base_attr,
|
|
|
|
daily_growth = #{}, % 当日0点成长 #{0 => 最高战力, 1 => 时装星数(激活算1星)}
|
|
|
|
picture_lim = 0, % 是否允许提交头像 0:不禁止,1:禁止
|
|
npc_info = [], % npc信息([{NpcId, IsShow, SceneId, X, Y}])
|
|
|
|
player_buff = undefined, % 玩家身上的BUFF
|
|
buff_attr = undefined, % BUFF属性
|
|
goods_buff_exp_ratio = 0, % 物品buff经验加成(实数)
|
|
logout_expire_buff_exp_info = {0,0}, % 下线期间过期的经验药水信息 {经验药水物品类型Id, 过期时间戳}
|
|
exp_ratio = 0, % 经验加成数值
|
|
exp_dun_drop_ratio = 0, % 放置经验加成数值(万分比)
|
|
|
|
dsgt_status = undefined, % 称号状态 格式:#dsgt_status{}
|
|
guild = undefined, % 公会 格式:#status_guild{}
|
|
status_pet = undefined, % 宠物 格式:#status_pet{}
|
|
status_child = undefined, % 孩子 格式:#status_child{}
|
|
wardrobe = undefined, % 衣橱 格式:#status_wardrobe{}
|
|
setting = undefined, % 设置 格式:#status_setting{}
|
|
off = undefined, % 离线数据(用于查看面板) 格式:#status_off{}
|
|
dungeon = undefined, % 副本 格式#status_dungeon{}
|
|
dun_multi = undefined, % 多人副本 格式#role_dun_multi{}
|
|
follows = [], % 跟随玩家列表
|
|
follow_target_xy={0,0}, % 跟随目标xy
|
|
follow_target_conut=0, % 坐标变更次数
|
|
status_pushmail = undefined, % 邮件推送 格式#status_pushmail{}
|
|
vip_status = undefined, % vip 格式#vip_status{}
|
|
revive_status = undefined, % 死亡CD 格式 #revive_status{}
|
|
|
|
recharge_status = undefined, % 充值 格式#recharge_status{}
|
|
recharge_act_status = undefined, % 充值活动 格式#recharge_act_status{}
|
|
quick_recharge = [], % 快速充值信息 [{ProductId, MoneyGap}...]
|
|
|
|
resource_back = undefined, % 资源找回
|
|
flower = undefined, % 鲜花 格式 #flower
|
|
dress_up = undefined, % 个性装扮 格式 #status_dress_up{}
|
|
client_ver = 0, % 客户端版本号
|
|
transform_data = 0, % 转职数据 #transform_info{}
|
|
degree = undefined, % 境界学位 #degree{}
|
|
role_achievement = undefined, % 成就等级 #role_achievement{}
|
|
guild_skill = undefined % 公会技能学习 #status_guild_skill{}
|
|
|
|
,dungeon_record = undefined % 副本记录 #{DunId, RecData}
|
|
,help_type_setting = undefined % 副本助战设置
|
|
,arena_battle_pid = undefined % 竞技战场进程
|
|
%% 行为互斥锁 当前在某个活动中的时候,不能参与别的活动,无锁的时候为free 其余为:Code :: integer()
|
|
,action_lock = free
|
|
%% 注意:行为互斥锁加锁必须在lib_player:setup_action_lock/2进行加锁
|
|
%% 解锁必须在lib_player:break_action_lock/2 进行解锁
|
|
%% 上线会有修复操作,在野外的互斥状态可能会被修复lib_player:repair_action_lock/1,要注意!!!
|
|
|
|
,top_pk = undefined % 巅峰竞技
|
|
,guild_war = undefined % 公会争霸 格式 #guild_war_status{}
|
|
,currency_map = undefined % 特殊货币#{}
|
|
,login_reward = undefined % 登录奖励
|
|
,fly_state = 0 % 小飞鞋状态
|
|
,forbid_pk_etime = 0 % 玩家禁止释放技能状态结束时间戳
|
|
,last_task_id = 0 % 上一次完成的主线任务id
|
|
,mate_role_id = 0 % 配对玩家id 目前是海滩约会对象的id 默认为0
|
|
,battle_field = undefined % 战场信息 #{mod_lib => ModLib, pid => Pid}
|
|
,role_auction = undefined % 拍卖系统 格式 #status_auction{}
|
|
,local_boss = undefined % boss 格式 #status_local_boss{}
|
|
,role_3v3 = undefined % 3v3数据 格式 #role_3v3{}
|
|
,role_drum = undefined % 钻石大战 格式 #role_drum{}
|
|
|
|
,act_label = [] % 活动标识 [{K,V}]
|
|
|
|
,kf_1vn = undefined % 跨服1vn 格式 #status_kf1vn{}
|
|
,fishing = [] % 钓鱼 格式 #fishing{}
|
|
,live_skill = undefined % 生活技能 格式 #status_live_skill{}
|
|
%% 定制活动
|
|
,status_custom_act = undefined % 定制活动 #status_custom_act{}
|
|
,custom_act_investment = undefined % 运营投资活动
|
|
,overflow_gift = #{} % 超值礼包信息
|
|
,te_status = undefined % 幸运鉴宝#te_status{}
|
|
,daily_turntable = undefined % 每日活跃转盘
|
|
,spec_sell_act = #{} % 精品特卖
|
|
,cloud_buy_list = [] % 众仙云购
|
|
,rush_rank = undefined % 开服冲榜 格式 #status_rush_rank{}
|
|
,joy_wish = undefined % 欢乐许愿 格式 #joy_wish{}
|
|
,draw_record = undefined % 抽奖记录 格式 #draw_record{}
|
|
,vip_bag_onsale = undefined % VIP特惠 格式 #vip_bag_onsale{}
|
|
,lucky_flop = undefined % 幸运翻牌 格式 #lucky_flop{}
|
|
,cumulative_charge = undefined % 累充
|
|
,pellet = undefined % 弹珠活动
|
|
,treasure_house = undefined % 珍宝阁数据
|
|
|
|
,investment = undefined % 投资活动
|
|
,mark = 0 % 特殊记号 0无 1自充值账号
|
|
,scene_att_objects = [] % 场景攻击方对象ID列表 [#scene_att_object{}]
|
|
,limit_goal = #{} % 限时目标 格式 #{}
|
|
,limit_goal_soul = undefined % 限时目标星魂 格式 #limit_goal_soul_status{}
|
|
,supplication = undefined % 祈愿 格式 #supplication{}
|
|
,module_advance = [] % 功能预告
|
|
,turn_task_id = 0 % 当前转生任务id
|
|
,equipment = undefined % 装备
|
|
,role_coupon = undefined % 社交每日票券
|
|
,role_foster = undefined % 进阶系统库
|
|
,role_foster_skin = undefined % 珍宝库
|
|
,guild_task = [] % 社团劳务
|
|
,guild_shop = undefined % 社团商店
|
|
,profile_photo_info = [] % 角色头像数据 #profile_photo_info{}
|
|
,mate = undefined % 羁绊/伙伴
|
|
,role_marble = undefined % 弹珠 #role_marble{}
|
|
,exp_dun_achieve = [] % 经验副本里程碑数据
|
|
,market_data = 0 % 角色交易市场数据 #market_data{}
|
|
,chat_simulation % 模拟聊天数据
|
|
,exp_dun_drop = undefined % 放置经验数据
|
|
,guild_collect = undefined % 社团午间采集
|
|
,role_fashion = undefined % 时装
|
|
,role_liveness = undefined % 活跃度
|
|
,welfare = undefined % 福利大厅
|
|
,role_visus = undefined % 幻光
|
|
,goods_devour = undefined % 吞噬
|
|
,role_dance = 0
|
|
,role_nucleon = undefined
|
|
,role_motion % 运动行为
|
|
,last_behavior = 0 % 玩家最后一次行为
|
|
,role_convoy % 护送
|
|
,role_dun_visus = [] % 幻光副本
|
|
,role_lattice = undefined % 器灵寻宝-走格子 #role_lattice{}
|
|
,role_lattice_shop = undefined % 器灵寻宝-格子商店 #role_lattice_shop{}
|
|
,capsule_egg = undefined % 龙神扭蛋
|
|
,recharge_statistic % 充值统计
|
|
,role_dun_guard = [] % 塔防副本
|
|
,role_dun_pet = undefined % 宠物副本数据
|
|
,race_rank = undefined % 角色竞榜活动数据#role_race_rank{}
|
|
,role_god = undefined % 唤神
|
|
,offline_hosting = undefined % 离线托管
|
|
,cross_guild_war = undefined % 跨服帮战
|
|
,role_god_dun = undefined % 唤神副本相关
|
|
,role_galaxy = undefined % 星辰系统
|
|
,role_single_charge = [] % 单笔充值辅助数据
|
|
,beauty_contest = undefined % 靓丽大赛数据
|
|
,role_dun_galaxy_chapter = [] % 星辰副本-章节信息#role_chapter_info{}
|
|
,role_camp_war = undefined % #role_camp_war{}
|
|
,role_war_soul = undefined % 战魂系统
|
|
,role_uranium = undefined % 魂力系统
|
|
,role_first_top = [] % 排行榜目标奖励领取数据
|
|
,role_rank_praise = [] % 排行榜点赞数据
|
|
,passive_skills = [] % 被动技能列表
|
|
,seven_days_goal = undefined % 七日目标数据 #seven_days_goal{}
|
|
,role_legion = undefined % 战团数据
|
|
,role_cross_point= undefined % 跨服沙盘-据点争夺战
|
|
,overlord_privilege = undefined % 霸主特权数据 #overlord_info{}
|
|
,role_treasure_map = undefined % 人物藏宝图数据
|
|
,boss_first_blood = []
|
|
,equipment_task = #{}
|
|
,task_daily = undefined %跑环类每日领取情况
|
|
,dance = undefined % 舞姿
|
|
,role_guild_run_assist = undefined % 社团跑环协助
|
|
,killed_pos = []
|
|
,tower_dun_star = #{} % 爬塔副本星数奖励状态
|
|
,role_dun_child = undefined % 宝宝副本数据
|
|
,status_workroom = undefined % 时装工坊
|
|
,reb_protect_time = 0 % 赏金boss免战时间
|
|
,reb_protect_ref = [] % 赏金boss免战定时器
|
|
,deb_protect_time = 0 % 星域幻魔免战时间
|
|
,deb_protect_ref = [] % 星域幻魔免战定时器
|
|
,mobilize_combat_power = 0 % 全民动员战力
|
|
,role_act_reserve = #{} % 活动预约
|
|
,diamond_pk = #{} % 钻石擂台个人数据
|
|
,client_event = [] % 前端引导事件##[{key, value}]
|
|
|
|
|
|
,role_exp_sea = undefined % 经验海
|
|
,role_currencywish = undefined % 货币祈愿角色数据
|
|
|
|
}).
|
|
|