%%%------------------------------------------------------------------- %%% Created : 26. 十二月 2016 15:28 %%%------------------------------------------------------------------- -module(proto_200). %% API -export([ info/0 ,cfg/0 ] ). -include("protocol.hrl"). info() -> { "" ,["combat.hrl", "formation.hrl"] }. cfg() -> [ #rpc{ code = 20000 ,log_title = "战斗初始化数据" ,req_desc = "战斗初始化数据" ,req = [ ] ,reply_desc = "返回战斗初始化数据" ,reply = [ {uint16, combat_type, "什么类型的战斗"} ,{uint32, combat_map, "战斗地图"} ] } ,#rpc{ code = 20001 ,log_title = "战斗准备" ,req_desc = "战斗准备" ,req = [ ] ,reply_desc = "返回战斗初始化数据" ,reply = [ {uint8, code, "是否成功"} ,{string, msg, "附加信息"} ] } ,#rpc{ code = 20002 ,log_title = "回合开始" ,req_desc = "回合开始" ,req = [ ] ,reply_desc = "推送单位出手信息" ,reply = [ {uint16, pos, "这次出手的单位位置"} ,{uint32, owner_id, "拥有者id"} ,{string, owner_srv_id, "拥有者服务器id"} ,{array, single, all_alive, "所有存活单位位置", [ {uint16, pos, "位置"} ]} ,{array, skill_play, skill_plays, "回合开始前触发的被动技能列表", ?p_g_set(skill_play,[ {uint8, order, "技能顺序"} ,{uint16, actor, "技能施法者位置"} ,{uint16, target, "目标位置"} ,{uint32, skill_bid, "技能id"} ,{uint16, talk_pos, "说话的位置"} ,{string, talk_content, "说话的内容"} ,{array, effect_play, effect_play, "技能的效果", ?p_g_set(effect_play, [ {uint16, order, "技能效果的顺序"} ,{uint16, actor, "施法者位置"} ,{uint16, target, "目标位置"} ,{uint32, effect_bid, "效果bid"} ,{uint8, is_hit, "是否命中 1:命中 0 : 没有命中"} ,{uint8, is_crit, "是否暴击 1 暴击 0 : 没有暴击"} ,{int32, hp_changed, "血量变化 正的是加血,负的是减血"} ,{uint64, hp, "当前血量, 现在没有用到"} ,{int8, is_dead, "是否死亡 1 死亡 0 没有死亡"} ,{int8, camp_restrain, "是否阵营克制 1 是 0 没有"} ,{array, buff_play, buff_list, "效果加的buff", ?p_g_set(buff_play, [ {uint16, target, "buff的目标"} ,{uint32, buff_bid, "buff bid"} ,{uint16, remain_round, "剩余回合"} ,{uint8, end_round, "结束的回合"} ,{uint8, action_type, "作用类型 1 加buff 2 移除buff 3 生效 4:展示 5:增加buff不飘字"} ,{uint8, change_type, "改变的数值类型 1 血量"} ,{int32, change_value, "改变的数值, 数值代表的意义跟类型绑定"} ,{int8, is_dead, "是否死亡 1 死亡 0 没有死亡"} ,{uint32, id, "buff 唯一id"} ])} ,{array, fight_object_p, summon_list, "召唤列表", ?p_g_set(fight_object_p, [ {uint16, pos, "位置唯一id"} ,{uint8, group, "分组"} ,{uint32, owner_id, "拥有者id"} ,{string, owner_srv_id, "拥有者服务器id"} ,{uint16, object_type, "单位类型 1 角色 2 伙伴 3 怪物 4:神器"} ,{uint32, object_id, "角色id 或 伙伴 怪物 id"} ,{uint32, object_bid, "伙伴 怪物 bid"} ,{string, object_name, "名字"} ,{uint8, star, "伙伴星星"} ,{int8, camp_type, "阵营"} ,{int8, sex, "性别"} ,{int8, career, "职业"} ,{uint32, lev, "等级"} ,{uint64, hp, "血量"} ,{uint64, hp_max, "最大血量"} ,{int32, face_id, "头像"} ,{array, skill_p, skills, "角色或着伙伴的技能", ?p_g_set(skill_p, [ {uint32, skill_bid, "技能Bid"} ,{int8, end_round, "技能冷却到的回合"} ])} ,{array, tuple, extra_data, "额外数据", [ {uint8, extra_key, "1 光环 2:时装 3:神器幸运值 4:神器圣印值 5:皮肤 10:是否限时英雄 11:是否共鸣英雄(传原等级,非0则是)" } ,{uint32, extra_value, "对应的值"} ]} ,{array, tuple, sprites, "布置的精灵", [ {uint8, pos, "位置"} ,{uint32, item_bid, "精灵bid(0:未布置)"} ]} ])} ,{array, sub_effect_play, sub_effect_play_list, "子效果", [ {uint16, sub_target, "子效果的目标"} ,{uint32, sub_effect_id, "子效果"} ,{int32, sub_hp_changed, "血量变化 正的是加血,负的是减血"} ,{uint8, sub_is_hit, "是否命中 1:命中 0 : 没有命中, 飘抵抗"} ,{uint32, sub_skill_id, "子效果所属的技能ID"} ,{array, tuple, extra_effect, "额外的效果", [ {uint16, extra_key, "1 暗伤"} ,{int32, extra_param, "对应的值"} ]} ]} ,{uint8, is_blind, "是否致盲 1:是,这个时候需要飘'未命中' 0 : 没有致盲"} ,{uint32, skill_bid_of_effect, "技能id"} ,{int32, actor_hp_changed, "援护者血量变化 正的是加血,负的是减血"} ,{int8, actor_is_dead, "援护者是否死亡 1 死亡 0 没有死亡"} ,{uint16, aid_actor, "援护者位置"} ,{uint32, total_hurt, "总伤害, 目前是泰坦玩法用"} ,{array, tuple, hurt_reward, "伤害对应的奖励", [ {uint32, assets_id, "资产ID"} ,{int32, assets_val, "值"} ]} ])} ])} ,{array, buff_play, round_buff, "回合触发的buff", ?p_g_get(buff_play)} ,{uint32, countdown_time, "回合倒计时 0 表示不需要显示"} ,{uint32, action_count, "当前出手总次数"} ,{uint16, combat_type, "什么类型的战斗"} ,{array, tuple, hallows_list, "神器冷却信息", [ {uint8, group, "组"} ,{uint8, val, "当前值"} ]} ,{array, tuple, sprite_cd_info, "精灵cd信息(2019.8.24 lfl新增,只处理精灵的cd)", [ {uint16, pos, "精灵位置(41:A方精灵 42:B方精灵)"} ,{array, skill_p, cd_info, "cd信息", [ {uint32, skill_bid, "技能Bid"} ,{int8, end_round, "技能冷却到的回合"} ]} ]} ] } ,#rpc{ code = 20003 ,log_title = "使用技能的战斗播报" ,req_desc = "使用技能的战斗播报" ,req = [ ] ,reply = [ {uint64, hp, "血量"} ,{uint64, hp_max, "最大血量"} ] } ,#rpc{ code = 20004 ,log_title = "使用技能的战斗播报" ,req_desc = "使用技能的战斗播报" ,req = [ ] ,reply_desc = "推送战斗播报" ,reply = [ {array, skill_play, skill_plays, "动技能列表", ?p_g_get(skill_play)} ,{array, buff_play, round_buff, "回合触发的buff", ?p_g_get(buff_play)} ,{uint32, action_count, "当前出手总次数"} ,{uint16, combat_type, "什么类型的战斗"} ,{array, tuple, star_list, "神装副本实时星数信息", [ {uint8, id, "星数任务id"} ,{uint8, val, "是否已完成(0:未完成 1:已完成)"} ]} ,{array, tuple, sprite_cd_info, "精灵cd信息(2019.8.24 lfl新增,只处理精灵的cd)", [ {uint16, pos, "精灵位置(41:A方精灵 42:B方精灵)"} ,{array, skill_p, cd_info, "cd信息", [ {uint32, skill_bid, "技能Bid"} ,{int8, end_round, "技能冷却到的回合"} ]} ]} ] } ,#rpc{ code = 20005 ,log_title = "客户端播放完成" ,req_desc = "客户端通知服务端技能效果播放完成" ,req = [ ] ,reply_desc = "" ,reply = [ ] } ,#rpc{ code = 20006 ,log_title = "战斗结果" ,req_desc = "战斗结果" ,req = [ ] ,reply_desc = "返回战斗结果" ,reply = [ {uint8, result, "战斗结果 1 : 胜利 2:失败"} ,{array, tuple, item_rewards, "道具奖励", [ {uint32, bid, "物品bid"} ,{uint8, is_bind, "是不是绑定 1 绑定 0 不绑定"} ,{uint32, num, "个数"} ,{uint32, id, "物品id"} ]} ,{uint8, show_panel_type, "是否显示结算面板 1:显示 0:不显示"} ,{uint32, current_time, "当前通关时间 秒"} ,{uint32, best_time, "最佳通关时间 秒"} ,{uint16, combat_type, "什么类型的战斗"} ,{string, target_role_name, "对方名字"} ,{array, tuple, hurt_statistics, "伤害统计", [ {uint8, type, "1:进攻方 2:被攻击方"} ,{array, partner_hurt, partner_hurts, "伤害统计", [ {tuple, master_id, [ {uint32, rid, "盟主ID"} ,{string, srvid, "盟主服务器ID"} ]} ,{uint32, id, id, "英雄bid"} ,{uint32, bid, bid, "英雄bid"} ,{uint32, star, star, "星级"} ,{uint32, lev, lev, "等级"} ,{uint32, camp_type, camp_type, "英雄阵营"} ,{uint32, dps, dps, "英雄伤害"} ,{uint32, cure, cure, "英雄治疗量"} ,{array, tuple, ext_data, "额外参数", [ {uint32, key, "键(5:皮肤id)"} ,{uint32, val, "值"} ]} ,{uint32, be_hurt, be_hurt, "英雄承受伤害"} ]} ]} ,{uint32, adventure_end_hp, "冒险战斗结算用于显示剩余hp百分比(已放大1000倍)"} ,{uint8, room_id, "冒险战斗结算用 房间号"} ,{array, tuple, ext_list, "冒险战斗结算用 额外参数(没有则不传,按约定传值)", [ {uint8, ext_type, "参数类型"} ,{uint32, ext_val, "值"} ]} ] } ,#rpc{ code = 20008 ,log_title = "退出战斗" ,req_desc = "退出战斗" ,req = [ ] ,reply_desc = "退出战斗" ,reply = [ {uint8, code, "是否成功"} ,{string, msg, "附加信息"} ] } ,#rpc{ code = 20009 ,log_title = "退出战斗(用于神装副本退出1队使用)" ,req_desc = "退出战斗(用于神装副本退出1队使用)" ,req = [ ] ,reply_desc = "退出战斗" ,reply = [ {uint8, code, "是否成功"} ,{string, msg, "附加信息"} ] } ,#rpc{ code = 20013 ,log_title = "战斗重连" ,req_desc = "战斗重连" ,req = [ ] ,reply_desc = "战斗重连" ,reply = [ {uint16, combat_type, "什么类型的战斗"} ,{array, tuple, formation, "两边阵法信息", [ {uint8, group, "分组"} ,{uint8, formation_type, "阵法类型"} ,{uint8, formation_lev, "阵法等级"} ]} ,{array, fight_object_p, objects, "双方战斗单位", ?p_g_get(fight_object_p)} ,{uint8, is_auto, "是否自动 1:自动 0:手动"} ,{array, buff_play, buffs, "拥有的buff", ?p_g_get(buff_play)} ,{uint8, current_wave, "当前波数"} ,{uint16, total_wave, "总的波数"} ,{uint8, play_speed, "播放速度"} ,{uint32, combat_map, "战斗地图"} ,{array, single, extra_args, "战斗的额外参数,比如当前副本id,具体值跟战斗类型有关系", [ {uint32, param, "参数"} ]} ,{uint32, action_count, "当前出手总次数"} ,{uint8, a_object_num, "objects 中 group == 1 的单位个数"} ,{string, target_role_name, "如果对方是玩家,则是对方的角色名"} ,{string, actor_role_name, "发起方的玩家名字,用于看录像"} ,{uint32, begin_time, "战斗的开始时间"} ,{uint8, suppress, "压制图标显示(1:显示)"} ,{uint8, flag, "标识(1:断线重连 2:切入观战)"} ,{array, tuple, halo_list, "两边阵营光环信息", [ {uint8, group, "分组"} ,{uint32, type, "光环类型"} ]} ,{array, tuple, hallows_list, "神器冷却信息", [ {uint8, group, "组"} ,{uint8, val, "当前值"} ,{uint8, max, "最大值"} ]} ,{array, single, cli_string_ext_args, "战斗的字符串额外参数,比如精英赛宣战,具体值跟战斗类型有关系", [ {string, param, "参数"} ]} ] } ,#rpc{ code = 20014 ,log_title = "战斗切磋请求" ,req_desc = "战斗切磋请求" ,req = [ {uint32, target_id, "被请求的id"} ,{string, target_srv_id, "被请求的服务器id"} ,{uint8, is_province, "是否同省频道"} ] ,reply_desc = "" ,reply = [ {uint8, code, "是否成功 1 成功 0 不成功"} ,{string, msg, "附加信息"} ] } ,#rpc{ code = 20015 ,log_title = "同不同意切磋" ,req_desc = "同不同意切磋" ,req = [ {uint32, target_id, "请求者id"} ,{string, target_srv_id, "请求者的服务器id"} ,{uint8, is_agree, "1 同意 2 不同意"} ] ,reply_desc = "同不同意切磋" ,reply = [ {uint8, code, "是否成功 1 成功 0 不成功"} ,{string, msg, "附加信息"} ] } ,#rpc{ code = 20016 ,req_desc = "确认切磋" ,req = [ {uint32, target_id, "被请求的id"} ,{string, target_srv_id, "被请求的服务器id"} ,{uint8, is_agree, "1 同意 2 不同意"} ] ,reply = [ {uint32, target_id, "被请求的id"} ,{string, target_srv_id, "被请求的服务器id"} ,{string, target_name, "被请求的角色名"} ,{uint8, target_lev, "被请求的角色等级"} ,{uint32, target_face, "被请求的角色头像"} ,{uint32, face_update_time, "被请求的自定义角色头像"} ,{string, face_file, "被请求的自定义角色头像"} ] } ,#rpc{ code = 20019 ,log_title = "回合开始播放完成" ,req_desc = "客户端通知服务端回合开始效果播放完成" ,req = [ ] ,reply_desc = "" ,reply = [ ] } ,#rpc{ code = 20020 ,log_title = "下一波怪物" ,req_desc = "下一波怪物" ,req = [ ] ,reply_desc = "" ,reply = [ {uint16, combat_type, "什么类型的战斗"} ,{array, tuple, formation, "两边阵法信息", [ {uint8, group, "分组"} ,{uint8, formation_type, "阵法类型"} ,{uint8, formation_lev, "阵法等级"} ]} ,{array, fight_object_p, objects, "双方战斗单位", ?p_g_get(fight_object_p)} ,{uint8, is_auto, "是否自动 1:自动 0:手动"} ,{array, buff_play, buffs, "拥有的buff", ?p_g_get(buff_play)} ,{uint8, current_wave, "当前波数"} ,{uint16, total_wave, "总的波数"} ,{string, target_role_name, "如果对方是玩家,则是对方的角色名"} ,{string, actor_role_name, "发起方的玩家名字,用于看录像"} ,{array, tuple, halo_list, "两边阵营光环信息", [ {uint8, group, "分组"} ,{uint32, type, "光环类型"} ]} ] } ,#rpc{ code = 20022 ,log_title = "改变战斗的播放速度" ,req_desc = "改变战斗的播放速度" ,req = [ {uint8, speed, "1,2,3"} ] ,reply_desc = "" ,reply = [ {uint8, code, "是否成功 1 成功 0 不成功"} ,{string, msg, "附加信息"} ] } ,#rpc{ code = 20026 ,log_title = "地图加载完成" ,req_desc = "地图加载完成" ,req = [ ] ,reply_desc = "如果有剧情,则返回剧情id,如果没有剧情,则返回20027 " ,reply = [ {uint32, drama_id, "剧情id"} ] } ,#rpc{ code = 20027 ,log_title = "推送战斗单位数据" ,req_desc = "推送战斗单位数据" ,req = [ ] ,reply_desc = "返回战斗单位数据" ,reply = [ {uint16, combat_type, "什么类型的战斗"}, {array, tuple, formation, "两边阵法信息", [ {uint8, group, "分组"} ,{uint8, formation_type, "阵法类型"} ,{uint8, formation_lev, "阵法等级"} ]} ,{array, fight_object_p, objects, "双方战斗单位", ?p_g_get(fight_object_p)} ,{uint8, is_auto, "是否自动 1:自动 0:手动"} ,{uint8, current_wave, "当前波数"} ,{uint16, total_wave, "总的波数"} ,{uint8, play_speed, "播放速度"} ,{array, single, extra_args, "战斗的额外参数,比如当前副本id,具体值跟战斗类型有关系", [ {uint32, param, "参数"} ]} ,{string, target_role_name, "如果对方是玩家,则是对方的角色名"} ,{uint8, a_object_num, "objects 中 group == 1 的单位个数"} ,{string, actor_role_name, "发起方的玩家名字,用于看录像"} ,{uint8, suppress, "压制图标显示(1:显示)"} ,{array, tuple, halo_list, "两边阵营光环信息", [ {uint8, group, "分组"} ,{uint32, type, "光环类型"} ]} ,{array, tuple, hallows_list, "神器冷却信息", [ {uint8, group, "组"} ,{uint8, val, "当前值"} ,{uint8, max, "最大值"} ]} ,{array, single, string_ext_args, "战斗的字符串额外参数,比如精英赛宣战,具体值跟战斗类型有关系", [ {string, param, "参数"} ]} ] } ,#rpc{ code = 20028 ,log_title = "重连准备好了" ,req_desc = "重连准备好了" ,req = [ ] ,reply_desc = "如果有剧情,则返回剧情id,如果没有剧情,则返回20027 " ,reply = [ {uint8, code, "是否成功"} ,{string, msg, "附加信息"} ] } ,#rpc{ code = 20029 ,log_title = "观看战斗录像" ,req_desc = "观看战斗录像" ,req = [ {uint32, replay_id, "录像Id"} ] ,reply_desc = "" ,reply = [ {uint8, code, "是否成功"} ,{string, msg, "附加信息"} ] } ,#rpc{ code = 20030 ,log_title = "请求战斗状态" ,req_desc = "请求战斗状态" ,req = [ ] ,reply_desc = "" ,reply = [ {uint8, is_in_combat, "0 不在战斗中, 1 在战斗中"} ] } ,#rpc{ code = 20033 ,log_title = "切磋的结算" ,req_desc = "" ,req = [ ] ,reply_desc = "" ,reply = [ {uint8, result, "战斗结果 1 : 胜利 2:失败"} ,{string, def_name, "敌方角色名"} ,{string, def_guild_name, "敌方联盟名"} ,{uint32, def_lev, "敌方等级"} ,{uint32, def_face_id, "敌方头像"} ,{uint32, face_update_time, "被请求的自定义角色头像"} ,{string, face_file, "被请求的自定义角色头像"} ,{uint32, replay_id, "录像ID"} ,{uint8, is_province, "是否同省频道"} ,{array, tuple, hurt_statistics, "伤害统计", [ {uint8, type, "1:进攻方 2:被攻击方"} ,{array, partner_hurt, partner_hurts, "伤害统计", [ {tuple, master_id, [ {uint32, rid, "盟主ID"} ,{string, srvid, "盟主服务器ID"} ]} ,{uint32, id, id, "英雄bid"} ,{uint32, bid, bid, "英雄bid"} ,{uint32, star, star, "星级"} ,{uint32, lev, lev, "等级"} ,{uint32, camp_type, camp_type, "英雄阵营"} ,{uint32, dps, dps, "英雄伤害"} ,{uint32, cure, cure, "英雄治疗量"} ,{array, tuple, ext_data, "额外参数", [ {uint32, key, "键(5:皮肤id)"} ,{uint32, val, "值"} ]} ,{uint32, be_hurt, be_hurt, "英雄承受伤害"} ]} ]} ] } ,#rpc{ code = 20034 ,log_title = "录像分享" ,req_desc = "" ,req = [ {uint32, replay_id, "录像ID"} ,{uint16, channel, "频道;1:世界;2:场景;4:帮派;8;队伍;16:传闻;32:顶部传闻;64:系统;128:顶部系统;256:系统帮派;512:系统组队"} ,{string, target_name, "敌方角色名"} ,{uint8, share_type, "分享类型"} ] ,reply_desc = "" ,reply = [ {uint8, result, "1 成功 0 成功"} ,{string, msg, "消息"} ] } ,#rpc{ code = 20036 ,log_title = "跨服查看录像的协议" ,req_desc = "" ,req = [ {uint32, replay_id, "录像Id"} ,{string, replay_srv_id, "录像的srv_id"} ] ,reply_desc = "" ,reply = [ {uint8, code, "是否成功"} ,{string, msg, "附加信息"} ] } %% ,#rpc{ %% code = 20037 %% ,log_title = "观战" %% ,req_desc = "" %% ,req = [ %% {uint32, target_id, "录像Id"} %% ,{string, target_srv_id, "录像的srv_id"} %% ] %% ,reply_desc = "" %% ,reply = [ %% {uint8, code, "是否成功"} %% ,{string, msg, "附加信息"} %% ] %% } %% ,#rpc{ %% code = 20038 %% ,log_title = "退出观战" %% ,req_desc = "" %% ,req = [ %% ] %% ,reply_desc = "" %% ,reply = [ %% {uint8, code, "是否成功"} %% ,{string, msg, "附加信息"} %% ] %% } %% ,#rpc{ %% code = 20039 %% ,log_title = "观战初始化" %% ,req_desc = "" %% ,req = [ %% ] %% ,reply_desc = "" %% ,reply = [ %% {uint16, combat_type, "什么类型的战斗"} %% ,{array, tuple, formation, "两边阵法信息", [ %% {uint8, group, "分组"} %% ,{uint8, formation_type, "阵法类型"} %% ,{uint8, formation_lev, "阵法等级"} %% ]} %% ,{array, fight_object_p, objects, "双方战斗单位", ?p_g_get(fight_object_p)} %% ,{uint8, is_auto, "是否自动 1:自动 0:手动"} %% ,{array, buff_play, buffs, "拥有的buff", ?p_g_get(buff_play)} %% ,{uint8, current_wave, "当前波数"} %% ,{uint16, total_wave, "总的波数"} %% ,{uint8, play_speed, "播放速度"} %% ,{uint32, combat_map, "战斗地图"} %% ,{array, single, extra_args, "战斗的额外参数,比如当前副本id,具体值跟战斗类型有关系", [ %% {uint32, param, "参数"} %% ]} %% ,{uint8, pause, "1 暂停 , 0 取消暂停"} %% ,{uint8, dragon_difficulty, "如果是巨龙副本,这个表示巨龙副本的难度"} %% ,{uint32, wave_time, "如果是巨龙副本,这个表示巨龙这一波已经用的时间 秒"} %% ,{uint32, action_count, "当前出手总次数"} %% ,{array, tuple, star_list, "剧情副本星星的状态", [ %% {uint8, star_id, "1 2 3"} %% ,{uint8, star_state, "星星的状态 1 满足的,亮 0 不亮"} %% ]} %% ,{uint8, a_object_num, "objects 中 group == 1 的单位个数"} %% ,{string, target_role_name, "如果对方是玩家,则是对方的角色名"} %% ,{string, actor_role_name, "发起方的玩家名字,用于看录像"} %% ,{uint32, begin_time, "战斗的开始时间"} %% ,{uint8, suppress, "压制图标显示(1:显示)"} %% ,{uint8, flag, "标识(1:断线重连 2:切入观战)"} %% ] %% } %% ,#rpc{ %% code = 20040 %% ,log_title = "退出观战的通知协议" %% ,reply_desc = "" %% ,reply = [ %% ] %% } ,#rpc{ code = 20060 ,log_title = "请求指定战斗类型" ,req_desc = "请求指定战斗类型" ,req = [ {uint16, combat_type, "什么类型的战斗"} ] ,reply = [ {uint16, combat_type, "什么类型的战斗"} ,{uint8, type, "0:不存在战斗 1:存在战斗"} ] } ,#rpc{ code = 20061 ,log_title = "进入指定战斗类型假战斗" ,req_desc = "进入指定战斗类型假战斗" ,reply = [ {uint16, combat_type, "什么类型的战斗"} ,{uint32, bid, "主单位基础ID"} ,{array, tuple, partner_list, "伙伴信息", [ {uint8, pos, "站位"} ,{uint16, speed, "速度"} ,{uint32, bid, "伙伴基础ID"} ,{uint8, lev, "伙伴等级"} ,{uint8, star, "伙伴星数"} ,{uint8, quality, "伙伴品质"} ,{uint32, hp, "血量"} ,{uint16, crit, "暴击率"} ,{array, tuple, skill_list, "主动攻击技能", [ {uint32, sid, "技能id"} ,{array, tuple, effect_list, "攻击类型效果列表", [ {uint32, eid, "效果id"} ,{uint8, num, "目标数量"} ,{uint32, min_hurt, "最小伤害值"} ,{uint32, max_hurt, "最大伤害值"} ]} ,{uint8, rand, "使用概率"} ]} ,{uint32, use_skin, "使用中的皮肤id"} ]} ,{array, tuple, wave_list, "怪物波数信息", [ {array, tuple, unit_list, "怪物信息", [ {uint8, pos, "站位"} ,{uint32, bid, "单位基础ID"} ,{uint16, speed, "速度"} ,{uint32, hp, "血量"} ,{uint16, crit, "暴击率"} ,{array, tuple, skill_list, "主动攻击技能", [ {uint32, sid, "技能id"} ,{array, tuple, effect_list, "攻击类型效果列表", [ {uint32, eid, "效果id"} ,{uint8, num, "目标数量"} ,{uint32, min_hurt, "最小伤害值"} ,{uint32, max_hurt, "最大伤害值"} ]} ,{uint8, rand, "使用概率"} ]} ]} ]} ,{uint32, dun_bid, "副本基础ID"} ,{uint8, b_formation_type, "目标阵法"} ] } ,#rpc{ code = 20062 ,log_title = "跳过战斗" ,reply_desc = "跳过战斗" ,req = [] ,reply = [ {uint8, code, "是否成功"} ,{string, msg, "附加信息"} ] } ,#rpc{ code = 20063 ,log_title = "当前所有战斗类型" ,req_desc = "当前所有战斗类型" ,req = [] ,reply = [ {array, single, type_list, "当前所有正在进行战斗类型信息", [ {uint16, combat_type, "什么类型的战斗"} ]} ] } ,#rpc{ code = 20064 ,log_title = "请求通过指定战斗类型(fake)" ,req_desc = "请求通过指定战斗类型(fake)" ,req = [ {uint16, combat_type, "什么类型的战斗=3"} ] ,reply = [ {uint16, combat_type, "什么类型的战斗=3"} ,{uint8, type, "0:失败 1:成功"} ] } ,#rpc{ code = 20065 ,log_title = "完整的战斗结束" ,req_desc = "完整的战斗结束" ,req = [] ,reply = [ {uint32, total_round, "总的回合数"} ] } ,#rpc{ code = 20066 ,log_title = "无尽模式,波次结束" ,req_desc = "无尽模式,波次结束" ,req = [{uint32, wave, "波次"}] ,reply = [] } ,#rpc{ code = 20070 ,log_title = "假战斗" ,reply_desc = "假战斗" ,req = [{uint32, id, "假战斗id"}] ,reply = [ {uint8, code, "是否成功"} ,{string, msg, "附加信息"} ,{uint32, id, "假战斗id"} ] } ,#rpc{ code = 20080 ,log_title = "退出战斗" ,req_desc = "退出战斗" ,req = [ ] ,reply_desc = "退出战斗" ,reply = [ {uint8, code, "是否成功"} ,{string, msg, "附加信息"} ] } ].