源战役
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

154 linhas
5.7 KiB

há 4 semanas
  1. %%-----------------------------------------------------------------------------
  2. %% @Module : rec_achievement
  3. %% @Author : Czc
  4. %% @Email : 389853407@qq.com
  5. %% @Created : 2018-01-23
  6. %% @Description: 成就
  7. %%-----------------------------------------------------------------------------
  8. %% 由于成就数据可能比较庞大同时读写比较频繁,所以保存在字典
  9. -define(P_ACHIEVEMENT, "P_ACHIEVEMENT").
  10. %% 成就特权等级
  11. -define(ACHV_WEEKLY_RECEIVE_LV, 30). %% 每周领取奖励
  12. -define(ACHV_EXCHANGE_LV, 37). %% 每日红钻兑交易券
  13. -define(ACHV_FREE_SWEEP_TASK, 43). %% 免费扫荡日常任务
  14. %% 章节/成就奖励领取状态
  15. -define(RECEIVE_TYPE_NOT, 0). %% 未达条件,不可领取
  16. -define(RECEIVE_TYPE_CAN, 1). %% 可领取
  17. -define(RECEIVE_TYPE_YES, 2). %% 已领取
  18. %% 成就进度
  19. -define(ACHV_UNFINISH, 0). %% 未完成
  20. -define(ACHV_FINISH, 1). %% 已完成未领取奖励
  21. -define(ACHV_HAS_RECEIVE, 2). %% 已领取奖励
  22. -define(ACHV_WSTATUS_SUCCESS, 1). %% 写入成功
  23. -define(ACHV_WSTATUS_WAIT, 2). %% 待写入
  24. -define(ACHV_SAVE_DB_CD, 10). %% 写入数据库CD时间
  25. -define(NOTIFY_TYPE_CATEGORY_FIN_COUNT, 1). %% 成就章节进度更新
  26. -define(NOTIFY_TYPE_SUB_CATEGORY_PROGRESS, 2). %% 成就小类进度更新
  27. %% 成就进度数据,存进程字典中
  28. -record(status_achievement, {
  29. category_map = #{}, %% #{category => count} 章节完成数量
  30. category_reward_list = [], %% [{category, status}] 章节奖励领取状态
  31. finish_list = [], %% [#achievement{}] 已经领取完奖励的成就列表
  32. achievement_list = [] %% [#achievement{}] 保存有进度数据的成就
  33. }).
  34. %% 成就等级,存#player_status{}
  35. -record(role_achievement, {
  36. lv = 0, %% 等级
  37. exp = 0, %% 经验值
  38. attr = [], %% 属性列表
  39. lv_reward_list = [] %% 等级奖励领取状态[{lv,status}]
  40. }).
  41. -record(achievement, {
  42. id = {}, %% {category,subcategory}-{成就章节,成就小类}
  43. progress = 0, %% 进度
  44. status = 0, %% 奖励状态 0: 未达成 1: 已达成 2: 已领取
  45. wtime = 0, %% 最近一次更新写入数据库的时间
  46. wstatus = 0 %% 写入状态 1: 写入成功 2: 待写入
  47. }).
  48. %% ---------------------------------- 后台配置表 ----------------------------------
  49. %% 章节奖励
  50. -record(category_reward_cfg, {
  51. category = 0,
  52. name = "",
  53. desc = "",
  54. reward = [],
  55. count = 0 %% 完成子类的数量
  56. }).
  57. %% 成就基础配置表
  58. -record(achievement_cfg, {
  59. type = 0, %% 成就大类
  60. sub_type = 0, %% 成就子类
  61. id = 0, %% 成就Id
  62. name = "", %% 名称
  63. desc = "", %% 描述
  64. condition = 0, %% 达成条件
  65. next_id = 0, %% 下一级成就Id
  66. reward = [], %% 奖励
  67. exp = 0, %% 成就经验值
  68. client_skip = {} %% 客户端跳转
  69. }).
  70. %% 成就分类排序表
  71. -record(achievement_seq_cfg, {
  72. type = 0 %% 成就大类
  73. ,sub_type = 0 %% 成就小类
  74. ,seq = 0 %% 顺序
  75. }).
  76. %% 成就基础配置表
  77. -record(achievement_base_cfg, {
  78. category = 0, %% 成就章节
  79. sub_category = 0, %% 成就顺序
  80. type = 0, %% 成就分类(前端展示)
  81. name = "",
  82. desc = "",
  83. is_hide = 0,
  84. is_inherit = 0,
  85. show_progress = 0,
  86. condition = 0,
  87. reward = [],
  88. exp = 0, %% 成就经验值
  89. client_skip = {} %% 客户端跳转
  90. }).
  91. %% 成就等级配置表
  92. -record(achievement_stage_cfg, {
  93. stage = 0,
  94. need_exp = 0,
  95. attr_list = []
  96. }).
  97. %% 成就等级特权配置表
  98. -record(stage_privilege_cfg, {
  99. stage = 0,
  100. name = "",
  101. desc = "",
  102. content = [],
  103. reward = [],
  104. icon = 0 %% 前端展示icon
  105. }).
  106. %% 成就常量配置表
  107. -record(achievement_kv_cfg, {
  108. key = "", %% 键
  109. value = "", %% 值
  110. desc = "" %% 描述
  111. }).
  112. %% 成就相关
  113. -define(insert_achievement,
  114. <<"replace into `achievement`(`role_id`, `category`, `sub_category`, `progress`, `status`, `time`) values(~p, ~p, ~p, ~p, ~p, ~p)">>).
  115. -define(select_achievement,
  116. <<"select `category`, `sub_category`, `progress`, `status` from `achievement` where `role_id` = ~p">>).
  117. -define(update_achievement_progress,
  118. <<"update `achievement` set `progress` = ~p, `status` = ~p, `time` = ~p where `role_id` = ~p and `category` = ~p and `sub_category` = ~p">>).
  119. -define(update_achievement_status,
  120. <<"update `achievement` set `status` = ~p, `time` = ~p where `role_id` = ~p and `category` = ~p and `sub_category` = ~p">>).
  121. %% 章节奖励
  122. -define(insert_achievement_category_reward,
  123. <<"replace into `achievement_category_reward` (`role_id`, `category`, `status`, `time`) values(~p, ~p, ~p, ~p)">>).
  124. -define(select_achievement_category_reward,
  125. <<"select `category`, `status` from `achievement_category_reward` where `role_id` = ~p">>).
  126. %% 成就等级
  127. -define(insert_achievement_level,
  128. <<"replace into `achievement_lv`(`role_id`, `lv`, `exp`, `lv_reward_list`) values(~p, ~p, ~p, '~ts')">>).
  129. -define(select_achievement_level,
  130. <<"select `lv`, `exp`, `lv_reward_list` from `achievement_lv` where `role_id` = ~p limit 1">>).
  131. -define(update_achievement_level,
  132. <<"update `achievement_lv` set `lv` = ~p, `exp` = ~p where `role_id` = ~p">>).
  133. -define(update_achievement_lv_reward_status,
  134. <<"update `achievement_lv` set `lv_reward_list` = '~ts' where `role_id` = ~p">>).