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

208 lines
7.9 KiB

пре 4 недеља
  1. %% -----------------------
  2. %% desc:跨服团战头文件
  3. %% author:hh
  4. %% time:20/07/21
  5. %% -----------------------
  6. %% 分线规则
  7. %% 1.跨服团战这边选定分线,因进入的战场固定,所以不参与自动强制分线
  8. %% 2.3个社团一个战场,一个战场可能有多条分线(多个房间)
  9. %% 划分战场规则
  10. %% 1.划分战场时检测阵营内部有无服务器合服了,有的话要排除服务器
  11. %% 2.只有满足开服天数要求的服务器才能参与划分战场
  12. %% 跨服团战公共管理进程
  13. -record(camp_war_state, {
  14. status = 0, %% 阶段
  15. start_time = 0, %% 阶段开始时间
  16. next_time = 0, %% 下一阶段时间
  17. end_time = 0, %% 结束时间
  18. zone_state = 0, %% 0未分区|1已分区
  19. extra_map = #{}, %% 其余数据的map
  20. worker_pids = #{}, %% 阵营进程
  21. fac_index = 1, %% 跨服团战内部阵营编号
  22. cls_type = 0 %% 1跨服|0本服
  23. }).
  24. %% 跨服团战阵营管理进程
  25. -record(zone_fac_state, {
  26. zone_fac = undefined, %% {zone_id, fac_id}
  27. fac_index = 0, %% 阵营编号
  28. status = 0, %% 所处阶段
  29. max_pool = 0, %% 阵营最大分线ID
  30. res_id = 1, %% 生成采集资源使用
  31. arena_map = #{}, %% 战场与社团列表映射 arena_id => [{guild_id, server_id}]
  32. guild_arena_map = #{}, %% 社团列表与战场映射 guild_id => arena_id
  33. arena_room_map = #{}, %% 战场与分线映射 arena_id => [pool_id,...]
  34. room_role_num = #{}, %% 分线人数 pool_id => num
  35. resource = #{}, %% 资源列表 pool => [{物资ID(怪物ID), {x, y}, Index}|_]
  36. role_rank = [], %% 战场内个人排名 arena_id => [#camp_war_role{}]
  37. guild_rank = [], %% 战场内社团排名 arena_id => [#camp_war_guild{}]
  38. % hurt_top = 0, %% 阵营内伤害第一的社团id
  39. buff_list = [], %% 社团buff增益列表 [#guild_res{}|_]
  40. extra_map = #{}, %% 其余数据
  41. cls_type = 0
  42. }).
  43. %% 本地公会战信息
  44. -record(local_gwar_info, {
  45. guild_id = 0,
  46. server_id = 0,
  47. server_num = 0,
  48. zone_id = 0,
  49. fac_id = 0,
  50. guild_flag = 0,
  51. guild_name = <<>>,
  52. guild_power = 0,
  53. chief_info = [],
  54. score = 0
  55. }).
  56. %% 社团buff采集信息
  57. -record(guild_res, {
  58. guild_id = 0,
  59. % server_id = 0,
  60. buff_lists = [] %% {物资id,数量}
  61. }).
  62. %% 阵营玩家数据
  63. -record(camp_war_role, {
  64. role_id = 0,
  65. role_name = "",
  66. guild_id = 0,
  67. server_id = 0,
  68. server_num = 0,
  69. lv = 0,
  70. vip = 0,
  71. sup_vip = 0,
  72. sex = 0,
  73. photo_profile_id = 0,
  74. dress_id = 0,
  75. zone_facs = [],
  76. hurt = 0,
  77. in_act = 0, %% 是否在活动场景
  78. is_host = 0 %% 是否托管
  79. }).
  80. %% 阵营社团数据
  81. -record(camp_war_guild, {
  82. guild_id = 0,
  83. guild_name = "",
  84. guild_flag = 0,
  85. guild_power = 0,
  86. chief_info = [],
  87. server_id = 0,
  88. server_num = 0,
  89. zone_facs = [],
  90. nums = 1, %% 社团参与人数
  91. hurt = 0 %% 社团输出伤害
  92. }).
  93. %% 百团大战结果
  94. -record(guild_war_ret, {
  95. guild_id = 0,
  96. guild_name = 0,
  97. score = 0,
  98. guild_flag = 0,
  99. guild_power = 0,
  100. chief_info = [] % #rec_picture{}
  101. }).
  102. %% 人物进场数据
  103. -record(role_camp_war, {
  104. coordinate = []
  105. }).
  106. %% 当前状态
  107. -define(CAMP_WAR_CLOSE, 0).
  108. -define(CAMP_WAR_OPENING_1, 1). %% 入场
  109. -define(CAMP_WAR_OPENING_2, 2). %% 采集
  110. -define(CAMP_WAR_OPENING_3, 3). %% 杀boss
  111. %% #camp_war_state.extra_map key
  112. -define(FAC_ZONE_INIT, zone_init). %% val:0分区数据未准备|1分区数据已准备
  113. -define(ZONE_INIT_INTERVAL, zone_calc_ref). %% val:is_reference()
  114. -define(CAMP_WAR_GM_TYPE, gm_type). %% val:normal|gm
  115. -define(FAC_ARENA_INIT, arena_init). %% val:0战场未分配|1战场已分配
  116. -define(MGR_INIT_STATE, mgr_init). %% 是否已完成初始化
  117. -define(FAC_GUILD_INIT, guild_init). %% 社团数据是否已处理
  118. -define(IS_TODAY_ACT, today_act). %% 今日是否有活动
  119. -define(WORKER_STOP_REF, worker_stop_ref). %% 工作进程停止定时
  120. -define(PRE_KILL_REF, pre_kill_ref). %% 预清理怪物定时
  121. %% #zeon_fac_state.extra_map key
  122. -define(RES_UPUPDATE_REF, res_update). %% 资源刷新定时
  123. -define(HURT_UPDATE_REF, hurt_update). %% 伤害排名刷新定时
  124. -define(INIT_REF, worker_init). %% worker 初始化定时
  125. -define(RES_START_TIME, res_stime). %% 物资资源开始时间
  126. -define(OFF_HOST_PID, off_hosting_pid). %% 托管进程
  127. -define(BOSS_UNIQUE_ID, boss_unique_id). %% boss唯一ID
  128. -define(HOSTING_REF, hosting_battle). %% 通知托管玩家发动攻击定时
  129. %% ets
  130. -define(ETS_FAC_SRV_ZONE, ets_camp_war_svr_zone). %% 服务器与{分区,阵营}映射 server_id => {zone_id,fac_id}
  131. -define(ETS_FAC_ZONE_FACS, ets_camp_war_zone_facs). %% 区里所有阵营列表 zone_id => facs = [_|_]
  132. -define(ETS_FAC_LOCAL_GWAR_INFO, ets_local_gwar_info). %% 本地百团大战收集信息 {zone_id, fac_id} => [#local_gwar_info{}]
  133. -define(ETS_FAC_ARENA_INFO, ets_camp_war_arena_info). %% 战场分配列表 {zone_id, fac_id} => {{zone_id, fac_id}, fac_index(跨服团战内部编号), [{arena_id, [{guild_id,server_id}|_]}]}
  134. -define(ETS_FAC_LOG_RET, ets_camp_war_log_ret). %% 阵营战果保存
  135. -define(PRE_FAC_ZONE_CALC_TIME, 3600).
  136. -define(ZONE_INIT_INTERVAL_TIME, 600000).
  137. -define(HURT_UPFATE_TIME, 15000).
  138. -define(FAC_POOL_BASE(P), 1000*P).
  139. %% 本服玩法默认分区&阵营
  140. -define(LOC_ZONE, 1).
  141. -define(LOC_FAC, 1).
  142. %% 本服和跨服的活动日历子id
  143. -define(CLS_ACT_MOD, 1). %% 跨服
  144. -define(LOC_ACT_MOD, 2). %% 本服
  145. %% 个人排行奖励
  146. -record(base_camp_war_role_rank_reward, {
  147. rank_min = 0,
  148. rank_max = 0,
  149. rewards = []
  150. }).
  151. %% 社团排行奖励
  152. -record(base_camp_war_rank_reward, {
  153. rank_min = 0,
  154. rank_max = 0,
  155. arena_id = 0,
  156. rewards = []
  157. }).
  158. -define(SQL_SELECT_LOCAL_GUILD_SCORE,
  159. <<"SELECT guild_id, guild_name, guild_flag, guild_power, chief_info, score, server_id, server_num, zone_id, fac_id FROM camp_war_guild_info">>).
  160. -define(SQL_BATCH_REPLACE_LOCAL_GUILD_SCORE,
  161. <<"REPLACE INTO camp_war_guild_info (guild_id, guild_name, guild_flag, guild_power, chief_info, score, server_id, server_num, zone_id, fac_id) VALUES ~ts">>).
  162. -define(SQL_BATCH_REPLACE_LOCAL_GUILD_SCORE_VAL,
  163. <<"(~p, '~ts', ~p, ~p, '~ts', ~p, ~p, ~p, ~p, ~p)">>).
  164. -define(SQL_REPLACE_INTO_LOCAL_GUILD_SCORE,
  165. <<"REPLACE INTO camp_war_guild_info set guild_id = ~p, guild_name = ~ts, guild_flag = ~p, score = ~p, server_id = ~p, server_num = ~p, zone_id = ~p, fac_id = ~p">>).
  166. -define(REPLACE_INTO_CAMP_WAR_RESULT,
  167. <<"REPLACE INTO camp_war_guild_rank_log (`guild_id`, `zone_id`, `fac_id`, `svr_id`, `svr_num`, `guild_name`, `hurt`, `guild_power`, `chief_info`)">>).
  168. -define(SQL_DELETE_CAMP_WAR_RESULT,
  169. <<"DELETE FROM camp_war_guild_rank_log">>).
  170. -define(SQL_SELECT_CAMP_WAR_RESULT,
  171. <<"SELECT `zone_id`, `fac_id`, `svr_id`, `guild_id`, `svr_num`, `guild_name`, `hurt`, `guild_power`, `chief_info` FROM camp_war_guild_rank_log">>).
  172. -define(SQL_UPFATE_CAMP_WAR_RESULT,
  173. <<"UPDATE camp_war_guild_rank_log SET `zone_id` = ~p, `fac_id` = ~p WHERE `guild_id` = ~p">>).
  174. -define(SQL_DELETE_LOCAL_GUILD_SCORE,
  175. <<"DELETE FROM camp_war_guild_info">>).
  176. -define(SQL_DELETE_LOCAL_ONE_GUILD_SCORE,
  177. <<"DELETE FROM camp_war_guild_info WHERE (zone_id = ~p AND fac_id = ~p) OR (zone_id = ~p AND fac_id = ~p)">>).