源战役
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

150 lines
6.4 KiB

  1. %%%-------------------------------------------------------------------
  2. %%% @doc 宠物副本-头文件
  3. %%% Module : dungeon_pet.hrl
  4. %%% Created : 2020-07-04
  5. %%% @Author : tyl
  6. %%%-------------------------------------------------------------------
  7. -define(CREATE_MON_GAP, 1000). %% 单只怪刷出时间间隔
  8. -define(DUN_PET_WAVE(DunId), lists:max(data_dungeon_wave:get_dun_waves(DunId))). %% 宠物副本波数
  9. -define(DUN_PET_SEND_TV_RANK, data_dungeon_pet:get_dun_pet_kv_cfg(send_tv_rank)). %% 发送传闻排名
  10. -define(DUN_PET_DEFAULT_MAX_RANK, 1000). %% 默认最大积分奖励
  11. -define(DUN_PET_YEST_MAX_RANK, data_dungeon_pet:get_dun_pet_kv_cfg(last_day_rank_length)). %% 昨日榜最大长度
  12. %% 日奖励领取情况
  13. -define(DAILY_REWARD_NOT_RECEIVE, 0). %% 未领取
  14. -define(DAILY_REWARD_HAS_RECEIVED, 1). %% 已领取
  15. %% 排行榜数据
  16. -record(dun_pet_rank_state, {
  17. rank_list = [] %% 排名列表,格式[] % 格式:#{key => [#dun_pet_rank{}...]} key = {low, high}积分上下限(已经废弃)
  18. ,reward_status = 0 %% 12点榜单奖励结算 0-未结算 1-已经结算
  19. }).
  20. %% 排行榜个人数据
  21. -record(dun_pet_rank, {
  22. rank = 0 %% 排名
  23. ,role_id = 0 %% 角色Id
  24. ,role_name = "" %% 角色名称(前端展示)
  25. ,sex = 0 %% 性别(前端展示)
  26. ,photo_id = 0 %% 头像Id(前端展示)
  27. ,vip = 0 %% vip等级(前端展示)
  28. ,sup_vip = 0 %% 贵族类型(前端展示)
  29. ,score = 0 %% 积分
  30. ,dun_wave = 0 %% 通关副本波数
  31. ,reach_time = 0 %% 达成时间
  32. ,old_score = 0 %% 昨天的积分
  33. ,old_dun_wave = 0 %% 昨日通关副本波数
  34. ,old_rank = 0 %% 昨天排名
  35. ,is_received = 0 %% 是否已经领取日奖励
  36. }).
  37. %% 昨日个人榜(服务器启动时临时存储数据)
  38. -record(dun_pet_yest_rank, {
  39. role_id = 0 %% 角色Id
  40. ,old_score = 0 %% 昨天的积分
  41. ,old_dun_wave = 0 %% 昨日通关副本波数
  42. ,old_rank = 0 %% 昨天排名
  43. ,old_reach_time= 0 %% 达成时间
  44. }).
  45. %% 玩家宠物副本数据
  46. -record(role_dun_pet, {
  47. reward_status = [] %% 首通奖励情况
  48. ,pet_choose = #{} %% 宠物助战选择 #{dun_id =>[{pet_id, pos, skill}...]}
  49. ,reward_choose = #{} %% 奖励选择 #{dun_id => index...}
  50. ,dun_history_score = #{} %% 副本历史最高积分
  51. }).
  52. %% ============================== 后台配置 =================================
  53. %% 常量配置表
  54. -record(dun_pet_kv_cfg, {
  55. id = 0 %% Id
  56. ,key = "" %% 键
  57. ,value = "" %% 值
  58. ,remark = "" %% 描述
  59. }).
  60. %% buff球配置表
  61. -record(dun_pet_buff_cfg, {
  62. id = 0 %% Id
  63. ,effect = [] %% 效果
  64. ,weight = 0 %% 掉落概率
  65. ,desc = "" %% 描述
  66. ,client_show = "" %% 前端资源
  67. }).
  68. %% 结算奖励配置表
  69. -record(dun_pet_reward_cfg, {
  70. dun_id = 0 %% 副本Id
  71. ,low = 0 %% 积分下限
  72. ,height = 0 %% 积分上限
  73. ,reward = [] %% 可选掉落
  74. }).
  75. %% 排名奖励配置表
  76. -record(dun_pet_rank_reward_cfg, {
  77. id = 0 %% Id
  78. ,rank_low = 0 %% 排名下限
  79. ,rank_height = 0 %% 排名上限
  80. ,need_score = 0 %% 需求积分
  81. ,need_dun = 0 %% 需要通关副本
  82. ,need_wave = 0 %% 需要通关波数
  83. ,reward = [] %% 奖励内容
  84. }).
  85. %% 波数积分配置表
  86. -record(dun_pet_wave_score_cfg, {
  87. dun_id = 0 %% 副本Id
  88. ,wave = 0 %% 波数
  89. ,score = 0 %% 积分
  90. }).
  91. %% 副本信息配置表
  92. -record(dun_pet_next_dun_cfg, {
  93. id = 0 %% Id
  94. ,dun_id = 0 %% 副本Id
  95. ,next_dun = 0 %% 下一副本Id
  96. ,pet_id = 0 %% 宠物Id
  97. ,pet_figure = 0 %% 宠物形象资源Id
  98. ,guard_mons = [] %% 守卫怪参数
  99. ,pet_mon = [] %% 妖宠参数
  100. ,follow_num = 0 %% 跟随数量
  101. ,reward = [] %% 首通奖励
  102. }).
  103. %% ============================= 数据库操作 =============================
  104. %% 里程碑奖励
  105. -define(SQL_REPLACE_PET_DUN_REWARD,
  106. <<"REPLACE INTO role_pet_dun_reward (role_id, dun_id, status) VALUES (~p, ~p, ~p)">>).
  107. -define(SQL_SELECT_PET_DUN_REWARD,
  108. <<"SELECT dun_id, status FROM role_pet_dun_reward WHERE role_id = ~p">>).
  109. %% 排行榜(排行榜只取前999名,避免合服后数据量庞大)
  110. -define(SQL_INSERT_DUN_PET_RANK, <<"REPLACE INTO dun_pet_rank (`role_id`, `score`, `dun_wave`, `reach_time`) VALUES (~p, ~p, ~p, ~p)">>).
  111. -define(SQL_SELECT_DUN_PET_RANK, <<"SELECT `role_id`, `score`, `dun_wave`, `reach_time`, `old_score`, `old_dun_wave`, `status` FROM dun_pet_rank order by `dun_wave` desc limit ~p">>).
  112. -define(SQL_SELECT_DUN_PET_YEST_RANK, <<"SELECT `role_id`, `old_score`, `old_dun_wave`,`old_reach_time` FROM dun_pet_rank order by `old_dun_wave` desc limit ~p">>).
  113. -define(SQL_DELETE_DUN_PET_RANK, <<"DELETE FROM dun_pet_rank WHERE `role_id` = ~p">>).
  114. -define(SQL_UPDATE_DUN_PET_RANK_REWARD_STATUS, <<"UPDATE dun_pet_rank set `status` = ~p WHERE `role_id` = ~p">>).
  115. -define(SQL_UPDATE_DUN_PET_RANK_OLD_SCORE, <<"UPDATE dun_pet_rank set `old_score` = ~p, `old_dun_wave`= ~p, `old_reach_time` =~p WHERE `role_id` = ~p">>).
  116. -define(SQL_UPDATE_DUN_PET_RANK_SCORE, <<"UPDATE dun_pet_rank set `score` = ~p, `dun_wave`= ~p, `reach_time` =~p WHERE `role_id` = ~p">>).
  117. % -define(SQL_DELETE_DUN_PET_RANK, <<"DELTET FROM dun_pet_rank WHERE `rank` = ~p AND `role_id` = ~p">>).
  118. -define(SQL_SELECT_DUN_PET_CHOOSE,
  119. <<"SELECT `dun_id`, `pet_id`, `pos_id` FROM role_dun_pet_choose WHERE `role_id` = ~p">>).
  120. -define(SQL_REPLACE_DUN_PET_CHOOSE,
  121. <<"REPLACE INTO role_dun_pet_choose (`role_id`, `dun_id`, `pet_id`, `pos_id`) VALUES ~ts">>).
  122. -define(SQL_BATCH_DUN_PET_VALUES,
  123. <<"(~p, ~p, ~p, ~p)">>).
  124. -define(SQL_DELETE_DUN_PET_CHOOSE,
  125. <<"DELETE FROM role_dun_pet_choose WHERE `role_id` = ~p and `dun_id` = ~p">>).
  126. -define(SQL_REPLACE_PET_DUN_REWARD_CHOOSE,
  127. <<"REPLACE INTO role_dun_pet_reward_choose (`role_id`, `dun_id`, `index`) VALUES (~p, ~p, ~p)">>).
  128. -define(SQL_SELECT_PET_DUN_REWARD_CHOOSE,
  129. <<"SELECT `dun_id`, `index` FROM role_dun_pet_reward_choose WHERE `role_id` = ~p">>).
  130. -define(SQL_REPLACE_PET_DUN_MAX_SCORE,
  131. <<"REPLACE INTO role_dun_pet_max_score (`role_id`, `dun_id`, `max_score`) VALUES (~p, ~p, ~p)">>).
  132. -define(SQL_SELECT_PET_DUN_MAX_SCORE,
  133. <<"SELECT `dun_id`, `max_score` FROM role_dun_pet_max_score WHERE `role_id` = ~p">>).