JaneDoe-ZS/nap_proto/out/bin.rs

258 lines
9.5 KiB
Rust
Raw Normal View History

2024-07-20 12:13:04 +00:00
// This file is @generated by prost-build.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BasicDataModelBin {
#[prost(string, tag = "1")]
pub nick_name: ::prost::alloc::string::String,
#[prost(uint32, tag = "2")]
pub level: u32,
#[prost(uint32, tag = "3")]
pub exp: u32,
#[prost(uint32, tag = "4")]
pub profile_icon: u32,
#[prost(int32, tag = "5")]
pub frontend_avatar_id: i32,
#[prost(int32, tag = "6")]
pub beginner_procedure_id: i32,
Teleport Map & Switching Dynamic Wallpaper Support, Gacha optimization (#2) ## Abstract This PR implements - Showing Teleports on map - Quick Menu usage - Dynamic Wallpaper switching - Settings UP for Bangboo pool (via CLI) ## Support list - The support of Teleport with map. - Unlocking the 3 buttons (Interknow, DMs, Map) as a prerequisite of the previous feature. By pressing 'F' you can also modify the buttons in Quick Menu. - Changing Dynamic Wallpaper to a specific one instead of being randomly chosen. **Notice that you can't use one's Dynamic Wallpaper if you don't own this agent.** - Fixed some Gacha bugs, including: - Obtained items won't be sent to your bag unless you're pulling the standard banner; - Obtained items won't show in bag until relogin; - Alternative command `gacha up` to choose the UP Bangboo. Start with `gacha up [player_uid]` and follow the guide to fill params. ## Principle - Player's `UnlockModelBin` stores Quick Menu data, with the player's chosen buttons and their positions. - Separate Gacha's DTO & Saving model to make it more standardized, and ensure ID validation is always performed. - Player's bag information is now sync to client appropriately after finishing any gacha operations. - `gacha up` search for pools with a `chooseable` Category Guarantee Policy, then list included items if user has provided the target pool's `gacha_schedule_id`. ## Known issues - **Specifically for 1.1 Beta**, teleport may meet these issues leading to a 'black screen', forcing you to restart the client (or use `player kick` command as an alternative). - Don't try to teleport to `治安局光映分署`, it won't succeed. This is the 32nd teleport out of the 31 ones defined visible in assets. - Don't close the page after opening map. Teleport to somewhere. - `gacha up` command is an alternative to in-game operation. You still can not see any bangboos in the collection when choosing Bangboo. Co-authored-by: YYHEggEgg <53960525+YYHEggEgg@users.noreply.github.com> Reviewed-on: https://git.xeondev.com/NewEriduPubSec/JaneDoe-ZS/pulls/2 Co-authored-by: YYHEggEgg <yyheggegg@xeondev.com> Co-committed-by: YYHEggEgg <yyheggegg@xeondev.com>
2024-08-06 17:15:04 +00:00
#[prost(uint32, tag = "7")]
pub selected_post_girl_id: u32,
2024-07-20 12:13:04 +00:00
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LockModelBin {
#[prost(int32, repeated, tag = "1")]
pub unlock_list: ::prost::alloc::vec::Vec<i32>,
Teleport Map & Switching Dynamic Wallpaper Support, Gacha optimization (#2) ## Abstract This PR implements - Showing Teleports on map - Quick Menu usage - Dynamic Wallpaper switching - Settings UP for Bangboo pool (via CLI) ## Support list - The support of Teleport with map. - Unlocking the 3 buttons (Interknow, DMs, Map) as a prerequisite of the previous feature. By pressing 'F' you can also modify the buttons in Quick Menu. - Changing Dynamic Wallpaper to a specific one instead of being randomly chosen. **Notice that you can't use one's Dynamic Wallpaper if you don't own this agent.** - Fixed some Gacha bugs, including: - Obtained items won't be sent to your bag unless you're pulling the standard banner; - Obtained items won't show in bag until relogin; - Alternative command `gacha up` to choose the UP Bangboo. Start with `gacha up [player_uid]` and follow the guide to fill params. ## Principle - Player's `UnlockModelBin` stores Quick Menu data, with the player's chosen buttons and their positions. - Separate Gacha's DTO & Saving model to make it more standardized, and ensure ID validation is always performed. - Player's bag information is now sync to client appropriately after finishing any gacha operations. - `gacha up` search for pools with a `chooseable` Category Guarantee Policy, then list included items if user has provided the target pool's `gacha_schedule_id`. ## Known issues - **Specifically for 1.1 Beta**, teleport may meet these issues leading to a 'black screen', forcing you to restart the client (or use `player kick` command as an alternative). - Don't try to teleport to `治安局光映分署`, it won't succeed. This is the 32nd teleport out of the 31 ones defined visible in assets. - Don't close the page after opening map. Teleport to somewhere. - `gacha up` command is an alternative to in-game operation. You still can not see any bangboos in the collection when choosing Bangboo. Co-authored-by: YYHEggEgg <53960525+YYHEggEgg@users.noreply.github.com> Reviewed-on: https://git.xeondev.com/NewEriduPubSec/JaneDoe-ZS/pulls/2 Co-authored-by: YYHEggEgg <yyheggegg@xeondev.com> Co-committed-by: YYHEggEgg <yyheggegg@xeondev.com>
2024-08-06 17:15:04 +00:00
#[prost(map = "uint32, uint32", tag = "2")]
pub quick_access_list: ::std::collections::HashMap<u32, u32>,
2024-07-20 12:13:04 +00:00
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AvatarSkillBin {
#[prost(uint32, tag = "1")]
pub skill_type: u32,
#[prost(uint32, tag = "2")]
pub level: u32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AvatarBin {
#[prost(uint32, tag = "1")]
pub template_id: u32,
#[prost(uint32, tag = "2")]
pub level: u32,
#[prost(uint32, tag = "3")]
pub exp: u32,
#[prost(uint32, tag = "4")]
pub star: u32,
#[prost(uint32, tag = "5")]
pub rank: u32,
#[prost(uint32, tag = "6")]
pub unlocked_talent_num: u32,
#[prost(uint32, tag = "9")]
pub weapon_uid: u32,
2024-07-20 12:13:04 +00:00
#[prost(message, repeated, tag = "7")]
pub avatar_skill_list: ::prost::alloc::vec::Vec<AvatarSkillBin>,
#[prost(bool, repeated, tag = "8")]
pub talent_switch_list: ::prost::alloc::vec::Vec<bool>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RoleModelBin {
#[prost(message, repeated, tag = "1")]
pub avatar_list: ::prost::alloc::vec::Vec<AvatarBin>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ResourceItemBin {
#[prost(uint32, tag = "1")]
pub template_id: u32,
#[prost(int32, tag = "2")]
pub num: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WeaponBin {
#[prost(uint32, tag = "1")]
pub template_id: u32,
#[prost(uint32, tag = "2")]
pub uid: u32,
#[prost(uint32, tag = "3")]
pub level: u32,
#[prost(uint32, tag = "4")]
pub exp: u32,
#[prost(uint32, tag = "5")]
pub star: u32,
#[prost(uint32, tag = "6")]
pub refine_level: u32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
2024-07-20 12:13:04 +00:00
pub struct ItemModelBin {
#[prost(message, repeated, tag = "1")]
pub resource_list: ::prost::alloc::vec::Vec<ResourceItemBin>,
#[prost(message, repeated, tag = "2")]
pub weapon_list: ::prost::alloc::vec::Vec<WeaponBin>,
#[prost(uint32, tag = "10")]
pub item_uid_counter: u32,
2024-07-20 12:13:04 +00:00
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TransformBin {
#[prost(double, repeated, tag = "1")]
pub position: ::prost::alloc::vec::Vec<f64>,
#[prost(double, repeated, tag = "2")]
pub rotation: ::prost::alloc::vec::Vec<f64>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MainCityTimeBin {
#[prost(uint32, tag = "1")]
pub minutes: u32,
#[prost(uint32, tag = "2")]
pub day: u32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MainCityModelBin {
#[prost(message, optional, tag = "1")]
pub transform: ::core::option::Option<TransformBin>,
#[prost(message, optional, tag = "2")]
pub time: ::core::option::Option<MainCityTimeBin>,
#[prost(uint32, tag = "3")]
pub section_id: u32,
}
Gacha System implementation ## Abstract This PR implements - The Gacha System for client. Player can pull in defined pools with a similar experience to zenless & mihoyo gacha, and these status can be saved through player save and recovered. - `player kick` command in extra. Command `player kick [player_uid] (optional: [reason_id])` can be used to kick a player to offline. ## Support list - Similar probability to mihoyo gacha - QingYi & Jane Doe's Agent & W-Engine banner - Standard Banner: - Get a S Agent in the first 50 pulls - Get a 20% discount for the first 5 10-pulls - Choose a S Agent once you pulled for 300 - ~~Bangboo Banner~~ (not working due to other reasons) - Choosing your demanded S bangboo for 100% UP ## Principle - A complex configuration file `gacha.jsonc` is introduced to define all behaviours. - Gacha status is saved via `GachaModelBin`. For more informations about the config and save, an article is available [here](https://yyheggegg.github.io/mihomo-gio-blogs/zzz-gacha-impl-en/). ## Known issues - You can not see any bangboos in the collection when choosing Bangboo. - **Specifically for 1.1 Beta**, performing gacha may lead to random client issues, including: - The TVs showing rarity ending up in blank after its flash. - Game become black screen. - If clicking 'Skip' but not fast enough, game'll stuck and not able to do anything. You may try to click 'Skip' scarcely when 'REC' shows, or after all animations has stopped. Co-authored-by: YYHEggEgg <53960525+YYHEggEgg@users.noreply.github.com> Reviewed-on: https://git.xeondev.com/NewEriduPubSec/JaneDoe-ZS/pulls/1 Co-authored-by: YYHEggEgg <yyheggegg@xeondev.com> Co-committed-by: YYHEggEgg <yyheggegg@xeondev.com>
2024-08-04 11:41:23 +00:00
/// The progress record of a specified rarity. All maps' keys are category_guarantee_policy_tag.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GachaProgressBin {
/// The pity (counting how many pulls) of this pull (in previous record) or the next pull (in status).
#[prost(uint32, tag = "1")]
pub pity: u32,
/// The failure times of this category.
#[prost(map = "string, uint32", tag = "2")]
pub categories_progress_map: ::std::collections::HashMap<
::prost::alloc::string::String,
u32,
>,
/// The selected priority (category) for a Chooseable category.
#[prost(map = "string, string", tag = "3")]
pub categories_chosen_guarantee_category_map: ::std::collections::HashMap<
::prost::alloc::string::String,
::prost::alloc::string::String,
>,
/// The selectedpriority (a specified item) for a Chooseable category.
#[prost(map = "string, uint32", tag = "4")]
pub categories_chosen_guarantee_item_map: ::std::collections::HashMap<
::prost::alloc::string::String,
u32,
>,
/// The failure times for selected priority (a specified item).
#[prost(map = "string, uint32", tag = "5")]
pub categories_chosen_guarantee_progress_map: ::std::collections::HashMap<
::prost::alloc::string::String,
u32,
>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GachaExtraItemBin {
#[prost(uint32, tag = "1")]
pub extra_item_id: u32,
#[prost(uint32, tag = "2")]
pub extra_item_count: u32,
/// How many objects of the main item obtained in gacha is present in the player's bag (before gacha).
/// This is used for something like converting when there're extra characters.
#[prost(uint32, tag = "3")]
pub currently_gained: u32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GachaRecordBin {
#[prost(int64, tag = "1")]
pub pull_timestamp: i64,
#[prost(uint32, tag = "2")]
pub obtained_item_id: u32,
#[prost(uint32, tag = "3")]
pub gacha_id: u32,
/// The progress BEFORE this gacha is performed. uint32 is rarity.
#[prost(map = "uint32, message", tag = "4")]
pub progress_map: ::std::collections::HashMap<u32, GachaProgressBin>,
#[prost(message, optional, tag = "5")]
pub extra_item_bin: ::core::option::Option<GachaExtraItemBin>,
#[prost(enumeration = "GachaAddedItemType", tag = "6")]
pub item_type: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GachaStatusBin {
#[prost(map = "uint32, message", tag = "1")]
pub rarity_status_map: ::std::collections::HashMap<u32, GachaProgressBin>,
#[prost(map = "string, uint32", tag = "2")]
pub discount_usage_map: ::std::collections::HashMap<
::prost::alloc::string::String,
u32,
>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GachaModelBin {
/// Gacha Status query. string is sharing_guarantee_info_category.
#[prost(map = "string, message", tag = "1")]
pub gacha_status_map: ::std::collections::HashMap<
::prost::alloc::string::String,
GachaStatusBin,
>,
#[prost(message, repeated, tag = "2")]
pub gacha_records: ::prost::alloc::vec::Vec<GachaRecordBin>,
#[prost(uint32, tag = "3")]
pub random_number: u32,
}
2024-07-20 12:13:04 +00:00
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PlayerDataBin {
#[prost(message, optional, tag = "1")]
pub basic_data_model: ::core::option::Option<BasicDataModelBin>,
#[prost(message, optional, tag = "2")]
pub lock_model: ::core::option::Option<LockModelBin>,
#[prost(message, optional, tag = "3")]
pub role_model: ::core::option::Option<RoleModelBin>,
#[prost(message, optional, tag = "4")]
pub item_model: ::core::option::Option<ItemModelBin>,
#[prost(message, optional, tag = "5")]
pub main_city_model: ::core::option::Option<MainCityModelBin>,
Gacha System implementation ## Abstract This PR implements - The Gacha System for client. Player can pull in defined pools with a similar experience to zenless & mihoyo gacha, and these status can be saved through player save and recovered. - `player kick` command in extra. Command `player kick [player_uid] (optional: [reason_id])` can be used to kick a player to offline. ## Support list - Similar probability to mihoyo gacha - QingYi & Jane Doe's Agent & W-Engine banner - Standard Banner: - Get a S Agent in the first 50 pulls - Get a 20% discount for the first 5 10-pulls - Choose a S Agent once you pulled for 300 - ~~Bangboo Banner~~ (not working due to other reasons) - Choosing your demanded S bangboo for 100% UP ## Principle - A complex configuration file `gacha.jsonc` is introduced to define all behaviours. - Gacha status is saved via `GachaModelBin`. For more informations about the config and save, an article is available [here](https://yyheggegg.github.io/mihomo-gio-blogs/zzz-gacha-impl-en/). ## Known issues - You can not see any bangboos in the collection when choosing Bangboo. - **Specifically for 1.1 Beta**, performing gacha may lead to random client issues, including: - The TVs showing rarity ending up in blank after its flash. - Game become black screen. - If clicking 'Skip' but not fast enough, game'll stuck and not able to do anything. You may try to click 'Skip' scarcely when 'REC' shows, or after all animations has stopped. Co-authored-by: YYHEggEgg <53960525+YYHEggEgg@users.noreply.github.com> Reviewed-on: https://git.xeondev.com/NewEriduPubSec/JaneDoe-ZS/pulls/1 Co-authored-by: YYHEggEgg <yyheggegg@xeondev.com> Co-committed-by: YYHEggEgg <yyheggegg@xeondev.com>
2024-08-04 11:41:23 +00:00
#[prost(message, optional, tag = "6")]
pub gacha_model: ::core::option::Option<GachaModelBin>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum GachaAddedItemType {
None = 0,
Weapon = 1,
Character = 2,
Bangboo = 3,
}
impl GachaAddedItemType {
/// 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
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
GachaAddedItemType::None => "GACHA_ADDED_ITEM_TYPE_NONE",
GachaAddedItemType::Weapon => "GACHA_ADDED_ITEM_TYPE_WEAPON",
GachaAddedItemType::Character => "GACHA_ADDED_ITEM_TYPE_CHARACTER",
GachaAddedItemType::Bangboo => "GACHA_ADDED_ITEM_TYPE_BANGBOO",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"GACHA_ADDED_ITEM_TYPE_NONE" => Some(Self::None),
"GACHA_ADDED_ITEM_TYPE_WEAPON" => Some(Self::Weapon),
"GACHA_ADDED_ITEM_TYPE_CHARACTER" => Some(Self::Character),
"GACHA_ADDED_ITEM_TYPE_BANGBOO" => Some(Self::Bangboo),
_ => None,
}
}
2024-07-20 12:13:04 +00:00
}