源战役
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

152 rivejä
8.7 KiB

4 viikkoa sitten
  1. %%-----------------------------------------------------------------------------
  2. %% @Module : top_pk.hrl
  3. %% @Author : J
  4. %% @Email : j-som@foxmail.com
  5. %% @Created : 2017-12-05
  6. %% @Description: 巅峰竞技
  7. %%-----------------------------------------------------------------------------
  8. -define(TOP_PK_KV(Id), lib_top_pk_util:get_keyvalues(Id)).
  9. %% 第一个赛季开启日期{Y,M,D} 注:便于多语言版本管理,此常量应放到lib_vsn_control管理
  10. -define(TOP_PK_KV_FIRST_SEASON_OPEN_DATE, data_vsn:top_pk_first_season_open_date()).
  11. -define(TOP_PK_KV_SEASON_DURATION, ?TOP_PK_KV(2)). %% 赛季时长(天)
  12. -define(TOP_PK_KV_START_CENTER_OPEN_DAY, ?TOP_PK_KV(3)). %% 开启跨服竞技需要的开服天数
  13. -define(TOP_PK_KV_START_CENTER_WORLD_LV, ?TOP_PK_KV(4)). %% 开启跨服竞技需要的世界等级
  14. -define(TOP_PK_KV_LOCAL_SCENE, ?TOP_PK_KV(5)). %% 本服竞技场景id
  15. -define(TOP_PK_KV_CENTER_SCENE, ?TOP_PK_KV(6)). %% 跨服竞技场景id
  16. -define(TOP_PK_KV_LOCAL_BORN_COORD, ?TOP_PK_KV(7)). %% 本服战场出生点{X,Y}
  17. -define(TOP_PK_KV_CENTER_BORN_COORD, ?TOP_PK_KV(8)). %% 跨服战场出生点{X,Y}
  18. -define(TOP_PK_KV_BATTLE_TIME, ?TOP_PK_KV(9)). %% 每场竞技比赛时长(秒)
  19. -define(TOP_PK_KV_READY_TIME, ?TOP_PK_KV(10)). %% 每场竞技比赛准备时长(秒)
  20. -define(TOP_PK_KV_ADVANCE_TIME, ?TOP_PK_KV(11)). %% 开启竞技活动提前多久预告(分钟)
  21. -define(TOP_PK_KV_FAIL_COUNT_TO_MATCH_DUMMY,?TOP_PK_KV(12)). %% 玩家连续失败多少场匹配一次假人
  22. -define(TOP_PK_KV_MATCH_TIME, ?TOP_PK_KV(13)). %% 每轮匹配时长(s)
  23. -define(TOP_PK_KV_MATCH_MAX_NUN, ?TOP_PK_KV(14)). %% 最多匹配几轮,还匹配不到匹配假人
  24. -define(TOP_PK_KV_RANK_SIZE, ?TOP_PK_KV(15)). %% 排行榜最大长度
  25. -define(TOP_PK_KV_OPEN_LV, ?TOP_PK_KV(16)). %% 功能开启等级
  26. -define(TOP_PK_KV_INIT_SCORE, ?TOP_PK_KV(17)). %% 赛季玩家初始积分
  27. -define(TOP_PK_KV_DAILY_COUNT, ?TOP_PK_KV(18)). %% 玩家每天可以参与匹配次数
  28. -define(TOP_PK_KV_CONTINUED_WIN_TV, ?TOP_PK_KV(19)). %% 连胜传闻 格式:[{连胜次数,功能传闻id}]
  29. -define(TOP_PK_KV_NEW_GRADE_TV, ?TOP_PK_KV(20)). %% 段位传闻 格式:[{段位,阶数,功能传闻id}]
  30. -define(TOP_PK_KV_MATCH_AREA_LIST, ?TOP_PK_KV(21)). %% 匹配区间列表 格式:[{匹配次数,名次区间}]
  31. -define(TOP_PK_KV_ELO_K_FACTOR, ?TOP_PK_KV(22)). %% ELO天梯算法K参数(通常为32) [弃用]
  32. -define(TOP_PK_KV_ELO_S_FACTOR, ?TOP_PK_KV(23)). %% ELO天梯算法S参数(通常为1) [弃用]
  33. -define(TOP_PK_KV_SEASON_RANK_AWARD_NUM, ?TOP_PK_KV(28)). %% 赛季排行奖励发放前几名
  34. -define(TOP_PK_KV_SEASON_AWARD_NEED_OPENDAY,?TOP_PK_KV(29)). %% 赛季排行奖励发放前几名
  35. %% 竞技环境类型
  36. -define(ACT_CLS_LOCAL, 0). %% 竞技环境类型:单服竞技
  37. -define(ACT_CLS_CENTER, 1). %% 竞技环境类型:跨服竞技
  38. %% 活动开启状态
  39. -define(ACT_STATUS_STOP, 0). %% 活动开启状态:未开始
  40. -define(ACT_STATUS_START, 1). %% 活动开启状态:开始
  41. %% 巅峰竞技常量配置
  42. -record(base_top_pk_keyvalues, {
  43. id = 0, %% 常量Id
  44. value = 0, %% 常量值
  45. about = "" %% 常量描述
  46. }).
  47. %% 段位信息配置
  48. -record(base_top_pk_grade_info, {
  49. grade_num = 0, %% 段位序号
  50. stage = 0, %% 阶数
  51. name = "", %% 段位名
  52. min_score = 0, %% 最小积分
  53. max_score = 0, %% 最大积分
  54. win_score = 0, %% 胜利积分
  55. lose_score = 0 %% 失败积分
  56. }).
  57. %% 假人配置
  58. -record(base_top_pk_fake_man, {
  59. min_lv = 0, %% 最小等级
  60. max_lv = 0, %% 最大等级
  61. fake_man_id = 0, %% 假人id
  62. power_range = {0,0} %% 战力范围{最小战力, 最大战力}
  63. }).
  64. -record(top_pk_status, {
  65. score = 0 %% 赛季积分
  66. ,grade_reward_list = [] %% 已领段位奖励列表[grade]
  67. ,match_reward_list = [] %% 已领匹配次数奖励[match_count]
  68. ,pk_time = 0 %% 上次PK时间
  69. ,enter_count = 0 %% 匹配场数
  70. ,continued_fail = 0 %% 连续失败场次(只算匹配真人的,匹配到假人重置)
  71. ,continued_win = 0 %% 连续胜利场次
  72. ,pk_state = [] %% 匹配状态
  73. }).
  74. -record(rank_role, {
  75. role_id = 0, %% 玩家id
  76. role_name = "", %% 玩家名
  77. career = 0, %% 职业
  78. power = 0, %% 战力
  79. platform = "", %% 平台
  80. server_num = 0, %% 服务器显示编号
  81. server_id = 0, %% 服务器id
  82. rank_id = 0, %% 排名
  83. score = 0, %% 赛季积分
  84. pk_time = 0 %% 上次PK时间
  85. }).
  86. -record(local_state, {
  87. act_status = 0, %% 活动状态:0未开始,1开始
  88. season_id = 0, %% 赛季id
  89. world_lv = 0, %% 赛季开启时服务器等级
  90. cls_type = 0, %% 竞技环境类型:0单服竞技,1跨服竞技
  91. rank_list = [] %% 玩家排行列表[#rank_role{}|...]
  92. }).
  93. -record(rank_center_state, {
  94. season_id = 0, %% 赛季id
  95. is_db = 0, %% 是否入库(0否|1是)
  96. rank_list = [] %% 玩家排行列表[#rank_role{}|...]
  97. }).
  98. -record(match_state, {
  99. cls_type = 0, %% 竞技环境类型:0单服竞技,1跨服竞技
  100. start_time = 0, %% 开始时间戳
  101. end_time = 0, %% 结束时间戳
  102. end_ref = none, %% 结束定时器引用
  103. match_ref = none, %% 匹配定时器引用
  104. match_queue = [] %% 匹配队列 [#match_info{}]
  105. }).
  106. -record(match_info, {
  107. role_key = {none, 0}, %% 玩家key {Node, RoleId}
  108. name = "", %% 玩家名
  109. lv = 0, %% 玩家等级
  110. platform = "", %% 平台名
  111. server_num = 0, %% 服务器显示编号
  112. score = 0, %% 积分
  113. power = 0, %% 战力
  114. continued_fail = 0, %% 连续失败场次(只算匹配真人的,匹配到假人重置)
  115. match_count = 1, %% 匹配次数
  116. rank_id = 0, %% 匹配队列的临时排名
  117. match_time = 0 %% 匹配时间戳
  118. }).
  119. -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">>).
  120. -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) ">>).
  121. -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" >>).
  122. -define(SQL_TRUNCATE_PLAYER_TOP_PK, <<"truncate `player_top_pk`">>).
  123. -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`">>).
  124. -define(SQL_TRUNCATE_RANK_CENTER, <<"truncate `top_pk_rank_center`">>).
  125. -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">>).
  126. %% ----- 以下为old配置 -----
  127. -define(DAILY_ID_REWARD_STATE, 1). %% 日常id 用来标识今天是否领过每日荣誉值
  128. -define(DAILY_ID_ENTER_COUNT, 2). %% 每日进入次数
  129. -define(DAILY_ID_BUY_COUNT, 3). %% 每日购买次数
  130. -define(DAILY_ID_COUNT_REWARD_MARK, 4).%% 日常id 用来标识今天领过次数奖励的状态 2#10001001 标识领过第1 4 8次的奖励
  131. -define(STATE_NONE, 0). %% DAILY_ID_REWARD_STATE 的值的含义 未设置
  132. -define(STATE_SETUP, 1). %% DAILY_ID_REWARD_STATE 的值的含义 已设置未领取
  133. -define(STATE_GOT, 2). %% DAILY_ID_REWARD_STATE 的值的含义 已经领取
  134. -define(RANK_NUM_MAX, 30). %% 排行榜最多人数