Support teleport map, mod button, post girl, nickname init

This commit is contained in:
YYHEggEgg 2024-08-06 11:01:16 +08:00
parent 3c2397cdbd
commit b2401d566b
14 changed files with 2472 additions and 98 deletions

View file

@ -0,0 +1,29 @@
[
{
"QuickAccessIndex": 1,
"QuickFuncID": 1005,
"RequiredUnlockIDs": [
1005
],
"EFPBDDJIJBO": 1040140154,
"BOKMLGNMJPB": null
},
{
"QuickAccessIndex": 2,
"QuickFuncID": 1022,
"RequiredUnlockIDs": [
1022
],
"EFPBDDJIJBO": 1040140049,
"BOKMLGNMJPB": null
},
{
"QuickAccessIndex": 3,
"QuickFuncID": 1009,
"RequiredUnlockIDs": [
1009
],
"EFPBDDJIJBO": 1050060115,
"BOKMLGNMJPB": null
}
]

View file

@ -0,0 +1,112 @@
[
{
"BtnID": 1001,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1002,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1003,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1004,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1005,
"BOMNEKHOGIH": "UI/Sprite/A1DynamicLoad/MainCityMenus/Packer/BtnInterKnot.png",
"PECPFBBOGKO": "UI/Sprite/A1DynamicLoad/MainCityMenus/Packer/BtnInterKnot.png"
},
{
"BtnID": 1006,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1007,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1008,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1009,
"BOMNEKHOGIH": "UI/Sprite/A1DynamicLoad/MainCityMenus/Packer/BtnGuide.png",
"PECPFBBOGKO": "UI/Sprite/A1DynamicLoad/MainCityMenus/Packer/BtnGuide.png"
},
{
"BtnID": 1010,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1011,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1013,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1014,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1015,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1016,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1017,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1018,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1019,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1020,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
},
{
"BtnID": 1021,
"BOMNEKHOGIH": "UI/Sprite/A1DynamicLoad/MainCityMenus/Packer/BtnCamera.png",
"PECPFBBOGKO": "UI/Sprite/A1DynamicLoad/MainCityMenus/Packer/BtnCamera.png"
},
{
"BtnID": 1022,
"BOMNEKHOGIH": "UI/Sprite/A1DynamicLoad/MainCityMenus/Packer/BtnMessage.png",
"PECPFBBOGKO": "UI/Sprite/A1DynamicLoad/MainCityMenus/Packer/BtnMessage.png"
},
{
"BtnID": 1023,
"BOMNEKHOGIH": "",
"PECPFBBOGKO": ""
}
]

File diff suppressed because it is too large Load diff

View file

@ -94,4 +94,7 @@ template_tables! {
SubAreaDataTemplate; SubAreaDataTemplate;
VariableDataTemplate; VariableDataTemplate;
OnceRewardTemplate; OnceRewardTemplate;
QuickAccessTemplate;
QuickFuncTemplate;
TeleportConfigTemplate;
} }

View file

@ -0,0 +1,11 @@
use serde::Deserialize;
template_id!(QuickAccess u32 quick_func_id);
#[derive(Deserialize, Debug)]
#[serde(rename_all = "PascalCase")]
pub struct QuickAccessTemplate {
pub quick_access_index: u32,
#[serde(rename = "QuickFuncID")]
pub quick_func_id: QuickAccessID,
}

View file

@ -0,0 +1,10 @@
use serde::Deserialize;
template_id!(QuickFunc u32 btn_id);
#[derive(Deserialize, Debug)]
#[serde(rename_all = "PascalCase")]
pub struct QuickFuncTemplate {
#[serde(rename = "BtnID")]
pub btn_id: QuickFuncID,
}

View file

@ -0,0 +1,11 @@
use serde::Deserialize;
template_id!(TeleportConfig i32 teleport_id);
#[derive(Deserialize, Debug)]
#[serde(rename_all = "PascalCase")]
pub struct TeleportConfigTemplate {
#[serde(rename = "TeleportID")]
pub teleport_id: TeleportConfigID,
pub client_visible: u32,
}

View file

