mirror of
https://github.com/lcdr/lu_packets.git
synced 2026-05-06 18:49:49 -05:00
Add server-sent game messages
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,5 @@
|
||||
mod gm;
|
||||
|
||||
use std::io::Read;
|
||||
use std::io::Result as Res;
|
||||
|
||||
@@ -7,6 +9,7 @@ use lu_packets_derive::FromVariants;
|
||||
|
||||
use crate::common::{ObjId, LuStr33, LuWStr33};
|
||||
use super::{Vector3, ZoneId};
|
||||
use self::gm::SubjectGameMessage;
|
||||
|
||||
pub type LuMessage = crate::general::client::LuMessage<ClientMessage>;
|
||||
pub type Message = crate::raknet::client::Message<LuMessage>;
|
||||
@@ -26,6 +29,7 @@ pub enum ClientMessage {
|
||||
CharacterListResponse(CharacterListResponse) = 6,
|
||||
CharacterCreateResponse(CharacterCreateResponse) = 7,
|
||||
CharacterDeleteResponse(CharacterDeleteResponse) = 11,
|
||||
SubjectGameMessage(SubjectGameMessage) = 12,
|
||||
TransferToWorld(TransferToWorld) = 14,
|
||||
BlueprintLoadItemResponse(BlueprintLoadItemResponse) = 23,
|
||||
FriendRequest(FriendRequest) = 27,
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
use lu_packets_derive::GameMessage;
|
||||
|
||||
use crate::common::{ObjId, OBJID_EMPTY};
|
||||
use super::{Lot, LOT_NULL};
|
||||
|
||||
#[derive(Debug, GameMessage)]
|
||||
pub struct EquipInventory {
|
||||
#[default(false)]
|
||||
pub ignore_cooldown: bool,
|
||||
pub out_success: bool,
|
||||
pub item_to_equip: ObjId,
|
||||
}
|
||||
|
||||
#[derive(Debug, GameMessage)]
|
||||
pub struct UnEquipInventory {
|
||||
#[default(false)]
|
||||
pub even_if_dead: bool,
|
||||
#[default(false)]
|
||||
pub ignore_cooldown: bool,
|
||||
pub out_success: bool,
|
||||
pub item_to_unequip: ObjId,
|
||||
#[default(OBJID_EMPTY)]
|
||||
pub replacement_object_id: ObjId,
|
||||
}
|
||||
|
||||
#[derive(Debug, GameMessage)]
|
||||
pub struct MoveInventoryBatch {
|
||||
#[default(false)]
|
||||
pub allow_partial: bool,
|
||||
#[default(false)]
|
||||
pub out_success: bool,
|
||||
#[default(1)]
|
||||
pub count: u32,
|
||||
#[default(0)]
|
||||
pub dst_bag: i32, // todo: type
|
||||
#[default(LOT_NULL)]
|
||||
pub move_lot: Lot,
|
||||
#[default(OBJID_EMPTY)]
|
||||
pub move_subkey: ObjId,
|
||||
#[default(false)]
|
||||
pub show_flying_loot: bool,
|
||||
#[default(0)]
|
||||
pub src_bag: i32, // todo: type
|
||||
#[default(OBJID_EMPTY)]
|
||||
pub start_object_id: ObjId,
|
||||
}
|
||||
+61
-3
@@ -1,5 +1,6 @@
|
||||
pub mod client;
|
||||
pub mod server;
|
||||
pub mod gm;
|
||||
|
||||
use std::cmp::PartialEq;
|
||||
use std::io::{Read, Write};
|
||||
@@ -13,14 +14,68 @@ use crate::common::{LuVarStr, LuVarWStr};
|
||||
type GmString = LuVarStr<u32>;
|
||||
type GmWString = LuVarWStr<u32>;
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, PartialEq, GmParam)]
|
||||
#[repr(u32)]
|
||||
pub enum InventoryType {
|
||||
Default,
|
||||
Bank,
|
||||
Brick,
|
||||
ModelsInBbb,
|
||||
TempEquip,
|
||||
Model,
|
||||
ModuleInUse,
|
||||
Behavior,
|
||||
Property,
|
||||
BrickInBbb,
|
||||
Vendor,
|
||||
Buyback,
|
||||
Quest,
|
||||
Donation,
|
||||
BankModel,
|
||||
BankBehavior,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, PartialEq, GmParam)]
|
||||
#[repr(u32)]
|
||||
pub enum KillType {
|
||||
Violent,
|
||||
Silent,
|
||||
}
|
||||
|
||||
type Lot = u32;
|
||||
const LOT_NULL: Lot = -1i32 as Lot;
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize)]
|
||||
#[derive(Debug, Deserialize, Serialize, PartialEq, GmParam)]
|
||||
#[repr(u32)]
|
||||
pub enum MissionState {
|
||||
Unavailable = 0,
|
||||
Available = 1,
|
||||
Active = 2,
|
||||
ReadyToComplete = 4,
|
||||
Completed = 8,
|
||||
CompleteAndAvailable = 9,
|
||||
CompleteAndActive = 10,
|
||||
CompleteAndReadyToComplete = 12,
|
||||
Fail = 16,
|
||||
ReadyToCompleteReported = 32,
|
||||
}
|
||||
|
||||
// todo: better modeling with NonNull and Option
|
||||
type MapId = u16;
|
||||
const MAP_ID_INVALID: MapId = 0;
|
||||
|
||||
type CloneId = u32;
|
||||
const CLONE_ID_INVALID: CloneId = 0;
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, PartialEq, GmParam)]
|
||||
pub struct ZoneId {
|
||||
pub map_id: u16,
|
||||
pub map_id: MapId,
|
||||
pub instance_id: u16,
|
||||
pub clone_id: u32,
|
||||
pub clone_id: CloneId,
|
||||
}
|
||||
|
||||
impl ZoneId {
|
||||
const INVALID: Self = Self { map_id: 0, instance_id: 0, clone_id: 0 };
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, PartialEq, GmParam)]
|
||||
@@ -65,9 +120,12 @@ macro_rules! impl_gm {
|
||||
}
|
||||
}
|
||||
|
||||
impl_gm!(u8);
|
||||
impl_gm!(u16);
|
||||
impl_gm!(u32);
|
||||
impl_gm!(u64);
|
||||
impl_gm!(i32);
|
||||
impl_gm!(i64);
|
||||
impl_gm!(f32);
|
||||
impl_gm!(GmString);
|
||||
impl_gm!(GmWString);
|
||||
|
||||
+9
-57
@@ -5,7 +5,8 @@ use lu_packets_derive::{GameMessage, GmParam};
|
||||
|
||||
use crate::common::{ObjId, OBJID_EMPTY};
|
||||
|
||||
use super::super::{GmString, GmWString, Lot, LOT_NULL, Quaternion, Vector3};
|
||||
use super::super::{GmString, GmWString, KillType, MissionState, Lot, LOT_NULL, Quaternion, Vector3};
|
||||
use super::super::gm::{EquipInventory, UnEquipInventory, MoveInventoryBatch};
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize)]
|
||||
pub struct SubjectGameMessage {
|
||||
@@ -144,13 +145,6 @@ pub struct RequestDie {
|
||||
pub loot_owner_id: ObjId,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, PartialEq, GmParam)]
|
||||
#[repr(u32)]
|
||||
pub enum KillType {
|
||||
Violent,
|
||||
Silent,
|
||||
}
|
||||
|
||||
#[derive(Debug, GameMessage)]
|
||||
pub struct PlayEmote {
|
||||
pub emote_id: i32,
|
||||
@@ -162,7 +156,7 @@ pub struct CasterDead {
|
||||
#[default(OBJID_EMPTY)]
|
||||
pub caster: ObjId,
|
||||
#[default(0)]
|
||||
pub ui_skill_handle: u32,
|
||||
pub skill_handle: u32,
|
||||
}
|
||||
|
||||
#[derive(Debug, GameMessage)]
|
||||
@@ -171,7 +165,7 @@ pub struct VerifyAck {
|
||||
pub different: bool,
|
||||
pub bitstream: Vec<u8>,
|
||||
#[default(0)]
|
||||
pub ui_handle: u32,
|
||||
pub handle: u32,
|
||||
}
|
||||
|
||||
#[derive(Debug, GameMessage)]
|
||||
@@ -205,32 +199,12 @@ const INVENTORY_INVALID: i32 = -1;
|
||||
pub struct MoveItemInInventory {
|
||||
#[default(INVENTORY_INVALID)]
|
||||
pub dest_inv_type: i32,
|
||||
pub i_obj_id: ObjId,
|
||||
pub obj_id: ObjId,
|
||||
pub inventory_type: i32,
|
||||
pub response_code: i32,
|
||||
pub slot: i32,
|
||||
}
|
||||
|
||||
#[derive(Debug, GameMessage)]
|
||||
pub struct EquipInventory {
|
||||
#[default(false)]
|
||||
pub ignore_cooldown: bool,
|
||||
pub out_success: bool,
|
||||
pub item_to_equip: ObjId,
|
||||
}
|
||||
|
||||
#[derive(Debug, GameMessage)]
|
||||
pub struct UnEquipInventory {
|
||||
#[default(false)]
|
||||
pub even_if_dead: bool,
|
||||
#[default(false)]
|
||||
pub ignore_cooldown: bool,
|
||||
pub out_success: bool,
|
||||
pub item_to_unequip: ObjId,
|
||||
#[default(OBJID_EMPTY)]
|
||||
pub replacement_object_id: ObjId,
|
||||
}
|
||||
|
||||
#[derive(Debug, GameMessage)]
|
||||
pub struct RespondToMission {
|
||||
pub mission_id: i32,
|
||||
@@ -350,7 +324,7 @@ pub struct RequestLinkedMission {
|
||||
#[derive(Debug, GameMessage)]
|
||||
pub struct MissionDialogueOk {
|
||||
pub is_complete: bool,
|
||||
pub mission_state: i32,
|
||||
pub mission_state: MissionState,
|
||||
pub mission_id: i32,
|
||||
pub responder: ObjId,
|
||||
}
|
||||
@@ -609,28 +583,6 @@ pub struct BounceNotification {
|
||||
pub success: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, GameMessage)]
|
||||
pub struct MoveInventoryBatch {
|
||||
#[default(false)]
|
||||
pub allow_partial: bool,
|
||||
#[default(false)]
|
||||
pub out_success: bool,
|
||||
#[default(1)]
|
||||
pub count: u32,
|
||||
#[default(0)]
|
||||
pub dst_bag: i32,
|
||||
#[default(LOT_NULL)]
|
||||
pub move_lot: Lot,
|
||||
#[default(OBJID_EMPTY)]
|
||||
pub move_subkey: ObjId,
|
||||
#[default(false)]
|
||||
pub show_flying_loot: bool,
|
||||
#[default(0)]
|
||||
pub src_bag: i32,
|
||||
#[default(OBJID_EMPTY)]
|
||||
pub start_object_id: ObjId,
|
||||
}
|
||||
|
||||
#[derive(Debug, GameMessage)]
|
||||
pub struct SetBbbAutosave {
|
||||
pub lxfml_data_compressed: Vec<u8>,
|
||||
@@ -741,7 +693,7 @@ pub struct MoveItemBetweenInventoryTypes {
|
||||
#[derive(Debug, GameMessage)]
|
||||
pub struct MissionDialogueCancelled {
|
||||
pub is_complete: bool,
|
||||
pub mission_state: i32,
|
||||
pub mission_state: MissionState,
|
||||
pub mission_id: i32,
|
||||
pub responder: ObjId,
|
||||
}
|
||||
@@ -751,8 +703,8 @@ pub struct SyncSkill {
|
||||
#[default(false)]
|
||||
pub done: bool,
|
||||
pub bitstream: Vec<u8>,
|
||||
pub ui_behavior_handle: u32,
|
||||
pub ui_skill_handle: u32,
|
||||
pub behavior_handle: u32,
|
||||
pub skill_handle: u32,
|
||||
}
|
||||
|
||||
#[derive(Debug, GameMessage)]
|
||||
|
||||
Reference in New Issue
Block a user