%%----------------------------------------------------------------------------- %% @Module : top_pk.hrl %% @Author : J %% @Email : j-som@foxmail.com %% @Created : 2017-12-05 %% @Description: 巅峰竞技 %%----------------------------------------------------------------------------- -define(TOP_PK_KV(Id), lib_top_pk_util:get_keyvalues(Id)). %% 第一个赛季开启日期{Y,M,D} 注:便于多语言版本管理,此常量应放到lib_vsn_control管理 -define(TOP_PK_KV_FIRST_SEASON_OPEN_DATE, data_vsn:top_pk_first_season_open_date()). -define(TOP_PK_KV_SEASON_DURATION, ?TOP_PK_KV(2)). %% 赛季时长(天) -define(TOP_PK_KV_START_CENTER_OPEN_DAY, ?TOP_PK_KV(3)). %% 开启跨服竞技需要的开服天数 -define(TOP_PK_KV_START_CENTER_WORLD_LV, ?TOP_PK_KV(4)). %% 开启跨服竞技需要的世界等级 -define(TOP_PK_KV_LOCAL_SCENE, ?TOP_PK_KV(5)). %% 本服竞技场景id -define(TOP_PK_KV_CENTER_SCENE, ?TOP_PK_KV(6)). %% 跨服竞技场景id -define(TOP_PK_KV_LOCAL_BORN_COORD, ?TOP_PK_KV(7)). %% 本服战场出生点{X,Y} -define(TOP_PK_KV_CENTER_BORN_COORD, ?TOP_PK_KV(8)). %% 跨服战场出生点{X,Y} -define(TOP_PK_KV_BATTLE_TIME, ?TOP_PK_KV(9)). %% 每场竞技比赛时长(秒) -define(TOP_PK_KV_READY_TIME, ?TOP_PK_KV(10)). %% 每场竞技比赛准备时长(秒) -define(TOP_PK_KV_ADVANCE_TIME, ?TOP_PK_KV(11)). %% 开启竞技活动提前多久预告(分钟) -define(TOP_PK_KV_FAIL_COUNT_TO_MATCH_DUMMY,?TOP_PK_KV(12)). %% 玩家连续失败多少场匹配一次假人 -define(TOP_PK_KV_MATCH_TIME, ?TOP_PK_KV(13)). %% 每轮匹配时长(s) -define(TOP_PK_KV_MATCH_MAX_NUN, ?TOP_PK_KV(14)). %% 最多匹配几轮,还匹配不到匹配假人 -define(TOP_PK_KV_RANK_SIZE, ?TOP_PK_KV(15)). %% 排行榜最大长度 -define(TOP_PK_KV_OPEN_LV, ?TOP_PK_KV(16)). %% 功能开启等级 -define(TOP_PK_KV_INIT_SCORE, ?TOP_PK_KV(17)). %% 赛季玩家初始积分 -define(TOP_PK_KV_DAILY_COUNT, ?TOP_PK_KV(18)). %% 玩家每天可以参与匹配次数 -define(TOP_PK_KV_CONTINUED_WIN_TV, ?TOP_PK_KV(19)). %% 连胜传闻 格式:[{连胜次数,功能传闻id}] -define(TOP_PK_KV_NEW_GRADE_TV, ?TOP_PK_KV(20)). %% 段位传闻 格式:[{段位,阶数,功能传闻id}] -define(TOP_PK_KV_MATCH_AREA_LIST, ?TOP_PK_KV(21)). %% 匹配区间列表 格式:[{匹配次数,名次区间}] -define(TOP_PK_KV_ELO_K_FACTOR, ?TOP_PK_KV(22)). %% ELO天梯算法K参数(通常为32) [弃用] -define(TOP_PK_KV_ELO_S_FACTOR, ?TOP_PK_KV(23)). %% ELO天梯算法S参数(通常为1) [弃用] -define(TOP_PK_KV_SEASON_RANK_AWARD_NUM, ?TOP_PK_KV(28)). %% 赛季排行奖励发放前几名 -define(TOP_PK_KV_SEASON_AWARD_NEED_OPENDAY,?TOP_PK_KV(29)). %% 赛季排行奖励发放前几名 %% 竞技环境类型 -define(ACT_CLS_LOCAL, 0). %% 竞技环境类型:单服竞技 -define(ACT_CLS_CENTER, 1). %% 竞技环境类型:跨服竞技 %% 活动开启状态 -define(ACT_STATUS_STOP, 0). %% 活动开启状态:未开始 -define(ACT_STATUS_START, 1). %% 活动开启状态:开始 %% 巅峰竞技常量配置 -record(base_top_pk_keyvalues, { id = 0, %% 常量Id value = 0, %% 常量值 about = "" %% 常量描述 }). %% 段位信息配置 -record(base_top_pk_grade_info, { grade_num = 0, %% 段位序号 stage = 0, %% 阶数 name = "", %% 段位名 min_score = 0, %% 最小积分 max_score = 0, %% 最大积分 win_score = 0, %% 胜利积分 lose_score = 0 %% 失败积分 }). %% 假人配置 -record(base_top_pk_fake_man, { min_lv = 0, %% 最小等级 max_lv = 0, %% 最大等级 fake_man_id = 0, %% 假人id power_range = {0,0} %% 战力范围{最小战力, 最大战力} }). -record(top_pk_status, { score = 0 %% 赛季积分 ,grade_reward_list = [] %% 已领段位奖励列表[grade] ,match_reward_list = [] %% 已领匹配次数奖励[match_count] ,pk_time = 0 %% 上次PK时间 ,enter_count = 0 %% 匹配场数 ,continued_fail = 0 %% 连续失败场次(只算匹配真人的,匹配到假人重置) ,continued_win = 0 %% 连续胜利场次 ,pk_state = [] %% 匹配状态 }). -record(rank_role, { role_id = 0, %% 玩家id role_name = "", %% 玩家名 career = 0, %% 职业 power = 0, %% 战力 platform = "", %% 平台 server_num = 0, %% 服务器显示编号 server_id = 0, %% 服务器id rank_id = 0, %% 排名 score = 0, %% 赛季积分 pk_time = 0 %% 上次PK时间 }). -record(local_state, { act_status = 0, %% 活动状态:0未开始,1开始 season_id = 0, %% 赛季id world_lv = 0, %% 赛季开启时服务器等级 cls_type = 0, %% 竞技环境类型:0单服竞技,1跨服竞技 rank_list = [] %% 玩家排行列表[#rank_role{}|...] }). -record(rank_center_state, { season_id = 0, %% 赛季id is_db = 0, %% 是否入库(0否|1是) rank_list = [] %% 玩家排行列表[#rank_role{}|...] }). -record(match_state, { cls_type = 0, %% 竞技环境类型:0单服竞技,1跨服竞技 start_time = 0, %% 开始时间戳 end_time = 0, %% 结束时间戳 end_ref = none, %% 结束定时器引用 match_ref = none, %% 匹配定时器引用 match_queue = [] %% 匹配队列 [#match_info{}] }). -record(match_info, { role_key = {none, 0}, %% 玩家key {Node, RoleId} name = "", %% 玩家名 lv = 0, %% 玩家等级 platform = "", %% 平台名 server_num = 0, %% 服务器显示编号 score = 0, %% 积分 power = 0, %% 战力 continued_fail = 0, %% 连续失败场次(只算匹配真人的,匹配到假人重置) match_count = 1, %% 匹配次数 rank_id = 0, %% 匹配队列的临时排名 match_time = 0 %% 匹配时间戳 }). -define(SQL_SELECT_PLAYER_TOP_PK, <<"select `score`, `grade_reward_list`, `match_reward_list`, `pk_time`, `enter_count`, `continued_fail`, `continued_win` from `player_top_pk` where `role_id` = ~p">>). -define(SQL_REPLACE_INTO_PLAYER_TOP_PK, <<"replace into `player_top_pk`(`role_id`, `score`, `grade_reward_list`, `match_reward_list`, `pk_time`, `enter_count`, `continued_fail`, `continued_win`) values (~p, ~p, '~s', '~s', ~p, ~p, ~p, ~p) ">>). -define(SQL_SELECT_PLAYER_TOP_PK_FOR_RANK, <<"select `role_id`, `score`, `pk_time` from `player_top_pk` where `score`>0 order by `score` desc limit ~p" >>). -define(SQL_TRUNCATE_PLAYER_TOP_PK, <<"truncate `player_top_pk`">>). -define(SQL_SELECT_RANK_CENTER, <<"select `role_id`, `role_name`, `career`, `power`, `platform`, `server_num`, `server_id`, `score`, `pk_time` from `top_pk_rank_center`">>). -define(SQL_TRUNCATE_RANK_CENTER, <<"truncate `top_pk_rank_center`">>). -define(SQL_REPLACE_INTO_RANK_CENTER, <<"replace into `top_pk_rank_center`(`role_id`, `role_name`, `career`, `power`, `platform`, `server_num`, `server_id`, `score`, `pk_time`) values ~ts">>). %% ----- 以下为old配置 ----- -define(DAILY_ID_REWARD_STATE, 1). %% 日常id 用来标识今天是否领过每日荣誉值 -define(DAILY_ID_ENTER_COUNT, 2). %% 每日进入次数 -define(DAILY_ID_BUY_COUNT, 3). %% 每日购买次数 -define(DAILY_ID_COUNT_REWARD_MARK, 4).%% 日常id 用来标识今天领过次数奖励的状态 2#10001001 标识领过第1 4 8次的奖励 -define(STATE_NONE, 0). %% DAILY_ID_REWARD_STATE 的值的含义 未设置 -define(STATE_SETUP, 1). %% DAILY_ID_REWARD_STATE 的值的含义 已设置未领取 -define(STATE_GOT, 2). %% DAILY_ID_REWARD_STATE 的值的含义 已经领取 -define(RANK_NUM_MAX, 30). %% 排行榜最多人数