From 4942a4ff28611aacec2d14bd2c6f57e29306c254 Mon Sep 17 00:00:00 2001 From: reason Date: Sat, 28 Mar 2020 00:00:07 -0400 Subject: [PATCH] 0x60/0x62 Packets (#22) --- src/packet/messages.rs | 449 ++++++++++++++++++++++++++++++----------- 1 file changed, 331 insertions(+), 118 deletions(-) diff --git a/src/packet/messages.rs b/src/packet/messages.rs index ff81d99..87cddac 100644 --- a/src/packet/messages.rs +++ b/src/packet/messages.rs @@ -10,10 +10,10 @@ pub trait PSOMessage { fn as_bytes(&self) -> Vec; } -//#[pso_message(0x05)] -//pub struct PlayerActivatedSwitch { - -//} +#[pso_message(0x05)] +pub struct PlayerActivatedSwitch { + data: u16, +} #[pso_message(0x06)] pub struct GuildcardSend { @@ -132,20 +132,22 @@ pub struct TellOtherPlayerMyLocation { z: f32, } -//#[pso_message(0x21)] -//pub struct PlayerWarpingToFloor { - -//} +#[pso_message(0x21)] +pub struct PlayerWarpingToFloor { + area: u8, + data: u16, +} -//#[pso_message(0x22)] -//pub struct PlayerWarping { - -//} +#[pso_message(0x22)] +pub struct PlayerWarping { -//#[pso_message(0x23)] -//pub struct PlayerDoneChangingMap { - -//} +} + + +#[pso_message(0x23)] +pub struct PlayerDoneChangingMap { + +} #[pso_message(0x24)] pub struct PlayerTeleported { @@ -157,8 +159,8 @@ pub struct PlayerTeleported { #[pso_message(0x25)] pub struct PlayerEquipItem { item_id: u32, - variety: [u8; 0x04], - unknown1: u32, + variety: u8, + unknown1: u16, } #[pso_message(0x26)] @@ -186,7 +188,12 @@ pub struct PlayerDropItem { #[pso_message(0x2A)] pub struct PlayerDropItem2 { - data: [u8; 20], + unknown1: u16, + area: u16, + item_id: u32, + x: f32, + y: f32, + z: f32, } #[pso_message(0x2B)] @@ -199,44 +206,54 @@ pub struct AddItemToInventory { unknown1: u32, } -//#[pso_message(0x2C)] -//pub struct InitializeSpeechNpc { - -//} +#[pso_message(0x2C)] +pub struct InitializeSpeechNpc { + unknown1: u16, + unknown2: u16, + location: u32, + location2: u32, + unknown3: u32, +} -//#[pso_message(0x2D)] -//pub struct FinishSpeechNpc { +#[pso_message(0x2D)] +pub struct FinishSpeechNpc { -//} +} -//#[pso_message(0x2F)] -//pub struct FinishSpeechNpcBPD { +#[pso_message(0x2F)] +pub struct FinishSpeechNpcBPD { -//} +} -//#[pso_message(0x30)] -//pub struct PlayerLevelUp { - -//} +#[pso_message(0x30)] +pub struct PlayerLevelUp { + atp: u16, + mst: u16, + evp: u16, + hp: u16, + dfp: u16, + ata: u16, + lvl: u32, +} #[pso_message(0x31)] pub struct PlayerResurrected { - data: [u8; 4], + } #[pso_message(0x32)] pub struct PlayerResurrectedMedicalCenter { - data: [u8; 4], + } #[pso_message(0x33)] pub struct PlayerUsedMoonAtomizer { - data: [u8; 4], + } #[pso_message(0x36)] pub struct PlayerPBDonation { - data: [u8; 4], + } #[pso_message(0x37)] @@ -245,15 +262,15 @@ pub struct PlayerInitiatedPB { unknown1: u32, } -//#[pso_message(0x3A)] -//pub struct PlayerLeftArea { +#[pso_message(0x3A)] +pub struct PlayerLeftArea { -//} +} -//#[pso_message(0x3B)] -//pub struct PlayerSpawnedIntoArea { +#[pso_message(0x3B)] +pub struct PlayerSpawnedIntoArea { -//} +} #[pso_message(0x3E)] pub struct PlayerStopped { @@ -303,7 +320,7 @@ pub struct ComboStep3 { #[pso_message(0x46)] pub struct ComboStepDone { - data: [u8; 8], + data: [u8; 4], } #[pso_message(0x47)] @@ -332,38 +349,43 @@ pub struct PlayerPBUsed { #[pso_message(0x4A)] pub struct PlayerBlockedDamage { - data: [u8; 4], + } #[pso_message(0x4B)] pub struct PlayerReceivedDamage { - data: [u8; 12], + unknown1: u16, + hp: u16, + unknown2: u32, } #[pso_message(0x4C)] pub struct PlayerReceivedDamage2 { - data: [u8; 12], + unknown1: u16, + hp: u16, + unknown2: u32, } #[pso_message(0x4D)] pub struct PlayerDeath { data: [u8; 4], + } #[pso_message(0x4E)] pub struct PlayerPostDeathAnimation { - data: [u8; 4], + } #[pso_message(0x4F)] pub struct PlayerScapedollResurrection { - data: [u8; 4], + } -//#[pso_message(0x50)] -//pub struct PlayerActivatedSwitch2 { - -//} +#[pso_message(0x50)] +pub struct PlayerActivatedSwitch2 { + data: u16, +} #[pso_message(0x52)] pub struct TalkToNpc { @@ -394,15 +416,27 @@ pub struct PickupItem { item_id: u32, } +#[pso_message(0x5A)] +pub struct PickupItem2 { + item_id: u32, + area: u8, + unknown1: u32, +} + //#[pso_message(0x5D)] //pub struct SplittingStack { //} -//#[pso_message(0x5F)] -//pub struct BoxDrops { - -//} +#[pso_message(0x5F)] +pub struct BoxDrops { + area: u8, + variety: u8, + id: u16, + x: f32, + y: f32, + +} #[pso_message(0x60)] pub struct RequestItem { @@ -427,26 +461,36 @@ pub struct FloorItemLimitItemDeletion { unknown1: u32, } -//#[pso_message(0x66)] -//pub struct PlayerUsedStarAtomizer { +#[pso_message(0x66)] +pub struct PlayerUsedStarAtomizer { -//} +} #[pso_message(0x67)] pub struct SpawningMonsters { data: [u8; 12], } -//#[pso_message(0x68)] -//pub struct PlayerTelepipe { +#[pso_message(0x68)] +pub struct PlayerTelepipe { -//} +} #[pso_message(0x69)] pub struct NpcSpawn { data: [u8; 8], } +//#[pso_message(0x6F)] +//pub struct PlayerJoiningGame { + +//} + +//#[pso_message(0x71)] +//pub struct PlayerJoiningGame2 { + +//} + #[pso_message(0x74)] pub struct WordSelect { data: [u8; 28], @@ -523,12 +567,12 @@ pub struct PlayerKilledByMonster { //} -//#[pso_message(0x94)] -//pub struct PlayerWarped2 { +#[pso_message(0x94)] +pub struct PlayerWarped2 { -//} +} -//#[pso_message(0x94)] +//#[pso_message(0x97)] //pub struct CmodeTryAgain { //} @@ -556,6 +600,11 @@ pub struct ModifyPlayerStats { //} +//#[pso_message(0xA2)] +//pub struct BoxDropRequest { + +//} + //#[pso_message(0xA3)] //pub struct BossInteractionOlgaFlow { @@ -571,6 +620,11 @@ pub struct ModifyPlayerStats { //} +//#[pso_message(0xA6)] +//pub struct TradeRequest { + +//} + //#[pso_message(0xA8)] //pub struct BossInteractionGolDragon { @@ -613,11 +667,51 @@ pub struct PhotonChairMove { unknown1: u32, } +//#[pso_message(0xB5)] +//pub struct ShopRequest { + +//} + +//#[pso_message(0xB7)] +//pub struct BuyItem { + +//} + +//#[pso_message(0xB8)] +//pub struct TechItem { + +//} + +//#[pso_message(0xBA)] +//pub struct TechWeaponAccept { + +//} + +//#[pso_message(0xBB)] +//pub struct BankRequest { + +//} + +//#[pso_message(0xBD)] +//pub struct BankInteraction { + +//} + //#[pso_message(0xC0)] //pub struct PlayerSoldItem { //} +//#[pso_message(0xC1)] +//pub struct TeamInvite { + +//} + +//#[pso_message(0xC2)] +//pub struct AcceptTeamInvite { + +//} + #[pso_message(0xC3)] pub struct DropCoordinates { drop_area: u32, @@ -631,10 +725,10 @@ pub struct DropCoordinates { //} -//#[pso_message(0xC5)] -//pub struct PlayerUsedMedicalCenter { +#[pso_message(0xC5)] +pub struct PlayerUsedMedicalCenter { -//} +} //#[pso_message(0xC6)] //pub struct ExperienceSteal { @@ -654,6 +748,16 @@ pub struct RequestExp { last_hitter: u32, } +//#[pso_message(0xC9)] +//pub struct QuestRewardMeseta { + +//} + +//#[pso_message(0xCA)] +//pub struct QuestRewardItem { + +//} + //#[pso_message(0xCB)] //pub struct TransferItemRequest { @@ -664,11 +768,31 @@ pub struct RequestExp { //} +//#[pso_message(0xCD)] +//pub struct MasterTransfer { + +//} + +//#[pso_message(0xCE)] +//pub struct AcceptMasterTransfer { + +//} + //#[pso_message(0xCF)] //pub struct RestartBattle { //} +//#[pso_message(0xD0)] +//pub struct BmodeLevelUp { + +//} + +//#[pso_message(0xD1)] +//pub struct CmodeGrave { + +//} + //#[pso_message(0xD2)] //pub struct WriteQuestFlag { @@ -679,6 +803,11 @@ pub struct RequestExp { //} +//#[pso_message(0xD6)] +//pub struct WrapItem { + +//} + //#[pso_message(0xD7)] //pub struct PaganiniPDExchange { @@ -709,14 +838,29 @@ pub struct RequestExp { //} +//#[pso_message(0xDF)] +//pub struct BPDPhotonCrystalExchange { + +//} + +//#[pso_message(0xE0)] +//pub struct BPDRewards { + +//} + //#[pso_message(0xE1)] //pub struct GallonsPlanQuest { //} +//#[pso_message(0xE2)] +//pub struct Coren { + +//} + #[derive(Debug, Clone, PartialEq)] pub enum GameMessage { - //PlayerActivatedSwitch(PlayerActivatedSwitch), + PlayerActivatedSwitch(PlayerActivatedSwitch), GuildcardSend(GuildcardSend), GuildcardRecv(GuildcardRecv), //SymbolChat(SymbolChat), @@ -737,9 +881,9 @@ pub enum GameMessage { PlayerChangedMap(PlayerChangedMap), PlayerChangedMap2(PlayerChangedMap2), TellOtherPlayerMyLocation(TellOtherPlayerMyLocation), - //PlayerWarpingToFloor(PlayerWarpingToFloor), - //PlayerWarping(PlayerWarping), - //PlayerDoneChangingMap(PlayerDoneChangingMap), + PlayerWarpingToFloor(PlayerWarpingToFloor), + PlayerWarping(PlayerWarping), + PlayerDoneChangingMap(PlayerDoneChangingMap), PlayerTeleported(PlayerTeleported), PlayerEquipItem(PlayerEquipItem), PlayerUnequipItem(PlayerUnequipItem), @@ -748,17 +892,17 @@ pub enum GameMessage { PlayerDropItem(PlayerDropItem), PlayerDropItem2(PlayerDropItem2), AddItemToInventory(AddItemToInventory), - //InitializeSpeechNpc(InitializeSpeechNpc), - //FinishSpeechNpc(FinishSpeechNpc), - //FinishSpeechNpcBPD(FinishSpeechNpcBPD), - //PlayerLevelUp(PlayerLevelUp), + InitializeSpeechNpc(InitializeSpeechNpc), + FinishSpeechNpc(FinishSpeechNpc), + FinishSpeechNpcBPD(FinishSpeechNpcBPD), + PlayerLevelUp(PlayerLevelUp), PlayerResurrected(PlayerResurrected), PlayerResurrectedMedicalCenter(PlayerResurrectedMedicalCenter), PlayerUsedMoonAtomizer(PlayerUsedMoonAtomizer), PlayerPBDonation(PlayerPBDonation), PlayerInitiatedPB(PlayerInitiatedPB), - //PlayerLeftArea(PlayerLeftArea), - //PlayerSpawnedIntoArea(PlayerSpawnedIntoArea), + PlayerLeftArea(PlayerLeftArea), + PlayerSpawnedIntoArea(PlayerSpawnedIntoArea), PlayerStopped(PlayerStopped), PlayerLoadedIn(PlayerLoadedIn), PlayerWalking(PlayerWalking), @@ -776,21 +920,24 @@ pub enum GameMessage { PlayerDeath(PlayerDeath), PlayerPostDeathAnimation(PlayerPostDeathAnimation), PlayerScapedollResurrection(PlayerScapedollResurrection), - //PlayerActivatedSwitch2(PlayerActivatedSwitch2), + PlayerActivatedSwitch2(PlayerActivatedSwitch2), TalkToNpc(TalkToNpc), //Unknown53(Unknown53), PlayerWarped(PlayerWarped), LobbyEmote(LobbyEmote), PickupItem(PickupItem), + PickupItem2(PickupItem2), //SplittingStack(SplittingStack), - //BoxDrops(BoxDrops), + BoxDrops(BoxDrops), RequestItem(RequestItem), PlayerPBParticle(PlayerPBParticle), FloorItemLimitItemDeletion(FloorItemLimitItemDeletion), - //PlayerUsedStarAtomizer(PlayerUsedStarAtomizer), + PlayerUsedStarAtomizer(PlayerUsedStarAtomizer), SpawningMonsters(SpawningMonsters), - //PlayerTelepipe(PlayerTelepipe), + PlayerTelepipe(PlayerTelepipe), NpcSpawn(NpcSpawn), + //PlayerJoiningGame(PlayerJoiningGame), + //PlayerJoiningGame2(PlayerJoiningGame2), WordSelect(WordSelect), PlayerChangedFloor(PlayerChangedFloor), KillMonster(KillMonster), @@ -806,15 +953,17 @@ pub enum GameMessage { PlayerKilledByMonster(PlayerKilledByMonster), //CmodeStatistics(CmodeStatistics), //PlayerTechStart(PlayerTechStart), - //PlayerWarped2(PlayerWarped2), + PlayerWarped2(PlayerWarped2), //CmodeTryAgain(CmodeTryAgain), ModifyPlayerStats(ModifyPlayerStats), //CmodePartyWipe(CmodePartyWipe), //BossInteractionGalGryphon(BossInteractionGalGryphon), //PlayerMoonAtomizerResurrection(PlayerMoonAtomizerResurrection), + //BoxDropRequest(BoxDropRequest), //BossInteractionOlgaFlow(BossInteractionOlgaFlow), //BossInteractionOlgaFlow2(BossInteractionOlgaFlow2), //BossInteractionOlgaFlow3(BossInteractionOlgaFlow3), + //TradeRequest(TradeRequest), //BossInteractionGolDragon(BossInteractionGolDragon), //BossInteractionBarbaRay(BossInteractionBarbaRay), //BossInteractionBarbaRay2(BossInteractionBarbaRay2), @@ -823,25 +972,43 @@ pub enum GameMessage { UnknownAE(UnknownAE), PhotonChairTurn(PhotonChairTurn), PhotonChairMove(PhotonChairMove), + //ShopRequest(ShopRequest), + //BuyItem(BuyItem), + //TechItem(TechItem), + //TechWeaponAccept(TechWeaponAccept), + //BankRequest(BankRequest), + //BankInteraction(BankInteraction), //PlayerSoldItem(PlayerSoldItem), + //TeamInvite(TeamInvite), + //AcceptTeamInvite(AcceptTeamInvite), DropCoordinates(DropCoordinates), //SortItems(SortItems), - //PlayerUsedMedicalCenter(PlayerUsedMedicalCenter), + PlayerUsedMedicalCenter(PlayerUsedMedicalCenter), //ExperienceSteal(ExperienceSteal), //ChargeAttack(ChargeAttack), RequestExp(RequestExp), + //QuestRewardMeseta(QuestRewardMeseta), + //QuestRewardItem(QuestRewardItem), //TransferItemRequest(TransferItemRequest), //ExchangeItemForTeampoints(ExchangeItemForTeampoints), + //MasterTransfer(MasterTransfer), + //AcceptMasterTransfer(AcceptMasterTransfer), //RestartBattle(RestartBattle), + //BmodeLevelUp(BmodeLevelUp), + //CmodeGrave(CmodeGrave), //WriteQuestFlag(WriteQuestFlag), //QuestItemExchange(QuestItemExchange), + //WrapItem(WrapItem), //PaganiniPDExchange(PaganiniPDExchange), //SrankSpecialModification(SrankSpecialModification), //MomokaItemShop(MomokaItemShop), //WeaponAttributeEnhancement(WeaponAttributeEnhancement), //BossInteractionSaintMillion(BossInteractionSaintMillion), //GoodLuckQuest(GoodLuckQuest), + //BPDPhotonCrystalExchange(BPDPhotonCrystalExchange), + //BPDRewards(BPDRewards), //GallonsPlanQuest(GallonsPlanQuest), + //Coren(Coren), } impl PSOPacketData for GameMessage { @@ -852,7 +1019,7 @@ impl PSOPacketData for GameMessage { cur.read(&mut len); cur.seek(SeekFrom::Current(-2)); // Cursor doesn't implement Peek? match byte[0] { - //PlayerActivatedSwitch::CMD => Ok(GameMessage::PlayerActivatedSwitch(PlayerActivatedSwitch::from_bytes(&mut cur)?)), + PlayerActivatedSwitch::CMD => Ok(GameMessage::PlayerActivatedSwitch(PlayerActivatedSwitch::from_bytes(&mut cur)?)), GuildcardSend::CMD => Ok(GameMessage::GuildcardSend(GuildcardSend::from_bytes(&mut cur)?)), GuildcardRecv::CMD => Ok(GameMessage::GuildcardRecv(GuildcardRecv::from_bytes(&mut cur)?)), //SymbolChat::CMD => Ok(GameMessage::SymbolChat(SymbolChat::from_bytes(&mut cur)?)), @@ -873,9 +1040,9 @@ impl PSOPacketData for GameMessage { PlayerChangedMap::CMD if len[0] == 6 => Ok(GameMessage::PlayerChangedMap(PlayerChangedMap::from_bytes(&mut cur)?)), PlayerChangedMap2::CMD if len[0] == 2 => Ok(GameMessage::PlayerChangedMap2(PlayerChangedMap2::from_bytes(&mut cur)?)), TellOtherPlayerMyLocation::CMD => Ok(GameMessage::TellOtherPlayerMyLocation(TellOtherPlayerMyLocation::from_bytes(&mut cur)?)), - //PlayerWarpingToFloor::CMD => Ok(GameMessage::PlayerWarpingToFloor(PlayerWarpingToFloor::from_bytes(&mut cur)?)), - //PlayerWarping::CMD => Ok(GameMessage::PlayerWarping(PlayerWarping::from_bytes(&mut cur)?)), - //PlayerDoneChangingMap::CMD => Ok(GameMessage::PlayerDoneChangingMap(PlayerDoneChangingMap::from_bytes(&mut cur)?)), + PlayerWarpingToFloor::CMD => Ok(GameMessage::PlayerWarpingToFloor(PlayerWarpingToFloor::from_bytes(&mut cur)?)), + PlayerWarping::CMD => Ok(GameMessage::PlayerWarping(PlayerWarping::from_bytes(&mut cur)?)), + PlayerDoneChangingMap::CMD => Ok(GameMessage::PlayerDoneChangingMap(PlayerDoneChangingMap::from_bytes(&mut cur)?)), PlayerTeleported::CMD => Ok(GameMessage::PlayerTeleported(PlayerTeleported::from_bytes(&mut cur)?)), PlayerEquipItem::CMD => Ok(GameMessage::PlayerEquipItem(PlayerEquipItem::from_bytes(&mut cur)?)), PlayerUnequipItem::CMD => Ok(GameMessage::PlayerUnequipItem(PlayerUnequipItem::from_bytes(&mut cur)?)), @@ -884,17 +1051,17 @@ impl PSOPacketData for GameMessage { PlayerDropItem::CMD => Ok(GameMessage::PlayerDropItem(PlayerDropItem::from_bytes(&mut cur)?)), PlayerDropItem2::CMD => Ok(GameMessage::PlayerDropItem2(PlayerDropItem2::from_bytes(&mut cur)?)), AddItemToInventory::CMD => Ok(GameMessage::AddItemToInventory(AddItemToInventory::from_bytes(&mut cur)?)), - //InitializeSpeechNpc::CMD => Ok(GameMessage::InitializeSpeechNpc(InitializeSpeechNpc::from_bytes(&mut cur)?)), - //FinishSpeechNpc::CMD => Ok(GameMessage::FinishSpeechNpc(FinishSpeechNpc::from_bytes(&mut cur)?)), - //FinishSpeechNpcBPD::CMD => Ok(GameMessage::FinishSpeechNpcBPD(FinishSpeechNpcBPD::from_bytes(&mut cur)?)), - //PlayerLevelUp::CMD => Ok(GameMessage::PlayerLevelUp(PlayerLevelUp::from_bytes(&mut cur)?)), + InitializeSpeechNpc::CMD => Ok(GameMessage::InitializeSpeechNpc(InitializeSpeechNpc::from_bytes(&mut cur)?)), + FinishSpeechNpc::CMD => Ok(GameMessage::FinishSpeechNpc(FinishSpeechNpc::from_bytes(&mut cur)?)), + FinishSpeechNpcBPD::CMD => Ok(GameMessage::FinishSpeechNpcBPD(FinishSpeechNpcBPD::from_bytes(&mut cur)?)), + PlayerLevelUp::CMD => Ok(GameMessage::PlayerLevelUp(PlayerLevelUp::from_bytes(&mut cur)?)), PlayerResurrected::CMD => Ok(GameMessage::PlayerResurrected(PlayerResurrected::from_bytes(&mut cur)?)), PlayerResurrectedMedicalCenter::CMD => Ok(GameMessage::PlayerResurrectedMedicalCenter(PlayerResurrectedMedicalCenter::from_bytes(&mut cur)?)), PlayerUsedMoonAtomizer::CMD => Ok(GameMessage::PlayerUsedMoonAtomizer(PlayerUsedMoonAtomizer::from_bytes(&mut cur)?)), PlayerPBDonation::CMD => Ok(GameMessage::PlayerPBDonation(PlayerPBDonation::from_bytes(&mut cur)?)), PlayerInitiatedPB::CMD => Ok(GameMessage::PlayerInitiatedPB(PlayerInitiatedPB::from_bytes(&mut cur)?)), - //PlayerLeftArea::CMD => Ok(GameMessage::PlayerLeftArea(PlayerLeftArea::from_bytes(&mut cur)?)), - //PlayerSpawnedIntoArea::CMD => Ok(GameMessage::PlayerSpawnedIntoArea(PlayerSpawnedIntoArea::from_bytes(&mut cur)?)), + PlayerLeftArea::CMD => Ok(GameMessage::PlayerLeftArea(PlayerLeftArea::from_bytes(&mut cur)?)), + PlayerSpawnedIntoArea::CMD => Ok(GameMessage::PlayerSpawnedIntoArea(PlayerSpawnedIntoArea::from_bytes(&mut cur)?)), PlayerStopped::CMD => Ok(GameMessage::PlayerStopped(PlayerStopped::from_bytes(&mut cur)?)), PlayerLoadedIn::CMD => Ok(GameMessage::PlayerLoadedIn(PlayerLoadedIn::from_bytes(&mut cur)?)), PlayerWalking::CMD => Ok(GameMessage::PlayerWalking(PlayerWalking::from_bytes(&mut cur)?)), @@ -912,21 +1079,24 @@ impl PSOPacketData for GameMessage { PlayerDeath::CMD => Ok(GameMessage::PlayerDeath(PlayerDeath::from_bytes(&mut cur)?)), PlayerPostDeathAnimation::CMD => Ok(GameMessage::PlayerPostDeathAnimation(PlayerPostDeathAnimation::from_bytes(&mut cur)?)), PlayerScapedollResurrection::CMD => Ok(GameMessage::PlayerScapedollResurrection(PlayerScapedollResurrection::from_bytes(&mut cur)?)), - //PlayerActivatedSwitch2::CMD => Ok(GameMessage::PlayerActivatedSwitch2(PlayerActivatedSwitch2::from_bytes(&mut cur)?)), + PlayerActivatedSwitch2::CMD => Ok(GameMessage::PlayerActivatedSwitch2(PlayerActivatedSwitch2::from_bytes(&mut cur)?)), TalkToNpc::CMD => Ok(GameMessage::TalkToNpc(TalkToNpc::from_bytes(&mut cur)?)), //Unknown53::CMD => Ok(GameMessage::Unknown53(Unknown53::from_bytes(&mut cur)?)), PlayerWarped::CMD => Ok(GameMessage::PlayerWarped(PlayerWarped::from_bytes(&mut cur)?)), LobbyEmote::CMD => Ok(GameMessage::LobbyEmote(LobbyEmote::from_bytes(&mut cur)?)), PickupItem::CMD => Ok(GameMessage::PickupItem(PickupItem::from_bytes(&mut cur)?)), + PickupItem2::CMD => Ok(GameMessage::PickupItem2(PickupItem2::from_bytes(&mut cur)?)), //SplittingStack::CMD => Ok(GameMessage::SplittingStack(SplittingStack::from_bytes(&mut cur)?)), - //BoxDrops::CMD => Ok(GameMessage::BoxDrops(BoxDrops::from_bytes(&mut cur)?)), + BoxDrops::CMD => Ok(GameMessage::BoxDrops(BoxDrops::from_bytes(&mut cur)?)), RequestItem::CMD => Ok(GameMessage::RequestItem(RequestItem::from_bytes(&mut cur)?)), PlayerPBParticle::CMD => Ok(GameMessage::PlayerPBParticle(PlayerPBParticle::from_bytes(&mut cur)?)), FloorItemLimitItemDeletion::CMD => Ok(GameMessage::FloorItemLimitItemDeletion(FloorItemLimitItemDeletion::from_bytes(&mut cur)?)), - //PlayerUsedStarAtomizer::CMD => Ok(GameMessage::PlayerUsedStarAtomizer(PlayerUsedStarAtomizer::from_bytes(&mut cur)?)), + PlayerUsedStarAtomizer::CMD => Ok(GameMessage::PlayerUsedStarAtomizer(PlayerUsedStarAtomizer::from_bytes(&mut cur)?)), SpawningMonsters::CMD => Ok(GameMessage::SpawningMonsters(SpawningMonsters::from_bytes(&mut cur)?)), - //PlayerTelepipe::CMD => Ok(GameMessage::PlayerTelepipe(PlayerTelepipe::from_bytes(&mut cur)?)), + PlayerTelepipe::CMD => Ok(GameMessage::PlayerTelepipe(PlayerTelepipe::from_bytes(&mut cur)?)), NpcSpawn::CMD => Ok(GameMessage::NpcSpawn(NpcSpawn::from_bytes(&mut cur)?)), + //PlayerJoiningGame::CMD => Ok(GameMessage::PlayerJoiningGame(PlayerJoiningGame::from_bytes(&mut cur)?)), + //PlayerJoiningGame2::CMD => Ok(GameMessage::PlayerJoiningGame2(PlayerJoiningGame2::from_bytes(&mut cur)?)), WordSelect::CMD => Ok(GameMessage::WordSelect(WordSelect::from_bytes(&mut cur)?)), PlayerChangedFloor::CMD => Ok(GameMessage::PlayerChangedFloor(PlayerChangedFloor::from_bytes(&mut cur)?)), KillMonster::CMD => Ok(GameMessage::KillMonster(KillMonster::from_bytes(&mut cur)?)), @@ -942,15 +1112,17 @@ impl PSOPacketData for GameMessage { PlayerKilledByMonster::CMD => Ok(GameMessage::PlayerKilledByMonster(PlayerKilledByMonster::from_bytes(&mut cur)?)), //CmodeStatistics::CMD => Ok(GameMessage::CmodeStatistics(CmodeStatistics::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)?)), ModifyPlayerStats::CMD => Ok(GameMessage::ModifyPlayerStats(ModifyPlayerStats::from_bytes(&mut cur)?)), //CmodePartyWipe::CMD => Ok(GameMessage::CmodePartyWipe(CmodePartyWipe::from_bytes(&mut cur)?)), //BossInteractionGalGryphon::CMD => Ok(GameMessage::BossInteractionGalGryphon(BossInteractionGalGryphon::from_bytes(&mut cur)?)), //PlayerMoonAtomizerResurrection::CMD => Ok(GameMessage::PlayerMoonAtomizerResurrection(PlayerMoonAtomizerResurrection::from_bytes(&mut cur)?)), + //BoxDropRequest::CMD => Ok(GameMessage::BoxDropRequest(BoxDropRequest::from_bytes(&mut cur)?)), //BossInteractionOlgaFlow::CMD => Ok(GameMessage::BossInteractionOlgaFlow(BossInteractionOlgaFlow::from_bytes(&mut cur)?)), //BossInteractionOlgaFlow2::CMD => Ok(GameMessage::BossInteractionOlgaFlow2(BossInteractionOlgaFlow2::from_bytes(&mut cur)?)), //BossInteractionOlgaFlow3::CMD => Ok(GameMessage::BossInteractionOlgaFlow3(BossInteractionOlgaFlow3::from_bytes(&mut cur)?)), + //TradeRequest::CMD => Ok(GameMessage::TradeRequest(TradeRequest::from_bytes(&mut cur)?)), //BossInteractionGolDragon::CMD => Ok(GameMessage::BossInteractionGolDragon(BossInteractionGolDragon::from_bytes(&mut cur)?)), //BossInteractionBarbaRay::CMD => Ok(GameMessage::BossInteractionBarbaRay(BossInteractionBarbaRay::from_bytes(&mut cur)?)), //BossInteractionBarbaRay2::CMD => Ok(GameMessage::BossInteractionBarbaRay2(BossInteractionBarbaRay2::from_bytes(&mut cur)?)), @@ -959,25 +1131,43 @@ impl PSOPacketData for GameMessage { UnknownAE::CMD => Ok(GameMessage::UnknownAE(UnknownAE::from_bytes(&mut cur)?)), PhotonChairTurn::CMD => Ok(GameMessage::PhotonChairTurn(PhotonChairTurn::from_bytes(&mut cur)?)), PhotonChairMove::CMD => Ok(GameMessage::PhotonChairMove(PhotonChairMove::from_bytes(&mut cur)?)), + //ShopRequest::CMD => Ok(GameMessage::ShopRequest(ShopRequest::from_bytes(&mut cur)?)), + //BuyItem::CMD => Ok(GameMessage::BuyItem(BuyItem::from_bytes(&mut cur)?)), + //TechItem::CMD => Ok(GameMessage::TechItem(TechItem::from_bytes(&mut cur)?)), + //TechWeaponAccept::CMD => Ok(GameMessage::TechWeaponAccept(TechWeaponAccept::from_bytes(&mut cur)?)), + //BankRequest::CMD => Ok(GameMessage::BankRequest(BankRequest::from_bytes(&mut cur)?)), + //BankInteraction::CMD => Ok(GameMessage::BankInteraction(BankInteraction::from_bytes(&mut cur)?)), //PlayerSoldItem::CMD => Ok(GameMessage::PlayerSoldItem(PlayerSoldItem::from_bytes(&mut cur)?)), + //TeamInvite::CMD => Ok(GameMessage::TeamInvite(TeamInvite::from_bytes(&mut cur)?)), + //AcceptTeamInvite::CMD => Ok(GameMessage::AcceptTeamInvite(AcceptTeamInvite::from_bytes(&mut cur)?)), DropCoordinates::CMD => Ok(GameMessage::DropCoordinates(DropCoordinates::from_bytes(&mut cur)?)), //SortItems::CMD => Ok(GameMessage::SortItems(SortItems::from_bytes(&mut cur)?)), - //PlayerUsedMedicalCenter::CMD => Ok(GameMessage::PlayerUsedMedicalCenter(PlayerUsedMedicalCenter::from_bytes(&mut cur)?)), + PlayerUsedMedicalCenter::CMD => Ok(GameMessage::PlayerUsedMedicalCenter(PlayerUsedMedicalCenter::from_bytes(&mut cur)?)), //ExperienceSteal::CMD => Ok(GameMessage::ExperienceSteal(ExperienceSteal::from_bytes(&mut cur)?)), //ChargeAttack::CMD => Ok(GameMessage::ChargeAttack(ChargeAttack::from_bytes(&mut cur)?)), RequestExp::CMD => Ok(GameMessage::RequestExp(RequestExp::from_bytes(&mut cur)?)), + //QuestRewardMeseta::CMD => Ok(GameMessage::QuestRewardMeseta(QuestRewardMeseta::from_bytes(&mut cur)?)), + //QuestRewardItem::CMD => Ok(GameMessage::QuestRewardItem(QuestRewardItem::from_bytes(&mut cur)?)), //TransferItemRequest::CMD => Ok(GameMessage::TransferItemRequest(TransferItemRequest::from_bytes(&mut cur)?)), //ExchangeItemForTeampoints::CMD => Ok(GameMessage::ExchangeItemForTeampoints(ExchangeItemForTeampoints::from_bytes(&mut cur)?)), + //MasterTransfer::CMD => Ok(GameMessage::MasterTransfer(MasterTransfer::from_bytes(&mut cur)?)), + //AcceptMasterTransfer::CMD => Ok(GameMessage::AcceptMasterTransfer(AcceptMasterTransfer::from_bytes(&mut cur)?)), //RestartBattle::CMD => Ok(GameMessage::RestartBattle(RestartBattle::from_bytes(&mut cur)?)), + //BmodeLevelUp::CMD => Ok(GameMessage::BmodeLevelUp(BmodeLevelUp::from_bytes(&mut cur)?)), + //CmodeGrave::CMD => Ok(GameMessage::CmodeGrave(CmodeGrave::from_bytes(&mut cur)?)), //WriteQuestFlag::CMD => Ok(GameMessage::WriteQuestFlag(WriteQuestFlag::from_bytes(&mut cur)?)), //QuestItemExchange::CMD => Ok(GameMessage::QuestItemExchange(QuestItemExchange::from_bytes(&mut cur)?)), + //WrapItem::CMD => Ok(GameMessage::WrapItem(WrapItem::from_bytes(&mut cur)?)), //PaganiniPDExchange::CMD => Ok(GameMessage::PaganiniPDExchange(PaganiniPDExchange::from_bytes(&mut cur)?)), //SrankSpecialModification::CMD => Ok(GameMessage::SrankSpecialModification(SrankSpecialModification::from_bytes(&mut cur)?)), //MomokaItemShop::CMD => Ok(GameMessage::MomokaItemShop(MomokaItemShop::from_bytes(&mut cur)?)), //WeaponAttributeEnhancement::CMD => Ok(GameMessage::WeaponAttributeEnhancement(WeaponAttributeEnhancement::from_bytes(&mut cur)?)), //BossInteractionSaintMillion::CMD => Ok(GameMessage::BossInteractionSaintMillion(BossInteractionSaintMillion::from_bytes(&mut cur)?)), //GoodLuckQuest::CMD => Ok(GameMessage::GoodLuckQuest(GoodLuckQuest::from_bytes(&mut cur)?)), + //BPDPhotonCrystalExchange::CMD => Ok(GameMessage::BPDPhotonCrystalExchange(BPDPhotonCrystalExchange::from_bytes(&mut cur)?)), + //BPDRewards::CMD => Ok(GameMessage::BPDRewards(BPDRewards::from_bytes(&mut cur)?)), //GallonsPlanQuest::CMD => Ok(GameMessage::GallonsPlanQuest(GallonsPlanQuest::from_bytes(&mut cur)?)), + //Coren::CMD => Ok(GameMessage::Coren(Coren::from_bytes(&mut cur)?)), _ => Err(PacketParseError::UnknownMessage(byte[0], { let mut b = vec![0; len[0] as usize * 4]; @@ -990,7 +1180,7 @@ impl PSOPacketData for GameMessage { fn as_bytes(&self) -> Vec { match self { - //GameMessage::PlayerActivatedSwitch(data) => data.as_bytes(), + GameMessage::PlayerActivatedSwitch(data) => data.as_bytes(), GameMessage::GuildcardSend(data) => data.as_bytes(), GameMessage::GuildcardRecv(data) => data.as_bytes(), //GameMessage::SymbolChat(data) => data.as_bytes(), @@ -1011,9 +1201,9 @@ impl PSOPacketData for GameMessage { GameMessage::PlayerChangedMap(data) => data.as_bytes(), GameMessage::PlayerChangedMap2(data) => data.as_bytes(), GameMessage::TellOtherPlayerMyLocation(data) => data.as_bytes(), - //GameMessage::PlayerWarpingToFloor(data) => data.as_bytes(), - //GameMessage::PlayerWarping(data) => data.as_bytes(), - //GameMessage::PlayerDoneChangingMap(data) => data.as_bytes(), + GameMessage::PlayerWarpingToFloor(data) => data.as_bytes(), + GameMessage::PlayerWarping(data) => data.as_bytes(), + GameMessage::PlayerDoneChangingMap(data) => data.as_bytes(), GameMessage::PlayerTeleported(data) => data.as_bytes(), GameMessage::PlayerEquipItem(data) => data.as_bytes(), GameMessage::PlayerUnequipItem(data) => data.as_bytes(), @@ -1022,17 +1212,17 @@ impl PSOPacketData for GameMessage { GameMessage::PlayerDropItem(data) => data.as_bytes(), GameMessage::PlayerDropItem2(data) => data.as_bytes(), GameMessage::AddItemToInventory(data) => data.as_bytes(), - //GameMessage::InitializeSpeechNpc(data) => data.as_bytes(), - //GameMessage::FinishSpeechNpc(data) => data.as_bytes(), - //GameMessage::FinishSpeechNpcBPD(data) => data.as_bytes(), - //GameMessage::PlayerLevelUp(data) => data.as_bytes(), + GameMessage::InitializeSpeechNpc(data) => data.as_bytes(), + GameMessage::FinishSpeechNpc(data) => data.as_bytes(), + GameMessage::FinishSpeechNpcBPD(data) => data.as_bytes(), + GameMessage::PlayerLevelUp(data) => data.as_bytes(), GameMessage::PlayerResurrected(data) => data.as_bytes(), GameMessage::PlayerResurrectedMedicalCenter(data) => data.as_bytes(), GameMessage::PlayerUsedMoonAtomizer(data) => data.as_bytes(), GameMessage::PlayerPBDonation(data) => data.as_bytes(), GameMessage::PlayerInitiatedPB(data) => data.as_bytes(), - //GameMessage::PlayerLeftArea(data) => data.as_bytes(), - //GameMessage::PlayerSpawnedIntoArea(data) => data.as_bytes(), + GameMessage::PlayerLeftArea(data) => data.as_bytes(), + GameMessage::PlayerSpawnedIntoArea(data) => data.as_bytes(), GameMessage::PlayerStopped(data) => data.as_bytes(), GameMessage::PlayerLoadedIn(data) => data.as_bytes(), GameMessage::PlayerWalking(data) => data.as_bytes(), @@ -1050,21 +1240,24 @@ impl PSOPacketData for GameMessage { GameMessage::PlayerDeath(data) => data.as_bytes(), GameMessage::PlayerPostDeathAnimation(data) => data.as_bytes(), GameMessage::PlayerScapedollResurrection(data) => data.as_bytes(), - //GameMessage::PlayerActivatedSwitch2(data) => data.as_bytes(), + GameMessage::PlayerActivatedSwitch2(data) => data.as_bytes(), GameMessage::TalkToNpc(data) => data.as_bytes(), //GameMessage::Unknown53(data) => data.as_bytes(), GameMessage::PlayerWarped(data) => data.as_bytes(), GameMessage::LobbyEmote(data) => data.as_bytes(), GameMessage::PickupItem(data) => data.as_bytes(), + GameMessage::PickupItem2(data) => data.as_bytes(), //GameMessage::SplittingStack(data) => data.as_bytes(), - //GameMessage::BoxDrops(data) => data.as_bytes(), + GameMessage::BoxDrops(data) => data.as_bytes(), GameMessage::RequestItem(data) => data.as_bytes(), GameMessage::PlayerPBParticle(data) => data.as_bytes(), GameMessage::FloorItemLimitItemDeletion(data) => data.as_bytes(), - //GameMessage::PlayerUsedStarAtomizer(data) => data.as_bytes(), + GameMessage::PlayerUsedStarAtomizer(data) => data.as_bytes(), GameMessage::SpawningMonsters(data) => data.as_bytes(), - //GameMessage::PlayerTelepipe(data) => data.as_bytes(), + GameMessage::PlayerTelepipe(data) => data.as_bytes(), GameMessage::NpcSpawn(data) => data.as_bytes(), + //GameMessage::PlayerJoiningGame(data) => data.as_bytes(), + //GameMessage::PlayerJoiningGame2(data) => data.as_bytes(), GameMessage::WordSelect(data) => data.as_bytes(), GameMessage::PlayerChangedFloor(data) => data.as_bytes(), GameMessage::KillMonster(data) => data.as_bytes(), @@ -1080,15 +1273,17 @@ impl PSOPacketData for GameMessage { GameMessage::PlayerKilledByMonster(data) => data.as_bytes(), //GameMessage::CmodeStatistics(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::ModifyPlayerStats(data) => data.as_bytes(), //GameMessage::CmodePartyWipe(data) => data.as_bytes(), //GameMessage::BossInteractionGalGryphon(data) => data.as_bytes(), //GameMessage::PlayerMoonAtomizerResurrection(data) => data.as_bytes(), + //GameMessage::BoxDropRequest(data) => data.as_bytes(), //GameMessage::BossInteractionOlgaFlow(data) => data.as_bytes(), //GameMessage::BossInteractionOlgaFlow2(data) => data.as_bytes(), //GameMessage::BossInteractionOlgaFlow3(data) => data.as_bytes(), + //GameMessage::TradeRequest(data) => data.as_bytes(), //GameMessage::BossInteractionGolDragon(data) => data.as_bytes(), //GameMessage::BossInteractionBarbaRay(data) => data.as_bytes(), //GameMessage::BossInteractionBarbaRay2(data) => data.as_bytes(), @@ -1097,25 +1292,43 @@ impl PSOPacketData for GameMessage { GameMessage::UnknownAE(data) => data.as_bytes(), GameMessage::PhotonChairTurn(data) => data.as_bytes(), GameMessage::PhotonChairMove(data) => data.as_bytes(), + //GameMessage::ShopRequest(data) => data.as_bytes(), + //GameMessage::BuyItem(data) => data.as_bytes(), + //GameMessage::TechItem(data) => data.as_bytes(), + //GameMessage::TechWeaponAccept(data) => data.as_bytes(), + //GameMessage::BankRequest(data) => data.as_bytes(), + //GameMessage::BankInteraction(data) => data.as_bytes(), //GameMessage::PlayerSoldItem(data) => data.as_bytes(), + //GameMessage::TeamInvite(data) => data.as_bytes(), + //GameMessage::AcceptTeamInvite(data) => data.as_bytes(), GameMessage::DropCoordinates(data) => data.as_bytes(), //GameMessage::SortItems(data) => data.as_bytes(), - //GameMessage::PlayerUsedMedicalCenter(data) => data.as_bytes(), + GameMessage::PlayerUsedMedicalCenter(data) => data.as_bytes(), //GameMessage::ExperienceSteal(data) => data.as_bytes(), //GameMessage::ChargeAttack(data) => data.as_bytes(), GameMessage::RequestExp(data) => data.as_bytes(), + //GameMessage::QuestRewardMeseta(data) => data.as_bytes(), + //GameMessage::QuestRewardItem(data) => data.as_bytes(), //GameMessage::TransferItemRequest(data) => data.as_bytes(), //GameMessage::ExchangeItemForTeampoints(data) => data.as_bytes(), + //GameMessage::MasterTransfer(data) => data.as_bytes(), + //GameMessage::AcceptMasterTransfer(data) => data.as_bytes(), //GameMessage::RestartBattle(data) => data.as_bytes(), + //GameMessage::BmodeLevelUp(data) => data.as_bytes(), + //GameMessage::CmodeGrave(data) => data.as_bytes(), //GameMessage::WriteQuestFlag(data) => data.as_bytes(), //GameMessage::QuestItemExchange(data) => data.as_bytes(), + //GameMessage::WrapItem(data) => data.as_bytes(), //GameMessage::PaganiniPDExchange(data) => data.as_bytes(), //GameMessage::SrankSpecialModification(data) => data.as_bytes(), //GameMessage::MomokaItemShop(data) => data.as_bytes(), //GameMessage::WeaponAttributeEnhancement(data) => data.as_bytes(), //GameMessage::BossInteractionSaintMillion(data) => data.as_bytes(), //GameMessage::GoodLuckQuest(data) => data.as_bytes(), + //GameMessage::BPDPhotonCrystalExchange(data) => data.as_bytes(), + //GameMessage::BPDRewards(data) => data.as_bytes(), //GameMessage::GallonsPlanQuest(data) => data.as_bytes(), + //GameMessage::Coren(data) => data.as_bytes(), } } } \ No newline at end of file