|
|
- %%%-------------------------------------------------------------------
- %%% @doc 废土战场(饥饿游戏)-头文件
- %%% Module : wasteland_war.hrl
- %%% Created : 2020-08-03
- %%% @Author : tyl
- %%%-------------------------------------------------------------------
-
- %% 活动模式
- -define(WAR_TYPE_LOCAL, 0). %% 本服模式
- -define(WAR_TYPE_CLS, 1). %% 跨服分区模式
-
- %% 阶段
- -define(WASTELAND_REST, 0). %% 休战阶段
- -define(WASTELAND_READY, 1). %% 准备阶段
- -define(WASTELAND_RUN, 2). %% 战斗阶段
- -define(WASTELAND_TURN, 3). %% 战场切换阶段(2s,必须避免玩家的一些操作,例如击杀积分等)
-
- %% 预备阶段时间
- % -define(READY_WAIT_TIME, 3*60).
- -define(READY_WAIT_TIME, 6*10). %% 测试
- %% 默认每轮时间
- -define(WAR_DEFAULT_DURATION, 300).
-
- %% 分战场玩家数据
- -define(WAR_FIELD_ROLE(Pool), {war_field, Pool}).
- -define(WAR_FIELD_EXIT_ROLE(Pool), {war_exit_role, Pool}). %% 被淘汰退出玩家
-
- %% 分战场推送玩家积分时间
- -define(WAR_FIELD_SEND(Pool), {war_field_send, Pool}).
-
- %% 战场排名长度
- -define(RANK_LENGTH, data_wasteland_war:get_kv_cfg(rank_num)).
- %% 复活无敌时间
- -define(WASTELAND_PROTECT_TIME, 5).
- %% 复活cd时间
- -define(WASTELAND_REVIVE_CD, 10).
- -define(WASTELAND_REVIVE_CD_KEY, wasteland_revive_cd).
-
- %% 废土结晶怪物Id
- -define(CRYSTAL_MON_ID, 11001).
- %% 击杀结晶怪类型
- -define(KILL_CRYSTAL, 1).
- -define(ASSIST_CRYSTAL, 2).
-
- %% 默认分战场人数
- -define(DEFAULT_ROLE_NUM, 40).
- %% 场景分线偏移量
- -define(SCENE_POOL_OFFSET, 2000).
- %% 默认第一轮场景(初始预备场景)
- -define(LOCAL_WAR_DEFAULT_SCENE, 7630).
- -define(CLS_WAR_DEFAULT_SCENE, 7631).
- %% 最后一场场景
- -define(LOCAL_WAR_LAST_SCENE, 7620).
- -define(CLS_WAR_LAST_SCENE, 7621).
-
- %% 被击杀玩家击杀数达到N触发终结
- -define(SHUTDOWN_TIMES, data_wasteland_war:get_kv_cfg(shutdown)).
-
- %% 角色伤害列表(存储在玩家进程)
- -define(WASTELAND_HURT_LIST(RoleId), {wasteland_hurt_list, RoleId}).
-
- %% 是否被淘汰
- -define(IS_OVER_NO, 0). %% 未淘汰
- -define(IS_OVER_YES, 1). %% 已淘汰
-
- %% 是否在场景中
- -define(IN_SCENE_NO, 0).
- -define(IN_SCENE_YES, 1).
-
- %% 是否托管中
- -define(IN_HOSTING_NOT, 0).
- -define(IN_HOSTING, 1).
-
- %% 是否已经死亡
- -define(IN_DIE_NOT, 0).
- -define(IN_DIE_YES, 1).
-
- %% 玩家形象改变
- -define(CHANGE_TYPE_VIP, 1). %% vip等级
- -define(CHANGE_TYPE_SUP_VIP, 2). %% 贵族
- -define(CHANGE_TYPE_NAME, 3). %% 名字
-
- %% 进程字典记录TA数据
- -define(PRO_TA_ROLE_DATA(RoleId), {pro_wasteland_ta_role_data, RoleId}).
-
- %% 跨服/本服管理进程状态数据
- -record(wasteland_war_state, {
- is_open = false %% 跨服活动是否开放(用于本服判断)
- ,stage = 0 %% 阶段 0-未开放 1-准备阶段 2-进行阶段
- ,start_time = 0 %% 开始时间
- ,round = 0 %% 当前轮数
- ,round_ref = [] %% 轮数定时器
- ,crystal_ref = [] %% 结晶刷出定时器
- ,srv_zone_map = #{} %% 服务器和分区映射
- ,zone_work_map= #{} %% 分区管理进程#{zone=>pid}
- ,round_end_time = 0 %% 本轮结束时间
- }).
-
- %% 本服管理进程状态数据(废弃)
- -record(local_wasteland_war_state, {
- is_open = false %% 活动开放 TODO:考虑是否去除
- ,stage = 0 %% 阶段 0-未开放 1-准备阶段 2-进行阶段
- ,start_time = 0 %% 开始时间
- ,round = 0 %% 当前轮数
- ,round_ref = [] %% 轮数定时器
- ,crystal_ref = [] %% 结晶刷出定时器
- ,crystal_num = 0 %% 结晶数量
- ,pools = [] %% 分线列表
- ,role_lists = [] %% 角色列表[#role_info{}...] 备注:包括托管玩家
- }).
-
- %% 玩家数据
- -record(role_info, {
- %% 基础数据
- role_id = 0
- ,role_name = ""
- ,power = 0 %% 战力,用于区分战区
- ,sex = 0
- ,vip_lv = 0
- ,sup_vip = 0
- ,hp_lim = 0 %% 血量上限,进入第一轮的时候回满
- ,server_id = 0
- ,server_num = 0
- ,node = [] %% 玩家本服节点
- ,mon_id = 0 %% 如果是假人,记录唯一Id
-
- %% 玩法数据
- ,round = 0 %% 轮数
- ,kill_num = 0 %% 击杀数
- ,be_kill_num = 0 %% 被杀数(当击杀玩家时清0,否则累加)
- ,combo = 0 %% 当前连杀数(人)
- ,max_combo = 0 %% 最大连杀数(人)
- ,score = 0 %% 积分(废弃)
- ,rank = 0 %% 分区总排名
- ,reward_score = [] %% 领取过奖励的积分段
-
- %% 控制数据
- ,war_field = 0 %% 战场号(用于计算场景分线)
- ,is_in_scene= 1 %% 是否在场景中(用于判断下轮传送)
- ,is_over = 0 %% 是否被淘汰
- ,is_hosting = 0 %% 是否托管中
- ,host_reward=[] %% 托管期间获取的奖励
- ,last_pos = 0 %% 上一次随机点(托管战斗)
- ,is_die = 0 %% 是否已经死亡(晋升切换场景拉活)
- ,figure = undefined
- ,ready_pool = 0 %% 准备场景分线Id
- }).
-
- %% 分战场玩家数据
- -record(war_field_role, {
- role_id = 0
- ,mon_id = 0 %% 如果是假人>0
- ,power_rank = 0 %% 进来时的(分战区前)战力排行,用于分战区
- ,war_score = 0 %% 战场中的积分
- ,war_rank = 0 %% 战场中的排名
- ,server_id = 0 %% 服务器Id(用于广播数据)
- ,node = [] %% 服务器节点
- }).
-
- %% TA数据记录
- -record(pro_ta_role_data, {
- role_id = 0
- ,crystal_score = 0 %% 击杀结晶积分
- ,kill_score = 0 %% 击杀玩家积分
- ,revive_times = 0 %% 复活次数
- ,enter_time = 0 %% 进入时间
- }).
-
- %% ============================ 后台配置 ===================================
- %% 常量配置表
- -record(wasteland_war_kv_cfg, {
- id = 0 %% 编号
- ,key = "" %% 键
- ,value = "" %% 常量
- ,remark = "" %% 备注
- }).
-
- %% 积分奖励
- -record(wasteland_score_reward_cfg, {
- need_score = 0 %% 需求的积分下限
- ,reward = [] %% 奖励
- }).
-
- %% 轮数奖励
- -record(wasteland_round_reward_cfg, {
- round = 0 %% 轮数
- ,scene = 0 %% 本服场景Id
- ,cls_scene = 0 %% 跨服场景Id
- ,duration = 0 %% 持续时间
- ,max_crystal = 0 %% 最大结晶数量
- ,max_role = 0 %% 场景最大人数
- ,reward = [] %% 奖励
- }).
-
- %% 排名奖励
- -record(wasteland_rank_reward_cfg, {
- rank_low = 0 %% 排名下限
- ,rank_high = 0 %% 排名上限
- ,reward = [] %% 奖励
- }).
-
- %% 杀人积分获得
- -record(wasteland_bleed_score_cfg, {
- kill_count = 0 %% 连杀数量
- ,kill_score = 0 %% 连杀积分
- ,over_score = 0 %% 终结积分
- }).
-
- %% 自动寻人点
- -record(wasteland_select_pos_cfg, {
- scene = 0 %% 场景Id
- ,pos_list = 0 %% 自动选择点
- ,war_pos_list = [] %% 战斗配置点
- }).
-
- %% ============================ db操作 ===================================
- -define(SQL_SAVE_WASTELAND_RANK, <<"REPLACE INTO wasteland_war (`server_id`, `role_id`, `role_name`, `war_field`, `round`, `rank`, `score`, `kill_num`, `max_combo`, `sex`, `vip_lv`, `sup_vip`, `server_num`, `power`)
- VALUES (~p, ~p, '~ts', ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p)">>).
- -define(SQL_BATCH_SAVE_WASTELAND_RANK, <<"REPLACE INTO wasteland_war (`server_id`, `role_id`, `role_name`, `war_field`, `round`, `rank`, `score`, `kill_num`, `max_combo`, `sex`, `vip_lv`, `sup_vip`, `server_num`, `power`)
- VALUES ~ts">>).
- -define(SQL_BATCH_SAVE_WASTELAND_RANK_VALUE, <<"(~p, ~p, '~ts', ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p)">>).
-
- -define(SQL_SELECT_WASTELAND_RANK, <<"SELECT `server_id`, `role_id`, `role_name`, `war_field`, `round`, `rank`, `score`, `kill_num`, `max_combo`, `sex`, `vip_lv`, `sup_vip`, `server_num`, `power` FROM wasteland_war">>).
- -define(SQL_UPDATE_WASTELAND_RANK_COMBO, <<"UPDATE wasteland_war SET `kill_num` = ~p, `max_combo` = ~p WHERE `server_id` = ~p, `role_id` = ~p">>).
- -define(SQL_UPDATE_WASTELAND_RANK_ROUND, <<"UPDATE wasteland_war SET `round` = ~p WHERE `server_id` = ~p AND `role_id` = ~p">>).
- -define(SQL_UPDATE_WASTELAND_RANK_NAME, <<"UPDATE wasteland_war SET `role_name` = '~ts' WHERE `server_id` = ~p AND `role_id` = ~p">>).
- -define(SQL_UPDATE_WASTELAND_RANK_VIP, <<"UPDATE wasteland_war SET `vip_lv` = ~p WHERE `server_id` = ~p AND `role_id` = ~p">>).
- -define(SQL_UPDATE_WASTELAND_RANK_SUP_VIP, <<"UPDATE wasteland_war SET `sup_vip` = ~p WHERE `server_id` = ~p AND `role_id` = ~p">>).
- -define(SQL_UPDATE_WASTELAND_RANK_POWER, <<"UPDATE wasteland_war SET `power` = ~p WHERE `server_id` = ~p AND `role_id` = ~p">>).
-
- -define(SQL_DELETE_WASTELAND_RANK, <<"TRUNCATE table wasteland_war">>).
-
- %% ,sex = 0
- %% ,name = ""
- %% ,vip_lv = 0
- %% ,sup_vip = 0
- %% ,server_num = 0
|