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

189 line
6.9 KiB

  1. %%%------------------------------------
  2. %%% @Module : race_act
  3. %%% @Author : zengzy
  4. %%% @Created : 2019-04-27
  5. %%% @Description: 竞榜的活动
  6. %%%------------------------------------
  7. %% ---------------------------------------------------------------------------
  8. %% 类型定义
  9. %% ---------------------------------------------------------------------------
  10. -define(RACE_ACT_MOUNT, 1). %% 活动1:坐骑竞榜
  11. -define(RACE_ACT_LIGHT_WEAPON, 2). %% 活动2:光武竞榜
  12. -define(RACE_ACT_WING, 3). %% 活动3:翅膀竞榜
  13. %%活动开启类型
  14. -define(TYPE_OPEN_DAY, 1). %% 开服天数控制
  15. -define(TYPE_BJ_TIME, 2). %% 北京时间控制
  16. -define(NSHOW_TIPS_LIST, []). %% 需要转动,不推送频道消息类型
  17. -define(GOLD_ACT, 1). %%钻石奖池
  18. -define(SCORE_ACT, 2). %%积分奖池
  19. -define(OPEN_LV, 120). %% 开启等级
  20. -define(ACT_DAYS, 2). %% 活动开启天数
  21. -define(SHOW_HOURS, 2). %% 展示时间(小时)
  22. %%奖励状态
  23. -define(CAN_GET, 1). %% 可以领取
  24. -define(HAS_GET, 2). %% 已经领取
  25. -define(CAN_NOT_GET, 3). %% 未满足条件不能领取
  26. -define(ETS_RACE_ACT, ets_race_act). %% ets表
  27. %% ---------------------------------------------------------------------------
  28. %% 其他定义
  29. %% ---------------------------------------------------------------------------
  30. -define(OPEN, 1). %% 开启
  31. -define(CLOSE, 0). %% 关闭
  32. -define(ONE_TREASURE, 1). %% 单抽
  33. -define(TEN_TREASURE, 10). %% 10抽
  34. -define(ZERO_CLEAR, 1). %% 凌晨清
  35. -define(ACT_CLEAR, 2). %% 活动清
  36. %% ets结构(记录已开启的活动)
  37. -record(ets_race_act, {
  38. type = 0,
  39. subtype = 0
  40. }).
  41. %% ps身上竞榜活动的结构
  42. -record(race_act, {
  43. data_list = [] %% 活动需要统计保存的数据[#race_act_data{}]
  44. }).
  45. %% 数据记录
  46. -record(race_act_data,{
  47. id = {0, 0}, %% {主类型,次类型}
  48. type = 0, %% 主类型
  49. subtype = 0, %% 次类型
  50. score = 0, %% 积分
  51. today_score = 0, %% 今日积分
  52. times = 0, %% 累积次数
  53. reward_list = [], %% 已获奖励:奖励id
  54. score_reward = [], %% 已领取积分奖励id
  55. other = [], %% 其他数据:根据各活动()
  56. last_time = 0 %% 最后抽奖时间
  57. }).
  58. -record(race_act_mgr, {
  59. opening_act = [], %% 开启中的活动 [#base_race_act_info{}] 存放的活动开启类型为TYPE_BJ_TIME, TYPE_OPEN_DAY走功能内
  60. show_act = [], %% 展示中的活动 [#base_race_act_info{}] 存放的活动开启类型为TYPE_BJ_TIME, TYPE_OPEN_DAY走功能内
  61. calc_timer = 0, %% 结算定时器
  62. check_timer = 0 %% 零点定时器
  63. }).
  64. %% 进程记录
  65. -record(race_act_status, {
  66. zone_id = 0, %% 区id
  67. bj_rank_list = [], %% 北京时间活动类型榜单,格式[#rank_bj_type{}]
  68. od_rank_list = [] %% 开服天数活动类型榜单,格式[#rank_od_type{}]
  69. }).
  70. %% 开服天数活动类型榜单
  71. -record(rank_od_type,{
  72. id = {0,0}, %% 主键,格式{type,subtype}
  73. type = 0, %% 主类型
  74. subtype = 0, %% 次类型
  75. data_list = [] %% 格式 [#rank_data{}]
  76. }).
  77. %% 对应天数排行
  78. -record(rank_od_data, {
  79. day = 0, %% 开始天数 (1:第一天,2:第二天)
  80. rank_list = [], %% 格式 #rank_role{}
  81. score_limit = 0 %% 最后一名分数
  82. }).
  83. %% 北京时间活动类型榜单
  84. -record(rank_bj_type,{
  85. id = {0,0}, %% 主键,格式{type,subtype}
  86. type = 0, %% 主类型
  87. subtype = 0, %% 次类型
  88. rank_list = [], %% 格式 #rank_role{}
  89. score_limit = 0 %% 最后一名分数
  90. }).
  91. -record(rank_role,{
  92. id = 0 %%玩家id
  93. ,server_id = 0 %%服务器id
  94. ,server_num = 0 %%
  95. ,node = none %%所在节点
  96. ,score = 0 %%分数
  97. ,rank = 0 %%排名
  98. ,figure = undefined
  99. ,act_st = 0 %%游戏服活动开始时间
  100. ,day = 0 %%游戏服开始时间换算的天数(不存db)
  101. ,last_time = 0
  102. }).
  103. %% ---------------------------------------------------------------------------
  104. %% sql定义
  105. %% ---------------------------------------------------------------------------
  106. -define(sql_race_act_role_select, <<
  107. "select
  108. `role_id`,`type`,`subtype`,`score`,`today_score`,`times`,`reward_list`,`score_reward`,`other`,`last_time` from race_act_role
  109. where role_id=~p ">>).
  110. -define(sql_race_act_role_replace, <<
  111. "replace into race_act_role (`role_id`,`type`,`subtype`,`score`,`today_score`,`times`,`reward_list`,`score_reward`,`other`,`last_time`) values(~p,~p,~p,~p,~p,~p,'~s','~s','~s',~p)">>).
  112. -define(sql_race_act_rank_select, <<"
  113. SELECT
  114. `role_id`,`type`, `subtype`,`server_id`,`server_num`,`name`, `score`, `act_time`, `time`
  115. FROM race_act_rank order by score desc">>).
  116. -define(sql_race_act_rank_replace,<<"
  117. replace into `race_act_rank`(
  118. `role_id`,`type`, `subtype`,`server_id`, `server_num`,`name`, `score`,`act_time`, `time`)
  119. values(~p, ~p, ~p, ~p, ~p, '~s', ~p, ~p, ~p)">>).
  120. -define(sql_race_act_open_selete, <<"select `type`,`subtype` from race_act">>).
  121. -define(sql_race_act_open_replace, <<"replace into `race_act`(type,subtype) values (~p,~p) ">>).
  122. %% ---------------------------------------------------------------------------
  123. %% 配置定义
  124. %% ---------------------------------------------------------------------------
  125. %%活动配置
  126. -record(base_race_act_info, {
  127. type = 0, %%主类型
  128. sub_type = 0, %%次类型
  129. act_type = 0, %%活动开启类型
  130. name = "", %%名字
  131. open_day = 0, %%开服天数
  132. open_over = 0, %%开服结束
  133. start_time = 0, %%活动开始时间
  134. end_time = 0, %%活动结束时间
  135. clear_type = 0, %%1为零点清;2为活动清
  136. treasure = [], %%抽检方式 [{次数,金额}]
  137. others = [] %%其他
  138. }).
  139. %%排名奖励
  140. -record(base_race_act_rank_reward,{
  141. type = 0, %%主类型
  142. sub_type = 0, %%次类型
  143. reward_id = 0, %%奖励id
  144. rank_min = 0, %%排名下限
  145. rank_max = 0, %%排名上限
  146. limit_val = 0, %%最低上榜值
  147. reward = [] %%奖励
  148. }).
  149. %%阶段奖励
  150. -record(base_race_act_stage_reward,{
  151. type = 0, %%主类型
  152. sub_type = 0, %%次类型
  153. reward_id = 0, %%奖励id
  154. need_val = 0, %%所需值
  155. reward = [] %%奖励
  156. }).
  157. %%奖池配置
  158. -record(base_race_act_reward,{
  159. type = 0, %%主类型
  160. sub_type = 0, %%次类型
  161. cost_type = 0, %%奖池类型
  162. reward_id = 0, %%奖励id
  163. ratio = 0, %%显示权重
  164. reward = [], %%内容
  165. condition = [] %%条件 [加权下限,加权上限,权重,临时权重,必中次数]
  166. }).