源战役
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

296 righe
14 KiB

  1. %% ---------------------------------------------------------------------------
  2. %% @doc 跨服帮战头文件.
  3. %% @author zhaoyu
  4. %% @since 2018-08-27
  5. %% ---------------------------------------------------------------------------
  6. -ifdef(DEV_SERVE).
  7. -define(SYNC_SWITCH,30000).
  8. -else.
  9. -define(SYNC_SWITCH,600000).
  10. -endif.
  11. -define(SQL_CGWAR_GUILD_ROOM, <<"SELECT `guild_id`,`room` FROM `guild_cgwar_room`">>).
  12. -define(SQL_CGWAR_ROOM_UPDATE,<<"REPLACE INTO `guild_cgwar_room` (`guild_id`,`room`) VALUES (~p,~p)">>).
  13. -define(SQL_CGWAR_LAST_ZONE_UPDATE,"REPLACE INTO `cross_guild_war_last_zone` (`server_id`,`zone_id`,`fact_id`)").
  14. -define(SQL_CGWAR_LAST_ZONE_GET, "SELECT `server_id`, `zone_id`,`fact_id` FROM `cross_guild_war_last_zone`").
  15. -define(SQL_CGWAR_CITY_GET, "SELECT `zone_id`, `city_id`, `server_id`, `server_num`, `guild_id`, `guild_name`, `guild_power`, `chief_id`,`chief_name`, `chief_power` from `cross_guild_war_city_info`").
  16. -define(SQL_CGWAR_CITYS_SAVE, "REPLACE INTO `cross_guild_war_city_info` (`zone_id`, `city_id`, `server_id`, `server_num`, `guild_id`, `guild_name`,`guild_power`,`chief_id`, `chief_name`,`chief_power`) values ~ts").
  17. -define(SQL_CGWAR_GUILD_INFO_GET, "SELECT `guild_id`, `zone_id`, `server_id`, `server_num`, `guild_name`, `guild_power`, `chief_id`, `chief_name`, `chief_power`,`sign_ups`,`supports`, `support_num` from `cross_guild_war_guild_info`").
  18. -define(SQL_CGWAR_GUILD_HELP_INFO_GET, "SELECT `guild_id`, `zone_id`, `server_id`,`help_ups` from `cross_guild_war_guild_help_info`").
  19. -define(SQL_CGWAR_GUILD_INFO_SAVE,"REPLACE INTO `cross_guild_war_guild_info` (`guild_id`,`zone_id`, `server_id`, `server_num`, `guild_name`,`guild_power`, `chief_id`, `chief_name`,`chief_power`, `sign_ups`,`supports`,`support_num`) values ~ts").
  20. -define(SQL_CGWAR_GUILD_HELP_INFO_SAVE,"REPLACE INTO `cross_guild_war_guild_help_info` (`guild_id`,`zone_id`, `server_id`, `help_ups`) values ~ts").
  21. -define(SQL_CGWAR_GUILD_INFO_DEL_BY_ZONE, "DELETE FROM `cross_guild_war_guild_info` WHERE `zone_id` = ~p").
  22. -define(SQL_CGWAR_ROLE_GET,"select support_num, support_time, use_free_num, city_award, award_time,last_sign from cross_guild_war_role where role_id = ~p").
  23. -define(SQL_CGWAR_ROLE_SAVE, "replace into cross_guild_war_role (role_id, support_num, support_time,use_free_num, city_award, award_time,last_sign) values (~p, ~p, ~p, ~p, '~ts', ~p, ~p)").
  24. -define(SQL_CGQWAR_LOG_GET,"SELECT * FROM `log_cgwar_city_info`").
  25. -define(SQL_CGQWAR_LOG_SAVE,"REPLACE INTO `log_cgwar_city_info` (`zone_id`,`city_id`,`server_id`,`server_num`,`guild_id`,`guild_name`,`guild_power`,`chief_id`,`chief_name`,`chief_power`,`time`,`chief_info`) values ~ts").
  26. -define(SQL_SELECT_OVERLORD,"SELECT times, pro_time, rename_time, buy_time FROM `overlord_info` where `role_id` = ~p").
  27. -define(SQL_REPLACE_OVERLORD,"replace into overlord_info (role_id, times, pro_time, rename_time, buy_time) values (~p, ~p, ~p, '~ts', ~p)").
  28. -define(SQL_TRUNCATE_OVERLORD,"truncate table overlord_info").
  29. %% 跨服帮战-分区信息ets。保存数据格式:[#cgw_zone_info{}]
  30. -define(CGW_ZONES_ETS, cgw_zones_ets).
  31. %% 跨服帮战-上一次分区信息ets。保存数据格式:[#cgw_zone_info{}]
  32. -define(CGW_LAST_ZONES_ETS, cgw_last_zones_ets).
  33. %% 跨服帮战-城池占领信息ets。保存数据格式:[#cgw_zone_city_info{}]
  34. -define(CGW_CITY_ETS, cgw_city_ets).
  35. -define(CGW_CITY_LOG_ETS, cgw_city_log_ets).
  36. %% 跨服帮战-帮派与战场pid()对应关系信息ets。保存数据格式:[#cgw_guild_battlefield_info{}]
  37. -define(CGW_GUILD_BATTLEFIELD_PID, cgw_guild_battlefield_pid).
  38. %% 保存各个游戏服公会争霸S级帮派列表以及举办次数
  39. %% 保存数据格式:[#cgw_server_info{}]。数据由各个游戏服同步过来。
  40. -define(CGW_CAN_JOIN_ETS, cgw_can_join_ets).
  41. -define(CGW_ST_IDLE, 0). %idle
  42. -define(CGW_ST_SIGN, 1). %报名期间
  43. -define(CGW_ST_SUPPORT, 2). %应援阶段
  44. -define(CGW_ST_PK, 3). %活动期间
  45. -define(CGW_ST_OVER, 4). %活动结束
  46. % 城池类型
  47. -define(CITY_TYPE_MAIN, 1). %% 主城
  48. -define(CITY_TYPE_SIDE, 2). %% 卫城
  49. % 怪物类型
  50. -define(MON_TYPE_FLAG , 1). %% 战旗
  51. -define(MON_TYPE_MON, 2). %% 守护兽
  52. %% 刷新战场信息间隔
  53. -define(BROADCAST_BATTLEFIELD_TIMEOUT, (5 * 1000)).
  54. %% 跨服帮战时间配置
  55. -record(cross_guild_war_config, {
  56. week_list = [] %% 表示周几开
  57. ,sign_up_period = {{0,0,0}, {0,0,0}} %% 报名时间段
  58. ,support_period = {{0,0,0}, {0,0,0}} %% 应援时间段
  59. ,battle_period = {{0,0,0}, {0,0,0}} %% 战场时间段
  60. }
  61. ).
  62. %% 跨服帮战场景配置
  63. -record(cross_guild_war_city, {
  64. id = 0 %% 城池Id
  65. ,name = <<>> %% 城池名称
  66. ,type_id = 2 %% 城池类型,1为主城,2为卫城
  67. ,born_point = {0, 0} %% 出生点:{posX,posY}
  68. ,revive_point = {0, 0} %% 复活点:{posX,posY}
  69. ,flag = {0, 0, 0} %% 战旗:{怪物id,posX,posY}
  70. ,mon_list = [] %% 将军(怪物列表):[{怪物id,posX,posY},{},…]
  71. }).
  72. %% 分区信息
  73. -record(cgw_zone_info, {
  74. zone_id = 0 %% 分区Id
  75. ,server_id = 0 %% 游戏服ServerId
  76. ,time = 0 %% 进行分区的时间戳
  77. }).
  78. %% 分区帮派报名/援助信息
  79. -record(cgw_zone_guild_info, {
  80. zone_id = 0 %% 分区Id
  81. ,guild_list = [] %% 帮派信息[#cgw_guild_info{}]
  82. }).
  83. %% 分区城池占领信息
  84. -record(cgw_zone_city_info, {
  85. zone_id = 0 %% 分区Id
  86. ,city_info = [] %% 城池占领信息[#cgw_city_owner_info{}]
  87. }).
  88. %% 分区城池占领信息日志
  89. -record(cgw_zone_city_log, {
  90. zone_id = 0 %% 分区Id
  91. ,times_citys = [] %% 多次数据 [#times_city{}]
  92. }).
  93. -record(times_citys, {
  94. time = 0,
  95. city_info = [] %% 城池占领信息[#cgw_city_owner_info{}]
  96. }).
  97. %% 城池占领信息
  98. -record(cgw_city_owner_info, {
  99. zone_id = 0 %% 分区Id
  100. ,city_id = 0 %% 城池Id
  101. ,server_id = 0 %% 游戏服ServerId
  102. ,server_num = 0 %% 游戏服编号(玩家看到的服数)
  103. ,guild_id = 0 %% 帮派Id
  104. ,guild_name = <<>> %% 帮派名称
  105. ,guild_power = 0 %% 帮派战力
  106. ,chief_id = 0 %% 帮主Id
  107. ,chief_name = <<>> %% 帮主名称
  108. ,chief_power = 0 %% 帮主战力
  109. ,time = 0 %% 战报需要
  110. ,chief_info = [] %% #rec_picture{}
  111. }).
  112. %% 帮派信息
  113. -record(cgw_guild_info, {
  114. guild_id = 0 %% 帮派Id
  115. ,guild_name = <<>> %% 帮派名称
  116. ,server_id = 0 %% 游戏服ServerId
  117. ,server_num = 0 %% 游戏服编号(玩家看到的服数)
  118. ,zone_id = 0 %% 分区Id
  119. ,fact_id = 0 %% 阵营Id
  120. ,init_city = 0 %% 初始城区
  121. ,guild_power = 0 %% 帮派战力
  122. ,chief_id = 0 %% 帮主Id
  123. ,chief_name = <<>> %% 帮主名称
  124. ,chief_power = 0 %% 帮主战力
  125. ,chief_info = [] %% #rec_picture{}
  126. ,sign_ups = [] %% 报名列表[#cgw_role_info{}]
  127. ,help_ups = [] %% 外援列表[#cgw_role_info{}]
  128. ,supports = [] %% 支援列表[{ServerId,RoleId}]
  129. ,support_num = 0 %% 支援人数
  130. %% 下面的字段是实时战场数据不保存数据库
  131. ,own_cities = [] %% 占领的城池列表[CityId]
  132. ,born_pos = {0, 0} %% 出生点
  133. ,revive_pos = {0, 0} %% 复活点
  134. ,battle_pos = {0, 0} %% 战斗挂机点
  135. ,group = 0 %% 战斗分组
  136. }
  137. ).
  138. %% 报名角色信息
  139. -record(cgw_role_info, {
  140. role_id = 0 %% 角色Id
  141. ,name = <<>> %% 角色名
  142. ,server_id = 0 %% 服务器Id
  143. ,power = 0 %% 战力
  144. ,lev = 0 %% 等级
  145. ,sex = 0
  146. ,vip = 0 %% Vip等级
  147. ,sup_vip = 0
  148. ,position = 0 %% 职位
  149. }
  150. ).
  151. %% 应援角色信息
  152. -record(cgw_support, {
  153. role_id = 0 %% 角色Id
  154. ,server_id = 0 %% 服务器Id
  155. ,num = 0 %% 次数
  156. }).
  157. %% 跨服帮战管理进程state
  158. -record(cgw_mgr_state, {
  159. ser2zone = #{} %% 按ServerId查询ZoneId的索引数据
  160. ,ser2fact = #{} %% 按ServerId查询FacID
  161. ,last_ser2zone = #{} %% 上回按ServerId查询ZoneId的索引数据
  162. ,last_ser2fact = #{} %% 上回按ServerId查询fact_id的索引数据
  163. ,ref = 0 %% 定时器
  164. ,process = 0 %% 0闲置1报名2活动3已结束
  165. ,end_time = 0 %% 状态结束时间
  166. ,battle_result = [] %% 各个战场战斗返回结果[#cgw_zone_city_info{}]
  167. }).
  168. %%时间管理
  169. -record(cgwar_time_mgr, {
  170. state = 0, %%0闲置1报名2活动3已结束
  171. etime = 0, %%截止有效
  172. ref = 0
  173. }).
  174. %%本地时间管理
  175. -record(cgwar_local_mgr, {
  176. switch = 1, %%活动开关
  177. state = 0, %%0闲置1报名2活动3已结束
  178. etime = 0 %%截止有效
  179. }).
  180. %% 跨服帮战战场进程state
  181. -record(cgw_battlefield_state, {
  182. zone_id = 0 %% 分区Id
  183. ,pool_id = 0 %% 场景分线Id
  184. ,cities = [] %% 城池信息[#cgw_city_info{}]
  185. ,guild_list = [] %% 参与的帮派Id列表
  186. ,group = #{} %% 参与的分组列表
  187. ,ref = 0 %% 战场结束定时器
  188. ,broadcast_ref = 0 %% 刷新战场信息定时器
  189. }).
  190. %% 城池信息
  191. -record(cgw_city_info, {
  192. city_id = 0 %% 城池Id
  193. ,group = 0 %% 占领城池的分组
  194. ,owner = 0 %% 占领城池的帮派Id
  195. ,owner_name = <<>> %% 占领城池的帮派名字
  196. ,flag_uid = 0 %% 战旗怪物唯一Id
  197. ,flag_hp = 0 %% 战旗怪物血量
  198. ,flag_total_hp = 0 %% 战旗怪物总血量
  199. ,mon_uids = [] %% 所有守护怪的唯一Id列表[MonUid]
  200. ,type = 0 %% 城池类型
  201. }).
  202. %% 参战角色信息
  203. -record(cgw_role_battle_info, {
  204. role_id = 0 %% 角色Id
  205. ,name = <<>> %% 角色名
  206. ,server_id = 0 %% 服务器Id
  207. ,guild_id = 0 %% 帮派Id
  208. ,group = 0 %% 分组
  209. ,scene = 0 %% 当前所在场景 0:表示已经退出活动场景
  210. }).
  211. -record(cgw_server_info, {
  212. zone_id = 0 %% 服务器Id
  213. ,guild_list = [] %% 帮派列表[#cgw_guild_info{}]
  214. }).
  215. %% 帮派与战场pid()对应关系信息
  216. -record(cgw_guild_battlefield_info, {
  217. guild_id = 0 %% 帮派Id
  218. ,pid = 0 %% 战场pid()
  219. }).
  220. %% 角色跨服帮战应援和领取奖励记录
  221. -record(role_cgw, {
  222. support_num = 0 %% 应援次数
  223. ,use_free_num = 0 %% 已使用免费应援次数
  224. ,support_time = 0 %% 最近一次应援时间戳
  225. ,city_award = [] %% 领取占领城池奖励记录[{RoomId, CityId}]
  226. ,award_time = 0 %% 最近一次领取占领城池奖励时间戳
  227. ,last_sign = 0 %% 上次报名时间
  228. }).
  229. %% 应援结算传递参数
  230. -record(support_settlement, {
  231. role_id = 0 %% 角色Id
  232. ,guild_id = 0 %% 帮派Id
  233. ,guild_name = 0 %% 帮派名字
  234. ,cities = [] %% 占领的城池Id
  235. ,num = 0 %% 应援这个帮派的次数
  236. }).
  237. %% 霸主特权数据
  238. -record(overlord_info, {
  239. prohibit_times = 0 %% 禁言次数
  240. ,pro_time = 0 %% 上次使用禁言特权时间
  241. ,rename_time = [] %% 上次改名时间[{Fid,Time}]
  242. ,buy_time = 0 %% 上次购买时间
  243. }).
  244. %% 霸主限购配置
  245. -record(overlord_buy_cfg, {
  246. phase = 0 %% 期数
  247. ,reward = [] %% 限购奖励
  248. ,cost = [] %% 限购价格
  249. ,display = [] %% 展示资源
  250. }).