From 7aa18548f084230420df3d862bdb9b18136dbb49 Mon Sep 17 00:00:00 2001 From: Lucy <44952533+Skyliegirl33@users.noreply.github.com> Date: Tue, 24 Jan 2023 06:38:33 +0100 Subject: [PATCH 1/3] Fix battle actor control --- src/world/Actor/Player.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index 57bbaee1..ed689ffd 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -1282,14 +1282,14 @@ const std::map< uint32_t, uint8_t >& Player::getActorIdToHateSlotMap() void Player::onMobAggro( const BNpc& bnpc ) { hateListAdd( bnpc ); - queuePacket( makeActorControl( getId(), SetBattle, 1 ) ); + queuePacket( makeActorControl( getId(), SetBattle, 1, 0, 0 ) ); } void Player::onMobDeaggro( const BNpc& bnpc ) { hateListRemove( bnpc ); if( m_actorIdTohateSlotMap.empty() ) - queuePacket( makeActorControl( getId(), SetBattle ) ); + queuePacket( makeActorControl( getId(), SetBattle, 0, 0, 0 ) ); } bool Player::isLogin() const From 9ea3aeac0ff1f414186d90b89625a8af88726fdf Mon Sep 17 00:00:00 2001 From: Lucy <44952533+Skyliegirl33@users.noreply.github.com> Date: Tue, 24 Jan 2023 06:38:05 +0100 Subject: [PATCH 2/3] Clear zoning type when finishing warp --- src/world/Manager/WarpMgr.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/world/Manager/WarpMgr.cpp b/src/world/Manager/WarpMgr.cpp index b5b23f97..92defc4c 100644 --- a/src/world/Manager/WarpMgr.cpp +++ b/src/world/Manager/WarpMgr.cpp @@ -81,6 +81,8 @@ void WarpMgr::finishWarp( Entity::Player& player ) auto zoneInPacket = makeActorControlSelf( player.getId(), Appear, warpType, 0, 0, 0 ); auto SetStatusPacket = makeActorControl( player.getId(), SetStatus, static_cast< uint8_t >( Common::ActorStatus::Idle ) ); + player.setZoningType( Common::ZoneingType::None ); + if( !player.getGmInvis() ) player.sendToInRangeSet( zoneInPacket ); From 880ec9af362f538599b18080ced37d9921b8bb92 Mon Sep 17 00:00:00 2001 From: Lucy <44952533+Skyliegirl33@users.noreply.github.com> Date: Tue, 24 Jan 2023 05:14:52 +0100 Subject: [PATCH 3/3] Fix playerspawn again, weird memory issue --- src/common/Network/PacketDef/Zone/ServerZoneDef.h | 8 ++++---- src/world/Network/PacketWrappers/PlayerSpawnPacket.h | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index 4ab76eb1..3c64bcf1 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -722,8 +722,8 @@ namespace Sapphire::Network::Packets::WorldPackets::Server uint16_t MpMax; uint16_t NormalAI; uint8_t OnlineStatus; - uint8_t __padding1; uint8_t PermissionInvisibility; + uint8_t PermissionInvisibility1; // makes player invisible too uint8_t FirstAttackType; uint64_t FirstAttackId; uint8_t LinkReply; @@ -733,10 +733,10 @@ namespace Sapphire::Network::Packets::WorldPackets::Server uint8_t LinkFamily; uint8_t LinkParent; uint8_t PoseEmote; - uint8_t __padding2; + uint8_t __padding1; uint16_t Flag; + uint8_t __padding2; uint8_t __padding3; - uint8_t __padding4; Common::StatusWork Status[30]; MountStruct Mount; uint8_t Name[32]; @@ -744,7 +744,7 @@ namespace Sapphire::Network::Packets::WorldPackets::Server uint32_t Equipment[10]; float Pos[3]; uint8_t FreeCompanyTag[6]; - uint8_t PartsState[4]; + uint8_t PartsState[3]; uint8_t State[3]; }; diff --git a/src/world/Network/PacketWrappers/PlayerSpawnPacket.h b/src/world/Network/PacketWrappers/PlayerSpawnPacket.h index 353fd1e2..c8f408df 100644 --- a/src/world/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/world/Network/PacketWrappers/PlayerSpawnPacket.h @@ -85,6 +85,7 @@ namespace Sapphire::Network::Packets::WorldPackets::Server m_data.OnlineStatus = static_cast< uint8_t >( player.getOnlineStatus() ); m_data.PermissionInvisibility = 0; + m_data.PermissionInvisibility1 = 0; m_data.GrandCompany = player.getGc(); if( m_data.GrandCompany > 0 )