@ -2,7 +2,7 @@ use crate::logic::{EOperator, ESystem};
use super::*; use super::*;
use data::tables; use data::tables::{self, QuickAccessID};
pub async fn on_get_tips_info( pub async fn on_get_tips_info(
_session: &NetSession, _session: &NetSession,
@ -21,23 +21,34 @@ pub async fn on_get_client_systems_info(
player: &mut Player, player: &mut Player,
_req: GetClientSystemsInfoCsReq, _req: GetClientSystemsInfoCsReq,
) -> NetResult<GetClientSystemsInfoScRsp> { ) -> NetResult<GetClientSystemsInfoScRsp> {
let mut post_girl_data = PostGirlData {
post_girl_list: tables::post_girl_config_template_tb::iter()
.map(|template| PostGirlItem {
template_id: template.id.value(),
unlock_time: 1720052644,
})
.collect(),
..Default::default()
};
if let Some(post_girl_id) = player.basic_data_model.selected_post_girl_id {
post_girl_data
.selected_post_girl_id_list
.push(post_girl_id.value());
}
Ok(GetClientSystemsInfoScRsp { Ok(GetClientSystemsInfoScRsp {
retcode: Retcode::RetSucc.into(), retcode: Retcode::RetSucc.into(),
info: Some(ClientSystemsInfo { info: Some(ClientSystemsInfo {
post_girl_data: Some(PostGirlData { post_girl_data: Some(post_girl_data),
selected_post_girl_id_list: tables::post_girl_config_template_tb::iter() unlock_data: Some(player.lock_model.to_client()),
.map(|template| template.id.value()) calling_card_data: Some(CallingCardData::default()),
.collect(), teleport_data: Some(TeleportData {
post_girl_list: tables::post_girl_config_template_tb::iter() unlock_id_list: tables::teleport_config_template_tb::iter()
.map(|template| PostGirlItem { .filter(|template| template.client_visible > 0)
template_id: template.id.value(), .map(|template| template.teleport_id.value())
unlock_time: 1000,
})
.collect(), .collect(),
..Default::default() ..Default::default()
}), }),
unlock_data: Some(player.lock_model.to_client()),
hbhfjgbahgf: Some(Aboegnnepmi::default()),
..Default::default() ..Default::default()
}), }),
}) })
@ -183,3 +194,70 @@ pub async fn on_interact_with_scene_object(
retcode: Retcode::RetSucc.into(), retcode: Retcode::RetSucc.into(),
}) })
} }
pub async fn on_mod_quick_menu(
_session: &NetSession,
_player: &mut Player,
_req: ModQuickMenuCsReq,
) -> NetResult<ModQuickMenuScRsp> {
let mut quick_access_data_list: Vec<QuickAccessData> = vec![];
for data in _req.quick_access_data_list.iter() {
quick_access_data_list.push(
_player
.lock_model
.mod_quick_access(data.quick_access_index, QuickAccessID::new(data.btn_id)),
);
}
_session
.notify(PlayerSyncScNotify {
client_systems_sync: Some(ClientSystemsSync {
quick_access_data_list,
..Default::default()
}),
..Default::default()
})
.await?;
Ok(ModQuickMenuScRsp {
retcode: Retcode::RetSucc.into(),
..Default::default()
})
}
pub async fn on_change_post_girl(
_session: &NetSession,
_player: &mut Player,
_req: ChangePostGirlCsReq,
) -> NetResult<ChangePostGirlScRsp> {
if _req.new_selected_post_girl_id_list.len() != 1 {
return Ok(ChangePostGirlScRsp {
retcode: Retcode::RetFail.into(),
..Default::default()
});
};
match tables::PostGirlConfigID::new(*_req.new_selected_post_girl_id_list.get(0).unwrap()) {
Some(post_girl_id) => {
_player.basic_data_model.selected_post_girl_id = Some(post_girl_id);
_session
.notify(PlayerSyncScNotify {
client_systems_sync: Some(ClientSystemsSync {
post_girl_data: Some(PostGirlSync {
selected_post_girl_id_list: vec![post_girl_id.value()],
..Default::default()
}),
..Default::default()
}),
..Default::default()
})
.await?;
Ok(ChangePostGirlScRsp {
retcode: Retcode::RetSucc.into(),
..Default::default()
})
}
None => Ok(ChangePostGirlScRsp {
retcode: Retcode::RetFail.into(),
..Default::default()
}),
}
}

View file

@ -126,6 +126,9 @@ req_handlers! {
gacha::DoGacha; gacha::DoGacha;
gacha::ChooseGachaUp; gacha::ChooseGachaUp;
gacha::GachaFreeAgent; gacha::GachaFreeAgent;
player::ModNickname;
client_systems::ModQuickMenu;
client_systems::ChangePostGirl;
} }
notify_handlers! { notify_handlers! {

View file

@ -58,6 +58,25 @@ pub async fn on_get_player_transaction(
}) })
} }
pub async fn on_mod_nickname(
session: &NetSession,
_player: &mut Player,
_req: ModNicknameCsReq,
) -> NetResult<ModNicknameScRsp> {
_player.basic_data_model.nick_name = Some(_req.nick_name.to_string());
session
.notify(PlayerSyncScNotify {
basic_info: Some(_player.basic_data_model.player_basic_info()),
..Default::default()
})
.await?;
Ok(ModNicknameScRsp {
retcode: Retcode::RetSucc.into(),
..Default::default()
})
}
pub async fn on_keep_alive( pub async fn on_keep_alive(
_session: &NetSession, _session: &NetSession,
_player: &mut Player, _player: &mut Player,

View file

@ -1,4 +1,4 @@
use data::tables::{AvatarBaseID, ProcedureConfigID}; use data::tables::{AvatarBaseID, PostGirlConfigID, ProcedureConfigID};
use proto::{BasicDataModelBin, PlayerBasicInfo}; use proto::{BasicDataModelBin, PlayerBasicInfo};
pub struct BasicDataModel { pub struct BasicDataModel {
@ -8,6 +8,7 @@ pub struct BasicDataModel {
pub nick_name: Option<String>, pub nick_name: Option<String>,
pub frontend_avatar_id: Option<AvatarBaseID>, pub frontend_avatar_id: Option<AvatarBaseID>,
pub beginner_procedure_id: Option<ProcedureConfigID>, pub beginner_procedure_id: Option<ProcedureConfigID>,
pub selected_post_girl_id: Option<PostGirlConfigID>,
} }
impl Default for BasicDataModel { impl Default for BasicDataModel {
@ -19,6 +20,7 @@ impl Default for BasicDataModel {
nick_name: None, nick_name: None,
frontend_avatar_id: None, frontend_avatar_id: None,
beginner_procedure_id: Some(ProcedureConfigID::new_unchecked(1)), beginner_procedure_id: Some(ProcedureConfigID::new_unchecked(1)),
..Default::default()
} }
} }
} }
@ -37,6 +39,10 @@ impl BasicDataModel {
avatar_id, avatar_id,
frontend_avatar_id: avatar_id, frontend_avatar_id: avatar_id,
kbjleelonfe: self.profile_icon, kbjleelonfe: self.profile_icon,
has_nickname: match &self.nick_name {
Some(_name) => 1,
None => 0,
},
..Default::default() ..Default::default()
} }
} }
@ -54,6 +60,7 @@ impl BasicDataModel {
1.. => ProcedureConfigID::new(bin.beginner_procedure_id as u32), 1.. => ProcedureConfigID::new(bin.beginner_procedure_id as u32),
_ => None, _ => None,
}, },
selected_post_girl_id: PostGirlConfigID::new(bin.selected_post_girl_id),
nick_name: match bin.nick_name.is_empty() { nick_name: match bin.nick_name.is_empty() {
true => None, true => None,
false => Some(bin.nick_name), false => Some(bin.nick_name),
@ -75,6 +82,10 @@ impl BasicDataModel {
.beginner_procedure_id .beginner_procedure_id
.map(|i| i.value() as i32) .map(|i| i.value() as i32)
.unwrap_or(-1), .unwrap_or(-1),
selected_post_girl_id: match self.selected_post_girl_id {
Some(post_girl_id) => post_girl_id.value(),
None => 0
},
} }
} }
} }

View file

