diff --git a/gameserver/src/game/entity/avatar.rs b/gameserver/src/game/entity/avatar.rs index 781b23c..18d185c 100644 --- a/gameserver/src/game/entity/avatar.rs +++ b/gameserver/src/game/entity/avatar.rs @@ -1,24 +1,22 @@ use proto::*; use super::*; -use crate::{ - data, - game::{constants, AvatarData}, - util, -}; +use crate::{data, game::AvatarData, util}; pub struct SceneAvatar { data: AvatarData, weapon: SceneWeapon, entity_id: u32, + pos: Vector, } impl SceneAvatar { - pub fn new(id: u32, data: AvatarData, weapon: SceneWeapon) -> Self { + pub fn new(id: u32, data: AvatarData, weapon: SceneWeapon, pos: Vector) -> Self { Self { data, weapon, entity_id: calc_entity_id(id, ProtEntityType::ProtEntityAvatar), + pos, } } @@ -85,7 +83,11 @@ impl SceneAvatar { impl Entity for SceneAvatar { fn get_position(&self) -> Vector { - constants::INITIAL_POS.clone() + self.pos.clone() + } + + fn set_position(&mut self, pos: Vector) { + self.pos = pos } fn get_entity_id(&self) -> u32 { diff --git a/gameserver/src/game/entity/mod.rs b/gameserver/src/game/entity/mod.rs index 2851562..730e4a6 100644 --- a/gameserver/src/game/entity/mod.rs +++ b/gameserver/src/game/entity/mod.rs @@ -8,6 +8,7 @@ pub use weapon::SceneWeapon; pub trait Entity { fn get_position(&self) -> Vector; + fn set_position(&mut self, pos: Vector); fn get_entity_id(&self) -> u32; fn get_entity_type(&self) -> ProtEntityType; fn info(&self) -> SceneEntityInfo; diff --git a/gameserver/src/game/entity/weapon.rs b/gameserver/src/game/entity/weapon.rs index f9cab54..95d6053 100644 --- a/gameserver/src/game/entity/weapon.rs +++ b/gameserver/src/game/entity/weapon.rs @@ -44,6 +44,8 @@ impl Entity for SceneWeapon { Vector::default() } + fn set_position(&mut self, _pos: Vector) {} + fn get_entity_id(&self) -> u32 { self.entity_id } diff --git a/gameserver/src/game/scene.rs b/gameserver/src/game/scene.rs index b7b4dd3..906ea8c 100644 --- a/gameserver/src/game/scene.rs +++ b/gameserver/src/game/scene.rs @@ -2,16 +2,19 @@ use std::sync::atomic::{AtomicU32, Ordering}; use anyhow::Result; use proto::*; +use rand::RngCore; use super::{ + constants, entity::{Entity, SceneAvatar, SceneWeapon}, AvatarData, }; -use crate::net::PlayerSession; +use crate::{net::PlayerSession, util}; pub struct Scene { id: u32, entity_id_counter: AtomicU32, + last_player_pos: Vector, pub avatars: Vec, pub cur_entity_id: u32, } @@ -20,6 +23,7 @@ impl Scene { pub fn new(id: u32) -> Self { Self { id, + last_player_pos: constants::INITIAL_POS.clone(), entity_id_counter: AtomicU32::new(0), avatars: Vec::new(), cur_entity_id: 0, @@ -37,8 +41,53 @@ impl Scene { pub fn add_avatar(&mut self, data: AvatarData) { let weapon = SceneWeapon::new(self.next_entity_id(), data.weapon.clone()); - self.avatars - .push(SceneAvatar::new(self.next_entity_id(), data, weapon)); + self.avatars.push(SceneAvatar::new( + self.next_entity_id(), + data, + weapon, + self.cur_player_pos(), + )); + } + + pub fn cur_player_pos(&self) -> Vector { + if let Some(avatar) = self + .avatars + .iter() + .find(|a| a.get_entity_id() == self.cur_entity_id) + { + avatar.get_position() + } else { + self.last_player_pos.clone() + } + } + + pub fn teleport(&mut self, to_pos: &Vector) { + self.last_player_pos = to_pos.clone(); + + for avatar in self.avatars.iter_mut() { + avatar.set_position(self.last_player_pos.clone()) + } + } + + pub async fn enter(&mut self, session: &PlayerSession, enter_type: EnterType) -> Result<()> { + let begin_time_ms = util::cur_timestamp_ms(); + let begin_time = begin_time_ms / 1000; + let scene_id = self.id; + let player_uid = session.player_uid(); + + let enter_scene = PlayerEnterSceneNotify { + scene_begin_time: begin_time_ms, + scene_id, + enter_scene_token: rand::thread_rng().next_u32() % 65535, + scene_transaction: format!("{scene_id}-{player_uid}-{begin_time}-179398"), + pos: Some(self.last_player_pos.clone()), + prev_pos: Some(Vector::default()), + target_uid: player_uid, + r#type: enter_type.into(), + ..Default::default() + }; + + session.send(PLAYER_ENTER_SCENE_NOTIFY, enter_scene).await } pub async fn sync_scene_team(&self, session: &PlayerSession) -> Result<()> { diff --git a/gameserver/src/net/handlers/authentication.rs b/gameserver/src/net/handlers/authentication.rs index 13405d3..c55a79f 100644 --- a/gameserver/src/net/handlers/authentication.rs +++ b/gameserver/src/net/handlers/authentication.rs @@ -5,7 +5,9 @@ use rand::RngCore; use super::*; use crate::{ - data::EXCEL_COLLECTION, game::{constants, entity::Entity, prop_types::*}, util + data::EXCEL_COLLECTION, + game::{entity::Entity, prop_types::*}, + util, }; pub async fn on_get_player_token_req( @@ -37,9 +39,6 @@ pub async fn on_get_player_token_req( pub async fn on_player_login_req(session: &PlayerSession, _body: &PlayerLoginReq) -> Result<()> { session.player_info_mut().unlock_all_avatars(); - let login_time_ms = util::cur_timestamp_ms(); - let login_time = login_time_ms / 1000; - let props = [ (PROP_PLAYER_LEVEL, 5), (PROP_IS_FLYABLE, 1), @@ -74,7 +73,8 @@ pub async fn on_player_login_req(session: &PlayerSession, _body: &PlayerLoginReq .send( OPEN_STATE_UPDATE_NOTIFY, OpenStateUpdateNotify { - open_state_map: EXCEL_COLLECTION.open_state_configs + open_state_map: EXCEL_COLLECTION + .open_state_configs .iter() .map(|op| (op.id, 1)) .collect(), @@ -110,39 +110,20 @@ pub async fn on_player_login_req(session: &PlayerSession, _body: &PlayerLoginReq session.send(AVATAR_DATA_NOTIFY, avatar_data_notify).await?; - { - let mut scene = session.context.scene.borrow_mut(); - let player = session.player_info(); + let mut scene = session.context.scene.borrow_mut(); + let player = session.player_info(); - scene.add_avatar( - player - .avatars - .iter() - .find(|a| a.avatar_id == 10000091) - .unwrap() - .clone(), - ); + scene.add_avatar( + player + .avatars + .iter() + .find(|a| a.avatar_id == 10000091) + .unwrap() + .clone(), + ); - scene.cur_entity_id = scene.avatars.first().unwrap().get_entity_id() - } - - let scene = session.context.scene.borrow(); - let scene_id = scene.id(); - let player_uid = session.player_uid(); - let enter_scene = PlayerEnterSceneNotify { - scene_begin_time: 7313, - scene_id, - enter_scene_token: 15771, - scene_transaction: format!("{scene_id}-{player_uid}-{login_time}-179398"), - scene_tag_id_list: Vec::new(), - pos: Some(constants::INITIAL_POS.clone()), - prev_pos: Some(Vector::default()), - target_uid: player_uid, - r#type: EnterType::EnterSelf.into(), - ..Default::default() - }; - - session.send(PLAYER_ENTER_SCENE_NOTIFY, enter_scene).await?; + scene.cur_entity_id = scene.avatars.first().unwrap().get_entity_id(); + scene.enter(session, EnterType::EnterSelf).await?; session .send( diff --git a/gameserver/src/net/handlers/map.rs b/gameserver/src/net/handlers/map.rs new file mode 100644 index 0000000..e587607 --- /dev/null +++ b/gameserver/src/net/handlers/map.rs @@ -0,0 +1,14 @@ +use super::*; + +pub async fn on_mark_map_req(session: &PlayerSession, body: &MarkMapReq) -> Result<()> { + if let Some(mark) = body.mark.as_ref() { + let mut scene = session.context.scene.borrow_mut(); + let mut pos = mark.pos.clone().unwrap(); + pos.y = 500.0; + + scene.teleport(&pos); + scene.enter(session, EnterType::EnterJump).await?; + } + + session.send(MARK_MAP_RSP, MarkMapRsp::default()).await +} diff --git a/gameserver/src/net/handlers/mod.rs b/gameserver/src/net/handlers/mod.rs index 2a3a16e..2c3ea32 100644 --- a/gameserver/src/net/handlers/mod.rs +++ b/gameserver/src/net/handlers/mod.rs @@ -1,11 +1,13 @@ mod authentication; mod avatar; +mod map; mod time; mod world; use anyhow::Result; pub use authentication::*; pub use avatar::*; +pub use map::*; use proto::*; pub use time::*; pub use world::*; diff --git a/gameserver/src/net/packet.rs b/gameserver/src/net/packet.rs index 9edb1e7..ac2dcd8 100644 --- a/gameserver/src/net/packet.rs +++ b/gameserver/src/net/packet.rs @@ -136,4 +136,5 @@ trait_handler! { ChangeAvatarReq 3330; EvtAvatarSitDownReq 764; EvtAvatarStandUpNotify 8549; + MarkMapReq 7802; } diff --git a/proto/out/_.rs b/proto/out/_.rs index 89982e5..faad89a 100644 --- a/proto/out/_.rs +++ b/proto/out/_.rs @@ -11,16 +11,16 @@ pub struct Ofcnfieofjd { /// CmdId: 7802 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct Lejfdkbfmgo { +pub struct MarkMapReq { #[prost(message, optional, tag = "4")] - pub leeiienppam: ::core::option::Option, + pub mark: ::core::option::Option, #[prost(message, optional, tag = "2")] - pub igcjmcbldjg: ::core::option::Option, - #[prost(enumeration = "lejfdkbfmgo::Ebneiedplpg", tag = "11")] - pub gfokgkdiiph: i32, + pub old: ::core::option::Option, + #[prost(enumeration = "mark_map_req::Operation", tag = "11")] + pub op: i32, } -/// Nested message and enum types in `LEJFDKBFMGO`. -pub mod lejfdkbfmgo { +/// Nested message and enum types in `MarkMapReq`. +pub mod mark_map_req { #[derive( Clone, Copy, @@ -33,32 +33,32 @@ pub mod lejfdkbfmgo { ::prost::Enumeration )] #[repr(i32)] - pub enum Ebneiedplpg { + pub enum Operation { Add = 0, Mod = 1, Del = 2, Get = 3, } - impl Ebneiedplpg { + impl Operation { /// 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 { - Ebneiedplpg::Add => "EBNEIEDPLPG_Add", - Ebneiedplpg::Mod => "EBNEIEDPLPG_Mod", - Ebneiedplpg::Del => "EBNEIEDPLPG_Del", - Ebneiedplpg::Get => "EBNEIEDPLPG_Get", + Operation::Add => "Operation_Add", + Operation::Mod => "Operation_Mod", + Operation::Del => "Operation_Del", + Operation::Get => "Operation_Get", } } /// Creates an enum from field names used in the ProtoBuf definition. pub fn from_str_name(value: &str) -> ::core::option::Option { match value { - "EBNEIEDPLPG_Add" => Some(Self::Add), - "EBNEIEDPLPG_Mod" => Some(Self::Mod), - "EBNEIEDPLPG_Del" => Some(Self::Del), - "EBNEIEDPLPG_Get" => Some(Self::Get), + "Operation_Add" => Some(Self::Add), + "Operation_Mod" => Some(Self::Mod), + "Operation_Del" => Some(Self::Del), + "Operation_Get" => Some(Self::Get), _ => None, } } @@ -897,7 +897,7 @@ pub struct Lbhkijoadff { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Jfehnaejhal { #[prost(message, optional, tag = "8")] - pub gfokgkdiiph: ::core::option::Option, + pub op: ::core::option::Option, #[prost(uint32, tag = "14")] pub bbhadchkhpo: u32, #[prost(uint32, tag = "6")] @@ -1657,7 +1657,7 @@ pub struct Cioinleeemn { #[prost(message, optional, tag = "9")] pub entity: ::core::option::Option, #[prost(uint32, tag = "4")] - pub aagijbfjkak: u32, + pub quest_id: u32, #[prost(uint32, tag = "2")] pub parent_quest_id: u32, #[prost(bool, tag = "12")] @@ -1889,7 +1889,7 @@ pub mod liflookhepo { #[prost(bool, tag = "2")] pub knelagpemhm: bool, #[prost(uint32, tag = "12")] - pub aagijbfjkak: u32, + pub quest_id: u32, #[prost(uint32, tag = "13")] pub mjlibgicacg: u32, } @@ -2893,7 +2893,7 @@ pub struct AvatarEnterSceneInfo { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Gndfiidbgmp { #[prost(uint32, tag = "11")] - pub aagijbfjkak: u32, + pub quest_id: u32, #[prost(uint32, tag = "8")] pub entity_id: u32, #[prost(uint32, tag = "3")] @@ -4554,7 +4554,7 @@ pub struct Odgpempeeml {} #[derive(Clone, PartialEq, ::prost::Message)] pub struct Ioandanhmjl { #[prost(uint32, tag = "5")] - pub aagijbfjkak: u32, + pub quest_id: u32, #[prost(uint32, tag = "13")] pub state: u32, #[prost(uint32, tag = "10")] @@ -7658,7 +7658,7 @@ pub struct Mhjfbnaniha { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Kijebomljgi { #[prost(uint32, tag = "10")] - pub aagijbfjkak: u32, + pub quest_id: u32, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -9906,7 +9906,7 @@ pub struct Cjpkmhnbijb { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Hiipehiplhj { #[prost(uint32, tag = "11")] - pub aagijbfjkak: u32, + pub quest_id: u32, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -10639,7 +10639,7 @@ pub struct Ngjmlhicoll { #[prost(uint32, repeated, tag = "15")] pub apkobinehkb: ::prost::alloc::vec::Vec, #[prost(uint32, tag = "13")] - pub aagijbfjkak: u32, + pub quest_id: u32, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -11161,7 +11161,7 @@ pub struct Aedbjmepaba { #[prost(enumeration = "aedbjmepaba::Adpedjjijdd", tag = "11")] pub state: i32, #[prost(uint32, tag = "14")] - pub aagijbfjkak: u32, + pub quest_id: u32, #[prost(uint32, tag = "2")] pub omeiljenicn: u32, #[prost(uint32, tag = "7")] @@ -11354,7 +11354,7 @@ pub struct Kakehjmiglh { #[prost(bool, tag = "12")] pub gflglppegjk: bool, #[prost(uint32, tag = "10")] - pub aagijbfjkak: u32, + pub quest_id: u32, #[prost(uint32, tag = "6")] pub phkohddafpa: u32, } @@ -11369,7 +11369,7 @@ pub struct Fimhcnhplhd { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Hjeadllmbbc { #[prost(message, optional, tag = "1")] - pub leeiienppam: ::core::option::Option, + pub mark: ::core::option::Option, } /// CmdId: 7902 #[allow(clippy::derive_partial_eq_without_eq)] @@ -12436,7 +12436,7 @@ pub struct Lbohlcbepfl { #[prost(uint32, repeated, tag = "13")] pub kfgbjkgenfi: ::prost::alloc::vec::Vec, #[prost(message, repeated, tag = "12")] - pub jfboglilobd: ::prost::alloc::vec::Vec, + pub mark_list: ::prost::alloc::vec::Vec, #[prost(bool, tag = "10")] pub abjicjkehah: bool, #[prost(bool, tag = "15")] @@ -12485,7 +12485,7 @@ pub struct Ecackgngdhj { #[prost(uint32, repeated, tag = "2")] pub djhgadgnhno: ::prost::alloc::vec::Vec, #[prost(uint32, tag = "5")] - pub aagijbfjkak: u32, + pub quest_id: u32, } /// CmdId: 23261 #[allow(clippy::derive_partial_eq_without_eq)] @@ -12906,7 +12906,7 @@ pub struct Iheaahkbchn { #[prost(int32, tag = "13")] pub retcode: i32, #[prost(enumeration = "Cpmhcibnkmj", tag = "5")] - pub gfokgkdiiph: i32, + pub op: i32, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -13940,7 +13940,7 @@ pub struct Klbpjpiiijp { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Chgengfloag { #[prost(uint32, tag = "3")] - pub aagijbfjkak: u32, + pub quest_id: u32, #[prost(uint32, tag = "4")] pub nohiaaphhkf: u32, #[prost(uint32, tag = "5")] @@ -14447,7 +14447,7 @@ pub struct Gdjlgibbiih { #[prost(message, repeated, tag = "6")] pub eniaoadffpi: ::prost::alloc::vec::Vec, #[prost(uint32, tag = "5")] - pub aagijbfjkak: u32, + pub quest_id: u32, #[prost(bool, tag = "1")] pub pfnlioenalo: bool, #[prost(bool, tag = "3")] @@ -14916,7 +14916,7 @@ pub struct Hhmppapdmkg { #[prost(uint32, tag = "5")] pub entity_id: u32, #[prost(uint32, tag = "12")] - pub aagijbfjkak: u32, + pub quest_id: u32, } /// CmdId: 24087 #[allow(clippy::derive_partial_eq_without_eq)] @@ -15019,7 +15019,7 @@ pub struct Kanbpggkemd { #[prost(uint32, tag = "7")] pub jjgeokjgeej: u32, #[prost(enumeration = "Cpmhcibnkmj", tag = "14")] - pub gfokgkdiiph: i32, + pub op: i32, } /// CmdId: 21626 #[allow(clippy::derive_partial_eq_without_eq)] @@ -17571,7 +17571,7 @@ pub struct Hhhcenhoddn { #[prost(int32, tag = "7")] pub retcode: i32, #[prost(uint32, tag = "12")] - pub aagijbfjkak: u32, + pub quest_id: u32, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -18501,9 +18501,9 @@ pub struct Omggbmjfkpe { /// CmdId: 25569 #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct Kpdddliagai { +pub struct MarkMapRsp { #[prost(message, repeated, tag = "14")] - pub jfboglilobd: ::prost::alloc::vec::Vec, + pub mark_list: ::prost::alloc::vec::Vec, #[prost(int32, tag = "4")] pub retcode: i32, } @@ -19216,7 +19216,7 @@ pub struct Jpeajcodfbe { #[prost(message, repeated, tag = "12")] pub jnanlopjgmc: ::prost::alloc::vec::Vec, #[prost(uint32, tag = "6")] - pub aagijbfjkak: u32, + pub quest_id: u32, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -20193,7 +20193,7 @@ pub struct Ieghhfjhfpa { #[prost(uint32, tag = "8")] pub okdlgpaafhc: u32, #[prost(uint32, tag = "1")] - pub aagijbfjkak: u32, + pub quest_id: u32, #[prost(bool, tag = "5")] pub mbfgongjfdn: bool, #[prost(uint32, tag = "7")] @@ -21390,7 +21390,7 @@ pub struct Flmmpoonphk { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Jekhiockaad { #[prost(uint32, tag = "14")] - pub aagijbfjkak: u32, + pub quest_id: u32, #[prost(int32, tag = "7")] pub retcode: i32, } @@ -22779,7 +22779,7 @@ pub struct Fmjcacaffmk { #[prost(message, optional, tag = "5")] pub aobjhjihjdn: ::core::option::Option, #[prost(enumeration = "Cpmhcibnkmj", tag = "3")] - pub gfokgkdiiph: i32, + pub op: i32, } /// CmdId: 8028 #[allow(clippy::derive_partial_eq_without_eq)] @@ -26287,7 +26287,7 @@ pub struct Afkfhplmfmb { #[prost(message, repeated, tag = "7")] pub nniilnfgjjb: ::prost::alloc::vec::Vec, #[prost(uint32, tag = "10")] - pub aagijbfjkak: u32, + pub quest_id: u32, #[prost(uint32, tag = "15")] pub parent_quest_id: u32, #[prost(uint32, tag = "12")] @@ -26300,7 +26300,7 @@ pub struct Nehfkmeooha { #[prost(uint32, tag = "4")] pub abbofbbkapb: u32, #[prost(uint32, tag = "3")] - pub aagijbfjkak: u32, + pub quest_id: u32, #[prost(uint32, tag = "10")] pub parent_quest_id: u32, #[prost(int32, tag = "6")] @@ -27062,7 +27062,7 @@ pub mod onheihnjnka { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Lhebfcljnla { #[prost(uint32, tag = "10")] - pub aagijbfjkak: u32, + pub quest_id: u32, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -28774,7 +28774,7 @@ pub struct Dfdipgagjcm { #[prost(message, repeated, tag = "6")] pub mccnddlmpin: ::prost::alloc::vec::Vec, #[prost(uint32, tag = "2")] - pub aagijbfjkak: u32, + pub quest_id: u32, } /// CmdId: 22510 #[allow(clippy::derive_partial_eq_without_eq)] @@ -29533,23 +29533,23 @@ pub mod dkbchkjeeie { } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct Nglnpheglgn { +pub struct MapMarkPoint { #[prost(message, optional, tag = "3")] pub pos: ::core::option::Option, #[prost(string, tag = "2")] pub name: ::prost::alloc::string::String, - #[prost(enumeration = "Lkabjppedih", tag = "4")] - pub fcjglbamakh: i32, + #[prost(enumeration = "MapMarkPointType", tag = "4")] + pub point_type: i32, #[prost(uint32, tag = "5")] pub monster_id: u32, #[prost(uint32, tag = "1")] pub scene_id: u32, - #[prost(enumeration = "Dknbdkbcpjo", tag = "6")] - pub nimceenhdkm: i32, + #[prost(enumeration = "MapMarkFromType", tag = "6")] + pub from_type: i32, #[prost(uint32, tag = "8")] pub emolgaafllp: u32, #[prost(uint32, tag = "7")] - pub aagijbfjkak: u32, + pub quest_id: u32, } /// CmdId: 29498 #[allow(clippy::derive_partial_eq_without_eq)] @@ -29622,7 +29622,7 @@ pub struct Kmpccabkcee {} #[derive(Clone, PartialEq, ::prost::Message)] pub struct Dkelhcecdpo { #[prost(uint32, tag = "7")] - pub aagijbfjkak: u32, + pub quest_id: u32, #[prost(uint32, tag = "11")] pub homjegjkgom: u32, #[prost(int32, tag = "2")] @@ -31110,7 +31110,7 @@ pub mod kigbchgjdha { #[prost(uint32, tag = "10")] pub dloklkcahpp: u32, #[prost(uint32, tag = "8")] - pub aagijbfjkak: u32, + pub quest_id: u32, } #[derive( Clone, @@ -32507,7 +32507,7 @@ pub struct Ifnokkffbio { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Eapmidblefj { #[prost(uint32, tag = "13")] - pub aagijbfjkak: u32, + pub quest_id: u32, #[prost(uint32, tag = "1")] pub homjegjkgom: u32, } @@ -32667,7 +32667,7 @@ pub struct Ggjbdcnoaih { #[prost(uint32, tag = "12")] pub entity_id: u32, #[prost(uint32, tag = "11")] - pub aagijbfjkak: u32, + pub quest_id: u32, } /// CmdId: 2656 #[allow(clippy::derive_partial_eq_without_eq)] @@ -33099,7 +33099,7 @@ pub struct Hcgfamcmiij { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Glccangogea { #[prost(message, repeated, tag = "11")] - pub jfboglilobd: ::prost::alloc::vec::Vec, + pub mark_list: ::prost::alloc::vec::Vec, } /// CmdId: 21238 #[allow(clippy::derive_partial_eq_without_eq)] @@ -35394,14 +35394,14 @@ pub mod hnmiejbjimb { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct Dhiiiggagmk { - #[prost(oneof = "dhiiiggagmk::Gfokgkdiiph", tags = "5, 9, 15, 3, 4, 7, 13, 14")] - pub gfokgkdiiph: ::core::option::Option, + #[prost(oneof = "dhiiiggagmk::Op", tags = "5, 9, 15, 3, 4, 7, 13, 14")] + pub op: ::core::option::Option, } /// Nested message and enum types in `DHIIIGGAGMK`. pub mod dhiiiggagmk { #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum Gfokgkdiiph { + pub enum Op { #[prost(message, tag = "5")] OpRedraw(super::Mecblnblbbo), #[prost(message, tag = "9")] @@ -35833,7 +35833,7 @@ pub struct Mfokkhgaodh { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Eafhmdmlolm { #[prost(uint32, tag = "9")] - pub aagijbfjkak: u32, + pub quest_id: u32, } /// CmdId: 26723 #[allow(clippy::derive_partial_eq_without_eq)] @@ -38229,7 +38229,7 @@ pub struct Nkkhbleilch { #[prost(uint32, tag = "8")] pub phijcmelhfb: u32, #[prost(uint32, tag = "9")] - pub gfokgkdiiph: u32, + pub op: u32, #[prost(uint32, tag = "7")] pub pggehhnihod: u32, #[prost(uint32, tag = "4")] @@ -38829,7 +38829,7 @@ pub struct Flcbabihdlm { #[prost(int32, tag = "15")] pub retcode: i32, #[prost(uint32, tag = "6")] - pub aagijbfjkak: u32, + pub quest_id: u32, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -40242,7 +40242,7 @@ pub struct Ffdgmjklonk { #[prost(uint32, tag = "5")] pub jablkfbjnhp: u32, #[prost(uint32, tag = "4")] - pub aagijbfjkak: u32, + pub quest_id: u32, } /// CmdId: 8708 #[allow(clippy::derive_partial_eq_without_eq)] @@ -41151,7 +41151,7 @@ pub struct Eimfhonjiim { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Ajngpjibnja { #[prost(message, repeated, tag = "13")] - pub jfboglilobd: ::prost::alloc::vec::Vec, + pub mark_list: ::prost::alloc::vec::Vec, #[prost(int32, tag = "8")] pub retcode: i32, } @@ -42638,7 +42638,7 @@ pub struct Bcpdiknpmbm { #[prost(uint32, tag = "5")] pub entity_id: u32, #[prost(uint32, tag = "8")] - pub gfokgkdiiph: u32, + pub op: u32, #[prost(uint32, tag = "13")] pub pggehhnihod: u32, } @@ -45312,7 +45312,7 @@ pub struct Mdjhiogomni { #[derive(Clone, PartialEq, ::prost::Message)] pub struct Koepofignoh { #[prost(message, repeated, tag = "7")] - pub jfboglilobd: ::prost::alloc::vec::Vec, + pub mark_list: ::prost::alloc::vec::Vec, } /// CmdId: 7884 #[allow(clippy::derive_partial_eq_without_eq)] @@ -47733,29 +47733,29 @@ impl Lihghmndadc { } #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] -pub enum Dknbdkbcpjo { +pub enum MapMarkFromType { Noe = 0, Monster = 1, Quest = 2, } -impl Dknbdkbcpjo { +impl MapMarkFromType { /// 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 { - Dknbdkbcpjo::Noe => "DKNBDKBCPJO_Noe", - Dknbdkbcpjo::Monster => "DKNBDKBCPJO_Monster", - Dknbdkbcpjo::Quest => "DKNBDKBCPJO_Quest", + MapMarkFromType::Noe => "MapMarkFromType_Noe", + MapMarkFromType::Monster => "MapMarkFromType_Monster", + MapMarkFromType::Quest => "MapMarkFromType_Quest", } } /// Creates an enum from field names used in the ProtoBuf definition. pub fn from_str_name(value: &str) -> ::core::option::Option { match value { - "DKNBDKBCPJO_Noe" => Some(Self::Noe), - "DKNBDKBCPJO_Monster" => Some(Self::Monster), - "DKNBDKBCPJO_Quest" => Some(Self::Quest), + "MapMarkFromType_Noe" => Some(Self::Noe), + "MapMarkFromType_Monster" => Some(Self::Monster), + "MapMarkFromType_Quest" => Some(Self::Quest), _ => None, } } @@ -49134,7 +49134,7 @@ impl Hmpljgiladb { } #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] -pub enum Lkabjppedih { +pub enum MapMarkPointType { Npc = 0, Quest = 1, Special = 2, @@ -49143,32 +49143,32 @@ pub enum Lkabjppedih { Monster = 5, FishPool = 6, } -impl Lkabjppedih { +impl MapMarkPointType { /// 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 { - Lkabjppedih::Npc => "LKABJPPEDIH_Npc", - Lkabjppedih::Quest => "LKABJPPEDIH_Quest", - Lkabjppedih::Special => "LKABJPPEDIH_Special", - Lkabjppedih::Mine => "LKABJPPEDIH_Mine", - Lkabjppedih::Collection => "LKABJPPEDIH_Collection", - Lkabjppedih::Monster => "LKABJPPEDIH_Monster", - Lkabjppedih::FishPool => "LKABJPPEDIH_FishPool", + MapMarkPointType::Npc => "MapMarkPointType_Npc", + MapMarkPointType::Quest => "MapMarkPointType_Quest", + MapMarkPointType::Special => "MapMarkPointType_Special", + MapMarkPointType::Mine => "MapMarkPointType_Mine", + MapMarkPointType::Collection => "MapMarkPointType_Collection", + MapMarkPointType::Monster => "MapMarkPointType_Monster", + MapMarkPointType::FishPool => "MapMarkPointType_FishPool", } } /// Creates an enum from field names used in the ProtoBuf definition. pub fn from_str_name(value: &str) -> ::core::option::Option { match value { - "LKABJPPEDIH_Npc" => Some(Self::Npc), - "LKABJPPEDIH_Quest" => Some(Self::Quest), - "LKABJPPEDIH_Special" => Some(Self::Special), - "LKABJPPEDIH_Mine" => Some(Self::Mine), - "LKABJPPEDIH_Collection" => Some(Self::Collection), - "LKABJPPEDIH_Monster" => Some(Self::Monster), - "LKABJPPEDIH_FishPool" => Some(Self::FishPool), + "MapMarkPointType_Npc" => Some(Self::Npc), + "MapMarkPointType_Quest" => Some(Self::Quest), + "MapMarkPointType_Special" => Some(Self::Special), + "MapMarkPointType_Mine" => Some(Self::Mine), + "MapMarkPointType_Collection" => Some(Self::Collection), + "MapMarkPointType_Monster" => Some(Self::Monster), + "MapMarkPointType_FishPool" => Some(Self::FishPool), _ => None, } } diff --git a/proto/src/cmd_types.rs b/proto/src/cmd_types.rs index 89c827a..024f362 100644 --- a/proto/src/cmd_types.rs +++ b/proto/src/cmd_types.rs @@ -21,3 +21,4 @@ pub const SET_UP_AVATAR_TEAM_RSP: u16 = 29283; pub const CHANGE_AVATAR_RSP: u16 = 5958; pub const EVT_AVATAR_SIT_DOWN_RSP: u16 = 29232; pub const EVT_AVATAR_STAND_UP_NOTIFY: u16 = 8549; +pub const MARK_MAP_RSP: u16 = 25569; diff --git a/rustfmt.toml b/rustfmt.toml index 4fd08b8..46f9b9c 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -4,3 +4,4 @@ format_macro_matchers = true imports_granularity = "Crate" group_imports = "StdExternalCrate" wrap_comments = true +edition = "2021"