fix: auto-resize for receive buffer in NetworkEntity. Increase initial disc amount to 500

This commit is contained in:
xeon 2025-05-29 13:23:11 +03:00
parent 0834fe0653
commit e703a725af
6 changed files with 641 additions and 452 deletions

View file

@ -1,19 +1,22 @@
// This file is @generated by prost-build.
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Transform {
#[prost(double, repeated, tag = "1")]
pub position: ::prost::alloc::vec::Vec<f64>,
#[prost(double, repeated, tag = "2")]
pub rotation: ::prost::alloc::vec::Vec<f64>,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Vector2Int {
#[prost(int32, tag = "1")]
pub x: i32,
#[prost(int32, tag = "2")]
pub y: i32,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct HollowGridState {
#[prost(int32, tag = "1")]
pub node_state: i32,
@ -24,7 +27,8 @@ pub struct HollowGridState {
#[prost(int32, tag = "4")]
pub sub_state: i32,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LogSkillUseInfo {
#[prost(int32, tag = "1")]
pub skill_id: i32,
@ -39,7 +43,8 @@ pub struct LogSkillUseInfo {
#[prost(string, tag = "6")]
pub skill_name: ::prost::alloc::string::String,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LogBattleAvatarInfo {
#[prost(int32, tag = "1")]
pub avatar_id: i32,
@ -68,7 +73,8 @@ pub struct LogBattleAvatarInfo {
#[prost(message, repeated, tag = "14")]
pub skill_use: ::prost::alloc::vec::Vec<LogSkillUseInfo>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LogBattleStatistics {
#[prost(int64, tag = "1")]
pub battle_uid: i64,
@ -87,7 +93,8 @@ pub struct LogBattleStatistics {
#[prost(int32, tag = "11")]
pub star: i32,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FightResult {
#[prost(int32, tag = "1")]
pub result: i32,
@ -185,7 +192,9 @@ impl HollowGridFlag {
Self::SyncToClient => "HOLLOW_GRID_FLAG_SYNC_TO_CLIENT",
Self::Door => "HOLLOW_GRID_FLAG_DOOR",
Self::CanTriggerMultiTimes => "HOLLOW_GRID_FLAG_CAN_TRIGGER_MULTI_TIMES",
Self::TemporaryVisibleAtAround => "HOLLOW_GRID_FLAG_TEMPORARY_VISIBLE_AT_AROUND",
Self::TemporaryVisibleAtAround => {
"HOLLOW_GRID_FLAG_TEMPORARY_VISIBLE_AT_AROUND"
}
Self::Unlocked => "HOLLOW_GRID_FLAG_UNLOCKED",
Self::Brighten => "HOLLOW_GRID_FLAG_BRIGHTEN",
Self::Guide => "HOLLOW_GRID_FLAG_GUIDE",
@ -213,11 +222,17 @@ impl HollowGridFlag {
"HOLLOW_GRID_FLAG_CAN_TRIGGER_EVENT" => Some(Self::CanTriggerEvent),
"HOLLOW_GRID_FLAG_VISIBLE" => Some(Self::Visible),
"HOLLOW_GRID_FLAG_VISIBLE_AT_GRID_AROUND" => Some(Self::VisibleAtGridAround),
"HOLLOW_GRID_FLAG_VISIBLE_BY_TRIGGER_EVENT" => Some(Self::VisibleByTriggerEvent),
"HOLLOW_GRID_FLAG_VISIBLE_BY_TRIGGER_EVENT" => {
Some(Self::VisibleByTriggerEvent)
}
"HOLLOW_GRID_FLAG_SYNC_TO_CLIENT" => Some(Self::SyncToClient),
"HOLLOW_GRID_FLAG_DOOR" => Some(Self::Door),
"HOLLOW_GRID_FLAG_CAN_TRIGGER_MULTI_TIMES" => Some(Self::CanTriggerMultiTimes),
"HOLLOW_GRID_FLAG_TEMPORARY_VISIBLE_AT_AROUND" => Some(Self::TemporaryVisibleAtAround),
"HOLLOW_GRID_FLAG_CAN_TRIGGER_MULTI_TIMES" => {
Some(Self::CanTriggerMultiTimes)
}
"HOLLOW_GRID_FLAG_TEMPORARY_VISIBLE_AT_AROUND" => {
Some(Self::TemporaryVisibleAtAround)
}
"HOLLOW_GRID_FLAG_UNLOCKED" => Some(Self::Unlocked),
"HOLLOW_GRID_FLAG_BRIGHTEN" => Some(Self::Brighten),
"HOLLOW_GRID_FLAG_GUIDE" => Some(Self::Guide),
@ -329,7 +344,9 @@ impl NodeVisible {
"NODE_VISIBLE_VISIBLE" => Some(Self::Visible),
"NODE_VISIBLE_VISIBLE_AT_GRID_AROUND" => Some(Self::VisibleAtGridAround),
"NODE_VISIBLE_VISIBLE_BY_TRIGGER_EVENT" => Some(Self::VisibleByTriggerEvent),
"NODE_VISIBLE_TEMPORARY_VISIBLE_AT_AROUND" => Some(Self::TemporaryVisibleAtAround),
"NODE_VISIBLE_TEMPORARY_VISIBLE_AT_AROUND" => {
Some(Self::TemporaryVisibleAtAround)
}
"NODE_VISIBLE_BLOCKED" => Some(Self::Blocked),
_ => None,
}

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,6 @@
// This file is @generated by prost-build.
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PlayerData {
#[prost(message, optional, tag = "1")]
pub basic: ::core::option::Option<BasicData>,
@ -28,7 +29,8 @@ pub struct PlayerData {
#[prost(message, optional, tag = "13")]
pub map: ::core::option::Option<MapData>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BasicData {
#[prost(string, tag = "1")]
pub nick_name: ::prost::alloc::string::String,
@ -49,12 +51,14 @@ pub struct BasicData {
#[prost(uint32, tag = "9")]
pub portrait_id: u32,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AvatarData {
#[prost(message, repeated, tag = "1")]
pub avatar_list: ::prost::alloc::vec::Vec<AvatarItemInfo>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AvatarItemInfo {
#[prost(uint32, tag = "1")]
pub id: u32,
@ -87,7 +91,8 @@ pub struct AvatarItemInfo {
#[prost(bool, tag = "15")]
pub is_favorite: bool,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ItemData {
#[prost(message, repeated, tag = "1")]
pub item_list: ::prost::alloc::vec::Vec<GenericItemInfo>,
@ -100,14 +105,16 @@ pub struct ItemData {
#[prost(uint32, tag = "5")]
pub item_uid_counter: u32,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GenericItemInfo {
#[prost(uint32, tag = "1")]
pub id: u32,
#[prost(int32, tag = "2")]
pub count: i32,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct WeaponItemInfo {
#[prost(uint32, tag = "1")]
pub uid: u32,
@ -124,7 +131,8 @@ pub struct WeaponItemInfo {
#[prost(bool, tag = "7")]
pub lock: bool,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct EquipPropertyInfo {
#[prost(uint32, tag = "1")]
pub property_type: u32,
@ -133,7 +141,8 @@ pub struct EquipPropertyInfo {
#[prost(uint32, tag = "3")]
pub add_value: u32,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EquipItemInfo {
#[prost(uint32, tag = "1")]
pub uid: u32,
@ -152,24 +161,28 @@ pub struct EquipItemInfo {
#[prost(message, repeated, tag = "8")]
pub sub_properties: ::prost::alloc::vec::Vec<EquipPropertyInfo>,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AutoRecoveryItemInfo {
#[prost(uint32, tag = "1")]
pub buy_times: u32,
#[prost(int64, tag = "2")]
pub last_recovery_timestamp: i64,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QuestData {
#[prost(message, repeated, tag = "1")]
pub quest_collection_list: ::prost::alloc::vec::Vec<QuestCollectionInfo>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MainCityQuestInfo {
#[prost(uint32, repeated, tag = "1")]
pub track_npc_id_list: ::prost::alloc::vec::Vec<u32>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QuestInfo {
#[prost(uint32, tag = "1")]
pub id: u32,
@ -186,7 +199,8 @@ pub struct QuestInfo {
#[prost(message, optional, tag = "7")]
pub main_city_quest_info: ::core::option::Option<MainCityQuestInfo>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QuestCollectionInfo {
#[prost(uint32, tag = "1")]
pub quest_type: u32,
@ -195,21 +209,24 @@ pub struct QuestCollectionInfo {
#[prost(uint32, repeated, tag = "3")]
pub finish_quest_id_list: ::prost::alloc::vec::Vec<u32>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ArchiveData {
#[prost(uint32, repeated, tag = "1")]
pub hollow_archive_id_list: ::prost::alloc::vec::Vec<u32>,
#[prost(message, repeated, tag = "2")]
pub videotape_list: ::prost::alloc::vec::Vec<VideotapeInfo>,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct VideotapeInfo {
#[prost(uint32, tag = "1")]
pub archive_file_id: u32,
#[prost(bool, tag = "2")]
pub finished: bool,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HollowData {
#[prost(uint32, repeated, tag = "1")]
pub hollow_group_list: ::prost::alloc::vec::Vec<u32>,
@ -224,7 +241,8 @@ pub struct HollowData {
#[prost(uint32, repeated, tag = "6")]
pub executed_hollow_event_id_list: ::prost::alloc::vec::Vec<u32>,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct HollowInfo {
#[prost(uint32, tag = "1")]
pub hollow_quest_id: u32,
@ -233,14 +251,17 @@ pub struct HollowInfo {
#[prost(uint32, tag = "3")]
pub acquired_hollow_challenge_reward: u32,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AbyssData {}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BuddyData {
#[prost(message, repeated, tag = "1")]
pub buddy_list: ::prost::alloc::vec::Vec<BuddyItemInfo>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BuddyItemInfo {
#[prost(uint32, tag = "1")]
pub id: u32,
@ -259,7 +280,8 @@ pub struct BuddyItemInfo {
#[prost(uint32, repeated, tag = "8")]
pub taken_rank_up_reward_list: ::prost::alloc::vec::Vec<u32>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MiscData {
#[prost(message, optional, tag = "1")]
pub switch: ::core::option::Option<SwitchData>,
@ -278,14 +300,16 @@ pub struct MiscData {
#[prost(message, optional, tag = "8")]
pub player_accessory: ::core::option::Option<PlayerAccessoryData>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PlayerSkinInfo {
#[prost(uint32, tag = "1")]
pub player_skin_id: u32,
#[prost(uint32, repeated, tag = "2")]
pub equipped_accessory_id_list: ::prost::alloc::vec::Vec<u32>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PlayerAccessoryInfo {
#[prost(uint32, tag = "1")]
pub avatar_id: u32,
@ -294,24 +318,28 @@ pub struct PlayerAccessoryInfo {
#[prost(message, repeated, tag = "3")]
pub player_skin_list: ::prost::alloc::vec::Vec<PlayerSkinInfo>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PlayerAccessoryData {
#[prost(message, repeated, tag = "1")]
pub player_accessory_list: ::prost::alloc::vec::Vec<PlayerAccessoryInfo>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BusinessCardData {
#[prost(uint32, repeated, tag = "1")]
pub unlocked_id_list: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, tag = "2")]
pub selected_id: u32,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InputSettingInfo {
#[prost(map = "uint32, int32", tag = "1")]
pub input_type_map: ::std::collections::HashMap<u32, i32>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SwitchData {
#[prost(uint32, repeated, tag = "1")]
pub open_system_id_list: ::prost::alloc::vec::Vec<u32>,
@ -322,7 +350,8 @@ pub struct SwitchData {
#[prost(map = "uint32, message", tag = "4")]
pub input_setting_map: ::std::collections::HashMap<u32, InputSettingInfo>,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct QuickAccessItem {
#[prost(uint32, tag = "1")]
pub quick_access_id: u32,
@ -331,19 +360,22 @@ pub struct QuickAccessItem {
#[prost(int32, tag = "3")]
pub quick_access_type: i32,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnlockData {
#[prost(int32, repeated, tag = "1")]
pub unlocked_id_list: ::prost::alloc::vec::Vec<i32>,
#[prost(message, repeated, tag = "2")]
pub quick_access_list: ::prost::alloc::vec::Vec<QuickAccessItem>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NewbieData {
#[prost(int32, repeated, tag = "1")]
pub finished_group_id_list: ::prost::alloc::vec::Vec<i32>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NewsStandData {
#[prost(int32, tag = "1")]
pub cur_style: i32,
@ -366,14 +398,16 @@ pub struct NewsStandData {
#[prost(int64, tag = "10")]
pub last_sign_time: i64,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PostGirlItem {
#[prost(uint32, tag = "1")]
pub id: u32,
#[prost(int64, tag = "2")]
pub unlock_time: i64,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PostGirlData {
#[prost(message, repeated, tag = "1")]
pub post_girl_item_list: ::prost::alloc::vec::Vec<PostGirlItem>,
@ -382,12 +416,14 @@ pub struct PostGirlData {
#[prost(bool, tag = "3")]
pub post_girl_random_toggle: bool,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TeleportUnlockData {
#[prost(int32, repeated, tag = "1")]
pub unlocked_id_list: ::prost::alloc::vec::Vec<i32>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MainCityData {
#[prost(uint32, tag = "3")]
pub bgm_id: u32,
@ -410,7 +446,8 @@ pub mod main_city_data {
TransformId(::prost::alloc::string::String),
}
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SceneData {
#[prost(uint64, tag = "1")]
pub cur_scene_uid: u64,
@ -421,7 +458,8 @@ pub struct SceneData {
#[prost(map = "uint64, message", tag = "4")]
pub dungeons: ::std::collections::HashMap<u64, DungeonInfo>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SceneInfo {
#[prost(uint32, tag = "1")]
pub id: u32,
@ -450,7 +488,8 @@ pub mod scene_info {
LongFight(super::LongFightSceneInfo),
}
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HallSceneInfo {
#[prost(uint32, tag = "1")]
pub cur_section_id: u32,
@ -459,7 +498,8 @@ pub struct HallSceneInfo {
#[prost(map = "int32, int32", tag = "3")]
pub main_city_objects_state: ::std::collections::HashMap<i32, i32>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnitInteract {
#[prost(int32, tag = "1")]
pub tag_id: i32,
@ -480,7 +520,8 @@ pub struct UnitInteract {
#[prost(int32, repeated, tag = "9")]
pub interact_target_list: ::prost::alloc::vec::Vec<i32>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HallSceneUnit {
#[prost(uint32, tag = "1")]
pub npc_tag_id: u32,
@ -489,14 +530,16 @@ pub struct HallSceneUnit {
#[prost(map = "uint32, message", tag = "3")]
pub interacts: ::std::collections::HashMap<u32, UnitInteract>,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AttachedGraphInfo {
#[prost(uint32, tag = "1")]
pub reference_id: u32,
#[prost(enumeration = "GraphReferenceType", tag = "2")]
pub reference_type: i32,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EventStateInfo {
#[prost(uint64, tag = "1")]
pub event_uid: u64,
@ -513,7 +556,8 @@ pub struct EventStateInfo {
#[prost(uint32, tag = "7")]
pub tag: u32,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HallSectionInfo {
#[prost(uint32, tag = "1")]
pub section_id: u32,
@ -526,30 +570,35 @@ pub struct HallSectionInfo {
#[prost(uint64, repeated, tag = "5")]
pub already_executed_event_uid_list: ::prost::alloc::vec::Vec<u64>,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct HollowSceneInfo {}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FightSceneInfo {
#[prost(string, tag = "1")]
pub time_period: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub weather: ::prost::alloc::string::String,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LongFightSceneInfo {
#[prost(string, tag = "1")]
pub time_period: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub weather: ::prost::alloc::string::String,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DungeonInfo {
#[prost(uint32, tag = "1")]
pub quest_id: u32,
#[prost(uint32, tag = "2")]
pub quest_type: u32,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GachaStatisticsInfo {
#[prost(uint32, tag = "1")]
pub gacha_id: u32,
@ -564,14 +613,16 @@ pub struct GachaStatisticsInfo {
#[prost(bool, tag = "6")]
pub optional_up_item_state: bool,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GachaData {
#[prost(message, repeated, tag = "1")]
pub gacha_statistics_list: ::prost::alloc::vec::Vec<GachaStatisticsInfo>,
#[prost(uint32, tag = "2")]
pub gacha_random: u32,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MapAreaGroupInfo {
#[prost(uint32, tag = "1")]
pub group_id: u32,
@ -580,7 +631,8 @@ pub struct MapAreaGroupInfo {
#[prost(uint32, tag = "3")]
pub area_progress: u32,
}
#[derive(::proto_derive::NetCmd, Clone, Copy, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MapAreaStreetInfo {
#[prost(uint32, tag = "1")]
pub area_id: u32,
@ -595,7 +647,8 @@ pub struct MapAreaStreetInfo {
#[prost(bool, tag = "6")]
pub new_area_portals_showed: bool,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MapData {
#[prost(message, repeated, tag = "1")]
pub area_group_list: ::prost::alloc::vec::Vec<MapAreaGroupInfo>,
@ -653,7 +706,8 @@ pub struct PlayerGetDataRsp {
#[prost(message, optional, tag = "2")]
pub player_data: ::core::option::Option<PlayerData>,
}
#[derive(::proto_derive::NetCmd, Clone, PartialEq, ::prost::Message)]
#[derive(::proto_derive::NetCmd)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NetCommand {
#[prost(uint32, tag = "1")]
pub cmd_id: u32,
@ -700,4 +754,4 @@ pub struct StopPlayerLogicReq {
pub struct StopPlayerLogicRsp {
#[prost(int32, tag = "1")]
pub retcode: i32,
}
}

View file

@ -96,6 +96,8 @@ impl NetworkEntity {
listener: Arc<dyn NetworkEventListener>,
encryption_state: Arc<EncryptionState>,
) {
const MAX_PACKET_SIZE: usize = 0x100000;
let mut receive_buffer = vec![0u8; 16384];
let mut recv_index = 0;
@ -117,7 +119,18 @@ impl NetworkEntity {
encryption_state.xor(&mut packet.body);
listener.on_receive(id, packet);
}
Err(DecodeError::Incomplete(_, _)) => break Ok(()),
Err(DecodeError::Incomplete(required, _)) => {
if required > receive_buffer.len() {
if required > MAX_PACKET_SIZE {
error!("too big packet received, size: {required}");
break Err(());
}
receive_buffer.resize(required, 0);
}
break Ok(());
},
Err(err) => {
error!("failed to decode incoming packet: {err}");
break Err(());

View file

@ -1,10 +1,19 @@
use vivian_codegen::{handlers, required_state};
use vivian_logic::item::EItemType;
use vivian_proto::{
AvatarFavoriteCsReq, AvatarFavoriteScRsp, AvatarLevelUpCsReq, AvatarLevelUpScRsp, AvatarShowWeaponCsReq, AvatarShowWeaponScRsp, AvatarSkinDressCsReq, AvatarSkinDressScRsp, AvatarSkinUnDressCsReq, AvatarSkinUnDressScRsp, EquipmentDressCsReq, EquipmentDressScRsp, EquipmentSuitDressCsReq, EquipmentSuitDressScRsp, EquipmentUnDressCsReq, EquipmentUnDressScRsp, GetAvatarDataCsReq, GetAvatarDataScRsp, GetAvatarRecommendEquipCsReq, GetAvatarRecommendEquipScRsp, ItemRewardInfo, WeaponDressCsReq, WeaponDressScRsp, WeaponUnDressCsReq, WeaponUnDressScRsp
AvatarFavoriteCsReq, AvatarFavoriteScRsp, AvatarLevelUpCsReq, AvatarLevelUpScRsp,
AvatarShowWeaponCsReq, AvatarShowWeaponScRsp, AvatarSkinDressCsReq, AvatarSkinDressScRsp,
AvatarSkinUnDressCsReq, AvatarSkinUnDressScRsp, EquipmentDressCsReq, EquipmentDressScRsp,
EquipmentSuitDressCsReq, EquipmentSuitDressScRsp, EquipmentUnDressCsReq, EquipmentUnDressScRsp,
GetAvatarDataCsReq, GetAvatarDataScRsp, GetAvatarRecommendEquipCsReq,
GetAvatarRecommendEquipScRsp, ItemRewardInfo, WeaponDressCsReq, WeaponDressScRsp,
WeaponUnDressCsReq, WeaponUnDressScRsp,
};
use crate::{sync::SyncType, util::{avatar_util, item_util}};
use crate::{
sync::SyncType,
util::{avatar_util, item_util},
};
use super::NetContext;
@ -351,10 +360,7 @@ impl AvatarHandler {
avatar_util::dress_equip(
context.player,
request.avatar_id,
(
request.equip_uid,
request.dress_index,
),
(request.equip_uid, request.dress_index),
);
EquipmentDressScRsp { retcode: 0 }
@ -370,14 +376,11 @@ impl AvatarHandler {
.avatar_map
.get_mut(&request.avatar_id)
{
request
.undress_index_list
.iter()
.for_each(|undress_index| {
avatar
.dressed_equip_map
.retain(|_, index| index != undress_index);
});
request.undress_index_list.iter().for_each(|undress_index| {
avatar
.dressed_equip_map
.retain(|_, index| index != undress_index);
});
EquipmentUnDressScRsp { retcode: 0 }
} else {
@ -397,33 +400,23 @@ impl AvatarHandler {
return EquipmentSuitDressScRsp { retcode: 1 };
}
if !request
.param_list
.iter()
.fold(true, |v, param|
v && context
if !request.param_list.iter().all(|param| {
context
.player
.item_model
.equip_map
.contains_key(&param.equip_uid)
)
{
}) {
return EquipmentSuitDressScRsp { retcode: 1 };
}
request
.param_list
.iter()
.for_each(|param| {
avatar_util::dress_equip(
context.player,
request.avatar_id,
(
param.equip_uid,
param.dress_index,
),
);
});
request.param_list.iter().for_each(|param| {
avatar_util::dress_equip(
context.player,
request.avatar_id,
(param.equip_uid, param.dress_index),
);
});
EquipmentSuitDressScRsp { retcode: 0 }
}

View file

@ -51,7 +51,9 @@ pub fn add_items_on_first_login(player: &mut Player) {
// Generate some Drive Discs for now
let rng = &mut rand::thread_rng();
let properties_map: [(u32, Vec<u32>, u32, Vec<u32>, u32); 19] = [
type IntVec = Vec<u32>;
let properties_map: [(u32, IntVec, u32, IntVec, u32); 19] = [
(11103, vec![1], 550, vec![1, 2, 3, 4, 5, 6], 112),
(11102, vec![4, 5, 6], 750, vec![1, 2, 3, 4, 5, 6], 300),
(12103, vec![2], 79, vec![1, 2, 3, 4, 5, 6], 19),
@ -72,7 +74,8 @@ pub fn add_items_on_first_login(player: &mut Player) {
(31703, vec![5], 750, vec![], 0),
(31503, vec![5], 750, vec![], 0),
];
for _ in 0..100 {
for _ in 0..500 {
let uid = player.item_model.next_uid();
let id = player
@ -98,11 +101,15 @@ pub fn add_items_on_first_login(player: &mut Player) {
for _ in 0..4 {
let sub_property = properties_map
.iter()
.filter(|p| p.3.contains(&slot) && !sub_properties.contains_key(&p.0))
.filter(|p| {
p.3.contains(&slot)
&& p.0 != main_property.0
&& !sub_properties.contains_key(&p.0)
})
.choose(rng)
.map(|p| {
let add_value = rng.next_u32() % add_value_mod;
add_value_mod = add_value_mod - add_value;
add_value_mod -= add_value;
(p.0, (p.4, 1 + add_value))
})
.unwrap();