源战役
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

175 rindas
6.5 KiB

pirms 4 nedēļām
  1. %% ------------------------
  2. %% desc :经验放置
  3. %% author:hh
  4. %% time :20/01/16
  5. %% ------------------------
  6. %% 快速挂机基础经验
  7. -record(base_fast_onhook_reward, {
  8. lv = 0, %% 等级
  9. base_exp = 0, %% 基础经验
  10. time = 0 %% 持续时间
  11. }).
  12. %% 快速挂机多倍领取次数
  13. -record(base_fast_onhook_multi_reward_count, {
  14. vip = 0, %% vip等级
  15. count = 0 %% 次数
  16. }).
  17. %% 货币类(经验)效率
  18. -record(base_onhook_exp_effiency, {
  19. wave = 0, %% 波数(关卡)
  20. effiency = 0 %% 效率
  21. }).
  22. %% 掉落规则配置
  23. -record(base_exp_dun_drop_rule, {
  24. lv = 0, %% 等级
  25. wave = 0, %% 波数
  26. rule = [] %% 规则 [{1(轮次),[{2000(权重),[{1(掉落包id),1(掉落包个数)}]}]}] 万分制概率
  27. }).
  28. %% 掉落物品配置
  29. -record(base_exp_dun_drop_goods, {
  30. id = 0, %% 掉落id
  31. list_id = 0, %% 列表id
  32. goods_type = 0, %% 物品类型
  33. goods_id = 0, %% 物品id
  34. min = 0, %% 最小数量
  35. max = 0, %% 最大数量
  36. open_day = [], %% 开服天数
  37. weight = 0 %% 权重
  38. }).
  39. %% -------------------------------------------------------
  40. %% 公共进程数据
  41. -record(exp_dun_drop_state, {
  42. calc_maps = #{}, %% 结算组别 #{组id => [role_id,....]} 映射列表
  43. start_time = 0, %% 开始时间
  44. ref = undefined %% 结算定时器
  45. }).
  46. %% 个人数据,存储在公共进程字典
  47. -record(drop_role, {
  48. id = 0, %% 个人id
  49. wave_point = [], %% 波数通关节点 [{wave, reach_time},...]
  50. off_point = [], %% 离线时间节点 [{离线开始, 离线结束},...]
  51. start_time = 0, %% 结算开启时间(领取完或玩家结算开启),个人活动状态决定开启时间
  52. calc_time = 0, %% 最近一次结算时间,公共进程结算个人时更新此时间
  53. calc_goods = [], %% 累积物品道具(最多不超过配置规定时限)
  54. goods_limit = [], %% 限制的物品 产出数量
  55. is_rewarding = 0, %% 是否在领奖,若领奖且正结算,则忽略 0否|1是
  56. remain = 0, %% 上次结算结余时间
  57. extra_data = [] %% 其他数据如宠物生活技能/离线加成剩余时长 等 [{Mod, Data}]
  58. }).
  59. %% 玩家放置经验&快速挂机数据-个人进程
  60. -record(role_exp_dun_drop, {
  61. fast_drop_time = 0,
  62. cache_time_last = 0,
  63. last_time = 0
  64. }).
  65. -ifdef (DEV_SERVER).
  66. -define(EXP_DUN_DROP_INTERVAL, 600). %% 玩家结算的间隔
  67. -define(EXP_DUN_DROP_GROUP, 2). %% 在玩家结算间隔中分割所有玩家的组数量
  68. -else.
  69. -define(EXP_DUN_DROP_INTERVAL, 3600). %% 玩家结算的间隔
  70. -define(EXP_DUN_DROP_GROUP, 15). %% 在玩家结算间隔中分割所有玩家的组数量
  71. -endif.
  72. -define(EXP_DUN_DROP_SEC_PER_MIN, 60).
  73. -define(EXP_DUN_RATIO_MAX, 10000).
  74. %% 公共进程人物字典key
  75. -define(DROP_ROLE_KEY(X), {drop_role, X}).
  76. %%
  77. -define(DB_MAX_LEN, 10).
  78. %% 限制物品
  79. -define(DROP_BLUE_EQUIP, 2). %% 蓝装
  80. -define(DROP_PURPLE_EQUIP, 3). %% 紫装以上
  81. %% 是否正领奖
  82. -define(EXP_DROP_NOT_REWARD, 0).
  83. -define(EXP_DROP_REWARDING, 1).
  84. -define(EXP_DROP_CALCING, 2). %% 系统结算中
  85. %% 开放功能子id
  86. -define(EXP_DROP_1, 2). %% 放置经验开启
  87. -define(EXP_DROP_2, 15). %% 快速挂机开启
  88. %% 经验副本前置任务
  89. -define(EXP_DUN_PRE_TASK, 10730).
  90. %% 最小领取间隔
  91. -define(EXP_DROP_REWARD_INTERVAL, 600).
  92. %%
  93. -define(EXP_DROP_ERROR_LOG_TIME, exp_drop_log_time).
  94. %% 离线挂机加成卡物品子类
  95. -define(EXP_DROP_GOODS_SUB_TYPE, 41).
  96. %% 数据移除最大间隔
  97. -define(EXP_DROP_REMOVE, 259200).
  98. -ifdef(DEV_SERVER).
  99. -define(SVR_RATIO_ADD(ExpDropAddRatio, VipPrivilege, ServerLvExpRatio),
  100. 1 + ExpDropAddRatio/?RATIO_MAX + VipPrivilege/100 + 0/max(1, ServerLvExpRatio)).
  101. -else.
  102. -define(SVR_RATIO_ADD(ExpDropAddRatio, VipPrivilege, ServerLvExpRatio),
  103. 1 + ExpDropAddRatio/?RATIO_MAX + VipPrivilege/100 + ServerLvExpRatio/100).
  104. -endif.
  105. -define(SELECT_ROLE_DROP_INFO,
  106. <<"SELECT calc_time, start_time, extra_data FROM role_exp_dun_drop WHERE role_id = ~p">>).
  107. -define(REPLACE_INTO_DROP_INFO,
  108. <<"REPLACE INTO role_exp_dun_drop SET role_id = ~p, calc_time = ~p, start_time = ~p, extra_data = ~ts">>).
  109. -define(UPDATE_DROP_INFO_CALC_TIME,
  110. <<"UPDATE role_exp_dun_drop SET calc_time = ~p WHERE role_id = ~p">>).
  111. -define(UPDATE_DROP_INFO_START_TIME,
  112. <<"UPDATE role_exp_dun_drop SET start_time = ~p WHERE role_id = ~p">>).
  113. -define (UPDATE_DROP_INFO_EXTRA_DATA,
  114. <<"UPDATE role_exp_dun_drop SET extra_data = ~ts WHERE role_id = ~p">>).
  115. -define (UPDATE_DROP_INFO,
  116. <<"UPDATE role_exp_dun_drop SET start_time = ~p, calc_time = ~p, extra_data = ~ts WHERE role_id = ~p">>).
  117. -define (UPDATE_DROP_INFO_EXCLUDE_EXTRA_DATA,
  118. <<"UPDATE role_exp_dun_drop SET start_time = ~p, calc_time = ~p WHERE role_id = ~p">>).
  119. -define(SELECT_ROLE_FAST_EXP,
  120. <<"SELECT fast_hook_time FROM role_fast_exp WHERE role_id = ~p">>).
  121. -define(REPLACE_DROP_INFO_FAST_DROP_TIME,
  122. <<"REPLACE INTO role_fast_exp SET role_id = ~p, fast_hook_time = ~p">>).
  123. -define(SELECT_ROLE_GOODS_DROP,
  124. <<"SELECT goods_type, goods_id, num FROM role_exp_dun_drop_goods WHERE role_id = ~p">>).
  125. -define(BATCH_UPDATE_ROLE_GOODS,
  126. <<"REPLACE INTO `role_exp_dun_drop_goods` (`role_id`, `goods_type`, `goods_id`, `num`)">>).
  127. -define(DELETE_ROLE_ALL_GOODS,
  128. <<"DELETE FROM role_exp_dun_drop_goods WHERE role_id = ~p">>).
  129. -define(SELECT_ROLE_EXP_DUN_WAVE,
  130. <<"SELECT wave, time FROM role_exp_dun_wave_info WHERE role_id = ~p">>).
  131. -define(REPLACE_INTOEXP_DUN_WAVE,
  132. <<"REPLACE INTO role_exp_dun_wave_info SET role_id = ~p, wave = ~p, time = ~p">>).
  133. -define(DELETE_ROLE_EXP_DUN_WAVE,
  134. <<"DELETE FROM role_exp_dun_wave_info WHERE role_id = ~p AND wave in ~s">>).
  135. -define(SELECT_ROLE_EXP_DUN_REC,
  136. <<"SELECT data FROM dungeon_best_record WHERE player_id = ~p AND dun_id = ~p">>).
  137. -define(SELECT_ROLE_OFF_POINT,
  138. <<"SELECT off_start, off_end FROM role_exp_dun_off_point WHERE role_id = ~p">>).
  139. -define(BATCH_REPLACE_INTO_OFF_POINT,
  140. <<"REPLACE INTO role_exp_dun_off_point(`role_id`, `off_start`, `off_end`) VALUES ~ts">>).
  141. -define(BATCH_REPLACE_OFF_POINT_VAL, <<"(~p, ~p, ~p)">>).
  142. -define(REPLACE_INTO_EXP_DROP_OFF_POINT,
  143. <<"REPLACE INTO role_exp_dun_off_point SET `role_id` = ~p, `off_start` = ~p, `off_end` = ~p">>).
  144. -define(DELETE_ROLE_OFF_POINT,
  145. <<"DELETE FROM role_exp_dun_off_point WHERE role_id = ~p AND off_start in ~s">>).