源战役
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.

207 line
9.1 KiB

  1. %% ---------------------------------------------------------
  2. %% @doc arena
  3. %% @author fwx
  4. %% @since 2017-11-20
  5. %% @deprecated 竞技场
  6. %% ----------------------------------------------------------
  7. -define(ARENA_FREE_NUM_MAX, 1). %% 最大挑战次数
  8. -define(ARENA_INSPIRE_NUM_MAX, 2). %% 最大鼓舞次数
  9. -define(ARENA_CONFIG_LV, 3). %% 竞技场开放等级
  10. -define(ARENA_MAX_RANK, 4). %% arena最低排名
  11. -define(ARENA_ROBOT_LV, 5). %% 假人等级
  12. -define(ARENA_ROBOT_CAREER, 6). %% 假人职业
  13. -define(ARENA_ROBOT_CLOTH, 7). %% 假人衣服Id
  14. -define(ARENA_ROBOT_WEAPON, 8). %% 假人武器Id
  15. -define(ARENA_MAX_RECORD, 10). %% 战斗记录最大数量
  16. -define(ARENA_SCENE_ID, 11). %% 竞技场景id
  17. -define(ARENA_BORN_POS, 12). %% 竞技场景出生坐标列表
  18. -define(ARENA_START_TIME, 13). %% 开始前倒计时间
  19. -define(ARENA_BATTLE_TIME, 14). %% 战斗持续时间
  20. -define(ARENA_SELF_POS, 15). %% 真人坐标
  21. -define(ARENA_REWARD_TIME, 16). %% 结算界面持续时间
  22. -define(ARENA_COOLDOWN_CD, 17). %% 玩家每次挑战不论胜负均会增加多少秒冷却时间
  23. -define(ARENA_COOLDOWN_MAX_CD, 18). %% 当前冷却时间大于等于多少秒时玩家不可再挑战
  24. -define(ARENA_COOLDOWN_PRICE, 19). %% 冷却时间扣费:{价格, 秒数}
  25. -define(ARENA_COOLDOWN_VIP, 20). %% 多少级VIP等级以及以上的玩家不会累计挑战冷却时间
  26. -define(ARENA_SEASON_CONFIG, 21). %% 赛季结算配置
  27. -define(ARENA_BATTLE_POS, 22). %% 竞技场战斗坐标列表
  28. -define(ARENA_QUICK_CONF, 23). %% 秒杀条件
  29. -define(ARENA_ROBOT_NMAE, 24). %% 假人名字
  30. -define(ARENA_SP_MAX_NUM, 25). %% 大神挑战每日次数
  31. -define(ARENA_SP_MAX_RANK, 26). %% 大神挑战允许排名
  32. -define(ARENA_SP_ROLE_NUM, 27). %% 大神数量
  33. -define(BATTLE_STATUS_UNLOCK, 40). %% 位置锁定时间
  34. -define(ARENA_BATTLE_REWARD_NUM, 5). %% 5战可获得奖励
  35. %% 排名变化情况
  36. -define(RANK_STAY, 0). %% 排名没变化
  37. -define(RANK_UP, 1). %% 排名上升
  38. -define(RANK_DOWN, 2). %% 排名下降
  39. %% 奖励领取状态
  40. -define(HAVE_GET_REWARD, 2). %% 已领取
  41. -define(HAVE_CAN_REWARD, 1). %% 可领奖励
  42. -define(HAVE_NOT_REWARD, 0). %% 不可领
  43. %% 计数器
  44. -define(ARENA_FIRST_WIN, 1). %% 每日首胜状态 0没达到|1达到未领取|2达到已领取
  45. -define(ARENA_USE_NUM, 2). %% 已挑战次数
  46. -define(ARENA_BUY_NUM, 3). %% 购买次数
  47. -define(ARENA_DAILY, 4). %% 每日奖励领取状态
  48. -define(ARENA_FIVE_BATTLE, 5). %% 5战奖励领取状态
  49. -define(ARENA_SP_NUM, 6). %% 大神挑战次数
  50. -define(ARENA_SP_AWARD, 7). %% 大神奖励领取状态
  51. %% 战斗结果
  52. -define(ARENA_WIN, 1). %% 胜利
  53. -define(ARENA_FAIL, 0). %% 失败
  54. %% 战斗状态
  55. -define(BATTLE_STATUS, 1). %% 战斗中
  56. -define(NOT_BATTLE_STATUS, 0). %% 不在战斗中
  57. %% 挑战方式
  58. -define(CHALLENGE, 1). %% 主动挑战
  59. -define(BE_CHALLENGED, 2). %% 被挑战
  60. %% 结束状态
  61. -define(ARENA_BATTLE_END_TYPE_FORCE, 1). %% 跳过战斗/超时结束战斗
  62. -define(ARENA_BATTLE_END_TYPE_NORMAL, 2). %% 正常结束战斗
  63. %% 奖励形式
  64. -define(ARENA_AWARD_DAILY, 1). %% 每日奖励
  65. -define(ARENA_AWARD_FIRST_WIN, 2). %% 首胜奖励
  66. -define(ARENA_AWARD_FIVE, 3). %% 5战奖励
  67. -define(ARENA_AWARD_SP, 4). %% 大神奖励
  68. %% 最大排名
  69. -define(ARENA_MAX_RANK_TRULY, case data_arena:get_arena_value(?ARENA_MAX_RANK) of
  70. [ArenaMaxRank] -> ArenaMaxRank;
  71. _ -> 3000
  72. end).
  73. %%-------------竞技场玩家冷却配置-------------------------
  74. -define(TIME_COOLER, 17). % 玩家每次挑战不论胜负均会增加多少秒冷却时间,此字段的标识符
  75. -define(MAX_COOLER, 18). % 当前冷却时间大于等于多少秒时玩家不可再挑战,此字段的标识符
  76. -define(ONLINE_LIMIT, 28).
  77. -record(arena_role_cd,{
  78. roleid ,
  79. % onlinetime = 0, %% 玩家在线时长(当日总计不是单次登陆)
  80. last_use, %% 最后一次使用竞技场时间点
  81. rest_time, %% 剩余冷却时间
  82. trigger %% 是否触发冷却限制,触发后只能等冷却变为0才可以继续挑战, 0为不触发,1为触发
  83. }).
  84. %%---------------------------------------------------
  85. %% 竞技场管理数据
  86. -record(arena_state, {
  87. rank_maps = maps:new(), %% 排名 rank => role_id
  88. battle_status_maps = maps:new(), %% 是否战斗状态中 rank => UpdateTime
  89. season = 0, %% 赛季Id(当前的赛季Id还没结算,结算后Id+1)
  90. season_ref = 0 %% 赛季定时器
  91. }).
  92. %% 真实玩家数据
  93. -record(real_role, {
  94. role_id = 0, %% 角色id
  95. rank = 0, %% 排名
  96. rank_time = 0, %% 数据变更时间
  97. %% 获取昨日排名的时候,如果rank_time是今天,则直接取reward_rank,如果rank_time是过去,则取rank
  98. history_rank = 0, %% 历史最高排名
  99. reward_rank = 3000 %% 奖励根据的排名
  100. }).
  101. %% 挑战用record
  102. -record(challenge_role, {
  103. role_id = 0, %% 角色id
  104. self_name = "", %% 我的名字
  105. self_power = 0, %% 我的战力
  106. self_rank = 0, %% 自己的排名
  107. self_scene = 0, %% 挑战用场景
  108. self_x = 0, %% 自己坐标
  109. self_y = 0,
  110. history_rank = 0, %% 历史最高排名
  111. rival_id = 0, %% 对手id
  112. rival_power = 0, %% 对手战力
  113. rival_rank = 0, %% 对手排名
  114. sp = 0 %% 挑战类型:1大神、0普通
  115. }).
  116. %% 比赛记录
  117. -record(challenge_record, {
  118. code = 0, %% 挑战还是被挑战 1挑战 2被挑战
  119. role_id = 0, %% 角色id
  120. time = 0, %% 时间戳
  121. rival_id = 0, %% 挑战你的玩家id
  122. rival_name = <<>>, %% 挑战你的玩家名字
  123. result = 0, %% 胜负结果 1:胜 0 :负
  124. rank_change = 0 %% 排名变化
  125. ,role_power = 0 %% 角色战力
  126. ,rival_power = 0 %% 挑战你的玩家战力
  127. }).
  128. %% 购买次数配置
  129. -record(arena_buy_cfg, {
  130. num = 0, %% 购买次数
  131. type = 0, %% 货币类型
  132. price = 0 %% 价格
  133. ,need_vip = 0 %% 需要达到vip等级
  134. }).
  135. %% 对手搜索配置
  136. -record(arena_search_cfg, {
  137. id = 0, %% 区域id
  138. max = 0, %% 排名上限
  139. min = 0, %% 排名下限
  140. max_range = 0, %% 搜索范围参数
  141. min_range = 0 %% 排名范围搜索比例
  142. }).
  143. %% 竞技场假人配置
  144. -record(arena_fake_role_cfg, {
  145. fake_role_id = 0, %% 假人id
  146. fake_role_lv = 0, %% 假人等级
  147. fake_role_carrer = 0, %% 假人职业
  148. combat = [] %% 假人战力
  149. }).
  150. %% 竞技场排名突破奖励
  151. -record(arena_break_reward_cfg, {
  152. id = 0, %% 配置编号
  153. min_rank = 0, %% 最小排名
  154. max_rank = 0, %% 最大排名
  155. bgold_coefficient = 0, %% 绑钻系数
  156. max_receive = 0, %% 最大领取数
  157. award = [] %% 突破奖励
  158. }).
  159. %% 竞技场赛季排名奖励配置
  160. -record(arena_season_award, {
  161. award = [] %% 奖励
  162. ,rare_award = [] %% 珍稀奖励
  163. ,daily_award = [] %% 每日奖励
  164. }).
  165. -define(sql_select_db_real_role,
  166. <<"select role_id, rank from arena_real_role where rank > 0 and rank <= ~p">>).
  167. -define (sql_select_real_role_by_id,
  168. <<"select rank, history_rank, reward_rank, rank_time
  169. from arena_real_role where role_id = ~p">>).
  170. -define(sql_replace_db_real_role,
  171. <<"replace into arena_real_role (role_id, rank, history_rank, reward_rank, rank_time)
  172. values (~p, ~p, ~p, ~p, ~p)">>).
  173. % -----------------竞技场玩家挑战冷却表----------------------------------------------------------
  174. -define(sql_select_db_arenacd,
  175. <<"select last_use, rest_time, trigger1 from arena_challenge_cd where role_id = ~p">>).
  176. -define(sql_replace_db_arenacd,
  177. <<"replace into arena_challenge_cd (role_id, last_use, rest_time, trigger1)
  178. values (~p, ~p, ~p, ~p)">>).
  179. % ----------------------------------------------------------------------------------------------
  180. -define(sql_select_db_arena_season_info, <<"SELECT id FROM arena_season_info ORDER BY id DESC LIMIT 1">>).
  181. -define(sql_replace_db_arena_season_info, <<"REPLACE INTO arena_season_info (id, time) VALUES (~p, ~p)">>).