From 2308a41a63999de649d058951ccf91a1cc2a5b1e Mon Sep 17 00:00:00 2001 From: collett Date: Fri, 3 Jan 2020 22:31:55 +0900 Subject: [PATCH 1/2] Fix aetheryte. --- src/common/Network/PacketDef/Ipcs.h | 2 +- src/scripts/common/aethernet/Aetheryte.cpp | 3 ++- src/world/Actor/Player.cpp | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index b046be2f..2e4e2ae3 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -260,7 +260,7 @@ namespace Sapphire::Network::Packets DuelChallenge = 0x0277, // 4.2; this is responsible for opening the ui PerformNote = 0x0286, // updated 4.3 - PrepareZoning = 0x02A4, // updated 5.0 + PrepareZoning = 0x035C, // updated 5.18 ActorGauge = 0x016D, // updated 5.18 // daily quest info -> without them sent, login will take longer... diff --git a/src/scripts/common/aethernet/Aetheryte.cpp b/src/scripts/common/aethernet/Aetheryte.cpp index 2ba4f14a..cc5afb92 100644 --- a/src/scripts/common/aethernet/Aetheryte.cpp +++ b/src/scripts/common/aethernet/Aetheryte.cpp @@ -59,7 +59,8 @@ public: { if( player.isAetheryteRegistered( eventId & 0xFFFF ) ) { - player.playScene( eventId, 0, 1, [this]( Entity::Player& player, const Event::SceneResult& result ) + // eventParam4 (or params[1] if using EventPlay8, which is actually used on retail) anything bigger than 1 will show select instance menu item + player.playScene( eventId, 0, 1, 0, 1, 2, [this]( Entity::Player& player, const Event::SceneResult& result ) { if( result.param1 == 256 ) // set homepoint { diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index fde14915..4ebe604d 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -372,7 +372,7 @@ void Sapphire::Entity::Player::teleport( uint16_t aetheryteId, uint8_t type ) // TODO: this should be simplified and a type created in server_common/common.h. if( type == 1 ) // teleport { - prepareZoning( data->territory, true, 1, 112 ); // TODO: Really? + prepareZoning( data->territory, true, 1, 0 ); // TODO: Really? sendToInRangeSet( makeActorControl( getId(), ActorDespawnEffect, 0x04 ) ); setZoningType( Common::ZoneingType::Teleport ); } From 45f6f9fa7c03bf90645989bf698ccdf9edd03984 Mon Sep 17 00:00:00 2001 From: collett Date: Fri, 3 Jan 2020 22:47:01 +0900 Subject: [PATCH 2/2] Fix event battle. --- src/common/Network/CommonActorControl.h | 4 ++++ src/world/Network/Handlers/ClientTriggerHandler.cpp | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/src/common/Network/CommonActorControl.h b/src/common/Network/CommonActorControl.h index 6046fecf..c5a32413 100644 --- a/src/common/Network/CommonActorControl.h +++ b/src/common/Network/CommonActorControl.h @@ -264,6 +264,8 @@ namespace Sapphire::Network::ActorControl ToggleOrchestrionUnlock = 0x396, + EventBattleDialog = 0x39C, + /*! * param1 = mountSpeed * Retail sends 12 for mount speed star 1 unlocked and 15 for mount speed star 2 unlocked @@ -391,6 +393,8 @@ namespace Sapphire::Network::ActorControl AchievementComp = 0x203, AchievementCatChat = 0x206, + RequestEventBattle = 0x232C, + QuestJournalUpdateQuestVisibility = 0x2BE, QuestJournalClosed = 0x2BF, diff --git a/src/world/Network/Handlers/ClientTriggerHandler.cpp b/src/world/Network/Handlers/ClientTriggerHandler.cpp index d75ed879..b6decf1b 100644 --- a/src/world/Network/Handlers/ClientTriggerHandler.cpp +++ b/src/world/Network/Handlers/ClientTriggerHandler.cpp @@ -21,6 +21,7 @@ #include "Network/PacketWrappers/ChatPacket.h" #include "Network/PacketWrappers/ServerNoticePacket.h" #include "Network/PacketWrappers/ActorControlPacket.h" +#include "Network/PacketWrappers/ActorControlSelfPacket.h" #include "Manager/DebugCommandMgr.h" #include "Manager/EventMgr.h" @@ -493,6 +494,14 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( FrameworkPtr pFw, canTeleport, unk1, privateEstateAccess, unk ); break; } + case ClientTriggerType::RequestEventBattle: + { + auto packet = makeActorControlSelf( player.getId(), ActorControl::EventBattleDialog, 0, param12, param2 ); + player.queuePacket( packet ); + + player.sendDebug( "event battle level sync: {0}, ilevel sync?: {1}", param12, param2 ); + break; + } default: {