源战役
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

138 wiersze
5.4 KiB

4 tygodni temu
  1. %%%-------------------------------------------------------------------
  2. %%% @author tyl
  3. %%% @doc
  4. %%% 成就头文件
  5. %%% @end
  6. %%% Created : 2021-03-15
  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_FIN_COUNT, 1). %% 成就大类进度更新
  26. -define(NOTIFY_SUB_TYPE_PROGRESS, 2). %% 成就小类成就进度更新
  27. %% -----------------------------------------------------------------------------
  28. %% @doc 成就大类 和 小类 @end
  29. %% -----------------------------------------------------------------------------
  30. %% 成就大类
  31. -define(ACHIEVEMENT_TYPE_1, 1).
  32. -define(ACHIEVEMENT_TYPE_2, 2).
  33. -define(ACHIEVEMENT_TYPE_3, 3).
  34. -define(ACHIEVEMENT_TYPE_4, 4).
  35. %% 成就进度数据,存进程字典中
  36. -record(proc_achievement, {
  37. fin_count_map = #{}, %% #{type => count} 章节完成数量
  38. now_id_map = #{}, %% #{{type, sub_type}=>id...} 各个小类对应的当前展示进度
  39. finish_map = #{}, %% #{type => [#achievement{}...]} 已经领取完奖励的成就列表
  40. progress_map = #{} %% #{type => [#achievement{}...]} 保存有进度数据的成就
  41. }).
  42. %% 成就等级,存#player_status{}
  43. -record(role_achievement, {
  44. lv = 0, %% 等级
  45. exp = 0, %% 经验值
  46. attr = [], %% 属性列表
  47. lv_reward_list = [] %% 等级奖励领取状态[{lv,status}]
  48. }).
  49. -record(achievement, {
  50. key = {}, %% {sub_type,id}-{子分类,成就id}
  51. progress = 0, %% 进度
  52. status = 0, %% 奖励状态 0: 未达成 1: 已达成 2: 已领取
  53. wtime = 0, %% 最近一次更新写入数据库的时间
  54. wstatus = 0 %% 写入状态 1: 写入成功 2: 待写入
  55. }).
  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. ,task_position = 0 %% 任务栏展示位置
  70. ,task_sequence = 0 %% 任务序列
  71. }).
  72. %% 成就分类排序表
  73. -record(achievement_seq_cfg, {
  74. type = 0 %% 成就大类
  75. ,sub_type = 0 %% 成就小类
  76. ,seq = 0 %% 顺序
  77. }).
  78. %% 成就等级配置表
  79. -record(achievement_stage_cfg, {
  80. stage = 0, %% 等级
  81. need_exp = 0, %% 需耀经验
  82. attr_list = []
  83. }).
  84. %% 成就等级特权配置表
  85. -record(stage_privilege_cfg, {
  86. stage = 0, %% 等级
  87. name = "",
  88. desc = "",
  89. content = [],
  90. reward = [],
  91. icon = 0 %% 前端展示icon
  92. }).
  93. %% 成就常量配置表
  94. -record(achievement_kv_cfg, {
  95. key = "", %% 键
  96. value = "", %% 值
  97. desc = "" %% 描述
  98. }).
  99. %% --------------------------------------- db --------------------------------
  100. %% 成就进度
  101. -define(insert_achievement,
  102. <<"replace into `achievement`(`role_id`, `type`, `sub_type`, `id`, `progress`, `status`, `time`) values(~p, ~p, ~p, ~p, ~p, ~p, ~p)">>).
  103. -define(select_achievement,
  104. <<"select `type`, `sub_type`, `id`, `progress`, `status` from `achievement` where `role_id` = ~p">>).
  105. -define(update_achievement_progress,
  106. <<"update `achievement` set `progress` = ~p, `status` = ~p, `time` = ~p where `role_id` = ~p and `type` = ~p and `sub_type` = ~p and `id` = ~p">>).
  107. -define(update_achievement_status,
  108. <<"update `achievement` set `status` = ~p, `time` = ~p where `role_id` = ~p and `type` = ~p and `sub_type` = ~p and `id` = ~p">>).
  109. -define(batch_insert_achievement,
  110. <<"replace into `achievement`(`role_id`, `type`, `sub_type`, `id`, `progress`, `status`, `time`) values ~ts">>).
  111. -define(batch_insert_achievement_value,
  112. <<"(~p, ~p, ~p, ~p, ~p, ~p, ~p)">>).
  113. %% 成就等级
  114. -define(insert_achievement_level,
  115. <<"replace into `achievement_lv`(`role_id`, `lv`, `exp`, `lv_reward_list`) values(~p, ~p, ~p, '~ts')">>).
  116. -define(select_achievement_level,
  117. <<"select `lv`, `exp`, `lv_reward_list` from `achievement_lv` where `role_id` = ~p limit 1">>).
  118. -define(update_achievement_level,
  119. <<"update `achievement_lv` set `lv` = ~p, `exp` = ~p where `role_id` = ~p">>).
  120. -define(update_achievement_lv_reward_status,
  121. <<"update `achievement_lv` set `lv_reward_list` = '~ts' where `role_id` = ~p">>).