mirror of
https://github.com/raphaeIl/Novaria.git
synced 2025-12-12 14:34:38 +01:00
protocol handler system (modified SCHALE), dh attempt
This commit is contained in:
554
Novaria.Common/Core/NetMsgId.cs
Normal file
554
Novaria.Common/Core/NetMsgId.cs
Normal file
@@ -0,0 +1,554 @@
|
||||
namespace Novaria.Common.Core
|
||||
{
|
||||
public enum NetMsgId : short
|
||||
{
|
||||
char_up_change_notify = -10034, // 角色数据变更
|
||||
tower_growth_node_change_notify = -10033, // 星塔养成节点变化通知
|
||||
st_harmony_skill_notify = -10032, // 共鸣技能新增
|
||||
clear_all_story_notify = -10031, // 一键通关故事并获得所有证据
|
||||
story_complete_notify = -10030, // 通关指定的故事并获取证据
|
||||
infinity_tower_skip_floor_notify = -10029, // 无尽之塔跳层
|
||||
infinity_tower_all_infos_notify = -10028, // 全通所有无尽之塔
|
||||
clear_all_equipment_instance_notify = -10027, // 全通所有装备副本
|
||||
st_import_build_notify = -10026, // 返回星塔build导入的build信息
|
||||
st_export_build_notify = -10025, // 返回星塔build的json序列化字符串
|
||||
st_add_new_case_notify = -10024, // 返回操作添加的新case
|
||||
st_add_team_exp_notify = -10023, // 队伍等级经验最终值及当前未处理的所有case
|
||||
st_skip_floor_notify = -10022, // 星塔跳层
|
||||
st_clear_all_star_tower_notify = -10021, // 全通所有星塔(返回通关星塔ID列表)
|
||||
st_items_change_notify = -10020, // 星塔道具变化通知
|
||||
char_affinity_final_notify = -10019, // 添加角色好感度
|
||||
disc_reset_notify = -10017, // 星盘信息通知
|
||||
clear_all_traveler_due_notify = -10016, // 全通所有旅人对决
|
||||
clear_all_region_boss_level_notify = -10015, // 全通所有强敌讨伐
|
||||
clear_all_daily_instance_notify = -10013, // 一键通关所有日常副本
|
||||
add_vampire_season_score_notify = -10009, // 增加吸血鬼模式副本赛季积分 返回当前总分
|
||||
clear_all_vampire_survivor_notify = -10008, // 一键通关所有吸血鬼模式副本
|
||||
region_boss_level_final_notify = -10007, // 地区boss关卡最终数据通知
|
||||
chars_final_notify = -10006, // 角色列表最终数据通知
|
||||
world_class_number_notify = -10005, // 世界等级最终值通知
|
||||
char_change_notify = -10004, // 角色数据变化通知
|
||||
char_reset_notify = -10003, // 角色信息通知
|
||||
items_change_notify = -10001, // 道具变化通知
|
||||
sudo_failed_ack = -3, // 请求失败
|
||||
sudo_succeed_ack = -2, // 成功, 响应会走notify附加数据流程
|
||||
sudo_req = -1, // 客户端内置GM命令请求
|
||||
ike_req = 1, // internet key exchange
|
||||
ike_succeed_ack = 2, // 成功, 返回服务器方的秘钥, 之后每次请求都需要将Token写入header X-Token段, 服务器以此识别用户
|
||||
ike_failed_ack = 3, // 失败
|
||||
player_login_req = 4, // 登录
|
||||
player_login_succeed_ack = 5, // 成功, 将返回的新token,替换之前ike阶段的token, 放置于header X-Token段, 服务器以此识别用户
|
||||
player_login_failed_ack = 6, // 失败
|
||||
player_data_req = 1001, // 获取用户全量数据
|
||||
player_data_succeed_ack = 1002, // 成功, 如果是新账号,会返回player_new_notify协议
|
||||
player_data_failed_ack = 1003, // 请求失败
|
||||
player_reg_req = 1004, // 注册角色
|
||||
player_reg_failed_ack = 1005, // 注册失败 返回错误,反之,成功会调用player_data_succeed_ack
|
||||
player_name_edit_req = 1006, // 请求修改昵称
|
||||
player_name_edit_succeed_ack = 1007, // 请求修改昵称成功
|
||||
player_name_edit_failed_ack = 1008, // 请求修改昵称失败
|
||||
player_head_icon_set_req = 1009, // 请求设置头像
|
||||
player_head_icon_set_succeed_ack = 1010, // 设置头像成功
|
||||
player_head_icon_set_failed_ack = 1011, // 设置头像失败
|
||||
player_ping_req = 1012, // 心跳
|
||||
player_ping_succeed_ack = 1013, // 心跳回馈
|
||||
player_ping_failed_ack = 1014, // 不会返回失败
|
||||
player_learn_req = 1015, // 新手教学, 提交教学信息
|
||||
player_learn_succeed_ack = 1016, // 教学步骤记录成功
|
||||
player_learn_failed_ack = 1017, // 教学记录失败
|
||||
player_destroy_req = 1018, // 获取注销账号数据NotifyUrl
|
||||
player_destroy_succeed_ack = 1019, // 生成注销回调地址以提交到sdk server
|
||||
player_destroy_failed_ack = 1020, // 获取失败
|
||||
player_board_set_req = 1021, // 请求设置看板
|
||||
player_board_set_succeed_ack = 1022, // 设置看板成功
|
||||
player_board_set_failed_ack = 1023, // 设置看板失败
|
||||
player_world_class_reward_receive_req = 1024, // 请求领取世界等级奖励
|
||||
player_world_class_reward_receive_succeed_ack = 1025, // 请求领取世界等级奖励成功
|
||||
player_world_class_reward_receive_failed_ack = 1026, // 请求领取世界等级奖励失败
|
||||
player_signature_edit_req = 1027, // 请求修改签名
|
||||
player_signature_edit_succeed_ack = 1028, // 请求修改签名成功
|
||||
player_signature_edit_failed_ack = 1029, // 请求修改签名失败
|
||||
player_title_edit_req = 1030, // 请求修改头衔
|
||||
player_title_edit_succeed_ack = 1031, // 请求修改头衔成功
|
||||
player_title_edit_failed_ack = 1032, // 请求修改头衔失败
|
||||
player_chars_show_req = 1033, // 请求展示角色
|
||||
player_chars_show_succeed_ack = 1034, // 请求展示角色成功
|
||||
player_chars_show_failed_ack = 1035, // 请求展示角色失败
|
||||
player_skin_show_req = 1036, // 请求展示皮肤
|
||||
player_skin_show_succeed_ack = 1037, // 请求展示皮肤成功
|
||||
player_skin_show_failed_ack = 1038, // 请求展示皮肤失败
|
||||
player_gender_edit_req = 1039, // 请求切换性别
|
||||
player_gender_edit_succeed_ack = 1040, // 切换性别成功
|
||||
player_gender_edit_failed_ack = 1041, // 切换性别失败
|
||||
player_survey_req = 1042, // 申请发起调查问卷, 填写问卷ID
|
||||
player_survey_succeed_ack = 1043, // 返回第三方问卷ID和回调通知地址
|
||||
player_survey_failed_ack = 1044, // 申请失败,比如过期,已经完成过
|
||||
player_exit_req = 1045, // 退出游戏
|
||||
player_exit_succeed_ack = 1046, // 退出成功
|
||||
player_exit_failed_ack = 1047, // 退出失败
|
||||
player_honor_edit_req = 1048, // 荣誉称号最新的列表
|
||||
player_honor_edit_succeed_ack = 1049, // 修改成功
|
||||
player_honor_edit_failed_ack = 1050, // 修改失败
|
||||
item_use_req = 1101, // 道具使用
|
||||
item_use_succeed_ack = 1102, // 道具使用成功,返回ChangeInfo
|
||||
item_use_failed_ack = 1103, // 道具使用失败,返回错误信息
|
||||
gem_convert_req = 1104, // 传入钻石数量,兑换心相碎片,默认规则(免费钻不够使用付费钻)
|
||||
gem_convert_succeed_ack = 1105, // 兑换成功
|
||||
gem_convert_failed_ack = 1106, // 兑换失败
|
||||
item_product_req = 1107, // 材料合成
|
||||
item_product_succeed_ack = 1108, // 材料合成成功
|
||||
item_product_failed_ack = 1109, // 材料合成失败
|
||||
fragments_convert_req = 1110, // 所有角色溢出碎片兑换
|
||||
fragments_convert_succeed_ack = 1111, // 兑换成功
|
||||
fragments_convert_failed_ack = 1112, // 兑换失败
|
||||
daily_shop_reward_receive_req = 1113, // 领取商店每日免费赠礼
|
||||
daily_shop_reward_receive_succeed_ack = 1114, // 领取成功
|
||||
daily_shop_reward_receive_failed_ack = 1115, // 领取失败
|
||||
friend_list_get_req = 1201, // 请求获取好友/好友申请列表
|
||||
friend_list_get_succeed_ack = 1202, // 获取好友/好友申请列表成功
|
||||
friend_list_get_failed_ack = 1203, // 获取好友/好友申请列表失败
|
||||
friend_uid_search_req = 1204, // 请求通过UId搜索用户信息
|
||||
friend_uid_search_succeed_ack = 1205, // 通过UId搜索用户信息成功
|
||||
friend_uid_search_failed_ack = 1206, // 通过UId搜索用户信息失败
|
||||
friend_name_search_req = 1207, // 请求通过用户昵称搜索用户信息
|
||||
friend_name_search_succeed_ack = 1208, // 通过用户昵称搜索用户信息成功
|
||||
friend_name_search_failed_ack = 1209, // 通过用户昵称搜索用户信息失败
|
||||
friend_add_req = 1210, // 请求申请添加好友
|
||||
friend_add_succeed_ack = 1211, // 申请添加好友成功
|
||||
friend_add_failed_ack = 1212, // 申请添加好友失败
|
||||
friend_add_agree_req = 1213, // 同意添加好友请求
|
||||
friend_add_agree_succeed_ack = 1214, // 同意添加好友成功
|
||||
friend_add_agree_failed_ack = 1215, // 同意添加好友失败
|
||||
friend_all_agree_req = 1216, // 请求一键添加好友
|
||||
friend_all_agree_succeed_ack = 1217, // 一键添加好友成功
|
||||
friend_all_agree_failed_ack = 1218, // 一键添加好友失败
|
||||
friend_delete_req = 1219, // 请求删除好友
|
||||
friend_delete_succeed_ack = 1220, // 删除好友成功
|
||||
friend_delete_failed_ack = 1221, // 删除好友失败
|
||||
friend_invites_delete_req = 1222, // 请求删除好友申请
|
||||
friend_invites_delete_succeed_ack = 1223, // 删除好友申请成功
|
||||
friend_invites_delete_failed_ack = 1224, // 删除好友申请失败
|
||||
friend_star_set_req = 1225, // 请求设置星级好友
|
||||
friend_star_set_succeed_ack = 1226, // 请求设置星级好友成功
|
||||
friend_star_set_failed_ack = 1227, // 请求设置星级好友失败
|
||||
friend_receive_energy_req = 1228, // 请求领取好友赠送体力
|
||||
friend_receive_energy_succeed_ack = 1229, // 请求领取好友赠送体力成功
|
||||
friend_receive_energy_failed_ack = 1230, // 请求领取好友赠送体力失败
|
||||
friend_send_energy_req = 1231, // 请求赠送好友体力
|
||||
friend_send_energy_succeed_ack = 1232, // 请求赠送好友体力成功
|
||||
friend_send_energy_failed_ack = 1233, // 请求赠送好友体力失败
|
||||
friend_recommendation_get_req = 1234, // 请求好友推荐列表
|
||||
friend_recommendation_get_succeed_ack = 1235, // 请求好友推荐列表成功
|
||||
friend_recommendation_get_failed_ack = 1236, // 请求好友推荐列表失败
|
||||
tower_growth_detail_req = 1301, // 获取星塔养成详细信息
|
||||
tower_growth_detail_succeed_ack = 1302, // 获取成功
|
||||
tower_growth_detail_failed_ack = 1303, // 获取信息失败,返回错误
|
||||
tower_growth_node_unlock_req = 1304, // 传入节点ID, 解锁对应的养成节点
|
||||
tower_growth_node_unlock_succeed_ack = 1305, // 解锁成功
|
||||
tower_growth_node_unlock_failed_ack = 1306, // 解锁失败,返回错误信息
|
||||
player_formation_req = 2001, // 设置编队
|
||||
player_formation_succeed_ack = 2002, // 设置编队成功
|
||||
player_formation_failed_ack = 2003, // 设置编队失败
|
||||
char_equipment_change_req = 2104, // 装备穿上/替换/卸下
|
||||
char_equipment_change_succeed_ack = 2105, // 装备穿上/替换/卸下成功
|
||||
char_equipment_change_failed_ack = 2106, // 装备穿上/替换/卸下失败
|
||||
char_upgrade_req = 2301, // 角色升级
|
||||
char_upgrade_succeed_ack = 2302, // 角色升级成功
|
||||
char_upgrade_failed_ack = 2303, // 角色升级失败
|
||||
char_advance_req = 2304, // 角色进阶, 传入角色ID
|
||||
char_advance_succeed_ack = 2305, // 进阶成功
|
||||
char_advance_failed_ack = 2306, // 进阶失败
|
||||
char_skill_upgrade_req = 2307, // 角色技能升级
|
||||
char_skill_upgrade_succeed_ack = 2308, // 升级成功
|
||||
char_skill_upgrade_failed_ack = 2309, // 升级失败
|
||||
char_advance_reward_receive_req = 2313, // 请求领取角色进阶奖励
|
||||
char_advance_reward_receive_succeed_ack = 2314, // 请求领取角色进阶奖励成功
|
||||
char_advance_reward_receive_failed_ack = 2315, // 请求领取角色进阶奖励失败
|
||||
char_skin_set_req = 2316, // 设置角色皮肤
|
||||
char_skin_set_succeed_ack = 2317, // 设置成功
|
||||
char_skin_set_failed_ack = 2318, // 设置失败
|
||||
char_affinity_quest_reward_receive_req = 2322, // 请求领取角色好感度任务奖励
|
||||
char_affinity_quest_reward_receive_succeed_ack = 2323, // 请求领取角色好感度任务成功
|
||||
char_affinity_quest_reward_receive_failed_ack = 2324, // 请求领取角色好感度任务失败
|
||||
char_recruitment_req = 2325, // 传入角色ID,招募角色
|
||||
char_recruitment_succeed_ack = 2326, // 招募成功
|
||||
char_recruitment_failed_ack = 2327, // 招募失败
|
||||
char_affinity_gift_send_req = 2328, // 请求赠送好感度礼物
|
||||
char_affinity_gift_send_succeed_ack = 2329, // 请求赠送好感度礼物成功
|
||||
char_affinity_gift_send_failed_ack = 2330, // 请求赠送好感度礼物失败
|
||||
char_dating_landmark_select_req = 2401, // 选择地点邀约角色
|
||||
char_dating_landmark_select_succeed_ack = 2402, // 选择地点邀约角色成功
|
||||
char_dating_landmark_select_failed_ack = 2403, // 选择地点邀约角色失败
|
||||
char_dating_gift_send_req = 2404, // 请求邀约赠礼
|
||||
char_dating_gift_send_succeed_ack = 2405, // 请求邀约赠礼成功
|
||||
char_dating_gift_send_failed_ack = 2406, // 请求邀约赠礼失败
|
||||
char_dating_event_reward_receive_req = 2407, // 请求领取特殊事件奖励
|
||||
char_dating_event_reward_receive_succeed_ack = 2408, // 请求领取特殊事件奖励成功
|
||||
char_dating_event_reward_receive_failed_ack = 2409, // 请求领取特殊事件奖励失败
|
||||
disc_strengthen_req = 3119, // 星盘强化
|
||||
disc_strengthen_succeed_ack = 3120, // 星盘强化成功
|
||||
disc_strengthen_failed_ack = 3121, // 星盘强化失败
|
||||
disc_promote_req = 3122, // 星盘升阶
|
||||
disc_promote_succeed_ack = 3123, // 星盘升阶成功
|
||||
disc_promote_failed_ack = 3124, // 星盘升阶失败
|
||||
disc_limit_break_req = 3125, // 星盘突破
|
||||
disc_limit_break_succeed_ack = 3126, // 星盘突破成功
|
||||
disc_limit_break_failed_ack = 3127, // 星盘突破失败
|
||||
disc_read_reward_receive_req = 3128, // 请求领取星盘阅读奖励
|
||||
disc_read_reward_receive_succeed_ack = 3129, // 请求领取星盘阅读奖励成功
|
||||
disc_read_reward_receive_failed_ack = 3130, // 请求领取星盘阅读奖励失败
|
||||
equipment_upgrade_req = 3201, // 装备强化
|
||||
equipment_upgrade_succeed_ack = 3202, // 装备强化成功
|
||||
equipment_upgrade_failed_ack = 3203, // 装备强化失败
|
||||
equipment_dismantle_req = 3204, // 装备分解
|
||||
equipment_dismantle_succeed_ack = 3205, // 装备分解成功
|
||||
equipment_dismantle_failed_ack = 3206, // 装备分解失败
|
||||
equipment_lock_unlock_req = 3207, // 装备加解锁
|
||||
equipment_lock_unlock_succeed_ack = 3208, // 装备加解锁成功
|
||||
equipment_lock_unlock_failed_ack = 3209, // 装备加解锁失败
|
||||
agent_apply_req = 3301, // 请求派遣委托
|
||||
agent_apply_succeed_ack = 3302, // 请求派遣委托成功
|
||||
agent_apply_failed_ack = 3303, // 请求派遣委托失败
|
||||
agent_give_up_req = 3304, // 请求放弃派遣委托
|
||||
agent_give_up_succeed_ack = 3305, // 请求放弃派遣委托成功
|
||||
agent_give_up_failed_ack = 3306, // 请求放弃派遣委托失败
|
||||
agent_reward_receive_req = 3307, // 请求领取派遣委托奖励
|
||||
agent_reward_receive_succeed_ack = 3308, // 请求领取派遣委托奖励成功
|
||||
agent_reward_receive_failed_ack = 3309, // 请求领取派遣委托奖励失败
|
||||
quest_tour_guide_reward_receive_req = 4201, // 领取手册任务奖励 value表示任务ID,0表示一键领取
|
||||
quest_tour_guide_reward_receive_succeed_ack = 4202, // 获取成功
|
||||
quest_tour_guide_reward_receive_failed_ack = 4203, // 获取失败
|
||||
quest_daily_reward_receive_req = 4204, // 领取日常任务奖励 value表示任务ID,0表示一键领取
|
||||
quest_daily_reward_receive_succeed_ack = 4205, // 获取成功
|
||||
quest_daily_reward_receive_failed_ack = 4206, // 获取失败
|
||||
dictionary_reward_receive_req = 4207, // 领取词条奖励
|
||||
dictionary_reward_receive_succeed_ack = 4208, // 获取成功
|
||||
dictionary_reward_receive_failed_ack = 4209, // 获取失败
|
||||
quest_tower_reward_receive_req = 4210, // 领取星塔任务奖励 value表示任务ID,0表示一键领取
|
||||
quest_tower_reward_receive_succeed_ack = 4211, // 获取成功
|
||||
quest_tower_reward_receive_failed_ack = 4212, // 获取失败
|
||||
quest_daily_active_reward_receive_req = 4213, // 领取日常任务活跃奖励
|
||||
quest_daily_active_reward_receive_succeed_ack = 4214, // 领取日常任务活跃奖励成功
|
||||
quest_daily_active_reward_receive_failed_ack = 4215, // 领取日常任务活跃奖励失败
|
||||
quest_tour_guide_group_reward_receive_req = 4216, // 领取任务组奖励
|
||||
quest_tour_guide_group_reward_receive_succeed_ack = 4217, // 获取成功
|
||||
quest_tour_guide_group_reward_receive_failed_ack = 4218, // 获取失败
|
||||
achievement_reward_receive_req = 4401, // 领取成就奖励
|
||||
achievement_reward_receive_succeed_ack = 4402, // 获取成功
|
||||
achievement_reward_receive_failed_ack = 4403, // 获取失败
|
||||
achievement_info_req = 4404, // 获取成就数据
|
||||
achievement_info_succeed_ack = 4405, // 获取成功
|
||||
achievement_info_failed_ack = 4406, // 获取失败
|
||||
infinity_tower_info_req = 4501, // 申请无尽塔关卡数据
|
||||
infinity_tower_info_succeed_ack = 4502, // 申请无尽塔关卡数据成功
|
||||
infinity_tower_info_failed_ack = 4503, // 申请无尽塔关卡数据失败
|
||||
infinity_tower_apply_req = 4504, // 申请进入无尽塔关卡
|
||||
infinity_tower_apply_succeed_ack = 4505, // 申请进入无尽塔关卡成功
|
||||
infinity_tower_apply_failed_ack = 4506, // 申请进入无尽塔关卡失败
|
||||
infinity_tower_settle_req = 4507, // 申请结算无尽塔关卡 Value:1胜利,2失败,3退出(1,2重复挑战无需再发申请)
|
||||
infinity_tower_settle_succeed_ack = 4508, // 申请结算无尽塔成功 非0表示可以继续挑战关卡ID(失败当前关卡ID,成功下一个关卡ID), 无需再发申请
|
||||
infinity_tower_settle_failed_ack = 4509, // 申请结算无尽塔失败
|
||||
infinity_tower_daily_reward_receive_req = 4510, // 请求领取无尽塔每日奖励
|
||||
infinity_tower_daily_reward_receive_succeed_ack = 4511, // 请求领取无尽塔每日奖励成功
|
||||
infinity_tower_daily_reward_receive_failed_ack = 4512, // 请求领取无尽塔每日奖励失败
|
||||
infinity_tower_plot_reward_receive_req = 4513, // 请求领取无尽塔剧情奖励
|
||||
infinity_tower_plot_reward_receive_succeed_ack = 4514, // 请求领取无尽塔剧情奖励成功
|
||||
infinity_tower_plot_reward_receive_failed_ack = 4515, // 请求领取无尽塔剧情奖励失败
|
||||
star_tower_apply_req = 4601, // 申请探索星塔
|
||||
star_tower_apply_succeed_ack = 4602, // 申请成功返回
|
||||
star_tower_apply_failed_ack = 4603, // 申请失败
|
||||
star_tower_interact_req = 4607, // 星塔交互请求
|
||||
star_tower_interact_succeed_ack = 4608, // 交互请求成功
|
||||
star_tower_interact_failed_ack = 4609, // 申请失败
|
||||
star_tower_info_req = 4610, // 获取星塔信息, 用于重连
|
||||
star_tower_info_succeed_ack = 4611, // 获取星塔信息成功
|
||||
star_tower_info_failed_ack = 4612, // 获取星塔信息失败
|
||||
star_tower_give_up_req = 4613, // 放弃星塔
|
||||
star_tower_give_up_succeed_ack = 4614, // 放弃星塔成功
|
||||
star_tower_give_up_failed_ack = 4615, // 放弃星塔失败
|
||||
star_tower_build_whether_save_req = 4701, // 请求是否保存星塔build
|
||||
star_tower_build_whether_save_succeed_ack = 4702, // 请求是否保存星塔build返回
|
||||
star_tower_build_whether_save_failed_ack = 4703, // 请求是否保存星塔build失败
|
||||
star_tower_build_brief_list_get_req = 4704, // 请求星塔build简要信息列表
|
||||
star_tower_build_brief_list_get_succeed_ack = 4705, // 请求星塔build简要信息列表返回
|
||||
star_tower_build_brief_list_get_failed_ack = 4706, // 请求星塔build简要信息列表失败
|
||||
star_tower_build_detail_get_req = 4707, // 请求星塔build详细信息列表
|
||||
star_tower_build_detail_get_succeed_ack = 4708, // 请求星塔build详细信息列表返回
|
||||
star_tower_build_detail_get_failed_ack = 4709, // 请求遗迹build详细信息列表失败
|
||||
star_tower_build_delete_req = 4710, // 请求解散星塔build
|
||||
star_tower_build_delete_succeed_ack = 4711, // 请求解散星塔build返回
|
||||
star_tower_build_delete_failed_ack = 4712, // 请求解散星塔build失败
|
||||
star_tower_build_name_set_req = 4713, // 请求设置星塔build名
|
||||
star_tower_build_name_set_succeed_ack = 4714, // 请求设置星塔build名返回
|
||||
star_tower_build_name_set_failed_ack = 4715, // 请求设置星塔build名失败
|
||||
star_tower_build_lock_unlock_req = 4716, // 请求星塔build加解锁
|
||||
star_tower_build_lock_unlock_succeed_ack = 4717, // 请求星塔build加解锁返回
|
||||
star_tower_build_lock_unlock_failed_ack = 4718, // 请求星塔build加解锁失败
|
||||
star_tower_build_preference_set_req = 4719, // 请求设置星塔build偏好
|
||||
star_tower_build_preference_set_succeed_ack = 4720, // 请求设置星塔build偏好返回
|
||||
star_tower_build_preference_set_failed_ack = 4721, // 请求设置星塔build偏好失败
|
||||
star_tower_rank_req = 4801, // 请求星塔排行榜信息
|
||||
star_tower_rank_succeed_ack = 4802, // 请求星塔排行榜信息成功
|
||||
star_tower_rank_failed_ack = 4803, // 请求星塔排行信息失败
|
||||
star_tower_rank_apply_req = 4804, // 申请探索星塔排行榜
|
||||
star_tower_rank_apply_succeed_ack = 4805, // 申请成功返回
|
||||
star_tower_rank_apply_failed_ack = 4806, // 申请失败
|
||||
star_tower_book_potential_brief_list_get_req = 4901, // 请求星塔图鉴角色潜能简要信息
|
||||
star_tower_book_potential_brief_list_get_succeed_ack = 4902, // 请求星塔图鉴角色潜能简要信息成功
|
||||
star_tower_book_potential_brief_list_get_failed_ack = 4903, // 请求星塔图鉴角色潜能简要信息失败
|
||||
star_tower_book_char_potential_get_req = 4904, // 请求星塔图鉴角色潜能信息
|
||||
star_tower_book_char_potential_get_succeed_ack = 4905, // 请求星塔图鉴角色潜能信息成功
|
||||
star_tower_book_char_potential_get_failed_ack = 4906, // 请求星塔图鉴角色潜能信息失败
|
||||
star_tower_book_potential_reward_receive_req = 4907, // 请求领取星塔图鉴角色潜能奖励
|
||||
star_tower_book_potential_reward_receive_succeed_ack = 4908, // 请求领取星塔图鉴角色潜能奖励成功
|
||||
star_tower_book_potential_reward_receive_failed_ack = 4909, // 请求领取星塔图鉴角色潜能奖励失败
|
||||
star_tower_book_event_get_req = 4910, // 请求星塔图鉴事件信息
|
||||
star_tower_book_event_get_succeed_ack = 4911, // 请求星塔图鉴事件信息成功
|
||||
star_tower_book_event_get_failed_ack = 4912, // 请求星塔图鉴事件信息失败
|
||||
star_tower_book_event_reward_receive_req = 4913, // 请求领取星塔图鉴角色潜能奖励
|
||||
star_tower_book_event_reward_receive_succeed_ack = 4914, // 请求领取星塔图鉴角色潜能奖励成功
|
||||
star_tower_book_event_reward_receive_failed_ack = 4915, // 请求领取星塔图鉴角色潜能奖励失败
|
||||
resident_shop_get_req = 5010, // 请求常驻商店信息
|
||||
resident_shop_get_succeed_ack = 5011, // 请求常驻商店信息成功
|
||||
resident_shop_get_failed_ack = 5012, // 请求常驻商店信息失败
|
||||
resident_shop_purchase_req = 5013, // 请求常驻商店购买物品
|
||||
resident_shop_purchase_succeed_ack = 5014, // 请求常驻商店购买物品成功
|
||||
resident_shop_purchase_failed_ack = 5015, // 请求常驻商店购买物品失败
|
||||
mall_gem_list_req = 5101, // 获取钻石商城产品列表
|
||||
mall_gem_list_succeed_ack = 5102, // 获取成功的列表
|
||||
mall_gem_list_failed_ack = 5103, // 获取失败
|
||||
mall_gem_order_req = 5104, // 下单购买商品
|
||||
mall_gem_order_succeed_ack = 5105, // 下单成功
|
||||
mall_gem_order_failed_ack = 5106, // 下单失败
|
||||
mall_order_cancel_req = 5107, // 取消某个尚未支付的订单
|
||||
mall_order_cancel_succeed_ack = 5108, // 取消成功
|
||||
mall_order_cancel_failed_ack = 5109, // 取消失败
|
||||
mall_order_collect_req = 5110, // 领取某个支付成功的订单的奖励
|
||||
mall_order_collect_succeed_ack = 5111, // 返回成功,请根据具体状态处理
|
||||
mall_order_collect_failed_ack = 5112, // 领取失败
|
||||
mall_monthlyCard_list_req = 5113, // 获取月卡商城产品列表
|
||||
mall_monthlyCard_list_succeed_ack = 5114, // 获取成功的列表
|
||||
mall_monthlyCard_list_failed_ack = 5115, // 获取失败
|
||||
mall_monthlyCard_order_req = 5116, // 购买月卡商城商品
|
||||
mall_monthlyCard_order_succeed_ack = 5117, // 下单成功
|
||||
mall_monthlyCard_order_failed_ack = 5118, // 获取失败
|
||||
mall_package_list_req = 5119, // 获取礼包商城商品列表
|
||||
mall_package_list_succeed_ack = 5120, // 商品列表
|
||||
mall_package_list_failed_ack = 5121, // 获取失败
|
||||
mall_package_order_req = 5122, // 购买礼包商城产品
|
||||
mall_package_order_succeed_ack = 5123, // 购买成功结果
|
||||
mall_package_order_failed_ack = 5124, // 购买失败
|
||||
mall_shop_list_req = 5125, // 获取星尘兑换商城商品列表
|
||||
mall_shop_list_succeed_ack = 5126, // 商品列表
|
||||
mall_shop_list_failed_ack = 5127, // 获取失败
|
||||
mall_shop_order_req = 5128, // 购买星尘兑换商店产品
|
||||
mall_shop_order_succeed_ack = 5129, // 购买成功结果
|
||||
mall_shop_order_failed_ack = 5130, // 购买失败
|
||||
gacha_spin_req = 6001, // 根据卡池ID以及卡池模式在当前卡池抽卡
|
||||
gacha_spin_succeed_ack = 6002, // 成功,返回掉落道具以及ChangeInfo
|
||||
gacha_spin_failed_ack = 6003, // 错误,返回错误信息
|
||||
gacha_information_req = 6004, // 获取所有卡池数据
|
||||
gacha_information_succeed_ack = 6005, // 成功,返回所有的卡池数据
|
||||
gacha_information_failed_ack = 6006, // 错误,返回错误信息
|
||||
gacha_histories_req = 6007, // 根据存盘ID获取抽卡的历史记录
|
||||
gacha_histories_succeed_ack = 6008, // 成功,返回抽卡的历史数据
|
||||
gacha_histories_failed_ack = 6009, // 错误,返回错误
|
||||
tower_book_fate_card_detail_req = 6101, // 获取已经拥有的命运卡图鉴
|
||||
tower_book_fate_card_detail_succeed_ack = 6102, // 成功,返回已经拥有的命运卡和已经领取的任务
|
||||
tower_book_fate_card_detail_failed_ack = 6103, // 错误,返回错误信息
|
||||
tower_book_fate_card_reward_receive_req = 6104, // 领取命运卡任务奖励
|
||||
tower_book_fate_card_reward_receive_succeed_ack = 6105, // 成功,返回任务奖励
|
||||
tower_book_fate_card_reward_receive_failed_ack = 6106, // 错误,返回错误信息
|
||||
plot_reward_receive_req = 7013, // 传入剧情ID, 领取剧情奖励
|
||||
plot_reward_receive_succeed_ack = 7014, // 领取成功
|
||||
plot_reward_receive_failed_ack = 7015, // 领取失败
|
||||
daily_instance_apply_req = 7016, // 日常副本申请
|
||||
daily_instance_apply_succeed_ack = 7017, // 日常副本申请成功
|
||||
daily_instance_apply_failed_ack = 7018, // 错误,返回错误信息
|
||||
daily_instance_settle_req = 7019, // 日常副本结算请求
|
||||
daily_instance_settle_succeed_ack = 7020, // 日常副本结算成功
|
||||
daily_instance_settle_failed_ack = 7021, // 错误,返回错误信息
|
||||
daily_instance_raid_req = 7022, // 日常副本扫荡请求
|
||||
daily_instance_raid_succeed_ack = 7023, // 日常副本扫荡成功
|
||||
daily_instance_raid_failed_ack = 7024, // 错误,返回错误信息
|
||||
daily_equipment_apply_req = 7028, // 日常装备副本申请
|
||||
daily_equipment_apply_succeed_ack = 7029, // 日常装备副本申请成功
|
||||
daily_equipment_apply_failed_ack = 7030, // 错误,返回错误信息
|
||||
daily_equipment_settle_req = 7031, // 日常装备副本结算请求
|
||||
daily_equipment_settle_succeed_ack = 7032, // 日常装备副本结算成功
|
||||
daily_equipment_settle_failed_ack = 7033, // 错误,返回错误信息
|
||||
daily_equipment_sweep_req = 7034, // 日常装备副本扫荡请求
|
||||
daily_equipment_sweep_succeed_ack = 7035, // 日常装备副本扫荡成功
|
||||
daily_equipment_sweep_failed_ack = 7036, // 错误,返回错误信息
|
||||
region_boss_level_apply_req = 7101, // 请求进入地区boss关卡
|
||||
region_boss_level_apply_succeed_ack = 7102, // 请求进入地区boss关成功
|
||||
region_boss_level_apply_failed_ack = 7103, // 请求进入地区boss关卡失败
|
||||
region_boss_level_settle_req = 7104, // 请求结算地区boss关卡
|
||||
region_boss_level_settle_succeed_ack = 7105, // 请求结算地区boss关成功
|
||||
region_boss_level_settle_failed_ack = 7106, // 请求结算地区boss关卡失败
|
||||
region_boss_level_sweep_req = 7107, // 请求扫荡地区boss关卡
|
||||
region_boss_level_sweep_succeed_ack = 7108, // 请求扫荡地区boss关成功
|
||||
region_boss_level_sweep_failed_ack = 7109, // 请求结算地区boss关卡失败
|
||||
traveler_duel_level_apply_req = 7201, // 请求进入旅人对决关卡
|
||||
traveler_duel_level_apply_succeed_ack = 7202, // 请求进入旅人对决关卡成功
|
||||
traveler_duel_level_apply_failed_ack = 7203, // 请求进入旅人对决关卡失败
|
||||
traveler_duel_level_settle_req = 7204, // 请求结算旅人对决关卡
|
||||
traveler_duel_level_settle_succeed_ack = 7205, // 请求结算旅人对决关卡成功
|
||||
traveler_duel_level_settle_failed_ack = 7206, // 请求结算旅人对决关卡失败
|
||||
traveler_duel_info_req = 7207, // 请求旅人对决信息
|
||||
traveler_duel_info_succeed_ack = 7208, // 请求旅人对决信息成功
|
||||
traveler_duel_info_failed_ack = 7209, // 请求旅人对决信息失败
|
||||
traveler_duel_quest_reward_receive_req = 7210, // 领取旅人对决任务奖励
|
||||
traveler_duel_quest_reward_receive_succeed_ack = 7211, // 获取成功
|
||||
traveler_duel_quest_reward_receive_failed_ack = 7212, // 获取失败
|
||||
traveler_duel_rank_req = 7213, // 请求旅人对决排行榜信息
|
||||
traveler_duel_rank_succeed_ack = 7214, // 请求旅人对决排行榜信息成功
|
||||
traveler_duel_rank_failed_ack = 7215, // 请求旅人对决排行信息失败
|
||||
traveler_duel_rank_upload_req = 7216, // 请求旅人对决上传分数、附带本次战斗统计数据
|
||||
traveler_duel_rank_upload_succeed_ack = 7217, // 请求旅人对决上传分数成功
|
||||
traveler_duel_rank_upload_failed_ack = 7218, // 请求旅人对决上传分数失败
|
||||
story_apply_req = 7301, // 关卡申请
|
||||
story_apply_succeed_ack = 7302, // 申请成功,返回 Nil
|
||||
story_apply_failed_ack = 7303, // 错误,返回错误信息
|
||||
story_settle_req = 7304, // 关卡结算
|
||||
story_settle_succeed_ack = 7305, // 结算成功,发放通关奖励
|
||||
story_settle_failed_ack = 7306, // 错误,返回错误信息
|
||||
energy_buy_req = 8001, // 购买体力请求
|
||||
energy_buy_succeed_ack = 8002, // 购买成功,返回当日的购买次数,以及ChangeInfo
|
||||
energy_buy_failed_ack = 8003, // 购买失败,返回错误信息
|
||||
client_event_report_req = 8101, // 客户端事件上报
|
||||
client_event_report_succeed_ack = 8102, // 客户端事件上报成功
|
||||
client_event_report_failed_ack = 8103, // 客户端事件上报失败
|
||||
vampire_survivor_apply_req = 8201, // 灾变防线副本申请
|
||||
vampire_survivor_apply_succeed_ack = 8202, // 灾变防线副本申请成功
|
||||
vampire_survivor_apply_failed_ack = 8203, // 灾变防线副本申请失败
|
||||
vampire_survivor_area_change_req = 8204, // 灾变防线阶段转化
|
||||
vampire_survivor_area_change_succeed_ack = 8205, // 灾变防线副本申请成功
|
||||
vampire_survivor_area_change_failed_ack = 8206, // 灾变防线副本申请失败
|
||||
vampire_survivor_settle_req = 8207, // 灾变防线副本结算申请 [失败也发这个]
|
||||
vampire_survivor_settle_succeed_ack = 8208, // 灾变防线副本结算申请成功
|
||||
vampire_survivor_settle_failed_ack = 8209, // 灾变防线副本结算申请失败
|
||||
vampire_survivor_reward_select_req = 8210, // 灾变防线副本升级申请
|
||||
vampire_survivor_reward_select_succeed_ack = 8211, // 灾变防线副本结算申请成功
|
||||
vampire_survivor_reward_select_failed_ack = 8212, // 灾变防线副本结算申请失败
|
||||
vampire_survivor_reward_chest_req = 8213, // 灾变防线开宝箱申请
|
||||
vampire_survivor_reward_chest_succeed_ack = 8214, // 灾变防线开宝箱申请成功
|
||||
vampire_survivor_reward_chest_failed_ack = 8215, // 灾变防线开宝箱申请失败
|
||||
vampire_survivor_quest_reward_receive_req = 8216, // 灾变防线领取任务奖励申请
|
||||
vampire_survivor_quest_reward_receive_succeed_ack = 8217, // 灾变防线领取任务奖励成功
|
||||
vampire_survivor_quest_reward_receive_failed_ack = 8218, // 灾变防线领取任务奖励失败
|
||||
vampire_survivor_rank_req = 8219, // 请求吸血鬼模式排行榜信息
|
||||
vampire_survivor_rank_succeed_ack = 8220, // 请求吸血鬼模式排行榜信息成功
|
||||
vampire_survivor_rank_failed_ack = 8221, // 请求吸血鬼模式排行榜信息失败
|
||||
vampire_talent_detail_req = 8301, // 获取节点信息
|
||||
vampire_talent_detail_succeed_ack = 8302, // 获取节点信息成功
|
||||
vampire_talent_detail_failed_ack = 8303, // 获取失败,返回错误信息
|
||||
vampire_talent_reset_req = 8304, // 重置所有的天赋节点
|
||||
vampire_talent_reset_succeed_ack = 8305, // 重置成功, 返回最终天赋点数
|
||||
vampire_talent_reset_failed_ack = 8306, // 重置失败,返回错误信息
|
||||
vampire_talent_unlock_req = 8307, // 传入节点ID, 解锁对应的养成节点
|
||||
vampire_talent_unlock_succeed_ack = 8308, // 解锁成功
|
||||
vampire_talent_unlock_failed_ack = 8309, // 解锁失败,返回错误信息
|
||||
mail_list_req = 9001, // 获取邮件列表
|
||||
mail_list_succeed_ack = 9002, // 邮件列表
|
||||
mail_list_failed_ack = 9003, // 获取失败
|
||||
mail_read_req = 9004, // 标记邮件已读
|
||||
mail_read_succeed_ack = 9005, // 返回已设置为已读的邮件ID
|
||||
mail_read_failed_ack = 9006, // 设置失败
|
||||
mail_recv_req = 9007, // 领取奖励 一键领取发送0,单独领取发送对应邮件ID上来
|
||||
mail_recv_succeed_ack = 9008, // 领取成功
|
||||
mail_recv_failed_ack = 9009, // 领取失败
|
||||
mail_remove_req = 9010, // 删除邮件 一键删除所有已读已领发送0,单独删除发送对应邮件ID上来
|
||||
mail_remove_succeed_ack = 9011, // 删除成功
|
||||
mail_remove_failed_ack = 9012, // 删除失败
|
||||
activity_detail_req = 9101, // 获取所有的活动数据
|
||||
activity_detail_succeed_ack = 9102, // 获取成功
|
||||
activity_detail_failed_ack = 9103, // 获取失败
|
||||
activity_periodic_reward_receive_req = 9104, // 领取活动奖励
|
||||
activity_periodic_reward_receive_succeed_ack = 9105, // 领取成功
|
||||
activity_periodic_reward_receive_failed_ack = 9106, // 领取失败
|
||||
activity_periodic_final_reward_receive_req = 9107, // 仪式感,领取当前活动的最终奖励
|
||||
activity_periodic_final_reward_receive_succeed_ack = 9108, // 领取成功
|
||||
activity_periodic_final_reward_receive_failed_ack = 9109, // 领取失败
|
||||
activity_login_reward_receive_req = 9110, // 领取活动奖励
|
||||
activity_login_reward_receive_succeed_ack = 9111, // 领取成功
|
||||
activity_login_reward_receive_failed_ack = 9112, // 领取失败
|
||||
phone_contacts_info_req = 9201, // 获取手机所有联系人的数据
|
||||
phone_contacts_info_succeed_ack = 9202, // 获取联系人数据成功
|
||||
phone_contacts_info_failed_ack = 9203, // 获取联系人数据
|
||||
phone_contacts_report_req = 9204, // 联系人聊天上报
|
||||
phone_contacts_report_succeed_ack = 9205, // 上报成功
|
||||
phone_contacts_report_failed_ack = 9206, // 上报失败
|
||||
talent_unlock_req = 9301, // 传入天赋ID, 解锁相关天赋
|
||||
talent_unlock_succeed_ack = 9302, // 解锁成功
|
||||
talent_unlock_failed_ack = 9303, // 解锁失败,返回错误信息
|
||||
talent_reset_req = 9304, // 传入角色ID, 重置角色所有天赋
|
||||
talent_reset_succeed_ack = 9305, // 重置成功
|
||||
talent_reset_failed_ack = 9306, // 重置失败,返回错误信息
|
||||
talent_node_reset_req = 9307, // 天赋普通节点ID
|
||||
talent_node_reset_succeed_ack = 9308, // 重置成功
|
||||
talent_node_reset_failed_ack = 9309, // 重置失败,返回错误信息
|
||||
battle_pass_info_req = 9801, // 获取当前战令信息
|
||||
battle_pass_info_succeed_ack = 9802, // 战令信息
|
||||
battle_pass_info_failed_ack = 9803, // 获取失败
|
||||
battle_pass_reward_receive_req = 9804, // 领取战令奖励, 传入战令等级和版本, 全部领等级取传0
|
||||
battle_pass_reward_receive_succeed_ack = 9805, // 领取战令奖励成功
|
||||
battle_pass_reward_receive_failed_ack = 9806, // 领取战令奖励失败
|
||||
battle_pass_level_buy_req = 9807, // 战令等级购买, 传入需要购买的级数和版本
|
||||
battle_pass_level_buy_succeed_ack = 9808, // 购买成功
|
||||
battle_pass_level_buy_failed_ack = 9809, // 购买成功
|
||||
battle_pass_order_req = 9810, // 战令进阶下单
|
||||
battle_pass_order_succeed_ack = 9811, // 战令进阶下单成功
|
||||
battle_pass_order_failed_ack = 9812, // 领取失败
|
||||
battle_pass_order_collect_req = 9813, // 战令进阶订单收取
|
||||
battle_pass_order_collect_succeed_ack = 9814, // 返回成功,请根据具体状态处理
|
||||
battle_pass_order_collect_failed_ack = 9815, // 战令进阶失败
|
||||
battle_pass_quest_reward_receive_req = 9816, // 战令任务一键领取 value表示任务ID,0表示一键领取
|
||||
battle_pass_quest_reward_receive_succeed_ack = 9817, // 获取成功
|
||||
battle_pass_quest_reward_receive_failed_ack = 9818, // 获取失败
|
||||
redeem_code_req = 9901, // 兑换码兑换
|
||||
redeem_code_succeed_ack = 9902, // 兑换成功,返回兑换后德道具以及ChangeInfo
|
||||
redeem_code_failed_ack = 9903, // 兑换失败,返回错误信息
|
||||
system_failed_ack = 10000, // 系统级失败, 主要用于http模式下,强制失败返回
|
||||
player_new_notify = 10001, // 新用户
|
||||
mail_state_notify = 10002, // 邮件状态变更
|
||||
player_relogin_notify = 10003, // 在其他地方登录
|
||||
token_expire_notify = 10004, // token过期
|
||||
player_ban_notify = 10005, // 用户被ban
|
||||
quest_change_notify = 10006, // 任务进度变更
|
||||
star_tower_rank_ticket_change_notify = 10007, // 星塔排行榜门票
|
||||
agent_new_notify = 10008, // 每周刷新新委托ID列表
|
||||
world_class_change_notify = 10009, // 世界等级变化
|
||||
friend_energy_state_notify = 10010, // 好友赠送体力状态变更
|
||||
signin_reward_change_notify = 10011, // 登陆奖励更新
|
||||
friend_state_notify = 10012, // 好友状态变更
|
||||
order_paid_notify = 10013, // 订单已完成支付通知,可以发起领取
|
||||
order_revoke_notify = 10014, // 订单道具被撤回,主要用于恶意退款
|
||||
star_tower_book_potential_notify = 10015, // 星塔潜能图鉴状态变更
|
||||
star_tower_book_event_notify = 10016, // 星塔潜能图鉴状态变更
|
||||
battle_pass_state_notify = 10017, // 战令状态变更
|
||||
world_class_reward_state_notify = 10018, // 世界等级奖励状态变更
|
||||
char_advance_reward_state_notify = 10019, // 角色进阶奖励状态变更
|
||||
achievement_change_notify = 10020, // 成就进度变更
|
||||
achievement_state_notify = 10021, // 成就待领取红点提示
|
||||
character_skin_gain_notify = 10022, // 角色获得新皮肤,如果是重复获取,将发送转换数据
|
||||
character_skin_change_notify = 10023, // 角色装备的皮肤发生改变
|
||||
handbook_change_notify = 10024, // 图鉴数据发生变化
|
||||
monthly_card_rewards_notify = 10025, // 月卡奖励通知
|
||||
quest_state_notify = 10026, // 任务红点奖励notify
|
||||
mall_package_state_notify = 10027, // 礼包商城免费商品红点notify
|
||||
dictionary_change_notify = 10028, // 字典数据变更
|
||||
activity_change_notify = 10029, // 活动数据变化
|
||||
activity_quest_change_notify = 10030, // 活动任务数据变化
|
||||
char_affinity_reward_state_notify = 10031, // 角色好感度奖励最终值
|
||||
mail_overflow_notify = 10032, // 道具超发进邮件
|
||||
infinity_tower_rewards_state_notify = 10033, // 无尽塔是否有奖励可领最终值
|
||||
phone_chat_change_notify = 10034, // 手机新聊天变化
|
||||
character_fragments_overflow_change_notify = 10035, // 角色碎片溢出
|
||||
activity_login_rewards_notify = 10036, // 七日登录活动通知
|
||||
tower_book_fate_card_collect_notify = 10037, // 新获得的命运卡数据
|
||||
tower_book_fate_card_reward_notify = 10038, // 命运卡图鉴奖励变化
|
||||
region_boss_level_challenge_ticket_notify = 10039, // 区域boss挑战模式门票变更通知最终值
|
||||
honor_change_notify = 10040, // 荣誉称号变更通知(最终值, 多个Notify以最后一个为准)
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using Google.Protobuf;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
@@ -15,6 +16,15 @@ namespace Novaria.Common.Core
|
||||
public Action<Packet, object> callback;
|
||||
|
||||
public short receiveMsgId;
|
||||
|
||||
public static Packet Create(NetMsgId msgId, IMessage protoPacket)
|
||||
{
|
||||
return new Packet()
|
||||
{
|
||||
msgId = (short)msgId,
|
||||
msgBody = protoPacket.ToByteArray(),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
67
Novaria.Common/Utils/DiffieHellman.cs
Normal file
67
Novaria.Common/Utils/DiffieHellman.cs
Normal file
@@ -0,0 +1,67 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Novaria.Common.Utils
|
||||
{
|
||||
public class DiffieHellman
|
||||
{
|
||||
private static DiffieHellman instance;
|
||||
public static DiffieHellman Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (instance == null)
|
||||
instance = new DiffieHellman();
|
||||
|
||||
return instance;
|
||||
}
|
||||
set => instance = value;
|
||||
}
|
||||
|
||||
private const int g = 2;
|
||||
private readonly byte[] p = new byte[] { 255,255,255,255,255,255,255,255,201,15,218,162,33,104,194,52,196,198,98,139,128,220,28,209,41,2,78,8,138,103,204,116,2,11,190,166,59,19,155,34,81,74,8,121,142,52,4,221,239,149,25,179,205,58,67,27,48,43,10,109,242,95,20,55,79,225,53,109,109,81,194,69,228,133,181,118,98,94,126,198,244,76,66,233,166,58,54,32,255,255,255,255,255,255,255,255 };
|
||||
|
||||
private byte[] privateKey; // Private key (Spriv or Cpriv)
|
||||
private byte[] publicKey; // Public key (Spub or Cpub)
|
||||
|
||||
public byte[] PublicKey => publicKey;
|
||||
|
||||
public DiffieHellman()
|
||||
{
|
||||
GenerateKeys();
|
||||
}
|
||||
|
||||
private void GenerateKeys()
|
||||
{
|
||||
// Generate a random private key
|
||||
using (var rng = RandomNumberGenerator.Create())
|
||||
{
|
||||
privateKey = new byte[128]; // 1024-bit private key
|
||||
rng.GetBytes(privateKey);
|
||||
}
|
||||
|
||||
// Calculate the public key: g^privateKey mod p
|
||||
BigInteger privKeyInt = new BigInteger(privateKey, isUnsigned: true, isBigEndian: true);
|
||||
BigInteger pInt = new BigInteger(p, isUnsigned: true, isBigEndian: true);
|
||||
BigInteger pubKeyInt = BigInteger.ModPow(g, privKeyInt, pInt);
|
||||
|
||||
publicKey = pubKeyInt.ToByteArray(isUnsigned: true, isBigEndian: true);
|
||||
}
|
||||
|
||||
public byte[] CalculateSharedSecret(byte[] otherPublicKey)
|
||||
{
|
||||
BigInteger otherPubKeyInt = new BigInteger(otherPublicKey, isUnsigned: true, isBigEndian: true);
|
||||
BigInteger privKeyInt = new BigInteger(privateKey, isUnsigned: true, isBigEndian: true);
|
||||
BigInteger pInt = new BigInteger(p, isUnsigned: true, isBigEndian: true);
|
||||
|
||||
// Calculate the shared secret: (otherPublicKey^privateKey) mod p
|
||||
BigInteger sharedSecretInt = BigInteger.ModPow(otherPubKeyInt, privKeyInt, pInt);
|
||||
return sharedSecretInt.ToByteArray(isUnsigned: true, isBigEndian: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
554
Novaria.GameServer/Protocol/NetMsgId.cs
Normal file
554
Novaria.GameServer/Protocol/NetMsgId.cs
Normal file
@@ -0,0 +1,554 @@
|
||||
namespace Novaria.GameServer.Protocol
|
||||
{
|
||||
public enum NetMsgId
|
||||
{
|
||||
char_up_change_notify = -10034, // 角色数据变更
|
||||
tower_growth_node_change_notify = -10033, // 星塔养成节点变化通知
|
||||
st_harmony_skill_notify = -10032, // 共鸣技能新增
|
||||
clear_all_story_notify = -10031, // 一键通关故事并获得所有证据
|
||||
story_complete_notify = -10030, // 通关指定的故事并获取证据
|
||||
infinity_tower_skip_floor_notify = -10029, // 无尽之塔跳层
|
||||
infinity_tower_all_infos_notify = -10028, // 全通所有无尽之塔
|
||||
clear_all_equipment_instance_notify = -10027, // 全通所有装备副本
|
||||
st_import_build_notify = -10026, // 返回星塔build导入的build信息
|
||||
st_export_build_notify = -10025, // 返回星塔build的json序列化字符串
|
||||
st_add_new_case_notify = -10024, // 返回操作添加的新case
|
||||
st_add_team_exp_notify = -10023, // 队伍等级经验最终值及当前未处理的所有case
|
||||
st_skip_floor_notify = -10022, // 星塔跳层
|
||||
st_clear_all_star_tower_notify = -10021, // 全通所有星塔(返回通关星塔ID列表)
|
||||
st_items_change_notify = -10020, // 星塔道具变化通知
|
||||
char_affinity_final_notify = -10019, // 添加角色好感度
|
||||
disc_reset_notify = -10017, // 星盘信息通知
|
||||
clear_all_traveler_due_notify = -10016, // 全通所有旅人对决
|
||||
clear_all_region_boss_level_notify = -10015, // 全通所有强敌讨伐
|
||||
clear_all_daily_instance_notify = -10013, // 一键通关所有日常副本
|
||||
add_vampire_season_score_notify = -10009, // 增加吸血鬼模式副本赛季积分 返回当前总分
|
||||
clear_all_vampire_survivor_notify = -10008, // 一键通关所有吸血鬼模式副本
|
||||
region_boss_level_final_notify = -10007, // 地区boss关卡最终数据通知
|
||||
chars_final_notify = -10006, // 角色列表最终数据通知
|
||||
world_class_number_notify = -10005, // 世界等级最终值通知
|
||||
char_change_notify = -10004, // 角色数据变化通知
|
||||
char_reset_notify = -10003, // 角色信息通知
|
||||
items_change_notify = -10001, // 道具变化通知
|
||||
sudo_failed_ack = -3, // 请求失败
|
||||
sudo_succeed_ack = -2, // 成功, 响应会走notify附加数据流程
|
||||
sudo_req = -1, // 客户端内置GM命令请求
|
||||
ike_req = 1, // internet key exchange
|
||||
ike_succeed_ack = 2, // 成功, 返回服务器方的秘钥, 之后每次请求都需要将Token写入header X-Token段, 服务器以此识别用户
|
||||
ike_failed_ack = 3, // 失败
|
||||
player_login_req = 4, // 登录
|
||||
player_login_succeed_ack = 5, // 成功, 将返回的新token,替换之前ike阶段的token, 放置于header X-Token段, 服务器以此识别用户
|
||||
player_login_failed_ack = 6, // 失败
|
||||
player_data_req = 1001, // 获取用户全量数据
|
||||
player_data_succeed_ack = 1002, // 成功, 如果是新账号,会返回player_new_notify协议
|
||||
player_data_failed_ack = 1003, // 请求失败
|
||||
player_reg_req = 1004, // 注册角色
|
||||
player_reg_failed_ack = 1005, // 注册失败 返回错误,反之,成功会调用player_data_succeed_ack
|
||||
player_name_edit_req = 1006, // 请求修改昵称
|
||||
player_name_edit_succeed_ack = 1007, // 请求修改昵称成功
|
||||
player_name_edit_failed_ack = 1008, // 请求修改昵称失败
|
||||
player_head_icon_set_req = 1009, // 请求设置头像
|
||||
player_head_icon_set_succeed_ack = 1010, // 设置头像成功
|
||||
player_head_icon_set_failed_ack = 1011, // 设置头像失败
|
||||
player_ping_req = 1012, // 心跳
|
||||
player_ping_succeed_ack = 1013, // 心跳回馈
|
||||
player_ping_failed_ack = 1014, // 不会返回失败
|
||||
player_learn_req = 1015, // 新手教学, 提交教学信息
|
||||
player_learn_succeed_ack = 1016, // 教学步骤记录成功
|
||||
player_learn_failed_ack = 1017, // 教学记录失败
|
||||
player_destroy_req = 1018, // 获取注销账号数据NotifyUrl
|
||||
player_destroy_succeed_ack = 1019, // 生成注销回调地址以提交到sdk server
|
||||
player_destroy_failed_ack = 1020, // 获取失败
|
||||
player_board_set_req = 1021, // 请求设置看板
|
||||
player_board_set_succeed_ack = 1022, // 设置看板成功
|
||||
player_board_set_failed_ack = 1023, // 设置看板失败
|
||||
player_world_class_reward_receive_req = 1024, // 请求领取世界等级奖励
|
||||
player_world_class_reward_receive_succeed_ack = 1025, // 请求领取世界等级奖励成功
|
||||
player_world_class_reward_receive_failed_ack = 1026, // 请求领取世界等级奖励失败
|
||||
player_signature_edit_req = 1027, // 请求修改签名
|
||||
player_signature_edit_succeed_ack = 1028, // 请求修改签名成功
|
||||
player_signature_edit_failed_ack = 1029, // 请求修改签名失败
|
||||
player_title_edit_req = 1030, // 请求修改头衔
|
||||
player_title_edit_succeed_ack = 1031, // 请求修改头衔成功
|
||||
player_title_edit_failed_ack = 1032, // 请求修改头衔失败
|
||||
player_chars_show_req = 1033, // 请求展示角色
|
||||
player_chars_show_succeed_ack = 1034, // 请求展示角色成功
|
||||
player_chars_show_failed_ack = 1035, // 请求展示角色失败
|
||||
player_skin_show_req = 1036, // 请求展示皮肤
|
||||
player_skin_show_succeed_ack = 1037, // 请求展示皮肤成功
|
||||
player_skin_show_failed_ack = 1038, // 请求展示皮肤失败
|
||||
player_gender_edit_req = 1039, // 请求切换性别
|
||||
player_gender_edit_succeed_ack = 1040, // 切换性别成功
|
||||
player_gender_edit_failed_ack = 1041, // 切换性别失败
|
||||
player_survey_req = 1042, // 申请发起调查问卷, 填写问卷ID
|
||||
player_survey_succeed_ack = 1043, // 返回第三方问卷ID和回调通知地址
|
||||
player_survey_failed_ack = 1044, // 申请失败,比如过期,已经完成过
|
||||
player_exit_req = 1045, // 退出游戏
|
||||
player_exit_succeed_ack = 1046, // 退出成功
|
||||
player_exit_failed_ack = 1047, // 退出失败
|
||||
player_honor_edit_req = 1048, // 荣誉称号最新的列表
|
||||
player_honor_edit_succeed_ack = 1049, // 修改成功
|
||||
player_honor_edit_failed_ack = 1050, // 修改失败
|
||||
item_use_req = 1101, // 道具使用
|
||||
item_use_succeed_ack = 1102, // 道具使用成功,返回ChangeInfo
|
||||
item_use_failed_ack = 1103, // 道具使用失败,返回错误信息
|
||||
gem_convert_req = 1104, // 传入钻石数量,兑换心相碎片,默认规则(免费钻不够使用付费钻)
|
||||
gem_convert_succeed_ack = 1105, // 兑换成功
|
||||
gem_convert_failed_ack = 1106, // 兑换失败
|
||||
item_product_req = 1107, // 材料合成
|
||||
item_product_succeed_ack = 1108, // 材料合成成功
|
||||
item_product_failed_ack = 1109, // 材料合成失败
|
||||
fragments_convert_req = 1110, // 所有角色溢出碎片兑换
|
||||
fragments_convert_succeed_ack = 1111, // 兑换成功
|
||||
fragments_convert_failed_ack = 1112, // 兑换失败
|
||||
daily_shop_reward_receive_req = 1113, // 领取商店每日免费赠礼
|
||||
daily_shop_reward_receive_succeed_ack = 1114, // 领取成功
|
||||
daily_shop_reward_receive_failed_ack = 1115, // 领取失败
|
||||
friend_list_get_req = 1201, // 请求获取好友/好友申请列表
|
||||
friend_list_get_succeed_ack = 1202, // 获取好友/好友申请列表成功
|
||||
friend_list_get_failed_ack = 1203, // 获取好友/好友申请列表失败
|
||||
friend_uid_search_req = 1204, // 请求通过UId搜索用户信息
|
||||
friend_uid_search_succeed_ack = 1205, // 通过UId搜索用户信息成功
|
||||
friend_uid_search_failed_ack = 1206, // 通过UId搜索用户信息失败
|
||||
friend_name_search_req = 1207, // 请求通过用户昵称搜索用户信息
|
||||
friend_name_search_succeed_ack = 1208, // 通过用户昵称搜索用户信息成功
|
||||
friend_name_search_failed_ack = 1209, // 通过用户昵称搜索用户信息失败
|
||||
friend_add_req = 1210, // 请求申请添加好友
|
||||
friend_add_succeed_ack = 1211, // 申请添加好友成功
|
||||
friend_add_failed_ack = 1212, // 申请添加好友失败
|
||||
friend_add_agree_req = 1213, // 同意添加好友请求
|
||||
friend_add_agree_succeed_ack = 1214, // 同意添加好友成功
|
||||
friend_add_agree_failed_ack = 1215, // 同意添加好友失败
|
||||
friend_all_agree_req = 1216, // 请求一键添加好友
|
||||
friend_all_agree_succeed_ack = 1217, // 一键添加好友成功
|
||||
friend_all_agree_failed_ack = 1218, // 一键添加好友失败
|
||||
friend_delete_req = 1219, // 请求删除好友
|
||||
friend_delete_succeed_ack = 1220, // 删除好友成功
|
||||
friend_delete_failed_ack = 1221, // 删除好友失败
|
||||
friend_invites_delete_req = 1222, // 请求删除好友申请
|
||||
friend_invites_delete_succeed_ack = 1223, // 删除好友申请成功
|
||||
friend_invites_delete_failed_ack = 1224, // 删除好友申请失败
|
||||
friend_star_set_req = 1225, // 请求设置星级好友
|
||||
friend_star_set_succeed_ack = 1226, // 请求设置星级好友成功
|
||||
friend_star_set_failed_ack = 1227, // 请求设置星级好友失败
|
||||
friend_receive_energy_req = 1228, // 请求领取好友赠送体力
|
||||
friend_receive_energy_succeed_ack = 1229, // 请求领取好友赠送体力成功
|
||||
friend_receive_energy_failed_ack = 1230, // 请求领取好友赠送体力失败
|
||||
friend_send_energy_req = 1231, // 请求赠送好友体力
|
||||
friend_send_energy_succeed_ack = 1232, // 请求赠送好友体力成功
|
||||
friend_send_energy_failed_ack = 1233, // 请求赠送好友体力失败
|
||||
friend_recommendation_get_req = 1234, // 请求好友推荐列表
|
||||
friend_recommendation_get_succeed_ack = 1235, // 请求好友推荐列表成功
|
||||
friend_recommendation_get_failed_ack = 1236, // 请求好友推荐列表失败
|
||||
tower_growth_detail_req = 1301, // 获取星塔养成详细信息
|
||||
tower_growth_detail_succeed_ack = 1302, // 获取成功
|
||||
tower_growth_detail_failed_ack = 1303, // 获取信息失败,返回错误
|
||||
tower_growth_node_unlock_req = 1304, // 传入节点ID, 解锁对应的养成节点
|
||||
tower_growth_node_unlock_succeed_ack = 1305, // 解锁成功
|
||||
tower_growth_node_unlock_failed_ack = 1306, // 解锁失败,返回错误信息
|
||||
player_formation_req = 2001, // 设置编队
|
||||
player_formation_succeed_ack = 2002, // 设置编队成功
|
||||
player_formation_failed_ack = 2003, // 设置编队失败
|
||||
char_equipment_change_req = 2104, // 装备穿上/替换/卸下
|
||||
char_equipment_change_succeed_ack = 2105, // 装备穿上/替换/卸下成功
|
||||
char_equipment_change_failed_ack = 2106, // 装备穿上/替换/卸下失败
|
||||
char_upgrade_req = 2301, // 角色升级
|
||||
char_upgrade_succeed_ack = 2302, // 角色升级成功
|
||||
char_upgrade_failed_ack = 2303, // 角色升级失败
|
||||
char_advance_req = 2304, // 角色进阶, 传入角色ID
|
||||
char_advance_succeed_ack = 2305, // 进阶成功
|
||||
char_advance_failed_ack = 2306, // 进阶失败
|
||||
char_skill_upgrade_req = 2307, // 角色技能升级
|
||||
char_skill_upgrade_succeed_ack = 2308, // 升级成功
|
||||
char_skill_upgrade_failed_ack = 2309, // 升级失败
|
||||
char_advance_reward_receive_req = 2313, // 请求领取角色进阶奖励
|
||||
char_advance_reward_receive_succeed_ack = 2314, // 请求领取角色进阶奖励成功
|
||||
char_advance_reward_receive_failed_ack = 2315, // 请求领取角色进阶奖励失败
|
||||
char_skin_set_req = 2316, // 设置角色皮肤
|
||||
char_skin_set_succeed_ack = 2317, // 设置成功
|
||||
char_skin_set_failed_ack = 2318, // 设置失败
|
||||
char_affinity_quest_reward_receive_req = 2322, // 请求领取角色好感度任务奖励
|
||||
char_affinity_quest_reward_receive_succeed_ack = 2323, // 请求领取角色好感度任务成功
|
||||
char_affinity_quest_reward_receive_failed_ack = 2324, // 请求领取角色好感度任务失败
|
||||
char_recruitment_req = 2325, // 传入角色ID,招募角色
|
||||
char_recruitment_succeed_ack = 2326, // 招募成功
|
||||
char_recruitment_failed_ack = 2327, // 招募失败
|
||||
char_affinity_gift_send_req = 2328, // 请求赠送好感度礼物
|
||||
char_affinity_gift_send_succeed_ack = 2329, // 请求赠送好感度礼物成功
|
||||
char_affinity_gift_send_failed_ack = 2330, // 请求赠送好感度礼物失败
|
||||
char_dating_landmark_select_req = 2401, // 选择地点邀约角色
|
||||
char_dating_landmark_select_succeed_ack = 2402, // 选择地点邀约角色成功
|
||||
char_dating_landmark_select_failed_ack = 2403, // 选择地点邀约角色失败
|
||||
char_dating_gift_send_req = 2404, // 请求邀约赠礼
|
||||
char_dating_gift_send_succeed_ack = 2405, // 请求邀约赠礼成功
|
||||
char_dating_gift_send_failed_ack = 2406, // 请求邀约赠礼失败
|
||||
char_dating_event_reward_receive_req = 2407, // 请求领取特殊事件奖励
|
||||
char_dating_event_reward_receive_succeed_ack = 2408, // 请求领取特殊事件奖励成功
|
||||
char_dating_event_reward_receive_failed_ack = 2409, // 请求领取特殊事件奖励失败
|
||||
disc_strengthen_req = 3119, // 星盘强化
|
||||
disc_strengthen_succeed_ack = 3120, // 星盘强化成功
|
||||
disc_strengthen_failed_ack = 3121, // 星盘强化失败
|
||||
disc_promote_req = 3122, // 星盘升阶
|
||||
disc_promote_succeed_ack = 3123, // 星盘升阶成功
|
||||
disc_promote_failed_ack = 3124, // 星盘升阶失败
|
||||
disc_limit_break_req = 3125, // 星盘突破
|
||||
disc_limit_break_succeed_ack = 3126, // 星盘突破成功
|
||||
disc_limit_break_failed_ack = 3127, // 星盘突破失败
|
||||
disc_read_reward_receive_req = 3128, // 请求领取星盘阅读奖励
|
||||
disc_read_reward_receive_succeed_ack = 3129, // 请求领取星盘阅读奖励成功
|
||||
disc_read_reward_receive_failed_ack = 3130, // 请求领取星盘阅读奖励失败
|
||||
equipment_upgrade_req = 3201, // 装备强化
|
||||
equipment_upgrade_succeed_ack = 3202, // 装备强化成功
|
||||
equipment_upgrade_failed_ack = 3203, // 装备强化失败
|
||||
equipment_dismantle_req = 3204, // 装备分解
|
||||
equipment_dismantle_succeed_ack = 3205, // 装备分解成功
|
||||
equipment_dismantle_failed_ack = 3206, // 装备分解失败
|
||||
equipment_lock_unlock_req = 3207, // 装备加解锁
|
||||
equipment_lock_unlock_succeed_ack = 3208, // 装备加解锁成功
|
||||
equipment_lock_unlock_failed_ack = 3209, // 装备加解锁失败
|
||||
agent_apply_req = 3301, // 请求派遣委托
|
||||
agent_apply_succeed_ack = 3302, // 请求派遣委托成功
|
||||
agent_apply_failed_ack = 3303, // 请求派遣委托失败
|
||||
agent_give_up_req = 3304, // 请求放弃派遣委托
|
||||
agent_give_up_succeed_ack = 3305, // 请求放弃派遣委托成功
|
||||
agent_give_up_failed_ack = 3306, // 请求放弃派遣委托失败
|
||||
agent_reward_receive_req = 3307, // 请求领取派遣委托奖励
|
||||
agent_reward_receive_succeed_ack = 3308, // 请求领取派遣委托奖励成功
|
||||
agent_reward_receive_failed_ack = 3309, // 请求领取派遣委托奖励失败
|
||||
quest_tour_guide_reward_receive_req = 4201, // 领取手册任务奖励 value表示任务ID,0表示一键领取
|
||||
quest_tour_guide_reward_receive_succeed_ack = 4202, // 获取成功
|
||||
quest_tour_guide_reward_receive_failed_ack = 4203, // 获取失败
|
||||
quest_daily_reward_receive_req = 4204, // 领取日常任务奖励 value表示任务ID,0表示一键领取
|
||||
quest_daily_reward_receive_succeed_ack = 4205, // 获取成功
|
||||
quest_daily_reward_receive_failed_ack = 4206, // 获取失败
|
||||
dictionary_reward_receive_req = 4207, // 领取词条奖励
|
||||
dictionary_reward_receive_succeed_ack = 4208, // 获取成功
|
||||
dictionary_reward_receive_failed_ack = 4209, // 获取失败
|
||||
quest_tower_reward_receive_req = 4210, // 领取星塔任务奖励 value表示任务ID,0表示一键领取
|
||||
quest_tower_reward_receive_succeed_ack = 4211, // 获取成功
|
||||
quest_tower_reward_receive_failed_ack = 4212, // 获取失败
|
||||
quest_daily_active_reward_receive_req = 4213, // 领取日常任务活跃奖励
|
||||
quest_daily_active_reward_receive_succeed_ack = 4214, // 领取日常任务活跃奖励成功
|
||||
quest_daily_active_reward_receive_failed_ack = 4215, // 领取日常任务活跃奖励失败
|
||||
quest_tour_guide_group_reward_receive_req = 4216, // 领取任务组奖励
|
||||
quest_tour_guide_group_reward_receive_succeed_ack = 4217, // 获取成功
|
||||
quest_tour_guide_group_reward_receive_failed_ack = 4218, // 获取失败
|
||||
achievement_reward_receive_req = 4401, // 领取成就奖励
|
||||
achievement_reward_receive_succeed_ack = 4402, // 获取成功
|
||||
achievement_reward_receive_failed_ack = 4403, // 获取失败
|
||||
achievement_info_req = 4404, // 获取成就数据
|
||||
achievement_info_succeed_ack = 4405, // 获取成功
|
||||
achievement_info_failed_ack = 4406, // 获取失败
|
||||
infinity_tower_info_req = 4501, // 申请无尽塔关卡数据
|
||||
infinity_tower_info_succeed_ack = 4502, // 申请无尽塔关卡数据成功
|
||||
infinity_tower_info_failed_ack = 4503, // 申请无尽塔关卡数据失败
|
||||
infinity_tower_apply_req = 4504, // 申请进入无尽塔关卡
|
||||
infinity_tower_apply_succeed_ack = 4505, // 申请进入无尽塔关卡成功
|
||||
infinity_tower_apply_failed_ack = 4506, // 申请进入无尽塔关卡失败
|
||||
infinity_tower_settle_req = 4507, // 申请结算无尽塔关卡 Value:1胜利,2失败,3退出(1,2重复挑战无需再发申请)
|
||||
infinity_tower_settle_succeed_ack = 4508, // 申请结算无尽塔成功 非0表示可以继续挑战关卡ID(失败当前关卡ID,成功下一个关卡ID), 无需再发申请
|
||||
infinity_tower_settle_failed_ack = 4509, // 申请结算无尽塔失败
|
||||
infinity_tower_daily_reward_receive_req = 4510, // 请求领取无尽塔每日奖励
|
||||
infinity_tower_daily_reward_receive_succeed_ack = 4511, // 请求领取无尽塔每日奖励成功
|
||||
infinity_tower_daily_reward_receive_failed_ack = 4512, // 请求领取无尽塔每日奖励失败
|
||||
infinity_tower_plot_reward_receive_req = 4513, // 请求领取无尽塔剧情奖励
|
||||
infinity_tower_plot_reward_receive_succeed_ack = 4514, // 请求领取无尽塔剧情奖励成功
|
||||
infinity_tower_plot_reward_receive_failed_ack = 4515, // 请求领取无尽塔剧情奖励失败
|
||||
star_tower_apply_req = 4601, // 申请探索星塔
|
||||
star_tower_apply_succeed_ack = 4602, // 申请成功返回
|
||||
star_tower_apply_failed_ack = 4603, // 申请失败
|
||||
star_tower_interact_req = 4607, // 星塔交互请求
|
||||
star_tower_interact_succeed_ack = 4608, // 交互请求成功
|
||||
star_tower_interact_failed_ack = 4609, // 申请失败
|
||||
star_tower_info_req = 4610, // 获取星塔信息, 用于重连
|
||||
star_tower_info_succeed_ack = 4611, // 获取星塔信息成功
|
||||
star_tower_info_failed_ack = 4612, // 获取星塔信息失败
|
||||
star_tower_give_up_req = 4613, // 放弃星塔
|
||||
star_tower_give_up_succeed_ack = 4614, // 放弃星塔成功
|
||||
star_tower_give_up_failed_ack = 4615, // 放弃星塔失败
|
||||
star_tower_build_whether_save_req = 4701, // 请求是否保存星塔build
|
||||
star_tower_build_whether_save_succeed_ack = 4702, // 请求是否保存星塔build返回
|
||||
star_tower_build_whether_save_failed_ack = 4703, // 请求是否保存星塔build失败
|
||||
star_tower_build_brief_list_get_req = 4704, // 请求星塔build简要信息列表
|
||||
star_tower_build_brief_list_get_succeed_ack = 4705, // 请求星塔build简要信息列表返回
|
||||
star_tower_build_brief_list_get_failed_ack = 4706, // 请求星塔build简要信息列表失败
|
||||
star_tower_build_detail_get_req = 4707, // 请求星塔build详细信息列表
|
||||
star_tower_build_detail_get_succeed_ack = 4708, // 请求星塔build详细信息列表返回
|
||||
star_tower_build_detail_get_failed_ack = 4709, // 请求遗迹build详细信息列表失败
|
||||
star_tower_build_delete_req = 4710, // 请求解散星塔build
|
||||
star_tower_build_delete_succeed_ack = 4711, // 请求解散星塔build返回
|
||||
star_tower_build_delete_failed_ack = 4712, // 请求解散星塔build失败
|
||||
star_tower_build_name_set_req = 4713, // 请求设置星塔build名
|
||||
star_tower_build_name_set_succeed_ack = 4714, // 请求设置星塔build名返回
|
||||
star_tower_build_name_set_failed_ack = 4715, // 请求设置星塔build名失败
|
||||
star_tower_build_lock_unlock_req = 4716, // 请求星塔build加解锁
|
||||
star_tower_build_lock_unlock_succeed_ack = 4717, // 请求星塔build加解锁返回
|
||||
star_tower_build_lock_unlock_failed_ack = 4718, // 请求星塔build加解锁失败
|
||||
star_tower_build_preference_set_req = 4719, // 请求设置星塔build偏好
|
||||
star_tower_build_preference_set_succeed_ack = 4720, // 请求设置星塔build偏好返回
|
||||
star_tower_build_preference_set_failed_ack = 4721, // 请求设置星塔build偏好失败
|
||||
star_tower_rank_req = 4801, // 请求星塔排行榜信息
|
||||
star_tower_rank_succeed_ack = 4802, // 请求星塔排行榜信息成功
|
||||
star_tower_rank_failed_ack = 4803, // 请求星塔排行信息失败
|
||||
star_tower_rank_apply_req = 4804, // 申请探索星塔排行榜
|
||||
star_tower_rank_apply_succeed_ack = 4805, // 申请成功返回
|
||||
star_tower_rank_apply_failed_ack = 4806, // 申请失败
|
||||
star_tower_book_potential_brief_list_get_req = 4901, // 请求星塔图鉴角色潜能简要信息
|
||||
star_tower_book_potential_brief_list_get_succeed_ack = 4902, // 请求星塔图鉴角色潜能简要信息成功
|
||||
star_tower_book_potential_brief_list_get_failed_ack = 4903, // 请求星塔图鉴角色潜能简要信息失败
|
||||
star_tower_book_char_potential_get_req = 4904, // 请求星塔图鉴角色潜能信息
|
||||
star_tower_book_char_potential_get_succeed_ack = 4905, // 请求星塔图鉴角色潜能信息成功
|
||||
star_tower_book_char_potential_get_failed_ack = 4906, // 请求星塔图鉴角色潜能信息失败
|
||||
star_tower_book_potential_reward_receive_req = 4907, // 请求领取星塔图鉴角色潜能奖励
|
||||
star_tower_book_potential_reward_receive_succeed_ack = 4908, // 请求领取星塔图鉴角色潜能奖励成功
|
||||
star_tower_book_potential_reward_receive_failed_ack = 4909, // 请求领取星塔图鉴角色潜能奖励失败
|
||||
star_tower_book_event_get_req = 4910, // 请求星塔图鉴事件信息
|
||||
star_tower_book_event_get_succeed_ack = 4911, // 请求星塔图鉴事件信息成功
|
||||
star_tower_book_event_get_failed_ack = 4912, // 请求星塔图鉴事件信息失败
|
||||
star_tower_book_event_reward_receive_req = 4913, // 请求领取星塔图鉴角色潜能奖励
|
||||
star_tower_book_event_reward_receive_succeed_ack = 4914, // 请求领取星塔图鉴角色潜能奖励成功
|
||||
star_tower_book_event_reward_receive_failed_ack = 4915, // 请求领取星塔图鉴角色潜能奖励失败
|
||||
resident_shop_get_req = 5010, // 请求常驻商店信息
|
||||
resident_shop_get_succeed_ack = 5011, // 请求常驻商店信息成功
|
||||
resident_shop_get_failed_ack = 5012, // 请求常驻商店信息失败
|
||||
resident_shop_purchase_req = 5013, // 请求常驻商店购买物品
|
||||
resident_shop_purchase_succeed_ack = 5014, // 请求常驻商店购买物品成功
|
||||
resident_shop_purchase_failed_ack = 5015, // 请求常驻商店购买物品失败
|
||||
mall_gem_list_req = 5101, // 获取钻石商城产品列表
|
||||
mall_gem_list_succeed_ack = 5102, // 获取成功的列表
|
||||
mall_gem_list_failed_ack = 5103, // 获取失败
|
||||
mall_gem_order_req = 5104, // 下单购买商品
|
||||
mall_gem_order_succeed_ack = 5105, // 下单成功
|
||||
mall_gem_order_failed_ack = 5106, // 下单失败
|
||||
mall_order_cancel_req = 5107, // 取消某个尚未支付的订单
|
||||
mall_order_cancel_succeed_ack = 5108, // 取消成功
|
||||
mall_order_cancel_failed_ack = 5109, // 取消失败
|
||||
mall_order_collect_req = 5110, // 领取某个支付成功的订单的奖励
|
||||
mall_order_collect_succeed_ack = 5111, // 返回成功,请根据具体状态处理
|
||||
mall_order_collect_failed_ack = 5112, // 领取失败
|
||||
mall_monthlyCard_list_req = 5113, // 获取月卡商城产品列表
|
||||
mall_monthlyCard_list_succeed_ack = 5114, // 获取成功的列表
|
||||
mall_monthlyCard_list_failed_ack = 5115, // 获取失败
|
||||
mall_monthlyCard_order_req = 5116, // 购买月卡商城商品
|
||||
mall_monthlyCard_order_succeed_ack = 5117, // 下单成功
|
||||
mall_monthlyCard_order_failed_ack = 5118, // 获取失败
|
||||
mall_package_list_req = 5119, // 获取礼包商城商品列表
|
||||
mall_package_list_succeed_ack = 5120, // 商品列表
|
||||
mall_package_list_failed_ack = 5121, // 获取失败
|
||||
mall_package_order_req = 5122, // 购买礼包商城产品
|
||||
mall_package_order_succeed_ack = 5123, // 购买成功结果
|
||||
mall_package_order_failed_ack = 5124, // 购买失败
|
||||
mall_shop_list_req = 5125, // 获取星尘兑换商城商品列表
|
||||
mall_shop_list_succeed_ack = 5126, // 商品列表
|
||||
mall_shop_list_failed_ack = 5127, // 获取失败
|
||||
mall_shop_order_req = 5128, // 购买星尘兑换商店产品
|
||||
mall_shop_order_succeed_ack = 5129, // 购买成功结果
|
||||
mall_shop_order_failed_ack = 5130, // 购买失败
|
||||
gacha_spin_req = 6001, // 根据卡池ID以及卡池模式在当前卡池抽卡
|
||||
gacha_spin_succeed_ack = 6002, // 成功,返回掉落道具以及ChangeInfo
|
||||
gacha_spin_failed_ack = 6003, // 错误,返回错误信息
|
||||
gacha_information_req = 6004, // 获取所有卡池数据
|
||||
gacha_information_succeed_ack = 6005, // 成功,返回所有的卡池数据
|
||||
gacha_information_failed_ack = 6006, // 错误,返回错误信息
|
||||
gacha_histories_req = 6007, // 根据存盘ID获取抽卡的历史记录
|
||||
gacha_histories_succeed_ack = 6008, // 成功,返回抽卡的历史数据
|
||||
gacha_histories_failed_ack = 6009, // 错误,返回错误
|
||||
tower_book_fate_card_detail_req = 6101, // 获取已经拥有的命运卡图鉴
|
||||
tower_book_fate_card_detail_succeed_ack = 6102, // 成功,返回已经拥有的命运卡和已经领取的任务
|
||||
tower_book_fate_card_detail_failed_ack = 6103, // 错误,返回错误信息
|
||||
tower_book_fate_card_reward_receive_req = 6104, // 领取命运卡任务奖励
|
||||
tower_book_fate_card_reward_receive_succeed_ack = 6105, // 成功,返回任务奖励
|
||||
tower_book_fate_card_reward_receive_failed_ack = 6106, // 错误,返回错误信息
|
||||
plot_reward_receive_req = 7013, // 传入剧情ID, 领取剧情奖励
|
||||
plot_reward_receive_succeed_ack = 7014, // 领取成功
|
||||
plot_reward_receive_failed_ack = 7015, // 领取失败
|
||||
daily_instance_apply_req = 7016, // 日常副本申请
|
||||
daily_instance_apply_succeed_ack = 7017, // 日常副本申请成功
|
||||
daily_instance_apply_failed_ack = 7018, // 错误,返回错误信息
|
||||
daily_instance_settle_req = 7019, // 日常副本结算请求
|
||||
daily_instance_settle_succeed_ack = 7020, // 日常副本结算成功
|
||||
daily_instance_settle_failed_ack = 7021, // 错误,返回错误信息
|
||||
daily_instance_raid_req = 7022, // 日常副本扫荡请求
|
||||
daily_instance_raid_succeed_ack = 7023, // 日常副本扫荡成功
|
||||
daily_instance_raid_failed_ack = 7024, // 错误,返回错误信息
|
||||
daily_equipment_apply_req = 7028, // 日常装备副本申请
|
||||
daily_equipment_apply_succeed_ack = 7029, // 日常装备副本申请成功
|
||||
daily_equipment_apply_failed_ack = 7030, // 错误,返回错误信息
|
||||
daily_equipment_settle_req = 7031, // 日常装备副本结算请求
|
||||
daily_equipment_settle_succeed_ack = 7032, // 日常装备副本结算成功
|
||||
daily_equipment_settle_failed_ack = 7033, // 错误,返回错误信息
|
||||
daily_equipment_sweep_req = 7034, // 日常装备副本扫荡请求
|
||||
daily_equipment_sweep_succeed_ack = 7035, // 日常装备副本扫荡成功
|
||||
daily_equipment_sweep_failed_ack = 7036, // 错误,返回错误信息
|
||||
region_boss_level_apply_req = 7101, // 请求进入地区boss关卡
|
||||
region_boss_level_apply_succeed_ack = 7102, // 请求进入地区boss关成功
|
||||
region_boss_level_apply_failed_ack = 7103, // 请求进入地区boss关卡失败
|
||||
region_boss_level_settle_req = 7104, // 请求结算地区boss关卡
|
||||
region_boss_level_settle_succeed_ack = 7105, // 请求结算地区boss关成功
|
||||
region_boss_level_settle_failed_ack = 7106, // 请求结算地区boss关卡失败
|
||||
region_boss_level_sweep_req = 7107, // 请求扫荡地区boss关卡
|
||||
region_boss_level_sweep_succeed_ack = 7108, // 请求扫荡地区boss关成功
|
||||
region_boss_level_sweep_failed_ack = 7109, // 请求结算地区boss关卡失败
|
||||
traveler_duel_level_apply_req = 7201, // 请求进入旅人对决关卡
|
||||
traveler_duel_level_apply_succeed_ack = 7202, // 请求进入旅人对决关卡成功
|
||||
traveler_duel_level_apply_failed_ack = 7203, // 请求进入旅人对决关卡失败
|
||||
traveler_duel_level_settle_req = 7204, // 请求结算旅人对决关卡
|
||||
traveler_duel_level_settle_succeed_ack = 7205, // 请求结算旅人对决关卡成功
|
||||
traveler_duel_level_settle_failed_ack = 7206, // 请求结算旅人对决关卡失败
|
||||
traveler_duel_info_req = 7207, // 请求旅人对决信息
|
||||
traveler_duel_info_succeed_ack = 7208, // 请求旅人对决信息成功
|
||||
traveler_duel_info_failed_ack = 7209, // 请求旅人对决信息失败
|
||||
traveler_duel_quest_reward_receive_req = 7210, // 领取旅人对决任务奖励
|
||||
traveler_duel_quest_reward_receive_succeed_ack = 7211, // 获取成功
|
||||
traveler_duel_quest_reward_receive_failed_ack = 7212, // 获取失败
|
||||
traveler_duel_rank_req = 7213, // 请求旅人对决排行榜信息
|
||||
traveler_duel_rank_succeed_ack = 7214, // 请求旅人对决排行榜信息成功
|
||||
traveler_duel_rank_failed_ack = 7215, // 请求旅人对决排行信息失败
|
||||
traveler_duel_rank_upload_req = 7216, // 请求旅人对决上传分数、附带本次战斗统计数据
|
||||
traveler_duel_rank_upload_succeed_ack = 7217, // 请求旅人对决上传分数成功
|
||||
traveler_duel_rank_upload_failed_ack = 7218, // 请求旅人对决上传分数失败
|
||||
story_apply_req = 7301, // 关卡申请
|
||||
story_apply_succeed_ack = 7302, // 申请成功,返回 Nil
|
||||
story_apply_failed_ack = 7303, // 错误,返回错误信息
|
||||
story_settle_req = 7304, // 关卡结算
|
||||
story_settle_succeed_ack = 7305, // 结算成功,发放通关奖励
|
||||
story_settle_failed_ack = 7306, // 错误,返回错误信息
|
||||
energy_buy_req = 8001, // 购买体力请求
|
||||
energy_buy_succeed_ack = 8002, // 购买成功,返回当日的购买次数,以及ChangeInfo
|
||||
energy_buy_failed_ack = 8003, // 购买失败,返回错误信息
|
||||
client_event_report_req = 8101, // 客户端事件上报
|
||||
client_event_report_succeed_ack = 8102, // 客户端事件上报成功
|
||||
client_event_report_failed_ack = 8103, // 客户端事件上报失败
|
||||
vampire_survivor_apply_req = 8201, // 灾变防线副本申请
|
||||
vampire_survivor_apply_succeed_ack = 8202, // 灾变防线副本申请成功
|
||||
vampire_survivor_apply_failed_ack = 8203, // 灾变防线副本申请失败
|
||||
vampire_survivor_area_change_req = 8204, // 灾变防线阶段转化
|
||||
vampire_survivor_area_change_succeed_ack = 8205, // 灾变防线副本申请成功
|
||||
vampire_survivor_area_change_failed_ack = 8206, // 灾变防线副本申请失败
|
||||
vampire_survivor_settle_req = 8207, // 灾变防线副本结算申请 [失败也发这个]
|
||||
vampire_survivor_settle_succeed_ack = 8208, // 灾变防线副本结算申请成功
|
||||
vampire_survivor_settle_failed_ack = 8209, // 灾变防线副本结算申请失败
|
||||
vampire_survivor_reward_select_req = 8210, // 灾变防线副本升级申请
|
||||
vampire_survivor_reward_select_succeed_ack = 8211, // 灾变防线副本结算申请成功
|
||||
vampire_survivor_reward_select_failed_ack = 8212, // 灾变防线副本结算申请失败
|
||||
vampire_survivor_reward_chest_req = 8213, // 灾变防线开宝箱申请
|
||||
vampire_survivor_reward_chest_succeed_ack = 8214, // 灾变防线开宝箱申请成功
|
||||
vampire_survivor_reward_chest_failed_ack = 8215, // 灾变防线开宝箱申请失败
|
||||
vampire_survivor_quest_reward_receive_req = 8216, // 灾变防线领取任务奖励申请
|
||||
vampire_survivor_quest_reward_receive_succeed_ack = 8217, // 灾变防线领取任务奖励成功
|
||||
vampire_survivor_quest_reward_receive_failed_ack = 8218, // 灾变防线领取任务奖励失败
|
||||
vampire_survivor_rank_req = 8219, // 请求吸血鬼模式排行榜信息
|
||||
vampire_survivor_rank_succeed_ack = 8220, // 请求吸血鬼模式排行榜信息成功
|
||||
vampire_survivor_rank_failed_ack = 8221, // 请求吸血鬼模式排行榜信息失败
|
||||
vampire_talent_detail_req = 8301, // 获取节点信息
|
||||
vampire_talent_detail_succeed_ack = 8302, // 获取节点信息成功
|
||||
vampire_talent_detail_failed_ack = 8303, // 获取失败,返回错误信息
|
||||
vampire_talent_reset_req = 8304, // 重置所有的天赋节点
|
||||
vampire_talent_reset_succeed_ack = 8305, // 重置成功, 返回最终天赋点数
|
||||
vampire_talent_reset_failed_ack = 8306, // 重置失败,返回错误信息
|
||||
vampire_talent_unlock_req = 8307, // 传入节点ID, 解锁对应的养成节点
|
||||
vampire_talent_unlock_succeed_ack = 8308, // 解锁成功
|
||||
vampire_talent_unlock_failed_ack = 8309, // 解锁失败,返回错误信息
|
||||
mail_list_req = 9001, // 获取邮件列表
|
||||
mail_list_succeed_ack = 9002, // 邮件列表
|
||||
mail_list_failed_ack = 9003, // 获取失败
|
||||
mail_read_req = 9004, // 标记邮件已读
|
||||
mail_read_succeed_ack = 9005, // 返回已设置为已读的邮件ID
|
||||
mail_read_failed_ack = 9006, // 设置失败
|
||||
mail_recv_req = 9007, // 领取奖励 一键领取发送0,单独领取发送对应邮件ID上来
|
||||
mail_recv_succeed_ack = 9008, // 领取成功
|
||||
mail_recv_failed_ack = 9009, // 领取失败
|
||||
mail_remove_req = 9010, // 删除邮件 一键删除所有已读已领发送0,单独删除发送对应邮件ID上来
|
||||
mail_remove_succeed_ack = 9011, // 删除成功
|
||||
mail_remove_failed_ack = 9012, // 删除失败
|
||||
activity_detail_req = 9101, // 获取所有的活动数据
|
||||
activity_detail_succeed_ack = 9102, // 获取成功
|
||||
activity_detail_failed_ack = 9103, // 获取失败
|
||||
activity_periodic_reward_receive_req = 9104, // 领取活动奖励
|
||||
activity_periodic_reward_receive_succeed_ack = 9105, // 领取成功
|
||||
activity_periodic_reward_receive_failed_ack = 9106, // 领取失败
|
||||
activity_periodic_final_reward_receive_req = 9107, // 仪式感,领取当前活动的最终奖励
|
||||
activity_periodic_final_reward_receive_succeed_ack = 9108, // 领取成功
|
||||
activity_periodic_final_reward_receive_failed_ack = 9109, // 领取失败
|
||||
activity_login_reward_receive_req = 9110, // 领取活动奖励
|
||||
activity_login_reward_receive_succeed_ack = 9111, // 领取成功
|
||||
activity_login_reward_receive_failed_ack = 9112, // 领取失败
|
||||
phone_contacts_info_req = 9201, // 获取手机所有联系人的数据
|
||||
phone_contacts_info_succeed_ack = 9202, // 获取联系人数据成功
|
||||
phone_contacts_info_failed_ack = 9203, // 获取联系人数据
|
||||
phone_contacts_report_req = 9204, // 联系人聊天上报
|
||||
phone_contacts_report_succeed_ack = 9205, // 上报成功
|
||||
phone_contacts_report_failed_ack = 9206, // 上报失败
|
||||
talent_unlock_req = 9301, // 传入天赋ID, 解锁相关天赋
|
||||
talent_unlock_succeed_ack = 9302, // 解锁成功
|
||||
talent_unlock_failed_ack = 9303, // 解锁失败,返回错误信息
|
||||
talent_reset_req = 9304, // 传入角色ID, 重置角色所有天赋
|
||||
talent_reset_succeed_ack = 9305, // 重置成功
|
||||
talent_reset_failed_ack = 9306, // 重置失败,返回错误信息
|
||||
talent_node_reset_req = 9307, // 天赋普通节点ID
|
||||
talent_node_reset_succeed_ack = 9308, // 重置成功
|
||||
talent_node_reset_failed_ack = 9309, // 重置失败,返回错误信息
|
||||
battle_pass_info_req = 9801, // 获取当前战令信息
|
||||
battle_pass_info_succeed_ack = 9802, // 战令信息
|
||||
battle_pass_info_failed_ack = 9803, // 获取失败
|
||||
battle_pass_reward_receive_req = 9804, // 领取战令奖励, 传入战令等级和版本, 全部领等级取传0
|
||||
battle_pass_reward_receive_succeed_ack = 9805, // 领取战令奖励成功
|
||||
battle_pass_reward_receive_failed_ack = 9806, // 领取战令奖励失败
|
||||
battle_pass_level_buy_req = 9807, // 战令等级购买, 传入需要购买的级数和版本
|
||||
battle_pass_level_buy_succeed_ack = 9808, // 购买成功
|
||||
battle_pass_level_buy_failed_ack = 9809, // 购买成功
|
||||
battle_pass_order_req = 9810, // 战令进阶下单
|
||||
battle_pass_order_succeed_ack = 9811, // 战令进阶下单成功
|
||||
battle_pass_order_failed_ack = 9812, // 领取失败
|
||||
battle_pass_order_collect_req = 9813, // 战令进阶订单收取
|
||||
battle_pass_order_collect_succeed_ack = 9814, // 返回成功,请根据具体状态处理
|
||||
battle_pass_order_collect_failed_ack = 9815, // 战令进阶失败
|
||||
battle_pass_quest_reward_receive_req = 9816, // 战令任务一键领取 value表示任务ID,0表示一键领取
|
||||
battle_pass_quest_reward_receive_succeed_ack = 9817, // 获取成功
|
||||
battle_pass_quest_reward_receive_failed_ack = 9818, // 获取失败
|
||||
redeem_code_req = 9901, // 兑换码兑换
|
||||
redeem_code_succeed_ack = 9902, // 兑换成功,返回兑换后德道具以及ChangeInfo
|
||||
redeem_code_failed_ack = 9903, // 兑换失败,返回错误信息
|
||||
system_failed_ack = 10000, // 系统级失败, 主要用于http模式下,强制失败返回
|
||||
player_new_notify = 10001, // 新用户
|
||||
mail_state_notify = 10002, // 邮件状态变更
|
||||
player_relogin_notify = 10003, // 在其他地方登录
|
||||
token_expire_notify = 10004, // token过期
|
||||
player_ban_notify = 10005, // 用户被ban
|
||||
quest_change_notify = 10006, // 任务进度变更
|
||||
star_tower_rank_ticket_change_notify = 10007, // 星塔排行榜门票
|
||||
agent_new_notify = 10008, // 每周刷新新委托ID列表
|
||||
world_class_change_notify = 10009, // 世界等级变化
|
||||
friend_energy_state_notify = 10010, // 好友赠送体力状态变更
|
||||
signin_reward_change_notify = 10011, // 登陆奖励更新
|
||||
friend_state_notify = 10012, // 好友状态变更
|
||||
order_paid_notify = 10013, // 订单已完成支付通知,可以发起领取
|
||||
order_revoke_notify = 10014, // 订单道具被撤回,主要用于恶意退款
|
||||
star_tower_book_potential_notify = 10015, // 星塔潜能图鉴状态变更
|
||||
star_tower_book_event_notify = 10016, // 星塔潜能图鉴状态变更
|
||||
battle_pass_state_notify = 10017, // 战令状态变更
|
||||
world_class_reward_state_notify = 10018, // 世界等级奖励状态变更
|
||||
char_advance_reward_state_notify = 10019, // 角色进阶奖励状态变更
|
||||
achievement_change_notify = 10020, // 成就进度变更
|
||||
achievement_state_notify = 10021, // 成就待领取红点提示
|
||||
character_skin_gain_notify = 10022, // 角色获得新皮肤,如果是重复获取,将发送转换数据
|
||||
character_skin_change_notify = 10023, // 角色装备的皮肤发生改变
|
||||
handbook_change_notify = 10024, // 图鉴数据发生变化
|
||||
monthly_card_rewards_notify = 10025, // 月卡奖励通知
|
||||
quest_state_notify = 10026, // 任务红点奖励notify
|
||||
mall_package_state_notify = 10027, // 礼包商城免费商品红点notify
|
||||
dictionary_change_notify = 10028, // 字典数据变更
|
||||
activity_change_notify = 10029, // 活动数据变化
|
||||
activity_quest_change_notify = 10030, // 活动任务数据变化
|
||||
char_affinity_reward_state_notify = 10031, // 角色好感度奖励最终值
|
||||
mail_overflow_notify = 10032, // 道具超发进邮件
|
||||
infinity_tower_rewards_state_notify = 10033, // 无尽塔是否有奖励可领最终值
|
||||
phone_chat_change_notify = 10034, // 手机新聊天变化
|
||||
character_fragments_overflow_change_notify = 10035, // 角色碎片溢出
|
||||
activity_login_rewards_notify = 10036, // 七日登录活动通知
|
||||
tower_book_fate_card_collect_notify = 10037, // 新获得的命运卡数据
|
||||
tower_book_fate_card_reward_notify = 10038, // 命运卡图鉴奖励变化
|
||||
region_boss_level_challenge_ticket_notify = 10039, // 区域boss挑战模式门票变更通知最终值
|
||||
honor_change_notify = 10040, // 荣誉称号变更通知(最终值, 多个Notify以最后一个为准)
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,7 @@ using Google.Protobuf;
|
||||
using System.Collections;
|
||||
using System.Reflection;
|
||||
using System.Net.Sockets;
|
||||
using Novaria.SDKServer.Controllers.Api.ProtocolHandlers;
|
||||
//using Mono.Security.Cryptography;
|
||||
|
||||
namespace Novaria.SDKServer.Controllers.Api
|
||||
@@ -23,8 +24,14 @@ namespace Novaria.SDKServer.Controllers.Api
|
||||
[Route("/agent-zone-1")]
|
||||
public class GatewayController : ControllerBase
|
||||
{
|
||||
private readonly IProtocolHandlerFactory protocolHandlerFactory;
|
||||
private readonly ILogger<GatewayController> logger;
|
||||
|
||||
private byte[] key3 = new byte[32];
|
||||
public GatewayController(IProtocolHandlerFactory _protocolHandlerFactory, ILogger<GatewayController> _logger)
|
||||
{
|
||||
protocolHandlerFactory = _protocolHandlerFactory;
|
||||
logger = _logger;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public IActionResult PostRequest()
|
||||
@@ -39,77 +46,59 @@ namespace Novaria.SDKServer.Controllers.Api
|
||||
|
||||
Packet requestPacket = ParseRequest(rawPayload);
|
||||
|
||||
Console.WriteLine();
|
||||
Log.Information("");
|
||||
|
||||
Console.WriteLine("msgs body: ");
|
||||
Log.Information("msgs body: ");
|
||||
Utils.PrintByteArray(requestPacket.msgBody.ToArray());
|
||||
Log.Information("Sucessfully parsed request packet, id: " + requestPacket.msgId);
|
||||
|
||||
byte[] responsePackeBytes = null;
|
||||
|
||||
switch (requestPacket.msgId)
|
||||
{
|
||||
case 4:
|
||||
{
|
||||
LoginReq loginreq = DecodePacket<LoginReq>(requestPacket);
|
||||
NetMsgId msgid = (NetMsgId)requestPacket.msgId;
|
||||
Log.Information("Received protocol msgid: " + msgid);
|
||||
|
||||
Log.Information("login_req received, contents: " + JsonSerializer.Serialize(loginreq));
|
||||
Type requestType = protocolHandlerFactory.GetRequestPacketTypeByProtocol(msgid);
|
||||
|
||||
Log.Information("Building login resp...");
|
||||
|
||||
LoginResp loginResp = new LoginResp()
|
||||
if (requestType is null)
|
||||
{
|
||||
Token = "seggstoken",
|
||||
};
|
||||
Log.Error($"MsgId {msgid} doesn't have corresponding type registered");
|
||||
throw new InvalidDataException("invalid protocol msgid");
|
||||
}
|
||||
|
||||
Packet responsePacket = new Packet()
|
||||
IMessage decodedPayload = DecodePacket(requestType, requestPacket);
|
||||
|
||||
// originally i returned a IMessage from handlers,
|
||||
// but since in this game apprently one req can return diff resp msgids thus they can not be hardcoded in the packet or increments,
|
||||
// so we just return packet, bit tedius but inside handlers will determine the response msgid
|
||||
var responsePacketObj = protocolHandlerFactory.Invoke(msgid, decodedPayload);
|
||||
|
||||
if (responsePacketObj is null)
|
||||
{
|
||||
msgId = 5,
|
||||
msgBody = loginResp.ToByteArray()
|
||||
};
|
||||
Log.Error($"Protocol {msgid}: {ProtocolHandlerFactory.NetMsgIdToNameMappings[(short)msgid]} is unimplemented and left unhandled");
|
||||
|
||||
//throw new ArgumentNullException("handler does not exist");
|
||||
return new EmptyResult();
|
||||
}
|
||||
|
||||
// -- changed to manually set in handler
|
||||
// succeed_ack = req_msg_id + 1, failed_ack = req_msg_id - 1, for special stuff like gm its -1/-2
|
||||
//NetMsgId respMsgId = msgid + 1; // this is probably good for most cases but idk if theres any that doesnt follow this
|
||||
Packet responsePacket = (Packet)responsePacketObj;
|
||||
// maybe just change invoke to return Packet
|
||||
|
||||
Log.Information($"Response Packet msgid: {responsePacket.msgId}: {(short)responsePacket.msgId}");
|
||||
|
||||
responsePackeBytes = BuildResponse(responsePacket);
|
||||
|
||||
Log.Information("Sending login_resp packet: " + JsonSerializer.Serialize(loginResp));
|
||||
|
||||
break;
|
||||
}
|
||||
case 1001:
|
||||
{
|
||||
Nil nilReq = DecodePacket<Nil>(requestPacket);
|
||||
Log.Information("nil_req received, contents: " + JsonSerializer.Serialize(nilReq));
|
||||
|
||||
Log.Information("Building nil resp...");
|
||||
|
||||
Nil nilResp = new Nil()
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
Packet responsePacket = new Packet()
|
||||
{
|
||||
msgId = 10001,
|
||||
msgBody = nilResp.ToByteArray()
|
||||
};
|
||||
|
||||
responsePackeBytes = BuildResponse(responsePacket);
|
||||
|
||||
Log.Information("Sending nil_resp packet: " + JsonSerializer.Serialize(nilResp));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
Log.Information("That packet has no handler!");
|
||||
break;
|
||||
}
|
||||
|
||||
if (responsePackeBytes == null)
|
||||
{
|
||||
Log.Error("Unable to build response for packet msgid: " + responsePacket.msgId);
|
||||
throw new InvalidOperationException("something went wrong during building the response packet!");
|
||||
}
|
||||
|
||||
|
||||
Console.WriteLine("Built bytes: ");
|
||||
Utils.PrintByteArray(responsePackeBytes);
|
||||
Log.Information("Sucessfully responsed with a respone packet msgid: " + (short)responsePacket.msgId);
|
||||
//Console.WriteLine("Built bytes: ");
|
||||
//Utils.PrintByteArray(responsePackeBytes);
|
||||
|
||||
Response.Body.Write(responsePackeBytes, 0, responsePackeBytes.Length);
|
||||
|
||||
@@ -130,16 +119,24 @@ namespace Novaria.SDKServer.Controllers.Api
|
||||
|
||||
IKEReq ikeRequest = ParseIkeRequest(rawPayload);
|
||||
|
||||
Console.WriteLine("Decoded Packet: " + JsonSerializer.Serialize(ikeRequest));
|
||||
Log.Information("Decoded Packet: " + JsonSerializer.Serialize(ikeRequest));
|
||||
|
||||
AeadTool.CLIENT_PUBLIC_KEY = ikeRequest.PubKey.ToArray();
|
||||
|
||||
IKEResp ikeResponse = new IKEResp()
|
||||
{
|
||||
PubKey = ByteString.CopyFrom(AeadTool.CLIENT_PUBLIC_KEY),
|
||||
PubKey = ByteString.CopyFrom(DiffieHellman.Instance.PublicKey),
|
||||
Token = AeadTool.TOKEN
|
||||
};
|
||||
|
||||
Log.Information("RECEIVED client public key: ");
|
||||
Utils.PrintByteArray(AeadTool.CLIENT_PUBLIC_KEY);
|
||||
|
||||
byte[] calculatedKey = DiffieHellman.Instance.CalculateSharedSecret(AeadTool.CLIENT_PUBLIC_KEY);
|
||||
|
||||
Log.Information("CALCULATED KEY: ");
|
||||
Utils.PrintByteArray(calculatedKey);
|
||||
|
||||
Packet ikePacket = new Packet()
|
||||
{
|
||||
msgId = 2,
|
||||
@@ -148,8 +145,8 @@ namespace Novaria.SDKServer.Controllers.Api
|
||||
|
||||
var responsePayload = BuildIkeResponse(ikePacket);
|
||||
|
||||
Console.WriteLine("Sending ike response packet: " + JsonSerializer.Serialize(ikeResponse));
|
||||
Console.WriteLine("Built bytes: ");
|
||||
Log.Information("Sending ike response packet: " + JsonSerializer.Serialize(ikeResponse));
|
||||
Log.Information("Built bytes: ");
|
||||
Utils.PrintByteArray(responsePayload);
|
||||
|
||||
Response.Body.Write(responsePayload, 0, responsePayload.Length);
|
||||
@@ -177,7 +174,7 @@ namespace Novaria.SDKServer.Controllers.Api
|
||||
|
||||
AeadTool.Encrypt_ChaCha20(encryptedPacketData, AeadTool.FIRST_IKE_KEY, AeadTool.PS_REQUEST_NONCE, packetData, false);
|
||||
|
||||
Console.WriteLine("build: encrypted data:");
|
||||
Log.Information("build: encrypted data:");
|
||||
Utils.PrintByteArray(encryptedPacketData.ToArray());
|
||||
|
||||
BinaryWriter rawResponseWriter = new BinaryWriter(new MemoryStream());
|
||||
@@ -206,6 +203,22 @@ namespace Novaria.SDKServer.Controllers.Api
|
||||
return (T)parsedMessage;
|
||||
}
|
||||
|
||||
public static IMessage DecodePacket(Type targetType, Packet packet)
|
||||
{
|
||||
PropertyInfo parserProperty = targetType.GetProperty("Parser", BindingFlags.Static | BindingFlags.Public);
|
||||
object parserInstance = parserProperty.GetValue(null);
|
||||
MethodInfo parseFromMethod = parserInstance.GetType().GetMethod("ParseFrom", new[] { typeof(byte[]) });
|
||||
|
||||
IMessage parsedMessage = (IMessage)parseFromMethod.Invoke(parserInstance, new object[] { packet.msgBody });
|
||||
|
||||
if (parsedMessage == null)
|
||||
{
|
||||
throw new InvalidOperationException("Failed to parse message.");
|
||||
}
|
||||
|
||||
return parsedMessage;
|
||||
}
|
||||
|
||||
public static byte[] BuildResponse(Packet packet)
|
||||
{
|
||||
BinaryWriter packetWriter = new BinaryWriter(new MemoryStream());
|
||||
@@ -225,7 +238,7 @@ namespace Novaria.SDKServer.Controllers.Api
|
||||
|
||||
AeadTool.Encrypt_ChaCha20(encryptedPacketData, AeadTool.key3, AeadTool.PS_REQUEST_NONCE, packetData, false);
|
||||
|
||||
Console.WriteLine("build: encrypted data:");
|
||||
Log.Information("build: encrypted data:");
|
||||
Utils.PrintByteArray(encryptedPacketData.ToArray());
|
||||
|
||||
BinaryWriter rawResponseWriter = new BinaryWriter(new MemoryStream());
|
||||
|
||||
62
Novaria.SDKServer/Controllers/Api/ProtocolHandlers/Login.cs
Normal file
62
Novaria.SDKServer/Controllers/Api/ProtocolHandlers/Login.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
using Google.Protobuf;
|
||||
using Novaria.Common.Core;
|
||||
using Proto;
|
||||
using Serilog;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Novaria.SDKServer.Controllers.Api.ProtocolHandlers
|
||||
{
|
||||
public class Login : ProtocolHandlerBase
|
||||
{
|
||||
public Login(IProtocolHandlerFactory protocolHandlerFactory) : base(protocolHandlerFactory)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
[ProtocolHandler(NetMsgId.player_login_req)] // req id goes here
|
||||
public Packet PlayerLoginHandler(LoginReq req)
|
||||
{
|
||||
Log.Information("login_req received, contents: " + JsonSerializer.Serialize(req));
|
||||
|
||||
Log.Information("Building login resp...");
|
||||
|
||||
LoginResp loginResp = new LoginResp()
|
||||
{
|
||||
Token = "seggstoken",
|
||||
};
|
||||
|
||||
Log.Information("Sending login_resp packet: " + JsonSerializer.Serialize(loginResp));
|
||||
return Packet.Create(NetMsgId.player_login_succeed_ack, loginResp);
|
||||
}
|
||||
|
||||
[ProtocolHandler(NetMsgId.player_data_req)]
|
||||
public Packet PlayerDataHandler(Nil req)
|
||||
{
|
||||
// example: different netmsgid returned, if new player player_new_notify, other wise player_data_ack
|
||||
|
||||
PlayerInfo player_data_ack = new PlayerInfo()
|
||||
{
|
||||
Acc = new AccInfo()
|
||||
{
|
||||
Id = 1,
|
||||
NickName = "seggs",
|
||||
Gender = true,
|
||||
}
|
||||
};
|
||||
|
||||
Log.Information("Sending player_new_notify packet: " + JsonSerializer.Serialize(player_data_ack));
|
||||
return Packet.Create(NetMsgId.player_new_notify, new Nil());
|
||||
}
|
||||
|
||||
[ProtocolHandler(NetMsgId.player_reg_req)]
|
||||
public Packet PlayerRegHandler(PlayerReg req)
|
||||
{
|
||||
Log.Information("player_reg_req received, contents: " + JsonSerializer.Serialize(req));
|
||||
|
||||
//Log.Information("Sending PlayerInfo packet: " + JsonSerializer.Serialize(playerInfoResp));
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,672 @@
|
||||
using Google.Protobuf;
|
||||
using Novaria.Common.Core;
|
||||
using Proto;
|
||||
using Serilog;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Novaria.SDKServer.Controllers.Api.ProtocolHandlers
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
|
||||
internal class ProtocolHandlerAttribute : Attribute
|
||||
{
|
||||
public NetMsgId NetMsgId { get; }
|
||||
|
||||
public ProtocolHandlerAttribute(NetMsgId protocol)
|
||||
{
|
||||
NetMsgId = protocol;
|
||||
}
|
||||
}
|
||||
|
||||
public interface IProtocolHandlerFactory
|
||||
{
|
||||
public object? Invoke(NetMsgId protocol, IMessage? req);
|
||||
public MethodInfo? GetProtocolHandler(NetMsgId protocol);
|
||||
public Type? GetRequestPacketTypeByProtocol(NetMsgId protocol);
|
||||
public void RegisterInstance(Type t, object? inst);
|
||||
}
|
||||
|
||||
public class ProtocolHandlerFactory : IProtocolHandlerFactory
|
||||
{
|
||||
public static readonly Dictionary<short, string> NetMsgIdToNameMappings = new Dictionary<short, string>()
|
||||
{
|
||||
[-10034] = "GmCharUpNotify", // 角色数据变更
|
||||
[-10033] = "GmTowerGrowthNodesNotify", // 星塔养成节点变化通知
|
||||
[-10032] = "GmHarmonySkillNotify", // 共鸣技能新增
|
||||
[-10031] = "GmStory", // 一键通关故事并获得所有证据
|
||||
[-10030] = "GmStory", // 通关指定的故事并获取证据
|
||||
[-10029] = "InfinityTowerLevelInfo", // 无尽之塔跳层
|
||||
[-10028] = "GmAllInfinityTowerInfos", // 全通所有无尽之塔
|
||||
[-10027] = "GmClearAllEquipmentInstance", // 全通所有装备副本
|
||||
[-10026] = "StarTowerBuildInfo", // 返回星塔build导入的build信息
|
||||
[-10025] = "String", // 返回星塔build的json序列化字符串
|
||||
[-10024] = "StarTowerRoomCase", // 返回操作添加的新case
|
||||
[-10023] = "STAddTeamExpNtf", // 队伍等级经验最终值及当前未处理的所有case
|
||||
[-10022] = "StarTowerInfo", // 星塔跳层
|
||||
[-10021] = "GmSTClearAllStarTower", // 全通所有星塔(返回通关星塔ID列表)
|
||||
[-10020] = "ChangeInfo", // 星塔道具变化通知
|
||||
[-10019] = "CharAffinity", // 添加角色好感度
|
||||
[-10017] = "Disc", // 星盘信息通知
|
||||
[-10016] = "GmClearAllTravelerDue", // 全通所有旅人对决
|
||||
[-10015] = "GmClearAllRegionBossLevel", // 全通所有强敌讨伐
|
||||
[-10013] = "GmClearAllDailyInstance", // 一键通关所有日常副本
|
||||
[-10009] = "UI32", // 增加吸血鬼模式副本赛季积分 返回当前总分
|
||||
[-10008] = "GmClearAllVampireSurvivor", // 一键通关所有吸血鬼模式副本
|
||||
[-10007] = "RegionBossLevel", // 地区boss关卡最终数据通知
|
||||
[-10006] = "Chars", // 角色列表最终数据通知
|
||||
[-10005] = "GmWorldClass", // 世界等级最终值通知
|
||||
[-10004] = "Char", // 角色数据变化通知
|
||||
[-10003] = "Char", // 角色信息通知
|
||||
[-10001] = "ChangeInfo", // 道具变化通知
|
||||
[-3] = "Error", // 请求失败
|
||||
[-2] = "Nil", // 成功,响应会走notify附加数据流程
|
||||
[-1] = "SudoCommand", // 客户端内置GM命令请求
|
||||
[1] = "IKEReq", // internet key exchange
|
||||
[2] = "IKEResp", // 成功,返回服务器方的秘钥,之后每次请求都需要将Token写入header X-Token段,服务器以此识别用户
|
||||
[3] = "Error", // 失败
|
||||
[4] = "LoginReq", // 登录
|
||||
[5] = "LoginResp", // 成功,将返回的新token,替换之前ike阶段的token,放置于header X-Token段,服务器以此识别用户
|
||||
[6] = "Error", // 失败
|
||||
[1001] = "Nil", // 获取用户全量数据
|
||||
[1002] = "PlayerInfo", // 成功,如果是新账号,会返回player_new_notify协议
|
||||
[1003] = "Error", // 请求失败
|
||||
[1004] = "PlayerReg", // 注册角色
|
||||
[1005] = "Error", // 注册失败 返回错误,反之,成功会调用player_data_succeed_ack
|
||||
[1006] = "PlayerNameEditReq", // 请求修改昵称
|
||||
[1007] = "PlayerNameEditResp", // 请求修改昵称成功
|
||||
[1008] = "Error", // 请求修改昵称失败
|
||||
[1009] = "PlayerHeadIconSetReq", // 请求设置头像
|
||||
[1010] = "Nil", // 设置头像成功
|
||||
[1011] = "Error", // 设置头像失败
|
||||
[1012] = "Ping", // 心跳
|
||||
[1013] = "Pong", // 心跳回馈
|
||||
[1014] = "Error", // 不会返回失败
|
||||
[1015] = "NewbieInfo", // 新手教学,提交教学信息
|
||||
[1016] = "Nil", // 教学步骤记录成功
|
||||
[1017] = "Error", // 教学记录失败
|
||||
[1018] = "Nil", // 获取注销账号数据NotifyUrl
|
||||
[1019] = "PlayerDestroy", // 生成注销回调地址以提交到sdk server
|
||||
[1020] = "Error", // 获取失败
|
||||
[1021] = "PlayerBoardSetReq", // 请求设置看板
|
||||
[1022] = "Nil", // 设置看板成功
|
||||
[1023] = "Error", // 设置看板失败
|
||||
[1024] = "UI32", // 请求领取世界等级奖励
|
||||
[1025] = "ChangeInfo", // 请求领取世界等级奖励成功
|
||||
[1026] = "Error", // 请求领取世界等级奖励失败
|
||||
[1027] = "PlayerSignatureEditReq", // 请求修改签名
|
||||
[1028] = "Nil", // 请求修改签名成功
|
||||
[1029] = "Error", // 请求修改签名失败
|
||||
[1030] = "PlayerTitleEditReq", // 请求修改头衔
|
||||
[1031] = "Nil", // 请求修改头衔成功
|
||||
[1032] = "Error", // 请求修改头衔失败
|
||||
[1033] = "PlayerCharsShowReq", // 请求展示角色
|
||||
[1034] = "Nil", // 请求展示角色成功
|
||||
[1035] = "Error", // 请求展示角色失败
|
||||
[1036] = "PlayerSkinShowReq", // 请求展示皮肤
|
||||
[1037] = "Nil", // 请求展示皮肤成功
|
||||
[1038] = "Error", // 请求展示皮肤失败
|
||||
[1039] = "Nil", // 请求切换性别
|
||||
[1040] = "Nil", // 切换性别成功
|
||||
[1041] = "Error", // 切换性别失败
|
||||
[1042] = "PlayerSurveyReq", // 申请发起调查问卷,填写问卷ID
|
||||
[1043] = "PlayerSurveyResp", // 返回第三方问卷ID和回调通知地址
|
||||
[1044] = "Error", // 申请失败,比如过期,已经完成过
|
||||
[1045] = "Nil", // 退出游戏
|
||||
[1046] = "Nil", // 退出成功
|
||||
[1047] = "Error", // 退出失败
|
||||
[1048] = "PlayerHonorEditReq", // 荣誉称号最新的列表
|
||||
[1049] = "Nil", // 修改成功
|
||||
[1050] = "Error", // 修改失败
|
||||
[1101] = "ItemUseReq", // 道具使用
|
||||
[1102] = "ChangeInfo", // 道具使用成功,返回ChangeInfo
|
||||
[1103] = "Error", // 道具使用失败,返回错误信息
|
||||
[1104] = "UI32", // 传入钻石数量,兑换心相碎片,默认规则(免费钻不够使用付费钻)
|
||||
[1105] = "ChangeInfo", // 兑换成功
|
||||
[1106] = "Error", // 兑换失败
|
||||
[1107] = "ItemProductReq", // 材料合成
|
||||
[1108] = "ChangeInfo", // 材料合成成功
|
||||
[1109] = "Error", // 材料合成失败
|
||||
[1110] = "Nil", // 所有角色溢出碎片兑换
|
||||
[1111] = "ChangeInfo", // 兑换成功
|
||||
[1112] = "Error", // 兑换失败
|
||||
[1113] = "Nil", // 领取商店每日免费赠礼
|
||||
[1114] = "ChangeInfo", // 领取成功
|
||||
[1115] = "Error", // 领取失败
|
||||
[1201] = "Nil", // 请求获取好友/好友申请列表
|
||||
[1202] = "FriendListGetResp", // 获取好友/好友申请列表成功
|
||||
[1203] = "Error", // 获取好友/好友申请列表失败
|
||||
[1204] = "FriendUIdSearchReq", // 请求通过UId搜索用户信息
|
||||
[1205] = "FriendUIdSearchResp", // 通过UId搜索用户信息成功
|
||||
[1206] = "Error", // 通过UId搜索用户信息失败
|
||||
[1207] = "FriendNameSearchReq", // 请求通过用户昵称搜索用户信息
|
||||
[1208] = "FriendNameSearchResp", // 通过用户昵称搜索用户信息成功
|
||||
[1209] = "Error", // 通过用户昵称搜索用户信息失败
|
||||
[1210] = "FriendAddReq", // 请求申请添加好友
|
||||
[1211] = "Nil", // 申请添加好友成功
|
||||
[1212] = "Error", // 申请添加好友失败
|
||||
[1213] = "FriendAddAgreeReq", // 同意添加好友请求
|
||||
[1214] = "FriendAddAgreeResp", // 同意添加好友成功
|
||||
[1215] = "Error", // 同意添加好友失败
|
||||
[1216] = "Nil", // 请求一键添加好友
|
||||
[1217] = "FriendAllAgreeResp", // 一键添加好友成功
|
||||
[1218] = "Error", // 一键添加好友失败
|
||||
[1219] = "FriendDeleteReq", // 请求删除好友
|
||||
[1220] = "Nil", // 删除好友成功
|
||||
[1221] = "Error", // 删除好友失败
|
||||
[1222] = "FriendInvitesDeleteReq", // 请求删除好友申请
|
||||
[1223] = "Nil", // 删除好友申请成功
|
||||
[1224] = "Error", // 删除好友申请失败
|
||||
[1225] = "FriendStarSetReq", // 请求设置星级好友
|
||||
[1226] = "Nil", // 请求设置星级好友成功
|
||||
[1227] = "Error", // 请求设置星级好友失败
|
||||
[1228] = "FriendReceiveEnergyReq", // 请求领取好友赠送体力
|
||||
[1229] = "FriendReceiveEnergyResp", // 请求领取好友赠送体力成功
|
||||
[1230] = "Error", // 请求领取好友赠送体力失败
|
||||
[1231] = "FriendSendEnergyReq", // 请求赠送好友体力
|
||||
[1232] = "FriendSendEnergyResp", // 请求赠送好友体力成功
|
||||
[1233] = "Error", // 请求赠送好友体力失败
|
||||
[1234] = "Nil", // 请求好友推荐列表
|
||||
[1235] = "FriendRecommendationGetResp", // 请求好友推荐列表成功
|
||||
[1236] = "Error", // 请求好友推荐列表失败
|
||||
[1301] = "Nil", // 获取星塔养成详细信息
|
||||
[1302] = "TowerGrowthDetailResp", // 获取成功
|
||||
[1303] = "Error", // 获取信息失败,返回错误
|
||||
[1304] = "UI32", // 传入节点ID,解锁对应的养成节点
|
||||
[1305] = "ChangeInfo", // 解锁成功
|
||||
[1306] = "Error", // 解锁失败,返回错误信息
|
||||
[2001] = "PlayerFormationReq", // 设置编队
|
||||
[2002] = "Nil", // 设置编队成功
|
||||
[2003] = "Error", // 设置编队失败
|
||||
[2104] = "CharEquipmentChangeReq", // 装备穿上/替换/卸下
|
||||
[2105] = "CharEquipmentChangeResp", // 装备穿上/替换/卸下成功
|
||||
[2106] = "Error", // 装备穿上/替换/卸下失败
|
||||
[2301] = "CharUpgradeReq", // 角色升级
|
||||
[2302] = "CharUpgradeResp", // 角色升级成功
|
||||
[2303] = "Error", // 角色升级失败
|
||||
[2304] = "UI32", // 角色进阶,传入角色ID
|
||||
[2305] = "ChangeInfo", // 进阶成功
|
||||
[2306] = "Error", // 进阶失败
|
||||
[2307] = "CharSkillUpgradeReq", // 角色技能升级
|
||||
[2308] = "ChangeInfo", // 升级成功
|
||||
[2309] = "Error", // 升级失败
|
||||
[2313] = "CharAdvanceRewardReceiveReq", // 请求领取角色进阶奖励
|
||||
[2314] = "CharAdvanceRewardReceiveResp", // 请求领取角色进阶奖励成功
|
||||
[2315] = "Error", // 请求领取角色进阶奖励失败
|
||||
[2316] = "CharSkinSetReq", // 设置角色皮肤
|
||||
[2317] = "Nil", // 设置成功
|
||||
[2318] = "Error", // 设置失败
|
||||
[2322] = "CharAffinityQuestRewardReceiveReq", // 请求领取角色好感度任务奖励
|
||||
[2323] = "CharAffinityQuestRewardReceiveResp", // 请求领取角色好感度任务成功
|
||||
[2324] = "Error", // 请求领取角色好感度任务失败
|
||||
[2325] = "UI32", // 传入角色ID,招募角色
|
||||
[2326] = "ChangeInfo", // 招募成功
|
||||
[2327] = "Error", // 招募失败
|
||||
[2328] = "CharAffinityGiftSendReq", // 请求赠送好感度礼物
|
||||
[2329] = "CharAffinityGiftSendResp", // 请求赠送好感度礼物成功
|
||||
[2330] = "Error", // 请求赠送好感度礼物失败
|
||||
[2401] = "CharDatingLandmarkSelectReq", // 选择地点邀约角色
|
||||
[2402] = "CharDatingLandmarkSelectResp", // 选择地点邀约角色成功
|
||||
[2403] = "Error", // 选择地点邀约角色失败
|
||||
[2404] = "CharDatingGiftSendReq", // 请求邀约赠礼
|
||||
[2405] = "CharDatingGiftSendResp", // 请求邀约赠礼成功
|
||||
[2406] = "Error", // 请求邀约赠礼失败
|
||||
[2407] = "CharDatingEventRewardReceiveReq", // 请求领取特殊事件奖励
|
||||
[2408] = "ChangeInfo", // 请求领取特殊事件奖励成功
|
||||
[2409] = "Error", // 请求领取特殊事件奖励失败
|
||||
[3119] = "DiscStrengthenReq", // 星盘强化
|
||||
[3120] = "DiscStrengthenResp", // 星盘强化成功
|
||||
[3121] = "Error", // 星盘强化失败
|
||||
[3122] = "DiscPromoteReq", // 星盘升阶
|
||||
[3123] = "DiscPromoteResp", // 星盘升阶成功
|
||||
[3124] = "Error", // 星盘升阶失败
|
||||
[3125] = "DiscLimitBreakReq", // 星盘突破
|
||||
[3126] = "DiscLimitBreakResp", // 星盘突破成功
|
||||
[3127] = "Error", // 星盘突破失败
|
||||
[3128] = "DiscReadRewardReceiveReq", // 请求领取星盘阅读奖励
|
||||
[3129] = "ChangeInfo", // 请求领取星盘阅读奖励成功
|
||||
[3130] = "Error", // 请求领取星盘阅读奖励失败
|
||||
[3201] = "EquipmentUpgradeReq", // 装备强化
|
||||
[3202] = "EquipmentUpgradeResp", // 装备强化成功
|
||||
[3203] = "Error", // 装备强化失败
|
||||
[3204] = "EquipmentDismantleReq", // 装备分解
|
||||
[3205] = "ChangeInfo", // 装备分解成功
|
||||
[3206] = "Error", // 装备分解失败
|
||||
[3207] = "EquipmentLockUnlockReq", // 装备加解锁
|
||||
[3208] = "EquipmentInfo", // 装备加解锁成功
|
||||
[3209] = "Error", // 装备加解锁失败
|
||||
[3301] = "AgentApplyReq", // 请求派遣委托
|
||||
[3302] = "AgentApplyResp", // 请求派遣委托成功
|
||||
[3303] = "Error", // 请求派遣委托失败
|
||||
[3304] = "AgentGiveUpReq", // 请求放弃派遣委托
|
||||
[3305] = "AgentGiveUpResp", // 请求放弃派遣委托成功
|
||||
[3306] = "Error", // 请求放弃派遣委托失败
|
||||
[3307] = "AgentRewardReceiveReq", // 请求领取派遣委托奖励
|
||||
[3308] = "AgentRewardReceiveResp", // 请求领取派遣委托奖励成功
|
||||
[3309] = "Error", // 请求领取派遣委托奖励失败
|
||||
[4201] = "UI32", // 领取手册任务奖励 value表示任务ID,0表示一键领取
|
||||
[4202] = "TourGuideQuestRewardResp", // 获取成功
|
||||
[4203] = "Error", // 获取失败
|
||||
[4204] = "UI32", // 领取日常任务奖励 value表示任务ID,0表示一键领取
|
||||
[4205] = "ChangeInfo", // 获取成功
|
||||
[4206] = "Error", // 获取失败
|
||||
[4207] = "DictRewardReq", // 领取词条奖励
|
||||
[4208] = "ChangeInfo", // 获取成功
|
||||
[4209] = "Error", // 获取失败
|
||||
[4210] = "UI32", // 领取星塔任务奖励 value表示任务ID,0表示一键领取
|
||||
[4211] = "ChangeInfo", // 获取成功
|
||||
[4212] = "Error", // 获取失败
|
||||
[4213] = "Nil", // 领取日常任务活跃奖励
|
||||
[4214] = "QuestDailyActiveRewardReceiveResp", // 领取日常任务活跃奖励成功
|
||||
[4215] = "Error", // 领取日常任务活跃奖励失败
|
||||
[4216] = "Nil", // 领取任务组奖励
|
||||
[4217] = "TourGuideQuestGroupRewardResp", // 获取成功
|
||||
[4218] = "Error", // 获取失败
|
||||
[4401] = "AchievementRewardReq", // 领取成就奖励
|
||||
[4402] = "ChangeInfo", // 获取成功
|
||||
[4403] = "Error", // 获取失败
|
||||
[4404] = "Nil", // 获取成就数据
|
||||
[4405] = "Achievements", // 获取成功
|
||||
[4406] = "Error", // 获取失败
|
||||
[4501] = "Nil", // 申请无尽塔关卡数据
|
||||
[4502] = "InfinityTowerInfoResp", // 申请无尽塔关卡数据成功
|
||||
[4503] = "Error", // 申请无尽塔关卡数据失败
|
||||
[4504] = "InfinityTowerApplyReq", // 申请进入无尽塔关卡
|
||||
[4505] = "Nil", // 申请进入无尽塔关卡成功
|
||||
[4506] = "Error", // 申请进入无尽塔关卡失败
|
||||
[4507] = "UI32", // 申请结算无尽塔关卡 Value:1胜利,2失败,3退出(1,2重复挑战无需再发申请)
|
||||
[4508] = "InfinityTowerSettleResp", // 申请结算无尽塔成功 非0表示可以继续挑战关卡ID(失败当前关卡ID,成功下一个关卡ID),无需再发申请
|
||||
[4509] = "Error", // 申请结算无尽塔失败
|
||||
[4510] = "Nil", // 请求领取无尽塔每日奖励
|
||||
[4511] = "InfinityTowerDailyRewardReceiveResp", // 请求领取无尽塔每日奖励成功
|
||||
[4512] = "Error", // 请求领取无尽塔每日奖励失败
|
||||
[4513] = "UI32", // 请求领取无尽塔剧情奖励
|
||||
[4514] = "InfinityTowerPlotRewardReceiveResp", // 请求领取无尽塔剧情奖励成功
|
||||
[4515] = "Error", // 请求领取无尽塔剧情奖励失败
|
||||
[4601] = "StarTowerApplyReq", // 申请探索星塔
|
||||
[4602] = "StarTowerApplyResp", // 申请成功返回
|
||||
[4603] = "Error", // 申请失败
|
||||
[4607] = "StarTowerInteractReq", // 星塔交互请求
|
||||
[4608] = "StarTowerInteractResp", // 交互请求成功
|
||||
[4609] = "Error", // 申请失败
|
||||
[4610] = "Nil", // 获取星塔信息,用于重连
|
||||
[4611] = "StarTowerInfo", // 获取星塔信息成功
|
||||
[4612] = "Error", // 获取星塔信息失败
|
||||
[4613] = "Nil", // 放弃星塔
|
||||
[4614] = "StarTowerGiveUpResp", // 放弃星塔成功
|
||||
[4615] = "Error", // 放弃星塔失败
|
||||
[4701] = "StarTowerBuildWhetherSaveReq", // 请求是否保存星塔build
|
||||
[4702] = "StarTowerBuildWhetherSaveResp", // 请求是否保存星塔build返回
|
||||
[4703] = "Error", // 请求是否保存星塔build失败
|
||||
[4704] = "Nil", // 请求星塔build简要信息列表
|
||||
[4705] = "StarTowerBuildBriefListGetResp", // 请求星塔build简要信息列表返回
|
||||
[4706] = "Error", // 请求星塔build简要信息列表失败
|
||||
[4707] = "StarTowerBuildDetailGetReq", // 请求星塔build详细信息列表
|
||||
[4708] = "StarTowerBuildDetailGetResp", // 请求星塔build详细信息列表返回
|
||||
[4709] = "Error", // 请求遗迹build详细信息列表失败
|
||||
[4710] = "StarTowerBuildDeleteReq", // 请求解散星塔build
|
||||
[4711] = "ChangeInfo", // 请求解散星塔build返回
|
||||
[4712] = "Error", // 请求解散星塔build失败
|
||||
[4713] = "StarTowerBuildNameSetReq", // 请求设置星塔build名
|
||||
[4714] = "Nil", // 请求设置星塔build名返回
|
||||
[4715] = "Error", // 请求设置星塔build名失败
|
||||
[4716] = "StarTowerBuildLockUnlockReq", // 请求星塔build加解锁
|
||||
[4717] = "Nil", // 请求星塔build加解锁返回
|
||||
[4718] = "Error", // 请求星塔build加解锁失败
|
||||
[4719] = "StarTowerBuildPreferenceSetReq", // 请求设置星塔build偏好
|
||||
[4720] = "Nil", // 请求设置星塔build偏好返回
|
||||
[4721] = "Error", // 请求设置星塔build偏好失败
|
||||
[4801] = "Nil", // 请求星塔排行榜信息
|
||||
[4802] = "StarTowerRankInfo", // 请求星塔排行榜信息成功
|
||||
[4803] = "Error", // 请求星塔排行信息失败
|
||||
[4804] = "StarTowerRankApplyReq", // 申请探索星塔排行榜
|
||||
[4805] = "StarTowerRankApplyResp", // 申请成功返回
|
||||
[4806] = "Error", // 申请失败
|
||||
[4901] = "Nil", // 请求星塔图鉴角色潜能简要信息
|
||||
[4902] = "StarTowerBookPotentialBriefListResp", // 请求星塔图鉴角色潜能简要信息成功
|
||||
[4903] = "Error", // 请求星塔图鉴角色潜能简要信息失败
|
||||
[4904] = "UI32", // 请求星塔图鉴角色潜能信息
|
||||
[4905] = "StarTowerBookPotentialGetResp", // 请求星塔图鉴角色潜能信息成功
|
||||
[4906] = "Error", // 请求星塔图鉴角色潜能信息失败
|
||||
[4907] = "UI32", // 请求领取星塔图鉴角色潜能奖励
|
||||
[4908] = "StarTowerBookPotentialRewardReceiveResp", // 请求领取星塔图鉴角色潜能奖励成功
|
||||
[4909] = "Error", // 请求领取星塔图鉴角色潜能奖励失败
|
||||
[4910] = "Nil", // 请求星塔图鉴事件信息
|
||||
[4911] = "StarTowerBookEventGetResp", // 请求星塔图鉴事件信息成功
|
||||
[4912] = "Error", // 请求星塔图鉴事件信息失败
|
||||
[4913] = "UI32", // 请求领取星塔图鉴角色潜能奖励
|
||||
[4914] = "StarTowerBookEventRewardReceiveResp", // 请求领取星塔图鉴角色潜能奖励成功
|
||||
[4915] = "Error", // 请求领取星塔图鉴角色潜能奖励失败
|
||||
[5010] = "ResidentShopGetReq", // 请求常驻商店信息
|
||||
[5011] = "ResidentShopGetResp", // 请求常驻商店信息成功
|
||||
[5012] = "Error", // 请求常驻商店信息失败
|
||||
[5013] = "ResidentShopPurchaseReq", // 请求常驻商店购买物品
|
||||
[5014] = "ResidentShopPurchaseResp", // 请求常驻商店购买物品成功
|
||||
[5015] = "Error", // 请求常驻商店购买物品失败
|
||||
[5101] = "Nil", // 获取钻石商城产品列表
|
||||
[5102] = "MallGemList", // 获取成功的列表
|
||||
[5103] = "Error", // 获取失败
|
||||
[5104] = "String", // 下单购买商品
|
||||
[5105] = "OrderInfo", // 下单成功
|
||||
[5106] = "Error", // 下单失败
|
||||
[5107] = "UI64", // 取消某个尚未支付的订单
|
||||
[5108] = "UI64", // 取消成功
|
||||
[5109] = "Error", // 取消失败
|
||||
[5110] = "UI64", // 领取某个支付成功的订单的奖励
|
||||
[5111] = "CollectResp", // 返回成功,请根据具体状态处理
|
||||
[5112] = "CollectResp", // 领取失败
|
||||
[5113] = "Nil", // 获取月卡商城产品列表
|
||||
[5114] = "MallMonthlyCardList", // 获取成功的列表
|
||||
[5115] = "Error", // 获取失败
|
||||
[5116] = "String", // 购买月卡商城商品
|
||||
[5117] = "OrderInfo", // 下单成功
|
||||
[5118] = "Error", // 获取失败
|
||||
[5119] = "Nil", // 获取礼包商城商品列表
|
||||
[5120] = "MallPackageList", // 商品列表
|
||||
[5121] = "Error", // 获取失败
|
||||
[5122] = "String", // 购买礼包商城产品
|
||||
[5123] = "MallPackageOrder", // 购买成功结果
|
||||
[5124] = "Error", // 购买失败
|
||||
[5125] = "Nil", // 获取星尘兑换商城商品列表
|
||||
[5126] = "MallShopProductList", // 商品列表
|
||||
[5127] = "Error", // 获取失败
|
||||
[5128] = "MallShopOrderReq", // 购买星尘兑换商店产品
|
||||
[5129] = "ChangeInfo", // 购买成功结果
|
||||
[5130] = "Error", // 购买失败
|
||||
[6001] = "GachaSpinReq", // 根据卡池ID以及卡池模式在当前卡池抽卡
|
||||
[6002] = "GachaSpinResp", // 成功,返回掉落道具以及ChangeInfo
|
||||
[6003] = "Error", // 错误,返回错误信息
|
||||
[6004] = "Nil", // 获取所有卡池数据
|
||||
[6005] = "GachaInformationResp", // 成功,返回所有的卡池数据
|
||||
[6006] = "Error", // 错误,返回错误信息
|
||||
[6007] = "UI32", // 根据存盘ID获取抽卡的历史记录
|
||||
[6008] = "GachaHistories", // 成功,返回抽卡的历史数据
|
||||
[6009] = "Error", // 错误,返回错误
|
||||
[6101] = "Nil", // 获取已经拥有的命运卡图鉴
|
||||
[6102] = "TowerBookFateCardDetailResp", // 成功,返回已经拥有的命运卡和已经领取的任务
|
||||
[6103] = "Error", // 错误,返回错误信息
|
||||
[6104] = "TowerBookFateCardRewardReq", // 领取命运卡任务奖励
|
||||
[6105] = "ChangeInfo", // 成功,返回任务奖励
|
||||
[6106] = "Error", // 错误,返回错误信息
|
||||
[7013] = "UI32", // 传入剧情ID,领取剧情奖励
|
||||
[7014] = "ChangeInfo", // 领取成功
|
||||
[7015] = "Error", // 领取失败
|
||||
[7016] = "DailyInstanceApplyReq", // 日常副本申请
|
||||
[7017] = "Nil", // 日常副本申请成功
|
||||
[7018] = "Error", // 错误,返回错误信息
|
||||
[7019] = "DailyInstanceSettleReq", // 日常副本结算请求
|
||||
[7020] = "DailyInstanceSettleResp", // 日常副本结算成功
|
||||
[7021] = "Error", // 错误,返回错误信息
|
||||
[7022] = "DailyInstanceRaidReq", // 日常副本扫荡请求
|
||||
[7023] = "DailyInstanceRaidResp", // 日常副本扫荡成功
|
||||
[7024] = "Error", // 错误,返回错误信息
|
||||
[7028] = "DailyEquipmentApplyReq", // 日常装备副本申请
|
||||
[7029] = "Nil", // 日常装备副本申请成功
|
||||
[7030] = "Error", // 错误,返回错误信息
|
||||
[7031] = "DailyEquipmentSettleReq", // 日常装备副本结算请求
|
||||
[7032] = "DailyEquipmentSettleResp", // 日常装备副本结算成功
|
||||
[7033] = "Error", // 错误,返回错误信息
|
||||
[7034] = "DailyEquipmentSweepReq", // 日常装备副本扫荡请求
|
||||
[7035] = "DailyEquipmentSweepResp", // 日常装备副本扫荡成功
|
||||
[7036] = "Error", // 错误,返回错误信息
|
||||
[7101] = "RegionBossLevelApplyReq", // 请求进入地区boss关卡
|
||||
[7102] = "ChangeInfo", // 请求进入地区boss关成功
|
||||
[7103] = "Error", // 请求进入地区boss关卡失败
|
||||
[7104] = "RegionBossLevelSettleReq", // 请求结算地区boss关卡
|
||||
[7105] = "RegionBossLevelSettleResp", // 请求结算地区boss关成功
|
||||
[7106] = "Error", // 请求结算地区boss关卡失败
|
||||
[7107] = "RegionBossLevelSweepReq", // 请求扫荡地区boss关卡
|
||||
[7108] = "RegionBossLevelSweepResp", // 请求扫荡地区boss关成功
|
||||
[7109] = "Error", // 请求结算地区boss关卡失败
|
||||
[7201] = "TravelerDuelLevelApplyReq", // 请求进入旅人对决关卡
|
||||
[7202] = "Nil", // 请求进入旅人对决关卡成功
|
||||
[7203] = "Error", // 请求进入旅人对决关卡失败
|
||||
[7204] = "TravelerDuelLevelSettleReq", // 请求结算旅人对决关卡
|
||||
[7205] = "TravelerDuelLevelSettleResp", // 请求结算旅人对决关卡成功
|
||||
[7206] = "Error", // 请求结算旅人对决关卡失败
|
||||
[7207] = "Nil", // 请求旅人对决信息
|
||||
[7208] = "TravelerDuelInfo", // 请求旅人对决信息成功
|
||||
[7209] = "Error", // 请求旅人对决信息失败
|
||||
[7210] = "TravelerDuelQuestRewardReceiveReq", // 领取旅人对决任务奖励
|
||||
[7211] = "TravelerDuelQuestRewardReceiveResp", // 获取成功
|
||||
[7212] = "Error", // 获取失败
|
||||
[7213] = "Nil", // 请求旅人对决排行榜信息
|
||||
[7214] = "TravelerDuelRankInfo", // 请求旅人对决排行榜信息成功
|
||||
[7215] = "Error", // 请求旅人对决排行信息失败
|
||||
[7216] = "TravelerDuelBattleSamples", // 请求旅人对决上传分数、附带本次战斗统计数据
|
||||
[7217] = "RankChange", // 请求旅人对决上传分数成功
|
||||
[7218] = "Error", // 请求旅人对决上传分数失败
|
||||
[7301] = "StoryApplyReq", // 关卡申请
|
||||
[7302] = "Nil", // 申请成功,返回 Nil
|
||||
[7303] = "Error", // 错误,返回错误信息
|
||||
[7304] = "StorySettleReq", // 关卡结算
|
||||
[7305] = "ChangeInfo", // 结算成功,发放通关奖励
|
||||
[7306] = "Error", // 错误,返回错误信息
|
||||
[8001] = "Nil", // 购买体力请求
|
||||
[8002] = "EnergyBuyResp", // 购买成功,返回当日的购买次数,以及ChangeInfo
|
||||
[8003] = "Error", // 购买失败,返回错误信息
|
||||
[8101] = "Events", // 客户端事件上报
|
||||
[8102] = "Nil", // 客户端事件上报成功
|
||||
[8103] = "Error", // 客户端事件上报失败
|
||||
[8201] = "VampireSurvivorApplyReq", // 灾变防线副本申请
|
||||
[8202] = "VampireSurvivorApplyResp", // 灾变防线副本申请成功
|
||||
[8203] = "Error", // 灾变防线副本申请失败
|
||||
[8204] = "VampireSurvivorAreaChangeReq", // 灾变防线阶段转化
|
||||
[8205] = "Nil", // 灾变防线副本申请成功
|
||||
[8206] = "Error", // 灾变防线副本申请失败
|
||||
[8207] = "VampireSurvivorSettleReq", // 灾变防线副本结算申请 [失败也发这个]
|
||||
[8208] = "VampireSurvivorSettleResp", // 灾变防线副本结算申请成功
|
||||
[8209] = "Error", // 灾变防线副本结算申请失败
|
||||
[8210] = "VampireSurvivorRewardSelectReq", // 灾变防线副本升级申请
|
||||
[8211] = "VampireSurvivorRewardSelectResp", // 灾变防线副本结算申请成功
|
||||
[8212] = "Error", // 灾变防线副本结算申请失败
|
||||
[8213] = "VampireSurvivorRewardChestReq", // 灾变防线开宝箱申请
|
||||
[8214] = "VampireSurvivorRewardChestResp", // 灾变防线开宝箱申请成功
|
||||
[8215] = "Error", // 灾变防线开宝箱申请失败
|
||||
[8216] = "VampireSurvivorQuestRewardReceiveReq", // 灾变防线领取任务奖励申请
|
||||
[8217] = "ChangeInfo", // 灾变防线领取任务奖励成功
|
||||
[8218] = "Error", // 灾变防线领取任务奖励失败
|
||||
[8219] = "Nil", // 请求吸血鬼模式排行榜信息
|
||||
[8220] = "VampireRankInfo", // 请求吸血鬼模式排行榜信息成功
|
||||
[8221] = "Error", // 请求吸血鬼模式排行榜信息失败
|
||||
[8301] = "Nil", // 获取节点信息
|
||||
[8302] = "VampireTalentDetailResp", // 获取节点信息成功
|
||||
[8303] = "Error", // 获取失败,返回错误信息
|
||||
[8304] = "Nil", // 重置所有的天赋节点
|
||||
[8305] = "UI32", // 重置成功,返回最终天赋点数
|
||||
[8306] = "Error", // 重置失败,返回错误信息
|
||||
[8307] = "UI32", // 传入节点ID,解锁对应的养成节点
|
||||
[8308] = "Nil", // 解锁成功
|
||||
[8309] = "Error", // 解锁失败,返回错误信息
|
||||
[9001] = "Nil", // 获取邮件列表
|
||||
[9002] = "Mails", // 邮件列表
|
||||
[9003] = "Error", // 获取失败
|
||||
[9004] = "MailRequest", // 标记邮件已读
|
||||
[9005] = "UI32", // 返回已设置为已读的邮件ID
|
||||
[9006] = "Error", // 设置失败
|
||||
[9007] = "MailRequest", // 领取奖励 一键领取发送0,单独领取发送对应邮件ID上来
|
||||
[9008] = "MailRecvResp", // 领取成功
|
||||
[9009] = "Error", // 领取失败
|
||||
[9010] = "MailRequest", // 删除邮件 一键删除所有已读已领发送0,单独删除发送对应邮件ID上来
|
||||
[9011] = "MailRemoveResp", // 删除成功
|
||||
[9012] = "Error", // 删除失败
|
||||
[9101] = "Nil", // 获取所有的活动数据
|
||||
[9102] = "ActivityResp", // 获取成功
|
||||
[9103] = "Error", // 获取失败
|
||||
[9104] = "ActivityPeriodicRewardReq", // 领取活动奖励
|
||||
[9105] = "ChangeInfo", // 领取成功
|
||||
[9106] = "Error", // 领取失败
|
||||
[9107] = "UI32", // 仪式感,领取当前活动的最终奖励
|
||||
[9108] = "ChangeInfo", // 领取成功
|
||||
[9109] = "Error", // 领取失败
|
||||
[9110] = "UI32", // 领取活动奖励
|
||||
[9111] = "ChangeInfo", // 领取成功
|
||||
[9112] = "Error", // 领取失败
|
||||
[9201] = "Nil", // 获取手机所有联系人的数据
|
||||
[9202] = "PhoneContactsInfoResp", // 获取联系人数据成功
|
||||
[9203] = "Error", // 获取联系人数据
|
||||
[9204] = "PhoneContactsReportReq", // 联系人聊天上报
|
||||
[9205] = "ChangeInfo", // 上报成功
|
||||
[9206] = "Error", // 上报失败
|
||||
[9301] = "UI32", // 传入天赋ID,解锁相关天赋
|
||||
[9302] = "TalentUnlockResp", // 解锁成功
|
||||
[9303] = "Error", // 解锁失败,返回错误信息
|
||||
[9304] = "TalentResetReq", // 传入角色ID,重置角色所有天赋
|
||||
[9305] = "ChangeInfo", // 重置成功
|
||||
[9306] = "Error", // 重置失败,返回错误信息
|
||||
[9307] = "UI32", // 天赋普通节点ID
|
||||
[9308] = "TalentNodeResetResp", // 重置成功
|
||||
[9309] = "Error", // 重置失败,返回错误信息
|
||||
[9801] = "Nil", // 获取当前战令信息
|
||||
[9802] = "BattlePassInfo", // 战令信息
|
||||
[9803] = "Error", // 获取失败
|
||||
[9804] = "BattlePassRewardReceiveReq", // 领取战令奖励,传入战令等级和版本,全部领等级取传0
|
||||
[9805] = "BattlePassRewardReceiveResp", // 领取战令奖励成功
|
||||
[9806] = "Error", // 领取战令奖励失败
|
||||
[9807] = "UI32V", // 战令等级购买,传入需要购买的级数和版本
|
||||
[9808] = "BattlePassLevelBuyResp", // 购买成功
|
||||
[9809] = "Error", // 购买成功
|
||||
[9810] = "BattlePassOrderReq", // 战令进阶下单
|
||||
[9811] = "OrderInfo", // 战令进阶下单成功
|
||||
[9812] = "Error", // 领取失败
|
||||
[9813] = "UI64", // 战令进阶订单收取
|
||||
[9814] = "BattlePassOrderCollectResp", // 返回成功,请根据具体状态处理
|
||||
[9815] = "CollectResp", // 战令进阶失败
|
||||
[9816] = "UI32", // 战令任务一键领取 value表示任务ID,0表示一键领取
|
||||
[9817] = "BattlePassQuestRewardResp", // 获取成功
|
||||
[9818] = "Error", // 获取失败
|
||||
[9901] = "String", // 兑换码兑换
|
||||
[9902] = "RedeemCodeResp", // 兑换成功,返回兑换后德道具以及ChangeInfo
|
||||
[9903] = "Error", // 兑换失败,返回错误信息
|
||||
[10000] = "Error", // 系统级失败,主要用于http模式下,强制失败返回
|
||||
[10001] = "Nil", // 新用户
|
||||
[10002] = "MailState", // 邮件状态变更
|
||||
[10003] = "Error", // 在其他地方登录
|
||||
[10004] = "Error", // token过期
|
||||
[10005] = "Error", // 用户被ban
|
||||
[10006] = "Quest", // 任务进度变更
|
||||
[10007] = "ChangeInfo", // 星塔排行榜门票
|
||||
[10008] = "NewAgent", // 每周刷新新委托ID列表
|
||||
[10009] = "WorldClassUpdate", // 世界等级变化
|
||||
[10010] = "FriendEnergyState", // 好友赠送体力状态变更
|
||||
[10011] = "SigninRewardUpdate", // 登陆奖励更新
|
||||
[10012] = "FriendState", // 好友状态变更
|
||||
[10013] = "UI64", // 订单已完成支付通知,可以发起领取
|
||||
[10014] = "ChangeInfo", // 订单道具被撤回,主要用于恶意退款
|
||||
[10015] = "StarTowerBookPotentialChange", // 星塔潜能图鉴状态变更
|
||||
[10016] = "StarTowerBookEventChange", // 星塔潜能图鉴状态变更
|
||||
[10017] = "BattlePassState", // 战令状态变更
|
||||
[10018] = "WorldClassRewardState", // 世界等级奖励状态变更
|
||||
[10019] = "CharAdvanceRewardState", // 角色进阶奖励状态变更
|
||||
[10020] = "Achievement", // 成就进度变更
|
||||
[10021] = "AchievementState", // 成就待领取红点提示
|
||||
[10022] = "Skin", // 角色获得新皮肤,如果是重复获取,将发送转换数据
|
||||
[10023] = "SkinChange", // 角色装备的皮肤发生改变
|
||||
[10024] = "HandbookInfo", // 图鉴数据发生变化
|
||||
[10025] = "MonthlyCardRewards", // 月卡奖励通知
|
||||
[10026] = "QuestState", // 任务红点奖励notify
|
||||
[10027] = "MallPackageState", // 礼包商城免费商品红点notify
|
||||
[10028] = "Dictionary", // 字典数据变更
|
||||
[10029] = "Activity", // 活动数据变化
|
||||
[10030] = "ActivityQuest", // 活动任务数据变化
|
||||
[10031] = "CharAffinityRewardState", // 角色好感度奖励最终值
|
||||
[10032] = "Nil", // 道具超发进邮件
|
||||
[10033] = "InfinityTowerRewards", // 无尽塔是否有奖励可领最终值
|
||||
[10034] = "UI32", // 手机新聊天变化
|
||||
[10035] = "ChangeInfo", // 角色碎片溢出
|
||||
[10036] = "ActivityLogin", // 七日登录活动通知
|
||||
[10037] = "TowerBookFateCardCollectNotify", // 新获得的命运卡数据
|
||||
[10038] = "TowerBookFateCardRewardChangeNotify", // 命运卡图鉴奖励变化
|
||||
[10039] = "ChangeInfo", // 区域boss挑战模式门票变更通知最终值
|
||||
[10040] = "HonorChangeNotify", // 荣誉称号变更通知(最终值,多个Notify以最后一个为准)
|
||||
};
|
||||
|
||||
private readonly Dictionary<NetMsgId, MethodInfo> handlers = [];
|
||||
private readonly Dictionary<Type, object?> handlerInstances = [];
|
||||
|
||||
public ProtocolHandlerFactory()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void RegisterInstance(Type t, object? inst)
|
||||
{
|
||||
handlerInstances.Add(t, inst);
|
||||
|
||||
foreach (var method in t.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).Where(x => x.GetCustomAttribute<ProtocolHandlerAttribute>() is not null))
|
||||
{
|
||||
var attr = method.GetCustomAttribute<ProtocolHandlerAttribute>()!;
|
||||
if (handlers.ContainsKey(attr.NetMsgId))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
handlers.Add(attr.NetMsgId, method);
|
||||
Log.Information($"Loaded {method.Name} for {attr.NetMsgId}");
|
||||
}
|
||||
}
|
||||
|
||||
public object? Invoke(NetMsgId msgId, IMessage? req)
|
||||
{
|
||||
var handler = GetProtocolHandler(msgId);
|
||||
if (handler is null)
|
||||
return null;
|
||||
|
||||
handlerInstances.TryGetValue(handler.DeclaringType!, out var inst);
|
||||
return handler.Invoke(inst, [req]);
|
||||
}
|
||||
|
||||
public MethodInfo? GetProtocolHandler(NetMsgId msgId)
|
||||
{
|
||||
handlers.TryGetValue(msgId, out var handler);
|
||||
|
||||
return handler;
|
||||
}
|
||||
|
||||
public Type? GetRequestPacketTypeByProtocol(NetMsgId msgId)
|
||||
{
|
||||
string msgIdClassName = ProtocolHandlerFactory.NetMsgIdToNameMappings[(short)msgId];
|
||||
|
||||
Type packetClassType = Assembly.GetAssembly(typeof(LoginReq))!.GetTypes().Where(x => x.Name == msgIdClassName).SingleOrDefault();
|
||||
|
||||
return packetClassType;
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class ProtocolHandlerBase : IHostedService
|
||||
{
|
||||
private IProtocolHandlerFactory protocolHandlerFactory;
|
||||
|
||||
public ProtocolHandlerBase(IProtocolHandlerFactory _protocolHandlerFactory)
|
||||
{
|
||||
protocolHandlerFactory = _protocolHandlerFactory;
|
||||
}
|
||||
|
||||
public Task StartAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
protocolHandlerFactory.RegisterInstance(GetType(), this);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task StopAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
|
||||
internal static class ServiceExtensions
|
||||
{
|
||||
public static void AddProtocolHandlerFactory(this IServiceCollection services)
|
||||
{
|
||||
services.AddSingleton<IProtocolHandlerFactory, ProtocolHandlerFactory>();
|
||||
}
|
||||
|
||||
public static void AddProtocolHandlerGroup<T>(this IServiceCollection services) where T : ProtocolHandlerBase
|
||||
{
|
||||
services.AddHostedService<T>();
|
||||
}
|
||||
|
||||
public static void AddProtocolHandlerGroupByType(this IServiceCollection services, Type type)
|
||||
{
|
||||
services.AddTransient(typeof(IHostedService), type);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,7 @@ using System.IO;
|
||||
using NSec.Cryptography;
|
||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||
using Novaria.SDKServer.Controllers.Api;
|
||||
using Novaria.SDKServer.Controllers.Api.ProtocolHandlers;
|
||||
|
||||
namespace Novaria.SDKServer
|
||||
{
|
||||
@@ -107,33 +108,42 @@ namespace Novaria.SDKServer
|
||||
//Utils.PrintByteArray(Encoding.ASCII.GetBytes("Di9OhjFgkabvOO26XfjOzQ4/IcQ6yaFuK23tE2yw9Q7yYs5B53Zffs1e4DygW4IFgCFBtDKwAJtddxYmPfnjCfpCGk5UOAdLCH1/0NLHf+tl/Qc4GuG7jaK0Lcs75gHcSmRUkA"));
|
||||
//return;
|
||||
|
||||
byte[] firstReq = new byte[] { 90, 118, 89, 105, 76, 78, 54, 66, 118, 90, 97, 118, 69, 106, 227, 29, 185, 133, 2, 13, 102, 246, 198, 128, 110, 183, 97, 177, 211, 238, 130, 14, 32, 18, 36, 207, 124, 183, 86, 150, 155, 206, 31, 224, 74, 248, 142, 124, 168, 12, 179, 96, 157, 140, 21, 1, 223, 64, 54, 118, 137, 202, 12, 11, 229, 151, 82, 48, 229, 8, 170, 35, 236, 196, 247, 249, 235, 178, 227, 252, 146, 54, 17, 205, 93, 175, 7, 196, 123, 136, 204, 154, 60, 33, 179, 87, 206, 138, 76, 87, 64, 109, 147, 254, 148, 70, 26, 195, 231, 190, 186, 118, 218, 247, 13, 63, 240, 89, 41, 17, 56, 151, 5, 211, 4 };
|
||||
|
||||
Packet requestPacket = GatewayController.ParseRequest(firstReq);
|
||||
Console.WriteLine("---");
|
||||
Utils.PrintByteArray(requestPacket.msgBody);
|
||||
Console.WriteLine("---");
|
||||
Log.Information("Sucessfully parsed request packet, id: " + requestPacket.msgId);
|
||||
LoginReq loginreq = GatewayController.DecodePacket<LoginReq>(requestPacket);
|
||||
//DiffieHellman diffieHellman = new DiffieHellman();
|
||||
//AeadTool.CLIENT_PUBLIC_KEY = new byte[] { 151, 9, 53, 80, 250, 198, 4, 44, 108, 79, 114, 12, 63, 205, 144, 209, 138, 249, 76, 59, 211, 197, 174, 161, 78, 160, 16, 207, 169, 191, 75, 62, 211, 60, 248, 150, 194, 187, 98, 205, 240, 94, 229, 220, 213, 80, 209, 248, 240, 233, 81, 202, 102, 219, 205, 218, 235, 231, 180, 151, 148, 128, 206, 225, 244, 53, 207, 81, 136, 29, 113, 12, 51, 35, 193, 207, 174, 213, 19, 223, 29, 97, 200, 115, 243, 241, 88, 200, 255, 172, 225, 108, 132, 68, 150, 36 };
|
||||
//byte[] calculatedKey = diffieHellman.CalculateSharedSecret(AeadTool.CLIENT_PUBLIC_KEY);
|
||||
|
||||
Log.Information("login_req received, contents: " + JsonSerializer.Serialize(loginreq));
|
||||
//Console.WriteLine("CALCULATED KEY: ");
|
||||
//Utils.PrintByteArray(calculatedKey);
|
||||
|
||||
Log.Information("Building login resp...");
|
||||
//return;
|
||||
//byte[] firstReq = new byte[] { 90, 118, 89, 105, 76, 78, 54, 66, 118, 90, 97, 118, 69, 106, 227, 29, 185, 133, 2, 13, 102, 246, 198, 128, 110, 183, 97, 177, 211, 238, 130, 14, 32, 18, 36, 207, 124, 183, 86, 150, 155, 206, 31, 224, 74, 248, 142, 124, 168, 12, 179, 96, 157, 140, 21, 1, 223, 64, 54, 118, 137, 202, 12, 11, 229, 151, 82, 48, 229, 8, 170, 35, 236, 196, 247, 249, 235, 178, 227, 252, 146, 54, 17, 205, 93, 175, 7, 196, 123, 136, 204, 154, 60, 33, 179, 87, 206, 138, 76, 87, 64, 109, 147, 254, 148, 70, 26, 195, 231, 190, 186, 118, 218, 247, 13, 63, 240, 89, 41, 17, 56, 151, 5, 211, 4 };
|
||||
|
||||
LoginResp loginResp = new LoginResp()
|
||||
{
|
||||
Token = "seggstoken",
|
||||
};
|
||||
//Packet requestPacket = GatewayController.ParseRequest(firstReq);
|
||||
//Console.WriteLine("---");
|
||||
//Utils.PrintByteArray(requestPacket.msgBody);
|
||||
//Console.WriteLine("---");
|
||||
//Log.Information("Sucessfully parsed request packet, id: " + requestPacket.msgId);
|
||||
//LoginReq loginreq = GatewayController.DecodePacket<LoginReq>(requestPacket);
|
||||
|
||||
Packet responsePacket = new Packet()
|
||||
{
|
||||
msgId = 5,
|
||||
msgBody = loginResp.ToByteArray()
|
||||
};
|
||||
//Log.Information("login_req received, contents: " + JsonSerializer.Serialize(loginreq));
|
||||
|
||||
byte[] responsePackeBytes = GatewayController.BuildResponse(requestPacket);
|
||||
//Log.Information("Building login resp...");
|
||||
|
||||
Utils.PrintByteArray(responsePackeBytes);
|
||||
//LoginResp loginResp = new LoginResp()
|
||||
//{
|
||||
// Token = "seggstoken",
|
||||
//};
|
||||
|
||||
//Packet responsePacket = new Packet()
|
||||
//{
|
||||
// msgId = 5,
|
||||
// msgBody = loginResp.ToByteArray()
|
||||
//};
|
||||
|
||||
//byte[] responsePackeBytes = GatewayController.BuildResponse(requestPacket);
|
||||
|
||||
//Utils.PrintByteArray(responsePackeBytes);
|
||||
//return;
|
||||
Log.Information("Starting SDK Server...");
|
||||
try
|
||||
@@ -146,8 +156,19 @@ namespace Novaria.SDKServer
|
||||
builder.Host.UseSerilog();
|
||||
|
||||
builder.Services.AddControllers();
|
||||
builder.Services.AddProtocolHandlerFactory();
|
||||
builder.Services.AddControllers().AddApplicationPart(Assembly.GetAssembly(typeof(SDKServer)));
|
||||
|
||||
// Add all Handler Groups
|
||||
var handlerGroups = Assembly.GetAssembly(typeof(ProtocolHandlerFactory))
|
||||
.GetTypes()
|
||||
.Where(t => t.IsSubclassOf(typeof(ProtocolHandlerBase)));
|
||||
|
||||
foreach (var handlerGroup in handlerGroups)
|
||||
{
|
||||
builder.Services.AddProtocolHandlerGroupByType(handlerGroup);
|
||||
}
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
app.UseAuthorization();
|
||||
|
||||
Reference in New Issue
Block a user