@ -1,11 +1,12 @@
use std::collections::BTreeSet; use std::collections::{BTreeSet, HashMap};
use data::tables::UnlockConfigID; use data::tables::{quick_access_template_tb, QuickAccessID, UnlockConfigID};
use proto::{LockModelBin, UnlockData}; use proto::{LockModelBin, QuickAccessData, QuickAccessType, UnlockData};
#[derive(Default)] #[derive(Default)]
pub struct LockModel { pub struct LockModel {
unlock_list: BTreeSet<UnlockConfigID>, unlock_list: BTreeSet<UnlockConfigID>,
quick_access_list: HashMap<u32, QuickAccessID>,
} }
impl LockModel { impl LockModel {
@ -16,6 +17,11 @@ impl LockModel {
.into_iter() .into_iter()
.map(UnlockConfigID::new_unchecked) .map(UnlockConfigID::new_unchecked)
.collect(), .collect(),
quick_access_list: bin
.quick_access_list
.into_iter()
.map(|(k, v)| (k, QuickAccessID::new_unchecked(v)))
.collect(),
} }
} }
@ -27,10 +33,36 @@ impl LockModel {
.into_iter() .into_iter()
.map(|i| i.value()) .map(|i| i.value())
.collect(), .collect(),
quick_access_list: self
.quick_access_list
.clone()
.into_iter()
.map(|(k, v)| (k, v.value()))
.collect(),
} }
} }
pub fn to_client(&self) -> UnlockData { pub fn to_client(&self) -> UnlockData {
let mut quick_access_data_list: Vec<QuickAccessData> = vec![];
for quick_access in quick_access_template_tb::iter() {
quick_access_data_list.push(QuickAccessData {
r#type: QuickAccessType::Direct.into(),
quick_access_index: quick_access.quick_access_index,
btn_id: quick_access.quick_func_id.value(),
});
}
for quick_access_index in 1..7 {
let mut btn_id = 0;
if let Some(id) = self.quick_access_list.get(&quick_access_index) {
btn_id = id.value();
}
quick_access_data_list.push(QuickAccessData {
r#type: QuickAccessType::QuickMenu.into(),
quick_access_index,
btn_id,
});
}
UnlockData { UnlockData {
unlock_id_list: self unlock_id_list: self
.unlock_list .unlock_list
@ -38,6 +70,7 @@ impl LockModel {
.into_iter() .into_iter()
.map(|i| i.value()) .map(|i| i.value())
.collect(), .collect(),
quick_access_data_list,
..Default::default() ..Default::default()
} }
} }
@ -49,4 +82,28 @@ impl LockModel {
pub fn is_unlock(&self, id: UnlockConfigID) -> bool { pub fn is_unlock(&self, id: UnlockConfigID) -> bool {
self.unlock_list.contains(&id) self.unlock_list.contains(&id)
} }
pub fn mod_quick_access(&mut self, index: u32, id: Option<QuickAccessID>) -> QuickAccessData {
let btn_id = match id {
Some(quick_access_id) => {
if self.quick_access_list.contains_key(&index) {
*self.quick_access_list.get_mut(&index).unwrap() = quick_access_id;
} else {
self.quick_access_list.insert(index, quick_access_id);
}
quick_access_id.value()
}
None => {
if self.quick_access_list.contains_key(&index) {
self.quick_access_list.remove(&index);
}
0
}
};
QuickAccessData {
r#type: QuickAccessType::QuickMenu.into(),
quick_access_index: index,
btn_id,
}
}
} }

View file

