@ -135,7 +135,8 @@ pub struct TellOtherPlayerMyLocation {
x : f32 ,
x : f32 ,
y : f32 ,
y : f32 ,
z : f32 ,
z : f32 ,
unknown2 : u32 ,
rotation : u16 ,
unknown2 : u16 ,
}
}
#[ pso_message(0x21) ]
#[ pso_message(0x21) ]
@ -263,7 +264,7 @@ pub struct PlayerPBDonation {
#[ pso_message(0x37) ]
#[ pso_message(0x37) ]
pub struct PlayerInitiatedPB {
pub struct PlayerInitiatedPB {
pb_amount : u8 ,
pb_amount : u8 ,
unknown1 : u32 ,
unknown1 : [ u8 ; 4 ] ,
}
}
#[ pso_message(0x3A) ]
#[ pso_message(0x3A) ]
@ -278,7 +279,8 @@ pub struct PlayerSpawnedIntoArea {
#[ pso_message(0x3E) ]
#[ pso_message(0x3E) ]
pub struct PlayerStopped {
pub struct PlayerStopped {
unknown1 : u32 ,
unknown1 : [ u8 ; 2 ] ,
rotation : u16 ,
area : u16 ,
area : u16 ,
room : u16 ,
room : u16 ,
x : f32 ,
x : f32 ,
@ -288,8 +290,10 @@ pub struct PlayerStopped {
#[ pso_message(0x3F) ]
#[ pso_message(0x3F) ]
pub struct PlayerLoadedIn {
pub struct PlayerLoadedIn {
unknown1 : u32 ,
unknown2 : u32 ,
unknown1 : [ u8 ; 2 ] ,
rotation : u16 ,
area : u16 ,
room : u16 ,
x : f32 ,
x : f32 ,
y : f32 ,
y : f32 ,
z : f32 ,
z : f32 ,
@ -299,7 +303,7 @@ pub struct PlayerLoadedIn {
pub struct PlayerWalking {
pub struct PlayerWalking {
x : f32 ,
x : f32 ,
z : f32 ,
z : f32 ,
unknown : f 32,
stance : u 32,
}
}
#[ pso_message(0x42) ]
#[ pso_message(0x42) ]
@ -310,37 +314,46 @@ pub struct PlayerRunning {
#[ pso_message(0x43) ]
#[ pso_message(0x43) ]
pub struct ComboStep1 {
pub struct ComboStep1 {
data : [ u8 ; 4 ] ,
rotation : u16 ,
attack : u16 ,
}
}
#[ pso_message(0x44) ]
#[ pso_message(0x44) ]
pub struct ComboStep2 {
pub struct ComboStep2 {
data : [ u8 ; 4 ] ,
rotation : u16 ,
attack : u16 ,
}
}
#[ pso_message(0x45) ]
#[ pso_message(0x45) ]
pub struct ComboStep3 {
pub struct ComboStep3 {
data : [ u8 ; 4 ] ,
rotation : u16 ,
attack : u16 ,
}
}
#[ pso_message(0x46) ]
#[ pso_message(0x46) ]
pub struct ComboStepDone {
data : [ u8 ; 4 ] ,
pub struct TargetsHit {
num_of_targets : [ u8 ; 4 ] , // thats a lot of targets?
client2 : u8 , // TODO: what even is this?
target2 : u8 , // TODO: what even is this?
unknown2 : [ u8 ; 2 ] ,
}
}
#[ pso_message(0x47) ]
#[ pso_message(0x47) ]
pub struct PlayerTechCast {
pub struct PlayerTechCast { // this packet and packet 0x8D (PlayerTechStart) are both sent at the same time as soon as the player presses a tech button, regardless if the tech is ACTUALLY casted (it not cancelled due to player blocking) or not.
technique : u8 ,
technique : u8 ,
unknown1 : u8 ,
unknown1 : u8 ,
unknown2 : u8 ,
tech_level : u8 ,
#[ length_of(targets) ]
num_of_targets : u8 ,
num_of_targets : u8 ,
#[ length_is(num_of_targets) ]
targets : Vec < u32 > ,
}
}
#[ pso_message(0x48) ]
#[ pso_message(0x48) ]
pub struct PlayerTechDone {
pub struct PlayerTechDone { // this packet gets sent once the tech is actually casted (ie: barta actually shoots out from your feet)
technique : u8 ,
technique : u8 ,
unknown1 : u8 ,
unknown1 : u8 ,
level : u8 ,
tech_ level : u8 , // level - 1
unknown2 : u8 ,
unknown2 : u8 ,
}
}
@ -504,7 +517,15 @@ pub struct SpawningMonsters {
#[ pso_message(0x68) ]
#[ pso_message(0x68) ]
pub struct PlayerTelepipe {
pub struct PlayerTelepipe {
caster : u16 , // room client #
area : u16 ,
room : u16 ,
unknown1 : u16 ,
x : f32 ,
y : f32 ,
z : f32 ,
rotation : u16 ,
unknown2 : [ u8 ; 2 ] ,
}
}
#[ pso_message(0x69) ]
#[ pso_message(0x69) ]
@ -561,6 +582,11 @@ pub struct KillMonster {
//}
//}
//#[pso_message(0x80)]
//pub struct PlayerTrapActivate {
//}
#[ pso_message(0x83) ]
#[ pso_message(0x83) ]
pub struct PlayerTrapSet {
pub struct PlayerTrapSet {
trap_type : u16 ,
trap_type : u16 ,
@ -572,11 +598,6 @@ pub struct PlayerTrapSet {
//}
//}
//#[pso_message(0x80)]
//pub struct PlayerTrapActivate {
//}
//#[pso_message(0x87)]
//#[pso_message(0x87)]
//pub struct PlayerShrink {
//pub struct PlayerShrink {
@ -597,10 +618,10 @@ pub struct PlayerKilledByMonster {
//}
//}
//#[pso_message(0x8D)]
//pub struct PlayerTechStart {
//}
#[ pso_message(0x8D) ]
pub struct PlayerTechStart { // this packet and packet 0x47 (PlayerTechCast) are both sent at the same time (PlayerTechStart then PlayerTechCast) as soon as the player presses a tech button, regardless if the tech is ACTUALLY casted (it not cancelled due to player blocking) or not.
data : [ u8 ; 4 ] , // always 0'd?
}
#[ pso_message(0x94) ]
#[ pso_message(0x94) ]
pub struct PlayerWarped2 {
pub struct PlayerWarped2 {
@ -1005,7 +1026,7 @@ pub enum GameMessage {
ComboStep1 ( ComboStep1 ) ,
ComboStep1 ( ComboStep1 ) ,
ComboStep2 ( ComboStep2 ) ,
ComboStep2 ( ComboStep2 ) ,
ComboStep3 ( ComboStep3 ) ,
ComboStep3 ( ComboStep3 ) ,
ComboStepDone ( ComboStepDone ) ,
TargetsHit ( TargetsHit ) ,
PlayerTechCast ( PlayerTechCast ) ,
PlayerTechCast ( PlayerTechCast ) ,
PlayerTechDone ( PlayerTechDone ) ,
PlayerTechDone ( PlayerTechDone ) ,
PlayerPBUsed ( PlayerPBUsed ) ,
PlayerPBUsed ( PlayerPBUsed ) ,
@ -1049,7 +1070,7 @@ pub enum GameMessage {
//PlayerUnshrink(PlayerUnshrink),
//PlayerUnshrink(PlayerUnshrink),
PlayerKilledByMonster ( PlayerKilledByMonster ) ,
PlayerKilledByMonster ( PlayerKilledByMonster ) ,
//CmodeStatistics(CmodeStatistics),
//CmodeStatistics(CmodeStatistics),
//PlayerTechStart(PlayerTechStart),
PlayerTechStart ( PlayerTechStart ) ,
PlayerWarped2 ( PlayerWarped2 ) ,
PlayerWarped2 ( PlayerWarped2 ) ,
//CmodeTryAgain(CmodeTryAgain),
//CmodeTryAgain(CmodeTryAgain),
ModifyPlayerStats ( ModifyPlayerStats ) ,
ModifyPlayerStats ( ModifyPlayerStats ) ,
@ -1170,7 +1191,7 @@ impl PSOPacketData for GameMessage {
ComboStep1 ::CMD = > Ok ( GameMessage ::ComboStep1 ( ComboStep1 ::from_bytes ( & mut cur ) ? ) ) ,
ComboStep1 ::CMD = > Ok ( GameMessage ::ComboStep1 ( ComboStep1 ::from_bytes ( & mut cur ) ? ) ) ,
ComboStep2 ::CMD = > Ok ( GameMessage ::ComboStep2 ( ComboStep2 ::from_bytes ( & mut cur ) ? ) ) ,
ComboStep2 ::CMD = > Ok ( GameMessage ::ComboStep2 ( ComboStep2 ::from_bytes ( & mut cur ) ? ) ) ,
ComboStep3 ::CMD = > Ok ( GameMessage ::ComboStep3 ( ComboStep3 ::from_bytes ( & mut cur ) ? ) ) ,
ComboStep3 ::CMD = > Ok ( GameMessage ::ComboStep3 ( ComboStep3 ::from_bytes ( & mut cur ) ? ) ) ,
ComboStepDone ::CMD = > Ok ( GameMessage ::ComboStepDone ( ComboStepDone ::from_bytes ( & mut cur ) ? ) ) ,
TargetsHit ::CMD = > Ok ( GameMessage ::TargetsHit ( TargetsHit ::from_bytes ( & mut cur ) ? ) ) ,
PlayerTechCast ::CMD = > Ok ( GameMessage ::PlayerTechCast ( PlayerTechCast ::from_bytes ( & mut cur ) ? ) ) ,
PlayerTechCast ::CMD = > Ok ( GameMessage ::PlayerTechCast ( PlayerTechCast ::from_bytes ( & mut cur ) ? ) ) ,
PlayerTechDone ::CMD = > Ok ( GameMessage ::PlayerTechDone ( PlayerTechDone ::from_bytes ( & mut cur ) ? ) ) ,
PlayerTechDone ::CMD = > Ok ( GameMessage ::PlayerTechDone ( PlayerTechDone ::from_bytes ( & mut cur ) ? ) ) ,
PlayerPBUsed ::CMD = > Ok ( GameMessage ::PlayerPBUsed ( PlayerPBUsed ::from_bytes ( & mut cur ) ? ) ) ,
PlayerPBUsed ::CMD = > Ok ( GameMessage ::PlayerPBUsed ( PlayerPBUsed ::from_bytes ( & mut cur ) ? ) ) ,
@ -1214,7 +1235,7 @@ impl PSOPacketData for GameMessage {
//PlayerUnshrink::CMD => Ok(GameMessage::PlayerUnshrink(PlayerUnshrink::from_bytes(&mut cur)?)),
//PlayerUnshrink::CMD => Ok(GameMessage::PlayerUnshrink(PlayerUnshrink::from_bytes(&mut cur)?)),
PlayerKilledByMonster ::CMD = > Ok ( GameMessage ::PlayerKilledByMonster ( PlayerKilledByMonster ::from_bytes ( & mut cur ) ? ) ) ,
PlayerKilledByMonster ::CMD = > Ok ( GameMessage ::PlayerKilledByMonster ( PlayerKilledByMonster ::from_bytes ( & mut cur ) ? ) ) ,
//CmodeStatistics::CMD => Ok(GameMessage::CmodeStatistics(CmodeStatistics::from_bytes(&mut cur)?)),
//CmodeStatistics::CMD => Ok(GameMessage::CmodeStatistics(CmodeStatistics::from_bytes(&mut cur)?)),
//PlayerTechStart::CMD => Ok(GameMessage::PlayerTechStart(PlayerTechStart::from_bytes(&mut cur)?)),
PlayerTechStart ::CMD = > Ok ( GameMessage ::PlayerTechStart ( PlayerTechStart ::from_bytes ( & mut cur ) ? ) ) ,
PlayerWarped2 ::CMD = > Ok ( GameMessage ::PlayerWarped2 ( PlayerWarped2 ::from_bytes ( & mut cur ) ? ) ) ,
PlayerWarped2 ::CMD = > Ok ( GameMessage ::PlayerWarped2 ( PlayerWarped2 ::from_bytes ( & mut cur ) ? ) ) ,
//CmodeTryAgain::CMD => Ok(GameMessage::CmodeTryAgain(CmodeTryAgain::from_bytes(&mut cur)?)),
//CmodeTryAgain::CMD => Ok(GameMessage::CmodeTryAgain(CmodeTryAgain::from_bytes(&mut cur)?)),
ModifyPlayerStats ::CMD = > Ok ( GameMessage ::ModifyPlayerStats ( ModifyPlayerStats ::from_bytes ( & mut cur ) ? ) ) ,
ModifyPlayerStats ::CMD = > Ok ( GameMessage ::ModifyPlayerStats ( ModifyPlayerStats ::from_bytes ( & mut cur ) ? ) ) ,
@ -1337,7 +1358,7 @@ impl PSOPacketData for GameMessage {
GameMessage ::ComboStep1 ( data ) = > data . as_bytes ( ) ,
GameMessage ::ComboStep1 ( data ) = > data . as_bytes ( ) ,
GameMessage ::ComboStep2 ( data ) = > data . as_bytes ( ) ,
GameMessage ::ComboStep2 ( data ) = > data . as_bytes ( ) ,
GameMessage ::ComboStep3 ( data ) = > data . as_bytes ( ) ,
GameMessage ::ComboStep3 ( data ) = > data . as_bytes ( ) ,
GameMessage ::ComboStepDone ( data ) = > data . as_bytes ( ) ,
GameMessage ::TargetsHit ( data ) = > data . as_bytes ( ) ,
GameMessage ::PlayerTechCast ( data ) = > data . as_bytes ( ) ,
GameMessage ::PlayerTechCast ( data ) = > data . as_bytes ( ) ,
GameMessage ::PlayerTechDone ( data ) = > data . as_bytes ( ) ,
GameMessage ::PlayerTechDone ( data ) = > data . as_bytes ( ) ,
GameMessage ::PlayerPBUsed ( data ) = > data . as_bytes ( ) ,
GameMessage ::PlayerPBUsed ( data ) = > data . as_bytes ( ) ,
@ -1381,7 +1402,7 @@ impl PSOPacketData for GameMessage {
//GameMessage::PlayerUnshrink(data) => data.as_bytes(),
//GameMessage::PlayerUnshrink(data) => data.as_bytes(),
GameMessage ::PlayerKilledByMonster ( data ) = > data . as_bytes ( ) ,
GameMessage ::PlayerKilledByMonster ( data ) = > data . as_bytes ( ) ,
//GameMessage::CmodeStatistics(data) => data.as_bytes(),
//GameMessage::CmodeStatistics(data) => data.as_bytes(),
//GameMessage::PlayerTechStart(data) => data.as_bytes(),
GameMessage ::PlayerTechStart ( data ) = > data . as_bytes ( ) ,
GameMessage ::PlayerWarped2 ( data ) = > data . as_bytes ( ) ,
GameMessage ::PlayerWarped2 ( data ) = > data . as_bytes ( ) ,
//GameMessage::CmodeTryAgain(data) => data.as_bytes(),
//GameMessage::CmodeTryAgain(data) => data.as_bytes(),
GameMessage ::ModifyPlayerStats ( data ) = > data . as_bytes ( ) ,
GameMessage ::ModifyPlayerStats ( data ) = > data . as_bytes ( ) ,