From aba22a319b56d88a2bd734592d8ffe3dec71e415 Mon Sep 17 00:00:00 2001 From: amibu Date: Tue, 5 Sep 2017 21:30:50 +0200 Subject: [PATCH 1/5] Added getters for effects --- src/servers/Server_Zone/Actor/Actor.cpp | 5 +++++ src/servers/Server_Zone/Actor/Actor.h | 2 ++ .../Server_Zone/StatusEffect/StatusEffectContainer.cpp | 5 +++++ src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h | 3 ++- 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/servers/Server_Zone/Actor/Actor.cpp b/src/servers/Server_Zone/Actor/Actor.cpp index 6a3d45e3..c4bea0bb 100644 --- a/src/servers/Server_Zone/Actor/Actor.cpp +++ b/src/servers/Server_Zone/Actor/Actor.cpp @@ -645,3 +645,8 @@ void Core::Entity::Actor::addStatusEffectByIdIfNotExist( int32_t id, int32_t dur } } +Core::StatusEffect::StatusEffectContainerPtr Core::Entity::Actor::getStatusEffectContainer() const +{ + return m_pStatusEffectContainer; +} + diff --git a/src/servers/Server_Zone/Actor/Actor.h b/src/servers/Server_Zone/Actor/Actor.h index 49ec397c..824ace8e 100644 --- a/src/servers/Server_Zone/Actor/Actor.h +++ b/src/servers/Server_Zone/Actor/Actor.h @@ -298,6 +298,8 @@ public: // add a status effect by id if it doesn't exist void addStatusEffectByIdIfNotExist( int32_t id, int32_t duration, uint16_t param = 0 ); + StatusEffect::StatusEffectContainerPtr getStatusEffectContainer() const; + // TODO: Why did i even declare them publicly here?! std::set< ActorPtr > m_inRangeActors; std::set< PlayerPtr > m_inRangePlayers; diff --git a/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp b/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp index 3feea268..92252677 100644 --- a/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp +++ b/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp @@ -40,6 +40,11 @@ void Core::StatusEffect::StatusEffectContainer::freeSlot( uint8_t slotId ) m_freeEffectSlotQueue.push( slotId ); } +std::map< uint8_t, Core::StatusEffect::StatusEffectPtr > Core::StatusEffect::StatusEffectContainer::getEffectMap() const +{ + return m_effectMap; +} + Core::StatusEffect::StatusEffectContainer::~StatusEffectContainer() { diff --git a/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h b/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h index 6d479090..84a6826f 100644 --- a/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h +++ b/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h @@ -28,6 +28,8 @@ public: int8_t getFreeSlot(); void freeSlot( uint8_t slotId ); + std::map< uint8_t, Core::StatusEffect::StatusEffectPtr > getEffectMap() const; + void sendUpdate(); @@ -37,7 +39,6 @@ private: Entity::ActorPtr m_pOwner; std::queue< uint8_t > m_freeEffectSlotQueue; - std::vector< StatusEffectPtr > m_effectList; std::vector< std::pair< uint8_t, uint32_t> > m_tickEffectList; std::map< uint8_t, StatusEffectPtr > m_effectMap; }; From fce78bad49532456f9828e16efa0a89a507d3bfd Mon Sep 17 00:00:00 2001 From: amibu Date: Tue, 5 Sep 2017 21:33:26 +0200 Subject: [PATCH 2/5] Fix news.xml --- bin/web/news.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/web/news.xml b/bin/web/news.xml index 89da9b09..77178c9f 100644 --- a/bin/web/news.xml +++ b/bin/web/news.xml @@ -1 +1 @@ -OKIt works14854473281485447484133a2a9464b7a1e1cb77ed6899fc8e813b273d294This is a Sapphire Test topic.58342Test Inquiry1111 \ No newline at end of file +OKIt works14854473281485447484133a2a9464b7a1e1cb77ed6899fc8e813b273d294This is a Sapphire Test topic.58342Test Inquiry1111 \ No newline at end of file From aae20d0d460d522cf4a8f8104e6197f700ffb1b8 Mon Sep 17 00:00:00 2001 From: amibu Date: Tue, 5 Sep 2017 22:40:28 +0200 Subject: [PATCH 3/5] Spawn with effects --- .../Network/PacketWrappers/ActorSpawnPacket.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h index 9b076474..029bd05b 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h @@ -5,6 +5,8 @@ #include #include "src/servers/Server_Zone/Actor/Player.h" #include "src/servers/Server_Zone/Forwards.h" +#include "src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h" +#include "src/servers/Server_Zone/StatusEffect/StatusEffect.h" namespace Core { namespace Network { @@ -80,6 +82,14 @@ private: //m_data.unknown_61 = 7; + for( auto const& effect : pPlayer->getStatusEffectContainer()->getEffectMap() ) + { + m_data.effect[effect.first].effect_id = effect.second->getId(); + m_data.effect[effect.first].duration = effect.second->getDuration(); + m_data.effect[effect.first].sourceActorId = effect.second->getSrcActorId(); + } + + }; }; From e62c2ce6c19e3edcd4c7b2a57b4db487efe99b4c Mon Sep 17 00:00:00 2001 From: amibu Date: Wed, 6 Sep 2017 18:25:49 +0200 Subject: [PATCH 4/5] Actually use the correct packet --- .../Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h | 8 -------- .../Network/PacketWrappers/PlayerSpawnPacket.h | 8 ++++++++ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h index 029bd05b..89c56860 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h @@ -82,14 +82,6 @@ private: //m_data.unknown_61 = 7; - for( auto const& effect : pPlayer->getStatusEffectContainer()->getEffectMap() ) - { - m_data.effect[effect.first].effect_id = effect.second->getId(); - m_data.effect[effect.first].duration = effect.second->getDuration(); - m_data.effect[effect.first].sourceActorId = effect.second->getSrcActorId(); - } - - }; }; diff --git a/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h index 08e7d4f1..636f65ed 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h @@ -93,6 +93,14 @@ namespace Server { //m_data.unknown_60 = 3; //m_data.unknown_61 = 7; + for( auto const& effect : pPlayer->getStatusEffectContainer()->getEffectMap() ) + { + m_data.effect[effect.first].effect_id = effect.second->getId(); + m_data.effect[effect.first].duration = effect.second->getDuration(); + m_data.effect[effect.first].sourceActorId = effect.second->getSrcActorId(); + m_data.effect[effect.first].unknown1 = effect.second->getParam(); + } + }; }; From 41475a0e76db2f5db18a9392f7459bdcb18e2c2a Mon Sep 17 00:00:00 2001 From: amibu Date: Wed, 6 Sep 2017 18:29:47 +0200 Subject: [PATCH 5/5] Correctly send time left --- .../Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h index 636f65ed..01d9a11e 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h @@ -93,10 +93,12 @@ namespace Server { //m_data.unknown_60 = 3; //m_data.unknown_61 = 7; + uint64_t currentTimeMs = Util::getTimeMs(); + for( auto const& effect : pPlayer->getStatusEffectContainer()->getEffectMap() ) { m_data.effect[effect.first].effect_id = effect.second->getId(); - m_data.effect[effect.first].duration = effect.second->getDuration(); + m_data.effect[effect.first].duration = static_cast< float >( effect.second->getDuration() - ( currentTimeMs - effect.second->getStartTimeMs() ) ) / 1000; m_data.effect[effect.first].sourceActorId = effect.second->getSrcActorId(); m_data.effect[effect.first].unknown1 = effect.second->getParam(); }