erlang各种有用的函数包括一些有用nif封装,还有一些性能测试case。
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.

232 lines
12 KiB

4 years ago
  1. %%%------------------------------------------------
  2. %%% File : record.erl
  3. %%% Author : csj
  4. %%% Created : 2010-09-15
  5. %%% Description: record
  6. %%%------------------------------------------------
  7. -include("table_to_record.hrl").
  8. %%战斗属性 战斗相关属性的率一般为 万分比值*10000,
  9. %% 发给客户端显示使用 万分比值*10000/100,显示为等级
  10. -record(battle_attr, {
  11. x = 0, %% X 坐标
  12. y = 0, %% Y 坐标
  13. direct_x = 0, %% 朝向x坐标
  14. direct_y = 0, %% 朝向y坐标
  15. career = 1, %% 职业(参考common.hrl定义)
  16. skill_cd_all = 0, %% 对所有技能的CD, 冷冻到期时间(毫秒)
  17. buff_timer_start = false, %% buff计时器是否开启 true.开启 false.关闭
  18. skill_cd_list = [], %% 技能使用CD,格式[{SkillId, CdTime},...], CdTime为冷冻到期时间(毫秒)
  19. link_skill_buff = [], %% 能触发后续技能的buff列表
  20. delay_skill_buff = [], %% 延迟触发buff
  21. timer_buff = [], %% 时间触发类buff
  22. hurted_buff = [], %% 被击触发类buff
  23. skill_buff = [], %% 技能特殊状态Buff/单次有效,过期还原/需发到客户端[{BufId, 过期时间},...] 毫秒,
  24. buff1 = [], %% 技能加战斗属性BUF列表/单次有效,过期还原 [{BufId, 过期时间},...] 毫秒
  25. buff2 = [], %% 技能加血力法量BUF列表/周期性, 过期保留 [{BufId, CD到期时间, 剩余次数},...] 毫秒
  26. sing_expire = 0, %% 吟唱到期时间(毫秒), 目前只对怪有效, 0为不在吟唱时间内
  27. use_combopoint = 0, %% 是否使用了combopoint增加属性攻击值(0未用, 其他为使用的点数)
  28. combopoint_max = 0, %% 最大连击点数
  29. combopoint = 0, %% 连击点数(技能消耗/获得的属性,可额外增加伤害率或防御率)
  30. hit_point = 0, %% 生命
  31. hit_point_max = 0, %% 生命上限
  32. magic = 0, %% 法力值
  33. magic_max = 0, %% 法力值上限
  34. anger = 0, %% 怒气值
  35. anger_max = 0, %% 怒气值上限
  36. attack = 0, %% 普通攻击力
  37. attack_ratio = 0, %% 普通攻击力增加伤害率(Buff附加值, 初始为0)
  38. defense = 0, %% 普通防御力
  39. defense_ratio = 0, %% 普通防御力增加防御率(Buff附加值, 初始为0)
  40. abs_damage = 0, %% 绝对伤害值
  41. fattack = 0, %% 仙攻值
  42. fattack_ratio = 0, %% 仙攻值增加伤害率(Buff附加值, 初始为0)
  43. mattack = 0, %% 魔攻值
  44. mattack_ratio = 0, %% 魔攻值增加伤害率(Buff附加值, 初始为0)
  45. dattack = 0, %% 妖攻值
  46. dattack_ratio = 0, %% 妖攻值增加伤害率(Buff附加值, 初始为0)
  47. fdefense = 0, %% 仙防值
  48. fdefense_ratio = 0, %% 仙防值增加防御率(Buff附加值, 初始为0)
  49. mdefense = 0, %% 魔防值
  50. mdefense_ratio = 0, %% 魔防值增加防御率(Buff附加值, 初始为0)
  51. ddefense = 0, %% 妖防值
  52. ddefense_ratio = 0, %% 妖防值增加防御率(Buff附加值, 初始为0)
  53. speed = 0, %% 移动速度
  54. attack_speed = 0, %% 攻击速度
  55. hit_ratio = 1, %% 命中等级(万分比)
  56. dodge_ratio = 1, %% 闪避等级(万分比)
  57. crit_ratio = 1, %% 暴击等级(万分比)
  58. tough_ratio = 1, %% 坚韧等级(万分比)
  59. frozen_resis_ratio = 0, %% 冰冻抗性率(帮派技能引入)
  60. weak_resis_ratio = 0, %% 虚弱抗性率(帮派技能引入)
  61. flaw_resis_ratio = 0, %% 破绽抗性率(帮派技能引入)
  62. poison_resis_ratio = 0, %% 中毒抗性率(帮派技能引入)
  63. avoid_attack_ratio = 0, %% 受到普攻免伤害率(Buff附加值, 初始为0)
  64. avoid_fattack_ratio = 0, %% 受到仙攻免伤率(Buff附加值, 初始为0)
  65. avoid_mattack_ratio = 0, %% 受到魔攻免伤率(Buff附加值, 初始为0)
  66. avoid_dattack_ratio = 0, %% 受到妖攻免伤率(Buff附加值, 初始为0)
  67. avoid_crit_attack_ratio = 0, %% 受到普攻暴击免伤害率(Buff附加值, 初始为0)
  68. avoid_crit_fattack_ratio = 0, %% 受到仙攻暴击免伤率(Buff附加值, 初始为0)
  69. avoid_crit_mattack_ratio = 0, %% 受到魔攻暴击免伤率(Buff附加值, 初始为0)
  70. avoid_crit_dattack_ratio = 0, %% 受到妖攻暴击免伤率(Buff附加值, 初始为0)
  71. ignore_defense = 0, %% 攻方忽略防方普防值(武魂引入)
  72. ignore_fdefense = 0, %% 攻方忽略防方仙防值(武魂引入)
  73. ignore_mdefense = 0, %% 攻方忽略防方魔防值(武魂引入)
  74. ignore_ddefense = 0, %% 攻方忽略防方妖防值(武魂引入)
  75. status_stop = 0, %% 石化状态
  76. status_silent = 0, %% 沉默状态[能普攻,不能技能]
  77. status_unstoptable = 0, %% 免役控制
  78. status_unattrackable = 0, %% 不能发起攻击[普通或者技能都不可以]
  79. change_appearance = 0, %% 外观变换
  80. energy = {}, %% 能量球,
  81. passive_skill_attr = [], %% 职业被动分流,
  82. hurt_call_back = 0, %% 受击反弹伤害百分比
  83. passive_hurt_rate = 0, %% 反伤百分比增加比率(被动技能)
  84. control_radio = 0, %% 技能产生控制的几率
  85. walk_path = [], %% 行走路径,格式[DestX,DestY,Len,<<WalkPath>>]
  86. move_destination = {0, 0}, %% 移动的目的点
  87. ai_init_id = 0, %% 初始的AI,用于重置
  88. clock_time = 143, %% 初始的时钟(一秒钟走7步,1000/7)
  89. demage_buff_list = [], %% 伤害buff列表
  90. remove_buff_list = [], %% 移除buff列表
  91. attr_freeze_probability = 0, %% 受到冰冻的概率
  92. hp_cover_callback = 0, %% 回复效果
  93. is_rush_success = 0, %% 标记玩家是否冲锋成功 0.默认状态 1.冲锋成功 2.冲锋失败
  94. fight_pos = {1, 1}, %% 攻击对方时,站在对方的方位参数 1,0/1,1/1,-1/0,1/0,-1/-1,0/-1,1/-1,-1
  95. return_steps = 0, %% 在返回时,记录返回的步数(主要用于怪物返回的瞬移)
  96. move_speed_queue = {{0, []}, {0, []}},%%移动速度buff效果队列
  97. damage_reduction = {0, 0, 0, ""}, %%当前吸收伤害盾吸收数值
  98. damage_reduction_queue = [], %%伤害吸收队列
  99. invincible = 0, %%无敌状态
  100. reduce_dot_damage = 0, %%忽略dot千分比伤害
  101. abs_crit_ratio = 1, %%暴击率真实值
  102. real_defense = 0 %%实际的物理防御力
  103. }).
  104. %%用户的其他附加信息(对应player.other)
  105. -record(player_other, {
  106. skill_list = [], % 技能列表[{SkillId, Level}, ...]
  107. skill_point = {0, 0}, % 技能点
  108. socket = undefined, % 当前用户的socket
  109. pid = undefined, % 用户进程Pid
  110. pid_goods = undefined, % 物品模块进程Pid
  111. pid_send = [], % 消息发送进程Pid(可多个)
  112. pid_battle = undefined, % 战斗进程Pid
  113. pid_scene = undefined, % 当前场景Pid
  114. pid_dungeon = undefined, % 当前副本进程
  115. pid_task = undefined, % 当前任务Pid
  116. pid_mount = undefined, % 当前座骑Pid
  117. node = undefined, % 进程所在节点
  118. blacklist = false, % 是否受黑名单监控
  119. pk_mode = 0, % 0-不强制pk模式 1-强制和平模式 2-强制自由pk模式 3-强制帮会pk模式
  120. goods_ets_id = 0, % 物品ets表ID
  121. equip_current = [], % 影响玩家外观装备
  122. role_suit = [], % 套装列表
  123. weapon_strenLv = 0, % 武器强化等级
  124. armor_strenLv = 0, % 盔甲强化等级
  125. fashion_strenLv = 0, % 时装强化等级
  126. wapon_accstrenLv = 0, % 武饰强化等级
  127. wing_strenLv = 0, % 翅膀强化等级
  128. mount_fashion = 0, % 坐骑外观
  129. team_id = 0, % 队伍ID, 0为无队伍
  130. team_leader = 0, % 是否队长1是,其他不是
  131. pet_facade = 0, % 宠物外观
  132. pet_status = 0, % 0宠物休息, 1出战, 2不存在
  133. pet_quality_lv = 0, % 宠物品阶
  134. pet_name = <<"">>, % 宠物名字
  135. step_check_tasks = [], % 玩家移动时候是否需要检查任务的任务列表
  136. hardware_info = {} %玩家硬件信息
  137. }).
  138. %%任务进度(用于在杀怪,采集等动作时保存对应的未完成任务与已完成任务)
  139. -record(task_process_info, {
  140. task_unfinsh = [], %%未完成的任务
  141. task_fin = [] %%已完成任务
  142. }).
  143. %%怪物掉落
  144. -record(mon_drop_goods, {
  145. drop_id = 0, %% 掉落物实例ID
  146. uid = 0, %% 玩家ID
  147. mon_id = 0, %% 掉落产生ID
  148. goods_id = 0, %% 物品ID
  149. goods_num = 0, %% 掉落数量
  150. x = 0, %% 掉落的X左边
  151. y = 0, %% 掉落的Y坐标
  152. expire_time = 0 %% 掉落失效时间
  153. }).
  154. %% 购买npc商店日志
  155. -record(ets_npc_shop_log, {
  156. key,
  157. buy_num, %%
  158. buy_time %%
  159. }).
  160. %% 购买商城日志
  161. -record(ets_shop_log, {
  162. key,
  163. buy_num, %%
  164. buy_time %%
  165. }).
  166. %% 购买商城日志
  167. -record(ets_special_shop_log, {
  168. key,
  169. buy_num, %%
  170. buy_time %%
  171. }).
  172. %% 队伍信息
  173. -record(team, {
  174. tid = 0, %%队伍ID
  175. leader_id = 0, %%队长ID
  176. leader_nick = <<>>, %%队长名字
  177. leader_level = 0, %%队长的等级
  178. direct_join = 0, %%直接加入队伍
  179. invite_allow = 0, %%成员可发邀请
  180. max_num = 0, %%最大队员数
  181. member_ids = [] %%成员ID列表
  182. }).
  183. %% 成员信息
  184. -record(team_member, {
  185. uid = 0, %%角色ID
  186. tid = 0, %%队伍ID
  187. level = 0, %%队长的等级
  188. nick = <<>>, %%名字
  189. force = 0, %%战斗力
  190. camp = 0, %%阵营
  191. career = 0, %%职业
  192. gender = 0 %%性别
  193. }).
  194. -record(energy, {
  195. attack = <<"{}">>, %%攻击时回复的能量系数k
  196. injured, %%被攻击时回复的能量系数k
  197. crit, %%暴击回复的能量系数k
  198. battle_recover, %%战斗时回复每秒的能量系数 k
  199. normal_recover, %%离开战斗时每秒回复的能量系数 k
  200. last_reflesh_time, %%最近一次计算能量球的时间
  201. energy_val, %%玩家当前的能量值
  202. max_energy, %%玩家能量值上限 ,
  203. freeze_second = 0, %%能量值暂停衰减的时间
  204. attack_callback_rate = 1, %%攻击回复能量值比
  205. injured_rate = 1000, %%受击回复能量比例
  206. recover_percent = 0 %%回复能量百分比
  207. }).
  208. -record(ets_scene_slice, {
  209. id = 0,
  210. obj = []
  211. }).
  212. -record(hardware_info, {
  213. os = 0,%%手机操作系统,如:0.未知 1.android 2.iphone
  214. os_version = <<"">>,%%操作系统版本号,如:2.3.4
  215. device = <<"">>,%%设备名称,如:三星GT-S5830
  216. device_type = 0,%%设备类型,如:0.未知 1.android 2.iPhone 3.iPad
  217. screen = <<"">>,%%屏幕分辨率,如:480*800
  218. mno = 0,%%移动网络运营商(mobile network operators),0.未知 1.中国移动 2.中国电信 3.中国联通
  219. nm = 0 %%联网方式(Networking mode),如:0.未知 1.3G 2.WIFI 3.2G
  220. }).