Compare commits

..

20 Commits

Author SHA1 Message Date
cd2af79091 why do i need to pull man
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2021-06-20 04:29:06 +00:00
43b37e985c rebase - trap trigger packet 2021-06-20 04:22:01 +00:00
69ddebdc45 Merge pull request 'pbs' (#2) from pbs into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #2
2021-06-20 00:16:24 -04:00
505ec2188d add to enum oops
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2021-06-20 04:12:34 +00:00
6e6c7c494f shop_sell (#4)
All checks were successful
continuous-integration/drone/push Build is passing
oops sold my 95h calibur

Reviewed-on: #4
Co-authored-by: andy <andynewjack@protonmail.com>
Co-committed-by: andy <andynewjack@protonmail.com>
2021-06-19 23:52:43 -04:00
3f0f4886cb shiny_mobs (#3)
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #3
Co-authored-by: andy <andynewjack@protonmail.com>
Co-committed-by: andy <andynewjack@protonmail.com>
2021-06-19 23:51:54 -04:00
e2c54986f7 rebasing still difficult in 2021
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2021-06-20 02:24:01 +00:00
2debc015b7 rebased
Some checks failed
continuous-integration/drone/push Build is failing
2021-06-20 01:00:38 +00:00
e959fc3094 pb structs 2021-06-20 00:57:46 +00:00
e698ad993c Merge pull request 'techs' (#1) from techs into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #1
2021-06-19 00:25:04 -04:00
65532db884 sloppy spacing
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2021-06-17 21:07:49 +00:00
799a9e6880 pb structs
All checks were successful
continuous-integration/drone/push Build is passing
2021-05-24 20:48:25 +00:00
ef69b2064d make the compiler happy
All checks were successful
continuous-integration/drone/push Build is passing
2021-05-23 21:22:48 +00:00
77f657dbc0 dont forget to check this later 2021-05-23 20:55:22 +00:00
cb219d807d fix tech packet lengths. now everyone can get s/d yay 2021-05-23 20:54:35 +00:00
2c00b5999a telepipe owner 2021-05-23 19:16:43 +00:00
68080eff4b add telepipe struct 2021-05-23 19:10:31 +00:00
a58191833f random struct updates 2021-05-20 01:38:26 +00:00
e02e3dff29 update tech packet struct, and some random comments 2021-05-15 23:29:06 +00:00
a2ecb14d82 trade packets
All checks were successful
continuous-integration/drone/push Build is passing
2020-12-12 19:55:53 -07:00
3 changed files with 124 additions and 58 deletions

View File

@ -551,7 +551,7 @@ mod test {
#[pso_message(0x23)] #[pso_message(0x23)]
struct Test { struct Test {
b: [u32; 100], b: [u32; 100],
}; }
let test = Test { let test = Test {
client: 1, client: 1,

View File

@ -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)]
@ -255,15 +256,19 @@ pub struct PlayerUsedMoonAtomizer {
} }
#[pso_message(0x36)] #[pso_message(0x37)]
pub struct PlayerPBDonation { pub struct PlayerPBUsed {
energy: u32,
} }
#[pso_message(0x37)] #[pso_message(0x38)]
pub struct PlayerInitiatedPB { pub struct PlayerDonatedPB {
pb_amount: u8, recipient: u32,
unknown1: u32, }
#[pso_message(0x39)]
pub struct PlayerPBReady {
player: u16,
} }
#[pso_message(0x3A)] #[pso_message(0x3A)]
@ -278,7 +283,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 +294,10 @@ pub struct PlayerStopped {
#[pso_message(0x3F)] #[pso_message(0x3F)]
pub struct PlayerLoadedIn { pub struct PlayerLoadedIn {
unknown1: u32, unknown1: [u8; 2],
unknown2: u32, rotation: u16,
area: u16,
room: u16,
x: f32, x: f32,
y: f32, y: f32,
z: f32, z: f32,
@ -299,7 +307,7 @@ pub struct PlayerLoadedIn {
pub struct PlayerWalking { pub struct PlayerWalking {
x: f32, x: f32,
z: f32, z: f32,
unknown: f32, stance: u32,
} }
#[pso_message(0x42)] #[pso_message(0x42)]
@ -310,46 +318,53 @@ 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 { pub struct TargetsHit {
data: [u8; 4], 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,
} }
#[pso_message(0x49)] #[pso_message(0x49)]
pub struct PlayerPBUsed { pub struct PlayerInitiatedPB {
pb: u8, pb: u32,
unknown1: u32, energy: u32,
amount: u8,
unknown2: u32,
} }
#[pso_message(0x4A)] #[pso_message(0x4A)]
@ -504,7 +519,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)]
@ -597,10 +620,10 @@ pub struct PlayerKilledByMonster {
//} //}
//#[pso_message(0x8D)] #[pso_message(0x8D)]
//pub struct PlayerTechStart { 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 {
@ -661,10 +684,12 @@ pub struct BoxDropRequest {
//} //}
//#[pso_message(0xA6)] #[pso_message(0xA6)]
//pub struct TradeRequest { pub struct TradeRequest {
unknown1: u32,
//} unknown2: u32,
unknown3: u32,
}
//#[pso_message(0xA8)] //#[pso_message(0xA8)]
//pub struct BossInteractionGolDragon { //pub struct BossInteractionGolDragon {
@ -787,12 +812,12 @@ pub struct GiveCharacterExp {
exp: u32, exp: u32,
} }
//#[pso_message(0xC0)] #[pso_message(0xC0)]
//pub struct PlayerSoldItem { pub struct PlayerSoldItem {
// client_id: u16, item_id: u32,
// item_id: u8, amount: u8,
// amount: u8, // TODO: other data?
//} }
//#[pso_message(0xC1)] //#[pso_message(0xC1)]
//pub struct TeamInvite { //pub struct TeamInvite {
@ -992,7 +1017,7 @@ pub enum GameMessage {
PlayerResurrected(PlayerResurrected), PlayerResurrected(PlayerResurrected),
PlayerResurrectedMedicalCenter(PlayerResurrectedMedicalCenter), PlayerResurrectedMedicalCenter(PlayerResurrectedMedicalCenter),
PlayerUsedMoonAtomizer(PlayerUsedMoonAtomizer), PlayerUsedMoonAtomizer(PlayerUsedMoonAtomizer),
PlayerPBDonation(PlayerPBDonation), // PlayerPBDonation(PlayerPBDonation),
PlayerInitiatedPB(PlayerInitiatedPB), PlayerInitiatedPB(PlayerInitiatedPB),
PlayerLeftArea(PlayerLeftArea), PlayerLeftArea(PlayerLeftArea),
PlayerSpawnedIntoArea(PlayerSpawnedIntoArea), PlayerSpawnedIntoArea(PlayerSpawnedIntoArea),
@ -1003,10 +1028,12 @@ 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),
PlayerDonatedPB(PlayerDonatedPB),
PlayerPBReady(PlayerPBReady),
PlayerBlockedDamage(PlayerBlockedDamage), PlayerBlockedDamage(PlayerBlockedDamage),
PlayerReceivedDamage(PlayerReceivedDamage), PlayerReceivedDamage(PlayerReceivedDamage),
PlayerReceivedDamage2(PlayerReceivedDamage2), PlayerReceivedDamage2(PlayerReceivedDamage2),
@ -1047,7 +1074,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),
@ -1058,7 +1085,7 @@ pub enum GameMessage {
//BossInteractionOlgaFlow(BossInteractionOlgaFlow), //BossInteractionOlgaFlow(BossInteractionOlgaFlow),
//BossInteractionOlgaFlow2(BossInteractionOlgaFlow2), //BossInteractionOlgaFlow2(BossInteractionOlgaFlow2),
//BossInteractionOlgaFlow3(BossInteractionOlgaFlow3), //BossInteractionOlgaFlow3(BossInteractionOlgaFlow3),
//TradeRequest(TradeRequest), TradeRequest(TradeRequest),
//BossInteractionGolDragon(BossInteractionGolDragon), //BossInteractionGolDragon(BossInteractionGolDragon),
//BossInteractionBarbaRay(BossInteractionBarbaRay), //BossInteractionBarbaRay(BossInteractionBarbaRay),
//BossInteractionBarbaRay2(BossInteractionBarbaRay2), //BossInteractionBarbaRay2(BossInteractionBarbaRay2),
@ -1075,7 +1102,7 @@ pub enum GameMessage {
TekAccept(TekAccept), TekAccept(TekAccept),
BankRequest(BankRequest), BankRequest(BankRequest),
BankInteraction(BankInteraction), BankInteraction(BankInteraction),
//PlayerSoldItem(PlayerSoldItem), PlayerSoldItem(PlayerSoldItem),
//TeamInvite(TeamInvite), //TeamInvite(TeamInvite),
//AcceptTeamInvite(AcceptTeamInvite), //AcceptTeamInvite(AcceptTeamInvite),
CreateItem(CreateItem), CreateItem(CreateItem),
@ -1157,7 +1184,7 @@ impl PSOPacketData for GameMessage {
PlayerResurrected::CMD => Ok(GameMessage::PlayerResurrected(PlayerResurrected::from_bytes(&mut cur)?)), PlayerResurrected::CMD => Ok(GameMessage::PlayerResurrected(PlayerResurrected::from_bytes(&mut cur)?)),
PlayerResurrectedMedicalCenter::CMD => Ok(GameMessage::PlayerResurrectedMedicalCenter(PlayerResurrectedMedicalCenter::from_bytes(&mut cur)?)), PlayerResurrectedMedicalCenter::CMD => Ok(GameMessage::PlayerResurrectedMedicalCenter(PlayerResurrectedMedicalCenter::from_bytes(&mut cur)?)),
PlayerUsedMoonAtomizer::CMD => Ok(GameMessage::PlayerUsedMoonAtomizer(PlayerUsedMoonAtomizer::from_bytes(&mut cur)?)), PlayerUsedMoonAtomizer::CMD => Ok(GameMessage::PlayerUsedMoonAtomizer(PlayerUsedMoonAtomizer::from_bytes(&mut cur)?)),
PlayerPBDonation::CMD => Ok(GameMessage::PlayerPBDonation(PlayerPBDonation::from_bytes(&mut cur)?)), // PlayerPBDonation::CMD => Ok(GameMessage::PlayerPBDonation(PlayerPBDonation::from_bytes(&mut cur)?)),
PlayerInitiatedPB::CMD => Ok(GameMessage::PlayerInitiatedPB(PlayerInitiatedPB::from_bytes(&mut cur)?)), PlayerInitiatedPB::CMD => Ok(GameMessage::PlayerInitiatedPB(PlayerInitiatedPB::from_bytes(&mut cur)?)),
PlayerLeftArea::CMD => Ok(GameMessage::PlayerLeftArea(PlayerLeftArea::from_bytes(&mut cur)?)), PlayerLeftArea::CMD => Ok(GameMessage::PlayerLeftArea(PlayerLeftArea::from_bytes(&mut cur)?)),
PlayerSpawnedIntoArea::CMD => Ok(GameMessage::PlayerSpawnedIntoArea(PlayerSpawnedIntoArea::from_bytes(&mut cur)?)), PlayerSpawnedIntoArea::CMD => Ok(GameMessage::PlayerSpawnedIntoArea(PlayerSpawnedIntoArea::from_bytes(&mut cur)?)),
@ -1168,10 +1195,12 @@ 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)?)),
PlayerDonatedPB::CMD => Ok(GameMessage::PlayerDonatedPB(PlayerDonatedPB::from_bytes(&mut cur)?)),
PlayerPBReady::CMD => Ok(GameMessage::PlayerPBReady(PlayerPBReady::from_bytes(&mut cur)?)),
PlayerBlockedDamage::CMD => Ok(GameMessage::PlayerBlockedDamage(PlayerBlockedDamage::from_bytes(&mut cur)?)), PlayerBlockedDamage::CMD => Ok(GameMessage::PlayerBlockedDamage(PlayerBlockedDamage::from_bytes(&mut cur)?)),
PlayerReceivedDamage::CMD => Ok(GameMessage::PlayerReceivedDamage(PlayerReceivedDamage::from_bytes(&mut cur)?)), PlayerReceivedDamage::CMD => Ok(GameMessage::PlayerReceivedDamage(PlayerReceivedDamage::from_bytes(&mut cur)?)),
PlayerReceivedDamage2::CMD => Ok(GameMessage::PlayerReceivedDamage2(PlayerReceivedDamage2::from_bytes(&mut cur)?)), PlayerReceivedDamage2::CMD => Ok(GameMessage::PlayerReceivedDamage2(PlayerReceivedDamage2::from_bytes(&mut cur)?)),
@ -1212,7 +1241,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)?)),
@ -1223,7 +1252,7 @@ impl PSOPacketData for GameMessage {
//BossInteractionOlgaFlow::CMD => Ok(GameMessage::BossInteractionOlgaFlow(BossInteractionOlgaFlow::from_bytes(&mut cur)?)), //BossInteractionOlgaFlow::CMD => Ok(GameMessage::BossInteractionOlgaFlow(BossInteractionOlgaFlow::from_bytes(&mut cur)?)),
//BossInteractionOlgaFlow2::CMD => Ok(GameMessage::BossInteractionOlgaFlow2(BossInteractionOlgaFlow2::from_bytes(&mut cur)?)), //BossInteractionOlgaFlow2::CMD => Ok(GameMessage::BossInteractionOlgaFlow2(BossInteractionOlgaFlow2::from_bytes(&mut cur)?)),
//BossInteractionOlgaFlow3::CMD => Ok(GameMessage::BossInteractionOlgaFlow3(BossInteractionOlgaFlow3::from_bytes(&mut cur)?)), //BossInteractionOlgaFlow3::CMD => Ok(GameMessage::BossInteractionOlgaFlow3(BossInteractionOlgaFlow3::from_bytes(&mut cur)?)),
//TradeRequest::CMD => Ok(GameMessage::TradeRequest(TradeRequest::from_bytes(&mut cur)?)), TradeRequest::CMD => Ok(GameMessage::TradeRequest(TradeRequest::from_bytes(&mut cur)?)),
//BossInteractionGolDragon::CMD => Ok(GameMessage::BossInteractionGolDragon(BossInteractionGolDragon::from_bytes(&mut cur)?)), //BossInteractionGolDragon::CMD => Ok(GameMessage::BossInteractionGolDragon(BossInteractionGolDragon::from_bytes(&mut cur)?)),
//BossInteractionBarbaRay::CMD => Ok(GameMessage::BossInteractionBarbaRay(BossInteractionBarbaRay::from_bytes(&mut cur)?)), //BossInteractionBarbaRay::CMD => Ok(GameMessage::BossInteractionBarbaRay(BossInteractionBarbaRay::from_bytes(&mut cur)?)),
//BossInteractionBarbaRay2::CMD => Ok(GameMessage::BossInteractionBarbaRay2(BossInteractionBarbaRay2::from_bytes(&mut cur)?)), //BossInteractionBarbaRay2::CMD => Ok(GameMessage::BossInteractionBarbaRay2(BossInteractionBarbaRay2::from_bytes(&mut cur)?)),
@ -1240,7 +1269,7 @@ impl PSOPacketData for GameMessage {
TekAccept::CMD => Ok(GameMessage::TekAccept(TekAccept::from_bytes(&mut cur)?)), TekAccept::CMD => Ok(GameMessage::TekAccept(TekAccept::from_bytes(&mut cur)?)),
BankRequest::CMD => Ok(GameMessage::BankRequest(BankRequest::from_bytes(&mut cur)?)), BankRequest::CMD => Ok(GameMessage::BankRequest(BankRequest::from_bytes(&mut cur)?)),
BankInteraction::CMD => Ok(GameMessage::BankInteraction(BankInteraction::from_bytes(&mut cur)?)), BankInteraction::CMD => Ok(GameMessage::BankInteraction(BankInteraction::from_bytes(&mut cur)?)),
//PlayerSoldItem::CMD => Ok(GameMessage::PlayerSoldItem(PlayerSoldItem::from_bytes(&mut cur)?)), PlayerSoldItem::CMD => Ok(GameMessage::PlayerSoldItem(PlayerSoldItem::from_bytes(&mut cur)?)),
//TeamInvite::CMD => Ok(GameMessage::TeamInvite(TeamInvite::from_bytes(&mut cur)?)), //TeamInvite::CMD => Ok(GameMessage::TeamInvite(TeamInvite::from_bytes(&mut cur)?)),
//AcceptTeamInvite::CMD => Ok(GameMessage::AcceptTeamInvite(AcceptTeamInvite::from_bytes(&mut cur)?)), //AcceptTeamInvite::CMD => Ok(GameMessage::AcceptTeamInvite(AcceptTeamInvite::from_bytes(&mut cur)?)),
CreateItem::CMD => Ok(GameMessage::CreateItem(CreateItem::from_bytes(&mut cur)?)), CreateItem::CMD => Ok(GameMessage::CreateItem(CreateItem::from_bytes(&mut cur)?)),
@ -1324,7 +1353,7 @@ impl PSOPacketData for GameMessage {
GameMessage::PlayerResurrected(data) => data.as_bytes(), GameMessage::PlayerResurrected(data) => data.as_bytes(),
GameMessage::PlayerResurrectedMedicalCenter(data) => data.as_bytes(), GameMessage::PlayerResurrectedMedicalCenter(data) => data.as_bytes(),
GameMessage::PlayerUsedMoonAtomizer(data) => data.as_bytes(), GameMessage::PlayerUsedMoonAtomizer(data) => data.as_bytes(),
GameMessage::PlayerPBDonation(data) => data.as_bytes(), // GameMessage::PlayerPBDonation(data) => data.as_bytes(),
GameMessage::PlayerInitiatedPB(data) => data.as_bytes(), GameMessage::PlayerInitiatedPB(data) => data.as_bytes(),
GameMessage::PlayerLeftArea(data) => data.as_bytes(), GameMessage::PlayerLeftArea(data) => data.as_bytes(),
GameMessage::PlayerSpawnedIntoArea(data) => data.as_bytes(), GameMessage::PlayerSpawnedIntoArea(data) => data.as_bytes(),
@ -1335,10 +1364,12 @@ 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(),
GameMessage::PlayerDonatedPB(data) => data.as_bytes(),
GameMessage::PlayerPBReady(data) => data.as_bytes(),
GameMessage::PlayerBlockedDamage(data) => data.as_bytes(), GameMessage::PlayerBlockedDamage(data) => data.as_bytes(),
GameMessage::PlayerReceivedDamage(data) => data.as_bytes(), GameMessage::PlayerReceivedDamage(data) => data.as_bytes(),
GameMessage::PlayerReceivedDamage2(data) => data.as_bytes(), GameMessage::PlayerReceivedDamage2(data) => data.as_bytes(),
@ -1379,7 +1410,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(),
@ -1390,7 +1421,7 @@ impl PSOPacketData for GameMessage {
//GameMessage::BossInteractionOlgaFlow(data) => data.as_bytes(), //GameMessage::BossInteractionOlgaFlow(data) => data.as_bytes(),
//GameMessage::BossInteractionOlgaFlow2(data) => data.as_bytes(), //GameMessage::BossInteractionOlgaFlow2(data) => data.as_bytes(),
//GameMessage::BossInteractionOlgaFlow3(data) => data.as_bytes(), //GameMessage::BossInteractionOlgaFlow3(data) => data.as_bytes(),
//GameMessage::TradeRequest(data) => data.as_bytes(), GameMessage::TradeRequest(data) => data.as_bytes(),
//GameMessage::BossInteractionGolDragon(data) => data.as_bytes(), //GameMessage::BossInteractionGolDragon(data) => data.as_bytes(),
//GameMessage::BossInteractionBarbaRay(data) => data.as_bytes(), //GameMessage::BossInteractionBarbaRay(data) => data.as_bytes(),
//GameMessage::BossInteractionBarbaRay2(data) => data.as_bytes(), //GameMessage::BossInteractionBarbaRay2(data) => data.as_bytes(),
@ -1407,7 +1438,7 @@ impl PSOPacketData for GameMessage {
GameMessage::TekAccept(data) => data.as_bytes(), GameMessage::TekAccept(data) => data.as_bytes(),
GameMessage::BankRequest(data) => data.as_bytes(), GameMessage::BankRequest(data) => data.as_bytes(),
GameMessage::BankInteraction(data) => data.as_bytes(), GameMessage::BankInteraction(data) => data.as_bytes(),
//GameMessage::PlayerSoldItem(data) => data.as_bytes(), GameMessage::PlayerSoldItem(data) => data.as_bytes(),
//GameMessage::TeamInvite(data) => data.as_bytes(), //GameMessage::TeamInvite(data) => data.as_bytes(),
//GameMessage::AcceptTeamInvite(data) => data.as_bytes(), //GameMessage::AcceptTeamInvite(data) => data.as_bytes(),
GameMessage::CreateItem(data) => data.as_bytes(), GameMessage::CreateItem(data) => data.as_bytes(),

View File

@ -400,6 +400,11 @@ pub struct UpdateConfig{
pub struct ViewInfoboardRequest { pub struct ViewInfoboardRequest {
} }
#[pso_packet(0xDE)]
pub struct RareMonsterList{
pub ids: [u16; 16],
}
#[derive(PSOPacketData, Clone)] #[derive(PSOPacketData, Clone)]
pub struct InfoboardResponse { pub struct InfoboardResponse {
pub name: [u16; 16], pub name: [u16; 16],
@ -582,4 +587,34 @@ pub struct FullCharacterData {
#[pso_packet(0x1ED)] #[pso_packet(0x1ED)]
pub struct SaveOptions { pub struct SaveOptions {
pub options: u32, pub options: u32,
} }
#[derive(PSOPacketData, Clone, Copy, Default)]
pub struct TradeItem {
pub item_data: [u8; 12],
pub item_id: u32,
pub item_data2: [u8; 4],
}
#[pso_packet(0xD0)]
pub struct ItemsToTrade {
pub trade_target: u8,
pub unknown2: u8,
pub count: u16,
pub items: [TradeItem; 32],
}
#[pso_packet(0xD1)]
pub struct AcknowledgeTrade {
}
#[pso_packet(0xD2)]
pub struct TradeConfirmed {
}
#[pso_packet(0xD4)]
pub struct CancelTrade {
}