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

382 rivejä
13 KiB

1 kuukausi sitten
  1. %%%------------------------------------
  2. %%% @Module : common_rank.hrl
  3. %%% @Author : hejiahua
  4. %%% @Created : 2015-12-18
  5. %%% @Description: 通用榜单
  6. %%%------------------------------------
  7. %% --------------------#common_rank_role.rank_type 类型---------------------
  8. -define(RANK_TYPE_COMBAT, 2000). %% 战力排行榜
  9. -define(RANK_TYPE_COMBAT_1, 2001). %% 职业1战力榜
  10. -define(RANK_TYPE_COMBAT_2, 2002). %% 职业2战力榜
  11. -define(RANK_TYPE_COMBAT_3, 2003). %% 职业3战力榜
  12. -define(RANK_TYPE_COMBAT_4, 2004). %% 职业4战力榜
  13. -define(RANK_TYPE_LV, 3000). %% 等级排行榜
  14. -define(RANK_TYPE_LV_1, 3001). %% 职业1等级榜
  15. -define(RANK_TYPE_LV_2, 3002). %% 职业2等级榜
  16. -define(RANK_TYPE_LV_3, 3003). %% 职业3等级榜
  17. -define(RANK_TYPE_LV_4, 3004). %% 职业4等级榜
  18. -define(RANK_TYPE_GUILD, 407). %% 公会排行榜
  19. -define(RANK_TYPE_DESIGNATION, 411). %% 称号排行榜
  20. -define(RANK_TYPE_FASHION, 413). %% 时装排行榜
  21. -define(RANK_TYPE_FHORSE, 1461). %% 座驾排行榜
  22. -define(RANK_TYPE_FWING, 1462). %% 炫翼排行榜
  23. -define(RANK_TYPE_FPEARL, 1463). %% 宝具排行榜
  24. -define(RANK_TYPE_FWEAPON, 1464). %% 武器排行榜
  25. -define(RANK_TYPE_FJARVIS, 1465). %% AI娘排行榜
  26. -define(RANK_TYPE_FGUN, 1466). %% 磁炮排行榜
  27. -define(RANK_TYPE_FCLOUD, 1467). %% 星翼排行榜
  28. -define(RANK_TYPE_FARMOUR, 1468). %% 幻甲排行榜
  29. -define(RANK_TYPE_FOSTERS, 14600). %% 进阶总榜
  30. -define(RANK_TYPE_AIGIRLS, 14601). %% AI娘总榜
  31. -define(RANK_TYPE_DRESS, 112). %% 装扮排行榜
  32. -define(RANK_TYPE_BABY, 163). %% 宝宝排行榜
  33. -define(RANK_TYPE_CHARM_WEEK, 2231). %% 魅力(人气)榜
  34. -define(RANK_TYPE_GENEROURS, 2232). %% 慷慨(豪气,即名望)榜
  35. -define (RANK_TYPE_WARSOUL, 143). %% 战魂排行榜
  36. -define(RANK_TYPE_EQUIP, 1520). %% 装备排行榜
  37. -define(RANK_TYPE_EQUIP_1, 1521). %% 职业1装备榜
  38. -define(RANK_TYPE_EQUIP_2, 1522). %% 职业2装备榜
  39. -define(RANK_TYPE_EQUIP_3, 1523). %% 职业3装备榜
  40. -define(RANK_TYPE_EQUIP_4, 1524). %% 职业4装备榜
  41. -define(RANK_TYPE_GUILD_LABOR, 4001). %% 社团活跃榜
  42. -define(RANK_TYPE_GUILD_LABOR_LAST, 4002). %% 社团上期活跃榜
  43. -define(RANK_GUILD_LIST,[
  44. ?RANK_TYPE_GUILD
  45. ,?RANK_TYPE_GUILD_LABOR
  46. ,?RANK_TYPE_GUILD_LABOR_LAST
  47. ]).
  48. %% 个人榜单列表
  49. -define(RANK_TYPE_LIST, [
  50. ?RANK_TYPE_COMBAT,
  51. ?RANK_TYPE_COMBAT_1,
  52. ?RANK_TYPE_COMBAT_2,
  53. ?RANK_TYPE_COMBAT_3,
  54. ?RANK_TYPE_COMBAT_4,
  55. ?RANK_TYPE_LV,
  56. ?RANK_TYPE_LV_1,
  57. ?RANK_TYPE_LV_2,
  58. ?RANK_TYPE_LV_3,
  59. ?RANK_TYPE_LV_4,
  60. ?RANK_TYPE_FASHION,
  61. ?RANK_TYPE_DESIGNATION,
  62. ?RANK_TYPE_FOSTERS,
  63. ?RANK_TYPE_AIGIRLS,
  64. ?RANK_TYPE_FHORSE,
  65. ?RANK_TYPE_FWING,
  66. ?RANK_TYPE_FPEARL,
  67. ?RANK_TYPE_FWEAPON,
  68. ?RANK_TYPE_FJARVIS,
  69. ?RANK_TYPE_FGUN,
  70. ?RANK_TYPE_FCLOUD,
  71. ?RANK_TYPE_FARMOUR,
  72. ?RANK_TYPE_BABY,
  73. ?RANK_TYPE_CHARM_WEEK,
  74. ?RANK_TYPE_GENEROURS,
  75. ?RANK_TYPE_EQUIP,
  76. ?RANK_TYPE_EQUIP_1,
  77. ?RANK_TYPE_EQUIP_2,
  78. ?RANK_TYPE_EQUIP_3,
  79. ?RANK_TYPE_EQUIP_4,
  80. ?RANK_TYPE_WARSOUL,
  81. ?RANK_TYPE_DRESS
  82. ]).
  83. %% 进阶系统榜
  84. -define(RANK_TYPE_FOSTER, [
  85. ?RANK_TYPE_FHORSE,
  86. ?RANK_TYPE_FWING,
  87. ?RANK_TYPE_FPEARL,
  88. ?RANK_TYPE_FWEAPON,
  89. ?RANK_TYPE_FJARVIS,
  90. ?RANK_TYPE_FGUN,
  91. ?RANK_TYPE_FCLOUD,
  92. ?RANK_TYPE_FARMOUR
  93. ]).
  94. -define(RANK_TYPE_FOSTER_1, [
  95. ?RANK_TYPE_FHORSE,
  96. ?RANK_TYPE_FWING,
  97. ?RANK_TYPE_FPEARL,
  98. ?RANK_TYPE_FWEAPON
  99. ]).
  100. -define(RANK_TYPE_FOSTER_2, [
  101. ?RANK_TYPE_FJARVIS,
  102. ?RANK_TYPE_FGUN,
  103. ?RANK_TYPE_FCLOUD,
  104. ?RANK_TYPE_FARMOUR
  105. ]).
  106. %% 战力综合+战力职业
  107. -define(RANK_TYPE_ALL_COMBATS, [
  108. ?RANK_TYPE_COMBAT,
  109. ?RANK_TYPE_COMBAT_1,
  110. ?RANK_TYPE_COMBAT_2,
  111. ?RANK_TYPE_COMBAT_3,
  112. ?RANK_TYPE_COMBAT_4
  113. ]).
  114. %% 等级综合+等级职业
  115. -define(RANK_TYPE_ALL_LVS, [
  116. ?RANK_TYPE_LV,
  117. ?RANK_TYPE_LV_1,
  118. ?RANK_TYPE_LV_2,
  119. ?RANK_TYPE_LV_3,
  120. ?RANK_TYPE_LV_4
  121. ]).
  122. %% 装备综合+装备职业
  123. -define(RANK_TYPE_ALL_EQUIPS, [
  124. ?RANK_TYPE_EQUIP,
  125. ?RANK_TYPE_EQUIP_1,
  126. ?RANK_TYPE_EQUIP_2,
  127. ?RANK_TYPE_EQUIP_3,
  128. ?RANK_TYPE_EQUIP_4
  129. ]).
  130. %% 有职业区分的榜单
  131. -define(RANK_TYPE_CAREER, [
  132. ?RANK_TYPE_COMBAT_1,
  133. ?RANK_TYPE_COMBAT_2,
  134. ?RANK_TYPE_COMBAT_3,
  135. ?RANK_TYPE_COMBAT_4,
  136. ?RANK_TYPE_LV_1,
  137. ?RANK_TYPE_LV_2,
  138. ?RANK_TYPE_LV_3,
  139. ?RANK_TYPE_LV_4,
  140. ?RANK_TYPE_EQUIP_1,
  141. ?RANK_TYPE_EQUIP_2,
  142. ?RANK_TYPE_EQUIP_3,
  143. ?RANK_TYPE_EQUIP_4
  144. ]).
  145. %% EQUIP+COMBAT+LV
  146. -define(RANK_TYPE_ECL, [
  147. ?RANK_TYPE_EQUIP,
  148. ?RANK_TYPE_COMBAT,
  149. ?RANK_TYPE_LV
  150. ]).
  151. %% 需要显示榜单上额外值second_value的榜单列表
  152. -define(SHOW_RANK_SECVAL_LIST, [
  153. ?RANK_TYPE_EQUIP
  154. ]).
  155. %% 进阶总榜
  156. -define(RANK_TYPE_14600, [
  157. ?RANK_TYPE_FHORSE,
  158. ?RANK_TYPE_FWING,
  159. ?RANK_TYPE_FPEARL,
  160. ?RANK_TYPE_FWEAPON
  161. ]).
  162. %% AI娘总榜
  163. -define(RANK_TYPE_14601, [
  164. ?RANK_TYPE_FJARVIS,
  165. ?RANK_TYPE_FGUN,
  166. ?RANK_TYPE_FCLOUD,
  167. ?RANK_TYPE_FARMOUR
  168. ]).
  169. -define(WORLD_LV_LEN, 20). %% 全服等级榜前20名玩家的长度
  170. -define(REFRESH_SERVERLV_TIME, 3600*1000). %% 世界等级刷新时长
  171. %% 点赞规则:
  172. %% 1.每个独立榜单1次
  173. %% 2.每日只有1次
  174. -define(MAX_PRAISE_NUM, data_ranking:get_value(max_praise_num)).
  175. -define(RANK_DAILY_PRAISE, 1).
  176. %% 点赞类型
  177. -define(PRAISE_0, 0). %% 个人
  178. -define(PRAISE_1, 1). %% 社团
  179. %% 排行榜配置
  180. -record(rank_config, {
  181. type = 0,
  182. rank_name = "",
  183. rank_max = 0,
  184. rank_limit = 0,
  185. title_id = 0
  186. }).
  187. -record(base_common_rank_kv, {
  188. id = 0,
  189. key = "",
  190. value = 0,
  191. desc = ""
  192. }).
  193. %% 排行榜目标奖励配置
  194. -record(base_common_rank_target_reward, {
  195. type = 0, %% 榜单类型
  196. index = 0, %% 映射id
  197. target = 0, %% 达成目标
  198. name = <<>>, %% 榜单名称
  199. reward = [] %% 奖励
  200. }).
  201. %% 通用榜单的角色信息
  202. %% 注意:需要排序的话,使用value、second_value、third_value,不要用其他字段
  203. -record(common_rank_role, {
  204. role_key = undefined, % 玩家的唯一键 {RankType, id}
  205. rank_type = 0, % 榜单类型
  206. role_id = 0, % 角色Id
  207. value = 0, % 值
  208. second_value = 0, % 值(保留)
  209. third_value = 0, % 值(保留)
  210. extra_value = [], % 额外值(保留)
  211. display_value = 0, % 客户端显示值
  212. time = 0, % 时间
  213. online = 0, % 是否在线
  214. off_time = 0, % 离线时间
  215. rank = 0 % 名次
  216. }).
  217. %% 跨服排行角色信息
  218. -record(cross_common_rank_role, {
  219. role_key = undefined, % 玩家唯一键
  220. rank_type = 0, % 榜单类型
  221. role_id = 0, % 角色id
  222. value = 0, % 值
  223. second_value = 0, % 第二值
  224. vip = 0, % vip
  225. sup_vip = 0, % sup_vip
  226. name = 0, % 名字
  227. gender = 0, % 性别
  228. rank = 0,
  229. server_num = 0, % 服务器编号
  230. server_id = 0 % 服务器id
  231. }).
  232. -record(common_rank_guild, {
  233. guild_key = undefine, % 唯一键{RankType, guild_id}
  234. rank_type = 0, % 榜单类型
  235. guild_id = 0, % 公会id
  236. flag = 0,
  237. guild_name = "", % 公会名称
  238. chairman_id = 0, % 会长Id
  239. chairman_name = "", % 会长名字
  240. lv = 0, % 公会等级
  241. members_num = 0, % 成员数量
  242. value = 0, % 值
  243. second_value = 0, % 值(保留)
  244. third_value = 0, % 值(保留)
  245. time = 0, % 时间
  246. rank = 0 % 名次
  247. ,add_mem_num = 0 % 社团竞榜增加人数
  248. ,create_time = 0 % 社团创建时间(判断评级为待定 时使用)
  249. ,labor_refresh_time = 0 % 社团活跃刷新时间(判断评级为待定 时使用)
  250. }).
  251. %% 通用榜单的进程状态
  252. -record(common_rank_state, {
  253. % role_maps = maps:new(), % Key:RankType Value:[#common_rank_role{}|...]
  254. guild_maps = maps:new(),
  255. old_first_guild = 0, % 存昨天第一的公会id
  256. rank_limit = maps:new(),
  257. praise_maps = maps:new(), % key: role_id value: praise_num
  258. ref_average_lv = none, % 世界等级刷新定时器
  259. first_top = maps:new(), % 首度达成目标数据
  260. first_top_role = [], % 首度目标辅助数据 [{{RoleId, RankType, Target}, Val}]
  261. timer = undefined
  262. }).
  263. %% 跨服排行榜数据
  264. -record(cross_rank_state, {
  265. % role_maps = #{}, % Key:{ZoneId, RankType} Value:[#cross_common_rank_role{}|...]
  266. rank_limit = #{}, %
  267. srv_zones = #{}, % 游戏服分区映射
  268. srv_upload_status = #{}, % 分区游戏服上传数据状态 ZoneId => [{ServerId, Status},...]
  269. upload_status = [], % [{ZoneId, Status},...]
  270. maps = #{} % 其他数据
  271. }).
  272. -define(RANK_INIT, 1).
  273. -define(FORCE_UPDATE_PRE, 2).
  274. -define(FORCE_UPDATE, 3).
  275. -define(INTERVAL_UPDATE_REF,4).
  276. -define(RANK_INTERVAL, 300000).
  277. -define(RANK_TYPE_KEY(RankType), {common_rank_type, RankType}).
  278. -define(CROSS_RANK_TYPE_KEY(RankKey), {cross_rank_type, RankKey}).
  279. -define(sql_common_rank_guild_select,
  280. <<"SELECT rank_type, guild_id, guild_name, flag, chairman_id, chairman_name, lv, members_num, value, second_value, third_value, time FROM common_rank_guild">>).
  281. -define(sql_common_rank_role_select,
  282. <<"SELECT rank_type, player_id, value, second_value, third_value, extra_value, time, off_time FROM common_rank_role">>).
  283. -define(sql_common_rank_praise_select,
  284. <<"SELECT type, id, praise_num FROM common_rank_praise">>).
  285. -define(sql_common_rank_first_top_select,
  286. <<"SELECT rank_type, target, role_id, time FROM common_rank_first_top">>).
  287. -define(sql_common_rank_role_first_top_select,
  288. <<"SELECT rank_type, target FROM role_first_top_reward WHERE role_id = ~p">>).
  289. -define(sql_common_rank_role_save,
  290. <<"replace into common_rank_role(rank_type, player_id, value, second_value, third_value, extra_value, time, off_time) values(~p, ~p, ~p, ~p, ~p, '~ts', ~p,~p)">>).
  291. -define(sql_common_rank_praise_save,
  292. <<"replace into common_rank_praise(type, id, praise_num) values(~p, ~p, ~p)">>).
  293. -define(sql_common_rank_guild_save,
  294. <<"replace into common_rank_guild(rank_type, guild_id, guild_name,flag, chairman_id, chairman_name, lv, members_num, value, second_value, third_value, time) values(~p, ~p , '~ts', ~p,~p, '~ts', ~p, ~p, ~p, ~p, ~p, ~p)">>).
  295. -define(sql_common_rank_role_delete_by_role_id,
  296. <<"delete from common_rank_role where rank_type = ~p and player_id = ~p">>).
  297. -define(sql_common_rank_guild_delete_by_guild_id,
  298. <<"delete from common_rank_guild where rank_type = ~p and guild_id = ~p">>).
  299. -define(sql_common_rank_role_delete_by_value,
  300. <<"delete from common_rank_role where rank_type = ~p and value < ~p ">>).
  301. -define(sql_common_rank_guild_delete_by_value,
  302. <<"delete from common_rank_guild where rank_type = ~p and value < ~p ">>).
  303. -define(sql_common_rank_role_delete_by_rank_type,
  304. <<"delete from common_rank_role where rank_type = ~p">>).
  305. -define(SQL_COMMON_GUILD_RANK_DEL_TYPE,
  306. <<"delete from common_rank_guild where rank_type=~p">>).
  307. -define(SQL_COMMON_GUILD_RANK_BATCH,
  308. <<"REPLACE INTO common_rank_guild(rank_type, guild_id, guild_name, flag, chairman_id, chairman_name, lv, members_num, value, second_value, third_value, time) VALUES ~ts">>).
  309. -define(SQL_COMMON_RANK_FIRST_TOP,
  310. <<"REPLACE INTO common_rank_first_top(rank_type, target, role_id, time) VALUES ~ts">>).
  311. -define(REPLACE_INTO_COMMON_RANK_FIRST_TOP,
  312. <<"REPLACE INTO role_first_top_reward SET role_id = ~p, rank_type = ~p, target = ~p">>).
  313. -define(SQL_SELECT_COMMON_PRAISE_ROLE,
  314. <<"SELECT rank_type, praise_id, time FROM role_praise_target WHERE role_id = ~p">>).
  315. -define(SQL_REPLACE_COMMON_PRAISE_ROLE,
  316. <<"REPLACE INTO role_praise_target SET role_id = ~p, rank_type = ~p, praise_id = ~p, time = ~p">>).
  317. -define(SQL_DELETE_COMMON_PRAISE_ROLE,
  318. <<"TRUNCATE TABLE role_praise_target">>).
  319. -define(SQL_BTACH_DELETE_COMMON_PRAISE_ROLE,
  320. <<"DELETE FROM role_praise_target WHERE role_id = ~p, rank_type = ~p">>).