@ -1267,7 +1267,7 @@ pub struct Lekadbbedgd {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Ijkfhelddih { pub struct NewbieGroupData {
#[prost(int32, repeated, tag = "5")] #[prost(int32, repeated, tag = "5")]
pub unlock_id_list: ::prost::alloc::vec::Vec<i32>, pub unlock_id_list: ::prost::alloc::vec::Vec<i32>,
} }
@ -2250,13 +2250,13 @@ pub struct PlayerSyncScNotify {
#[prost(message, optional, tag = "2")] #[prost(message, optional, tag = "2")]
pub kophiimbjek: ::core::option::Option<Feecjgonjfm>, pub kophiimbjek: ::core::option::Option<Feecjgonjfm>,
#[prost(message, optional, tag = "3")] #[prost(message, optional, tag = "3")]
pub gbfdodbmboh: ::core::option::Option<Efadpnfaelh>, pub client_systems_sync: ::core::option::Option<ClientSystemsSync>,
#[prost(message, optional, tag = "4")] #[prost(message, optional, tag = "4")]
pub ejechecjicb: ::core::option::Option<Iapdkahajkn>, pub ejechecjicb: ::core::option::Option<Iapdkahajkn>,
#[prost(message, optional, tag = "5")] #[prost(message, optional, tag = "5")]
pub fphameaeean: ::core::option::Option<Mbokdhgpobc>, pub fphameaeean: ::core::option::Option<Mbokdhgpobc>,
#[prost(message, optional, tag = "6")] #[prost(message, optional, tag = "6")]
pub ogcaaminman: ::core::option::Option<Ecpbnceekbi>, pub quest_data_sync: ::core::option::Option<QuestDataSync>,
#[prost(message, optional, tag = "7")] #[prost(message, optional, tag = "7")]
pub aklfkgodkde: ::core::option::Option<Dbjpegchcch>, pub aklfkgodkde: ::core::option::Option<Dbjpegchcch>,
#[prost(message, optional, tag = "8")] #[prost(message, optional, tag = "8")]
@ -2278,7 +2278,7 @@ pub struct PlayerSyncScNotify {
#[prost(bool, tag = "46")] #[prost(bool, tag = "46")]
pub pibodcappln: bool, pub pibodcappln: bool,
#[prost(message, optional, tag = "82")] #[prost(message, optional, tag = "82")]
pub coagpnjkncf: ::core::option::Option<Bmhfpdagadk>, pub collect_map_sync: ::core::option::Option<CollectMapSync>,
#[prost(message, optional, tag = "162")] #[prost(message, optional, tag = "162")]
pub hffkhegeifp: ::core::option::Option<Lachoecdhnc>, pub hffkhegeifp: ::core::option::Option<Lachoecdhnc>,
#[prost(message, optional, tag = "260")] #[prost(message, optional, tag = "260")]
@ -2296,7 +2296,7 @@ pub struct PlayerSyncScNotify {
#[prost(message, optional, tag = "915")] #[prost(message, optional, tag = "915")]
pub dcdddgnhdjj: ::core::option::Option<Dpiceolgbfi>, pub dcdddgnhdjj: ::core::option::Option<Dpiceolgbfi>,
#[prost(message, optional, tag = "1085")] #[prost(message, optional, tag = "1085")]
pub hlcjedhdlfo: ::core::option::Option<Ipimhifmfni>, pub work_bench_sync: ::core::option::Option<WorkBenchSync>,
#[prost(message, optional, tag = "1142")] #[prost(message, optional, tag = "1142")]
pub ahpalhhnkdc: ::core::option::Option<Bnaicfpiiag>, pub ahpalhhnkdc: ::core::option::Option<Bnaicfpiiag>,
#[prost(message, optional, tag = "1440")] #[prost(message, optional, tag = "1440")]
@ -2306,7 +2306,7 @@ pub struct PlayerSyncScNotify {
#[prost(message, optional, tag = "1705")] #[prost(message, optional, tag = "1705")]
pub oijhohooded: ::core::option::Option<Edlekkbcaia>, pub oijhohooded: ::core::option::Option<Edlekkbcaia>,
#[prost(message, optional, tag = "1728")] #[prost(message, optional, tag = "1728")]
pub pofhalhdikf: ::core::option::Option<Oaoecalella>, pub vhs_store_sync: ::core::option::Option<VhsStoreSync>,
} }
#[derive(proto_gen::CmdID)] #[derive(proto_gen::CmdID)]
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
@ -3025,7 +3025,7 @@ pub struct PlayerBasicInfo {
pub ififobofjhd: bool, pub ififobofjhd: bool,
#[xor(12709)] #[xor(12709)]
#[prost(uint32, tag = "8")] #[prost(uint32, tag = "8")]
pub pmjdniklpgc: u32, pub has_nickname: u32,
#[xor(8317)] #[xor(8317)]
#[prost(uint32, tag = "2")] #[prost(uint32, tag = "2")]
pub level: u32, pub level: u32,
@ -3210,7 +3210,7 @@ pub struct UnlockData {
#[prost(int32, repeated, tag = "1")] #[prost(int32, repeated, tag = "1")]
pub unlock_id_list: ::prost::alloc::vec::Vec<i32>, pub unlock_id_list: ::prost::alloc::vec::Vec<i32>,
#[prost(message, repeated, tag = "3")] #[prost(message, repeated, tag = "3")]
pub ppfekhgdpbo: ::prost::alloc::vec::Vec<Jmkeekhhheb>, pub quick_access_data_list: ::prost::alloc::vec::Vec<QuickAccessData>,
#[prost(int32, repeated, tag = "6")] #[prost(int32, repeated, tag = "6")]
pub kefeekedhii: ::prost::alloc::vec::Vec<i32>, pub kefeekedhii: ::prost::alloc::vec::Vec<i32>,
} }
@ -3910,17 +3910,17 @@ pub struct Hmchpbjljen {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Ooofknbkhel { pub struct TarotCardData {
#[prost(int32, repeated, tag = "2")] #[prost(int32, repeated, tag = "2")]
pub fpmfdgjhchm: ::prost::alloc::vec::Vec<i32>, pub fpmfdgjhchm: ::prost::alloc::vec::Vec<i32>,
#[prost(int32, repeated, tag = "5")] #[prost(int32, repeated, tag = "5")]
pub llnmdibojio: ::prost::alloc::vec::Vec<i32>, pub not_viewed_list: ::prost::alloc::vec::Vec<i32>,
#[prost(int32, repeated, tag = "9")] #[prost(int32, repeated, tag = "9")]
pub ihnjbpcpfkf: ::prost::alloc::vec::Vec<i32>, pub ihnjbpcpfkf: ::prost::alloc::vec::Vec<i32>,
#[prost(message, repeated, tag = "11")] #[prost(message, repeated, tag = "11")]
pub ofdfjpflbie: ::prost::alloc::vec::Vec<Ifndfopgcph>, pub ofdfjpflbie: ::prost::alloc::vec::Vec<Ifndfopgcph>,
#[prost(int32, repeated, tag = "13")] #[prost(int32, repeated, tag = "13")]
pub nkggmfpghgi: ::prost::alloc::vec::Vec<i32>, pub obtained_list: ::prost::alloc::vec::Vec<i32>,
} }
#[derive(proto_gen::CmdID)] #[derive(proto_gen::CmdID)]
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
@ -5396,7 +5396,7 @@ pub struct Icgeifjjpma {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Aboegnnepmi { pub struct CallingCardData {
#[prost(uint32, repeated, tag = "11")] #[prost(uint32, repeated, tag = "11")]
pub ocfaaakaomg: ::prost::alloc::vec::Vec<u32>, pub ocfaaakaomg: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, tag = "8")] #[prost(uint32, repeated, tag = "8")]
@ -5983,7 +5983,7 @@ pub struct Dgfbapkibje {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Jfkllcaiafj { pub struct InterKnotSync {
#[prost(uint32, repeated, tag = "2")] #[prost(uint32, repeated, tag = "2")]
pub gbcaeaicghd: ::prost::alloc::vec::Vec<u32>, pub gbcaeaicghd: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, tag = "3")] #[prost(uint32, repeated, tag = "3")]
@ -8738,7 +8738,7 @@ pub struct Ojdhiaepnad {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Mjhicllmahe { pub struct CheckItemSync {
#[prost(uint32, repeated, tag = "1")] #[prost(uint32, repeated, tag = "1")]
pub aighoeokkab: ::prost::alloc::vec::Vec<u32>, pub aighoeokkab: ::prost::alloc::vec::Vec<u32>,
} }
@ -9359,11 +9359,11 @@ pub struct Ijkgfnpobob {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Glinfkmgjoj { pub struct CurseData {
#[prost(int32, repeated, tag = "5")] #[prost(int32, repeated, tag = "5")]
pub llnmdibojio: ::prost::alloc::vec::Vec<i32>, pub not_viewed_list: ::prost::alloc::vec::Vec<i32>,
#[prost(int32, repeated, tag = "8")] #[prost(int32, repeated, tag = "8")]
pub nkggmfpghgi: ::prost::alloc::vec::Vec<i32>, pub obtained_list: ::prost::alloc::vec::Vec<i32>,
} }
#[derive(proto_gen::CmdID)] #[derive(proto_gen::CmdID)]
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
@ -10437,7 +10437,7 @@ pub struct Abnehcbnadl {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Baodmddgagi { pub struct CallingCardSync {
#[prost(uint32, repeated, tag = "5")] #[prost(uint32, repeated, tag = "5")]
pub ocfaaakaomg: ::prost::alloc::vec::Vec<u32>, pub ocfaaakaomg: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, tag = "3")] #[prost(uint32, repeated, tag = "3")]
@ -10701,9 +10701,9 @@ pub struct Abjkiejnbak {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Oacoekjapel { pub struct ChangePostGirlCsReq {
#[prost(uint32, repeated, tag = "4")] #[prost(uint32, repeated, tag = "4")]
pub fndfaabfafb: ::prost::alloc::vec::Vec<u32>, pub new_selected_post_girl_id_list: ::prost::alloc::vec::Vec<u32>,
} }
#[derive(proto_gen::CmdID)] #[derive(proto_gen::CmdID)]
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
@ -11109,7 +11109,7 @@ pub struct Geemkgcbcng {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Oaoecalella { pub struct VhsStoreSync {
#[prost(message, optional, tag = "11")] #[prost(message, optional, tag = "11")]
pub cfaiklmcfkb: ::core::option::Option<Aimmcpelead>, pub cfaiklmcfkb: ::core::option::Option<Aimmcpelead>,
#[prost(bool, tag = "13")] #[prost(bool, tag = "13")]
@ -11366,7 +11366,7 @@ pub struct Acpgildhoed {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Idbdhebkcgg { pub struct ModQuickMenuScRsp {
#[xor(13685)] #[xor(13685)]
#[prost(int32, tag = "1")] #[prost(int32, tag = "1")]
pub retcode: i32, pub retcode: i32,
@ -12173,9 +12173,9 @@ pub struct Mbfcgalihdj {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Dpnalcomaii { pub struct ModQuickMenuCsReq {
#[prost(message, repeated, tag = "13")] #[prost(message, repeated, tag = "13")]
pub ppfekhgdpbo: ::prost::alloc::vec::Vec<Jmkeekhhheb>, pub quick_access_data_list: ::prost::alloc::vec::Vec<QuickAccessData>,
} }
#[derive(proto_gen::CmdID)] #[derive(proto_gen::CmdID)]
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
@ -12649,7 +12649,7 @@ pub struct Akkbhjhoiao {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Fikgjigadki { pub struct ModNicknameCsReq {
#[xor(13081)] #[xor(13081)]
#[prost(uint32, tag = "12")] #[prost(uint32, tag = "12")]
pub avatar_id: u32, pub avatar_id: u32,
@ -12839,7 +12839,7 @@ pub struct Okkjjhonnik {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Hgdnnkfjcmc { pub struct MusicPlayerSync {
#[xor(12784)] #[xor(12784)]
#[prost(uint32, tag = "11")] #[prost(uint32, tag = "11")]
pub mhgnhkmhlgj: u32, pub mhgnhkmhlgj: u32,
@ -13605,7 +13605,7 @@ pub struct Bhomgogkadj {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Dmhpnnmggnm { pub struct TrashbinHermitSync {
#[prost(message, repeated, tag = "15")] #[prost(message, repeated, tag = "15")]
pub klbehoieibi: ::prost::alloc::vec::Vec<Ddplihlfngg>, pub klbehoieibi: ::prost::alloc::vec::Vec<Ddplihlfngg>,
} }
@ -16157,41 +16157,59 @@ pub struct Fihgfkkpnae {
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClientSystemsInfo { pub struct ClientSystemsInfo {
#[prost(message, optional, tag = "1")] #[prost(message, optional, tag = "1")]
pub ilplibfdina: ::core::option::Option<Ipijdhhpbci>, pub teleport_data: ::core::option::Option<TeleportData>,
#[prost(message, optional, tag = "2")] #[prost(message, optional, tag = "2")]
pub aklfkgodkde: ::core::option::Option<Iggbdkbgphj>, pub aklfkgodkde: ::core::option::Option<Iggbdkbgphj>,
#[prost(message, optional, tag = "3")] #[prost(message, optional, tag = "3")]
pub ipfhhabegii: ::core::option::Option<Lcnicjccpde>, pub ipfhhabegii: ::core::option::Option<Lcnicjccpde>,
#[prost(message, optional, tag = "4")] #[prost(message, optional, tag = "4")]
pub post_girl_data: ::core::option::Option<PostGirlData>, pub post_girl_data: ::core::option::Option<PostGirlData>,
/// 音乐播放器,主要是收录列表。里面有个 enum 是不是循环模式的意思?
///
#[prost(message, optional, tag = "6")] #[prost(message, optional, tag = "6")]
pub djhjojekegc: ::core::option::Option<Knohmlebcbm>, pub music_player_data: ::core::option::Option<MusicPlayerData>,
/// 这个应该是解锁鸣徽之类的了。需要进一步研究
///
#[prost(message, optional, tag = "7")] #[prost(message, optional, tag = "7")]
pub mhehfjdgkbd: ::core::option::Option<Ooofknbkhel>, pub tarot_card_data: ::core::option::Option<TarotCardData>,
/// 这个大概跟剧情有关,下面有个表是已经玩过的过场 ID. 这个过场特指漫画式和几个人放屏幕上的对话式,要是给一个共性就是都可以跳过的
///
#[prost(message, optional, tag = "8")] #[prost(message, optional, tag = "8")]
pub mopogebpbeo: ::core::option::Option<Oaljbkehldb>, pub mopogebpbeo: ::core::option::Option<Oaljbkehldb>,
#[prost(message, optional, tag = "9")] #[prost(message, optional, tag = "9")]
pub njidcmpcojg: ::core::option::Option<Ijkfhelddih>, pub newbie_group_data: ::core::option::Option<NewbieGroupData>,
#[prost(message, optional, tag = "10")] #[prost(message, optional, tag = "10")]
pub unlock_data: ::core::option::Option<UnlockData>, pub unlock_data: ::core::option::Option<UnlockData>,
#[prost(message, optional, tag = "11")] #[prost(message, optional, tag = "11")]
pub geoagplahii: ::core::option::Option<NewsStandData>, pub geoagplahii: ::core::option::Option<NewsStandData>,
#[prost(message, optional, tag = "12")] #[prost(message, optional, tag = "12")]
pub trashbin_hermit_data: ::core::option::Option<TrashbinHermitData>, pub trashbin_hermit_data: ::core::option::Option<TrashbinHermitData>,
/// 猜测是收藏列表
///
#[prost(message, optional, tag = "13")] #[prost(message, optional, tag = "13")]
pub obfepjfnlgi: ::core::option::Option<Jcdicmoemef>, pub collect_data: ::core::option::Option<CollectData>,
/// 侵蚀症状..? 大概是曾获得过的意思
///
#[prost(message, optional, tag = "14")] #[prost(message, optional, tag = "14")]
pub mkhjcnbgedm: ::core::option::Option<Glinfkmgjoj>, pub curse_data: ::core::option::Option<CurseData>,
/// 绳网数据。大概有浏览过的帖子和发表了的回复之类
///
#[prost(message, optional, tag = "15")] #[prost(message, optional, tag = "15")]
pub olgibdhglkg: ::core::option::Option<Gfkfedpdede>, pub inter_knot_data: ::core::option::Option<InterKnotData>,
/// 成就数据
///
#[prost(message, optional, tag = "41")] #[prost(message, optional, tag = "41")]
pub nhmefdfdmfi: ::core::option::Option<Abkjgdcbglg>, pub achievement_data: ::core::option::Option<AchievementData>,
#[prost(message, repeated, tag = "200")] #[prost(message, repeated, tag = "200")]
pub gpfoecchico: ::prost::alloc::vec::Vec<Hmchpbjljen>, pub gpfoecchico: ::prost::alloc::vec::Vec<Hmchpbjljen>,
/// 这个大概是喵吉长官的完成数据。不打算管
///
#[prost(message, optional, tag = "621")] #[prost(message, optional, tag = "621")]
pub aigkcfkaadf: ::core::option::Option<Efokkbbamai>, pub check_item_data: ::core::option::Option<CheckItemData>,
/// 好像是名片数据
///
#[prost(message, optional, tag = "800")] #[prost(message, optional, tag = "800")]
pub hbhfjgbahgf: ::core::option::Option<Aboegnnepmi>, pub calling_card_data: ::core::option::Option<CallingCardData>,
#[prost(map = "uint32, int32", tag = "864")] #[prost(map = "uint32, int32", tag = "864")]
pub oomkaabgbmb: ::std::collections::HashMap<u32, i32>, pub oomkaabgbmb: ::std::collections::HashMap<u32, i32>,
#[prost(message, optional, tag = "1228")] #[prost(message, optional, tag = "1228")]
@ -18201,7 +18219,7 @@ pub struct GetMonthCardDayRewardCsReq {}
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Ipijdhhpbci { pub struct TeleportData {
#[prost(int32, repeated, tag = "2")] #[prost(int32, repeated, tag = "2")]
pub jmjmkpakijj: ::prost::alloc::vec::Vec<i32>, pub jmjmkpakijj: ::prost::alloc::vec::Vec<i32>,
#[prost(int32, repeated, tag = "15")] #[prost(int32, repeated, tag = "15")]
@ -20150,41 +20168,41 @@ pub struct Ocdbdmkhcjl {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Efadpnfaelh { pub struct ClientSystemsSync {
#[prost(uint32, repeated, tag = "1")] #[prost(uint32, repeated, tag = "1")]
pub hgfaaejijhk: ::prost::alloc::vec::Vec<u32>, pub teleport_id_sync: ::prost::alloc::vec::Vec<u32>,
#[prost(message, optional, tag = "2")] #[prost(message, optional, tag = "2")]
pub ofmndhbgdof: ::core::option::Option<Mgicaigalme>, pub ofmndhbgdof: ::core::option::Option<Mgicaigalme>,
#[prost(message, optional, tag = "3")] #[prost(message, optional, tag = "3")]
pub olgibdhglkg: ::core::option::Option<Jfkllcaiafj>, pub inter_knot_data: ::core::option::Option<InterKnotSync>,
#[prost(message, optional, tag = "4")] #[prost(message, optional, tag = "4")]
pub djhjojekegc: ::core::option::Option<Hgdnnkfjcmc>, pub music_player_data: ::core::option::Option<MusicPlayerSync>,
#[prost(uint32, repeated, tag = "5")] #[prost(uint32, repeated, tag = "5")]
pub eccpblmlgjd: ::prost::alloc::vec::Vec<u32>, pub eccpblmlgjd: ::prost::alloc::vec::Vec<u32>,
#[prost(int32, repeated, tag = "6")] #[prost(int32, repeated, tag = "6")]
pub nefkjpdkgkg: ::prost::alloc::vec::Vec<i32>, pub newbie_group_sync: ::prost::alloc::vec::Vec<i32>,
#[prost(uint32, repeated, tag = "7")] #[prost(uint32, repeated, tag = "7")]
pub phnclmchljo: ::prost::alloc::vec::Vec<u32>, pub phnclmchljo: ::prost::alloc::vec::Vec<u32>,
#[prost(message, optional, tag = "8")] #[prost(message, optional, tag = "8")]
pub nhmefdfdmfi: ::core::option::Option<Jdbfjibpilf>, pub achievement_data: ::core::option::Option<AchievementSync>,
#[prost(int32, repeated, tag = "9")] #[prost(int32, repeated, tag = "9")]
pub eghlpajmnmj: ::prost::alloc::vec::Vec<i32>, pub unlock_id_sync: ::prost::alloc::vec::Vec<i32>,
#[prost(message, repeated, tag = "11")] #[prost(message, repeated, tag = "11")]
pub ppfekhgdpbo: ::prost::alloc::vec::Vec<Jmkeekhhheb>, pub quick_access_data_list: ::prost::alloc::vec::Vec<QuickAccessData>,
#[prost(uint32, repeated, tag = "12")] #[prost(uint32, repeated, tag = "12")]
pub mbpddlclekm: ::prost::alloc::vec::Vec<u32>, pub teleport_area_id_sync: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, tag = "13")] #[prost(uint32, repeated, tag = "13")]
pub ooiblmdebdf: ::prost::alloc::vec::Vec<u32>, pub ooiblmdebdf: ::prost::alloc::vec::Vec<u32>,
#[prost(message, optional, tag = "14")] #[prost(message, optional, tag = "14")]
pub trashbin_hermit_data: ::core::option::Option<Dmhpnnmggnm>, pub trashbin_hermit_data: ::core::option::Option<TrashbinHermitSync>,
#[prost(message, optional, tag = "15")] #[prost(message, optional, tag = "15")]
pub geoagplahii: ::core::option::Option<Noggnmadkfj>, pub geoagplahii: ::core::option::Option<Noggnmadkfj>,
#[prost(message, optional, tag = "201")] #[prost(message, optional, tag = "201")]
pub post_girl_data: ::core::option::Option<Jakchjjkccg>, pub post_girl_data: ::core::option::Option<PostGirlSync>,
#[prost(message, optional, tag = "281")] #[prost(message, optional, tag = "281")]
pub aigkcfkaadf: ::core::option::Option<Mjhicllmahe>, pub check_item_data: ::core::option::Option<CheckItemSync>,
#[prost(message, optional, tag = "576")] #[prost(message, optional, tag = "576")]
pub hbhfjgbahgf: ::core::option::Option<Baodmddgagi>, pub calling_card_data: ::core::option::Option<CallingCardSync>,
#[prost(message, repeated, tag = "719")] #[prost(message, repeated, tag = "719")]
pub gpfoecchico: ::prost::alloc::vec::Vec<Hmchpbjljen>, pub gpfoecchico: ::prost::alloc::vec::Vec<Hmchpbjljen>,
#[prost(message, optional, tag = "947")] #[prost(message, optional, tag = "947")]
@ -20554,7 +20572,7 @@ pub struct Poceahbflhh {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Gfkfedpdede { pub struct InterKnotData {
#[prost(uint32, repeated, tag = "2")] #[prost(uint32, repeated, tag = "2")]
pub gbcaeaicghd: ::prost::alloc::vec::Vec<u32>, pub gbcaeaicghd: ::prost::alloc::vec::Vec<u32>,
#[prost(message, repeated, tag = "6")] #[prost(message, repeated, tag = "6")]
@ -21557,11 +21575,11 @@ pub struct Jlmgodmceei {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Jcdicmoemef { pub struct CollectData {
#[prost(int32, repeated, tag = "5")] #[prost(int32, repeated, tag = "5")]
pub nkggmfpghgi: ::prost::alloc::vec::Vec<i32>, pub obtained_list: ::prost::alloc::vec::Vec<i32>,
#[prost(int32, repeated, tag = "10")] #[prost(int32, repeated, tag = "10")]
pub llnmdibojio: ::prost::alloc::vec::Vec<i32>, pub not_viewed_list: ::prost::alloc::vec::Vec<i32>,
} }
#[derive(proto_gen::CmdID)] #[derive(proto_gen::CmdID)]
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
@ -21643,7 +21661,7 @@ pub struct Maiibgeljck {}
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Mlcoggemeon { pub struct ChangePostGirlScRsp {
#[xor(1039)] #[xor(1039)]
#[prost(int32, tag = "15")] #[prost(int32, tag = "15")]
pub retcode: i32, pub retcode: i32,
@ -22121,7 +22139,7 @@ pub struct Nlahgfcdang {
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Kakpeoaekgb { pub struct Kakpeoaekgb {
#[prost(uint32, repeated, tag = "2")] #[prost(uint32, repeated, tag = "2")]
pub nkggmfpghgi: ::prost::alloc::vec::Vec<u32>, pub obtained_list: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, tag = "12")] #[prost(uint32, repeated, tag = "12")]
pub ihnjbpcpfkf: ::prost::alloc::vec::Vec<u32>, pub ihnjbpcpfkf: ::prost::alloc::vec::Vec<u32>,
#[prost(message, repeated, tag = "14")] #[prost(message, repeated, tag = "14")]
@ -25132,7 +25150,7 @@ pub struct Fiplebkibam {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Goemgnfnmbj { pub struct ModNicknameScRsp {
#[xor(2680)] #[xor(2680)]
#[prost(int32, tag = "14")] #[prost(int32, tag = "14")]
pub retcode: i32, pub retcode: i32,
@ -25528,21 +25546,21 @@ pub struct Bhdmjhjmagn {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Jmkeekhhheb { pub struct QuickAccessData {
#[xor(1243)] #[xor(1243)]
#[prost(uint32, tag = "9")] #[prost(uint32, tag = "9")]
pub bdccceafoak: u32, pub quick_access_index: u32,
#[prost(enumeration = "Ihjpmaigida", tag = "14")] #[prost(enumeration = "QuickAccessType", tag = "14")]
pub r#type: i32, pub r#type: i32,
#[xor(8904)] #[xor(8904)]
#[prost(uint32, tag = "15")] #[prost(uint32, tag = "15")]
pub kabhjlklfla: u32, pub btn_id: u32,
} }
#[derive(proto_gen::CmdID)] #[derive(proto_gen::CmdID)]
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Jakchjjkccg { pub struct PostGirlSync {
#[prost(uint32, repeated, tag = "3")] #[prost(uint32, repeated, tag = "3")]
pub selected_post_girl_id_list: ::prost::alloc::vec::Vec<u32>, pub selected_post_girl_id_list: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, tag = "5")] #[prost(uint32, repeated, tag = "5")]
@ -25971,7 +25989,7 @@ pub struct Pkamllhinjh {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Abkjgdcbglg { pub struct AchievementData {
#[prost(message, repeated, tag = "13")] #[prost(message, repeated, tag = "13")]
pub emldeipfmma: ::prost::alloc::vec::Vec<Gokcdfmheel>, pub emldeipfmma: ::prost::alloc::vec::Vec<Gokcdfmheel>,
} }
@ -28136,7 +28154,7 @@ pub struct Cedamedgpaj {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Efokkbbamai { pub struct CheckItemData {
#[prost(uint32, repeated, tag = "3")] #[prost(uint32, repeated, tag = "3")]
pub aighoeokkab: ::prost::alloc::vec::Vec<u32>, pub aighoeokkab: ::prost::alloc::vec::Vec<u32>,
} }
@ -29373,7 +29391,7 @@ pub struct Dchlkminkdl {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Bmhfpdagadk { pub struct CollectMapSync {
#[prost(int32, repeated, tag = "1")] #[prost(int32, repeated, tag = "1")]
pub oeaialfmgng: ::prost::alloc::vec::Vec<i32>, pub oeaialfmgng: ::prost::alloc::vec::Vec<i32>,
#[prost(int32, repeated, tag = "3")] #[prost(int32, repeated, tag = "3")]
@ -29846,7 +29864,7 @@ pub struct Cmheepmblfb {}
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Adkopojpgdl { pub struct Adkopojpgdl {
#[prost(message, optional, tag = "1")] #[prost(message, optional, tag = "1")]
pub ogcaaminman: ::core::option::Option<StringEntry>, pub quest_data_sync: ::core::option::Option<StringEntry>,
#[prost(enumeration = "Iojdgcmbnmj", tag = "2")] #[prost(enumeration = "Iojdgcmbnmj", tag = "2")]
pub ghggdeglhka: i32, pub ghggdeglhka: i32,
#[prost(enumeration = "QuestStatus", tag = "3")] #[prost(enumeration = "QuestStatus", tag = "3")]
@ -32078,7 +32096,7 @@ pub struct Labeghdefnk {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Ecpbnceekbi { pub struct QuestDataSync {
#[prost(message, optional, tag = "1")] #[prost(message, optional, tag = "1")]
pub khlflpbafip: ::core::option::Option<Fgddalkmick>, pub khlflpbafip: ::core::option::Option<Fgddalkmick>,
#[prost(message, optional, tag = "2")] #[prost(message, optional, tag = "2")]
@ -33166,7 +33184,7 @@ pub struct Ekiechelnjg {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Ipimhifmfni { pub struct WorkBenchSync {
#[prost(uint32, repeated, tag = "10")] #[prost(uint32, repeated, tag = "10")]
pub docddodnlon: ::prost::alloc::vec::Vec<u32>, pub docddodnlon: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, tag = "4")] #[prost(uint32, repeated, tag = "4")]
@ -33474,7 +33492,7 @@ pub struct Ddjecikoocn {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Knohmlebcbm { pub struct MusicPlayerData {
#[xor(13457)] #[xor(13457)]
#[prost(uint32, tag = "13")] #[prost(uint32, tag = "13")]
pub mhgnhkmhlgj: u32, pub mhgnhkmhlgj: u32,
@ -34261,7 +34279,7 @@ pub struct Jelnghnjbph {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Jdbfjibpilf { pub struct AchievementSync {
#[prost(message, repeated, tag = "15")] #[prost(message, repeated, tag = "15")]
pub emldeipfmma: ::prost::alloc::vec::Vec<Gokcdfmheel>, pub emldeipfmma: ::prost::alloc::vec::Vec<Gokcdfmheel>,
} }
@ -37711,29 +37729,29 @@ impl Monopkiegjo {
#[derive(proto_gen::XorFields)] #[derive(proto_gen::XorFields)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)] #[repr(i32)]
pub enum Ihjpmaigida { pub enum QuickAccessType {
Mdmamoibbhc = 0, None = 0,
Opbobdiclco = 1, Direct = 1,
Apfhncfijli = 2, QuickMenu = 2,
} }
impl Ihjpmaigida { impl QuickAccessType {
/// String value of the enum field names used in the ProtoBuf definition. /// String value of the enum field names used in the ProtoBuf definition.
/// ///
/// The values are not transformed in any way and thus are considered stable /// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use. /// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str { pub fn as_str_name(&self) -> &'static str {
match self { match self {
Ihjpmaigida::Mdmamoibbhc => "IHJPMAIGIDA_MDMAMOIBBHC", QuickAccessType::None => "QUICK_ACCESS_TYPE_NONE",
Ihjpmaigida::Opbobdiclco => "IHJPMAIGIDA_OPBOBDICLCO", QuickAccessType::Direct => "QUICK_ACCESS_TYPE_DIRECT",
Ihjpmaigida::Apfhncfijli => "IHJPMAIGIDA_APFHNCFIJLI", QuickAccessType::QuickMenu => "QUICK_ACCESS_TYPE_QUICK_MENU",
} }
} }
/// Creates an enum from field names used in the ProtoBuf definition. /// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> { pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value { match value {
"IHJPMAIGIDA_MDMAMOIBBHC" => Some(Self::Mdmamoibbhc), "QUICK_ACCESS_TYPE_NONE" => Some(Self::None),
"IHJPMAIGIDA_OPBOBDICLCO" => Some(Self::Opbobdiclco), "QUICK_ACCESS_TYPE_DIRECT" => Some(Self::Direct),
"IHJPMAIGIDA_APFHNCFIJLI" => Some(Self::Apfhncfijli), "QUICK_ACCESS_TYPE_QUICK_MENU" => Some(Self::QuickMenu),
_ => None, _ => None,
} }
} }

View file

@ -14,12 +14,16 @@ pub struct BasicDataModelBin {
pub frontend_avatar_id: i32, pub frontend_avatar_id: i32,
#[prost(int32, tag = "6")] #[prost(int32, tag = "6")]
pub beginner_procedure_id: i32, pub beginner_procedure_id: i32,
#[prost(uint32, tag = "7")]
pub selected_post_girl_id: u32,
} }
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct LockModelBin { pub struct LockModelBin {
#[prost(int32, repeated, tag = "1")] #[prost(int32, repeated, tag = "1")]
pub unlock_list: ::prost::alloc::vec::Vec<i32>, pub unlock_list: ::prost::alloc::vec::Vec<i32>,
#[prost(map = "uint32, uint32", tag = "2")]
pub quick_access_list: ::std::collections::HashMap<u32, u32>,
} }
#[allow(clippy::derive_partial_eq_without_eq)] #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]