Files

791 lines
34 KiB
Erlang
Raw Permalink Normal View History

2026-05-23 22:10:14 +08:00
%%%-------------------------------------------------------------------
%%% 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, "附加信息"}
]
}
].