From a1b56e525acc3ff012fa66bb04d2eed198d662ad Mon Sep 17 00:00:00 2001 From: Maru Date: Thu, 16 Nov 2017 00:03:36 -0200 Subject: [PATCH 01/25] Packet definitions; Item level (WIP); Packetdef for PlayerStats and PlayerClassInfo. ItemLvl currently broken and not optimized (constantly calling to calc due to equipitem). --- .../Network/PacketDef/Zone/ServerZoneDef.h | 19 ++++++++------ src/servers/Server_Zone/Actor/Actor.h | 2 +- src/servers/Server_Zone/Actor/Player.cpp | 19 ++++++++++---- src/servers/Server_Zone/Actor/Player.h | 8 ++++++ .../Server_Zone/Actor/PlayerInventory.cpp | 21 +++++++++++++--- .../Server_Zone/Inventory/Inventory.cpp | 25 +++++++++++++++++++ src/servers/Server_Zone/Inventory/Inventory.h | 2 ++ src/servers/Server_Zone/Inventory/Item.cpp | 6 +++++ src/servers/Server_Zone/Inventory/Item.h | 3 +++ .../Network/Handlers/ActionHandler.cpp | 5 ++++ 10 files changed, 94 insertions(+), 16 deletions(-) diff --git a/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h b/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h index a73346d2..cb535a34 100644 --- a/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h @@ -815,7 +815,7 @@ struct FFXIVIpcPlayerStats : FFXIVIpcBasePacket uint32_t unknown; uint32_t unknown_1; uint32_t unknown_2; - uint32_t parry; + uint32_t tenacity; uint32_t attack; uint32_t defense; uint32_t accuracy; @@ -837,7 +837,11 @@ struct FFXIVIpcPlayerStats : FFXIVIpcBasePacket uint32_t skillSpeed; uint32_t spellSpeed1; uint32_t spellSpeedMod; - uint32_t unknown_6[5]; + uint32_t unknown_6; + uint32_t craftsmanship; + uint32_t control; + uint32_t gathering; + uint32_t perception; uint32_t resistanceSlow; uint32_t resistanceSilence; uint32_t resistanceBlind; @@ -846,7 +850,7 @@ struct FFXIVIpcPlayerStats : FFXIVIpcBasePacket uint32_t resistanceSleep; uint32_t resistanceBind; uint32_t resistanceHeavy; - uint32_t unknown_7[9]; + uint32_t unknown_7[9]; // possibly level sync stats. }; /** @@ -881,10 +885,11 @@ struct FFXIVIpcPlayerStateFlags : FFXIVIpcBasePacket struct FFXIVIpcPlayerClassInfo : FFXIVIpcBasePacket { uint16_t classId; - uint16_t unknown; - uint16_t level; - uint16_t level1; - uint8_t unknownFields[48]; + uint8_t unknown; + uint8_t isSpecialist; + uint16_t level; // Locks actions, equipment, prob more + uint16_t level1; // Locks roles, prob more + uint32_t roleActions[10]; }; /** diff --git a/src/servers/Server_Zone/Actor/Actor.h b/src/servers/Server_Zone/Actor/Actor.h index 5a784f28..43649cae 100644 --- a/src/servers/Server_Zone/Actor/Actor.h +++ b/src/servers/Server_Zone/Actor/Actor.h @@ -77,7 +77,7 @@ public: uint32_t mnd = 0; uint32_t pie = 0; - uint32_t parry = 0; + uint32_t tenacity = 0; uint32_t attack = 0; uint32_t defense = 0; uint32_t accuracy = 0; diff --git a/src/servers/Server_Zone/Actor/Player.cpp b/src/servers/Server_Zone/Actor/Player.cpp index ba865229..5ad7819f 100644 --- a/src/servers/Server_Zone/Actor/Player.cpp +++ b/src/servers/Server_Zone/Actor/Player.cpp @@ -235,12 +235,13 @@ void Core::Entity::Player::calculateStats() m_baseStats.mnd = static_cast< uint32_t >( base * ( static_cast< float >( classInfo.mod_mnd ) / 100 ) + tribeInfo.mod_mnd ); m_baseStats.pie = static_cast< uint32_t >( base * ( static_cast< float >( classInfo.mod_pie ) / 100 ) + tribeInfo.mod_pie ); - m_baseStats.skillSpeed = paramGrowthInfo.base_secondary; - m_baseStats.spellSpeed = paramGrowthInfo.base_secondary; - m_baseStats.accuracy = paramGrowthInfo.base_secondary; - m_baseStats.critHitRate = paramGrowthInfo.base_secondary; - m_baseStats.attackPotMagic = paramGrowthInfo.base_secondary; + m_baseStats.skillSpeed = paramGrowthInfo.base_secondary; + m_baseStats.spellSpeed = paramGrowthInfo.base_secondary; + m_baseStats.accuracy = paramGrowthInfo.base_secondary; + m_baseStats.critHitRate = paramGrowthInfo.base_secondary; + m_baseStats.attackPotMagic = paramGrowthInfo.base_secondary; m_baseStats.healingPotMagic = paramGrowthInfo.base_secondary; + m_baseStats.tenacity = paramGrowthInfo.base_secondary; m_baseStats.max_mp = Data::CalcBattle::calculateMaxMp( getAsPlayer() ); @@ -433,6 +434,9 @@ void Core::Entity::Player::setZone( uint32_t zoneId ) gcAffPacket.data().gcRank[1] = m_gcRank[1]; gcAffPacket.data().gcRank[2] = m_gcRank[2]; queuePacket( gcAffPacket ); + + m_itemLevel = getInventory()->calculateEquippedGearItemLevel(); + sendItemLevel(); } GamePacketNew< FFXIVIpcInitZone, ServerZoneIpcType > initZonePacket( getId() ); @@ -1575,6 +1579,11 @@ void Core::Entity::Player::setOpeningSequence( uint8_t seq ) m_openingSequence = seq; } +uint16_t Core::Entity::Player::getItemLevel() const +{ + return m_itemLevel; +} + /// Tells client to offset their eorzean time by given timestamp. void Core::Entity::Player::setEorzeaTimeOffset( uint64_t timestamp ) { diff --git a/src/servers/Server_Zone/Actor/Player.h b/src/servers/Server_Zone/Actor/Player.h index bc38df16..61207f67 100644 --- a/src/servers/Server_Zone/Actor/Player.h +++ b/src/servers/Server_Zone/Actor/Player.h @@ -206,6 +206,10 @@ public: void unequipItem( Inventory::EquipSlot equipSlotId, ItemPtr pItem ); /*! equip a weapon, possibly forcing a job change */ void equipWeapon( ItemPtr pItem ); + /*! get player ilvl */ + uint16_t getItemLevel() const; + /*! send player ilvl */ + void sendItemLevel(); /*! get a const pointer to the inventory object */ InventoryPtr getInventory() const; /*! get the current main hand model */ @@ -591,16 +595,20 @@ private: uint8_t m_openingSequence; + uint16_t m_itemLevel; InventoryPtr m_pInventory; + std::map< uint32_t, Event::EventPtr > m_eventMap; std::map< uint32_t, uint8_t > m_playerIdToSpawnIdMap; // maps player to spawn id std::queue< uint8_t > m_freeSpawnIdQueue; // queue with spawn ids free to be assigned std::queue< uint8_t > m_freeHateSlotQueue; // queue with "hate slots" free to be assigned std::map< uint32_t, uint8_t > m_actorIdTohateSlotMap; + std::map< uint32_t, uint8_t > m_questIdToQuestIdx; // quest mapping, quest id to quest container index std::map< uint8_t, uint32_t > m_questIdxToQuestId; // quest mapping, quest container index to questId boost::shared_ptr< Common::QuestActive > m_activeQuests[30]; int16_t m_questTracking[5]; + uint8_t m_stateFlags[7]; uint8_t m_gmRank; uint16_t zoneId; diff --git a/src/servers/Server_Zone/Actor/PlayerInventory.cpp b/src/servers/Server_Zone/Actor/PlayerInventory.cpp index acc6632c..3b516c19 100644 --- a/src/servers/Server_Zone/Actor/PlayerInventory.cpp +++ b/src/servers/Server_Zone/Actor/PlayerInventory.cpp @@ -1,17 +1,21 @@ #include +#include +#include +#include #include "Player.h" #include "src/servers/Server_Zone/Zone/ZoneMgr.h" #include "src/servers/Server_Zone/Zone/Zone.h" -#include - +#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" #include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" #include "src/servers/Server_Zone/Inventory/Inventory.h" #include "src/servers/Server_Zone/Inventory/Item.h" +extern Core::Logger g_log; + using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; @@ -21,6 +25,11 @@ Core::InventoryPtr Core::Entity::Player::getInventory() const return m_pInventory; } +void Core::Entity::Player::sendItemLevel() +{ + queuePacket( ActorControlPacket142( getId(), SetItemLevel, getItemLevel(), 0 ) ); +} + // TODO: This has to be redone and simplified void Core::Entity::Player::equipWeapon( Core::ItemPtr pItem ) { @@ -80,7 +89,7 @@ void Core::Entity::Player::equipWeapon( Core::ItemPtr pItem ) void Core::Entity::Player::equipItem( Inventory::EquipSlot equipSlotId, Core::ItemPtr pItem, bool sendModel ) { - // Console->outDebOnly("Equipping into slot %i", equipSlotID); + //g_log.debug( "Equipping into slot " + std::to_string( equipSlotId ) ); uint64_t model = pItem->getModelId1(); uint64_t model2 = pItem->getModelId2(); @@ -111,12 +120,18 @@ void Core::Entity::Player::equipItem( Inventory::EquipSlot equipSlotId, Core::It if( sendModel ) this->sendModel(); + + m_itemLevel = getInventory()->calculateEquippedGearItemLevel(); + sendItemLevel(); } void Core::Entity::Player::unequipItem( Inventory::EquipSlot equipSlotId, ItemPtr pItem ) { m_modelEquip[static_cast< uint8_t >( equipSlotId )] = 0; sendModel(); + + m_itemLevel = getInventory()->calculateEquippedGearItemLevel(); + sendItemLevel(); } uint32_t Core::Entity::Player::getCurrency( uint8_t type ) const diff --git a/src/servers/Server_Zone/Inventory/Inventory.cpp b/src/servers/Server_Zone/Inventory/Inventory.cpp index f7d908ed..ff97f6ae 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.cpp +++ b/src/servers/Server_Zone/Inventory/Inventory.cpp @@ -13,6 +13,7 @@ #include "src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h" #include +#include #include "src/servers/Server_Zone/Forwards.h" #include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" @@ -828,6 +829,30 @@ void Core::Inventory::send() } +uint16_t Core::Inventory::calculateEquippedGearItemLevel() +{ + uint32_t iLvlResult = 0; + + for ( uint16_t i = 0; i < sizeof( m_inventoryMap[GearSet0] ); i++ ) + { + auto currItem = m_inventoryMap[GearSet0]->getItem( i ); + + if ( currItem ) + { + g_log.debug( std::to_string( currItem->getId() ) + " ilvl: " + std::to_string( currItem->getItemLevel() ) ); + iLvlResult += currItem->getItemLevel(); + + // If weapon isn't one-handed + if ( currItem->getCategory() != ItemCategory::CnjWep || + currItem->getCategory() != ItemCategory::ThmWep ) + iLvlResult += currItem->getItemLevel(); + } + } + + return boost::algorithm::clamp( iLvlResult / 12, 0, 9999 ); +} + + uint8_t Core::Inventory::getFreeSlotsInBags() { uint8_t slots = 0; diff --git a/src/servers/Server_Zone/Inventory/Inventory.h b/src/servers/Server_Zone/Inventory/Inventory.h index ffceb393..c0ceb727 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.h +++ b/src/servers/Server_Zone/Inventory/Inventory.h @@ -153,6 +153,8 @@ public: bool updateContainer( uint16_t containerId, uint8_t slotId, ItemPtr pItem ); + /*! calculate and return player ilvl based off equipped gear */ + uint16_t calculateEquippedGearItemLevel(); /*! return the current amount of currency of type */ uint32_t getCurrency( CurrencyType type ); /*! add amount to the current of type */ diff --git a/src/servers/Server_Zone/Inventory/Item.cpp b/src/servers/Server_Zone/Inventory/Item.cpp index 7de51628..b95d25e9 100644 --- a/src/servers/Server_Zone/Inventory/Item.cpp +++ b/src/servers/Server_Zone/Inventory/Item.cpp @@ -30,6 +30,7 @@ Core::Item::Item( uint64_t uId, uint32_t catalogId, uint64_t model1, uint64_t mo m_magicalDmg = itemInfo->magical_damage; m_weaponDmg = ( m_physicalDmg != 0 ) ? m_physicalDmg : m_magicalDmg; m_autoAttackDmg = static_cast< float >( m_weaponDmg * m_delayMs ) / 3000; + m_itemLevel = itemInfo->item_level; } Core::Item::~Item() @@ -57,6 +58,11 @@ uint16_t Core::Item::getMagicalDmg() const return m_magicalDmg; } +uint16_t Core::Item::getItemLevel() const +{ + return m_itemLevel; +} + uint16_t Core::Item::getWeaponDmg() const { return m_weaponDmg; diff --git a/src/servers/Server_Zone/Inventory/Item.h b/src/servers/Server_Zone/Inventory/Item.h index 8c0c7310..a72cdfe9 100644 --- a/src/servers/Server_Zone/Inventory/Item.h +++ b/src/servers/Server_Zone/Inventory/Item.h @@ -50,6 +50,8 @@ public: float getAutoAttackDmg() const; + uint16_t getItemLevel() const; + protected: uint32_t m_id; @@ -71,6 +73,7 @@ protected: uint16_t m_magicalDmg; uint16_t m_weaponDmg; float m_autoAttackDmg; + uint16_t m_itemLevel; }; diff --git a/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp b/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp index 113e5bab..c605dfbb 100644 --- a/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp +++ b/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp @@ -230,10 +230,15 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in } break; } + case 0x1B5: // Dye item + { + break; + } default: { g_log.debug( "[" + std::to_string( m_pSession->getId() ) + "] Unhandled action: " + boost::str( boost::format( "%|04X|" ) % (uint32_t) ( commandId & 0xFFFF ) ) ); + break; } } } From ed23ff9a608adc2167bee506e7b0884f77305649 Mon Sep 17 00:00:00 2001 From: Maru Date: Thu, 16 Nov 2017 20:44:37 -0200 Subject: [PATCH 02/25] Fix and optimize itemlevel; IsWeapon Item Property; --- .../Server_Zone/Actor/PlayerInventory.cpp | 11 ++++++----- .../Server_Zone/Inventory/Inventory.cpp | 18 ++++++++++++------ src/servers/Server_Zone/Inventory/Item.cpp | 5 +++++ src/servers/Server_Zone/Inventory/Item.h | 2 ++ 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/servers/Server_Zone/Actor/PlayerInventory.cpp b/src/servers/Server_Zone/Actor/PlayerInventory.cpp index 3b516c19..07f1172a 100644 --- a/src/servers/Server_Zone/Actor/PlayerInventory.cpp +++ b/src/servers/Server_Zone/Actor/PlayerInventory.cpp @@ -86,7 +86,7 @@ void Core::Entity::Player::equipWeapon( Core::ItemPtr pItem ) } // equip an item -void Core::Entity::Player::equipItem( Inventory::EquipSlot equipSlotId, Core::ItemPtr pItem, bool sendModel ) +void Core::Entity::Player::equipItem( Inventory::EquipSlot equipSlotId, Core::ItemPtr pItem, bool sendUpdate ) { //g_log.debug( "Equipping into slot " + std::to_string( equipSlotId ) ); @@ -118,11 +118,12 @@ void Core::Entity::Player::equipItem( Inventory::EquipSlot equipSlotId, Core::It } - if( sendModel ) + if( sendUpdate ) + { this->sendModel(); - - m_itemLevel = getInventory()->calculateEquippedGearItemLevel(); - sendItemLevel(); + m_itemLevel = getInventory()->calculateEquippedGearItemLevel(); + sendItemLevel(); + } } void Core::Entity::Player::unequipItem( Inventory::EquipSlot equipSlotId, ItemPtr pItem ) diff --git a/src/servers/Server_Zone/Inventory/Inventory.cpp b/src/servers/Server_Zone/Inventory/Inventory.cpp index ff97f6ae..45af7d61 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.cpp +++ b/src/servers/Server_Zone/Inventory/Inventory.cpp @@ -833,20 +833,26 @@ uint16_t Core::Inventory::calculateEquippedGearItemLevel() { uint32_t iLvlResult = 0; - for ( uint16_t i = 0; i < sizeof( m_inventoryMap[GearSet0] ); i++ ) + auto gearSetMap = m_inventoryMap[GearSet0]->getItemMap(); + + auto it = gearSetMap.begin(); + + while ( it != gearSetMap.end() ) { - auto currItem = m_inventoryMap[GearSet0]->getItem( i ); + auto currItem = it->second; if ( currItem ) { - g_log.debug( std::to_string( currItem->getId() ) + " ilvl: " + std::to_string( currItem->getItemLevel() ) ); iLvlResult += currItem->getItemLevel(); - // If weapon isn't one-handed - if ( currItem->getCategory() != ItemCategory::CnjWep || - currItem->getCategory() != ItemCategory::ThmWep ) + // If item is weapon and isn't one-handed + if ( currItem->isWeapon() && + ( currItem->getCategory() != ItemCategory::CnjWep || + currItem->getCategory() != ItemCategory::ThmWep ) ) iLvlResult += currItem->getItemLevel(); } + + it++; } return boost::algorithm::clamp( iLvlResult / 12, 0, 9999 ); diff --git a/src/servers/Server_Zone/Inventory/Item.cpp b/src/servers/Server_Zone/Inventory/Item.cpp index b95d25e9..e66b414d 100644 --- a/src/servers/Server_Zone/Inventory/Item.cpp +++ b/src/servers/Server_Zone/Inventory/Item.cpp @@ -68,6 +68,11 @@ uint16_t Core::Item::getWeaponDmg() const return m_weaponDmg; } +bool Core::Item::isWeapon() const +{ + return (m_weaponDmg != 0); +} + uint32_t Core::Item::getId() const { return m_id; diff --git a/src/servers/Server_Zone/Inventory/Item.h b/src/servers/Server_Zone/Inventory/Item.h index a72cdfe9..ff33e1fa 100644 --- a/src/servers/Server_Zone/Inventory/Item.h +++ b/src/servers/Server_Zone/Inventory/Item.h @@ -48,6 +48,8 @@ public: uint16_t getWeaponDmg() const; + bool isWeapon() const; + float getAutoAttackDmg() const; uint16_t getItemLevel() const; From 1ceb4a95a5e49b3446cbf7a65fea7c85c893a2cd Mon Sep 17 00:00:00 2001 From: Maru Date: Fri, 17 Nov 2017 22:29:29 -0200 Subject: [PATCH 03/25] OneHandedWeapon helper; --- .../Server_Zone/Inventory/Inventory.cpp | 34 +++++++++++++++++-- src/servers/Server_Zone/Inventory/Inventory.h | 2 ++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/servers/Server_Zone/Inventory/Inventory.cpp b/src/servers/Server_Zone/Inventory/Inventory.cpp index 45af7d61..b1bb8e87 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.cpp +++ b/src/servers/Server_Zone/Inventory/Inventory.cpp @@ -439,6 +439,30 @@ bool Core::Inventory::removeCrystal( CrystalType type, uint32_t amount ) return true; } +bool Core::Inventory::isOneHandedWeapon( ItemCategory weaponCategory ) +{ + switch ( weaponCategory ) + { + case ItemCategory::AlcPri: + case ItemCategory::ArmPri: + case ItemCategory::BotPri: + case ItemCategory::ClnPri: + case ItemCategory::CnjWep: + case ItemCategory::CrpPri: + case ItemCategory::FshPri: + case ItemCategory::GlaWep: + case ItemCategory::GldPri: // Goldsmith + case ItemCategory::LtwPri: + case ItemCategory::MinPri: + case ItemCategory::ThmWep: + case ItemCategory::WvrPri: + case ItemCategory::BlmPri: // Blacksmith + return true; + default: + return false; + } +} + bool Core::Inventory::isObtainable( uint32_t catalogId, uint8_t quantity ) { @@ -846,10 +870,14 @@ uint16_t Core::Inventory::calculateEquippedGearItemLevel() iLvlResult += currItem->getItemLevel(); // If item is weapon and isn't one-handed - if ( currItem->isWeapon() && - ( currItem->getCategory() != ItemCategory::CnjWep || - currItem->getCategory() != ItemCategory::ThmWep ) ) + if ( currItem->isWeapon() && !isOneHandedWeapon( currItem->getCategory() ) ) + { iLvlResult += currItem->getItemLevel(); + } + else + { + g_log.debug( "Is one handed" ); + } } it++; diff --git a/src/servers/Server_Zone/Inventory/Inventory.h b/src/servers/Server_Zone/Inventory/Inventory.h index c0ceb727..010d4acb 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.h +++ b/src/servers/Server_Zone/Inventory/Inventory.h @@ -153,6 +153,8 @@ public: bool updateContainer( uint16_t containerId, uint8_t slotId, ItemPtr pItem ); + /*! heck if weapon category qualifies the weapon as onehanded */ + bool isOneHandedWeapon( Common::ItemCategory weaponCategory ); /*! calculate and return player ilvl based off equipped gear */ uint16_t calculateEquippedGearItemLevel(); /*! return the current amount of currency of type */ From 7a2f83afb2c6e608d7ec8afcbdabd9e10b38e69f Mon Sep 17 00:00:00 2001 From: Maru Date: Fri, 24 Nov 2017 18:13:42 -0200 Subject: [PATCH 04/25] Use generated ItemUICategory; Check if field for item is valid; --- .../Server_Zone/Inventory/Inventory.cpp | 39 ++++++++++--------- src/servers/Server_Zone/Inventory/Inventory.h | 2 +- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/servers/Server_Zone/Inventory/Inventory.cpp b/src/servers/Server_Zone/Inventory/Inventory.cpp index c0f482cb..a4274e97 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.cpp +++ b/src/servers/Server_Zone/Inventory/Inventory.cpp @@ -439,27 +439,27 @@ bool Core::Inventory::removeCrystal( CrystalType type, uint32_t amount ) return true; } -bool Core::Inventory::isOneHandedWeapon( ItemCategory weaponCategory ) +bool Core::Inventory::isOneHandedWeapon( ItemUICategory weaponCategory ) { switch ( weaponCategory ) { - case ItemCategory::AlcPri: - case ItemCategory::ArmPri: - case ItemCategory::BotPri: - case ItemCategory::ClnPri: - case ItemCategory::CnjWep: - case ItemCategory::CrpPri: - case ItemCategory::FshPri: - case ItemCategory::GlaWep: - case ItemCategory::GldPri: // Goldsmith - case ItemCategory::LtwPri: - case ItemCategory::MinPri: - case ItemCategory::ThmWep: - case ItemCategory::WvrPri: - case ItemCategory::BlmPri: // Blacksmith - return true; - default: - return false; + case ItemUICategory::AlchemistsPrimaryTool: + case ItemUICategory::ArmorersPrimaryTool: + case ItemUICategory::BotanistsPrimaryTool: + case ItemUICategory::CulinariansPrimaryTool: + case ItemUICategory::OnehandedConjurersArm: + case ItemUICategory::CarpentersPrimaryTool: + case ItemUICategory::FishersPrimaryTool: + case ItemUICategory::GladiatorsArm: + case ItemUICategory::GoldsmithsPrimaryTool: + case ItemUICategory::LeatherworkersPrimaryTool: + case ItemUICategory::MinersPrimaryTool: + case ItemUICategory::OnehandedThaumaturgesArm: + case ItemUICategory::WeaversPrimaryTool: + case ItemUICategory::BlacksmithsPrimaryTool: + return true; + default: + return false; } } @@ -475,7 +475,8 @@ int16_t Core::Inventory::addItem( uint16_t inventoryId, int8_t slotId, uint32_t auto itemInfo = g_exdData.getItemInfo( catalogId ); - if( !itemInfo ) + // if item data doesn't exist or it's a blank field + if( !itemInfo || itemInfo->item_level == 0 ) { return -1; } diff --git a/src/servers/Server_Zone/Inventory/Inventory.h b/src/servers/Server_Zone/Inventory/Inventory.h index df9f5725..bd2051f0 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.h +++ b/src/servers/Server_Zone/Inventory/Inventory.h @@ -154,7 +154,7 @@ public: bool updateContainer( uint16_t containerId, uint8_t slotId, ItemPtr pItem ); /*! heck if weapon category qualifies the weapon as onehanded */ - bool isOneHandedWeapon( Common::ItemCategory weaponCategory ); + bool isOneHandedWeapon( Common::ItemUICategory weaponCategory ); /*! calculate and return player ilvl based off equipped gear */ uint16_t calculateEquippedGearItemLevel(); /*! return the current amount of currency of type */ From aa2cfb568517e2040eea5a5bea28b2425a65645d Mon Sep 17 00:00:00 2001 From: Mordred Date: Sun, 3 Dec 2017 18:11:56 +0100 Subject: [PATCH 05/25] Moved rotation funciton, not inlined anymore --- src/servers/Server_Zone/Actor/Actor.cpp | 12 +++++++++++- src/servers/Server_Zone/Actor/Actor.h | 10 ++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/servers/Server_Zone/Actor/Actor.cpp b/src/servers/Server_Zone/Actor/Actor.cpp index a137618c..02d9543d 100644 --- a/src/servers/Server_Zone/Actor/Actor.cpp +++ b/src/servers/Server_Zone/Actor/Actor.cpp @@ -827,4 +827,14 @@ void Core::Entity::Actor::removeSingleStatusEffectFromId( uint32_t id ) Core::StatusEffect::StatusEffectContainerPtr Core::Entity::Actor::getStatusEffectContainer() const { return m_pStatusEffectContainer; -} \ No newline at end of file +} + +float Core::Entity::Actor::getRotation() const +{ + return m_rot; +} + +void Core::Entity::Actor::setRotation( float rot ) +{ + m_rot = rot; +} diff --git a/src/servers/Server_Zone/Actor/Actor.h b/src/servers/Server_Zone/Actor/Actor.h index 83baaf39..6e14f8c0 100644 --- a/src/servers/Server_Zone/Actor/Actor.h +++ b/src/servers/Server_Zone/Actor/Actor.h @@ -177,15 +177,9 @@ public: void setPosition( const Common::FFXIVARR_POSITION3& pos ); void setPosition( float x, float y, float z ); - void setRotation( float rot ) - { - m_rot = rot; - } + void setRotation( float rot ); - float getRotation() const - { - return m_rot; - } + float getRotation() const; Common::FFXIVARR_POSITION3& getPos(); From d7971237427305ed1b652ae20a180ac1f78cc703 Mon Sep 17 00:00:00 2001 From: Mordred Date: Sun, 3 Dec 2017 23:43:45 +0100 Subject: [PATCH 06/25] Moved new orchestrion field to update.sql --- sql/charainfo.sql | 3 +-- sql/update.sql | 5 ++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/sql/charainfo.sql b/sql/charainfo.sql index d6570722..4a03dd4a 100644 --- a/sql/charainfo.sql +++ b/sql/charainfo.sql @@ -64,7 +64,6 @@ CREATE TABLE `charainfo` ( `HowTo` binary(33) DEFAULT NULL, `Minions` binary(33) DEFAULT NULL, `Mounts` binary(13) DEFAULT NULL, - `Orchestrion` binary(38) DEFAULT NULL, `EquippedMannequin` int(5) DEFAULT '0', `ConfigFlags` smallint(5) NOT NULL DEFAULT '0', `QuestCompleteFlags` binary(200) DEFAULT NULL, @@ -76,7 +75,7 @@ CREATE TABLE `charainfo` ( `GMRank` int(3) DEFAULT '0', `Unlocks` binary(64) DEFAULT NULL, `CFPenaltyUntil` int(11) DEFAULT NULL, - `UPDATE_DATE` datetime DEFAULT NULL, + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`CharacterId`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/sql/update.sql b/sql/update.sql index 4cd029d7..a2a9c38e 100644 --- a/sql/update.sql +++ b/sql/update.sql @@ -38,4 +38,7 @@ ALTER TABLE infolinkshell MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; ALTER TABLE uniqueiddata -MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; \ No newline at end of file +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE charainfo +ADD `Orchestrion` binary(38) DEFAULT NULL AFTER `Mounts`; From 65e90edb1b454543650f32ad1229d67e7338b2fc Mon Sep 17 00:00:00 2001 From: Mordred Admin Date: Mon, 4 Dec 2017 11:00:08 +0100 Subject: [PATCH 07/25] Cleanup and simplification of rest server --- src/servers/Server_REST/main.cpp | 1130 ++++++++++++++++-------------- 1 file changed, 590 insertions(+), 540 deletions(-) diff --git a/src/servers/Server_REST/main.cpp b/src/servers/Server_REST/main.cpp index 8108836d..88500536 100644 --- a/src/servers/Server_REST/main.cpp +++ b/src/servers/Server_REST/main.cpp @@ -169,6 +169,575 @@ bool loadSettings( int32_t argc, char* argv[] ) return true; } +using ContentType = enum +{ + NONE, + TEXT_PLAIN, + JSON, + XML, +}; + +std::string buildHttpResponse( uint16_t rCode, const std::string& content = "", ContentType type = NONE ) +{ + std::string result{""}; + std::string httpHead{"HTTP/1.1 "}; + std::string contentHeader{"Content-Length: "}; + std::string contentTypeHeader{"Content-Type: "}; + + switch( type ) + { + case NONE: + contentTypeHeader = ""; + break; + case TEXT_PLAIN: + contentTypeHeader += "text/plain\r\n"; + break; + case JSON: + contentTypeHeader += "application/json\r\n"; + break; + case XML: + contentTypeHeader += "text/xml\r\n"; + break; + + } + + switch( rCode ) + { + case 200: + result += httpHead + "200 OK\r\n"; + if( content.size() > 0 ) + { + result += contentTypeHeader; + result += contentHeader + std::to_string( content.size() ) + "\r\n"; + } + break; + case 400: + case 401: + case 402: + case 403: + result += httpHead + std::to_string( rCode ) + "\r\n"; + if( content.size() > 0 ) + { + result += contentTypeHeader; + result += contentHeader + std::to_string( content.size() ) + "\r\n"; + } + break; + case 500: + result += httpHead + "500 Internal Server Error\r\n"; + break; + default: + result += httpHead + std::to_string( rCode ) + "\r\n"; + + + + + } + result += "\r\n"; + if( content.size() > 0 ) + result += content; + + return result; +} + +void getZoneName( shared_ptr response, shared_ptr request ) +{ + string number = request->path_match[1]; + auto it = g_exdData.m_zoneInfoMap.find( atoi( number.c_str() ) ); + std::string responseStr = "Not found!"; + if( it != g_exdData.m_zoneInfoMap.end() ) + responseStr = it->second.zone_name + ", " + it->second.zone_str; + *response << buildHttpResponse( 200, responseStr ); +} + +void createAccount( shared_ptr response, shared_ptr request ) +{ + print_request_info( request ); + try + { + + using namespace boost::property_tree; + ptree pt; + read_json( request->content, pt ); + + std::string pass = pt.get( "pass" ); + std::string user = pt.get( "username" ); + // reloadConfig(); + + std::string sId; + if( g_sapphireAPI.createAccount( user, pass, sId ) ) + { + std::string json_string = "{\"sId\":\"" + sId + + "\", \"lobbyHost\":\"" + m_pConfig->getValue< std::string >( "Settings.General.LobbyHost" ) + + "\", \"frontierHost\":\"" + m_pConfig->getValue< std::string >( "Settings.General.FrontierHost" ) + "\"}"; + *response << buildHttpResponse( 200, json_string, JSON ); + } + else + *response << buildHttpResponse( 400 ); + } + catch( exception& e ) + { + *response << buildHttpResponse( 500 ); + g_log.error( e.what() ); + } +} + +void login( shared_ptr response, shared_ptr request ) +{ + print_request_info( request ); + try + { + using namespace boost::property_tree; + ptree pt; + read_json( request->content, pt ); + + std::string pass = pt.get( "pass" ); + std::string user = pt.get( "username" ); + + std::string sId; + + // reloadConfig(); + if( g_sapphireAPI.login( user, pass, sId ) ) + { + std::string json_string = "{\"sId\":\"" + sId + + "\", \"lobbyHost\":\"" + m_pConfig->getValue< std::string >("Settings.General.LobbyHost") + + "\", \"frontierHost\":\"" + m_pConfig->getValue< std::string >( "Settings.General.FrontierHost" ) + "\"}"; + *response << buildHttpResponse( 200, json_string, JSON ); + } + else + *response << buildHttpResponse( 400 ); + + } + catch( exception& e ) + { + *response << buildHttpResponse( 500 ); + g_log.error( e.what() ); + } + +} + +void deleteCharacter( shared_ptr response, shared_ptr request ) +{ + print_request_info( request ); + try + { + using namespace boost::property_tree; + ptree pt; + read_json( request->content, pt ); + std::string sId = pt.get( "sId" ); + std::string secret = pt.get( "secret" ); + std::string name = pt.get( "name" ); + + // reloadConfig(); + + int32_t accountId = g_sapphireAPI.checkSession( sId ); + + if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) + { + std::string json_string = "{\"result\":\"invalid_secret\"}"; + *response << buildHttpResponse( 403, json_string, JSON ); + } + else + { + g_sapphireAPI.deleteCharacter( name, accountId ); + std::string json_string = "{\"result\":\"success\"}"; + *response << buildHttpResponse( 200, json_string, JSON ); + } + } + catch( exception& e ) + { + *response << buildHttpResponse( 500 ); + g_log.error( e.what() ); + } + +} + +void createCharacter( shared_ptr response, shared_ptr request ) +{ + print_request_info( request ); + try + { + using namespace boost::property_tree; + ptree pt; + read_json( request->content, pt ); + std::string sId = pt.get( "sId" ); + std::string secret = pt.get( "secret" ); + std::string name = pt.get( "name" ); + std::string infoJson = pt.get( "infoJson" ); + + std::string finalJson = Core::Util::base64_decode( infoJson ); + + // reloadConfig(); + + int32_t result = g_sapphireAPI.checkSession( sId ); + + if( result != -1 ) + { + if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) + { + std::string json_string = "{\"result\":\"invalid_secret\"}"; + *response << buildHttpResponse( 403, json_string, JSON ); + } + else + { + int32_t charId = g_sapphireAPI.createCharacter( result, name, finalJson, m_pConfig->getValue< uint8_t >( "Settings.Parameters.DefaultGMRank", 255 ) ); + + std::string json_string = "{\"result\":\"" + std::to_string( charId ) + "\"}"; + *response << buildHttpResponse( 200, json_string, JSON ); + } + } + else + { + std::string json_string = "{\"result\":\"invalid\"}"; + *response << buildHttpResponse( 200, json_string, JSON ); + } + } + catch( exception& e ) + { + *response << buildHttpResponse( 500 ); + g_log.error( e.what() ); + } + +} + +void insertSession( shared_ptr response, shared_ptr request ) +{ + print_request_info( request ); + + try + { + using namespace boost::property_tree; + ptree pt; + read_json( request->content, pt ); + std::string sId = pt.get( "sId" ); + uint32_t accountId = pt.get( "accountId" ); + std::string secret = pt.get( "secret" ); + // reloadConfig(); + if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) + { + std::string json_string = "{\"result\":\"invalid_secret\"}"; + *response << buildHttpResponse( 403, json_string, JSON ); + } + else + { + g_sapphireAPI.insertSession( accountId, sId ); + std::string json_string = "{\"result\":\"success\"}"; + *response << buildHttpResponse( 200, json_string, JSON ); + } + } + catch( exception& e ) + { + *response << buildHttpResponse( 500 ); + g_log.error( e.what() ); + } +} + +void checkNameTaken( shared_ptr response, shared_ptr request ) +{ + print_request_info( request ); + + try + { + using namespace boost::property_tree; + ptree pt; + read_json( request->content, pt ); + + std::string name = pt.get( "name" ); + std::string secret = pt.get( "secret" ); + + // reloadConfig(); + + if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) + { + std::string json_string = "{\"result\":\"invalid_secret\"}"; + *response << buildHttpResponse( 403, json_string, JSON ); + } + else + { + std::string json_string; + if( !g_sapphireAPI.checkNameTaken( name ) ) + json_string = "{\"result\":\"false\"}"; + else + json_string = "{\"result\":\"true\"}"; + *response << buildHttpResponse( 200, json_string, JSON ); + } + } + catch( exception& e ) + { + *response << buildHttpResponse( 500 ); + g_log.error( e.what() ); + } +} + +void checkSession( shared_ptr response, shared_ptr request ) +{ + print_request_info( request ); + try + { + using namespace boost::property_tree; + ptree pt; + read_json( request->content, pt ); + std::string sId = pt.get( "sId" ); + std::string secret = pt.get( "secret" ); + int32_t result = g_sapphireAPI.checkSession( sId ); + + // reloadConfig(); + + if( result != -1 ) + { + if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) + { + std::string json_string = "{\"result\":\"invalid_secret\"}"; + *response << buildHttpResponse( 403, json_string, JSON ); + } + else + { + std::string json_string = "{\"result\":\"" + std::to_string( result ) + "\"}"; + *response << buildHttpResponse( 200, json_string, JSON ); + } + } + else + { + std::string json_string = "{\"result\":\"invalid\"}"; + *response << buildHttpResponse( 200, json_string, JSON ); + } + } + catch( exception& e ) + { + *response << buildHttpResponse( 500 ); + g_log.error( e.what() ); + } + +} + +void getNextCharId( shared_ptr response, shared_ptr request ) +{ + print_request_info( request ); + try + { + using namespace boost::property_tree; + ptree pt; + read_json( request->content, pt ); + std::string secret = pt.get( "secret" ); + + // reloadConfig(); + + if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) + { + std::string json_string = "{\"result\":\"invalid_secret\"}"; + *response << buildHttpResponse( 403, json_string, JSON ); + } + else + { + std::string json_string = "{\"result\":\"" + std::to_string( g_sapphireAPI.getNextCharId() ) + "\"}"; + *response << buildHttpResponse( 200, json_string, JSON ); + } + } + catch( exception& e ) + { + *response << buildHttpResponse( 500 ); + g_log.error( e.what() ); + } + +} + +void getNextContentId( shared_ptr response, shared_ptr request ) +{ + print_request_info( request ); + + try + { + using namespace boost::property_tree; + ptree pt; + read_json( request->content, pt ); + std::string secret = pt.get( "secret" ); + + // reloadConfig(); + + if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) + { + std::string json_string = "{\"result\":\"invalid_secret\"}"; + *response << buildHttpResponse( 403, json_string, JSON ); + } + else + { + std::string json_string = "{\"result\":\"" + std::to_string( g_sapphireAPI.getNextContentId() ) + "\"}"; + *response << buildHttpResponse( 200, json_string, JSON ); + } + } + catch( exception& e ) + { + *response << buildHttpResponse( 500 ); + g_log.error( e.what() ); + } + +} + +void getCharacterList( shared_ptr response, shared_ptr request ) +{ + print_request_info( request ); + try + { + using namespace boost::property_tree; + ptree pt; + read_json( request->content, pt ); + std::string sId = pt.get( "sId" ); + std::string secret = pt.get( "secret" ); + + // reloadConfig(); + + int32_t result = g_sapphireAPI.checkSession( sId ); + + if( result != -1 ) + { + if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) + { + std::string json_string = "{\"result\":\"invalid_secret\"}"; + *response << buildHttpResponse( 403, json_string, JSON ); + } + else + { + auto charList = g_sapphireAPI.getCharList( result ); + using boost::property_tree::ptree; + ptree pt; + ptree char_tree; + + for( auto entry : charList ) + { + ptree tree_entry; + tree_entry.put( "name", std::string( entry.getName() ) ); + tree_entry.put( "charId", std::to_string( entry.getId() ) ); + tree_entry.put( "contentId", std::to_string( entry.getContentId() ) ); + tree_entry.put( "infoJson", std::string( entry.getInfoJson() ) ); + char_tree.push_back( std::make_pair( "", tree_entry ) ); + } + + pt.add_child( "charArray", char_tree ); + pt.put( "result", "success" ); + std::ostringstream oss; + write_json( oss, pt ); + std::string responseStr = oss.str(); + *response << buildHttpResponse( 200, responseStr, JSON ); + } + } + else + { + std::string json_string = "{\"result\":\"invalid\"}"; + *response << buildHttpResponse( 200, json_string, JSON ); + } + } + catch( exception& e ) + { + *response << buildHttpResponse( 500 ); + g_log.error( e.what() ); + } +} + +void get_init( shared_ptr response, shared_ptr request ) +{ + print_request_info( request ); + try + { + auto web_root_path = boost::filesystem::canonical( "web" ); + auto path = boost::filesystem::canonical( web_root_path / "news.xml" ); + //Check if path is within web_root_path + if( distance( web_root_path.begin(), web_root_path.end() ) > distance( path.begin(), path.end() ) || + !std::equal( web_root_path.begin(), web_root_path.end(), path.begin() ) ) + throw invalid_argument( "path must be within root path" ); + if( !( boost::filesystem::exists( path ) && boost::filesystem::is_regular_file( path ) ) ) + throw invalid_argument( "file does not exist" ); + + auto ifs = make_shared(); + ifs->open( path.string(), ifstream::in | ios::binary | ios::ate ); + + if( *ifs ) + { + auto length = ifs->tellg(); + ifs->seekg( 0, ios::beg ); + + *response << "HTTP/1.1 200 OK\r\n" << "Content-Length: " << length << "\r\n\r\n"; + default_resource_send( server, response, ifs ); + } + else + throw invalid_argument( "could not read file" ); + } + catch( exception& e ) + { + *response << buildHttpResponse( 500 ); + g_log.error( e.what() ); + } +} + +void get_headline_all( shared_ptr response, shared_ptr request ) +{ + print_request_info( request ); + try + { + auto web_root_path = boost::filesystem::canonical( "web" ); + auto path = boost::filesystem::canonical( web_root_path / "headlines.xml" ); + //Check if path is within web_root_path + if( distance( web_root_path.begin(), web_root_path.end() ) > distance( path.begin(), path.end() ) || + !std::equal( web_root_path.begin(), web_root_path.end(), path.begin() ) ) + throw invalid_argument( "path must be within root path" ); + if( !( boost::filesystem::exists( path ) && boost::filesystem::is_regular_file( path ) ) ) + throw invalid_argument( "file does not exist" ); + + auto ifs = make_shared(); + ifs->open( path.string(), ifstream::in | ios::binary | ios::ate ); + + if( *ifs ) + { + auto length = ifs->tellg(); + ifs->seekg( 0, ios::beg ); + *response << "HTTP/1.1 200 OK\r\n" << "Content-Length: " << length << "\r\n\r\n"; + default_resource_send( server, response, ifs ); + } + else + throw invalid_argument( "could not read file" ); + } + catch( exception& e ) + { + *response << buildHttpResponse( 500 ); + g_log.error( e.what() ); + } +} + +void defaultGet( shared_ptr response, shared_ptr request ) +{ + print_request_info( request ); + try + { + auto web_root_path = boost::filesystem::canonical( "web" ); + auto path = boost::filesystem::canonical( web_root_path / request->path ); + //Check if path is within web_root_path + if( distance( web_root_path.begin(), web_root_path.end() ) > distance( path.begin(), path.end() ) || + !std::equal( web_root_path.begin(), web_root_path.end(), path.begin() ) ) + throw invalid_argument( "path must be within root path" ); + if( boost::filesystem::is_directory( path ) ) + path /= "index.html"; + if( !( boost::filesystem::exists( path ) && boost::filesystem::is_regular_file( path ) ) ) + throw invalid_argument( "file does not exist" ); + + auto ifs = make_shared(); + ifs->open( path.string(), ifstream::in | ios::binary | ios::ate ); + + if( *ifs ) + { + auto length = ifs->tellg(); + ifs->seekg( 0, ios::beg ); + + *response << "HTTP/1.1 200 OK\r\n" << "Content-Length: " << length << "\r\n\r\n"; + default_resource_send( server, response, ifs ); + } + else + throw invalid_argument( "could not read file" ); + } + catch( const exception & ) + { + string content = "Path not found: " + request->path; + *response << buildHttpResponse( 400, content ); + } +} + int main( int argc, char* argv[] ) { g_log.setLogPath( "log\\SapphireAPI" ); @@ -180,550 +749,33 @@ int main( int argc, char* argv[] ) g_log.info( "Compiled: " __DATE__ " " __TIME__ ); g_log.info( "===========================================================" ); - if (!loadSettings(argc, argv)) - { + if( !loadSettings( argc, argv ) ) throw std::exception(); - } g_exdData.loadZoneInfo(); g_exdData.loadClassJobInfo(); server.config.port = stoi( m_pConfig->getValue< std::string >( "Settings.General.HttpPort", "80" ) ); - g_log.info( "Starting REST server at port " + m_pConfig->getValue< std::string >( "Settings.General.HttpPort", "80" ) + "..." ); - - server.resource["^/ZoneName/([0-9]+)$"]["GET"] = [&]( shared_ptr response, shared_ptr request ) { - string number = request->path_match[1]; - auto it = g_exdData.m_zoneInfoMap.find( atoi( number.c_str() ) ); - std::string responseStr = "Not found!"; - if( it != g_exdData.m_zoneInfoMap.end() ) - { - responseStr = it->second.zone_name + ", " + it->second.zone_str; - } - *response << "HTTP/1.1 200 OK\r\nContent-Length: " << responseStr.length() << "\r\n\r\n" << responseStr; - }; - - - /* Create account */ - server.resource["^/sapphire-api/lobby/createAccount"]["POST"] = [&]( shared_ptr response, shared_ptr request ) { - print_request_info( request ); - - std::string responseStr = "HTTP/1.1 400\r\n\r\n"; - try - { - - using namespace boost::property_tree; - ptree pt; - read_json( request->content, pt ); - - std::string pass = pt.get( "pass" ); - std::string user = pt.get( "username" ); - - // reloadConfig(); - - std::string sId; - if( g_sapphireAPI.createAccount( user, pass, sId ) ) - { - std::string json_string = "{\"sId\":\"" + sId + "\", \"lobbyHost\":\"" + m_pConfig->getValue< std::string >( "Settings.General.LobbyHost" ) + "\", \"frontierHost\":\"" + m_pConfig->getValue< std::string >( "Settings.General.FrontierHost" ) + "\"}"; - *response << "HTTP/1.1 200 OK\r\n " - << "Content-Type: application/json\r\n" - << "Content-Length: " << json_string.length() << "\r\n\r\n" - << json_string; - } - else - *response << "HTTP/1.1 400\r\n\r\n"; - } - catch( exception& e ) - { - *response << "HTTP/1.1 500\r\n\r\n"; - g_log.error( e.what() ); - } - *response << "HTTP/1.1 200 OK\r\nContent-Length: " << responseStr.length() << "\r\nContent-Type: text/xml\r\n\r\n" << responseStr; - }; - - - server.resource["^/sapphire-api/lobby/login"]["POST"] = [&]( shared_ptr response, shared_ptr request ) { - print_request_info( request ); - - try - { - using namespace boost::property_tree; - ptree pt; - read_json( request->content, pt ); - - std::string pass = pt.get( "pass" ); - std::string user = pt.get( "username" ); - - std::string sId; - - // reloadConfig(); - - if( g_sapphireAPI.login( user, pass, sId ) ) - { - std::string json_string = "{\"sId\":\"" + sId + "\", \"lobbyHost\":\"" + m_pConfig->getValue< std::string >("Settings.General.LobbyHost") + "\", \"frontierHost\":\"" + m_pConfig->getValue< std::string >( "Settings.General.FrontierHost" ) + "\"}"; - *response << "HTTP/1.1 200\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - else - *response << "HTTP/1.1 400\r\n\r\n"; - - } - catch( exception& e ) - { - *response << "HTTP/1.1 500\r\n\r\n"; - g_log.error( e.what() ); - } - - }; - - server.resource["^/sapphire-api/lobby/deleteCharacter"]["POST"] = [&]( shared_ptr response, shared_ptr request ) { - print_request_info( request ); - - try - { - using namespace boost::property_tree; - ptree pt; - read_json( request->content, pt ); - - std::string sId = pt.get( "sId" ); - std::string secret = pt.get( "secret" ); - std::string name = pt.get( "name" ); - - // reloadConfig(); - - int32_t accountId = g_sapphireAPI.checkSession( sId ); - - if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) { - std::string json_string = "{\"result\":\"invalid_secret\"}"; - *response << "HTTP/1.1 403\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - else - { - g_sapphireAPI.deleteCharacter( name, accountId ); - std::string json_string = "{\"result\":\"success\"}"; - *response << "HTTP/1.1 200\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - } - catch( exception& e ) - { - *response << "HTTP/1.1 500\r\n\r\n"; - g_log.error( e.what() ); - } - - }; - - server.resource["^/sapphire-api/lobby/createCharacter"]["POST"] = [&]( shared_ptr response, shared_ptr request ) { - print_request_info( request ); - - try - { - using namespace boost::property_tree; - ptree pt; - read_json( request->content, pt ); - - std::string sId = pt.get( "sId" ); - std::string secret = pt.get( "secret" ); - std::string name = pt.get( "name" ); - std::string infoJson = pt.get( "infoJson" ); - - std::string finalJson = Core::Util::base64_decode( infoJson ); - - // reloadConfig(); - - int32_t result = g_sapphireAPI.checkSession( sId ); - - if( result != -1 ) - { - if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) { - std::string json_string = "{\"result\":\"invalid_secret\"}"; - *response << "HTTP/1.1 403\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - else - { - int32_t charId = g_sapphireAPI.createCharacter( result, name, finalJson, m_pConfig->getValue< uint8_t >( "Settings.Parameters.DefaultGMRank", 255 ) ); - - std::string json_string = "{\"result\":\"" + std::to_string( charId ) + "\"}"; - *response << "HTTP/1.1 200\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - } - else - { - std::string json_string = "{\"result\":\"invalid\"}"; - *response << "HTTP/1.1 200\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - } - catch( exception& e ) - { - *response << "HTTP/1.1 500\r\n\r\n"; - g_log.error( e.what() ); - } - - }; - - server.resource["^/sapphire-api/lobby/insertSession"]["POST"] = [&]( shared_ptr response, shared_ptr request ) { - print_request_info( request ); - - try - { - using namespace boost::property_tree; - ptree pt; - read_json( request->content, pt ); - - std::string sId = pt.get( "sId" ); - uint32_t accountId = pt.get( "accountId" ); - std::string secret = pt.get( "secret" ); - - // reloadConfig(); - - if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) { - std::string json_string = "{\"result\":\"invalid_secret\"}"; - *response << "HTTP/1.1 403\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - else - { - g_sapphireAPI.insertSession( accountId, sId ); - std::string json_string = "{\"result\":\"success\"}"; - *response << "HTTP/1.1 200\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - } - catch( exception& e ) - { - *response << "HTTP/1.1 500\r\n\r\n"; - g_log.error( e.what() ); - } - - }; - - server.resource["^/sapphire-api/lobby/checkNameTaken"]["POST"] = [&]( shared_ptr response, shared_ptr request ) { - print_request_info( request ); - - try - { - using namespace boost::property_tree; - ptree pt; - read_json( request->content, pt ); - - std::string name = pt.get( "name" ); - std::string secret = pt.get( "secret" ); - - // reloadConfig(); - - if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) { - std::string json_string = "{\"result\":\"invalid_secret\"}"; - *response << "HTTP/1.1 403\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - else - { - std::string json_string; - if( !g_sapphireAPI.checkNameTaken( name ) ) - json_string = "{\"result\":\"false\"}"; - else - json_string = "{\"result\":\"true\"}"; - - *response << "HTTP/1.1 200\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - } - catch( exception& e ) - { - *response << "HTTP/1.1 500\r\n\r\n"; - g_log.error( e.what() ); - } - - }; - - server.resource["^/sapphire-api/lobby/checkSession"]["POST"] = [&]( shared_ptr response, shared_ptr request ) { - print_request_info( request ); - - try - { - using namespace boost::property_tree; - ptree pt; - read_json( request->content, pt ); - - std::string sId = pt.get( "sId" ); - std::string secret = pt.get( "secret" ); - - int32_t result = g_sapphireAPI.checkSession( sId ); - - // reloadConfig(); - - if( result != -1 ) - { - if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) { - std::string json_string = "{\"result\":\"invalid_secret\"}"; - *response << "HTTP/1.1 403\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - else - { - std::string json_string = "{\"result\":\"" + std::to_string( result ) + "\"}"; - *response << "HTTP/1.1 200\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - } - else - { - std::string json_string = "{\"result\":\"invalid\"}"; - *response << "HTTP/1.1 200\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - } - catch( exception& e ) - { - *response << "HTTP/1.1 500\r\n\r\n"; - g_log.error( e.what() ); - } - - }; - - server.resource["^/sapphire-api/lobby/getNextCharId"]["POST"] = [&]( shared_ptr response, shared_ptr request ) { - print_request_info( request ); - - try - { - using namespace boost::property_tree; - ptree pt; - read_json( request->content, pt ); - - std::string secret = pt.get( "secret" ); - - // reloadConfig(); - - if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) { - std::string json_string = "{\"result\":\"invalid_secret\"}"; - *response << "HTTP/1.1 403\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - else - { - std::string json_string = "{\"result\":\"" + std::to_string( g_sapphireAPI.getNextCharId() ) + "\"}"; - *response << "HTTP/1.1 200\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - } - catch( exception& e ) - { - *response << "HTTP/1.1 500\r\n\r\n"; - g_log.error( e.what() ); - } - - }; - - server.resource["^/sapphire-api/lobby/getNextContentId"]["POST"] = [&]( shared_ptr response, shared_ptr request ) { - print_request_info( request ); - - try - { - using namespace boost::property_tree; - ptree pt; - read_json( request->content, pt ); - - std::string secret = pt.get( "secret" ); - - // reloadConfig(); - - if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) { - std::string json_string = "{\"result\":\"invalid_secret\"}"; - *response << "HTTP/1.1 403\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - else - { - std::string json_string = "{\"result\":\"" + std::to_string( g_sapphireAPI.getNextContentId() ) + "\"}"; - *response << "HTTP/1.1 200\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - } - catch( exception& e ) - { - *response << "HTTP/1.1 500\r\n\r\n"; - g_log.error( e.what() ); - } - - }; - - server.resource["^/sapphire-api/lobby/getCharacterList"]["POST"] = [&]( shared_ptr response, shared_ptr request ) { - print_request_info( request ); - - try - { - using namespace boost::property_tree; - ptree pt; - read_json( request->content, pt ); - - std::string sId = pt.get( "sId" ); - std::string secret = pt.get( "secret" ); - - // reloadConfig(); - - int32_t result = g_sapphireAPI.checkSession( sId ); - - if( result != -1 ) - { - - if( m_pConfig->getValue< std::string >( "Settings.General.ServerSecret" ) != secret ) { - std::string json_string = "{\"result\":\"invalid_secret\"}"; - *response << "HTTP/1.1 403\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - else - { - auto charList = g_sapphireAPI.getCharList( result ); - using boost::property_tree::ptree; - ptree pt; - ptree char_tree; - - for( auto entry : charList ) - { - ptree tree_entry; - tree_entry.put( "name", std::string( entry.getName() ) ); - tree_entry.put( "charId", std::to_string( entry.getId() ) ); - tree_entry.put( "contentId", std::to_string( entry.getContentId() ) ); - tree_entry.put( "infoJson", std::string( entry.getInfoJson() ) ); - char_tree.push_back( std::make_pair( "", tree_entry ) ); - } - - pt.add_child( "charArray", char_tree ); - pt.put( "result", "success" ); - std::ostringstream oss; - write_json( oss, pt ); - std::string responseStr = oss.str(); - *response << "HTTP/1.1 200\r\nContent-Length: " << responseStr.length() << "\r\n\r\n" << responseStr; - } - } - else - { - std::string json_string = "{\"result\":\"invalid\"}"; - *response << "HTTP/1.1 200\r\nContent-Length: " << json_string.length() << "\r\n\r\n" << json_string; - } - } - catch( exception& e ) - { - *response << "HTTP/1.1 500\r\n\r\n"; - g_log.error( e.what() ); - } - - }; - - server.resource["^(/frontier-api/ffxivsupport/view/get_init)(.*)"]["GET"] = [&]( shared_ptr response, shared_ptr request ) { - print_request_info( request ); - - try - { - auto web_root_path = boost::filesystem::canonical( "web" ); - auto path = boost::filesystem::canonical( web_root_path / "news.xml" ); - //Check if path is within web_root_path - if( distance( web_root_path.begin(), web_root_path.end() ) > distance( path.begin(), path.end() ) || - !std::equal( web_root_path.begin(), web_root_path.end(), path.begin() ) ) - throw invalid_argument( "path must be within root path" ); - if( !( boost::filesystem::exists( path ) && boost::filesystem::is_regular_file( path ) ) ) - throw invalid_argument( "file does not exist" ); - - std::string cache_control, etag; - - // Uncomment the following line to enable Cache-Control - // cache_control="Cache-Control: max-age=86400\r\n"; - - auto ifs = make_shared(); - ifs->open( path.string(), ifstream::in | ios::binary | ios::ate ); - - if( *ifs ) - { - auto length = ifs->tellg(); - ifs->seekg( 0, ios::beg ); - - *response << "HTTP/1.1 200 OK\r\n" << cache_control << etag << "Content-Length: " << length << "\r\n\r\n"; - default_resource_send( server, response, ifs ); - } - else - throw invalid_argument( "could not read file" ); - } - catch( exception& e ) - { - *response << "HTTP/1.1 500\r\n\r\n"; - g_log.error( e.what() ); - } - - }; - - server.resource["^(/frontier-api/ffxivsupport/information/get_headline_all)(.*)"]["GET"] = [&]( shared_ptr response, shared_ptr request ) { - print_request_info( request ); - - try - { - auto web_root_path = boost::filesystem::canonical( "web" ); - auto path = boost::filesystem::canonical( web_root_path / "headlines.xml" ); - //Check if path is within web_root_path - if( distance( web_root_path.begin(), web_root_path.end() ) > distance( path.begin(), path.end() ) || - !std::equal( web_root_path.begin(), web_root_path.end(), path.begin() ) ) - throw invalid_argument( "path must be within root path" ); - if( !( boost::filesystem::exists( path ) && boost::filesystem::is_regular_file( path ) ) ) - throw invalid_argument( "file does not exist" ); - - std::string cache_control, etag; - - // Uncomment the following line to enable Cache-Control - // cache_control="Cache-Control: max-age=86400\r\n"; - - auto ifs = make_shared(); - ifs->open( path.string(), ifstream::in | ios::binary | ios::ate ); - - if( *ifs ) - { - auto length = ifs->tellg(); - ifs->seekg( 0, ios::beg ); - - *response << "HTTP/1.1 200 OK\r\n" << cache_control << etag << "Content-Length: " << length << "\r\n\r\n"; - default_resource_send( server, response, ifs ); - } - else - throw invalid_argument( "could not read file" ); - } - catch( exception& e ) - { - *response << "HTTP/1.1 500\r\n\r\n"; - g_log.error( e.what() ); - } - - }; - - //Default GET-example. If no other matches, this anonymous function will be called. - //Will respond with content in the web/-directory, and its subdirectories. - //Default file: index.html - //Can for instance be used to retrieve an HTML 5 client that uses REST-resources on this server - server.default_resource["GET"] = [&]( shared_ptr response, shared_ptr request ) { - print_request_info( request ); - - try - { - auto web_root_path = boost::filesystem::canonical( "web" ); - auto path = boost::filesystem::canonical( web_root_path / request->path ); - //Check if path is within web_root_path - if( distance( web_root_path.begin(), web_root_path.end() ) > distance( path.begin(), path.end() ) || - !std::equal( web_root_path.begin(), web_root_path.end(), path.begin() ) ) - throw invalid_argument( "path must be within root path" ); - if( boost::filesystem::is_directory( path ) ) - path /= "index.html"; - if( !( boost::filesystem::exists( path ) && boost::filesystem::is_regular_file( path ) ) ) - throw invalid_argument( "file does not exist" ); - - std::string cache_control, etag; - - // Uncomment the following line to enable Cache-Control - // cache_control="Cache-Control: max-age=86400\r\n"; - - auto ifs = make_shared(); - ifs->open( path.string(), ifstream::in | ios::binary | ios::ate ); - - if( *ifs ) - { - auto length = ifs->tellg(); - ifs->seekg( 0, ios::beg ); - - *response << "HTTP/1.1 200 OK\r\n" << cache_control << etag << "Content-Length: " << length << "\r\n\r\n"; - default_resource_send( server, response, ifs ); - } - else - throw invalid_argument( "could not read file" ); - } - catch( const exception & ) - { - string content = "Path not found: " + request->path; - *response << "HTTP/1.1 400 Bad Request\r\nContent-Length: " << content.length() << "\r\n\r\n" << content; - } - }; - - thread server_thread( [&]() { + g_log.info( "Starting API server at port " + m_pConfig->getValue< std::string >( "Settings.General.HttpPort", "80" ) + "..." ); + + server.resource["^/ZoneName/([0-9]+)$"]["GET"] = &getZoneName; + server.resource["^/sapphire-api/lobby/createAccount"]["POST"] = &createAccount; + server.resource["^/sapphire-api/lobby/login"]["POST"] = &login; + server.resource["^/sapphire-api/lobby/deleteCharacter"]["POST"] = &deleteCharacter; + server.resource["^/sapphire-api/lobby/createCharacter"]["POST"] = &createCharacter; + server.resource["^/sapphire-api/lobby/insertSession"]["POST"] = &insertSession; + server.resource["^/sapphire-api/lobby/checkNameTaken"]["POST"] = &checkNameTaken; + server.resource["^/sapphire-api/lobby/checkSession"]["POST"] = &checkSession; + server.resource["^/sapphire-api/lobby/getNextCharId"]["POST"] = &getNextCharId; + server.resource["^/sapphire-api/lobby/getNextContentId"]["POST"] = &getNextContentId; + server.resource["^/sapphire-api/lobby/getCharacterList"]["POST"] = &getCharacterList; + server.resource["^(/frontier-api/ffxivsupport/view/get_init)(.*)"]["GET"] = &get_init; + server.resource["^(/frontier-api/ffxivsupport/information/get_headline_all)(.*)"]["GET"] = &get_headline_all; + + server.default_resource["GET"] = &defaultGet; + + thread server_thread( [&]() + { //Start server server.start(); } ); @@ -732,8 +784,6 @@ int main( int argc, char* argv[] ) this_thread::sleep_for( chrono::seconds( 1 ) ); server_thread.join(); - g_log.info( "Started REST server at port " + std::to_string( server.config.port ) ); - return 0; } From 0eb5c4d18251dde866dd6d5b7ac7f424d6e08258 Mon Sep 17 00:00:00 2001 From: Mordred <30826167+SapphireMordred@users.noreply.github.com> Date: Mon, 4 Dec 2017 15:48:46 +0100 Subject: [PATCH 08/25] Update CONTRIBUTING.md Fixing wrong spacing information in contributing.md --- CONTRIBUTING.md | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a2964aca..9f3f22ab 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,7 +22,7 @@ When making a PR, please make sure that it follows our style guidelines and good ### Coding style -Indentations are Allman-style based, 4-space, no tabs. +Indentations are Allman-style based, 3-space, no tabs. Space between arguments in function calls, as well as for types. Example (shortened from ActionHandler.cpp): @@ -30,34 +30,34 @@ Example (shortened from ActionHandler.cpp): ```cpp switch( commandId ) { - case 0x01: // Toggle sheathe - { - if ( param11 == 1 ) - pPlayer->setStance( Entity::Actor::Stance::Active ); - else - { - pPlayer->setStance( Entity::Actor::Stance::Passive ); - pPlayer->setAutoattack( false ); - } + case 0x01: // Toggle sheathe + { + if ( param11 == 1 ) + pPlayer->setStance( Entity::Actor::Stance::Active ); + else + { + pPlayer->setStance( Entity::Actor::Stance::Passive ); + pPlayer->setAutoattack( false ); + } - pPlayer->sendToInRangeSet( ActorControlPacket142( pPlayer->getId(), 0, param11, 1 ) ); + pPlayer->sendToInRangeSet( ActorControlPacket142( pPlayer->getId(), 0, param11, 1 ) ); - break; - } - case 0x03: // Change target - { - uint64_t targetId = inPacket.getValAt< uint64_t >( 0x24 ); - pPlayer->changeTarget( targetId ); - break; - } - default: - { - break; - } + break; + } + case 0x03: // Change target + { + uint64_t targetId = inPacket.getValAt< uint64_t >( 0x24 ); + pPlayer->changeTarget( targetId ); + break; + } + default: + { + break; + } } ``` ### Feature implementation Please make sure edge cases have been tested, behavior is aligned with retail and (if applicable) your queries make sense. -Any changes to the SQL base should be noted (and reflected in the update.sql file in rootDirectory/sql). \ No newline at end of file +Any changes to the SQL base should be noted (and reflected in the update.sql file in rootDirectory/sql). From 55c49b0bc4362fe6a9f1c9fa09d422f6ebb25ad0 Mon Sep 17 00:00:00 2001 From: Mordred Admin Date: Tue, 5 Dec 2017 11:21:56 +0100 Subject: [PATCH 09/25] Removed statusEffectContainer, now directly part of Actor --- bin/config/settings_rest.xml | 9 +- cmake/compiler.cmake | 2 +- src/servers/Server_Zone/Actor/Actor.cpp | 195 ++++++++++++++-- src/servers/Server_Zone/Actor/Actor.h | 47 ++-- src/servers/Server_Zone/Actor/BattleNpc.cpp | 12 +- src/servers/Server_Zone/Actor/Player.cpp | 5 +- src/servers/Server_Zone/Actor/PlayerSql.cpp | 5 +- .../Network/Handlers/ActionHandler.cpp | 2 +- .../PacketWrappers/PlayerSpawnPacket.h | 8 +- .../StatusEffect/StatusEffectContainer.cpp | 218 ------------------ .../StatusEffect/StatusEffectContainer.h | 49 ---- src/servers/Server_Zone/Zone/Cell.cpp | 3 +- 12 files changed, 229 insertions(+), 326 deletions(-) delete mode 100644 src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp delete mode 100644 src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h diff --git a/bin/config/settings_rest.xml b/bin/config/settings_rest.xml index af0c2fb9..35239671 100644 --- a/bin/config/settings_rest.xml +++ b/bin/config/settings_rest.xml @@ -6,7 +6,8 @@ 127.0.0.1 - C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\ffxiv + + /opt/sapphire_3_15_0/bin/sqpack 127.0.0.1 @@ -16,10 +17,10 @@ 80 - 127.0.0.1 + localhost 3306 root - + viridis0! sapphire @@ -28,4 +29,4 @@ 255 - \ No newline at end of file + diff --git a/cmake/compiler.cmake b/cmake/compiler.cmake index ebf42d84..4ea14d78 100644 --- a/cmake/compiler.cmake +++ b/cmake/compiler.cmake @@ -1,7 +1,7 @@ if(UNIX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") -# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") else() add_definitions(-D_WIN32_WINNT=0x601) add_definitions(-D_CRT_SECURE_NO_WARNINGS) diff --git a/src/servers/Server_Zone/Actor/Actor.cpp b/src/servers/Server_Zone/Actor/Actor.cpp index 02d9543d..6d3f87df 100644 --- a/src/servers/Server_Zone/Actor/Actor.cpp +++ b/src/servers/Server_Zone/Actor/Actor.cpp @@ -15,7 +15,6 @@ #include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h" #include "src/servers/Server_Zone/Network/PacketWrappers/UpdateHpMpTpPacket.h" -#include "src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h" #include "src/servers/Server_Zone/StatusEffect/StatusEffect.h" #include "src/servers/Server_Zone/Action/ActionCollision.h" #include "src/servers/Server_Zone/ServerZone.h" @@ -33,6 +32,11 @@ using namespace Core::Network::Packets::Server; Core::Entity::Actor::Actor() { + // initialize the free slot queue + for( uint8_t i = 0; i < MAX_STATUS_EFFECTS; i++ ) + { + m_statusEffectFreeSlotQueue.push( i ); + } } Core::Entity::Actor::~Actor() @@ -794,7 +798,30 @@ void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint16_t actionId, u /*! \param StatusEffectPtr to be applied to the actor */ void Core::Entity::Actor::addStatusEffect( StatusEffect::StatusEffectPtr pEffect ) { - m_pStatusEffectContainer->addStatusEffect( pEffect ); + int8_t nextSlot = getStatusEffectFreeSlot(); + // if there is no slot left, do not add the effect + if( nextSlot == -1 ) + return; + + pEffect->applyStatus(); + m_statusEffectMap[nextSlot] = pEffect; + + ZoneChannelPacket< Server::FFXIVIpcAddStatusEffect > statusEffectAdd( getId() ); + statusEffectAdd.data().actor_id = pEffect->getTargetActorId(); + statusEffectAdd.data().actor_id1 = pEffect->getSrcActorId(); + statusEffectAdd.data().current_hp = getHp(); + statusEffectAdd.data().current_mp = getMp(); + statusEffectAdd.data().current_tp = getTp(); + statusEffectAdd.data().duration = static_cast< float >( pEffect->getDuration() ) / 1000; + statusEffectAdd.data().effect_id = pEffect->getId(); + statusEffectAdd.data().effect_index = nextSlot; + statusEffectAdd.data().max_hp = getMaxHp(); + statusEffectAdd.data().max_mp = getMaxMp(); + statusEffectAdd.data().max_something = 1; + //statusEffectAdd.data().unknown2 = 28; + statusEffectAdd.data().param = pEffect->getParam(); + + sendToInRangeSet( statusEffectAdd, isPlayer() ); } /*! \param StatusEffectPtr to be applied to the actor */ @@ -809,7 +836,7 @@ void Core::Entity::Actor::addStatusEffectById( uint32_t id, int32_t duration, En /*! \param StatusEffectPtr to be applied to the actor */ void Core::Entity::Actor::addStatusEffectByIdIfNotExist( uint32_t id, int32_t duration, Entity::Actor& pSource, uint16_t param ) { - if( !m_pStatusEffectContainer->hasStatusEffect( id ) ) + if( !hasStatusEffect( id ) ) { StatusEffect::StatusEffectPtr effect( new StatusEffect::StatusEffect( id, pSource.shared_from_this(), shared_from_this(), duration, 3000 ) ); @@ -818,17 +845,6 @@ void Core::Entity::Actor::addStatusEffectByIdIfNotExist( uint32_t id, int32_t du } } -/*! \param Status that should be removed, based on its ID. */ -void Core::Entity::Actor::removeSingleStatusEffectFromId( uint32_t id ) -{ - m_pStatusEffectContainer->removeSingleStatusEffectFromId( id ); -} - -Core::StatusEffect::StatusEffectContainerPtr Core::Entity::Actor::getStatusEffectContainer() const -{ - return m_pStatusEffectContainer; -} - float Core::Entity::Actor::getRotation() const { return m_rot; @@ -838,3 +854,154 @@ void Core::Entity::Actor::setRotation( float rot ) { m_rot = rot; } + +int8_t Core::Entity::Actor::getStatusEffectFreeSlot() +{ + int8_t freeEffectSlot = -1; + + if( m_statusEffectFreeSlotQueue.empty() ) + return freeEffectSlot; + + freeEffectSlot = m_statusEffectFreeSlotQueue.front(); + m_statusEffectFreeSlotQueue.pop(); + + return freeEffectSlot; +} + +void Core::Entity::Actor::statusEffectFreeSlot( uint8_t slotId ) +{ + m_statusEffectFreeSlotQueue.push( slotId ); +} + +void Core::Entity::Actor::removeSingleStatusEffectById( uint32_t id ) +{ + for( auto effectIt : m_statusEffectMap ) + { + if( effectIt.second->getId() == id ) + { + removeStatusEffect( effectIt.first ); + break; + } + } +} + +void Core::Entity::Actor::removeStatusEffect( uint8_t effectSlotId ) +{ + auto pEffectIt = m_statusEffectMap.find( effectSlotId ); + if( pEffectIt == m_statusEffectMap.end() ) + return; + + statusEffectFreeSlot( effectSlotId ); + + auto pEffect = pEffectIt->second; + pEffect->removeStatus(); + + sendToInRangeSet( ActorControlPacket142( getId(), StatusEffectLose, pEffect->getId() ), isPlayer() ); + + m_statusEffectMap.erase( effectSlotId ); + + sendStatusEffectUpdate(); +} + +std::map< uint8_t, Core::StatusEffect::StatusEffectPtr > Core::Entity::Actor::getStatusEffectMap() const +{ + return m_statusEffectMap; +} + +void Core::Entity::Actor::sendStatusEffectUpdate() +{ + uint64_t currentTimeMs = Util::getTimeMs(); + + ZoneChannelPacket< Server::FFXIVIpcStatusEffectList > statusEffectList( getId() ); + + statusEffectList.data().current_hp = getHp(); + statusEffectList.data().current_mp = getMp(); + statusEffectList.data().currentTp = getTp(); + statusEffectList.data().max_hp = getMaxHp(); + statusEffectList.data().max_mp = getMaxMp(); + uint8_t slot = 0; + for( auto effectIt : m_statusEffectMap ) + { + float timeLeft = static_cast< float >( effectIt.second->getDuration() - + ( currentTimeMs - effectIt.second->getStartTimeMs() ) ) / 1000; + statusEffectList.data().effect[slot].duration = timeLeft; + statusEffectList.data().effect[slot].effect_id = effectIt.second->getId(); + statusEffectList.data().effect[slot].sourceActorId = effectIt.second->getSrcActorId(); + slot++; + } + + sendToInRangeSet( statusEffectList, isPlayer() ); + +} + +void Core::Entity::Actor::updateStatusEffects() +{ + uint64_t currentTimeMs = Util::getTimeMs(); + + uint32_t thisTickDmg = 0; + uint32_t thisTickHeal = 0; + + for( auto effectIt : m_statusEffectMap ) + { + uint8_t effectIndex = effectIt.first; + auto effect = effectIt.second; + + uint64_t lastTick = effect->getLastTickMs(); + uint64_t startTime = effect->getStartTimeMs(); + uint32_t duration = effect->getDuration(); + uint32_t tickRate = effect->getTickRate(); + + if( ( currentTimeMs - startTime ) > duration ) + { + // remove status effect + removeStatusEffect( effectIndex ); + // break because removing invalidates iterators + break; + } + + if( ( currentTimeMs - lastTick ) > tickRate ) + { + effect->setLastTick( currentTimeMs ); + effect->onTick(); + + auto thisEffect = effect->getTickEffect(); + + switch( thisEffect.first ) + { + + case 1: + { + thisTickDmg += thisEffect.second; + break; + } + + case 2: + { + thisTickHeal += thisEffect.second; + break; + } + + } + } + + } + + if( thisTickDmg != 0 ) + { + takeDamage( thisTickDmg ); + sendToInRangeSet( ActorControlPacket142( getId(), HPFloatingText, 0, static_cast< uint8_t >( ActionEffectType::Damage ), thisTickDmg ) ); + } + + if( thisTickHeal != 0 ) + { + heal( thisTickDmg ); + sendToInRangeSet( ActorControlPacket142( getId(), HPFloatingText, 0, static_cast< uint8_t >( ActionEffectType::Heal ), thisTickHeal ) ); + } +} + +bool Core::Entity::Actor::hasStatusEffect( uint32_t id ) +{ + if( m_statusEffectMap.find( id ) != m_statusEffectMap.end() ) + return true; + return false; +} diff --git a/src/servers/Server_Zone/Actor/Actor.h b/src/servers/Server_Zone/Actor/Actor.h index 6e14f8c0..6759d486 100644 --- a/src/servers/Server_Zone/Actor/Actor.h +++ b/src/servers/Server_Zone/Actor/Actor.h @@ -7,6 +7,7 @@ #include "src/servers/Server_Zone/Forwards.h" #include #include +#include namespace Core { namespace Entity { @@ -160,11 +161,15 @@ protected: uint64_t m_targetId; /*! Ptr to a queued action */ Action::ActionPtr m_pCurrentAction; - /*! Container for status effects */ - StatusEffect::StatusEffectContainerPtr m_pStatusEffectContainer; /*! Invincibility type */ Common::InvincibilityType m_invincibilityType; + /*! Status effects */ + const uint8_t MAX_STATUS_EFFECTS = 30; + std::queue< uint8_t > m_statusEffectFreeSlotQueue; + std::vector< std::pair< uint8_t, uint32_t> > m_statusEffectList; + std::map< uint8_t, StatusEffect::StatusEffectPtr > m_statusEffectMap; + public: Actor(); @@ -174,6 +179,30 @@ public: uint32_t getId() const; + /// Status effect functions + void addStatusEffect( StatusEffect::StatusEffectPtr pEffect ); + void removeStatusEffect( uint8_t effectSlotId ); + void removeSingleStatusEffectById( uint32_t id ); + void updateStatusEffects(); + + bool hasStatusEffect( uint32_t id ); + + int8_t getStatusEffectFreeSlot(); + void statusEffectFreeSlot( uint8_t slotId ); + + std::map< uint8_t, Core::StatusEffect::StatusEffectPtr > getStatusEffectMap() const; + + void sendStatusEffectUpdate(); + // add a status effect by id + void addStatusEffectById( uint32_t id, int32_t duration, Entity::Actor& pSource, uint16_t param = 0 ); + + // add a status effect by id if it doesn't exist + void addStatusEffectByIdIfNotExist( uint32_t id, int32_t duration, Entity::Actor& pSource, uint16_t param = 0 ); + + // remove a status effect by id + void removeSingleStatusEffectFromId( uint32_t id ); + /// End Status Effect Functions + void setPosition( const Common::FFXIVARR_POSITION3& pos ); void setPosition( float x, float y, float z ); @@ -303,20 +332,6 @@ public: // set the current cell void setCell( Cell* pCell ); - // add a status effect - void addStatusEffect( StatusEffect::StatusEffectPtr pEffect ); - - // add a status effect by id - void addStatusEffectById( uint32_t id, int32_t duration, Entity::Actor& pSource, uint16_t param = 0 ); - - // add a status effect by id if it doesn't exist - void addStatusEffectByIdIfNotExist( uint32_t id, int32_t duration, Entity::Actor& pSource, uint16_t param = 0 ); - - // remove a status effect by id - void removeSingleStatusEffectFromId( uint32_t id ); - - //get the status effect container - StatusEffect::StatusEffectContainerPtr getStatusEffectContainer() const; // TODO: Why did i even declare them publicly here?! std::set< ActorPtr > m_inRangeActors; diff --git a/src/servers/Server_Zone/Actor/BattleNpc.cpp b/src/servers/Server_Zone/Actor/BattleNpc.cpp index 0bd002f7..17160397 100644 --- a/src/servers/Server_Zone/Actor/BattleNpc.cpp +++ b/src/servers/Server_Zone/Actor/BattleNpc.cpp @@ -15,7 +15,6 @@ #include "src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h" #include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" #include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h" using namespace Core::Common; using namespace Core::Network::Packets; @@ -40,7 +39,7 @@ Core::Entity::BattleNpc::~BattleNpc() Core::Entity::BattleNpc::BattleNpc( uint16_t modelId, uint16_t nameid, const Common::FFXIVARR_POSITION3& spawnPos, uint16_t bnpcBaseId, uint32_t type, uint8_t level, uint8_t behaviour, - uint32_t mobType ) + uint32_t mobType ) : Actor() { BattleNpc::m_nextID++; m_id = BattleNpc::m_nextID; @@ -87,11 +86,6 @@ Core::Entity::BattleNpc::BattleNpc( uint16_t modelId, uint16_t nameid, const Com } -void Core::Entity::BattleNpc::initStatusEffectContainer() -{ - m_pStatusEffectContainer = StatusEffect::StatusEffectContainerPtr( new StatusEffect::StatusEffectContainer( shared_from_this() ) ); -} - // spawn this player for pTarget void Core::Entity::BattleNpc::spawn( Core::Entity::PlayerPtr pTarget ) { @@ -487,9 +481,7 @@ void Core::Entity::BattleNpc::update( int64_t currTime ) return; } - if ( !m_pStatusEffectContainer ) - initStatusEffectContainer(); - m_pStatusEffectContainer->update(); + updateStatusEffects(); float distance = Math::Util::distance( m_pos.x, m_pos.y, m_pos.z, m_posOrigin.x, m_posOrigin.y, m_posOrigin.z ); diff --git a/src/servers/Server_Zone/Actor/Player.cpp b/src/servers/Server_Zone/Actor/Player.cpp index 2caab4b3..4260e251 100644 --- a/src/servers/Server_Zone/Actor/Player.cpp +++ b/src/servers/Server_Zone/Actor/Player.cpp @@ -31,8 +31,6 @@ #include "src/servers/Server_Zone/Script/ScriptManager.h" -#include "src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h" - #include "src/servers/Server_Zone/Inventory/Item.h" #include "src/servers/Server_Zone/Inventory/Inventory.h" @@ -57,6 +55,7 @@ using namespace Core::Network::Packets::Server; // player constructor Core::Entity::Player::Player() : + Actor(), m_lastWrite( 0 ), m_lastPing( 0 ), m_bIsLogin( false ), @@ -1045,7 +1044,7 @@ void Core::Entity::Player::update( int64_t currTime ) if( !isAlive() ) return; - m_pStatusEffectContainer->update(); + updateStatusEffects(); m_lastUpdate = currTime; diff --git a/src/servers/Server_Zone/Actor/PlayerSql.cpp b/src/servers/Server_Zone/Actor/PlayerSql.cpp index 46fdd8d8..26fb155f 100644 --- a/src/servers/Server_Zone/Actor/PlayerSql.cpp +++ b/src/servers/Server_Zone/Actor/PlayerSql.cpp @@ -26,7 +26,6 @@ #include "src/servers/Server_Zone/Network/GameConnection.h" #include "src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h" -#include "src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h" #include "src/servers/Server_Zone/Inventory/Inventory.h" #include @@ -211,8 +210,6 @@ bool Core::Entity::Player::load( uint32_t charId, Core::SessionPtr pSession ) initSpawnIdQueue(); - m_pStatusEffectContainer = StatusEffect::StatusEffectContainerPtr( new StatusEffect::StatusEffectContainer( shared_from_this() ) ); - if( !m_playerIdToSpawnIdMap.empty() ) m_playerIdToSpawnIdMap.clear(); @@ -508,4 +505,4 @@ void Core::Entity::Player::insertQuest( uint16_t questId, uint8_t index, uint8_t stmt->setInt( 11, 0 ); stmt->setInt( 12, 0 ); g_charaDb.execute( stmt ); -} \ No newline at end of file +} diff --git a/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp b/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp index 94aa4e71..5d3eef1d 100644 --- a/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp +++ b/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp @@ -110,7 +110,7 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in case 0x68: // Remove status (clicking it off) { // todo: check if status can be removed by client from exd - pPlayer->removeSingleStatusEffectFromId( static_cast< uint32_t >( param1 ) ); + pPlayer->removeSingleStatusEffectById( static_cast< uint32_t >( param1 ) ); break; } case 0x69: // Cancel cast diff --git a/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h index 859af3ad..07c16ec1 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h @@ -8,7 +8,6 @@ #include "src/servers/Server_Zone/Forwards.h" #include "src/servers/Server_Zone/Inventory/Inventory.h" #include "src/servers/Server_Zone/Inventory/Item.h" -#include "src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h" #include "src/servers/Server_Zone/StatusEffect/StatusEffect.h" namespace Core { @@ -122,10 +121,11 @@ namespace Server { uint64_t currentTimeMs = Util::getTimeMs(); - for( auto const& effect : pPlayer->getStatusEffectContainer()->getEffectMap() ) + for( auto const& effect : pPlayer->getStatusEffectMap() ) { m_data.effect[effect.first].effect_id = effect.second->getId(); - m_data.effect[effect.first].duration = static_cast< float >( effect.second->getDuration() - ( currentTimeMs - effect.second->getStartTimeMs() ) ) / 1000; + 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(); } @@ -138,4 +138,4 @@ namespace Server { } } -#endif /*_PlayerSpawn_H*/ \ No newline at end of file +#endif /*_PlayerSpawn_H*/ diff --git a/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp b/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp deleted file mode 100644 index 6c623abc..00000000 --- a/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp +++ /dev/null @@ -1,218 +0,0 @@ -#include -#include - -#include "src/servers/Server_Zone/Actor/Actor.h" -#include "StatusEffect.h" -#include "StatusEffectContainer.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" - - -using namespace Core::Common; -using namespace Core::Network::Packets; -using namespace Core::Network::Packets::Server; - -Core::StatusEffect::StatusEffectContainer::StatusEffectContainer( Entity::ActorPtr pOwner ) - : m_pOwner( pOwner ) -{ - // initialize the free slot queue - for( uint8_t i = 0; i < MAX_EFFECTS; i++ ) - { - m_freeEffectSlotQueue.push( i ); - } -} - -int8_t Core::StatusEffect::StatusEffectContainer::getFreeSlot() -{ - int8_t freeEffectSlot = -1; - - if( m_freeEffectSlotQueue.empty() ) - return freeEffectSlot; - - freeEffectSlot = m_freeEffectSlotQueue.front(); - m_freeEffectSlotQueue.pop(); - - return freeEffectSlot; -} - -void Core::StatusEffect::StatusEffectContainer::freeSlot( uint8_t slotId ) -{ - m_freeEffectSlotQueue.push( slotId ); -} - - -Core::StatusEffect::StatusEffectContainer::~StatusEffectContainer() -{ -} - - -void Core::StatusEffect::StatusEffectContainer::addStatusEffect( StatusEffectPtr pEffect ) -{ - int8_t nextSlot = getFreeSlot(); - // if there is no slot left, do not add the effect - if( nextSlot == -1 ) - return; - - pEffect->applyStatus(); - m_effectMap[nextSlot] = pEffect; - - ZoneChannelPacket< Server::FFXIVIpcAddStatusEffect > statusEffectAdd( m_pOwner->getId() ); - statusEffectAdd.data().actor_id = pEffect->getTargetActorId(); - statusEffectAdd.data().actor_id1 = pEffect->getSrcActorId(); - statusEffectAdd.data().current_hp = m_pOwner->getHp(); - statusEffectAdd.data().current_mp = m_pOwner->getMp(); - statusEffectAdd.data().current_tp = m_pOwner->getTp(); - statusEffectAdd.data().duration = static_cast< float >( pEffect->getDuration() ) / 1000; - statusEffectAdd.data().effect_id = pEffect->getId(); - statusEffectAdd.data().effect_index = nextSlot; - statusEffectAdd.data().max_hp = m_pOwner->getMaxHp(); - statusEffectAdd.data().max_mp = m_pOwner->getMaxMp(); - statusEffectAdd.data().max_something = 1; - //statusEffectAdd.data().unknown2 = 28; - statusEffectAdd.data().param = pEffect->getParam(); - - - bool sendToSelf = m_pOwner->isPlayer() ? true : false; - m_pOwner->sendToInRangeSet( statusEffectAdd, sendToSelf ); - -} - -void Core::StatusEffect::StatusEffectContainer::removeSingleStatusEffectFromId( uint32_t id ) -{ - for (auto effectIt : m_effectMap) - { - if (effectIt.second->getId() == id) - { - removeStatusEffect( effectIt.first ); - break; - } - } -} - -void Core::StatusEffect::StatusEffectContainer::removeStatusEffect( uint8_t effectSlotId ) -{ - auto pEffectIt = m_effectMap.find( effectSlotId ); - if( pEffectIt == m_effectMap.end() ) - return; - - freeSlot( effectSlotId ); - - auto pEffect = pEffectIt->second; - pEffect->removeStatus(); - - bool sendToSelf = m_pOwner->isPlayer() ? true : false; - m_pOwner->sendToInRangeSet( ActorControlPacket142( m_pOwner->getId(), StatusEffectLose, pEffect->getId() ), sendToSelf ); - - m_effectMap.erase( effectSlotId ); - - sendUpdate(); -} - -std::map< uint8_t, Core::StatusEffect::StatusEffectPtr > Core::StatusEffect::StatusEffectContainer::getEffectMap() const -{ - return m_effectMap; -} - -void Core::StatusEffect::StatusEffectContainer::sendUpdate() -{ - uint64_t currentTimeMs = Util::getTimeMs(); - - ZoneChannelPacket< Server::FFXIVIpcStatusEffectList > statusEffectList( m_pOwner->getId() ); - - statusEffectList.data().current_hp = m_pOwner->getHp(); - statusEffectList.data().current_mp = m_pOwner->getMp(); - statusEffectList.data().currentTp = m_pOwner->getTp(); - statusEffectList.data().max_hp = m_pOwner->getMaxHp(); - statusEffectList.data().max_mp = m_pOwner->getMaxMp(); - uint8_t slot = 0; - for( auto effectIt : m_effectMap ) - { - float timeLeft = static_cast< float >( effectIt.second->getDuration() - ( currentTimeMs - effectIt.second->getStartTimeMs() ) ) / 1000; - statusEffectList.data().effect[slot].duration = timeLeft; - statusEffectList.data().effect[slot].effect_id = effectIt.second->getId(); - statusEffectList.data().effect[slot].sourceActorId = effectIt.second->getSrcActorId(); - slot++; - } - - bool sendToSelf = m_pOwner->isPlayer(); - m_pOwner->sendToInRangeSet( statusEffectList, sendToSelf ); - -} - -void Core::StatusEffect::StatusEffectContainer::update() -{ - uint64_t currentTimeMs = Util::getTimeMs(); - - uint32_t thisTickDmg = 0; - uint32_t thisTickHeal = 0; - - for( auto effectIt : m_effectMap ) - { - uint8_t effectIndex = effectIt.first; - auto effect = effectIt.second; - - uint64_t lastTick = effect->getLastTickMs(); - uint64_t startTime = effect->getStartTimeMs(); - uint32_t duration = effect->getDuration(); - uint32_t tickRate = effect->getTickRate(); - - if( ( currentTimeMs - startTime ) > duration ) - { - // remove status effect - removeStatusEffect( effectIndex ); - // break because removing invalidates iterators - break; - } - - if( ( currentTimeMs - lastTick ) > tickRate ) - { - effect->setLastTick( currentTimeMs ); - effect->onTick(); - - auto thisEffect = effect->getTickEffect(); - - switch( thisEffect.first ) - { - - case 1: - { - thisTickDmg += thisEffect.second; - break; - } - - case 2: - { - thisTickHeal += thisEffect.second; - break; - } - - } - } - - } - - if( thisTickDmg != 0 ) - { - m_pOwner->takeDamage( thisTickDmg ); - m_pOwner->sendToInRangeSet( ActorControlPacket142( m_pOwner->getId(), HPFloatingText, 0, static_cast< uint8_t >( ActionEffectType::Damage ), thisTickDmg ) ); - } - - if( thisTickHeal != 0 ) - { - m_pOwner->heal( thisTickDmg ); - m_pOwner->sendToInRangeSet( ActorControlPacket142( m_pOwner->getId(), HPFloatingText, 0, static_cast< uint8_t >( ActionEffectType::Heal ), thisTickHeal ) ); - } -} - -bool Core::StatusEffect::StatusEffectContainer::hasStatusEffect( uint32_t id ) -{ - for( auto effectIt : m_effectMap ) - { - if( effectIt.second->getId() == id ) - { - return true; - } - } - - return false; -} \ No newline at end of file diff --git a/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h b/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h deleted file mode 100644 index 22a43aae..00000000 --- a/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef _STATUSEFFECTCONTAINER_H_ -#define _STATUSEFFECTCONTAINER_H_ - -#include - -#include -#include - -#include "src/servers/Server_Zone/Forwards.h" - -namespace Core -{ -namespace StatusEffect -{ - -class StatusEffectContainer -{ -public: - StatusEffectContainer( Entity::ActorPtr pOwner ); - ~StatusEffectContainer(); - - void addStatusEffect( StatusEffectPtr pEffect ); - void removeStatusEffect( uint8_t effectSlotId ); - void removeSingleStatusEffectFromId( uint32_t id ); - void update(); - - bool hasStatusEffect( uint32_t id ); - - int8_t getFreeSlot(); - void freeSlot( uint8_t slotId ); - - std::map< uint8_t, Core::StatusEffect::StatusEffectPtr > getEffectMap() const; - - void sendUpdate(); - - -private: - const uint8_t MAX_EFFECTS = 30; - - Entity::ActorPtr m_pOwner; - std::queue< uint8_t > m_freeEffectSlotQueue; - - std::vector< std::pair< uint8_t, uint32_t> > m_tickEffectList; - std::map< uint8_t, StatusEffectPtr > m_effectMap; -}; - -} -} -#endif diff --git a/src/servers/Server_Zone/Zone/Cell.cpp b/src/servers/Server_Zone/Zone/Cell.cpp index 08e886b3..7a598ae7 100644 --- a/src/servers/Server_Zone/Zone/Cell.cpp +++ b/src/servers/Server_Zone/Zone/Cell.cpp @@ -47,7 +47,6 @@ namespace Core { entry->setCurrentZone( m_pZone ); - entry->getAsBattleNpc()->initStatusEffectContainer(); m_pZone->pushActor( entry ); } @@ -170,4 +169,4 @@ namespace Core m_bUnloadPending = false; } -} \ No newline at end of file +} From e775e6a54df4df9ab1452c993148bc1c526bbc9d Mon Sep 17 00:00:00 2001 From: Mordred Admin Date: Tue, 5 Dec 2017 11:41:20 +0100 Subject: [PATCH 10/25] Changed settings, noone cares for local mysql accounts.;) --- bin/config/settings_rest.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bin/config/settings_rest.xml b/bin/config/settings_rest.xml index 35239671..ddadaf67 100644 --- a/bin/config/settings_rest.xml +++ b/bin/config/settings_rest.xml @@ -3,24 +3,24 @@ 54994 54998 - + 127.0.0.1 - - /opt/sapphire_3_15_0/bin/sqpack + C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\ffxiv + 127.0.0.1 - + 127.0.0.1 - + default 80 - localhost + 127.0.0.1 3306 root - viridis0! + sapphire From 090001a1b58dd0f357ed8cc1a4e5bf191eb4069c Mon Sep 17 00:00:00 2001 From: Mordred Admin Date: Tue, 5 Dec 2017 11:43:31 +0100 Subject: [PATCH 11/25] Also should not be comitted --- cmake/compiler.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/compiler.cmake b/cmake/compiler.cmake index 4ea14d78..ebf42d84 100644 --- a/cmake/compiler.cmake +++ b/cmake/compiler.cmake @@ -1,7 +1,7 @@ if(UNIX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") +# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") else() add_definitions(-D_WIN32_WINNT=0x601) add_definitions(-D_CRT_SECURE_NO_WARNINGS) From 589a6c072878d00f9af5d48c9fdf913de7ae37f6 Mon Sep 17 00:00:00 2001 From: GokuWeedLord Date: Thu, 7 Dec 2017 21:14:47 +1100 Subject: [PATCH 12/25] fix character quest data not being removed on delete --- src/servers/Server_REST/SapphireAPI.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/Server_REST/SapphireAPI.cpp b/src/servers/Server_REST/SapphireAPI.cpp index d3181696..5fbc108e 100644 --- a/src/servers/Server_REST/SapphireAPI.cpp +++ b/src/servers/Server_REST/SapphireAPI.cpp @@ -200,7 +200,7 @@ void Core::Network::SapphireAPI::deleteCharacter( std::string name, uint32_t acc g_charaDb.execute( "DELETE FROM charaitemcrystal WHERE CharacterId LIKE '" + std::to_string( id ) + "';" ); g_charaDb.execute( "DELETE FROM charaiteminventory WHERE CharacterId LIKE '" + std::to_string( id ) + "';" ); g_charaDb.execute( "DELETE FROM charaitemgearset WHERE CharacterId LIKE '" + std::to_string( id ) + "';" ); - g_charaDb.execute( "DELETE FROM charaquest WHERE CharacterId LIKE '" + std::to_string( id ) + "';" ); + g_charaDb.execute( "DELETE FROM charaquestnew WHERE CharacterId LIKE '" + std::to_string( id ) + "';" ); } std::vector< Core::PlayerMinimal > Core::Network::SapphireAPI::getCharList( uint32_t accountId ) From f979793b5bdb73fb7ab83ba3a74c49cb9042e4df Mon Sep 17 00:00:00 2001 From: Mordred Admin Date: Thu, 7 Dec 2017 12:09:08 +0100 Subject: [PATCH 13/25] renamed sessionMap and playerSessionMap to make more sense, also fixed player object not being destructed properly --- src/servers/Server_Zone/Actor/PlayerSql.cpp | 3 +- .../Server_Zone/Inventory/Inventory.cpp | 2 +- src/servers/Server_Zone/Inventory/Inventory.h | 4 +- src/servers/Server_Zone/ServerZone.cpp | 42 ++++++++++--------- src/servers/Server_Zone/ServerZone.h | 4 +- 5 files changed, 29 insertions(+), 26 deletions(-) diff --git a/src/servers/Server_Zone/Actor/PlayerSql.cpp b/src/servers/Server_Zone/Actor/PlayerSql.cpp index 26fb155f..7e9cfd71 100644 --- a/src/servers/Server_Zone/Actor/PlayerSql.cpp +++ b/src/servers/Server_Zone/Actor/PlayerSql.cpp @@ -177,7 +177,8 @@ bool Core::Entity::Player::load( uint32_t charId, Core::SessionPtr pSession ) m_lastTickTime = 0; auto pPlayer = getAsPlayer(); - m_pInventory = InventoryPtr( new Inventory( pPlayer ) ); + // TODO: remove Inventory and actually inline it in Player class + m_pInventory = InventoryPtr( new Inventory( pPlayer.get() ) ); pPlayer->calculateStats(); diff --git a/src/servers/Server_Zone/Inventory/Inventory.cpp b/src/servers/Server_Zone/Inventory/Inventory.cpp index 116ffd51..6ac37b82 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.cpp +++ b/src/servers/Server_Zone/Inventory/Inventory.cpp @@ -27,7 +27,7 @@ using namespace Core::Network; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; -Core::Inventory::Inventory( Core::Entity::PlayerPtr pOwner ) +Core::Inventory::Inventory( Core::Entity::Player* pOwner ) { m_pOwner = pOwner; diff --git a/src/servers/Server_Zone/Inventory/Inventory.h b/src/servers/Server_Zone/Inventory/Inventory.h index 1fb690a4..7a0c16ad 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.h +++ b/src/servers/Server_Zone/Inventory/Inventory.h @@ -13,7 +13,7 @@ using InventoryMap = std::map< uint16_t, ItemContainerPtr >; class Inventory { public: - Inventory( Entity::PlayerPtr pOwner ); + Inventory( Entity::Player* pOwner ); ~Inventory(); enum ContainerType : uint16_t @@ -191,7 +191,7 @@ public: private: - Entity::PlayerPtr m_pOwner; + Entity::Player* m_pOwner; InventoryMap m_inventoryMap; }; diff --git a/src/servers/Server_Zone/ServerZone.cpp b/src/servers/Server_Zone/ServerZone.cpp index 67a47dd9..bf16a446 100644 --- a/src/servers/Server_Zone/ServerZone.cpp +++ b/src/servers/Server_Zone/ServerZone.cpp @@ -61,7 +61,7 @@ Core::XMLConfigPtr Core::ServerZone::getConfig() const size_t Core::ServerZone::getSessionCount() const { - return m_sessionMap.size(); + return m_sessionMapById.size(); } bool Core::ServerZone::registerBnpcTemplate( std::string templateName, uint32_t bnpcBaseId, @@ -263,7 +263,7 @@ void Core::ServerZone::mainLoop() auto currTime = static_cast< uint32_t >( time( nullptr ) ); lock_guard< std::mutex > lock( this->m_sessionMutex ); - for( auto sessionIt : this->m_sessionMap ) + for( auto sessionIt : this->m_sessionMapById ) { auto session = sessionIt.second; if( session && session->getPlayer() ) @@ -284,8 +284,8 @@ void Core::ServerZone::mainLoop() } - auto it = this->m_sessionMap.begin(); - for( ; it != this->m_sessionMap.end(); ) + auto it = this->m_sessionMapById.begin(); + for( ; it != this->m_sessionMapById.end(); ) { uint32_t diff = currTime - it->second->getLastDataTime(); @@ -298,7 +298,8 @@ void Core::ServerZone::mainLoop() // if( it->second.unique() ) { g_log.info("[" + std::to_string(it->second->getId() ) + "] Session removal" ); - it = this->m_sessionMap.erase( it ); + it = this->m_sessionMapById.erase( it ); + removeSession( pPlayer->getName() ); continue; } } @@ -310,7 +311,8 @@ void Core::ServerZone::mainLoop() it->second->close(); // if( it->second.unique() ) { - it = this->m_sessionMap.erase(it ); + it = this->m_sessionMapById.erase( it ); + removeSession( pPlayer->getName() ); } } else @@ -329,9 +331,9 @@ bool Core::ServerZone::createSession( uint32_t sessionId ) const std::string session_id_str = std::to_string( sessionId ); - auto it = m_sessionMap.find( sessionId ); + auto it = m_sessionMapById.find( sessionId ); - if( it != m_sessionMap.end() ) + if( it != m_sessionMapById.end() ) { g_log.error( "[" + session_id_str + "] Error creating session" ); return false; @@ -340,7 +342,7 @@ bool Core::ServerZone::createSession( uint32_t sessionId ) g_log.info( "[" + session_id_str + "] Creating new session" ); boost::shared_ptr newSession( new Session( sessionId ) ); - m_sessionMap[sessionId] = newSession; + m_sessionMapById[sessionId] = newSession; if( !newSession->loadPlayer() ) { @@ -348,7 +350,7 @@ bool Core::ServerZone::createSession( uint32_t sessionId ) return false; } - m_playerSessionMap[newSession->getPlayer()->getName()] = newSession; + m_sessionMapByName[newSession->getPlayer()->getName()] = newSession; return true; @@ -356,15 +358,15 @@ bool Core::ServerZone::createSession( uint32_t sessionId ) void Core::ServerZone::removeSession( uint32_t sessionId ) { - m_sessionMap.erase( sessionId ); + m_sessionMapById.erase( sessionId ); } void Core::ServerZone::updateSession( uint32_t id ) { std::lock_guard< std::mutex > lock( m_sessionMutex ); - auto it = m_sessionMap.find( id ); + auto it = m_sessionMapById.find( id ); - if( it != m_sessionMap.end() ) + if( it != m_sessionMapById.end() ) it->second->loadPlayer(); } @@ -372,9 +374,9 @@ Core::SessionPtr Core::ServerZone::getSession( uint32_t id ) { //std::lock_guard lock( m_sessionMutex ); - auto it = m_sessionMap.find( id ); + auto it = m_sessionMapById.find( id ); - if( it != m_sessionMap.end() ) + if( it != m_sessionMapById.end() ) return ( it->second ); return nullptr; @@ -384,9 +386,9 @@ Core::SessionPtr Core::ServerZone::getSession( std::string playerName ) { //std::lock_guard lock( m_sessionMutex ); - auto it = m_playerSessionMap.find( playerName ); + auto it = m_sessionMapByName.find( playerName ); - if (it != m_playerSessionMap.end()) + if (it != m_sessionMapByName.end()) return (it->second); return nullptr; @@ -394,15 +396,15 @@ Core::SessionPtr Core::ServerZone::getSession( std::string playerName ) void Core::ServerZone::removeSession( std::string playerName ) { - m_playerSessionMap.erase( playerName ); + m_sessionMapByName.erase( playerName ); } void Core::ServerZone::updateSession( std::string playerName ) { std::lock_guard< std::mutex > lock( m_sessionMutex ); - auto it = m_playerSessionMap.find( playerName ); + auto it = m_sessionMapByName.find( playerName ); - if( it != m_playerSessionMap.end() ) + if( it != m_sessionMapByName.end() ) it->second->loadPlayer(); } diff --git a/src/servers/Server_Zone/ServerZone.h b/src/servers/Server_Zone/ServerZone.h index 632409e1..33d6a329 100644 --- a/src/servers/Server_Zone/ServerZone.h +++ b/src/servers/Server_Zone/ServerZone.h @@ -61,8 +61,8 @@ namespace Core { std::mutex m_sessionMutex; - std::map< uint32_t, SessionPtr > m_sessionMap; - std::map< std::string, SessionPtr > m_playerSessionMap; + std::map< uint32_t, SessionPtr > m_sessionMapById; + std::map< std::string, SessionPtr > m_sessionMapByName; std::map< uint32_t, uint32_t > m_zones; From 42a2e10132cdc5bc1bfa26c9184136b94cf7ba01 Mon Sep 17 00:00:00 2001 From: Mordred Date: Thu, 7 Dec 2017 23:59:03 +0100 Subject: [PATCH 14/25] Fixed an error with accessing aetheryteList and some minor refactoring --- src/servers/Server_Zone/Actor/Player.cpp | 32 +++++++++---------- .../Network/Handlers/GMCommandHandlers.cpp | 3 +- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/servers/Server_Zone/Actor/Player.cpp b/src/servers/Server_Zone/Actor/Player.cpp index 8d982fbc..5feb823f 100644 --- a/src/servers/Server_Zone/Actor/Player.cpp +++ b/src/servers/Server_Zone/Actor/Player.cpp @@ -840,7 +840,7 @@ uint64_t Core::Entity::Player::getModelSystemWeapon() const int8_t Core::Entity::Player::getAetheryteMaskAt( uint8_t index ) const { - if( index > 11 ) + if( index > sizeof( m_aetheryte ) ) return 0; return m_aetheryte[index]; } @@ -953,10 +953,8 @@ bool Core::Entity::Player::actionHasCastTime( uint32_t actionId ) //TODO: Add lo if( actionInfoPtr->is_instant ) return false; - if( actionInfoPtr->cast_time == 0 ) - return false; + return actionInfoPtr->cast_time != 0; - return true; } bool Core::Entity::Player::hasStateFlag( Core::Common::PlayerStateFlag flag ) const @@ -1075,7 +1073,7 @@ void Core::Entity::Player::update( int64_t currTime ) if( Math::Util::distance(getPos().x, getPos().y, getPos().z, - actor->getPos().x, actor->getPos().y, actor->getPos().z) <= range ) + actor->getPos().x, actor->getPos().y, actor->getPos().z) <= range ) { if( ( currTime - m_lastAttack ) > mainWeap->getDelay() ) @@ -1136,57 +1134,57 @@ uint8_t Core::Entity::Player::getHomepoint() const return m_homePoint; } -uint16_t * Core::Entity::Player::getClassArray() +uint16_t* Core::Entity::Player::getClassArray() { return m_classArray; } -const uint16_t * Core::Entity::Player::getClassArray() const +const uint16_t* Core::Entity::Player::getClassArray() const { return m_classArray; } -const uint8_t * Core::Entity::Player::getLookArray() const +const uint8_t* Core::Entity::Player::getLookArray() const { return m_customize; } -const uint32_t * Core::Entity::Player::getModelArray() const +const uint32_t* Core::Entity::Player::getModelArray() const { return m_modelEquip; } -uint32_t * Core::Entity::Player::getExpArray() +uint32_t* Core::Entity::Player::getExpArray() { return m_expArray; } -const uint32_t * Core::Entity::Player::getExpArray() const +const uint32_t* Core::Entity::Player::getExpArray() const { return m_expArray; } -uint8_t * Core::Entity::Player::getHowToArray() +uint8_t* Core::Entity::Player::getHowToArray() { return m_howTo; } -const uint8_t * Core::Entity::Player::getHowToArray() const +const uint8_t* Core::Entity::Player::getHowToArray() const { return m_howTo; } -const uint8_t * Core::Entity::Player::getUnlockBitmask() const +const uint8_t* Core::Entity::Player::getUnlockBitmask() const { return m_unlocks; } -const uint8_t * Core::Entity::Player::getOrchestrionBitmask() const +const uint8_t* Core::Entity::Player::getOrchestrionBitmask() const { return m_orchestrion; } -const uint8_t * Core::Entity::Player::getMountGuideBitmask() const +const uint8_t* Core::Entity::Player::getMountGuideBitmask() const { return m_mountGuide; } @@ -1206,7 +1204,7 @@ uint8_t Core::Entity::Player::getGc() const return m_gc; } -const uint8_t * Core::Entity::Player::getGcRankArray() const +const uint8_t* Core::Entity::Player::getGcRankArray() const { return m_gcRank; } diff --git a/src/servers/Server_Zone/Network/Handlers/GMCommandHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/GMCommandHandlers.cpp index e9a49c16..22bbba5d 100644 --- a/src/servers/Server_Zone/Network/Handlers/GMCommandHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/GMCommandHandlers.cpp @@ -113,7 +113,8 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac { targetActor = pPlayer; } - else { + else + { auto inRange = pPlayer->getInRangeActors(); for( auto actor : inRange ) { From 4d47ed478bfb691b9bf9021dd2c65eacba7e9f83 Mon Sep 17 00:00:00 2001 From: Mordred Admin Date: Fri, 8 Dec 2017 11:46:47 +0100 Subject: [PATCH 15/25] Greatly reduced usage of smart pointers to remove overhead from needlesly increasing reference count all the time --- src/servers/Server_Zone/Action/ActionCast.cpp | 2 +- src/servers/Server_Zone/Actor/BattleNpc.cpp | 2 +- src/servers/Server_Zone/Actor/Player.cpp | 16 +- .../Server_Zone/DebugCommand/DebugCommand.h | 5 +- .../DebugCommand/DebugCommandHandler.cpp | 203 +++++++++--------- .../DebugCommand/DebugCommandHandler.h | 28 +-- .../Server_Zone/Network/GameConnection.cpp | 14 +- .../Server_Zone/Network/GameConnection.h | 14 +- .../Network/Handlers/ActionHandler.cpp | 84 ++++---- .../Network/Handlers/CFHandlers.cpp | 32 +-- .../Network/Handlers/EventHandlers.cpp | 46 ++-- .../Network/Handlers/GMCommandHandlers.cpp | 134 ++++++------ .../Network/Handlers/InventoryHandler.cpp | 12 +- .../Network/Handlers/PacketHandlers.cpp | 203 +++++++++--------- .../Network/Handlers/SkillHandler.cpp | 48 ++--- .../Network/PacketWrappers/ChatPacket.h | 10 +- .../Network/PacketWrappers/InitUIPacket.h | 48 ++--- .../Network/PacketWrappers/ModelEquipPacket.h | 22 +- .../Network/PacketWrappers/MoveActorPacket.h | 16 +- .../Network/PacketWrappers/PingPacket.h | 8 +- .../PacketWrappers/PlayerSpawnPacket.h | 82 +++---- .../PacketWrappers/PlayerStateFlagsPacket.h | 12 +- .../Server_Zone/Script/ScriptManager.cpp | 136 ++++++------ .../Server_Zone/Script/ScriptManager.h | 22 +- src/servers/Server_Zone/Zone/Zone.cpp | 10 +- src/servers/Server_Zone/Zone/Zone.h | 2 +- 26 files changed, 601 insertions(+), 610 deletions(-) diff --git a/src/servers/Server_Zone/Action/ActionCast.cpp b/src/servers/Server_Zone/Action/ActionCast.cpp index b9fcbcd2..d322bd29 100644 --- a/src/servers/Server_Zone/Action/ActionCast.cpp +++ b/src/servers/Server_Zone/Action/ActionCast.cpp @@ -76,7 +76,7 @@ void Core::Action::ActionCast::onFinish() 0x219, m_id, m_id, m_id, m_id ); m_pSource->sendToInRangeSet( control, true );*/ - g_scriptMgr.onCastFinish( pPlayer, m_pTarget, m_id ); + g_scriptMgr.onCastFinish( *pPlayer, m_pTarget, m_id ); } void Core::Action::ActionCast::onInterrupt() diff --git a/src/servers/Server_Zone/Actor/BattleNpc.cpp b/src/servers/Server_Zone/Actor/BattleNpc.cpp index 17160397..f1781397 100644 --- a/src/servers/Server_Zone/Actor/BattleNpc.cpp +++ b/src/servers/Server_Zone/Actor/BattleNpc.cpp @@ -234,7 +234,7 @@ void Core::Entity::BattleNpc::setOwner( Core::Entity::PlayerPtr pPlayer ) void Core::Entity::BattleNpc::sendPositionUpdate() { - MoveActorPacket movePacket( shared_from_this(), 0x3A, 0x00, 0, 0x5A ); + MoveActorPacket movePacket( *this, 0x3A, 0x00, 0, 0x5A ); sendToInRangeSet( movePacket ); } diff --git a/src/servers/Server_Zone/Actor/Player.cpp b/src/servers/Server_Zone/Actor/Player.cpp index 5feb823f..de5df165 100644 --- a/src/servers/Server_Zone/Actor/Player.cpp +++ b/src/servers/Server_Zone/Actor/Player.cpp @@ -419,7 +419,7 @@ void Core::Entity::Player::setZone( uint32_t zoneId ) } queuePacket( contentFinderList ); - Server::InitUIPacket initUIPacket( pPlayer ); + Server::InitUIPacket initUIPacket( *pPlayer ); queuePacket( initUIPacket ); ZoneChannelPacket< FFXIVIpcPlayerClassInfo > classInfoPacket( getId() ); @@ -707,7 +707,7 @@ void Core::Entity::Player::gainLevel() void Core::Entity::Player::unlock() { - queuePacket( PlayerStateFlagsPacket( getAsPlayer(), PlayerStateFlagList{} ) ); + queuePacket( PlayerStateFlagsPacket( *getAsPlayer(), PlayerStateFlagList{} ) ); } void Core::Entity::Player::sendStatusUpdate( bool toSelf ) @@ -809,7 +809,7 @@ void Core::Entity::Player::setLevelForClass( uint8_t level, Core::Common::ClassJ void Core::Entity::Player::sendModel() { - ModelEquipPacket modelEquip( getAsPlayer() ); + ModelEquipPacket modelEquip( *getAsPlayer() ); sendToInRangeSet( modelEquip, true ); } @@ -877,7 +877,7 @@ void Core::Entity::Player::spawn( Core::Entity::PlayerPtr pTarget ) getName() + " for " + pTarget->getName() ); - PlayerSpawnPacket spawnActor( getAsPlayer(), pTarget ); + PlayerSpawnPacket spawnActor( *getAsPlayer(), *pTarget ); pTarget->queuePacket( spawnActor ); } @@ -996,7 +996,7 @@ void Core::Entity::Player::setStateFlags( std::vector< Common::PlayerStateFlag > void Core::Entity::Player::sendStateFlags() { - queuePacket( PlayerStateFlagsPacket( getAsPlayer() ) ); + queuePacket( PlayerStateFlagsPacket( *getAsPlayer() ) ); } void Core::Entity::Player::unsetStateFlag( Core::Common::PlayerStateFlag flag ) @@ -1099,7 +1099,7 @@ void Core::Entity::Player::update( int64_t currTime ) void Core::Entity::Player::onMobKill( uint16_t nameId ) { - g_scriptMgr.onMobKill( getAsPlayer(), nameId ); + g_scriptMgr.onMobKill( *getAsPlayer(), nameId ); } void Core::Entity::Player::freePlayerSpawnId( uint32_t actorId ) @@ -1300,12 +1300,12 @@ void Core::Entity::Player::sendNotice( const std::string& message ) //Purple Tex void Core::Entity::Player::sendUrgent( const std::string& message ) //Red Text { - queuePacket( ChatPacket( getAsPlayer(), ChatType::ServerUrgent, message ) ); + queuePacket( ChatPacket( *getAsPlayer(), ChatType::ServerUrgent, message ) ); } void Core::Entity::Player::sendDebug( const std::string& message ) //Grey Text { - queuePacket( ChatPacket( getAsPlayer(), ChatType::ServerDebug, message ) ); + queuePacket( ChatPacket( *getAsPlayer(), ChatType::ServerDebug, message ) ); } void Core::Entity::Player::updateHowtosSeen( uint32_t howToId ) diff --git a/src/servers/Server_Zone/DebugCommand/DebugCommand.h b/src/servers/Server_Zone/DebugCommand/DebugCommand.h index e76b1986..36036349 100644 --- a/src/servers/Server_Zone/DebugCommand/DebugCommand.h +++ b/src/servers/Server_Zone/DebugCommand/DebugCommand.h @@ -10,14 +10,11 @@ namespace Core { class DebugCommandHandler; - // CGameCommand is used to define in game text command callbacks - // TODO it should probably be renamed to something more intuitive - // TODO the command identifier, currently '@' should probably be defined in here aswell so it is easily replaced class DebugCommand { public: - using pFunc = void ( DebugCommandHandler::* )( char *, Entity::PlayerPtr, boost::shared_ptr< DebugCommand > ); + using pFunc = void ( DebugCommandHandler::* )( char *, Entity::Player&, boost::shared_ptr< DebugCommand > ); // String for the command std::string m_commandName; diff --git a/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp b/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp index f769166b..ebcef25d 100644 --- a/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp +++ b/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp @@ -64,17 +64,17 @@ Core::DebugCommandHandler::~DebugCommandHandler() // add a command set to the register map void Core::DebugCommandHandler::registerCommand( const std::string& n, Core::DebugCommand::pFunc functionPtr, - const std::string& hText, uint8_t uLevel ) + const std::string& hText, uint8_t uLevel ) { - m_commandMap[std::string( n )] = boost::make_shared( n, functionPtr, hText, uLevel ); + m_commandMap[std::string( n )] = boost::make_shared< DebugCommand >( n, functionPtr, hText, uLevel ); } // try to retrieve the command in question, execute if found -void Core::DebugCommandHandler::execCommand( char * data, Core::Entity::PlayerPtr pPlayer ) +void Core::DebugCommandHandler::execCommand( char * data, Core::Entity::Player& player ) { // define callback pointer - void ( DebugCommandHandler::*pf )( char *, Entity::PlayerPtr, boost::shared_ptr< DebugCommand > ); + void ( DebugCommandHandler::*pf )( char *, Entity::Player&, boost::shared_ptr< DebugCommand > ); std::string commandString; @@ -94,18 +94,18 @@ void Core::DebugCommandHandler::execCommand( char * data, Core::Entity::PlayerPt if( it == m_commandMap.end() ) // no command found, do something... or not - pPlayer->sendUrgent( "Command not found." ); + player.sendUrgent( "Command not found." ); else { - if( pPlayer->getGmRank() < it->second->getRequiredGmLevel() ) + if( player.getGmRank() < it->second->getRequiredGmLevel() ) { - pPlayer->sendUrgent( "You are not allowed to use this command." ); + player.sendUrgent( "You are not allowed to use this command." ); return; } // command found, call the callback function and pass parameters if present. pf = ( *it ).second->m_pFunc; - ( this->*pf )( data, pPlayer, ( *it ).second ); + ( this->*pf )( data, player, ( *it ).second ); return; } @@ -117,26 +117,26 @@ void Core::DebugCommandHandler::execCommand( char * data, Core::Entity::PlayerPt // Definition of the commands /////////////////////////////////////////////////////////////////////////////////////// -void Core::DebugCommandHandler::scriptReload( char * data, Core::Entity::PlayerPtr pPlayer, - boost::shared_ptr command ) +void Core::DebugCommandHandler::scriptReload( char * data, Core::Entity::Player& player, + boost::shared_ptr command ) { g_scriptMgr.reload(); - pPlayer->sendDebug( "Scripts reloaded." ); + player.sendDebug( "Scripts reloaded." ); } -void Core::DebugCommandHandler::help( char* data, Entity::PlayerPtr pPlayer, boost::shared_ptr< Core::DebugCommand > command ) +void Core::DebugCommandHandler::help( char* data, Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) { - pPlayer->sendDebug( "Registered debug commands:" ); + player.sendDebug( "Registered debug commands:" ); for ( auto cmd : m_commandMap ) { - if ( pPlayer->getGmRank( ) >= cmd.second->m_gmLevel ) + if ( player.getGmRank( ) >= cmd.second->m_gmLevel ) { - pPlayer->sendDebug( " - " + cmd.first + " - " + cmd.second->getHelpText( ) ); + player.sendDebug( " - " + cmd.first + " - " + cmd.second->getHelpText( ) ); } } } -void Core::DebugCommandHandler::set( char * data, Core::Entity::PlayerPtr pPlayer, boost::shared_ptr command ) +void Core::DebugCommandHandler::set( char * data, Core::Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) { std::string subCommand = ""; std::string params = ""; @@ -156,7 +156,7 @@ void Core::DebugCommandHandler::set( char * data, Core::Entity::PlayerPtr pPlaye if( command->getName().length() + 1 + pos + 1 < strlen( data ) ) params = std::string( data + command->getName().length() + 1 + pos + 1 ); - g_log.debug( "[" + std::to_string( pPlayer->getId() ) + "] " + + g_log.debug( "[" + std::to_string( player.getId() ) + "] " + "subCommand " + subCommand + " params: " + params ); @@ -170,25 +170,25 @@ void Core::DebugCommandHandler::set( char * data, Core::Entity::PlayerPtr pPlaye if( ( posX == 0xcccccccc ) || ( posY == 0xcccccccc ) || ( posZ == 0xcccccccc ) ) { - pPlayer->sendUrgent( "Syntaxerror." ); + player.sendUrgent( "Syntaxerror." ); return; } if( subCommand == "pos" ) - pPlayer->setPosition( static_cast< float >( posX ), - static_cast< float >( posY ), - static_cast< float >( posZ ) ); + player.setPosition( static_cast< float >( posX ), + static_cast< float >( posY ), + static_cast< float >( posZ ) ); else - pPlayer->setPosition( pPlayer->getPos().x + static_cast< float >( posX ), - pPlayer->getPos().y + static_cast< float >( posY ), - pPlayer->getPos().z + static_cast< float >( posZ ) ); + player.setPosition( player.getPos().x + static_cast< float >( posX ), + player.getPos().y + static_cast< float >( posY ), + player.getPos().z + static_cast< float >( posZ ) ); Network::Packets::ZoneChannelPacket< Network::Packets::Server::FFXIVIpcActorSetPos > - setActorPosPacket( pPlayer->getId() ); - setActorPosPacket.data().x = pPlayer->getPos().x; - setActorPosPacket.data().y = pPlayer->getPos().y; - setActorPosPacket.data().z = pPlayer->getPos().z; - pPlayer->queuePacket( setActorPosPacket ); + setActorPosPacket( player.getId() ); + setActorPosPacket.data().x = player.getPos().x; + setActorPosPacket.data().y = player.getPos().y; + setActorPosPacket.data().z = player.getPos().z; + player.queuePacket( setActorPosPacket ); } else if( ( subCommand == "tele" ) && ( params != "" ) ) @@ -196,7 +196,7 @@ void Core::DebugCommandHandler::set( char * data, Core::Entity::PlayerPtr pPlaye int32_t aetheryteId; sscanf( params.c_str(), "%i", &aetheryteId ); - pPlayer->teleport( aetheryteId ); + player.teleport( aetheryteId ); } else if( ( subCommand == "discovery" ) && ( params != "" ) ) { @@ -204,10 +204,10 @@ void Core::DebugCommandHandler::set( char * data, Core::Entity::PlayerPtr pPlaye int32_t discover_id; sscanf( params.c_str(), "%i %i", &map_id, &discover_id ); - Network::Packets::ZoneChannelPacket< Network::Packets::Server::FFXIVIpcDiscovery > discoveryPacket( pPlayer->getId() ); + Network::Packets::ZoneChannelPacket< Network::Packets::Server::FFXIVIpcDiscovery > discoveryPacket( player.getId() ); discoveryPacket.data().map_id = map_id; discoveryPacket.data().map_part_id = discover_id; - pPlayer->queuePacket( discoveryPacket ); + player.queuePacket( discoveryPacket ); } else if( ( subCommand == "discovery_pos" ) && ( params != "" ) ) @@ -231,8 +231,8 @@ void Core::DebugCommandHandler::set( char * data, Core::Entity::PlayerPtr pPlaye else if( subCommand == "discovery_reset" ) { - pPlayer->resetDiscovery(); - pPlayer->queuePacket( Network::Packets::Server::InitUIPacket( pPlayer ) ); + player.resetDiscovery(); + player.queuePacket( Network::Packets::Server::InitUIPacket( player ) ); } else if( subCommand == "classjob" ) { @@ -240,28 +240,28 @@ void Core::DebugCommandHandler::set( char * data, Core::Entity::PlayerPtr pPlaye sscanf( params.c_str(), "%d", &id ); - if( pPlayer->getLevelForClass( static_cast ( id ) ) == 0 ) + if( player.getLevelForClass( static_cast ( id ) ) == 0 ) { - pPlayer->setLevelForClass( 1, static_cast ( id ) ); - pPlayer->setClassJob( static_cast ( id ) ); + player.setLevelForClass( 1, static_cast ( id ) ); + player.setClassJob( static_cast ( id ) ); } else - pPlayer->setClassJob( static_cast ( id ) ); + player.setClassJob( static_cast ( id ) ); } else if ( subCommand == "cfpenalty" ) { int32_t minutes; sscanf( params.c_str(), "%d", &minutes ); - pPlayer->setCFPenaltyMinutes( minutes ); + player.setCFPenaltyMinutes( minutes ); } else if ( subCommand == "eorzeatime" ) { uint64_t timestamp; sscanf( params.c_str(), "%" SCNu64, ×tamp ); - pPlayer->setEorzeaTimeOffset( timestamp ); - pPlayer->sendNotice( "Eorzea time offset: " + std::to_string( timestamp ) ); + player.setEorzeaTimeOffset( timestamp ); + player.sendNotice( "Eorzea time offset: " + std::to_string( timestamp ) ); } else if ( subCommand == "model" ) { @@ -269,26 +269,26 @@ void Core::DebugCommandHandler::set( char * data, Core::Entity::PlayerPtr pPlaye uint32_t val; sscanf( params.c_str(), "%d %d", &slot, &val ); - pPlayer->setModelForSlot( static_cast( slot ), val ); - pPlayer->sendModel(); - pPlayer->sendDebug( "Model updated" ); + player.setModelForSlot( static_cast( slot ), val ); + player.sendModel(); + player.sendDebug( "Model updated" ); } else if ( subCommand == "mount" ) { int32_t id; sscanf( params.c_str(), "%d", &id ); - pPlayer->dismount(); - pPlayer->mount( id ); + player.dismount(); + player.mount( id ); } else { - pPlayer->sendUrgent( subCommand + " is not a valid SET command." ); + player.sendUrgent( subCommand + " is not a valid SET command." ); } } -void Core::DebugCommandHandler::add( char * data, Core::Entity::PlayerPtr pPlayer, boost::shared_ptr command ) +void Core::DebugCommandHandler::add( char * data, Core::Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) { std::string subCommand; std::string params = ""; @@ -311,7 +311,7 @@ void Core::DebugCommandHandler::add( char * data, Core::Entity::PlayerPtr pPlaye if( command->getName().length() + 1 + pos + 1 < strlen( data ) ) params = std::string( data + command->getName().length() + 1 + pos + 1 ); - g_log.debug( "[" + std::to_string( pPlayer->getId() ) + "] " + + g_log.debug( "[" + std::to_string( player.getId() ) + "] " + "subCommand " + subCommand + " params: " + params ); @@ -323,18 +323,18 @@ void Core::DebugCommandHandler::add( char * data, Core::Entity::PlayerPtr pPlaye sscanf( params.c_str(), "%d %d %hu", &id, &duration, ¶m ); - StatusEffect::StatusEffectPtr effect( new StatusEffect::StatusEffect( id, pPlayer, pPlayer, duration, 3000 ) ); + StatusEffect::StatusEffectPtr effect( new StatusEffect::StatusEffect( id, player.getAsPlayer(), player.getAsPlayer(), duration, 3000 ) ); effect->setParam( param ); - pPlayer->addStatusEffect( effect ); + player.addStatusEffect( effect ); } else if ( subCommand == "title" ) { uint32_t titleId; sscanf( params.c_str(), "%u", &titleId ); - pPlayer->addTitle( titleId ); - pPlayer->sendNotice( "Added title (ID: " + std::to_string( titleId ) + ")" ); + player.addTitle( titleId ); + player.sendNotice( "Added title (ID: " + std::to_string( titleId ) + ")" ); } else if( subCommand == "spawn" ) { @@ -342,9 +342,9 @@ void Core::DebugCommandHandler::add( char * data, Core::Entity::PlayerPtr pPlaye sscanf( params.c_str(), "%d %d", &model, &name ); - Entity::BattleNpcPtr pBNpc( new Entity::BattleNpc( model, name, pPlayer->getPos() ) ); + Entity::BattleNpcPtr pBNpc( new Entity::BattleNpc( model, name, player.getPos() ) ); - auto pZone = pPlayer->getCurrentZone(); + auto pZone = player.getCurrentZone(); pBNpc->setCurrentZone( pZone ); pZone->pushActor( pBNpc ); @@ -354,8 +354,8 @@ void Core::DebugCommandHandler::add( char * data, Core::Entity::PlayerPtr pPlaye // temporary research packet int32_t opcode; sscanf( params.c_str(), "%x", &opcode ); - Network::Packets::GamePacketPtr pPe( new Network::Packets::GamePacket( opcode, 0x30, pPlayer->getId(), pPlayer->getId() ) ); - pPlayer->queuePacket( pPe ); + Network::Packets::GamePacketPtr pPe( new Network::Packets::GamePacket( opcode, 0x30, player.getId(), player.getId() ) ); + player.queuePacket( pPe ); } else if( subCommand == "actrl" ) { @@ -373,9 +373,9 @@ void Core::DebugCommandHandler::add( char * data, Core::Entity::PlayerPtr pPlaye sscanf( params.c_str(), "%x %x %x %x %x %x %x %x", &opcode, ¶m1, ¶m2, ¶m3, ¶m4, ¶m5, ¶m6, &playerId ); - pPlayer->sendNotice( "Injecting ACTOR_CONTROL " + std::to_string( opcode ) ); + player.sendNotice( "Injecting ACTOR_CONTROL " + std::to_string( opcode ) ); - Network::Packets::ZoneChannelPacket< Network::Packets::Server::FFXIVIpcActorControl143 > actorControl( playerId, pPlayer->getId() ); + Network::Packets::ZoneChannelPacket< Network::Packets::Server::FFXIVIpcActorControl143 > actorControl( playerId, player.getId() ); actorControl.data().category = opcode; actorControl.data().param1 = param1; actorControl.data().param2 = param2; @@ -383,29 +383,29 @@ void Core::DebugCommandHandler::add( char * data, Core::Entity::PlayerPtr pPlaye actorControl.data().param4 = param4; actorControl.data().param5 = param5; actorControl.data().param6 = param6; - pPlayer->queuePacket( actorControl ); + player.queuePacket( actorControl ); /*sscanf(params.c_str(), "%x %x %x %x %x %x %x", &opcode, ¶m1, ¶m2, ¶m3, ¶m4, ¶m5, ¶m6, &playerId); - Network::Packets::Server::ServerNoticePacket noticePacket(pPlayer, "Injecting ACTOR_CONTROL " + std::to_string(opcode)); + Network::Packets::Server::ServerNoticePacket noticePacket( player, "Injecting ACTOR_CONTROL " + std::to_string( opcode ) ); - pPlayer->queuePacket(noticePacket); + player.queuePacket(noticePacket); - Network::Packets::Server::ActorControlPacket143 controlPacket(pPlayer, opcode, - param1, param2, param3, param4, param5, param6, playerId); - pPlayer->queuePacket(controlPacket);*/ + Network::Packets::Server::ActorControlPacket143 controlPacket( player, opcode, + param1, param2, param3, param4, param5, param6, playerId ); + player.queuePacket( controlPacket );*/ } else { - pPlayer->sendUrgent( subCommand + " is not a valid ADD command." ); + player.sendUrgent( subCommand + " is not a valid ADD command." ); } } -void Core::DebugCommandHandler::get( char * data, Core::Entity::PlayerPtr pPlayer, boost::shared_ptr command ) +void Core::DebugCommandHandler::get( char * data, Core::Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) { std::string subCommand; std::string params = ""; @@ -425,45 +425,45 @@ void Core::DebugCommandHandler::get( char * data, Core::Entity::PlayerPtr pPlaye if( command->getName().length() + 1 + pos + 1 < strlen( data ) ) params = std::string( data + command->getName().length() + 1 + pos + 1 ); - g_log.debug( "[" + std::to_string( pPlayer->getId() ) + "] " + + g_log.debug( "[" + std::to_string( player.getId() ) + "] " + "subCommand " + subCommand + " params: " + params ); if( ( subCommand == "pos" ) ) { - int16_t map_id = g_exdData.m_zoneInfoMap[pPlayer->getCurrentZone()->getId()].map_id; + int16_t map_id = g_exdData.m_zoneInfoMap[player.getCurrentZone()->getId()].map_id; - pPlayer->sendNotice( "Pos:\n" + - std::to_string( pPlayer->getPos().x ) + "\n" + - std::to_string( pPlayer->getPos().y ) + "\n" + - std::to_string( pPlayer->getPos().z ) + "\n" + - std::to_string( pPlayer->getRotation() ) + "\nMapId: " + - std::to_string( map_id ) + "\nZoneID: " + - std::to_string( pPlayer->getCurrentZone()->getId() ) + "\n" ); + player.sendNotice( "Pos:\n" + + std::to_string( player.getPos().x ) + "\n" + + std::to_string( player.getPos().y ) + "\n" + + std::to_string( player.getPos().z ) + "\n" + + std::to_string( player.getRotation() ) + "\nMapId: " + + std::to_string( map_id ) + "\nZoneID: " + + std::to_string( player.getCurrentZone()->getId() ) + "\n" ); } else { - pPlayer->sendUrgent( subCommand + " is not a valid GET command." ); + player.sendUrgent( subCommand + " is not a valid GET command." ); } } -void Core::DebugCommandHandler::injectPacket( char * data, Core::Entity::PlayerPtr pPlayer, boost::shared_ptr< Core::DebugCommand > command ) +void Core::DebugCommandHandler::injectPacket( char * data, Core::Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) { - auto pSession = g_serverZone.getSession( pPlayer->getId() ); + auto pSession = g_serverZone.getSession( player.getId() ); if( pSession ) - pSession->getZoneConnection()->injectPacket( data + 7, pPlayer ); + pSession->getZoneConnection()->injectPacket( data + 7, player ); } -void Core::DebugCommandHandler::injectChatPacket( char * data, Core::Entity::PlayerPtr pPlayer, boost::shared_ptr< Core::DebugCommand > command ) +void Core::DebugCommandHandler::injectChatPacket( char * data, Core::Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) { - auto pSession = g_serverZone.getSession( pPlayer->getId() ); + auto pSession = g_serverZone.getSession( player.getId() ); if( pSession ) - pSession->getChatConnection()->injectPacket( data + 8, pPlayer ); + pSession->getChatConnection()->injectPacket( data + 8, player ); } -void Core::DebugCommandHandler::nudge( char * data, Entity::PlayerPtr pPlayer, boost::shared_ptr command ) +void Core::DebugCommandHandler::nudge( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ) { std::string subCommand; @@ -472,7 +472,7 @@ void Core::DebugCommandHandler::nudge( char * data, Entity::PlayerPtr pPlayer, b std::size_t spos = tmpCommand.find_first_of( " " ); - auto& pos = pPlayer->getPos(); + auto& pos = player.getPos(); int32_t offset = 0; char direction[20]; @@ -480,45 +480,44 @@ void Core::DebugCommandHandler::nudge( char * data, Entity::PlayerPtr pPlayer, b sscanf( tmpCommand.c_str(), "%d %s", &offset, direction ); - if( direction[0] == 'u' || direction[0] == '+' ) { pos.y += offset; - pPlayer->sendNotice( "nudge: Placing up " + std::to_string( offset ) + " yalms" ); + player.sendNotice( "nudge: Placing up " + std::to_string( offset ) + " yalms" ); } else if( direction[0] == 'd' || direction[0] == '-' ) { pos.y -= offset; - pPlayer->sendNotice( "nudge: Placing down " + std::to_string( offset ) + " yalms" ); + player.sendNotice( "nudge: Placing down " + std::to_string( offset ) + " yalms" ); } else { - float angle = pPlayer->getRotation() + ( PI / 2 ); + float angle = player.getRotation() + ( PI / 2 ); pos.x -= offset * cos( angle ); pos.z += offset * sin( angle ); - pPlayer->sendNotice( "nudge: Placing forward " + std::to_string( offset ) + " yalms" ); + player.sendNotice( "nudge: Placing forward " + std::to_string( offset ) + " yalms" ); } if( offset != 0 ) { Network::Packets::ZoneChannelPacket< Network::Packets::Server::FFXIVIpcActorSetPos > - setActorPosPacket( pPlayer->getId() ); - setActorPosPacket.data().x = pPlayer->getPos().x; - setActorPosPacket.data().y = pPlayer->getPos().y; - setActorPosPacket.data().z = pPlayer->getPos().z; - setActorPosPacket.data().r16 = Math::Util::floatToUInt16Rot( pPlayer->getRotation() ); - pPlayer->queuePacket( setActorPosPacket ); + setActorPosPacket( player.getId() ); + setActorPosPacket.data().x = player.getPos().x; + setActorPosPacket.data().y = player.getPos().y; + setActorPosPacket.data().z = player.getPos().z; + setActorPosPacket.data().r16 = Math::Util::floatToUInt16Rot( player.getRotation() ); + player.queuePacket( setActorPosPacket ); } } -void Core::DebugCommandHandler::serverInfo( char * data, Core::Entity::PlayerPtr pPlayer, boost::shared_ptr< Core::DebugCommand > command ) +void Core::DebugCommandHandler::serverInfo( char * data, Core::Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) { - pPlayer->sendDebug( "SapphireServer " + Version::VERSION + "\nRev: " + Version::GIT_HASH ); - pPlayer->sendDebug( "Compiled: " __DATE__ " " __TIME__ ); - pPlayer->sendDebug( "Sessions: " + std::to_string( g_serverZone.getSessionCount() ) ); + player.sendDebug( "SapphireServer " + Version::VERSION + "\nRev: " + Version::GIT_HASH ); + player.sendDebug( "Compiled: " __DATE__ " " __TIME__ ); + player.sendDebug( "Sessions: " + std::to_string( g_serverZone.getSessionCount() ) ); } -void Core::DebugCommandHandler::unlockCharacter( char* data, Entity::PlayerPtr pPlayer, boost::shared_ptr< Core::DebugCommand > command ) +void Core::DebugCommandHandler::unlockCharacter( char* data, Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) { - pPlayer->unlock( ); + player.unlock( ); } diff --git a/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.h b/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.h index 17dc3258..0e17722e 100644 --- a/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.h +++ b/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.h @@ -15,7 +15,7 @@ class DebugCommandHandler { private: // container mapping command string to command object - std::map > m_commandMap; + std::map< std::string, boost::shared_ptr< DebugCommand > > m_commandMap; public: DebugCommandHandler(); @@ -25,25 +25,25 @@ public: void registerCommand( const std::string& n, DebugCommand::pFunc, const std::string& hText, uint8_t uLevel ); // execute command if registered - void execCommand( char * data, Entity::PlayerPtr pPlayer ); + void execCommand( char * data, Entity::Player& player ); // help command - void help( char* data, Entity::PlayerPtr pPlayer, boost::shared_ptr command ); + void help( char* data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ); // command handler callbacks - void set( char * data, Entity::PlayerPtr pPlayer, boost::shared_ptr command ); - void get( char * data, Entity::PlayerPtr pPlayer, boost::shared_ptr command ); - void add( char * data, Entity::PlayerPtr pPlayer, boost::shared_ptr command ); - //void debug( char * data, Entity::PlayerPtr pPlayer, boost::shared_ptr command ); - void scriptReload( char * data, Entity::PlayerPtr pPlayer, boost::shared_ptr command ); + void set( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ); + void get( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ); + void add( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ); + //void debug( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ); + void scriptReload( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ); - void injectPacket( char * data, Entity::PlayerPtr pPlayer, boost::shared_ptr command ); - void injectChatPacket( char * data, Entity::PlayerPtr pPlayer, boost::shared_ptr command ); - void nudge( char* data, Entity::PlayerPtr pPlayer, boost::shared_ptr command ); - void serverInfo( char * data, Entity::PlayerPtr pPlayer, boost::shared_ptr command ); + void injectPacket( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ); + void injectChatPacket( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ); + void nudge( char* data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ); + void serverInfo( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ); - void unlockCharacter( char* data, Entity::PlayerPtr pPlayer, boost::shared_ptr command ); - void targetInfo( char* data, Entity::PlayerPtr pPlayer, boost::shared_ptr command ); + void unlockCharacter( char* data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ); + void targetInfo( char* data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ); }; diff --git a/src/servers/Server_Zone/Network/GameConnection.cpp b/src/servers/Server_Zone/Network/GameConnection.cpp index 563feaa0..1b5c3360 100644 --- a/src/servers/Server_Zone/Network/GameConnection.cpp +++ b/src/servers/Server_Zone/Network/GameConnection.cpp @@ -133,8 +133,7 @@ void Core::Network::GameConnection::OnRecv( std::vector< uint8_t > & buffer ) Disconnect(); return; } - - if( headerResult == Malformed ) + else if( headerResult == Malformed ) { g_log.info( "Dropping connection due to malformed packet header." ); Disconnect(); @@ -153,8 +152,7 @@ void Core::Network::GameConnection::OnRecv( std::vector< uint8_t > & buffer ) Disconnect(); return; } - - if (packetResult == Malformed) + else if( packetResult == Malformed ) { g_log.info( "Dropping connection due to malformed packets." ); Disconnect(); @@ -198,7 +196,7 @@ void Core::Network::GameConnection::handleZonePacket( const Packets::GamePacket& boost::str( boost::format( "%|04X|" ) % static_cast< uint32_t >( pPacket.getSubType() & 0xFFFF ) ) + " )" ); - ( this->*( it->second ) )( pPacket, m_pSession->getPlayer() ); + ( this->*( it->second ) )( pPacket, *m_pSession->getPlayer() ); } else { @@ -226,7 +224,7 @@ void Core::Network::GameConnection::handleChatPacket( const Packets::GamePacket& boost::str( boost::format( "%|04X|" ) % static_cast< uint32_t >( pPacket.getSubType() & 0xFFFF ) ) + " )" ); - ( this->*( it->second ) )( pPacket, m_pSession->getPlayer() ); + ( this->*( it->second ) )( pPacket, *m_pSession->getPlayer() ); } else { @@ -309,7 +307,7 @@ void Core::Network::GameConnection::sendSinglePacket( Packets::GamePacket* pPack sendPackets( &pRP ); } -void Core::Network::GameConnection::injectPacket( const std::string& packetpath, Core::Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::injectPacket( const std::string& packetpath, Core::Entity::Player& pPlayer ) { char packet[0x11570]; @@ -338,7 +336,7 @@ void Core::Network::GameConnection::injectPacket( const std::string& packetpath, // cycle through the packet entries and queue each one for( int32_t k = 0x18; k < size; ) { - uint32_t tmpId = pPlayer->getId(); + uint32_t tmpId = pPlayer.getId(); // replace ids in the entryheader if needed if( !memcmp( packet + k + 0x04, packet + k + 0x08, 4 ) ) { diff --git a/src/servers/Server_Zone/Network/GameConnection.h b/src/servers/Server_Zone/Network/GameConnection.h index a1eeb5a6..f0136c3f 100644 --- a/src/servers/Server_Zone/Network/GameConnection.h +++ b/src/servers/Server_Zone/Network/GameConnection.h @@ -12,7 +12,7 @@ #include "src/servers/Server_Zone/Forwards.h" -#define DECLARE_HANDLER( x ) void x( const Packets::GamePacket& inPacket, Entity::PlayerPtr pPlayer ) +#define DECLARE_HANDLER( x ) void x( const Packets::GamePacket& inPacket, Entity::Player& player ) namespace Core { namespace Network { @@ -29,18 +29,18 @@ class GameConnection : public Connection { private: - typedef void ( GameConnection::* Handler )( const Packets::GamePacket& inPacket, Entity::PlayerPtr pPlayer ); + typedef void ( GameConnection::* Handler )( const Packets::GamePacket& inPacket, Entity::Player& player ); using HandlerMap = std::map< uint16_t, Handler >; using HandlerStrMap = std::map< uint16_t, std::string >; AcceptorPtr m_pAcceptor; - // handler for game packets (main type 0x03, connection type 1) + // handler for game packets ( main type 0x03, connection type 1 ) HandlerMap m_zoneHandlerMap; HandlerStrMap m_zoneHandlerStrMap; - // handler for game packets (main type 0x03, connection type 2) + // handler for game packets ( main type 0x03, connection type 2 ) HandlerMap m_chatHandlerMap; HandlerStrMap m_chatHandlerStrMap; @@ -80,11 +80,11 @@ public: void handleChatPacket( const Packets::GamePacket& pPacket ); - void sendPackets( Packets::PacketContainer * pPacket ); + void sendPackets( Packets::PacketContainer* pPacket ); - void sendSinglePacket( Packets::GamePacket * pPacket ); + void sendSinglePacket( Packets::GamePacket* pPacket ); - void injectPacket( const std::string& packetpath, Entity::PlayerPtr pPlayer ); + void injectPacket( const std::string& packetpath, Entity::Player& player ); DECLARE_HANDLER( initHandler ); DECLARE_HANDLER( finishLoadingHandler ); diff --git a/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp b/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp index 2acde44d..0bfc6364 100644 --- a/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp +++ b/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp @@ -46,7 +46,7 @@ using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { uint16_t commandId = inPacket.getValAt< uint16_t >( 0x20 ); uint64_t param1 = inPacket.getValAt< uint64_t >( 0x24 ); @@ -70,14 +70,14 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in case 0x01: // Toggle sheathe { if ( param11 == 1 ) - pPlayer->setStance( Entity::Actor::Stance::Active ); + player.setStance( Entity::Actor::Stance::Active ); else { - pPlayer->setStance( Entity::Actor::Stance::Passive ); - pPlayer->setAutoattack( false ); + player.setStance( Entity::Actor::Stance::Passive ); + player.setAutoattack( false ); } - pPlayer->sendToInRangeSet( ActorControlPacket142( pPlayer->getId(), 0, param11, 1 ) ); + player.sendToInRangeSet( ActorControlPacket142( player.getId(), 0, param11, 1 ) ); break; } @@ -85,13 +85,13 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in { if ( param11 == 1 ) { - pPlayer->setAutoattack( true ); - pPlayer->setStance( Entity::Actor::Stance::Active ); + player.setAutoattack( true ); + player.setStance( Entity::Actor::Stance::Active ); } else - pPlayer->setAutoattack( false ); + player.setAutoattack( false ); - pPlayer->sendToInRangeSet( ActorControlPacket142( pPlayer->getId(), 1, param11, 1 ) ); + player.sendToInRangeSet( ActorControlPacket142( player.getId(), 1, param11, 1 ) ); break; } @@ -99,51 +99,51 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in { uint64_t targetId = inPacket.getValAt< uint64_t >( 0x24 ); - pPlayer->changeTarget( targetId ); + player.changeTarget( targetId ); break; } case 0x65: { - pPlayer->dismount(); + player.dismount(); break; } case 0x68: // Remove status (clicking it off) { // todo: check if status can be removed by client from exd - pPlayer->removeSingleStatusEffectById( static_cast< uint32_t >( param1 ) ); + player.removeSingleStatusEffectById( static_cast< uint32_t >( param1 ) ); break; } case 0x69: // Cancel cast { - if( pPlayer->getCurrentAction() ) - pPlayer->getCurrentAction()->setInterrupted(); + if( player.getCurrentAction() ) + player.getCurrentAction()->setInterrupted(); break; } case 0x12E: // Set player title { - pPlayer->setTitle( static_cast< uint16_t >( param1 ) ); + player.setTitle( static_cast< uint16_t >( param1 ) ); break; } case 0x12F: // Get title list { - ZoneChannelPacket< FFXIVIpcPlayerTitleList > titleListPacket( pPlayer->getId() ); - memcpy( titleListPacket.data().titleList, pPlayer->getTitleList(), sizeof( titleListPacket.data().titleList ) ); + ZoneChannelPacket< FFXIVIpcPlayerTitleList > titleListPacket( player.getId() ); + memcpy( titleListPacket.data().titleList, player.getTitleList(), sizeof( titleListPacket.data().titleList ) ); - pPlayer->queuePacket( titleListPacket ); + player.queuePacket( titleListPacket ); break; } case 0x133: // Update howtos seen { uint32_t howToId = static_cast< uint32_t >( param1 ); - pPlayer->updateHowtosSeen( howToId ); + player.updateHowtosSeen( howToId ); break; } case 0x1F4: // emote { - uint64_t targetId = pPlayer->getTargetId(); + uint64_t targetId = player.getTargetId(); uint32_t emoteId = inPacket.getValAt< uint32_t >( 0x24 ); - pPlayer->sendToInRangeSet( ActorControlPacket144( pPlayer->getId(), Emote, emoteId, 0, 0, 0, targetId ) ); + player.sendToInRangeSet( ActorControlPacket144( player.getId(), Emote, emoteId, 0, 0, 0, targetId ) ); break; } case 0xC8: // return dead @@ -152,10 +152,10 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in { case ResurrectType::RaiseSpell: // todo: handle raise case (set position to raiser, apply weakness status, set hp/mp/tp as well as packet) - pPlayer->returnToHomepoint(); + player.returnToHomepoint(); break; case ResurrectType::Return: - pPlayer->returnToHomepoint(); + player.returnToHomepoint(); break; default: break; @@ -164,39 +164,39 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in } case 0xC9: // Finish zoning { - switch( pPlayer->getZoningType() ) + switch( player.getZoningType() ) { case ZoneingType::None: - pPlayer->sendToInRangeSet( ActorControlPacket143( pPlayer->getId(), ZoneIn, 0x01 ), true ); + player.sendToInRangeSet( ActorControlPacket143( player.getId(), ZoneIn, 0x01 ), true ); break; case ZoneingType::Teleport: - pPlayer->sendToInRangeSet( ActorControlPacket143( pPlayer->getId(), ZoneIn, 0x01, 0, 0, 110 ), true ); + player.sendToInRangeSet( ActorControlPacket143( player.getId(), ZoneIn, 0x01, 0, 0, 110 ), true ); break; case ZoneingType::Return: case ZoneingType::ReturnDead: { - if( pPlayer->getStatus() == Entity::Actor::ActorStatus::Dead ) + if( player.getStatus() == Entity::Actor::ActorStatus::Dead ) { - pPlayer->resetHp(); - pPlayer->resetMp(); - pPlayer->setStatus( Entity::Actor::ActorStatus::Idle ); + player.resetHp(); + player.resetMp(); + player.setStatus( Entity::Actor::ActorStatus::Idle ); - pPlayer->sendToInRangeSet( ActorControlPacket143( pPlayer->getId(), ZoneIn, 0x01, 0x01, 0, 111 ), true ); - pPlayer->sendToInRangeSet( ActorControlPacket142( pPlayer->getId(), SetStatus, static_cast< uint8_t >( Entity::Actor::ActorStatus::Idle ) ), true ); + player.sendToInRangeSet( ActorControlPacket143( player.getId(), ZoneIn, 0x01, 0x01, 0, 111 ), true ); + player.sendToInRangeSet( ActorControlPacket142( player.getId(), SetStatus, static_cast< uint8_t >( Entity::Actor::ActorStatus::Idle ) ), true ); } else - pPlayer->sendToInRangeSet( ActorControlPacket143( pPlayer->getId(), ZoneIn, 0x01, 0x00, 0, 111 ), true ); + player.sendToInRangeSet( ActorControlPacket143( player.getId(), ZoneIn, 0x01, 0x00, 0, 111 ), true ); } break; case ZoneingType::FadeIn: break; } - pPlayer->setZoningType( Common::ZoneingType::None ); + player.setZoningType( Common::ZoneingType::None ); - pPlayer->unsetStateFlag( PlayerStateFlag::BetweenAreas ); - pPlayer->unsetStateFlag( PlayerStateFlag::BetweenAreas1 ); - pPlayer->sendStateFlags(); + player.unsetStateFlag( PlayerStateFlag::BetweenAreas ); + player.unsetStateFlag( PlayerStateFlag::BetweenAreas1 ); + player.sendStateFlags(); break; } @@ -207,7 +207,7 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in if( targetAetheryte ) { - auto fromAetheryte = g_exdData.getAetheryteInfo( g_exdData.m_zoneInfoMap[pPlayer->getZoneId()].aetheryte_index ); + auto fromAetheryte = g_exdData.getAetheryteInfo( g_exdData.m_zoneInfoMap[player.getZoneId()].aetheryte_index ); // calculate cost - does not apply for favorite points or homepoints neither checks for aether tickets auto cost = static_cast< uint16_t > ( ( sqrt( pow( fromAetheryte->map_coord_x - targetAetheryte->map_coord_x, 2 ) + @@ -216,14 +216,14 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in // cap at 999 gil cost = cost > uint16_t{999} ? uint16_t{999} : cost; - bool insufficientGil = pPlayer->getCurrency( Inventory::CurrencyType::Gil ) < cost; + bool insufficientGil = player.getCurrency( Inventory::CurrencyType::Gil ) < cost; // todo: figure out what param1 really does - pPlayer->queuePacket( ActorControlPacket143( pPlayer->getId(), TeleportStart, insufficientGil ? 2 : 0, param11 ) ); + player.queuePacket( ActorControlPacket143( player.getId(), TeleportStart, insufficientGil ? 2 : 0, param11 ) ); if( !insufficientGil ) { - Action::ActionTeleportPtr pActionTeleport( new Action::ActionTeleport( pPlayer, param11, cost ) ); - pPlayer->setCurrentAction( pActionTeleport ); + Action::ActionTeleportPtr pActionTeleport( new Action::ActionTeleport( player.getAsPlayer(), param11, cost ) ); + player.setCurrentAction( pActionTeleport ); } } break; diff --git a/src/servers/Server_Zone/Network/Handlers/CFHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/CFHandlers.cpp index 9f9a2b9e..d70e7f81 100644 --- a/src/servers/Server_Zone/Network/Handlers/CFHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/CFHandlers.cpp @@ -25,11 +25,11 @@ using namespace Core::Network::Packets::Server; void Core::Network::GameConnection::cfDutyInfoRequest( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { - ZoneChannelPacket< FFXIVIpcCFDutyInfo > dutyInfoPacket( pPlayer->getId() ); + ZoneChannelPacket< FFXIVIpcCFDutyInfo > dutyInfoPacket( player.getId() ); - auto penaltyMinutes = pPlayer->getCFPenaltyMinutes(); + auto penaltyMinutes = player.getCFPenaltyMinutes(); if (penaltyMinutes > 255) { // cap it since it's uint8_t in packets @@ -39,13 +39,13 @@ void Core::Network::GameConnection::cfDutyInfoRequest( const Packets::GamePacket queueOutPacket( dutyInfoPacket ); - ZoneChannelPacket< FFXIVIpcCFPlayerInNeed > inNeedsPacket( pPlayer->getId() ); + ZoneChannelPacket< FFXIVIpcCFPlayerInNeed > inNeedsPacket( player.getId() ); queueOutPacket( inNeedsPacket ); } void Core::Network::GameConnection::cfRegisterDuty( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer) + Entity::Player& player) { // TODO use for loop for this auto contentId1 = inPacket.getValAt< uint16_t >( 46 ); @@ -54,28 +54,28 @@ void Core::Network::GameConnection::cfRegisterDuty( const Packets::GamePacket& i auto contentId4 = inPacket.getValAt< uint16_t >( 52 ); auto contentId5 = inPacket.getValAt< uint16_t >( 54 ); - pPlayer->sendDebug("Duty register request"); - pPlayer->sendDebug("ContentId1" + std::to_string(contentId1)); - pPlayer->sendDebug("ContentId2" + std::to_string(contentId2)); - pPlayer->sendDebug("ContentId3" + std::to_string(contentId3)); - pPlayer->sendDebug("ContentId4" + std::to_string(contentId4)); - pPlayer->sendDebug("ContentId5" + std::to_string(contentId5)); + player.sendDebug("Duty register request"); + player.sendDebug("ContentId1" + std::to_string(contentId1)); + player.sendDebug("ContentId2" + std::to_string(contentId2)); + player.sendDebug("ContentId3" + std::to_string(contentId3)); + player.sendDebug("ContentId4" + std::to_string(contentId4)); + player.sendDebug("ContentId5" + std::to_string(contentId5)); // let's cancel it because otherwise you can't register it again - ZoneChannelPacket< FFXIVIpcCFNotify > cfCancelPacket( pPlayer->getId() ); + ZoneChannelPacket< FFXIVIpcCFNotify > cfCancelPacket( player.getId() ); cfCancelPacket.data().state1 = 3; cfCancelPacket.data().state2 = 1; // Your registration is withdrawn. queueOutPacket( cfCancelPacket ); } void Core::Network::GameConnection::cfRegisterRoulette( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer) + Entity::Player& player) { - pPlayer->sendDebug("Roulette register"); + player.sendDebug("Roulette register"); } void Core::Network::GameConnection::cfDutyAccepted( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer) + Entity::Player& player) { - pPlayer->sendDebug("TODO: Duty accept"); + player.sendDebug("TODO: Duty accept"); } diff --git a/src/servers/Server_Zone/Network/Handlers/EventHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/EventHandlers.cpp index aa8173db..dad05a96 100644 --- a/src/servers/Server_Zone/Network/Handlers/EventHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/EventHandlers.cpp @@ -27,22 +27,22 @@ using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; void Core::Network::GameConnection::eventHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { uint16_t eventHandlerId = inPacket.getValAt< uint16_t >( 0x12 ); // we need to abort the event in case it has not been scripted so the player wont be locked up - auto abortEventFunc = []( Core::Entity::PlayerPtr pPlayer, uint64_t actorId, uint32_t eventId ) + auto abortEventFunc = []( Core::Entity::Player& player, uint64_t actorId, uint32_t eventId ) { - pPlayer->queuePacket( EventStartPacket( pPlayer->getId(), actorId, eventId, 1, 0, 0 ) ); - pPlayer->queuePacket( EventFinishPacket( pPlayer->getId(), eventId, 1, 0 ) ); + player.queuePacket( EventStartPacket( player.getId(), actorId, eventId, 1, 0, 0 ) ); + player.queuePacket( EventFinishPacket( player.getId(), eventId, 1, 0 ) ); // this isn't ideal as it will also reset any other status that might be active - pPlayer->queuePacket( PlayerStateFlagsPacket( pPlayer, PlayerStateFlagList{} ) ); + player.queuePacket( PlayerStateFlagsPacket( player, PlayerStateFlagList{} ) ); }; std::string eventIdStr = boost::str( boost::format( "%|04X|" ) % static_cast< uint32_t >( eventHandlerId & 0xFFFF ) ); - pPlayer->sendDebug( "---------------------------------------" ); - pPlayer->sendDebug( "EventHandler ( " + eventIdStr + " )" ); + player.sendDebug( "---------------------------------------" ); + player.sendDebug( "EventHandler ( " + eventIdStr + " )" ); switch( eventHandlerId ) { @@ -52,8 +52,8 @@ void Core::Network::GameConnection::eventHandler( const Packets::GamePacket& inP uint64_t actorId = inPacket.getValAt< uint64_t >( 0x20 ); uint32_t eventId = inPacket.getValAt< uint32_t >( 0x28 ); - if( !g_scriptMgr.onTalk( pPlayer, actorId, eventId ) ) - abortEventFunc( pPlayer, actorId, eventId ); + if( !g_scriptMgr.onTalk( player, actorId, eventId ) ) + abortEventFunc( player, actorId, eventId ); break; } @@ -65,8 +65,8 @@ void Core::Network::GameConnection::eventHandler( const Packets::GamePacket& inP std::string eventName = Event::getEventName( eventId ); - if( !g_scriptMgr.onEmote( pPlayer, actorId, eventId, static_cast< uint8_t >( emoteId ) ) ) - abortEventFunc( pPlayer, actorId, eventId ); + if( !g_scriptMgr.onEmote( player, actorId, eventId, static_cast< uint8_t >( emoteId ) ) ) + abortEventFunc( player, actorId, eventId ); break; } @@ -81,8 +81,8 @@ void Core::Network::GameConnection::eventHandler( const Packets::GamePacket& inP std::string eventName = Event::getEventName( eventId ); - if( !g_scriptMgr.onWithinRange( pPlayer, eventId, eventParam1, x, y, z ) ) - abortEventFunc( pPlayer, 0, eventId ); + if( !g_scriptMgr.onWithinRange( player, eventId, eventParam1, x, y, z ) ) + abortEventFunc( player, 0, eventId ); break; } @@ -96,8 +96,8 @@ void Core::Network::GameConnection::eventHandler( const Packets::GamePacket& inP std::string eventName = Event::getEventName( eventId ); - if( !g_scriptMgr.onOutsideRange( pPlayer, eventId, eventParam1, x, y, z ) ) - abortEventFunc( pPlayer, 0, eventId ); + if( !g_scriptMgr.onOutsideRange( player, eventId, eventParam1, x, y, z ) ) + abortEventFunc( player, 0, eventId ); break; } @@ -109,8 +109,8 @@ void Core::Network::GameConnection::eventHandler( const Packets::GamePacket& inP std::string eventName = Event::getEventName( eventId ); - if( !g_scriptMgr.onEnterTerritory( pPlayer, eventId, eventParam1, eventParam2 ) ) - abortEventFunc( pPlayer, 0, eventId ); + if( !g_scriptMgr.onEnterTerritory( player, eventId, eventParam1, eventParam2 ) ) + abortEventFunc( player, 0, eventId ); break; } @@ -125,8 +125,8 @@ void Core::Network::GameConnection::eventHandler( const Packets::GamePacket& inP std::string eventName = Event::getEventName( eventId ); - if( !g_scriptMgr.onEventHandlerReturn( pPlayer, eventId, subEvent, param1, param2, param3 ) ) - abortEventFunc( pPlayer, 0, eventId ); + if( !g_scriptMgr.onEventHandlerReturn( player, eventId, subEvent, param1, param2, param3 ) ) + abortEventFunc( player, 0, eventId ); break; } @@ -137,14 +137,12 @@ void Core::Network::GameConnection::eventHandler( const Packets::GamePacket& inP uint16_t subEvent = inPacket.getValAt< uint16_t >( 0x24 ); std::string lsName = inPacket.getStringAt( 0x27 ); - - - ZoneChannelPacket< FFXIVIpcEventLinkshell > linkshellEvent( pPlayer->getId() ); + ZoneChannelPacket< FFXIVIpcEventLinkshell > linkshellEvent( player.getId() ); linkshellEvent.data().eventId = eventId; - linkshellEvent.data().scene = static_cast< uint8_t >(subEvent); + linkshellEvent.data().scene = static_cast< uint8_t >( subEvent ); linkshellEvent.data().param3 = 1; linkshellEvent.data().unknown1 = 0x15a; - pPlayer->queuePacket( linkshellEvent ); + player.queuePacket( linkshellEvent ); // abortEventFunc( pPlayer, 0, eventId ); break; diff --git a/src/servers/Server_Zone/Network/Handlers/GMCommandHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/GMCommandHandlers.cpp index 22bbba5d..6bd46b32 100644 --- a/src/servers/Server_Zone/Network/Handlers/GMCommandHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/GMCommandHandlers.cpp @@ -92,9 +92,9 @@ enum GmCommand JumpNpc = 0x025F, }; -void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPacket, Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPacket, Entity::Player& player ) { - if( pPlayer->getGmRank() <= 0 ) + if( player.getGmRank() <= 0 ) return; uint32_t commandId = inPacket.getValAt< uint32_t >( 0x20 ); @@ -102,20 +102,20 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac uint32_t param2 = inPacket.getValAt< uint32_t >( 0x28 ); uint32_t param3 = inPacket.getValAt< uint32_t >( 0x38 ); - g_log.debug( pPlayer->getName() + " used GM1 commandId: " + std::to_string( commandId ) + + g_log.debug( player.getName() + " used GM1 commandId: " + std::to_string( commandId ) + ", params: " + std::to_string( param1 ) + ", " + std::to_string( param2 ) + ", " + std::to_string( param3 ) ); Core::Entity::ActorPtr targetActor; - if( pPlayer->getId() == param3 ) + if( player.getId() == param3 ) { - targetActor = pPlayer; + targetActor = player.getAsPlayer(); } else { - auto inRange = pPlayer->getInRangeActors(); + auto inRange = player.getInRangeActors(); for( auto actor : inRange ) { if( actor->getId() == param3 ) @@ -132,13 +132,13 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac case GmCommand::Lv: { targetPlayer->setLevel( param1 ); - pPlayer->sendNotice( "Level for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); + player.sendNotice( "Level for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); break; } case GmCommand::Race: { targetPlayer->setLookAt( CharaLook::Race, param1 ); - pPlayer->sendNotice( "Race for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); + player.sendNotice( "Race for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); targetPlayer->spawn( targetPlayer ); auto inRange = targetPlayer->getInRangeActors(); for ( auto actor : inRange ) @@ -151,7 +151,7 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac case GmCommand::Tribe: { targetPlayer->setLookAt( CharaLook::Tribe, param1 ); - pPlayer->sendNotice( "Tribe for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); + player.sendNotice( "Tribe for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); targetPlayer->spawn( targetPlayer ); auto inRange = targetPlayer->getInRangeActors(); for ( auto actor : inRange ) @@ -164,7 +164,7 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac case GmCommand::Sex: { targetPlayer->setLookAt( CharaLook::Gender, param1 ); - pPlayer->sendNotice( "Sex for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); + player.sendNotice( "Sex for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); targetPlayer->spawn( targetPlayer ); auto inRange = targetActor->getInRangeActors(); for ( auto actor : inRange ) @@ -176,30 +176,30 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac } case GmCommand::Time: { - pPlayer->setEorzeaTimeOffset( param2 ); - pPlayer->sendNotice( "Eorzea time offset: " + std::to_string( param2 ) ); + player.setEorzeaTimeOffset( param2 ); + player.sendNotice( "Eorzea time offset: " + std::to_string( param2 ) ); break; } case GmCommand::Weather: { targetPlayer->getCurrentZone()->setWeatherOverride( param1 ); - pPlayer->sendNotice( "Weather in Zone \"" + targetPlayer->getCurrentZone()->getName() + "\" of " + + player.sendNotice( "Weather in Zone \"" + targetPlayer->getCurrentZone()->getName() + "\" of " + targetPlayer->getName() + " set in range." ); break; } case GmCommand::Call: { - if ( targetPlayer->getZoneId() != pPlayer->getZoneId() ) - targetPlayer->setZone( pPlayer->getZoneId() ); + if ( targetPlayer->getZoneId() != player.getZoneId() ) + targetPlayer->setZone( player.getZoneId() ); - targetPlayer->changePosition( pPlayer->getPos().x, pPlayer->getPos().y, pPlayer->getPos().z, - pPlayer->getRotation() ); - pPlayer->sendNotice( "Calling " + targetPlayer->getName() ); + targetPlayer->changePosition( player.getPos().x, player.getPos().y, player.getPos().z, + player.getRotation() ); + player.sendNotice( "Calling " + targetPlayer->getName() ); break; } case GmCommand::Inspect: { - pPlayer->sendNotice( "Name: " + targetPlayer->getName() + + player.sendNotice( "Name: " + targetPlayer->getName() + "\nGil: " + std::to_string( targetPlayer->getCurrency( 1 ) ) + "\nZone: " + targetPlayer->getCurrentZone()->getName() + "(" + std::to_string( targetPlayer->getZoneId() ) + ")" + @@ -212,14 +212,14 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac } case GmCommand::Speed: { - targetPlayer->queuePacket( ActorControlPacket143( pPlayer->getId(), Flee, param1 ) ); - pPlayer->sendNotice( "Speed for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); + targetPlayer->queuePacket( ActorControlPacket143( player.getId(), Flee, param1 ) ); + player.sendNotice( "Speed for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); break; } case GmCommand::Kill: { targetActor->takeDamage( 9999999 ); - pPlayer->sendNotice( "Killed " + std::to_string( targetActor->getId() ) ); + player.sendNotice( "Killed " + std::to_string( targetActor->getId() ) ); break; } case GmCommand::Icon: @@ -236,34 +236,34 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac strcpy( searchInfoPacket.data().searchMessage, targetPlayer->getSearchMessage() ); targetPlayer->queuePacket( searchInfoPacket ); - targetPlayer->sendToInRangeSet( ActorControlPacket142( pPlayer->getId(), SetStatusIcon, - static_cast< uint8_t >( pPlayer->getOnlineStatus() ) ), + targetPlayer->sendToInRangeSet( ActorControlPacket142( player.getId(), SetStatusIcon, + static_cast< uint8_t >( player.getOnlineStatus() ) ), true ); - pPlayer->sendNotice( "Icon for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); + player.sendNotice( "Icon for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); break; } case GmCommand::Hp: { targetPlayer->setHp( param1 ); - pPlayer->sendNotice( "Hp for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); + player.sendNotice( "Hp for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); break; } case GmCommand::Mp: { targetPlayer->setMp( param1 ); - pPlayer->sendNotice( "Mp for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); + player.sendNotice( "Mp for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); break; } case GmCommand::Gp: { targetPlayer->setHp( param1 ); - pPlayer->sendNotice( "Gp for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); + player.sendNotice( "Gp for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); break; } case GmCommand::Exp: { targetPlayer->gainExp( param1 ); - pPlayer->sendNotice( std::to_string( param1 ) + " Exp was added to " + targetPlayer->getName() ); + player.sendNotice( std::to_string( param1 ) + " Exp was added to " + targetPlayer->getName() ); break; } case GmCommand::Inv: @@ -273,7 +273,7 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac else targetActor->setInvincibilityType( Common::InvincibilityType::InvincibilityRefill ); - pPlayer->sendNotice( "Invincibility for " + targetPlayer->getName() + + player.sendNotice( "Invincibility for " + targetPlayer->getName() + " was switched." ); break; } @@ -286,13 +286,13 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac for ( uint8_t i = 0; i < 255; i++ ) targetActor->getAsPlayer()->learnSong( i, 0 ); - pPlayer->sendNotice( "All Songs for " + targetPlayer->getName() + + player.sendNotice( "All Songs for " + targetPlayer->getName() + " were turned on." ); } else { targetActor->getAsPlayer()->learnSong( param2, 0 ); - pPlayer->sendNotice( "Song " + std::to_string( param2 ) + " for " + targetPlayer->getName() + + player.sendNotice( "Song " + std::to_string( param2 ) + " for " + targetPlayer->getName() + " was turned on." ); } } @@ -308,18 +308,18 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac if( ( param1 == 0xcccccccc ) ) { - pPlayer->sendUrgent( "Syntaxerror." ); + player.sendUrgent( "Syntaxerror." ); return; } if( !targetPlayer->addItem( -1, param1, param2 ) ) - pPlayer->sendUrgent( "Item " + std::to_string( param1 ) + " not found..." ); + player.sendUrgent( "Item " + std::to_string( param1 ) + " not found..." ); break; } case GmCommand::Gil: { targetPlayer->addCurrency( 1, param1 ); - pPlayer->sendNotice( "Added " + std::to_string( param1 ) + " Gil for " + targetPlayer->getName() ); + player.sendNotice( "Added " + std::to_string( param1 ) + " Gil for " + targetPlayer->getName() ); break; } case GmCommand::Collect: @@ -328,12 +328,12 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac if ( gil < param1 ) { - pPlayer->sendUrgent( "Player does not have enough Gil(" + std::to_string( gil ) + ")" ); + player.sendUrgent( "Player does not have enough Gil(" + std::to_string( gil ) + ")" ); } else { targetPlayer->removeCurrency( 1, param1 ); - pPlayer->sendNotice( "Removed " + std::to_string( param1 ) + + player.sendNotice( "Removed " + std::to_string( param1 ) + " Gil from " + targetPlayer->getName() + "(" + std::to_string( gil ) + " before)" ); } @@ -367,14 +367,14 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac case GmCommand::GC: { targetPlayer->setGc( param1 ); - pPlayer->sendNotice( "GC for " + targetPlayer->getName() + + player.sendNotice( "GC for " + targetPlayer->getName() + " was set to " + std::to_string( targetPlayer->getGc() ) ); break; } case GmCommand::GCRank: { targetPlayer->setGcRankAt( targetPlayer->getGc() - 1, param1 ); - pPlayer->sendNotice( "GC Rank for " + targetPlayer->getName() + + player.sendNotice( "GC Rank for " + targetPlayer->getName() + " for GC " + std::to_string( targetPlayer->getGc() ) + " was set to " + std::to_string( targetPlayer->getGcRankArray()[targetPlayer->getGc() - 1] ) ); break; @@ -388,13 +388,13 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac for ( uint8_t i = 0; i < 255; i++ ) targetActor->getAsPlayer()->registerAetheryte( i ); - pPlayer->sendNotice( "All Aetherytes for " + targetPlayer->getName() + + player.sendNotice( "All Aetherytes for " + targetPlayer->getName() + " were turned on." ); } else { targetActor->getAsPlayer()->registerAetheryte( param2 ); - pPlayer->sendNotice( "Aetheryte " + std::to_string( param2 ) + " for " + targetPlayer->getName() + + player.sendNotice( "Aetheryte " + std::to_string( param2 ) + " for " + targetPlayer->getName() + " was turned on." ); } } @@ -406,55 +406,55 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac auto zoneInfo = g_zoneMgr.getZone( param1 ); if ( !zoneInfo ) { - pPlayer->sendUrgent( "Invalid zone " + std::to_string( param1 ) ); + player.sendUrgent( "Invalid zone " + std::to_string( param1 ) ); } else { targetPlayer->setPosition( targetPlayer->getPos() ); targetPlayer->performZoning( param1, targetPlayer->getPos(), 0 ); - pPlayer->sendNotice( targetPlayer->getName() + " was warped to zone " + std::to_string( param1 ) + " (" + zoneInfo->getName( ) + ")" ); + player.sendNotice( targetPlayer->getName() + " was warped to zone " + std::to_string( param1 ) + " (" + zoneInfo->getName( ) + ")" ); } break; } case GmCommand::TeriInfo: { - pPlayer->sendNotice( "ZoneId: " + std::to_string( pPlayer->getZoneId() ) + "\nName: " + - pPlayer->getCurrentZone()->getName() + "\nInternalName: " + - pPlayer->getCurrentZone()->getInternalName() + "\nPopCount: " + - std::to_string( pPlayer->getCurrentZone()->getPopCount() ) + - "\nCurrentWeather:" + std::to_string( pPlayer->getCurrentZone()->getCurrentWeather() ) + - "\nNextWeather:" + std::to_string( pPlayer->getCurrentZone()->getNextWeather() ) ); + player.sendNotice( "ZoneId: " + std::to_string( player.getZoneId() ) + "\nName: " + + player.getCurrentZone()->getName() + "\nInternalName: " + + player.getCurrentZone()->getInternalName() + "\nPopCount: " + + std::to_string( player.getCurrentZone()->getPopCount() ) + + "\nCurrentWeather:" + std::to_string( player.getCurrentZone()->getCurrentWeather() ) + + "\nNextWeather:" + std::to_string( player.getCurrentZone()->getNextWeather() ) ); break; } case GmCommand::Jump: { - auto inRange = pPlayer->getInRangeActors(); + auto inRange = player.getInRangeActors(); for( auto actor : inRange ) { - pPlayer->changePosition( targetActor->getPos().x, targetActor->getPos().y, targetActor->getPos().z, - targetActor->getRotation() ); + player.changePosition( targetActor->getPos().x, targetActor->getPos().y, targetActor->getPos().z, + targetActor->getRotation() ); } - pPlayer->sendNotice( "Jumping to " + targetPlayer->getName() + " in range." ); + player.sendNotice( "Jumping to " + targetPlayer->getName() + " in range." ); break; } default: - pPlayer->sendUrgent( "GM1 Command not implemented: " + std::to_string( commandId ) ); + player.sendUrgent( "GM1 Command not implemented: " + std::to_string( commandId ) ); break; } } -void Core::Network::GameConnection::gm2Handler( const Packets::GamePacket& inPacket, Entity::PlayerPtr pPlayer ) +void Core::Network::GameConnection::gm2Handler( const Packets::GamePacket& inPacket, Entity::Player& player ) { - if( pPlayer->getGmRank() <= 0 ) + if( player.getGmRank() <= 0 ) return; uint32_t commandId = inPacket.getValAt< uint32_t >( 0x20 ); std::string param1 = inPacket.getStringAt( 0x34 ); - g_log.debug( pPlayer->getName() + " used GM2 commandId: " + std::to_string( commandId ) + ", params: " + param1 ); + g_log.debug( player.getName() + " used GM2 commandId: " + std::to_string( commandId ) + ", params: " + param1 ); auto targetSession = g_serverZone.getSession( param1 ); Core::Entity::ActorPtr targetActor; @@ -467,11 +467,11 @@ void Core::Network::GameConnection::gm2Handler( const Packets::GamePacket& inPac { if( param1 == "self" ) { - targetActor = pPlayer; + targetActor = player.getAsPlayer(); } else { - pPlayer->sendUrgent( "Player " + param1 + " not found on this server." ); + player.sendUrgent( "Player " + param1 + " not found on this server." ); return; } } @@ -489,25 +489,25 @@ void Core::Network::GameConnection::gm2Handler( const Packets::GamePacket& inPac targetPlayer->resetMp(); targetPlayer->setStatus( Entity::Actor::ActorStatus::Idle ); - targetPlayer->sendToInRangeSet( ActorControlPacket143( pPlayer->getId(), ZoneIn, 0x01, 0x01, 0, 113 ), true ); - targetPlayer->sendToInRangeSet( ActorControlPacket142( pPlayer->getId(), SetStatus, + targetPlayer->sendToInRangeSet( ActorControlPacket143( player.getId(), ZoneIn, 0x01, 0x01, 0, 113 ), true ); + targetPlayer->sendToInRangeSet( ActorControlPacket142( player.getId(), SetStatus, static_cast< uint8_t >( Entity::Actor::ActorStatus::Idle ) ), true ); - pPlayer->sendNotice( "Raised " + targetPlayer->getName() ); + player.sendNotice( "Raised " + targetPlayer->getName() ); break; } case GmCommand::Jump: { - if( targetPlayer->getZoneId() != pPlayer->getZoneId() ) + if( targetPlayer->getZoneId() != player.getZoneId() ) { - pPlayer->setZone( targetPlayer->getZoneId() ); + player.setZone( targetPlayer->getZoneId() ); } - pPlayer->changePosition( targetActor->getPos().x, targetActor->getPos().y, targetActor->getPos().z, + player.changePosition( targetActor->getPos().x, targetActor->getPos().y, targetActor->getPos().z, targetActor->getRotation() ); - pPlayer->sendNotice( "Jumping to " + targetPlayer->getName() ); + player.sendNotice( "Jumping to " + targetPlayer->getName() ); break; } default: - pPlayer->sendUrgent( "GM2 Command not implemented: " + std::to_string( commandId ) ); + player.sendUrgent( "GM2 Command not implemented: " + std::to_string( commandId ) ); break; } diff --git a/src/servers/Server_Zone/Network/Handlers/InventoryHandler.cpp b/src/servers/Server_Zone/Network/Handlers/InventoryHandler.cpp index 7decaea0..2da36167 100644 --- a/src/servers/Server_Zone/Network/Handlers/InventoryHandler.cpp +++ b/src/servers/Server_Zone/Network/Handlers/InventoryHandler.cpp @@ -37,7 +37,7 @@ using namespace Core::Network::Packets::Server; void Core::Network::GameConnection::inventoryModifyHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { uint32_t seq = inPacket.getValAt< uint32_t >( 0x20 ); uint8_t action = inPacket.getValAt< uint8_t >( 0x24 ); @@ -46,10 +46,10 @@ void Core::Network::GameConnection::inventoryModifyHandler( const Packets::GameP uint16_t fromContainer = inPacket.getValAt< uint16_t >( 0x2C ); uint16_t toContainer = inPacket.getValAt< uint16_t >( 0x40 ); - ZoneChannelPacket< FFXIVIpcInventoryActionAck > ackPacket( pPlayer->getId() ); + ZoneChannelPacket< FFXIVIpcInventoryActionAck > ackPacket( player.getId() ); ackPacket.data().sequence = seq; ackPacket.data().type = 7; - pPlayer->queuePacket( ackPacket ); + player.queuePacket( ackPacket ); g_log.debug( inPacket.toString() ); @@ -61,19 +61,19 @@ void Core::Network::GameConnection::inventoryModifyHandler( const Packets::GameP case 0x07: // discard item action { - pPlayer->getInventory()->discardItem( fromContainer, fromSlot ); + player.getInventory()->discardItem( fromContainer, fromSlot ); } break; case 0x08: // move item action { - pPlayer->getInventory()->moveItem( fromContainer, fromSlot, toContainer, toSlot ); + player.getInventory()->moveItem( fromContainer, fromSlot, toContainer, toSlot ); } break; case 0x09: // swap item action { - pPlayer->getInventory()->swapItem( fromContainer, fromSlot, toContainer, toSlot ); + player.getInventory()->swapItem( fromContainer, fromSlot, toContainer, toSlot ); } break; diff --git a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp index 047f58f1..98c9df36 100644 --- a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp @@ -50,15 +50,15 @@ using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; void Core::Network::GameConnection::fcInfoReqHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { - GamePacketPtr pPe( new GamePacket( 0xDD, 0x78, pPlayer->getId(), pPlayer->getId() ) ); + GamePacketPtr pPe( new GamePacket( 0xDD, 0x78, player.getId(), player.getId() ) ); pPe->setValAt< uint8_t >( 0x48, 0x01 ); queueOutPacket( pPe ); } void Core::Network::GameConnection::setSearchInfoHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { uint32_t inval = inPacket.getValAt< uint32_t >( 0x20 ); uint32_t inval1 = inPacket.getValAt< uint32_t >( 0x24 ); @@ -66,54 +66,53 @@ void Core::Network::GameConnection::setSearchInfoHandler( const Packets::GamePac uint8_t selectRegion = inPacket.getValAt< uint8_t >( 0x31 ); - pPlayer->setSearchInfo( selectRegion, 0, inPacket.getStringAt( 0x32 ) ); + player.setSearchInfo( selectRegion, 0, inPacket.getStringAt( 0x32 ) ); - pPlayer->setOnlineStatusMask( status ); + player.setOnlineStatusMask( status ); - if( pPlayer->isNewAdventurer() && !( inval & 0x01000000 ) ) + if( player.isNewAdventurer() && !( inval & 0x01000000 ) ) // mark player as not new adventurer anymore - pPlayer->setNewAdventurer( false ); + player.setNewAdventurer( false ); else if( inval & 0x01000000 ) // mark player as new adventurer - pPlayer->setNewAdventurer( true ); + player.setNewAdventurer( true ); - ZoneChannelPacket< FFXIVIpcSetOnlineStatus > statusPacket( pPlayer->getId() ); + ZoneChannelPacket< FFXIVIpcSetOnlineStatus > statusPacket( player.getId() ); statusPacket.data().onlineStatusFlags = status; queueOutPacket( statusPacket ); - ZoneChannelPacket< FFXIVIpcSetSearchInfo > searchInfoPacket( pPlayer->getId() ); + ZoneChannelPacket< FFXIVIpcSetSearchInfo > searchInfoPacket( player.getId() ); searchInfoPacket.data().onlineStatusFlags = status; - searchInfoPacket.data().selectRegion = pPlayer->getSearchSelectRegion(); - strcpy( searchInfoPacket.data().searchMessage, pPlayer->getSearchMessage() ); + searchInfoPacket.data().selectRegion = player.getSearchSelectRegion(); + strcpy( searchInfoPacket.data().searchMessage, player.getSearchMessage() ); queueOutPacket( searchInfoPacket ); - pPlayer->sendToInRangeSet( ActorControlPacket142( pPlayer->getId(), SetStatusIcon, - static_cast< uint8_t >( pPlayer->getOnlineStatus() ) ), - true ); + player.sendToInRangeSet( ActorControlPacket142( player.getId(), SetStatusIcon, + static_cast< uint8_t >( player.getOnlineStatus() ) ), true ); } void Core::Network::GameConnection::reqSearchInfoHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { - ZoneChannelPacket< FFXIVIpcInitSearchInfo > searchInfoPacket( pPlayer->getId() ); - searchInfoPacket.data().onlineStatusFlags = pPlayer->getOnlineStatusMask(); - searchInfoPacket.data().selectRegion = pPlayer->getSearchSelectRegion(); - strcpy( searchInfoPacket.data().searchMessage, pPlayer->getSearchMessage() ); + ZoneChannelPacket< FFXIVIpcInitSearchInfo > searchInfoPacket( player.getId() ); + searchInfoPacket.data().onlineStatusFlags = player.getOnlineStatusMask(); + searchInfoPacket.data().selectRegion = player.getSearchSelectRegion(); + strcpy( searchInfoPacket.data().searchMessage, player.getSearchMessage() ); queueOutPacket( searchInfoPacket ); } void Core::Network::GameConnection::linkshellListHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { - ZoneChannelPacket< FFXIVIpcLinkshellList > linkshellListPacket( pPlayer->getId() ); + ZoneChannelPacket< FFXIVIpcLinkshellList > linkshellListPacket( player.getId() ); queueOutPacket( linkshellListPacket ); } void Core::Network::GameConnection::updatePositionHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { // if the player is marked for zoning we no longer want to update his pos - if( pPlayer->isMarkedForZoning() ) + if( player.isMarkedForZoning() ) return; struct testMov @@ -178,23 +177,23 @@ void Core::Network::GameConnection::updatePositionHandler( const Packets::GamePa //pInPacket->debugPrint(); bool bPosChanged = false; - if( ( pPlayer->getPos().x != inPacket.getValAt< float >( 0x2c ) ) || - ( pPlayer->getPos().y != inPacket.getValAt< float >( 0x30 ) ) || - ( pPlayer->getPos().z != inPacket.getValAt< float >( 0x34 ) ) ) + if( ( player.getPos().x != inPacket.getValAt< float >( 0x2c ) ) || + ( player.getPos().y != inPacket.getValAt< float >( 0x30 ) ) || + ( player.getPos().z != inPacket.getValAt< float >( 0x34 ) ) ) bPosChanged = true; - if( !bPosChanged && pPlayer->getRotation() == inPacket.getValAt< float >( 0x20 ) ) + if( !bPosChanged && player.getRotation() == inPacket.getValAt< float >( 0x20 ) ) return; - pPlayer->setRotation( inPacket.getValAt< float >( 0x20 ) ); - pPlayer->setPosition( inPacket.getValAt< float >( 0x2c ), - inPacket.getValAt< float >( 0x30 ), - inPacket.getValAt< float >( 0x34 ) ); + player.setRotation( inPacket.getValAt< float >( 0x20 ) ); + player.setPosition( inPacket.getValAt< float >( 0x2c ), + inPacket.getValAt< float >( 0x30 ), + inPacket.getValAt< float >( 0x34 ) ); - if( ( pPlayer->getCurrentAction() != nullptr ) && bPosChanged ) - pPlayer->getCurrentAction()->setInterrupted(); + if( ( player.getCurrentAction() != nullptr ) && bPosChanged ) + player.getCurrentAction()->setInterrupted(); // if no one is in range, don't bother trying to send a position update - if( !pPlayer->hasInRangeActor() ) + if( !player.hasInRangeActor() ) return; uint8_t unk = inPacket.getValAt< uint8_t >( 0x29 ); @@ -278,26 +277,26 @@ void Core::Network::GameConnection::updatePositionHandler( const Packets::GamePa } } - MoveActorPacket movePacket( pPlayer, unk1, unk2, unk3, unk4 ); - pPlayer->sendToInRangeSet( movePacket ); + MoveActorPacket movePacket( player, unk1, unk2, unk3, unk4 ); + player.sendToInRangeSet( movePacket ); } void Core::Network::GameConnection::reqEquipDisplayFlagsHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { - g_log.info( "[" + std::to_string( pPlayer->getId() ) + "] Setting EquipDisplayFlags to " + std::to_string( inPacket.getValAt< uint8_t >( 0x20 ) ) ); - pPlayer->setEquipDisplayFlags( inPacket.getValAt< uint8_t >( 0x20 ) ); + g_log.info( "[" + std::to_string( player.getId() ) + "] Setting EquipDisplayFlags to " + std::to_string( inPacket.getValAt< uint8_t >( 0x20 ) ) ); + player.setEquipDisplayFlags( inPacket.getValAt< uint8_t >( 0x20 ) ); } void Core::Network::GameConnection::zoneLineHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { uint32_t zoneLineId = inPacket.getValAt< uint32_t >( 0x20 ); - pPlayer->sendDebug( "Walking ZoneLine " + std::to_string( zoneLineId ) ); + player.sendDebug( "Walking ZoneLine " + std::to_string( zoneLineId ) ); - auto pZone = pPlayer->getCurrentZone(); + auto pZone = player.getCurrentZone(); auto pLine = g_zoneMgr.getZonePosition( zoneLineId ); @@ -307,34 +306,34 @@ void Core::Network::GameConnection::zoneLineHandler( const Packets::GamePacket& if( pLine != nullptr ) { - pPlayer->sendDebug( "ZoneLine " + std::to_string( zoneLineId ) + " found." ); + player.sendDebug( "ZoneLine " + std::to_string( zoneLineId ) + " found." ); targetPos = pLine->getTargetPosition(); targetZone = pLine->getTargetZoneId(); rotation = pLine->getTargetRotation(); - ZoneChannelPacket< FFXIVIpcPrepareZoning > preparePacket( pPlayer->getId() ); + ZoneChannelPacket< FFXIVIpcPrepareZoning > preparePacket( player.getId() ); preparePacket.data().targetZone = targetZone; //ActorControlPacket143 controlPacket( pPlayer, ActorControlType::DespawnZoneScreenMsg, - // 0x03, pPlayer->getId(), 0x01, targetZone ); - pPlayer->queuePacket( preparePacket ); + // 0x03, player.getId(), 0x01, targetZone ); + player.queuePacket( preparePacket ); } else { // No zoneline found, revert to last zone - pPlayer->sendUrgent( "ZoneLine " + std::to_string( zoneLineId ) + " not found." ); + player.sendUrgent( "ZoneLine " + std::to_string( zoneLineId ) + " not found." ); targetPos.x = 0; targetPos.y = 0; targetPos.z = 0; targetZone = pZone->getId(); } - pPlayer->performZoning( targetZone, targetPos, rotation); + player.performZoning( targetZone, targetPos, rotation); } void Core::Network::GameConnection::discoveryHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { uint32_t ref_position_id = inPacket.getValAt< uint32_t >( 0x20 ); @@ -344,47 +343,47 @@ void Core::Network::GameConnection::discoveryHandler( const Packets::GamePacket& if( !pQR->next() ) { - pPlayer->sendNotice( "Discovery ref pos ID: " + std::to_string( ref_position_id ) + " not found. " ); + player.sendNotice( "Discovery ref pos ID: " + std::to_string( ref_position_id ) + " not found. " ); return; } - ZoneChannelPacket< FFXIVIpcDiscovery > discoveryPacket( pPlayer->getId() ); + ZoneChannelPacket< FFXIVIpcDiscovery > discoveryPacket( player.getId() ); discoveryPacket.data().map_id = pQR->getUInt( 2 ); discoveryPacket.data().map_part_id = pQR->getUInt( 3 ); - pPlayer->queuePacket( discoveryPacket ); - pPlayer->sendNotice( "Discovery ref pos ID: " + std::to_string( ref_position_id ) ); + player.queuePacket( discoveryPacket ); + player.sendNotice( "Discovery ref pos ID: " + std::to_string( ref_position_id ) ); - pPlayer->discover( pQR->getUInt16( 2 ), pQR->getUInt16( 3 ) ); + player.discover( pQR->getUInt16( 2 ), pQR->getUInt16( 3 ) ); } void Core::Network::GameConnection::playTimeHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { - ZoneChannelPacket< FFXIVIpcPlayTime > playTimePacket( pPlayer->getId() ); - playTimePacket.data().playTimeInMinutes = pPlayer->getPlayTime() / 60; - pPlayer->queuePacket( playTimePacket ); + ZoneChannelPacket< FFXIVIpcPlayTime > playTimePacket( player.getId() ); + playTimePacket.data().playTimeInMinutes = player.getPlayTime() / 60; + player.queuePacket( playTimePacket ); } void Core::Network::GameConnection::initHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { // init handler means this is a login procedure - pPlayer->setIsLogin( true ); + player.setIsLogin( true ); - pPlayer->setZone( pPlayer->getZoneId() ); + player.setZone( player.getZoneId() ); } void Core::Network::GameConnection::blackListHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { uint8_t count = inPacket.getValAt< uint8_t >( 0x21 ); - ZoneChannelPacket< FFXIVIpcBlackList > blackListPacket( pPlayer->getId() ); + ZoneChannelPacket< FFXIVIpcBlackList > blackListPacket( player.getId() ); blackListPacket.data().sequence = count; // TODO: Fill with actual blacklist data //blackListPacket.data().entry[0].contentId = 1; @@ -395,39 +394,39 @@ void Core::Network::GameConnection::blackListHandler( const Packets::GamePacket& void Core::Network::GameConnection::pingHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { int32_t inVal = inPacket.getValAt< int32_t >( 0x20 ); - PingPacket pingPacket( pPlayer, inVal ); + PingPacket pingPacket( player, inVal ); queueOutPacket( pingPacket ); - pPlayer->setLastPing( static_cast< uint32_t >( time( nullptr ) ) ); + player.setLastPing( static_cast< uint32_t >( time( nullptr ) ) ); } void Core::Network::GameConnection::finishLoadingHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { // player is done zoning - pPlayer->setLoadingComplete( true ); + player.setLoadingComplete( true ); // if this is a login event - if( pPlayer->isLogin() ) + if( player.isLogin() ) { // fire the onLogin Event - pPlayer->onLogin(); - pPlayer->setIsLogin( false ); + player.onLogin(); + player.setIsLogin( false ); } // spawn the player for himself - pPlayer->spawn( pPlayer ); + player.spawn( player.getAsPlayer() ); // notify the zone of a change in position to force an "inRangeActor" update - pPlayer->getCurrentZone()->changeActorPosition( pPlayer ); + player.getCurrentZone()->changeActorPosition( player.getAsPlayer() ); } void Core::Network::GameConnection::socialListHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { uint8_t type = inPacket.getValAt< uint8_t >( 0x2A ); @@ -436,7 +435,7 @@ void Core::Network::GameConnection::socialListHandler( const Packets::GamePacket if( type == 0x02 ) { // party list - ZoneChannelPacket< FFXIVIpcSocialList > listPacket( pPlayer->getId() );; + ZoneChannelPacket< FFXIVIpcSocialList > listPacket( player.getId() ); listPacket.data().type = 2; listPacket.data().sequence = count; @@ -444,26 +443,26 @@ void Core::Network::GameConnection::socialListHandler( const Packets::GamePacket int32_t entrysizes = sizeof( listPacket.data().entries ); memset( listPacket.data().entries, 0, sizeof( listPacket.data().entries ) ); - listPacket.data().entries[0].bytes[2] = pPlayer->getCurrentZone()->getId(); + listPacket.data().entries[0].bytes[2] = player.getCurrentZone()->getId(); listPacket.data().entries[0].bytes[3] = 0x80; listPacket.data().entries[0].bytes[4] = 0x02; listPacket.data().entries[0].bytes[6] = 0x3B; listPacket.data().entries[0].bytes[11] = 0x10; - listPacket.data().entries[0].classJob = static_cast< uint8_t >( pPlayer->getClass() ); - listPacket.data().entries[0].contentId = pPlayer->getContentId(); - listPacket.data().entries[0].level = pPlayer->getLevel(); - listPacket.data().entries[0].zoneId = pPlayer->getCurrentZone()->getId(); + listPacket.data().entries[0].classJob = static_cast< uint8_t >( player.getClass() ); + listPacket.data().entries[0].contentId = player.getContentId(); + listPacket.data().entries[0].level = player.getLevel(); + listPacket.data().entries[0].zoneId = player.getCurrentZone()->getId(); listPacket.data().entries[0].zoneId1 = 0x0100; // TODO: no idea what this does //listPacket.data().entries[0].one = 1; - memcpy( listPacket.data().entries[0].name, pPlayer->getName().c_str(), strlen( pPlayer->getName().c_str() ) ); + memcpy( listPacket.data().entries[0].name, player.getName().c_str(), strlen( player.getName().c_str() ) ); // TODO: actually store and read language from somewhere listPacket.data().entries[0].bytes1[0] = 0x01;//flags (lang) // TODO: these flags need to be figured out //listPacket.data().entries[0].bytes1[1] = 0x00;//flags - listPacket.data().entries[0].onlineStatusMask = pPlayer->getOnlineStatusMask(); + listPacket.data().entries[0].onlineStatusMask = player.getOnlineStatusMask(); queueOutPacket( listPacket ); @@ -471,7 +470,7 @@ void Core::Network::GameConnection::socialListHandler( const Packets::GamePacket else if( type == 0x0b ) { // friend list - ZoneChannelPacket< FFXIVIpcSocialList > listPacket( pPlayer->getId() ); + ZoneChannelPacket< FFXIVIpcSocialList > listPacket( player.getId() ); listPacket.data().type = 0x0B; listPacket.data().sequence = count; memset( listPacket.data().entries, 0, sizeof( listPacket.data().entries ) ); @@ -485,7 +484,7 @@ void Core::Network::GameConnection::socialListHandler( const Packets::GamePacket } void Core::Network::GameConnection::chatHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { std::string chatString( inPacket.getStringAt( 0x3a ) ); @@ -495,35 +494,35 @@ void Core::Network::GameConnection::chatHandler( const Packets::GamePacket& inPa if( chatString.at( 0 ) == '!' ) { // execute game console command - g_gameCommandMgr.execCommand( const_cast< char * >( chatString.c_str() ) + 1, pPlayer ); + g_gameCommandMgr.execCommand( const_cast< char * >( chatString.c_str() ) + 1, player ); return; } - ChatType chatType = static_cast( inPacket.getValAt< uint8_t >( 0x38 ) ); + ChatType chatType = static_cast< ChatType >( inPacket.getValAt< uint8_t >( 0x38 ) ); //ToDo, need to implement sending GM chat types. - ChatPacket chatPacket( pPlayer, chatType, chatString ); + ChatPacket chatPacket( player, chatType, chatString ); switch( chatType ) { case ChatType::Say: { - pPlayer->getCurrentZone()->queueOutPacketForRange( pPlayer, 50, chatPacket ); + player.getCurrentZone()->queueOutPacketForRange( player, 50, chatPacket ); break; } case ChatType::Yell: { - pPlayer->getCurrentZone()->queueOutPacketForRange(pPlayer, 6000, chatPacket); + player.getCurrentZone()->queueOutPacketForRange( player, 6000, chatPacket ); break; } case ChatType::Shout: { - pPlayer->getCurrentZone()->queueOutPacketForRange( pPlayer, 6000, chatPacket ); + player.getCurrentZone()->queueOutPacketForRange( player, 6000, chatPacket ); break; } default: { - pPlayer->getCurrentZone()->queueOutPacketForRange( pPlayer, 50, chatPacket ); + player.getCurrentZone()->queueOutPacketForRange( player, 50, chatPacket ); break; } } @@ -535,19 +534,19 @@ void Core::Network::GameConnection::chatHandler( const Packets::GamePacket& inPa // log right back in. // Also the packet needs to be converted to an ipc structure void Core::Network::GameConnection::logoutHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { - ZoneChannelPacket< FFXIVIpcLogout > logoutPacket( pPlayer->getId() ); + ZoneChannelPacket< FFXIVIpcLogout > logoutPacket( player.getId() ); logoutPacket.data().flags1 = 0x02; logoutPacket.data().flags2 = 0x2000; queueOutPacket( logoutPacket ); - pPlayer->setMarkedForRemoval(); + player.setMarkedForRemoval(); } void Core::Network::GameConnection::tellHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { std::string targetPcName = inPacket.getStringAt( 0x21 ); std::string msg = inPacket.getStringAt( 0x41 ); @@ -556,7 +555,7 @@ void Core::Network::GameConnection::tellHandler( const Packets::GamePacket& inPa if( !pSession ) { - ChatChannelPacket< FFXIVIpcTellErrNotFound > tellErrPacket( pPlayer->getId() ); + ChatChannelPacket< FFXIVIpcTellErrNotFound > tellErrPacket( player.getId() ); strcpy( tellErrPacket.data().receipientName, targetPcName.c_str() ); sendSinglePacket( tellErrPacket ); @@ -589,9 +588,9 @@ void Core::Network::GameConnection::tellHandler( const Packets::GamePacket& inPa return; } - ChatChannelPacket< FFXIVIpcTell > tellPacket( pPlayer->getId() ); + ChatChannelPacket< FFXIVIpcTell > tellPacket( player.getId() ); strcpy( tellPacket.data().msg, msg.c_str() ); - strcpy( tellPacket.data().receipientName, pPlayer->getName().c_str() ); + strcpy( tellPacket.data().receipientName, player.getName().c_str() ); // TODO: do these have a meaning? //tellPacket.data().u1 = 0x92CD7337; //tellPacket.data().u2a = 0x2E; @@ -601,12 +600,12 @@ void Core::Network::GameConnection::tellHandler( const Packets::GamePacket& inPa } void Core::Network::GameConnection::performNoteHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { - GamePacketNew< FFXIVIpcPerformNote, ServerZoneIpcType > performPacket( pPlayer->getId() ); + GamePacketNew< FFXIVIpcPerformNote, ServerZoneIpcType > performPacket( player.getId() ); uint8_t inVal = inPacket.getValAt< uint8_t >( 0x20 ); memcpy( &performPacket.data().data[0], &inVal, 32 ); - pPlayer->sendToInRangeSet( performPacket ); + player.sendToInRangeSet( performPacket ); } diff --git a/src/servers/Server_Zone/Network/Handlers/SkillHandler.cpp b/src/servers/Server_Zone/Network/Handlers/SkillHandler.cpp index e83219f0..01323053 100644 --- a/src/servers/Server_Zone/Network/Handlers/SkillHandler.cpp +++ b/src/servers/Server_Zone/Network/Handlers/SkillHandler.cpp @@ -40,7 +40,7 @@ using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; void Core::Network::GameConnection::skillHandler( const Packets::GamePacket& inPacket, - Entity::PlayerPtr pPlayer ) + Entity::Player& player ) { uint8_t type = inPacket.getValAt< uint32_t >( 0x21 ); @@ -49,7 +49,7 @@ void Core::Network::GameConnection::skillHandler( const Packets::GamePacket& inP uint64_t targetId = inPacket.getValAt< uint64_t >( 0x30 ); - pPlayer->sendDebug( "Skill type:" + std::to_string( type ) ); + player.sendDebug( "Skill type:" + std::to_string( type ) ); switch( type ) { @@ -58,16 +58,16 @@ void Core::Network::GameConnection::skillHandler( const Packets::GamePacket& inP if( action < 1000000 ) // normal action { std::string actionIdStr = boost::str( boost::format( "%|04X|" ) % action ); - pPlayer->sendDebug( "---------------------------------------" ); - pPlayer->sendDebug( "ActionHandler ( " + actionIdStr + " | " + - g_exdData.getActionInfo( action )->name + - " | " + std::to_string( targetId ) + " )" ); + player.sendDebug( "---------------------------------------" ); + player.sendDebug( "ActionHandler ( " + actionIdStr + " | " + + g_exdData.getActionInfo( action )->name + + " | " + std::to_string( targetId ) + " )" ); - pPlayer->queuePacket( ActorControlPacket142( pPlayer->getId(), ActorControlType::ActionStart, 0x01, action ) ); + player.queuePacket( ActorControlPacket142( player.getId(), ActorControlType::ActionStart, 0x01, action ) ); if( action == 5 ) { - auto currentAction = pPlayer->getCurrentAction(); + auto currentAction = player.getCurrentAction(); // we should always have an action here, if not there is a bug assert( currentAction ); @@ -75,22 +75,22 @@ void Core::Network::GameConnection::skillHandler( const Packets::GamePacket& inP } else { - Core::Entity::ActorPtr targetActor = pPlayer; - if( targetId != pPlayer->getId() ) + Core::Entity::ActorPtr targetActor = player.getAsPlayer(); + if( targetId != player.getId() ) { - targetActor = pPlayer->lookupTargetById( targetId ); + targetActor = player.lookupTargetById( targetId ); } - if( !pPlayer->actionHasCastTime( action ) ) + if( !player.actionHasCastTime( action ) ) { - g_scriptMgr.onCastFinish( pPlayer, targetActor, action ); + g_scriptMgr.onCastFinish( player, targetActor, action ); } else { - Action::ActionCastPtr pActionCast( new Action::ActionCast( pPlayer, targetActor, action ) ); - pPlayer->setCurrentAction( pActionCast ); - pPlayer->sendDebug( "setCurrentAction()" ); - pPlayer->getCurrentAction()->onStart(); + Action::ActionCastPtr pActionCast( new Action::ActionCast( player.getAsPlayer(), targetActor, action ) ); + player.setCurrentAction( pActionCast ); + player.sendDebug( "setCurrentAction()" ); + player.getCurrentAction()->onStart(); } } } @@ -104,7 +104,7 @@ void Core::Network::GameConnection::skillHandler( const Packets::GamePacket& inP if( info ) { g_log.debug( info->name ); - g_scriptMgr.onEventItem( pPlayer, action, info->eventId, info->castTime, targetId ); + g_scriptMgr.onEventItem( player, action, info->eventId, info->castTime, targetId ); } } else if( action > 3000000 ) // unknown @@ -116,15 +116,15 @@ void Core::Network::GameConnection::skillHandler( const Packets::GamePacket& inP case Common::SkillType::MountSkill: - pPlayer->sendDebug( "Request mount " + std::to_string( action ) ); + player.sendDebug( "Request mount " + std::to_string( action ) ); - Action::ActionMountPtr pActionMount( new Action::ActionMount(pPlayer, action) ); - pPlayer->setCurrentAction( pActionMount ); - pPlayer->sendDebug("setCurrentAction()"); - pPlayer->getCurrentAction()->onStart(); + Action::ActionMountPtr pActionMount( new Action::ActionMount( player.getAsPlayer(), action ) ); + player.setCurrentAction( pActionMount ); + player.sendDebug( "setCurrentAction()" ); + player.getCurrentAction()->onStart(); break; } -} \ No newline at end of file +} diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ChatPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/ChatPacket.h index 32befc54..1ffe2e75 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ChatPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ChatPacket.h @@ -18,17 +18,17 @@ class ChatPacket : public ZoneChannelPacket< FFXIVIpcChat > { public: - ChatPacket( Entity::PlayerPtr player, Common::ChatType chatType, const std::string& msg ) : - ZoneChannelPacket< FFXIVIpcChat >( player->getId(), player->getId() ) + ChatPacket( Entity::Player& player, Common::ChatType chatType, const std::string& msg ) : + ZoneChannelPacket< FFXIVIpcChat >( player.getId(), player.getId() ) { initialize( player, chatType, msg ); }; private: - void initialize( Entity::PlayerPtr player, Common::ChatType chatType, const std::string& msg ) + void initialize( Entity::Player& player, Common::ChatType chatType, const std::string& msg ) { m_data.chatType = chatType; - strcpy( m_data.name, player->getName().c_str() ); + strcpy( m_data.name, player.getName().c_str() ); strcpy( m_data.msg, msg.c_str() ); }; }; @@ -38,4 +38,4 @@ private: } } -#endif /*_CHATPACKET_H*/ \ No newline at end of file +#endif /*_CHATPACKET_H*/ diff --git a/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h index 13d48cc7..acf1826a 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h @@ -18,59 +18,59 @@ namespace Server { class InitUIPacket : public ZoneChannelPacket< FFXIVIpcInitUI > { public: - InitUIPacket( Entity::PlayerPtr player ) : - ZoneChannelPacket< FFXIVIpcInitUI >( player->getId(), player->getId() ) + InitUIPacket( Entity::Player& player ) : + ZoneChannelPacket< FFXIVIpcInitUI >( player.getId(), player.getId() ) { initialize( player ); }; private: - void initialize( Entity::PlayerPtr player ) + void initialize( Entity::Player& player ) { - m_data.contentId = player->getContentId(); + m_data.contentId = player.getContentId(); // TODO: Support rested experience. m_data.restedExp = 0; //m_data.padding = 0x100; - m_data.charId = player->getId(); - m_data.race = player->getLookAt( Common::CharaLook::Race ); - m_data.tribe = player->getLookAt( Common::CharaLook::Tribe ); - m_data.gender = player->getLookAt( Common::CharaLook::Gender ); - m_data.currentClass = static_cast< uint8_t >( player->getClass() ); - m_data.currentJob = static_cast< uint8_t >( player->getClass() ); - m_data.deity = static_cast< uint8_t >( player->getGuardianDeity() ); - m_data.namedayMonth = player->getBirthMonth(); - m_data.namedayDay = player->getBirthDay(); + m_data.charId = player.getId(); + m_data.race = player.getLookAt( Common::CharaLook::Race ); + m_data.tribe = player.getLookAt( Common::CharaLook::Tribe ); + m_data.gender = player.getLookAt( Common::CharaLook::Gender ); + m_data.currentClass = static_cast< uint8_t >( player.getClass() ); + m_data.currentJob = static_cast< uint8_t >( player.getClass() ); + m_data.deity = static_cast< uint8_t >( player.getGuardianDeity() ); + m_data.namedayMonth = player.getBirthMonth(); + m_data.namedayDay = player.getBirthDay(); // TODO: Support grand company status. - m_data.grandCompany = static_cast< Common::GrandCompany >( player->getGc() ); + m_data.grandCompany = static_cast< Common::GrandCompany >( player.getGc() ); //m_data.gcRank = GCRank::None; // TODO: Support starting city. //m_data.startCity = Town::Gridania; - m_data.homepoint = player->getHomepoint(); + m_data.homepoint = player.getHomepoint(); memset( &m_data.name[0], 0, sizeof( m_data.name ) ); - strcpy( &m_data.name[0], player->getName().c_str() ); + strcpy( &m_data.name[0], player.getName().c_str() ); - memcpy( m_data.aetheryte, player->getAetheryteArray(), sizeof ( m_data.aetheryte ) ); + memcpy( m_data.aetheryte, player.getAetheryteArray(), sizeof ( m_data.aetheryte ) ); // Set the class levels and exp. for( uint8_t i = 0; i < 25; i++ ) { - m_data.levels[i] = player->getClassArray()[i]; - m_data.exp[i] = player->getExpArray()[i]; + m_data.levels[i] = player.getClassArray()[i]; + m_data.exp[i] = player.getExpArray()[i]; } - memcpy( m_data.orchestrionMask, player->getOrchestrionBitmask(), sizeof( m_data.orchestrionMask ) ); + memcpy( m_data.orchestrionMask, player.getOrchestrionBitmask(), sizeof( m_data.orchestrionMask ) ); - memcpy( m_data.mountGuideMask, player->getMountGuideBitmask(), sizeof( m_data.mountGuideMask) ); + memcpy( m_data.mountGuideMask, player.getMountGuideBitmask(), sizeof( m_data.mountGuideMask) ); - memcpy( m_data.unlockBitmask, player->getUnlockBitmask(), sizeof( m_data.unlockBitmask ) ); + memcpy( m_data.unlockBitmask, player.getUnlockBitmask(), sizeof( m_data.unlockBitmask ) ); - memcpy( m_data.discovery, player->getDiscoveryBitmask(), sizeof( m_data.discovery ) ); + memcpy( m_data.discovery, player.getDiscoveryBitmask(), sizeof( m_data.discovery ) ); - memcpy( m_data.howto, player->getHowToArray(), sizeof( m_data.howto ) ); + memcpy( m_data.howto, player.getHowToArray(), sizeof( m_data.howto ) ); m_data.unknown_13 = 0x46; m_data.expansion = 2; diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ModelEquipPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/ModelEquipPacket.h index 85df61c5..087f03cf 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ModelEquipPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ModelEquipPacket.h @@ -17,22 +17,22 @@ class ModelEquipPacket : public ZoneChannelPacket< FFXIVIpcModelEquip > { public: - ModelEquipPacket( Entity::PlayerPtr player ) : - ZoneChannelPacket< FFXIVIpcModelEquip >( player->getId(), player->getId() ) + ModelEquipPacket( Entity::Player& player ) : + ZoneChannelPacket< FFXIVIpcModelEquip >( player.getId(), player.getId() ) { initialize( player ); }; private: - void initialize( Entity::PlayerPtr player ) + void initialize( Entity::Player& player ) { - m_data.mainWeapon = player->getModelMainWeapon(); - m_data.offWeapon = player->getModelSubWeapon(); - m_data.models[0] = player->getModelForSlot( Inventory::EquipSlot::Head ); - m_data.models[1] = player->getModelForSlot( Inventory::EquipSlot::Body ); - m_data.models[2] = player->getModelForSlot( Inventory::EquipSlot::Hands ); - m_data.models[3] = player->getModelForSlot( Inventory::EquipSlot::Legs ); - m_data.models[4] = player->getModelForSlot( Inventory::EquipSlot::Feet ); + m_data.mainWeapon = player.getModelMainWeapon(); + m_data.offWeapon = player.getModelSubWeapon(); + m_data.models[0] = player.getModelForSlot( Inventory::EquipSlot::Head ); + m_data.models[1] = player.getModelForSlot( Inventory::EquipSlot::Body ); + m_data.models[2] = player.getModelForSlot( Inventory::EquipSlot::Hands ); + m_data.models[3] = player.getModelForSlot( Inventory::EquipSlot::Legs ); + m_data.models[4] = player.getModelForSlot( Inventory::EquipSlot::Feet ); }; }; @@ -41,4 +41,4 @@ private: } } -#endif /*_MODELEQUIPPACKET_H*/ \ No newline at end of file +#endif /*_MODELEQUIPPACKET_H*/ diff --git a/src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h index f77b1a9d..546e76b3 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h @@ -21,24 +21,24 @@ class MoveActorPacket : public ZoneChannelPacket< FFXIVIpcActorMove > { public: - MoveActorPacket( Entity::ActorPtr actor, uint8_t unk1, uint8_t unk2, uint8_t unk3, uint16_t unk4 ) : - ZoneChannelPacket< FFXIVIpcActorMove >( actor->getId(), actor->getId() ) + MoveActorPacket( Entity::Actor& actor, uint8_t unk1, uint8_t unk2, uint8_t unk3, uint16_t unk4 ) : + ZoneChannelPacket< FFXIVIpcActorMove >( actor.getId(), actor.getId() ) { initialize( actor, unk1, unk2, unk3, unk4 ); }; private: - void initialize( Entity::ActorPtr actor, uint8_t unk1, uint8_t unk2, uint8_t unk3, uint16_t unk4 ) + void initialize( Entity::Actor& actor, uint8_t unk1, uint8_t unk2, uint8_t unk3, uint16_t unk4 ) { - m_data.rotation = Math::Util::floatToUInt8Rot( actor->getRotation() ); + m_data.rotation = Math::Util::floatToUInt8Rot( actor.getRotation() ); m_data.unknown_1 = unk1; m_data.unknown_2 = unk2; m_data.unknown_3 = unk3; m_data.unknown_4 = unk4; - m_data.posX = Math::Util::floatToUInt16( actor->getPos().x ); - m_data.posY = Math::Util::floatToUInt16( actor->getPos().y ); - m_data.posZ = Math::Util::floatToUInt16( actor->getPos().z ); + m_data.posX = Math::Util::floatToUInt16( actor.getPos().x ); + m_data.posY = Math::Util::floatToUInt16( actor.getPos().y ); + m_data.posZ = Math::Util::floatToUInt16( actor.getPos().z ); }; }; @@ -48,4 +48,4 @@ private: } } -#endif /*_MOVEACTORPACKET_H*/ \ No newline at end of file +#endif /*_MOVEACTORPACKET_H*/ diff --git a/src/servers/Server_Zone/Network/PacketWrappers/PingPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/PingPacket.h index 6ead7a9b..786c2312 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/PingPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/PingPacket.h @@ -17,14 +17,14 @@ class PingPacket : public ZoneChannelPacket< FFXIVIpcPing > { public: - PingPacket( Entity::PlayerPtr player, int32_t inVal ) : - ZoneChannelPacket< FFXIVIpcPing >( player->getId(), player->getId() ) + PingPacket( Entity::Player& player, int32_t inVal ) : + ZoneChannelPacket< FFXIVIpcPing >( player.getId(), player.getId() ) { initialize( player, inVal ); }; private: - void initialize( Entity::PlayerPtr player, int32_t inVal ) + void initialize( Entity::Player& player, int32_t inVal ) { m_data.timeInMilliseconds = 0x000014D00000000 + inVal; }; @@ -35,4 +35,4 @@ private: } } -#endif /*_CORE_NETWORK_PACKETS_CPINGPACKET_H*/ \ No newline at end of file +#endif /*_CORE_NETWORK_PACKETS_CPINGPACKET_H*/ diff --git a/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h index 07c16ec1..a573fc4a 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h @@ -22,97 +22,97 @@ namespace Server { public GamePacketNew< FFXIVIpcPlayerSpawn, ServerZoneIpcType > { public: - PlayerSpawnPacket( Entity::PlayerPtr pPlayer, Entity::PlayerPtr pTarget ) : - GamePacketNew< FFXIVIpcPlayerSpawn, ServerZoneIpcType >( pPlayer->getId(), pTarget->getId() ) + PlayerSpawnPacket( Entity::Player& player, Entity::Player& target ) : + GamePacketNew< FFXIVIpcPlayerSpawn, ServerZoneIpcType >( player.getId(), target.getId() ) { - initialize( pPlayer, pTarget ); + initialize( player, target ); }; private: - void initialize( Entity::PlayerPtr pPlayer, Entity::PlayerPtr pTarget ) + void initialize( Entity::Player& player, Entity::Player& target ) { // todo: figure out unkown offsets // TODO: temporary gm rank //m_data.gmRank = 0xff; - m_data.classJob = static_cast< uint8_t >( pPlayer->getClass() ); + m_data.classJob = static_cast< uint8_t >( player.getClass() ); //m_data.status = static_cast< uint8_t >( pPlayer->getStatus() ); - m_data.hPCurr = pPlayer->getHp(); - m_data.mPCurr = pPlayer->getMp(); - m_data.tPCurr = pPlayer->getTp(); - m_data.hPMax = pPlayer->getMaxHp(); - m_data.mPMax = pPlayer->getMaxMp(); + m_data.hPCurr = player.getHp(); + m_data.mPCurr = player.getMp(); + m_data.tPCurr = player.getTp(); + m_data.hPMax = player.getMaxHp(); + m_data.mPMax = player.getMaxMp(); //m_data.tPMax = 3000; - m_data.level = pPlayer->getLevel(); - m_data.gmRank = pPlayer->getGmRank(); + m_data.level = player.getLevel(); + m_data.gmRank = player.getGmRank(); m_data.pose = 0; - memcpy( m_data.look, pPlayer->getLookArray(), 26 ); + memcpy( m_data.look, player.getLookArray(), 26 ); - auto item = pPlayer->getInventory()->getItemAt( Inventory::GearSet0, Inventory::EquipSlot::MainHand ); + auto item = player.getInventory()->getItemAt( Inventory::GearSet0, Inventory::EquipSlot::MainHand ); if( item ) m_data.mainWeaponModel = item->getModelId1(); - m_data.secWeaponModel = pPlayer->getModelSubWeapon(); + m_data.secWeaponModel = player.getModelSubWeapon(); - m_data.models[0] = pPlayer->getModelForSlot( Inventory::EquipSlot::Head ); - m_data.models[1] = pPlayer->getModelForSlot( Inventory::EquipSlot::Body ); - m_data.models[2] = pPlayer->getModelForSlot( Inventory::EquipSlot::Hands ); - m_data.models[3] = pPlayer->getModelForSlot( Inventory::EquipSlot::Legs ); - m_data.models[4] = pPlayer->getModelForSlot( Inventory::EquipSlot::Feet ); - strcpy( m_data.name, pPlayer->getName().c_str() ); + m_data.models[0] = player.getModelForSlot( Inventory::EquipSlot::Head ); + m_data.models[1] = player.getModelForSlot( Inventory::EquipSlot::Body ); + m_data.models[2] = player.getModelForSlot( Inventory::EquipSlot::Hands ); + m_data.models[3] = player.getModelForSlot( Inventory::EquipSlot::Legs ); + m_data.models[4] = player.getModelForSlot( Inventory::EquipSlot::Feet ); + strcpy( m_data.name, player.getName().c_str() ); - m_data.pos.x = pPlayer->getPos().x; - m_data.pos.y = pPlayer->getPos().y; - m_data.pos.z = pPlayer->getPos().z; - m_data.rotation = Math::Util::floatToUInt16Rot( pPlayer->getRotation() ); + m_data.pos.x = player.getPos().x; + m_data.pos.y = player.getPos().y; + m_data.pos.z = player.getPos().z; + m_data.rotation = Math::Util::floatToUInt16Rot( player.getRotation() ); - m_data.title = pPlayer->getTitle(); - m_data.voice = pPlayer->getVoiceId(); - m_data.currentMount = pPlayer->getCurrentMount(); + m_data.title = player.getTitle(); + m_data.voice = player.getVoiceId(); + m_data.currentMount = player.getCurrentMount(); - m_data.onlineStatus = static_cast< uint8_t >( pPlayer->getOnlineStatus() ); + m_data.onlineStatus = static_cast< uint8_t >( player.getOnlineStatus() ); //m_data.u23 = 0x04; //m_data.u24 = 256; - m_data.state = static_cast< uint8_t >( pPlayer->getStatus() ); + m_data.state = static_cast< uint8_t >( player.getStatus() ); m_data.type = 1; - if( pTarget == pPlayer ) + if( target.getId() == player.getId() ) { m_data.spawnIndex = 0x00; } else { - m_data.spawnIndex = pTarget->getSpawnIdForActorId( pPlayer->getId() ); + m_data.spawnIndex = target.getSpawnIdForActorId( player.getId() ); } // 0x20 == spawn hidden to be displayed by the spawneffect control - m_data.displayFlags = pPlayer->getStance(); + m_data.displayFlags = player.getStance(); - if( pPlayer->getZoningType() != Common::ZoneingType::None ) + if( player.getZoningType() != Common::ZoneingType::None ) { m_data.displayFlags |= Entity::Actor::DisplayFlags::Invisible; } - if( pPlayer->getEquipDisplayFlags() & Core::Common::EquipDisplayFlags::HideHead ) + if( player.getEquipDisplayFlags() & Core::Common::EquipDisplayFlags::HideHead ) { m_data.displayFlags |= Entity::Actor::DisplayFlags::HideHead; } - if( pPlayer->getEquipDisplayFlags() & Core::Common::EquipDisplayFlags::HideWeapon ) + if( player.getEquipDisplayFlags() & Core::Common::EquipDisplayFlags::HideWeapon ) { m_data.displayFlags |= Entity::Actor::DisplayFlags::HideWeapon; } - if( pPlayer->getEquipDisplayFlags() & Core::Common::EquipDisplayFlags::Visor ) + if( player.getEquipDisplayFlags() & Core::Common::EquipDisplayFlags::Visor ) { m_data.displayFlags |= Entity::Actor::DisplayFlags::Visor; } - m_data.currentMount = pPlayer->getCurrentMount(); + m_data.currentMount = player.getCurrentMount(); - m_data.targetId = pPlayer->getTargetId(); + m_data.targetId = player.getTargetId(); //m_data.type = 1; //m_data.unknown_33 = 4; //m_data.unknown_38 = 0x70; @@ -121,11 +121,11 @@ namespace Server { uint64_t currentTimeMs = Util::getTimeMs(); - for( auto const& effect : pPlayer->getStatusEffectMap() ) + for( auto const& effect : player.getStatusEffectMap() ) { m_data.effect[effect.first].effect_id = effect.second->getId(); m_data.effect[effect.first].duration = static_cast< float >( effect.second->getDuration() - - ( currentTimeMs - effect.second->getStartTimeMs() ) ) / 1000; + ( currentTimeMs - effect.second->getStartTimeMs() ) ) / 1000; m_data.effect[effect.first].sourceActorId = effect.second->getSrcActorId(); m_data.effect[effect.first].unknown1 = effect.second->getParam(); } diff --git a/src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h index 51939ef9..716cae67 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h @@ -17,14 +17,14 @@ class PlayerStateFlagsPacket : public ZoneChannelPacket< FFXIVIpcPlayerStateFlags > { public: - PlayerStateFlagsPacket( Entity::PlayerPtr pActor ) : - ZoneChannelPacket< FFXIVIpcPlayerStateFlags >( pActor->getId(), pActor->getId() ) + PlayerStateFlagsPacket( Entity::Player& player ) : + ZoneChannelPacket< FFXIVIpcPlayerStateFlags >( player.getId(), player.getId() ) { - initialize( pActor->getStateFlags() ); + initialize( player.getStateFlags() ); } - PlayerStateFlagsPacket( Entity::PlayerPtr pActor, std::vector< Common::PlayerStateFlag > flags ) : - ZoneChannelPacket< FFXIVIpcPlayerStateFlags >( pActor->getId(), pActor->getId() ) + PlayerStateFlagsPacket( Entity::Player& player, std::vector< Common::PlayerStateFlag > flags ) : + ZoneChannelPacket< FFXIVIpcPlayerStateFlags >( player.getId(), player.getId() ) { uint8_t newFlags[7]; memset( newFlags, 0, 7 ); @@ -55,4 +55,4 @@ private: } } -#endif /*_PLAYERSTATE_H*/ \ No newline at end of file +#endif /*_PLAYERSTATE_H*/ diff --git a/src/servers/Server_Zone/Script/ScriptManager.cpp b/src/servers/Server_Zone/Script/ScriptManager.cpp index acb30e3b..5972deaa 100644 --- a/src/servers/Server_Zone/Script/ScriptManager.cpp +++ b/src/servers/Server_Zone/Script/ScriptManager.cpp @@ -55,11 +55,11 @@ void Core::Scripting::ScriptManager::loadDir( std::string dirname, std::set& Core::Scripting::ScriptManage } -bool Core::Scripting::ScriptManager::onTalk( Core::Entity::PlayerPtr pPlayer, uint64_t actorId, uint32_t eventId ) +bool Core::Scripting::ScriptManager::onTalk( Core::Entity::Player& player, uint64_t actorId, uint32_t eventId ) { std::string eventName = "onTalk"; std::string objName = Event::getEventName( eventId ); - pPlayer->sendDebug( "Actor: " + - std::to_string( actorId ) + " -> " + - std::to_string( Core::Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ) ) + - " \neventId: " + - std::to_string( eventId ) + - " (0x" + boost::str( boost::format( "%|08X|" ) - % static_cast< uint64_t >( eventId & 0xFFFFFFF ) ) + ")" ); + player.sendDebug( "Actor: " + + std::to_string( actorId ) + " -> " + + std::to_string( Core::Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ) ) + + " \neventId: " + + std::to_string( eventId ) + + " (0x" + boost::str( boost::format( "%|08X|" ) + % static_cast< uint64_t >( eventId & 0xFFFFFFF ) ) + ")" ); uint16_t eventType = eventId >> 16; @@ -106,26 +106,26 @@ bool Core::Scripting::ScriptManager::onTalk( Core::Entity::PlayerPtr pPlayer, ui { // Get object from engine auto obj = m_pChaiHandler->eval( objName ); - pPlayer->sendDebug( "Calling: " + objName + "." + eventName ); + player.sendDebug( "Calling: " + objName + "." + eventName ); - pPlayer->eventStart( actorId, eventId, Event::Event::Talk, 0, 0 ); + player.eventStart( actorId, eventId, Event::Event::Talk, 0, 0 ); auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, uint64_t ) > >( eventName ); - fn( obj, eventId, *pPlayer, actorId ); + fn( obj, eventId, player, actorId ); - pPlayer->checkEvent( eventId ); + player.checkEvent( eventId ); } catch( std::exception& e ) { - pPlayer->sendDebug( e.what( ) ); + player.sendDebug( e.what( ) ); if( eventType == Common::EventType::Quest ) { auto questInfo = g_exdData.getQuestInfo( eventId ); if( questInfo ) { - pPlayer->sendUrgent( "Quest not implemented: " + questInfo->name ); + player.sendUrgent( "Quest not implemented: " + questInfo->name ); return false; } } @@ -135,7 +135,7 @@ bool Core::Scripting::ScriptManager::onTalk( Core::Entity::PlayerPtr pPlayer, ui return true; } -bool Core::Scripting::ScriptManager::onEnterTerritory( Core::Entity::PlayerPtr pPlayer, uint32_t eventId, +bool Core::Scripting::ScriptManager::onEnterTerritory( Core::Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 ) { std::string eventName = "onEnterTerritory"; @@ -146,25 +146,25 @@ bool Core::Scripting::ScriptManager::onEnterTerritory( Core::Entity::PlayerPtr p // Get object from engine auto obj = m_pChaiHandler->eval( objName ); - pPlayer->sendDebug( "Calling: " + objName + "." + eventName ); + player.sendDebug( "Calling: " + objName + "." + eventName ); - pPlayer->eventStart( pPlayer->getId(), eventId, Event::Event::EnterTerritory, 0, pPlayer->getZoneId() ); + player.eventStart( player.getId(), eventId, Event::Event::EnterTerritory, 0, player.getZoneId() ); auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, uint16_t, uint16_t ) > >( eventName ); - fn( obj, eventId, *pPlayer, param1, param2 ); + fn( obj, eventId, player, param1, param2 ); - pPlayer->checkEvent( eventId ); + player.checkEvent( eventId ); } catch( std::exception& e ) { - pPlayer->sendDebug( e.what() ); + player.sendDebug( e.what() ); return false; } return true; } -bool Core::Scripting::ScriptManager::onWithinRange( Entity::PlayerPtr pPlayer, uint32_t eventId, uint32_t param1, +bool Core::Scripting::ScriptManager::onWithinRange( Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ) { std::string eventName = "onWithinRange"; @@ -175,25 +175,25 @@ bool Core::Scripting::ScriptManager::onWithinRange( Entity::PlayerPtr pPlayer, u // Get object from engine auto obj = m_pChaiHandler->eval( Event::getEventName( eventId ) ); - pPlayer->sendDebug( "Calling: " + objName + "." + eventName ); + player.sendDebug( "Calling: " + objName + "." + eventName ); - pPlayer->eventStart( pPlayer->getId(), eventId, Event::Event::WithinRange, 1, param1 ); + player.eventStart( player.getId(), eventId, Event::Event::WithinRange, 1, param1 ); auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, uint32_t, float, float, float ) > >( eventName ); - fn( obj, eventId, *pPlayer, param1, x, y, z ); + fn( obj, eventId, player, param1, x, y, z ); - pPlayer->checkEvent( eventId ); + player.checkEvent( eventId ); } catch( std::exception& e ) { - pPlayer->sendDebug( e.what() ); + player.sendDebug( e.what() ); return false; } return true; } -bool Core::Scripting::ScriptManager::onOutsideRange( Entity::PlayerPtr pPlayer, uint32_t eventId, uint32_t param1, +bool Core::Scripting::ScriptManager::onOutsideRange( Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ) { std::string eventName = "onOutsideRange"; @@ -204,25 +204,25 @@ bool Core::Scripting::ScriptManager::onOutsideRange( Entity::PlayerPtr pPlayer, // Get object from engine auto obj = m_pChaiHandler->eval( Event::getEventName( eventId ) ); - pPlayer->sendDebug( "Calling: " + objName + "." + eventName ); + player.sendDebug( "Calling: " + objName + "." + eventName ); - pPlayer->eventStart( pPlayer->getId(), eventId, Event::Event::OutsideRange, 1, param1 ); + player.eventStart( player.getId(), eventId, Event::Event::OutsideRange, 1, param1 ); auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, uint32_t, float, float, float ) > >( eventName ); - fn( obj, eventId, *pPlayer, param1, x, y, z ); + fn( obj, eventId, player, param1, x, y, z ); - pPlayer->checkEvent( eventId ); + player.checkEvent( eventId ); } catch( std::exception& e ) { - pPlayer->sendDebug( e.what() ); + player.sendDebug( e.what() ); return false; } return true; } -bool Core::Scripting::ScriptManager::onEmote( Core::Entity::PlayerPtr pPlayer, uint64_t actorId, +bool Core::Scripting::ScriptManager::onEmote( Core::Entity::Player& player, uint64_t actorId, uint32_t eventId, uint8_t emoteId ) { std::string eventName = "onEmote"; @@ -232,15 +232,15 @@ bool Core::Scripting::ScriptManager::onEmote( Core::Entity::PlayerPtr pPlayer, u { auto obj = m_pChaiHandler->eval( Event::getEventName( eventId ) ); - pPlayer->sendDebug( "Calling: " + objName + "." + eventName ); + player.sendDebug( "Calling: " + objName + "." + eventName ); - pPlayer->eventStart( actorId, eventId, Event::Event::Emote, 0, emoteId ); + player.eventStart( actorId, eventId, Event::Event::Emote, 0, emoteId ); auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, uint64_t, uint8_t ) > >( eventName ); - fn( obj, eventId, *pPlayer, actorId, emoteId ); + fn( obj, eventId, player, actorId, emoteId ); - pPlayer->checkEvent( eventId ); + player.checkEvent( eventId ); } catch( std::exception& e ) { @@ -251,7 +251,7 @@ bool Core::Scripting::ScriptManager::onEmote( Core::Entity::PlayerPtr pPlayer, u auto questInfo = g_exdData.getQuestInfo( eventId ); if( questInfo ) { - pPlayer->sendDebug( "Quest not implemented: " + questInfo->name + "\n" + e.what() ); + player.sendDebug( "Quest not implemented: " + questInfo->name + "\n" + e.what() ); return false; } } @@ -260,22 +260,22 @@ bool Core::Scripting::ScriptManager::onEmote( Core::Entity::PlayerPtr pPlayer, u return true; } -bool Core::Scripting::ScriptManager::onEventHandlerReturn( Core::Entity::PlayerPtr pPlayer, uint32_t eventId, +bool Core::Scripting::ScriptManager::onEventHandlerReturn( Core::Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param1, uint16_t param2, uint16_t param3 ) { - pPlayer->sendDebug( "eventId: " + - std::to_string( eventId ) + - " ( 0x" + boost::str( boost::format( "%|08X|" ) % ( uint64_t ) ( eventId & 0xFFFFFFF ) ) + " ) " + - " scene: " + std::to_string( subEvent ) + - " p1: " + std::to_string( param1 ) + - " p2: " + std::to_string( param2 ) + - " p3: " + std::to_string( param3 ) ); + player.sendDebug( "eventId: " + + std::to_string( eventId ) + + " ( 0x" + boost::str( boost::format( "%|08X|" ) % ( uint64_t ) ( eventId & 0xFFFFFFF ) ) + " ) " + + " scene: " + std::to_string( subEvent ) + + " p1: " + std::to_string( param1 ) + + " p2: " + std::to_string( param2 ) + + " p3: " + std::to_string( param3 ) ); try { - auto pEvent = pPlayer->getEvent( eventId ); + auto pEvent = player.getEvent( eventId ); if( pEvent ) { pEvent->setPlayedScene( false ); @@ -284,27 +284,27 @@ bool Core::Scripting::ScriptManager::onEventHandlerReturn( Core::Entity::PlayerP // if there is one, proceed to call it if( eventCallback ) { - eventCallback( *pPlayer, eventId, param1, param2, param3 ); + eventCallback( player, eventId, param1, param2, param3 ); if( !pEvent->hasPlayedScene() ) - pPlayer->eventFinish( eventId, 1 ); + player.eventFinish( eventId, 1 ); else pEvent->setPlayedScene( false ); } // else, finish the event. else - pPlayer->eventFinish( eventId, 1 ); + player.eventFinish( eventId, 1 ); } } catch( std::exception& e ) { - pPlayer->sendNotice( e.what() ); + player.sendNotice( e.what() ); return false; } return true; } -bool Core::Scripting::ScriptManager::onEventHandlerTradeReturn( Core::Entity::PlayerPtr pPlayer, uint32_t eventId, +bool Core::Scripting::ScriptManager::onEventHandlerTradeReturn( Core::Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param, uint32_t catalogId ) { std::string eventName = Event::getEventName( eventId ) + "_TRADE"; @@ -313,7 +313,7 @@ bool Core::Scripting::ScriptManager::onEventHandlerTradeReturn( Core::Entity::Pl { auto fn = m_pChaiHandler->eval< std::function< void( Entity::Player&, uint32_t, uint16_t, uint16_t, uint32_t ) > >( eventName ); - fn( *pPlayer, eventId, subEvent, param, catalogId ); + fn( player, eventId, subEvent, param, catalogId ); } catch( ... ) { @@ -323,7 +323,7 @@ bool Core::Scripting::ScriptManager::onEventHandlerTradeReturn( Core::Entity::Pl return true; } -bool Core::Scripting::ScriptManager::onEventItem( Entity::PlayerPtr pPlayer, uint32_t eventItemId, +bool Core::Scripting::ScriptManager::onEventItem( Entity::Player& player, uint32_t eventItemId, uint32_t eventId, uint32_t castTime, uint64_t targetId ) { std::string eventName = "onEventItem"; @@ -333,17 +333,17 @@ bool Core::Scripting::ScriptManager::onEventItem( Entity::PlayerPtr pPlayer, uin { auto obj = m_pChaiHandler->eval( Event::getEventName( eventId ) ); - pPlayer->sendDebug( "Calling: " + objName + "." + eventName ); + player.sendDebug( "Calling: " + objName + "." + eventName ); - pPlayer->eventStart( targetId, eventId, Event::Event::Item, 0, 0 ); + player.eventStart( targetId, eventId, Event::Event::Item, 0, 0 ); auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, uint32_t, uint32_t, uint64_t ) > >( eventName ); - fn( obj, eventId, *pPlayer, eventItemId, castTime, targetId ); + fn( obj, eventId, player, eventItemId, castTime, targetId ); } catch( std::exception& e ) { - pPlayer->sendNotice( e.what() ); + player.sendNotice( e.what() ); return false; } @@ -351,7 +351,7 @@ bool Core::Scripting::ScriptManager::onEventItem( Entity::PlayerPtr pPlayer, uin } -bool Core::Scripting::ScriptManager::onMobKill( Entity::PlayerPtr pPlayer, uint16_t nameId ) +bool Core::Scripting::ScriptManager::onMobKill( Entity::Player& player, uint16_t nameId ) { std::string eventName = "onBnpcKill_" + std::to_string( nameId ); @@ -359,7 +359,7 @@ bool Core::Scripting::ScriptManager::onMobKill( Entity::PlayerPtr pPlayer, uint1 // loop through all active quests and try to call available onMobKill callbacks for( size_t i = 0; i < 30; i++ ) { - auto activeQuests = pPlayer->getQuestActive( static_cast< uint16_t >( i ) ); + auto activeQuests = player.getQuestActive( static_cast< uint16_t >( i ) ); if( !activeQuests ) continue; @@ -369,12 +369,12 @@ bool Core::Scripting::ScriptManager::onMobKill( Entity::PlayerPtr pPlayer, uint1 auto obj = m_pChaiHandler->eval( Event::getEventName( 0x00010000 | questId ) ); std::string objName = Event::getEventName( 0x00010000 | questId ); - pPlayer->sendDebug("Calling: " + objName + "." + eventName); + player.sendDebug("Calling: " + objName + "." + eventName); try { auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, Entity::Player& ) > >(eventName); - fn( obj, *pPlayer ); + fn( obj, player ); } catch( std::exception& e ) { @@ -387,7 +387,7 @@ bool Core::Scripting::ScriptManager::onMobKill( Entity::PlayerPtr pPlayer, uint1 return true; } -bool Core::Scripting::ScriptManager::onCastFinish( Entity::PlayerPtr pPlayer, Entity::ActorPtr pTarget, uint32_t actionId ) +bool Core::Scripting::ScriptManager::onCastFinish( Entity::Player& player, Entity::ActorPtr pTarget, uint32_t actionId ) { std::string eventName = "onFinish"; @@ -396,14 +396,14 @@ bool Core::Scripting::ScriptManager::onCastFinish( Entity::PlayerPtr pPlayer, En auto obj = m_pChaiHandler->eval( "skillDef_" + std::to_string( actionId ) ); std::string objName = "skillDef_" + std::to_string( actionId ); - pPlayer->sendDebug( "Calling: " + objName + "." + eventName ); + player.sendDebug( "Calling: " + objName + "." + eventName ); auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, Entity::Player&, Entity::Actor& ) > >( eventName ); - fn( obj, *pPlayer, *pTarget ); + fn( obj, player, *pTarget ); } catch( std::exception& e ) { - pPlayer->sendUrgent( e.what() ); + player.sendUrgent( e.what() ); } return true; diff --git a/src/servers/Server_Zone/Script/ScriptManager.h b/src/servers/Server_Zone/Script/ScriptManager.h index 4c5b6b20..42b5efb7 100644 --- a/src/servers/Server_Zone/Script/ScriptManager.h +++ b/src/servers/Server_Zone/Script/ScriptManager.h @@ -37,20 +37,20 @@ namespace Core const boost::shared_ptr< chaiscript::ChaiScript >& getHandler() const; - void onPlayerFirstEnterWorld( Entity::PlayerPtr pPlayer ); + void onPlayerFirstEnterWorld( Entity::Player& player ); static bool registerBnpcTemplate( std::string templateName, uint32_t bnpcBaseId, uint32_t bnpcNameId, uint32_t modelId, std::string aiName ); - bool onTalk( Entity::PlayerPtr pPlayer, uint64_t actorId, uint32_t eventId ); - bool onEnterTerritory( Entity::PlayerPtr pPlayer, uint32_t eventId, uint16_t param1, uint16_t param2 ); - bool onWithinRange( Entity::PlayerPtr pPlayer, uint32_t eventId, uint32_t param1, float x, float y, float z ); - bool onOutsideRange( Entity::PlayerPtr pPlayer, uint32_t eventId, uint32_t param1, float x, float y, float z ); - bool onEmote( Entity::PlayerPtr pPlayer, uint64_t actorId, uint32_t eventId, uint8_t emoteId ); - bool onEventItem( Entity::PlayerPtr pPlayer, uint32_t eventItemId, uint32_t eventId, uint32_t castTime, uint64_t targetId ); + bool onTalk( Entity::Player& player, uint64_t actorId, uint32_t eventId ); + bool onEnterTerritory( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 ); + bool onWithinRange( Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ); + bool onOutsideRange( Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ); + bool onEmote( Entity::Player& player, uint64_t actorId, uint32_t eventId, uint8_t emoteId ); + bool onEventItem( Entity::Player& player, uint32_t eventItemId, uint32_t eventId, uint32_t castTime, uint64_t targetId ); - bool onMobKill( Entity::PlayerPtr pPlayer, uint16_t nameId ); + bool onMobKill( Entity::Player& player, uint16_t nameId ); - bool onCastFinish( Entity::PlayerPtr pPlayer, Entity::ActorPtr pTarget, uint32_t actionId ); + bool onCastFinish( Entity::Player& pPlayer, Entity::ActorPtr pTarget, uint32_t actionId ); bool onStatusReceive( Entity::ActorPtr pActor, uint32_t effectId ); bool onStatusTick( Entity::ActorPtr pActor, Core::StatusEffect::StatusEffect& effect ); @@ -58,8 +58,8 @@ namespace Core bool onZoneInit( ZonePtr pZone ); - bool onEventHandlerReturn( Entity::PlayerPtr pPlayer, uint32_t eventId, uint16_t subEvent, uint16_t param1, uint16_t param2, uint16_t param3 ); - bool onEventHandlerTradeReturn( Entity::PlayerPtr pPlayer, uint32_t eventId, uint16_t subEvent, uint16_t param, uint32_t catalogId ); + bool onEventHandlerReturn( Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param1, uint16_t param2, uint16_t param3 ); + bool onEventHandlerTradeReturn( Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param, uint32_t catalogId ); void loadDir( std::string dirname, std::set& chaiFiles ); diff --git a/src/servers/Server_Zone/Zone/Zone.cpp b/src/servers/Server_Zone/Zone/Zone.cpp index c6de4ad5..2a8f290a 100644 --- a/src/servers/Server_Zone/Zone/Zone.cpp +++ b/src/servers/Server_Zone/Zone/Zone.cpp @@ -354,18 +354,18 @@ void Zone::removeActor( Entity::ActorPtr pActor ) } -void Zone::queueOutPacketForRange( Entity::PlayerPtr pSourcePlayer, uint32_t range, Network::Packets::GamePacketPtr pPacketEntry ) +void Zone::queueOutPacketForRange( Entity::Player& sourcePlayer, uint32_t range, Network::Packets::GamePacketPtr pPacketEntry ) { for( auto it = m_playerMap.begin(); it != m_playerMap.end(); ++it ) { - float distance = Math::Util::distance( pSourcePlayer->getPos().x, - pSourcePlayer->getPos().y, - pSourcePlayer->getPos().z, + float distance = Math::Util::distance( sourcePlayer.getPos().x, + sourcePlayer.getPos().y, + sourcePlayer.getPos().z, ( *it ).second->getPos().x, ( *it ).second->getPos().y, ( *it ).second->getPos().z ); - if( ( distance < range ) && pSourcePlayer->getId() != ( *it ).second->getId() ) + if( ( distance < range ) && sourcePlayer.getId() != ( *it ).second->getId() ) { auto pSession = g_serverZone.getSession( ( *it ).second->getId() ); pPacketEntry->setValAt( 0x08, ( *it ).second->getId() ); diff --git a/src/servers/Server_Zone/Zone/Zone.h b/src/servers/Server_Zone/Zone/Zone.h index baeb65b7..37c0f7d1 100644 --- a/src/servers/Server_Zone/Zone/Zone.h +++ b/src/servers/Server_Zone/Zone/Zone.h @@ -90,7 +90,7 @@ public: void updateInRangeSet( Entity::ActorPtr pActor, Cell* pCell ); - void queueOutPacketForRange( Entity::PlayerPtr pSourcePlayer, uint32_t range, Network::Packets::GamePacketPtr pPacketEntry ); + void queueOutPacketForRange( Entity::Player& sourcePlayer, uint32_t range, Network::Packets::GamePacketPtr pPacketEntry ); virtual uint32_t getId(); From a77772bc9d7ef625e20512ea5f40a51762ab6df0 Mon Sep 17 00:00:00 2001 From: Mordred Admin Date: Fri, 8 Dec 2017 15:38:25 +0100 Subject: [PATCH 16/25] Massive chunk of refactoring. Mainly includes and namespaces --- src/servers/Server_Zone/Action/Action.cpp | 2 +- src/servers/Server_Zone/Action/Action.h | 6 +- src/servers/Server_Zone/Action/ActionCast.cpp | 27 ++--- src/servers/Server_Zone/Action/ActionCast.h | 7 +- .../Server_Zone/Action/ActionCollision.cpp | 13 ++- .../Server_Zone/Action/ActionCollision.h | 6 +- .../Server_Zone/Action/ActionMount.cpp | 31 +++--- src/servers/Server_Zone/Action/ActionMount.h | 7 +- .../Server_Zone/Action/ActionTeleport.cpp | 18 +-- .../Server_Zone/Action/ActionTeleport.h | 7 +- .../Server_Zone/Action/EventAction.cpp | 17 ++- src/servers/Server_Zone/Action/EventAction.h | 11 +- .../Server_Zone/Action/EventItemAction.cpp | 14 +-- .../Server_Zone/Action/EventItemAction.h | 9 +- src/servers/Server_Zone/Actor/Actor.cpp | 36 +++--- src/servers/Server_Zone/Actor/Actor.h | 2 +- src/servers/Server_Zone/Actor/BattleNpc.cpp | 36 +++--- src/servers/Server_Zone/Actor/BattleNpc.h | 5 +- src/servers/Server_Zone/Actor/Player.cpp | 103 +++++++++--------- src/servers/Server_Zone/Actor/Player.h | 12 +- src/servers/Server_Zone/Actor/PlayerEvent.cpp | 38 +++---- .../Server_Zone/Actor/PlayerInventory.cpp | 24 ++-- src/servers/Server_Zone/Actor/PlayerQuest.cpp | 18 +-- src/servers/Server_Zone/Actor/PlayerSql.cpp | 62 +++++------ src/servers/Server_Zone/CMakeLists.txt | 1 + .../Server_Zone/DebugCommand/DebugCommand.h | 6 +- .../DebugCommand/DebugCommandHandler.cpp | 80 +++++++------- .../DebugCommand/DebugCommandHandler.h | 4 +- src/servers/Server_Zone/Event/Event.cpp | 2 +- src/servers/Server_Zone/Event/EventHelper.cpp | 5 +- .../Server_Zone/Inventory/Inventory.cpp | 16 +-- src/servers/Server_Zone/Inventory/Inventory.h | 4 +- src/servers/Server_Zone/Inventory/Item.cpp | 4 +- src/servers/Server_Zone/Inventory/Item.h | 4 +- .../Server_Zone/Inventory/ItemContainer.cpp | 12 +- .../Server_Zone/Inventory/ItemContainer.h | 11 +- src/servers/Server_Zone/Math/CalcBattle.cpp | 7 +- src/servers/Server_Zone/Math/CalcBattle.h | 4 +- src/servers/Server_Zone/Math/CalcStats.cpp | 6 +- src/servers/Server_Zone/Math/CalcStats.h | 4 +- .../Server_Zone/Network/GameConnection.cpp | 26 ++--- .../Server_Zone/Network/GameConnection.h | 15 +-- .../Network/Handlers/ActionHandler.cpp | 60 +++++----- .../Network/Handlers/CFHandlers.cpp | 30 +++-- .../Network/Handlers/EventHandlers.cpp | 36 +++--- .../Network/Handlers/GMCommandHandlers.cpp | 60 +++++----- .../Network/Handlers/InventoryHandler.cpp | 40 +++---- .../Network/Handlers/PacketHandlers.cpp | 65 ++++++----- .../Network/Handlers/SkillHandler.cpp | 42 +++---- .../Server_Zone/Script/ScriptManager.cpp | 40 +++---- .../Server_Zone/Script/ScriptManager.h | 4 +- .../Server_Zone/Script/ScriptManagerInit.cpp | 19 ++-- src/servers/Server_Zone/ServerZone.cpp | 8 +- src/servers/Server_Zone/ServerZone.h | 4 +- src/servers/Server_Zone/Session.cpp | 12 +- src/servers/Server_Zone/Zone/Cell.cpp | 7 +- src/servers/Server_Zone/Zone/Cell.h | 2 +- src/servers/Server_Zone/Zone/Zone.cpp | 52 ++++----- src/servers/Server_Zone/Zone/Zone.h | 13 +-- src/servers/Server_Zone/Zone/ZoneMgr.cpp | 46 -------- src/servers/Server_Zone/Zone/ZoneMgr.h | 2 +- src/servers/Server_Zone/Zone/ZonePosition.cpp | 2 +- src/servers/Server_Zone/Zone/ZonePosition.h | 2 +- 63 files changed, 602 insertions(+), 666 deletions(-) diff --git a/src/servers/Server_Zone/Action/Action.cpp b/src/servers/Server_Zone/Action/Action.cpp index 21e09e0a..1405f45a 100644 --- a/src/servers/Server_Zone/Action/Action.cpp +++ b/src/servers/Server_Zone/Action/Action.cpp @@ -1,6 +1,6 @@ #include "Action.h" -#include +#include Core::Action::Action::Action() diff --git a/src/servers/Server_Zone/Action/Action.h b/src/servers/Server_Zone/Action/Action.h index 9e0e79b6..3c270180 100644 --- a/src/servers/Server_Zone/Action/Action.h +++ b/src/servers/Server_Zone/Action/Action.h @@ -1,8 +1,8 @@ #ifndef _ACTION_H_ #define _ACTION_H_ -#include -#include "src/servers/Server_Zone/Forwards.h" +#include +#include "../Forwards.h" namespace Core { namespace Action { @@ -57,4 +57,4 @@ namespace Core { namespace Action { } } -#endif \ No newline at end of file +#endif diff --git a/src/servers/Server_Zone/Action/ActionCast.cpp b/src/servers/Server_Zone/Action/ActionCast.cpp index d322bd29..7fc79ea3 100644 --- a/src/servers/Server_Zone/Action/ActionCast.cpp +++ b/src/servers/Server_Zone/Action/ActionCast.cpp @@ -1,16 +1,16 @@ #include "ActionCast.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h" -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Script/ScriptManager.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" +#include "Network/PacketWrappers/ActorControlPacket144.h" +#include "Actor/Player.h" +#include "Script/ScriptManager.h" using namespace Core::Common; using namespace Core::Network; @@ -52,7 +52,8 @@ void Core::Action::ActionCast::onStart() castPacket.data().action_id = m_id; castPacket.data().skillType = Common::SkillType::Normal; castPacket.data().unknown_1 = m_id; - castPacket.data().cast_time = static_cast< float >( m_castTime / 1000 ); // This is used for the cast bar above the target bar of the caster. + // This is used for the cast bar above the target bar of the caster. + castPacket.data().cast_time = static_cast< float >( m_castTime / 1000 ); castPacket.data().target_id = m_pTarget->getId(); m_pSource->sendToInRangeSet( castPacket, true ); @@ -73,7 +74,7 @@ void Core::Action::ActionCast::onFinish() pPlayer->sendStateFlags(); /*auto control = ActorControlPacket143( m_pTarget->getId(), ActorControlType::Unk7, - 0x219, m_id, m_id, m_id, m_id ); + 0x219, m_id, m_id, m_id, m_id ); m_pSource->sendToInRangeSet( control, true );*/ g_scriptMgr.onCastFinish( *pPlayer, m_pTarget, m_id ); @@ -89,7 +90,7 @@ void Core::Action::ActionCast::onInterrupt() m_pSource->getAsPlayer()->sendStateFlags(); auto control = ActorControlPacket142( m_pSource->getId(), ActorControlType::CastInterrupt, - 0x219, 1, m_id, 0 ); + 0x219, 1, m_id, 0 ); // Note: When cast interrupt from taking too much damage, set the last value to 1. This enables the cast interrupt effect. Example: // auto control = ActorControlPacket142( m_pSource->getId(), ActorControlType::CastInterrupt, 0x219, 1, m_id, 0 ); diff --git a/src/servers/Server_Zone/Action/ActionCast.h b/src/servers/Server_Zone/Action/ActionCast.h index 897ad7c1..b656b391 100644 --- a/src/servers/Server_Zone/Action/ActionCast.h +++ b/src/servers/Server_Zone/Action/ActionCast.h @@ -1,10 +1,11 @@ #ifndef _ACTIONCAST_H_ #define _ACTIONCAST_H_ -#include "src/servers/Server_Zone/Forwards.h" +#include "../Forwards.h" #include "Action.h" -namespace Core { namespace Action { +namespace Core { +namespace Action { class ActionCast : public Action { @@ -25,4 +26,4 @@ namespace Core { namespace Action { } } -#endif \ No newline at end of file +#endif diff --git a/src/servers/Server_Zone/Action/ActionCollision.cpp b/src/servers/Server_Zone/Action/ActionCollision.cpp index bfae7a60..48b04aaa 100644 --- a/src/servers/Server_Zone/Action/ActionCollision.cpp +++ b/src/servers/Server_Zone/Action/ActionCollision.cpp @@ -1,10 +1,11 @@ -#include -#include -#include +#include +#include +#include #include "ActionCollision.h" -#include -#include +#include "Actor/Actor.h" +#include "Actor/Player.h" + #include #include @@ -137,4 +138,4 @@ bool ActionCollision::boxCollision( FFXIVARR_POSITION3 actorPosition, FFXIVARR_P actorPosition.x > aoePosition.x && actorPosition.y < aoePosition.y + height && actorPosition.y > aoePosition.y; -} \ No newline at end of file +} diff --git a/src/servers/Server_Zone/Action/ActionCollision.h b/src/servers/Server_Zone/Action/ActionCollision.h index 05ec923e..dda72d06 100644 --- a/src/servers/Server_Zone/Action/ActionCollision.h +++ b/src/servers/Server_Zone/Action/ActionCollision.h @@ -1,9 +1,9 @@ #ifndef _ACTIONCOLLISION_H #define _ACTIONCOLLISION_H -#include +#include -#include +#include "Actor/Actor.h" #include "Action.h" namespace Core { @@ -40,4 +40,4 @@ namespace Core { } } -#endif \ No newline at end of file +#endif diff --git a/src/servers/Server_Zone/Action/ActionMount.cpp b/src/servers/Server_Zone/Action/ActionMount.cpp index 26c7cddd..b45b460f 100644 --- a/src/servers/Server_Zone/Action/ActionMount.cpp +++ b/src/servers/Server_Zone/Action/ActionMount.cpp @@ -1,16 +1,16 @@ #include "ActionMount.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h" -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Script/ScriptManager.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" +#include "Network/PacketWrappers/ActorControlPacket144.h" +#include "Actor/Player.h" +#include "Script/ScriptManager.h" using namespace Core::Common; using namespace Core::Network; @@ -23,7 +23,7 @@ extern Core::Scripting::ScriptManager g_scriptMgr; Core::Action::ActionMount::ActionMount() { - m_handleActionType = Common::HandleActionType::Event; + m_handleActionType = HandleActionType::Event; } Core::Action::ActionMount::ActionMount( Entity::ActorPtr pActor, uint16_t mountId ) @@ -75,19 +75,20 @@ void Core::Action::ActionMount::onFinish() pPlayer->unsetStateFlag( PlayerStateFlag::Casting ); pPlayer->sendStateFlags(); - ZoneChannelPacket< FFXIVIpcEffect > effectPacket(pPlayer->getId()); + ZoneChannelPacket< FFXIVIpcEffect > effectPacket( pPlayer->getId() ); effectPacket.data().targetId = pPlayer->getId(); effectPacket.data().actionAnimationId = m_id; - effectPacket.data().unknown_62 = 13; // Affects displaying action name next to number in floating text + // Affects displaying action name next to number in floating text + effectPacket.data().unknown_62 = 13; effectPacket.data().actionTextId = 4; effectPacket.data().numEffects = 1; - effectPacket.data().rotation = Math::Util::floatToUInt16Rot(pPlayer->getRotation()); + effectPacket.data().rotation = Math::Util::floatToUInt16Rot( pPlayer->getRotation() ); effectPacket.data().effectTarget = INVALID_GAME_OBJECT_ID; effectPacket.data().effects[0].effectType = ActionEffectType::Mount; effectPacket.data().effects[0].hitSeverity = ActionHitSeverityType::CritDamage; effectPacket.data().effects[0].value = m_id; - pPlayer->sendToInRangeSet(effectPacket, true); + pPlayer->sendToInRangeSet( effectPacket, true ); pPlayer->mount( m_id ); } diff --git a/src/servers/Server_Zone/Action/ActionMount.h b/src/servers/Server_Zone/Action/ActionMount.h index 6c970869..ba32817d 100644 --- a/src/servers/Server_Zone/Action/ActionMount.h +++ b/src/servers/Server_Zone/Action/ActionMount.h @@ -1,10 +1,11 @@ #ifndef _ACTIONMOUNT_H_ #define _ACTIONMOUNT_H_ -#include "src/servers/Server_Zone/Forwards.h" +#include "../Forwards.h" #include "Action.h" -namespace Core { namespace Action { +namespace Core { +namespace Action { class ActionMount : public Action { @@ -25,4 +26,4 @@ namespace Core { namespace Action { } } -#endif \ No newline at end of file +#endif diff --git a/src/servers/Server_Zone/Action/ActionTeleport.cpp b/src/servers/Server_Zone/Action/ActionTeleport.cpp index 37ebbfbd..c201b0cc 100644 --- a/src/servers/Server_Zone/Action/ActionTeleport.cpp +++ b/src/servers/Server_Zone/Action/ActionTeleport.cpp @@ -1,12 +1,12 @@ #include "ActionTeleport.h" -#include -#include -#include +#include +#include +#include -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Actor/Player.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" +#include "Actor/Player.h" using namespace Core::Common; using namespace Core::Network; @@ -18,7 +18,7 @@ extern Core::Logger g_log; Core::Action::ActionTeleport::ActionTeleport() { - m_handleActionType = Common::HandleActionType::Event; + m_handleActionType = HandleActionType::Event; } Core::Action::ActionTeleport::ActionTeleport( Entity::ActorPtr pActor, uint16_t targetZone, uint16_t cost ) @@ -81,7 +81,7 @@ void Core::Action::ActionTeleport::onFinish() //auto control = Network::Packets::Server::ActorControlPacket142( m_pSource->getId(), Common::ActorControlType::TeleportDone ); //m_pSource->sendToInRangeSet( control, false ); - pPlayer->setZoningType( Common::ZoneingType::Teleport ); + pPlayer->setZoningType( ZoneingType::Teleport ); ZoneChannelPacket< FFXIVIpcEffect > effectPacket( pPlayer->getId() ); effectPacket.data().targetId = pPlayer->getId(); @@ -90,7 +90,7 @@ void Core::Action::ActionTeleport::onFinish() effectPacket.data().actionTextId = 5; effectPacket.data().unknown_5 = 1; effectPacket.data().numEffects = 1; - effectPacket.data().rotation = static_cast< uint16_t >( 0x8000 * ( (pPlayer->getRotation() + 3.1415926) ) / 3.1415926 ); + effectPacket.data().rotation = static_cast< uint16_t >( 0x8000 * ( ( pPlayer->getRotation() + 3.1415926 ) ) / 3.1415926 ); effectPacket.data().effectTarget = pPlayer->getId(); pPlayer->sendToInRangeSet( effectPacket, true ); diff --git a/src/servers/Server_Zone/Action/ActionTeleport.h b/src/servers/Server_Zone/Action/ActionTeleport.h index 8cb83ec1..480090eb 100644 --- a/src/servers/Server_Zone/Action/ActionTeleport.h +++ b/src/servers/Server_Zone/Action/ActionTeleport.h @@ -1,10 +1,11 @@ #ifndef _ACTIONTELEPORT_H_ #define _ACTIONTELEPORT_H_ -#include "src/servers/Server_Zone/Forwards.h" +#include "../Forwards.h" #include "Action.h" -namespace Core { namespace Action { +namespace Core { +namespace Action { class ActionTeleport : public Action { @@ -27,4 +28,4 @@ namespace Core { namespace Action { } } -#endif \ No newline at end of file +#endif diff --git a/src/servers/Server_Zone/Action/EventAction.cpp b/src/servers/Server_Zone/Action/EventAction.cpp index 00116ed4..5e6a9cf3 100644 --- a/src/servers/Server_Zone/Action/EventAction.cpp +++ b/src/servers/Server_Zone/Action/EventAction.cpp @@ -1,12 +1,12 @@ -#include -#include -#include +#include +#include +#include #include "EventAction.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Event/Event.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" +#include "Server_Zone/Actor/Player.h" +#include "Server_Zone/Event/Event.h" extern Core::Logger g_log; extern Core::Data::ExdData g_exdData; @@ -18,7 +18,7 @@ using namespace Core::Network::Packets::Server; Core::Action::EventAction::EventAction() { - m_handleActionType = Common::HandleActionType::Event; + m_handleActionType = HandleActionType::Event; } Core::Action::EventAction::EventAction( Entity::ActorPtr pActor, uint32_t eventId, uint16_t action, @@ -75,7 +75,6 @@ void Core::Action::EventAction::onFinish() m_onActionFinishClb( *m_pSource->getAsPlayer(), m_eventId, m_additional ); auto control = ActorControlPacket142( m_pSource->getId(), Common::ActorControlType::CastStart, 0, m_id ); - if( !pEvent->hasPlayedScene() ) m_pSource->getAsPlayer()->eventFinish( m_eventId, 1 ); diff --git a/src/servers/Server_Zone/Action/EventAction.h b/src/servers/Server_Zone/Action/EventAction.h index 038d9c99..6f8e5614 100644 --- a/src/servers/Server_Zone/Action/EventAction.h +++ b/src/servers/Server_Zone/Action/EventAction.h @@ -1,12 +1,13 @@ #ifndef _EVENTACTION_H_ #define _EVENTACTION_H_ -#include +#include -#include "src/servers/Server_Zone/Forwards.h" -#include "src/servers/Server_Zone/Action/Action.h" +#include "../Forwards.h" +#include "Action.h" -namespace Core { namespace Action { +namespace Core { +namespace Action { class EventAction : public Action { @@ -34,4 +35,4 @@ namespace Core { namespace Action { } } -#endif \ No newline at end of file +#endif diff --git a/src/servers/Server_Zone/Action/EventItemAction.cpp b/src/servers/Server_Zone/Action/EventItemAction.cpp index 567f689c..6c85b183 100644 --- a/src/servers/Server_Zone/Action/EventItemAction.cpp +++ b/src/servers/Server_Zone/Action/EventItemAction.cpp @@ -1,14 +1,14 @@ #include "EventItemAction.h" -#include -#include -#include +#include +#include +#include #include -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" +#include "Actor/Player.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" extern Core::Logger g_log; @@ -19,7 +19,7 @@ using namespace Core::Network::Packets::Server; Core::Action::EventItemAction::EventItemAction() { - m_handleActionType = Common::HandleActionType::Event; + m_handleActionType = HandleActionType::Event; } Core::Action::EventItemAction::EventItemAction( Entity::ActorPtr pActor, uint32_t eventId, uint16_t action, diff --git a/src/servers/Server_Zone/Action/EventItemAction.h b/src/servers/Server_Zone/Action/EventItemAction.h index 71bc5e89..bd9eee9d 100644 --- a/src/servers/Server_Zone/Action/EventItemAction.h +++ b/src/servers/Server_Zone/Action/EventItemAction.h @@ -1,10 +1,11 @@ #ifndef _EVENTITEMACTION_H_ #define _EVENTITEMACTION_H_ -#include "src/servers/Server_Zone/Forwards.h" -#include "src/servers/Server_Zone/Action/Action.h" +#include "../Forwards.h" +#include "Action.h" -namespace Core { namespace Action { +namespace Core { +namespace Action { class EventItemAction : public Action { @@ -32,4 +33,4 @@ namespace Core { namespace Action { } } -#endif \ No newline at end of file +#endif diff --git a/src/servers/Server_Zone/Actor/Actor.cpp b/src/servers/Server_Zone/Actor/Actor.cpp index 6d3f87df..5e3022e1 100644 --- a/src/servers/Server_Zone/Actor/Actor.cpp +++ b/src/servers/Server_Zone/Actor/Actor.cpp @@ -1,25 +1,25 @@ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include -#include "src/servers/Server_Zone/Forwards.h" -#include "src/servers/Server_Zone/Action/Action.h" +#include "Forwards.h" +#include "Action/Action.h" -#include "src/servers/Server_Zone/Zone/Zone.h" +#include "Zone/Zone.h" -#include "src/servers/Server_Zone/Network/GameConnection.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/UpdateHpMpTpPacket.h" +#include "Network/GameConnection.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" +#include "Network/PacketWrappers/ActorControlPacket144.h" +#include "Network/PacketWrappers/UpdateHpMpTpPacket.h" -#include "src/servers/Server_Zone/StatusEffect/StatusEffect.h" -#include "src/servers/Server_Zone/Action/ActionCollision.h" -#include "src/servers/Server_Zone/ServerZone.h" -#include "src/servers/Server_Zone/Session.h" -#include "src/servers/Server_Zone/Math/CalcBattle.h" +#include "StatusEffect/StatusEffect.h" +#include "Action/ActionCollision.h" +#include "ServerZone.h" +#include "Session.h" +#include "Math/CalcBattle.h" #include "Actor.h" #include "Player.h" diff --git a/src/servers/Server_Zone/Actor/Actor.h b/src/servers/Server_Zone/Actor/Actor.h index 2ba456e5..77e89afa 100644 --- a/src/servers/Server_Zone/Actor/Actor.h +++ b/src/servers/Server_Zone/Actor/Actor.h @@ -4,7 +4,7 @@ #include #include -#include "src/servers/Server_Zone/Forwards.h" +#include "Forwards.h" #include #include #include diff --git a/src/servers/Server_Zone/Actor/BattleNpc.cpp b/src/servers/Server_Zone/Actor/BattleNpc.cpp index f1781397..e76003d7 100644 --- a/src/servers/Server_Zone/Actor/BattleNpc.cpp +++ b/src/servers/Server_Zone/Actor/BattleNpc.cpp @@ -4,17 +4,17 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include "Player.h" #include "BattleNpc.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" +#include "Network/PacketWrappers/MoveActorPacket.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" using namespace Core::Common; using namespace Core::Network::Packets; @@ -87,7 +87,7 @@ Core::Entity::BattleNpc::BattleNpc( uint16_t modelId, uint16_t nameid, const Com } // spawn this player for pTarget -void Core::Entity::BattleNpc::spawn( Core::Entity::PlayerPtr pTarget ) +void Core::Entity::BattleNpc::spawn( PlayerPtr pTarget ) { //GamePacketNew< FFXIVIpcActorSpawn > spawnPacket( getId(), pTarget->getId() ); @@ -149,7 +149,7 @@ void Core::Entity::BattleNpc::spawn( Core::Entity::PlayerPtr pTarget ) } // despawn -void Core::Entity::BattleNpc::despawn( Core::Entity::ActorPtr pTarget ) +void Core::Entity::BattleNpc::despawn( ActorPtr pTarget ) { auto pPlayer = pTarget->getAsPlayer(); @@ -171,7 +171,7 @@ Core::Entity::StateMode Core::Entity::BattleNpc::getMode() const return m_mode; } -void Core::Entity::BattleNpc::setMode( Core::Entity::StateMode mode ) +void Core::Entity::BattleNpc::setMode( StateMode mode ) { m_mode = mode; } @@ -181,7 +181,7 @@ uint8_t Core::Entity::BattleNpc::getbehavior() const return m_behavior; } -void Core::Entity::BattleNpc::hateListAdd( Core::Entity::ActorPtr pActor, int32_t hateAmount ) +void Core::Entity::BattleNpc::hateListAdd( ActorPtr pActor, int32_t hateAmount ) { auto hateEntry = new HateListEntry(); hateEntry->m_hateAmount = hateAmount; @@ -211,7 +211,7 @@ Core::Entity::ActorPtr Core::Entity::BattleNpc::hateListGetHighest() return nullptr; } -void Core::Entity::BattleNpc::setOwner( Core::Entity::PlayerPtr pPlayer ) +void Core::Entity::BattleNpc::setOwner( PlayerPtr pPlayer ) { m_pOwner = pPlayer; @@ -278,7 +278,7 @@ bool Core::Entity::BattleNpc::moveTo( Common::FFXIVARR_POSITION3& pos ) } -void Core::Entity::BattleNpc::aggro( Core::Entity::ActorPtr pActor ) +void Core::Entity::BattleNpc::aggro( ActorPtr pActor ) { m_lastAttack = Util::getTimeMs(); @@ -296,7 +296,7 @@ void Core::Entity::BattleNpc::aggro( Core::Entity::ActorPtr pActor ) } } -void Core::Entity::BattleNpc::deaggro( Core::Entity::ActorPtr pActor ) +void Core::Entity::BattleNpc::deaggro( ActorPtr pActor ) { if( !hateListHasActor( pActor ) ) hateListRemove( pActor ); @@ -322,7 +322,7 @@ void Core::Entity::BattleNpc::hateListClear() } -void Core::Entity::BattleNpc::hateListRemove( Core::Entity::ActorPtr pActor ) +void Core::Entity::BattleNpc::hateListRemove( ActorPtr pActor ) { auto it = m_hateList.begin(); for( ; it != m_hateList.end(); ++it ) @@ -342,7 +342,7 @@ void Core::Entity::BattleNpc::hateListRemove( Core::Entity::ActorPtr pActor ) } } -bool Core::Entity::BattleNpc::hateListHasActor( Core::Entity::ActorPtr pActor ) +bool Core::Entity::BattleNpc::hateListHasActor( ActorPtr pActor ) { auto it = m_hateList.begin(); for( ; it != m_hateList.end(); ++it ) @@ -363,7 +363,7 @@ uint32_t Core::Entity::BattleNpc::getNameId() const return m_nameId; } -void Core::Entity::BattleNpc::hateListUpdate( Core::Entity::ActorPtr pActor, int32_t hateAmount ) +void Core::Entity::BattleNpc::hateListUpdate( ActorPtr pActor, int32_t hateAmount ) { auto it = m_hateList.begin(); @@ -452,7 +452,7 @@ void Core::Entity::BattleNpc::onDeath() hateListClear(); } -void Core::Entity::BattleNpc::onActionHostile( Core::Entity::ActorPtr pSource ) +void Core::Entity::BattleNpc::onActionHostile( ActorPtr pSource ) { if( hateListGetHighest() == nullptr ) diff --git a/src/servers/Server_Zone/Actor/BattleNpc.h b/src/servers/Server_Zone/Actor/BattleNpc.h index d6e92e85..6bc0b93e 100644 --- a/src/servers/Server_Zone/Actor/BattleNpc.h +++ b/src/servers/Server_Zone/Actor/BattleNpc.h @@ -4,7 +4,6 @@ #include "Actor.h" namespace Core { - namespace Entity { enum StateMode @@ -76,7 +75,7 @@ public: void onDeath() override; - void onActionHostile( Core::Entity::ActorPtr pSource ) override; + void onActionHostile( ActorPtr pSource ) override; ActorPtr getClaimer() const; @@ -113,4 +112,4 @@ private: } } -#endif \ No newline at end of file +#endif diff --git a/src/servers/Server_Zone/Actor/Player.cpp b/src/servers/Server_Zone/Actor/Player.cpp index de5df165..0d12b440 100644 --- a/src/servers/Server_Zone/Actor/Player.cpp +++ b/src/servers/Server_Zone/Actor/Player.cpp @@ -1,46 +1,45 @@ -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include -#include "src/servers/Server_Zone/Session.h" +#include "Session.h" #include "Player.h" #include "BattleNpc.h" -#include "src/servers/Server_Zone/Zone/ZoneMgr.h" -#include "src/servers/Server_Zone/Zone/Zone.h" +#include "Zone/ZoneMgr.h" +#include "Zone/Zone.h" -#include "src/servers/Server_Zone/ServerZone.h" +#include "ServerZone.h" -#include "src/servers/Server_Zone/Network/GameConnection.h" +#include "Network/GameConnection.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" +#include "Network/PacketWrappers/InitUIPacket.h" +#include "Network/PacketWrappers/ServerNoticePacket.h" +#include "Network/PacketWrappers/ChatPacket.h" +#include "Network/PacketWrappers/ModelEquipPacket.h" +#include "Network/PacketWrappers/ActorSpawnPacket.h" +#include "Network/PacketWrappers/UpdateHpMpTpPacket.h" +#include "Network/PacketWrappers/PlayerStateFlagsPacket.h" +#include "Network/PacketWrappers/PlayerSpawnPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ChatPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ModelEquipPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/UpdateHpMpTpPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h" +#include "Script/ScriptManager.h" -#include "src/servers/Server_Zone/Script/ScriptManager.h" +#include "Inventory/Item.h" -#include "src/servers/Server_Zone/Inventory/Item.h" - -#include "src/servers/Server_Zone/Inventory/Inventory.h" -#include "src/servers/Server_Zone/Event/Event.h" -#include "src/servers/Server_Zone/Action/Action.h" -#include "src/servers/Server_Zone/Action/EventAction.h" -#include "src/servers/Server_Zone/Action/EventItemAction.h" -#include "src/servers/Server_Zone/Zone/ZonePosition.h" -#include "src/servers/Server_Zone/Math/CalcStats.h" -#include "src/servers/Server_Zone/Math/CalcBattle.h" +#include "Inventory/Inventory.h" +#include "Event/Event.h" +#include "Action/Action.h" +#include "Action/EventAction.h" +#include "Action/EventItemAction.h" +#include "Zone/ZonePosition.h" +#include "Math/CalcStats.h" +#include "Math/CalcBattle.h" #include extern Core::Logger g_log; @@ -743,7 +742,7 @@ uint8_t Core::Entity::Player::getLevel() const return static_cast< uint8_t >( m_classArray[classJobIndex] ); } -uint8_t Core::Entity::Player::getLevelForClass( Core::Common::ClassJob pClass ) const +uint8_t Core::Entity::Player::getLevelForClass( Common::ClassJob pClass ) const { uint8_t classJobIndex = g_exdData.m_classJobInfoMap[static_cast< uint8_t >( pClass )].exp_idx; return static_cast< uint8_t >( m_classArray[classJobIndex] ); @@ -772,7 +771,7 @@ void Core::Entity::Player::setInCombat( bool mode ) m_bInCombat = mode; } -void Core::Entity::Player::setClassJob( Core::Common::ClassJob classJob ) +void Core::Entity::Player::setClassJob( Common::ClassJob classJob ) { m_class = classJob; uint8_t level = getLevel(); @@ -801,7 +800,7 @@ void Core::Entity::Player::setLevel( uint8_t level ) m_classArray[classJobIndex] = level; } -void Core::Entity::Player::setLevelForClass( uint8_t level, Core::Common::ClassJob classjob ) +void Core::Entity::Player::setLevelForClass( uint8_t level, Common::ClassJob classjob ) { uint8_t classJobIndex = g_exdData.m_classJobInfoMap[static_cast< uint8_t >( classjob )].exp_idx; m_classArray[classJobIndex] = level; @@ -871,7 +870,7 @@ void Core::Entity::Player::setLookAt( uint8_t index, uint8_t value ) } // spawn this player for pTarget -void Core::Entity::Player::spawn( Core::Entity::PlayerPtr pTarget ) +void Core::Entity::Player::spawn( Entity::PlayerPtr pTarget ) { g_log.debug( "[" + std::to_string( pTarget->getId() ) + "] Spawning " + getName() + " for " + @@ -882,7 +881,7 @@ void Core::Entity::Player::spawn( Core::Entity::PlayerPtr pTarget ) } // despawn -void Core::Entity::Player::despawn( Core::Entity::ActorPtr pTarget ) +void Core::Entity::Player::despawn( Entity::ActorPtr pTarget ) { auto pPlayer = pTarget->getAsPlayer(); @@ -893,7 +892,7 @@ void Core::Entity::Player::despawn( Core::Entity::ActorPtr pTarget ) Core::Entity::ActorPtr Core::Entity::Player::lookupTargetById( uint64_t targetId ) { - Core::Entity::ActorPtr targetActor; + ActorPtr targetActor; auto inRange = getInRangeActors( true ); for( auto actor : inRange ) { @@ -957,7 +956,7 @@ bool Core::Entity::Player::actionHasCastTime( uint32_t actionId ) //TODO: Add lo } -bool Core::Entity::Player::hasStateFlag( Core::Common::PlayerStateFlag flag ) const +bool Core::Entity::Player::hasStateFlag( Common::PlayerStateFlag flag ) const { int32_t iFlag = static_cast< uint32_t >( flag ); @@ -968,7 +967,7 @@ bool Core::Entity::Player::hasStateFlag( Core::Common::PlayerStateFlag flag ) co return ( m_stateFlags[index] & value ) != 0; } -void Core::Entity::Player::setStateFlag( Core::Common::PlayerStateFlag flag ) +void Core::Entity::Player::setStateFlag( Common::PlayerStateFlag flag ) { int32_t iFlag = static_cast< uint32_t >( flag ); @@ -999,7 +998,7 @@ void Core::Entity::Player::sendStateFlags() queuePacket( PlayerStateFlagsPacket( *getAsPlayer() ) ); } -void Core::Entity::Player::unsetStateFlag( Core::Common::PlayerStateFlag flag ) +void Core::Entity::Player::unsetStateFlag( Common::PlayerStateFlag flag ) { if( !hasStateFlag( flag ) ) return; @@ -1209,7 +1208,7 @@ const uint8_t* Core::Entity::Player::getGcRankArray() const return m_gcRank; } -void Core::Entity::Player::queuePacket( Core::Network::Packets::GamePacketPtr pPacket ) +void Core::Entity::Player::queuePacket( Network::Packets::GamePacketPtr pPacket ) { auto pSession = g_serverZone.getSession( m_id ); @@ -1223,7 +1222,7 @@ void Core::Entity::Player::queuePacket( Core::Network::Packets::GamePacketPtr pP } -void Core::Entity::Player::queueChatPacket( Core::Network::Packets::GamePacketPtr pPacket ) +void Core::Entity::Player::queueChatPacket( Network::Packets::GamePacketPtr pPacket ) { auto pSession = g_serverZone.getSession( m_id ); @@ -1246,7 +1245,7 @@ void Core::Entity::Player::setLoadingComplete( bool bComplete ) m_bLoadingComplete = bComplete; } -void Core::Entity::Player::performZoning(uint16_t zoneId, const Common::FFXIVARR_POSITION3 &pos, float rotation) +void Core::Entity::Player::performZoning( uint16_t zoneId, const Common::FFXIVARR_POSITION3 &pos, float rotation ) { m_pos = pos; m_zoneId = zoneId; @@ -1319,14 +1318,14 @@ void Core::Entity::Player::updateHowtosSeen( uint32_t howToId ) } -void Core::Entity::Player::onMobAggro( Core::Entity::BattleNpcPtr pBNpc ) +void Core::Entity::Player::onMobAggro( BattleNpcPtr pBNpc ) { hateListAdd( pBNpc ); queuePacket( ActorControlPacket142( getId(), ToggleAggro, 1 ) ); } -void Core::Entity::Player::onMobDeaggro( Core::Entity::BattleNpcPtr pBNpc ) +void Core::Entity::Player::onMobDeaggro( BattleNpcPtr pBNpc ) { hateListRemove( pBNpc ); @@ -1334,7 +1333,7 @@ void Core::Entity::Player::onMobDeaggro( Core::Entity::BattleNpcPtr pBNpc ) queuePacket( ActorControlPacket142( getId(), ToggleAggro ) ); } -void Core::Entity::Player::hateListAdd( Core::Entity::BattleNpcPtr pBNpc ) +void Core::Entity::Player::hateListAdd( BattleNpcPtr pBNpc ) { if( m_freeHateSlotQueue.empty() ) @@ -1346,7 +1345,7 @@ void Core::Entity::Player::hateListAdd( Core::Entity::BattleNpcPtr pBNpc ) } -void Core::Entity::Player::hateListRemove( Core::Entity::BattleNpcPtr pBNpc ) +void Core::Entity::Player::hateListRemove( BattleNpcPtr pBNpc ) { auto it = m_actorIdTohateSlotMap.begin(); @@ -1364,7 +1363,7 @@ void Core::Entity::Player::hateListRemove( Core::Entity::BattleNpcPtr pBNpc ) } } -bool Core::Entity::Player::hateListHasMob( Core::Entity::BattleNpcPtr pBNpc ) +bool Core::Entity::Player::hateListHasMob( BattleNpcPtr pBNpc ) { auto it = m_actorIdTohateSlotMap.begin(); @@ -1406,7 +1405,7 @@ void Core::Entity::Player::setIsLogin( bool bIsLogin ) m_bIsLogin = bIsLogin; } -uint8_t * Core::Entity::Player::getTitleList() +uint8_t* Core::Entity::Player::getTitleList() { return m_titleList; } diff --git a/src/servers/Server_Zone/Actor/Player.h b/src/servers/Server_Zone/Actor/Player.h index 97d85638..a7b7400b 100644 --- a/src/servers/Server_Zone/Actor/Player.h +++ b/src/servers/Server_Zone/Actor/Player.h @@ -1,12 +1,12 @@ #ifndef _PLAYER_H #define _PLAYER_H -#include "src/servers/Server_Zone/Forwards.h" +#include "Forwards.h" -#include +#include #include "Actor.h" -#include "src/servers/Server_Zone/Inventory/Inventory.h" +#include "Inventory/Inventory.h" #include #include @@ -242,7 +242,7 @@ public: /*! returns the level of the currently active class / job */ uint8_t getLevel() const override; /*! returns the level of the provided class / job */ - uint8_t getLevelForClass( Core::Common::ClassJob pClass ) const; + uint8_t getLevelForClass( Common::ClassJob pClass ) const; /*! returns the exp of the currently active class / job */ uint32_t getExp() const; /*! sets the exp of the currently active class / job */ @@ -254,9 +254,9 @@ public: /*! set level on the currently active class / job to given level */ void setLevel( uint8_t level ); /*! set level on the provided class / job to given level */ - void setLevelForClass( uint8_t level, Core::Common::ClassJob classjob ); + void setLevelForClass( uint8_t level, Common::ClassJob classjob ); /*! change class or job to given class / job */ - void setClassJob( Core::Common::ClassJob classJob ); + void setClassJob( Common::ClassJob classJob ); /*! returns a pointer to the class array */ uint16_t* getClassArray(); /*! returns a const pointer to the class array */ diff --git a/src/servers/Server_Zone/Actor/PlayerEvent.cpp b/src/servers/Server_Zone/Actor/PlayerEvent.cpp index 9c0a1b02..0f4b5aae 100644 --- a/src/servers/Server_Zone/Actor/PlayerEvent.cpp +++ b/src/servers/Server_Zone/Actor/PlayerEvent.cpp @@ -1,29 +1,29 @@ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include "Player.h" -#include "src/servers/Server_Zone/Zone/Zone.h" +#include "Zone/Zone.h" -#include "src/servers/Server_Zone/Forwards.h" +#include "Forwards.h" -#include "src/servers/Server_Zone/Network/GameConnection.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/EventStartPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/EventPlayPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/EventFinishPacket.h" +#include "Network/GameConnection.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/InitUIPacket.h" +#include "Network/PacketWrappers/ServerNoticePacket.h" +#include "Network/PacketWrappers/EventStartPacket.h" +#include "Network/PacketWrappers/EventPlayPacket.h" +#include "Network/PacketWrappers/EventFinishPacket.h" -#include "src/servers/Server_Zone/Action/EventAction.h" -#include "src/servers/Server_Zone/Action/EventItemAction.h" +#include "Action/EventAction.h" +#include "Action/EventItemAction.h" -#include "src/servers/Server_Zone/Event/Event.h" -#include "src/servers/Server_Zone/Event/Event.h" -#include "Server_Zone/ServerZone.h" +#include "Event/Event.h" +#include "Event/Event.h" +#include "ServerZone.h" extern Core::Logger g_log; extern Core::ServerZone g_serverZone; diff --git a/src/servers/Server_Zone/Actor/PlayerInventory.cpp b/src/servers/Server_Zone/Actor/PlayerInventory.cpp index b1d03721..c35fb10a 100644 --- a/src/servers/Server_Zone/Actor/PlayerInventory.cpp +++ b/src/servers/Server_Zone/Actor/PlayerInventory.cpp @@ -1,18 +1,18 @@ -#include -#include -#include -#include +#include +#include +#include +#include #include "Player.h" -#include "src/servers/Server_Zone/Zone/ZoneMgr.h" -#include "src/servers/Server_Zone/Zone/Zone.h" +#include "Zone/ZoneMgr.h" +#include "Zone/Zone.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Inventory/Inventory.h" -#include "src/servers/Server_Zone/Inventory/Item.h" +#include "Inventory/Inventory.h" +#include "Inventory/Item.h" extern Core::Logger g_log; @@ -31,7 +31,7 @@ void Core::Entity::Player::sendItemLevel() } // TODO: This has to be redone and simplified -void Core::Entity::Player::equipWeapon( Core::ItemPtr pItem ) +void Core::Entity::Player::equipWeapon( ItemPtr pItem ) { ClassJob currentClass = static_cast< ClassJob >( getClass() ); @@ -86,7 +86,7 @@ void Core::Entity::Player::equipWeapon( Core::ItemPtr pItem ) } // equip an item -void Core::Entity::Player::equipItem( Inventory::EquipSlot equipSlotId, Core::ItemPtr pItem, bool sendUpdate ) +void Core::Entity::Player::equipItem( Inventory::EquipSlot equipSlotId, ItemPtr pItem, bool sendUpdate ) { //g_log.debug( "Equipping into slot " + std::to_string( equipSlotId ) ); diff --git a/src/servers/Server_Zone/Actor/PlayerQuest.cpp b/src/servers/Server_Zone/Actor/PlayerQuest.cpp index 3940954f..fa938d33 100644 --- a/src/servers/Server_Zone/Actor/PlayerQuest.cpp +++ b/src/servers/Server_Zone/Actor/PlayerQuest.cpp @@ -1,16 +1,16 @@ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include -#include "src/servers/Server_Zone/Network/GameConnection.h" +#include "Network/GameConnection.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/QuestMessagePacket.h" +#include "Network/PacketWrappers/QuestMessagePacket.h" -#include "src/servers/Server_Zone/Session.h" +#include "Server_Zone/Session.h" #include "Player.h" -#include "src/servers/Server_Zone/Inventory/Inventory.h" +#include "Server_Zone/Inventory/Inventory.h" extern Core::Data::ExdData g_exdData; diff --git a/src/servers/Server_Zone/Actor/PlayerSql.cpp b/src/servers/Server_Zone/Actor/PlayerSql.cpp index 7e9cfd71..d0c23880 100644 --- a/src/servers/Server_Zone/Actor/PlayerSql.cpp +++ b/src/servers/Server_Zone/Actor/PlayerSql.cpp @@ -1,34 +1,32 @@ -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include - -#include - #include "Player.h" -#include "src/servers/Server_Zone/Zone/ZoneMgr.h" -#include "src/servers/Server_Zone/Zone/Zone.h" +#include "Zone/ZoneMgr.h" +#include "Zone/Zone.h" -#include "src/servers/Server_Zone/ServerZone.h" +#include "ServerZone.h" -#include "src/servers/Server_Zone/Forwards.h" +#include "Forwards.h" -#include "src/servers/Server_Zone/Network/GameConnection.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h" -#include "src/servers/Server_Zone/Inventory/Inventory.h" +#include "Network/GameConnection.h" +#include "Network/PacketWrappers/InitUIPacket.h" +#include "Inventory/Inventory.h" -#include extern Core::Logger g_log; extern Core::ServerZone g_serverZone; @@ -41,11 +39,11 @@ using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; // load player from the db -bool Core::Entity::Player::load( uint32_t charId, Core::SessionPtr pSession ) +bool Core::Entity::Player::load( uint32_t charId, SessionPtr pSession ) { const std::string char_id_str = std::to_string( charId ); - auto stmt = g_charaDb.getPreparedStatement( Core::Db::CharaDbStatements::CHARA_SEL ); + auto stmt = g_charaDb.getPreparedStatement( Db::CharaDbStatements::CHARA_SEL ); stmt->setUInt( 1, charId ); auto res = g_charaDb.query( stmt ); @@ -220,7 +218,7 @@ bool Core::Entity::Player::load( uint32_t charId, Core::SessionPtr pSession ) bool Core::Entity::Player::loadActiveQuests() { - auto stmt = g_charaDb.getPreparedStatement( Core::Db::CharaDbStatements::CHARA_QUEST_SEL ); + auto stmt = g_charaDb.getPreparedStatement( Db::CharaDbStatements::CHARA_QUEST_SEL ); stmt->setUInt( 1, m_id ); auto res = g_charaDb.query( stmt ); @@ -257,7 +255,7 @@ bool Core::Entity::Player::loadClassData() { // ClassIdx, Exp, Lvl - auto stmt = g_charaDb.getPreparedStatement( Core::Db::CharaDbStatements::CHARA_CLASS_SEL ); + auto stmt = g_charaDb.getPreparedStatement( Db::CharaDbStatements::CHARA_CLASS_SEL ); stmt->setUInt( 1, m_id ); auto res = g_charaDb.query( stmt ); @@ -276,7 +274,7 @@ bool Core::Entity::Player::loadClassData() bool Core::Entity::Player::loadSearchInfo() { - auto stmt = g_charaDb.getPreparedStatement( Core::Db::CharaDbStatements::CHARA_SEARCHINFO_SEL ); + auto stmt = g_charaDb.getPreparedStatement( Db::CharaDbStatements::CHARA_SEARCHINFO_SEL ); stmt->setUInt( 1, m_id ); auto res = g_charaDb.query( stmt ); @@ -304,7 +302,7 @@ void Core::Entity::Player::updateSql() "EquippedMannequin 44, ConfigFlags 45, QuestCompleteFlags 46, OpeningSequence 47, " "QuestTracking 48, GrandCompany 49, GrandCompanyRank 50, Discovery 51, GMRank 52, Unlocks 53, " "CFPenaltyUntil 54"*/ - auto stmt = g_charaDb.getPreparedStatement( Core::Db::CharaDbStatements::CHARA_UP ); + auto stmt = g_charaDb.getPreparedStatement( Db::CharaDbStatements::CHARA_UP ); stmt->setInt( 1, getHp() ); stmt->setInt( 2, getMp() ); @@ -431,7 +429,7 @@ void Core::Entity::Player::updateDbClass() const uint8_t classJobIndex = g_exdData.m_classJobInfoMap[static_cast< uint8_t >( getClass() )].exp_idx; //Exp = ?, Lvl = ? WHERE CharacterId = ? AND ClassIdx = ? - auto stmtS = g_charaDb.getPreparedStatement( Core::Db::CHARA_CLASS_UP ); + auto stmtS = g_charaDb.getPreparedStatement( Db::CHARA_CLASS_UP ); stmtS->setInt( 1, getExp() ); stmtS->setInt( 2, getLevel() ); stmtS->setInt( 3, m_id ); @@ -441,17 +439,17 @@ void Core::Entity::Player::updateDbClass() const void Core::Entity::Player::updateDbSearchInfo() const { - auto stmtS = g_charaDb.getPreparedStatement( Core::Db::CHARA_SEARCHINFO_UP_SELECTCLASS ); + auto stmtS = g_charaDb.getPreparedStatement( Db::CHARA_SEARCHINFO_UP_SELECTCLASS ); stmtS->setInt( 1, m_searchSelectClass ); stmtS->setInt( 2, m_id ); g_charaDb.execute( stmtS ); - auto stmtS1 = g_charaDb.getPreparedStatement( Core::Db::CHARA_SEARCHINFO_UP_SELECTREGION ); + auto stmtS1 = g_charaDb.getPreparedStatement( Db::CHARA_SEARCHINFO_UP_SELECTREGION ); stmtS1->setInt( 1, m_searchSelectRegion ); stmtS1->setInt( 2, m_id ); g_charaDb.execute( stmtS1 ); - auto stmtS2 = g_charaDb.getPreparedStatement( Core::Db::CHARA_SEARCHINFO_UP_SELECTREGION ); + auto stmtS2 = g_charaDb.getPreparedStatement( Db::CHARA_SEARCHINFO_UP_SELECTREGION ); stmtS2->setString( 1, string( m_searchMessage != nullptr ? m_searchMessage : "" ) ); stmtS2->setInt( 2, m_id ); g_charaDb.execute( stmtS2 ); @@ -465,7 +463,7 @@ void Core::Entity::Player::updateDbAllQuests() const if( !m_activeQuests[i] ) continue; - auto stmtS3 = g_charaDb.getPreparedStatement( Core::Db::CHARA_QUEST_UP ); + auto stmtS3 = g_charaDb.getPreparedStatement( Db::CHARA_QUEST_UP ); stmtS3->setInt( 1, m_activeQuests[i]->c.sequence ); stmtS3->setInt( 2, m_activeQuests[i]->c.flags ); stmtS3->setInt( 3, m_activeQuests[i]->c.UI8A ); @@ -484,7 +482,7 @@ void Core::Entity::Player::updateDbAllQuests() const void Core::Entity::Player::deleteQuest( uint16_t questId ) const { - auto stmt = g_charaDb.getPreparedStatement( Core::Db::CHARA_QUEST_DEL ); + auto stmt = g_charaDb.getPreparedStatement( Db::CHARA_QUEST_DEL ); stmt->setInt( 1, m_id ); stmt->setInt( 2, questId ); g_charaDb.execute( stmt ); @@ -492,7 +490,7 @@ void Core::Entity::Player::deleteQuest( uint16_t questId ) const void Core::Entity::Player::insertQuest( uint16_t questId, uint8_t index, uint8_t seq ) const { - auto stmt = g_charaDb.getPreparedStatement( Core::Db::CHARA_QUEST_INS ); + auto stmt = g_charaDb.getPreparedStatement( Db::CHARA_QUEST_INS ); stmt->setInt( 1, m_id ); stmt->setInt( 2, index ); stmt->setInt( 3, questId ); diff --git a/src/servers/Server_Zone/CMakeLists.txt b/src/servers/Server_Zone/CMakeLists.txt index ddd78661..308f3ab7 100644 --- a/src/servers/Server_Zone/CMakeLists.txt +++ b/src/servers/Server_Zone/CMakeLists.txt @@ -3,6 +3,7 @@ cmake_policy(SET CMP0015 NEW) cmake_policy(SET CMP0014 OLD) project(Sapphire_Zone) +include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ) file(GLOB SERVER_PUBLIC_INCLUDE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} /*.h diff --git a/src/servers/Server_Zone/DebugCommand/DebugCommand.h b/src/servers/Server_Zone/DebugCommand/DebugCommand.h index 36036349..c6131a75 100644 --- a/src/servers/Server_Zone/DebugCommand/DebugCommand.h +++ b/src/servers/Server_Zone/DebugCommand/DebugCommand.h @@ -1,10 +1,10 @@ #ifndef _GAMECOMMAND_H_ #define _GAMECOMMAND_H_ -#include +#include -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Forwards.h" +#include "Actor/Player.h" +#include "Forwards.h" namespace Core { diff --git a/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp b/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp index ebcef25d..55b63d1d 100644 --- a/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp +++ b/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.cpp @@ -1,36 +1,36 @@ #include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include "DebugCommand.h" #include "DebugCommandHandler.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h" -#include "src/servers/Server_Zone/Network/GameConnection.h" -#include "src/servers/Server_Zone/Script/ScriptManager.h" +#include "Network/PacketWrappers/ServerNoticePacket.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" +#include "Network/PacketWrappers/InitUIPacket.h" +#include "Network/GameConnection.h" +#include "Script/ScriptManager.h" -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Actor/BattleNpc.h" +#include "Actor/Player.h" +#include "Actor/BattleNpc.h" -#include "src/servers/Server_Zone/Zone/Zone.h" +#include "Zone/Zone.h" -#include "src/servers/Server_Zone/ServerZone.h" +#include "ServerZone.h" -#include "src/servers/Server_Zone/StatusEffect/StatusEffect.h" -#include "src/servers/Server_Zone/Session.h" +#include "StatusEffect/StatusEffect.h" +#include "Session.h" #include -#include #include @@ -63,14 +63,14 @@ Core::DebugCommandHandler::~DebugCommandHandler() } // add a command set to the register map -void Core::DebugCommandHandler::registerCommand( const std::string& n, Core::DebugCommand::pFunc functionPtr, +void Core::DebugCommandHandler::registerCommand( const std::string& n, DebugCommand::pFunc functionPtr, const std::string& hText, uint8_t uLevel ) { m_commandMap[std::string( n )] = boost::make_shared< DebugCommand >( n, functionPtr, hText, uLevel ); } // try to retrieve the command in question, execute if found -void Core::DebugCommandHandler::execCommand( char * data, Core::Entity::Player& player ) +void Core::DebugCommandHandler::execCommand( char * data, Entity::Player& player ) { // define callback pointer @@ -117,14 +117,14 @@ void Core::DebugCommandHandler::execCommand( char * data, Core::Entity::Player& // Definition of the commands /////////////////////////////////////////////////////////////////////////////////////// -void Core::DebugCommandHandler::scriptReload( char * data, Core::Entity::Player& player, - boost::shared_ptr command ) +void Core::DebugCommandHandler::scriptReload( char * data, Entity::Player& player, + boost::shared_ptr< DebugCommand > command ) { g_scriptMgr.reload(); player.sendDebug( "Scripts reloaded." ); } -void Core::DebugCommandHandler::help( char* data, Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) +void Core::DebugCommandHandler::help( char* data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ) { player.sendDebug( "Registered debug commands:" ); for ( auto cmd : m_commandMap ) @@ -136,7 +136,7 @@ void Core::DebugCommandHandler::help( char* data, Entity::Player& player, boost: } } -void Core::DebugCommandHandler::set( char * data, Core::Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) +void Core::DebugCommandHandler::set( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ) { std::string subCommand = ""; std::string params = ""; @@ -240,13 +240,13 @@ void Core::DebugCommandHandler::set( char * data, Core::Entity::Player& player, sscanf( params.c_str(), "%d", &id ); - if( player.getLevelForClass( static_cast ( id ) ) == 0 ) + if( player.getLevelForClass( static_cast< Common::ClassJob > ( id ) ) == 0 ) { - player.setLevelForClass( 1, static_cast ( id ) ); - player.setClassJob( static_cast ( id ) ); + player.setLevelForClass( 1, static_cast< Common::ClassJob > ( id ) ); + player.setClassJob( static_cast< Common::ClassJob > ( id ) ); } else - player.setClassJob( static_cast ( id ) ); + player.setClassJob( static_cast< Common::ClassJob > ( id ) ); } else if ( subCommand == "cfpenalty" ) { @@ -269,7 +269,7 @@ void Core::DebugCommandHandler::set( char * data, Core::Entity::Player& player, uint32_t val; sscanf( params.c_str(), "%d %d", &slot, &val ); - player.setModelForSlot( static_cast( slot ), val ); + player.setModelForSlot( static_cast< Inventory::EquipSlot >( slot ), val ); player.sendModel(); player.sendDebug( "Model updated" ); } @@ -288,7 +288,7 @@ void Core::DebugCommandHandler::set( char * data, Core::Entity::Player& player, } -void Core::DebugCommandHandler::add( char * data, Core::Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) +void Core::DebugCommandHandler::add( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ) { std::string subCommand; std::string params = ""; @@ -328,7 +328,7 @@ void Core::DebugCommandHandler::add( char * data, Core::Entity::Player& player, player.addStatusEffect( effect ); } - else if ( subCommand == "title" ) + else if( subCommand == "title" ) { uint32_t titleId; sscanf( params.c_str(), "%u", &titleId ); @@ -390,7 +390,7 @@ void Core::DebugCommandHandler::add( char * data, Core::Entity::Player& player, Network::Packets::Server::ServerNoticePacket noticePacket( player, "Injecting ACTOR_CONTROL " + std::to_string( opcode ) ); - player.queuePacket(noticePacket); + player.queuePacket( noticePacket ); Network::Packets::Server::ActorControlPacket143 controlPacket( player, opcode, param1, param2, param3, param4, param5, param6, playerId ); @@ -405,7 +405,7 @@ void Core::DebugCommandHandler::add( char * data, Core::Entity::Player& player, } -void Core::DebugCommandHandler::get( char * data, Core::Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) +void Core::DebugCommandHandler::get( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ) { std::string subCommand; std::string params = ""; @@ -449,14 +449,14 @@ void Core::DebugCommandHandler::get( char * data, Core::Entity::Player& player, } -void Core::DebugCommandHandler::injectPacket( char * data, Core::Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) +void Core::DebugCommandHandler::injectPacket( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ) { auto pSession = g_serverZone.getSession( player.getId() ); if( pSession ) pSession->getZoneConnection()->injectPacket( data + 7, player ); } -void Core::DebugCommandHandler::injectChatPacket( char * data, Core::Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) +void Core::DebugCommandHandler::injectChatPacket( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ) { auto pSession = g_serverZone.getSession( player.getId() ); if( pSession ) @@ -510,14 +510,14 @@ void Core::DebugCommandHandler::nudge( char * data, Entity::Player& player, boos } } -void Core::DebugCommandHandler::serverInfo( char * data, Core::Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) +void Core::DebugCommandHandler::serverInfo( char * data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ) { player.sendDebug( "SapphireServer " + Version::VERSION + "\nRev: " + Version::GIT_HASH ); player.sendDebug( "Compiled: " __DATE__ " " __TIME__ ); player.sendDebug( "Sessions: " + std::to_string( g_serverZone.getSessionCount() ) ); } -void Core::DebugCommandHandler::unlockCharacter( char* data, Entity::Player& player, boost::shared_ptr< Core::DebugCommand > command ) +void Core::DebugCommandHandler::unlockCharacter( char* data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ) { player.unlock( ); } diff --git a/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.h b/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.h index 0e17722e..fb30cc99 100644 --- a/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.h +++ b/src/servers/Server_Zone/DebugCommand/DebugCommandHandler.h @@ -4,8 +4,8 @@ #include #include "DebugCommand.h" -#include -#include "src/servers/Server_Zone/Forwards.h" +#include +#include "Forwards.h" namespace Core { diff --git a/src/servers/Server_Zone/Event/Event.cpp b/src/servers/Server_Zone/Event/Event.cpp index 272084b3..ee1a3f6e 100644 --- a/src/servers/Server_Zone/Event/Event.cpp +++ b/src/servers/Server_Zone/Event/Event.cpp @@ -56,7 +56,7 @@ Core::Scripting::EventReturnCallback Core::Event::Event::getEventReturnCallback( return m_callback; } -void Core::Event::Event::setEventReturnCallback( Core::Scripting::EventReturnCallback callback ) +void Core::Event::Event::setEventReturnCallback( Scripting::EventReturnCallback callback ) { m_callback = callback; } diff --git a/src/servers/Server_Zone/Event/EventHelper.cpp b/src/servers/Server_Zone/Event/EventHelper.cpp index e59b322b..0ec74b98 100644 --- a/src/servers/Server_Zone/Event/EventHelper.cpp +++ b/src/servers/Server_Zone/Event/EventHelper.cpp @@ -1,8 +1,7 @@ #include "EventHelper.h" #include "Event.h" -#include - -#include +#include +#include extern Core::Data::ExdData g_exdData; diff --git a/src/servers/Server_Zone/Inventory/Inventory.cpp b/src/servers/Server_Zone/Inventory/Inventory.cpp index c03c9c00..ee982043 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.cpp +++ b/src/servers/Server_Zone/Inventory/Inventory.cpp @@ -1,22 +1,22 @@ -#include -#include -#include -#include +#include +#include +#include +#include #include "Inventory.h" -#include "src/servers/Server_Zone/Actor/Player.h" +#include "Actor/Player.h" #include "ItemContainer.h" #include "Item.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h" +#include "Network/PacketWrappers/ServerNoticePacket.h" #include #include -#include "src/servers/Server_Zone/Forwards.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" +#include "../Forwards.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" #include diff --git a/src/servers/Server_Zone/Inventory/Inventory.h b/src/servers/Server_Zone/Inventory/Inventory.h index b4663aa7..508c4733 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.h +++ b/src/servers/Server_Zone/Inventory/Inventory.h @@ -1,8 +1,8 @@ #ifndef INVENTORY_H_ #define INVENTORY_H_ #include -#include -#include "src/servers/Server_Zone/Forwards.h" +#include +#include "../Forwards.h" namespace Core { diff --git a/src/servers/Server_Zone/Inventory/Item.cpp b/src/servers/Server_Zone/Inventory/Item.cpp index a5e8dd84..2844c73e 100644 --- a/src/servers/Server_Zone/Inventory/Item.cpp +++ b/src/servers/Server_Zone/Inventory/Item.cpp @@ -1,5 +1,5 @@ -#include -#include +#include +#include #include "Item.h" extern Core::Data::ExdData g_exdData; diff --git a/src/servers/Server_Zone/Inventory/Item.h b/src/servers/Server_Zone/Inventory/Item.h index 198607f5..fdb3e6a3 100644 --- a/src/servers/Server_Zone/Inventory/Item.h +++ b/src/servers/Server_Zone/Inventory/Item.h @@ -1,7 +1,7 @@ #ifndef _ITEM_H_ #define _ITEM_H_ -#include +#include namespace Core { @@ -81,4 +81,4 @@ protected: } -#endif \ No newline at end of file +#endif diff --git a/src/servers/Server_Zone/Inventory/ItemContainer.cpp b/src/servers/Server_Zone/Inventory/ItemContainer.cpp index e3a1f7ec..baa3da34 100644 --- a/src/servers/Server_Zone/Inventory/ItemContainer.cpp +++ b/src/servers/Server_Zone/Inventory/ItemContainer.cpp @@ -1,14 +1,14 @@ -#include "src/servers/Server_Zone/Forwards.h" +#include "../Forwards.h" #include "ItemContainer.h" -#include -#include +#include +#include +#include -#include "src/servers/Server_Zone/Actor/Player.h" +#include "Actor/Player.h" #include "Item.h" -#include extern Core::Logger g_log; @@ -86,7 +86,7 @@ Core::ItemPtr Core::ItemContainer::getItem( uint8_t slotId ) return m_itemMap[slotId]; } -void Core::ItemContainer::setItem( uint8_t slotId, Core::ItemPtr pItem ) +void Core::ItemContainer::setItem( uint8_t slotId, ItemPtr pItem ) { if( ( slotId > m_size ) ) return; diff --git a/src/servers/Server_Zone/Inventory/ItemContainer.h b/src/servers/Server_Zone/Inventory/ItemContainer.h index 745e8c7b..8147905d 100644 --- a/src/servers/Server_Zone/Inventory/ItemContainer.h +++ b/src/servers/Server_Zone/Inventory/ItemContainer.h @@ -1,10 +1,9 @@ -#pragma once #ifndef _ITEMCONTAINER_H_ #define _ITEMCONTAINER_H_ #include -#include +#include #include "../Forwards.h" @@ -17,7 +16,7 @@ namespace Core { public: - ItemContainer(uint16_t locationId); + ItemContainer( uint16_t locationId ); ~ItemContainer(); uint16_t getId() const; @@ -30,9 +29,9 @@ namespace Core const ItemMap& getItemMap() const; - ItemPtr getItem(uint8_t slotId); + ItemPtr getItem( uint8_t slotId ); - void setItem(uint8_t slotId, ItemPtr item); + void setItem( uint8_t slotId, ItemPtr item ); int16_t getFreeSlot(); @@ -45,4 +44,4 @@ namespace Core } -#endif \ No newline at end of file +#endif diff --git a/src/servers/Server_Zone/Math/CalcBattle.cpp b/src/servers/Server_Zone/Math/CalcBattle.cpp index bc2bc322..f68d1872 100644 --- a/src/servers/Server_Zone/Math/CalcBattle.cpp +++ b/src/servers/Server_Zone/Math/CalcBattle.cpp @@ -2,9 +2,8 @@ #include #include -#include -#include - +#include "Actor/Actor.h" +#include "Actor/Player.h" #include "CalcBattle.h" @@ -42,4 +41,4 @@ uint32_t CalcBattle::calculateHealValue( PlayerPtr pPlayer, uint32_t potency ) // consider 3% variation return potency / 10; -} \ No newline at end of file +} diff --git a/src/servers/Server_Zone/Math/CalcBattle.h b/src/servers/Server_Zone/Math/CalcBattle.h index 59a4c421..b373ac99 100644 --- a/src/servers/Server_Zone/Math/CalcBattle.h +++ b/src/servers/Server_Zone/Math/CalcBattle.h @@ -2,7 +2,7 @@ #define _CALCBATTLE_H #include -#include +#include "Actor/Actor.h" using namespace Core::Entity; @@ -21,4 +21,4 @@ namespace Math { } } -#endif \ No newline at end of file +#endif diff --git a/src/servers/Server_Zone/Math/CalcStats.cpp b/src/servers/Server_Zone/Math/CalcStats.cpp index 4d6ae4d6..0e31d183 100644 --- a/src/servers/Server_Zone/Math/CalcStats.cpp +++ b/src/servers/Server_Zone/Math/CalcStats.cpp @@ -2,8 +2,8 @@ #include #include -#include -#include +#include "Actor/Actor.h" +#include "Actor/Player.h" #include "CalcStats.h" @@ -111,4 +111,4 @@ uint32_t CalcStats::calculateMaxMp( PlayerPtr pPlayer ) uint16_t result = static_cast< uint16_t >( floor( floor( piety - baseStat ) * ( pietyScalar / 100 ) + baseMp ) * jobModMp / 100 ); return result; -} \ No newline at end of file +} diff --git a/src/servers/Server_Zone/Math/CalcStats.h b/src/servers/Server_Zone/Math/CalcStats.h index 74762bb9..94a0a324 100644 --- a/src/servers/Server_Zone/Math/CalcStats.h +++ b/src/servers/Server_Zone/Math/CalcStats.h @@ -2,7 +2,7 @@ #define _CALCSTATS_H #include -#include +#include "Actor/Actor.h" using namespace Core::Entity; @@ -23,4 +23,4 @@ namespace Math { } } -#endif \ No newline at end of file +#endif diff --git a/src/servers/Server_Zone/Network/GameConnection.cpp b/src/servers/Server_Zone/Network/GameConnection.cpp index 1b5c3360..1a52c5f6 100644 --- a/src/servers/Server_Zone/Network/GameConnection.cpp +++ b/src/servers/Server_Zone/Network/GameConnection.cpp @@ -1,20 +1,20 @@ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include "GameConnection.h" -#include "src/servers/Server_Zone/ServerZone.h" -#include "src/servers/Server_Zone/Session.h" -#include "src/servers/Server_Zone/Zone/Zone.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h" -#include "src/servers/Server_Zone/DebugCommand/DebugCommandHandler.h" -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Forwards.h" +#include "ServerZone.h" +#include "Session.h" +#include "Zone/Zone.h" +#include "Network/PacketWrappers/InitUIPacket.h" +#include "DebugCommand/DebugCommandHandler.h" +#include "Actor/Player.h" +#include "Forwards.h" extern Core::DebugCommandHandler g_gameCommandMgr; extern Core::Logger g_log; diff --git a/src/servers/Server_Zone/Network/GameConnection.h b/src/servers/Server_Zone/Network/GameConnection.h index f0136c3f..d4e2dfc2 100644 --- a/src/servers/Server_Zone/Network/GameConnection.h +++ b/src/servers/Server_Zone/Network/GameConnection.h @@ -1,16 +1,13 @@ - #ifndef GAMECONNECTION_H #define GAMECONNECTION_H -#include -#include -#include +#include +#include +#include +#include +#include -#include - -#include - -#include "src/servers/Server_Zone/Forwards.h" +#include "Forwards.h" #define DECLARE_HANDLER( x ) void x( const Packets::GamePacket& inPacket, Entity::Player& player ) diff --git a/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp b/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp index 0bfc6364..86404013 100644 --- a/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp +++ b/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp @@ -1,39 +1,39 @@ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include -#include "src/servers/Server_Zone/Network/GameConnection.h" +#include "Network/GameConnection.h" -#include "src/servers/Server_Zone/Session.h" -#include "src/servers/Server_Zone/Zone/Zone.h" -#include "src/servers/Server_Zone/Zone/ZonePosition.h" -#include "src/servers/Server_Zone/ServerZone.h" -#include "src/servers/Server_Zone/Zone/ZoneMgr.h" +#include "Session.h" +#include "Zone/Zone.h" +#include "Zone/ZonePosition.h" +#include "ServerZone.h" +#include "Zone/ZoneMgr.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/PingPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ChatPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/EventStartPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/EventFinishPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h" +#include "Network/PacketWrappers/InitUIPacket.h" +#include "Network/PacketWrappers/PingPacket.h" +#include "Network/PacketWrappers/MoveActorPacket.h" +#include "Network/PacketWrappers/ChatPacket.h" +#include "Network/PacketWrappers/ServerNoticePacket.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" +#include "Network/PacketWrappers/ActorControlPacket144.h" +#include "Network/PacketWrappers/EventStartPacket.h" +#include "Network/PacketWrappers/EventFinishPacket.h" +#include "Network/PacketWrappers/PlayerStateFlagsPacket.h" -#include "src/servers/Server_Zone/DebugCommand/DebugCommandHandler.h" -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Inventory/Inventory.h" -#include "src/servers/Server_Zone/Forwards.h" -#include "src/servers/Server_Zone/Event/EventHelper.h" -#include "src/servers/Server_Zone/Action/Action.h" -#include "src/servers/Server_Zone/Action/ActionTeleport.h" +#include "DebugCommand/DebugCommandHandler.h" +#include "Actor/Player.h" +#include "Inventory/Inventory.h" +#include "Forwards.h" +#include "Event/EventHelper.h" +#include "Action/Action.h" +#include "Action/ActionTeleport.h" extern Core::Logger g_log; extern Core::ServerZone g_serverZone; diff --git a/src/servers/Server_Zone/Network/Handlers/CFHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/CFHandlers.cpp index d70e7f81..b3df64e5 100644 --- a/src/servers/Server_Zone/Network/Handlers/CFHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/CFHandlers.cpp @@ -1,21 +1,19 @@ -#include -#include -#include -#include -#include - -#include "src/servers/Server_Zone/Network/GameConnection.h" -#include "src/servers/Server_Zone/Session.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h" -#include "src/servers/Server_Zone/Actor/Player.h" - -#include "src/servers/Server_Zone/Forwards.h" +#include +#include +#include +#include +#include +#include "Network/GameConnection.h" +#include "Session.h" +#include "Network/PacketWrappers/ServerNoticePacket.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" +#include "Network/PacketWrappers/ActorControlPacket144.h" +#include "Network/PacketWrappers/PlayerStateFlagsPacket.h" +#include "Actor/Player.h" +#include "Forwards.h" extern Core::Logger g_log; diff --git a/src/servers/Server_Zone/Network/Handlers/EventHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/EventHandlers.cpp index dad05a96..8a9f814b 100644 --- a/src/servers/Server_Zone/Network/Handlers/EventHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/EventHandlers.cpp @@ -1,24 +1,24 @@ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include -#include "src/servers/Server_Zone/Network/GameConnection.h" -#include "src/servers/Server_Zone/Session.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/EventStartPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/EventFinishPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h" -#include "src/servers/Server_Zone/Script/ScriptManager.h" -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Forwards.h" -#include "src/servers/Server_Zone/Event/EventHelper.h" +#include "Network/GameConnection.h" +#include "Session.h" +#include "Network/PacketWrappers/ServerNoticePacket.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" +#include "Network/PacketWrappers/ActorControlPacket144.h" +#include "Network/PacketWrappers/EventStartPacket.h" +#include "Network/PacketWrappers/EventFinishPacket.h" +#include "Network/PacketWrappers/PlayerStateFlagsPacket.h" +#include "Script/ScriptManager.h" +#include "Actor/Player.h" +#include "Forwards.h" +#include "Event/EventHelper.h" extern Core::Scripting::ScriptManager g_scriptMgr; diff --git a/src/servers/Server_Zone/Network/Handlers/GMCommandHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/GMCommandHandlers.cpp index 6bd46b32..923b37b9 100644 --- a/src/servers/Server_Zone/Network/Handlers/GMCommandHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/GMCommandHandlers.cpp @@ -1,39 +1,39 @@ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include -#include "src/servers/Server_Zone/Network/GameConnection.h" +#include "Network/GameConnection.h" -#include "src/servers/Server_Zone/Session.h" -#include "src/servers/Server_Zone/Zone/Zone.h" -#include "src/servers/Server_Zone/Zone/ZonePosition.h" -#include "src/servers/Server_Zone/ServerZone.h" -#include "src/servers/Server_Zone/Zone/ZoneMgr.h" +#include "Session.h" +#include "Zone/Zone.h" +#include "Zone/ZonePosition.h" +#include "ServerZone.h" +#include "Zone/ZoneMgr.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/PingPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ChatPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/EventStartPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/EventFinishPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h" +#include "Network/PacketWrappers/InitUIPacket.h" +#include "Network/PacketWrappers/PingPacket.h" +#include "Network/PacketWrappers/MoveActorPacket.h" +#include "Network/PacketWrappers/ChatPacket.h" +#include "Network/PacketWrappers/ServerNoticePacket.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" +#include "Network/PacketWrappers/ActorControlPacket144.h" +#include "Network/PacketWrappers/EventStartPacket.h" +#include "Network/PacketWrappers/EventFinishPacket.h" +#include "Network/PacketWrappers/PlayerStateFlagsPacket.h" -#include "src/servers/Server_Zone/DebugCommand/DebugCommandHandler.h" -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Inventory/Inventory.h" -#include "src/servers/Server_Zone/Forwards.h" -#include "src/servers/Server_Zone/Event/EventHelper.h" -#include "src/servers/Server_Zone/Action/Action.h" -#include "src/servers/Server_Zone/Action/ActionTeleport.h" +#include "DebugCommand/DebugCommandHandler.h" +#include "Actor/Player.h" +#include "Inventory/Inventory.h" +#include "Forwards.h" +#include "Event/EventHelper.h" +#include "Action/Action.h" +#include "Action/ActionTeleport.h" extern Core::Logger g_log; extern Core::ServerZone g_serverZone; diff --git a/src/servers/Server_Zone/Network/Handlers/InventoryHandler.cpp b/src/servers/Server_Zone/Network/Handlers/InventoryHandler.cpp index 2da36167..52aaaad3 100644 --- a/src/servers/Server_Zone/Network/Handlers/InventoryHandler.cpp +++ b/src/servers/Server_Zone/Network/Handlers/InventoryHandler.cpp @@ -1,29 +1,29 @@ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include -#include "src/servers/Server_Zone/Network/GameConnection.h" +#include "Network/GameConnection.h" -#include "src/servers/Server_Zone/Session.h" -#include "src/servers/Server_Zone/Zone/Zone.h" -#include "src/servers/Server_Zone/Zone/ZonePosition.h" -#include "src/servers/Server_Zone/ServerZone.h" -#include "src/servers/Server_Zone/Zone/ZoneMgr.h" +#include "Session.h" +#include "Zone/Zone.h" +#include "Zone/ZonePosition.h" +#include "ServerZone.h" +#include "Zone/ZoneMgr.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h" +#include "Network/PacketWrappers/ServerNoticePacket.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" +#include "Network/PacketWrappers/ActorControlPacket144.h" -#include "src/servers/Server_Zone/DebugCommand/DebugCommandHandler.h" -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Inventory/Inventory.h" -#include "src/servers/Server_Zone/Forwards.h" +#include "DebugCommand/DebugCommandHandler.h" +#include "Actor/Player.h" +#include "Inventory/Inventory.h" +#include "Forwards.h" extern Core::Logger g_log; extern Core::ServerZone g_serverZone; diff --git a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp index 98c9df36..0f397f2a 100644 --- a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp @@ -1,43 +1,42 @@ -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include "Network/GameConnection.h" -#include "src/servers/Server_Zone/Network/GameConnection.h" +#include "Session.h" +#include "Zone/Zone.h" +#include "Zone/ZonePosition.h" +#include "ServerZone.h" +#include "Zone/ZoneMgr.h" -#include "src/servers/Server_Zone/Session.h" -#include "src/servers/Server_Zone/Zone/Zone.h" -#include "src/servers/Server_Zone/Zone/ZonePosition.h" -#include "src/servers/Server_Zone/ServerZone.h" -#include "src/servers/Server_Zone/Zone/ZoneMgr.h" +#include "Network/PacketWrappers/InitUIPacket.h" +#include "Network/PacketWrappers/PingPacket.h" +#include "Network/PacketWrappers/MoveActorPacket.h" +#include "Network/PacketWrappers/ChatPacket.h" +#include "Network/PacketWrappers/ServerNoticePacket.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" +#include "Network/PacketWrappers/ActorControlPacket144.h" +#include "Network/PacketWrappers/EventStartPacket.h" +#include "Network/PacketWrappers/EventFinishPacket.h" +#include "Network/PacketWrappers/PlayerStateFlagsPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/PingPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ChatPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/EventStartPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/EventFinishPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h" +#include "DebugCommand/DebugCommandHandler.h" +#include "Actor/Player.h" +#include "Inventory/Inventory.h" +#include "Forwards.h" +#include "Event/EventHelper.h" +#include "Action/Action.h" +#include "Action/ActionTeleport.h" -#include "src/servers/Server_Zone/DebugCommand/DebugCommandHandler.h" -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Inventory/Inventory.h" -#include "src/servers/Server_Zone/Forwards.h" -#include "src/servers/Server_Zone/Event/EventHelper.h" -#include "src/servers/Server_Zone/Action/Action.h" -#include "src/servers/Server_Zone/Action/ActionTeleport.h" - -#include extern Core::Logger g_log; extern Core::ServerZone g_serverZone; diff --git a/src/servers/Server_Zone/Network/Handlers/SkillHandler.cpp b/src/servers/Server_Zone/Network/Handlers/SkillHandler.cpp index 01323053..eaaa1d2b 100644 --- a/src/servers/Server_Zone/Network/Handlers/SkillHandler.cpp +++ b/src/servers/Server_Zone/Network/Handlers/SkillHandler.cpp @@ -1,34 +1,34 @@ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include -#include "src/servers/Server_Zone/Network/GameConnection.h" +#include "Network/GameConnection.h" -#include "src/servers/Server_Zone/Session.h" +#include "Session.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h" +#include "Network/PacketWrappers/ServerNoticePacket.h" +#include "Network/PacketWrappers/ActorControlPacket142.h" +#include "Network/PacketWrappers/ActorControlPacket143.h" +#include "Network/PacketWrappers/ActorControlPacket144.h" +#include "Network/PacketWrappers/MoveActorPacket.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h" +#include "Network/PacketWrappers/PlayerStateFlagsPacket.h" -#include "src/servers/Server_Zone/DebugCommand/DebugCommandHandler.h" +#include "DebugCommand/DebugCommandHandler.h" -#include "src/servers/Server_Zone/Actor/Player.h" +#include "Actor/Player.h" -#include "src/servers/Server_Zone/Forwards.h" +#include "Forwards.h" -#include "src/servers/Server_Zone/Action/Action.h" -#include "src/servers/Server_Zone/Action/ActionCast.h" -#include "src/servers/Server_Zone/Action/ActionMount.h" -#include "src/servers/Server_Zone/Script/ScriptManager.h" -#include "Server_Zone/Network/PacketWrappers/MoveActorPacket.h" +#include "Action/Action.h" +#include "Action/ActionCast.h" +#include "Action/ActionMount.h" +#include "Script/ScriptManager.h" extern Core::Scripting::ScriptManager g_scriptMgr; diff --git a/src/servers/Server_Zone/Script/ScriptManager.cpp b/src/servers/Server_Zone/Script/ScriptManager.cpp index 5972deaa..7ee72a52 100644 --- a/src/servers/Server_Zone/Script/ScriptManager.cpp +++ b/src/servers/Server_Zone/Script/ScriptManager.cpp @@ -1,18 +1,18 @@ -#include -#include +#include +#include #include -#include +#include -#include "src/servers/Server_Zone/Zone/Zone.h" -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Actor/BattleNpc.h" -#include "src/servers/Server_Zone/ServerZone.h" -#include "src/servers/Server_Zone/Event/Event.h" -#include "src/servers/Server_Zone/Event/EventHelper.h" -#include "src/servers/Server_Zone/StatusEffect/StatusEffect.h" -#include "src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h" -#include "src/servers/Server_Zone/Script/ScriptManager.h" +#include "Zone/Zone.h" +#include "Actor/Player.h" +#include "Actor/BattleNpc.h" +#include "ServerZone.h" +#include "Event/Event.h" +#include "Event/EventHelper.h" +#include "StatusEffect/StatusEffect.h" +#include "Network/PacketWrappers/ServerNoticePacket.h" +#include "Script/ScriptManager.h" #include #include @@ -55,7 +55,7 @@ void Core::Scripting::ScriptManager::loadDir( std::string dirname, std::set& Core::Scripting::ScriptManage } -bool Core::Scripting::ScriptManager::onTalk( Core::Entity::Player& player, uint64_t actorId, uint32_t eventId ) +bool Core::Scripting::ScriptManager::onTalk( Entity::Player& player, uint64_t actorId, uint32_t eventId ) { std::string eventName = "onTalk"; std::string objName = Event::getEventName( eventId ); player.sendDebug( "Actor: " + std::to_string( actorId ) + " -> " + - std::to_string( Core::Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ) ) + + std::to_string( Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ) ) + " \neventId: " + std::to_string( eventId ) + " (0x" + boost::str( boost::format( "%|08X|" ) @@ -135,7 +135,7 @@ bool Core::Scripting::ScriptManager::onTalk( Core::Entity::Player& player, uint6 return true; } -bool Core::Scripting::ScriptManager::onEnterTerritory( Core::Entity::Player& player, uint32_t eventId, +bool Core::Scripting::ScriptManager::onEnterTerritory( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 ) { std::string eventName = "onEnterTerritory"; @@ -222,7 +222,7 @@ bool Core::Scripting::ScriptManager::onOutsideRange( Entity::Player& player, uin return true; } -bool Core::Scripting::ScriptManager::onEmote( Core::Entity::Player& player, uint64_t actorId, +bool Core::Scripting::ScriptManager::onEmote( Entity::Player& player, uint64_t actorId, uint32_t eventId, uint8_t emoteId ) { std::string eventName = "onEmote"; @@ -260,7 +260,7 @@ bool Core::Scripting::ScriptManager::onEmote( Core::Entity::Player& player, uint return true; } -bool Core::Scripting::ScriptManager::onEventHandlerReturn( Core::Entity::Player& player, uint32_t eventId, +bool Core::Scripting::ScriptManager::onEventHandlerReturn( Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param1, uint16_t param2, uint16_t param3 ) { @@ -304,7 +304,7 @@ bool Core::Scripting::ScriptManager::onEventHandlerReturn( Core::Entity::Player& return true; } -bool Core::Scripting::ScriptManager::onEventHandlerTradeReturn( Core::Entity::Player& player, uint32_t eventId, +bool Core::Scripting::ScriptManager::onEventHandlerTradeReturn( Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param, uint32_t catalogId ) { std::string eventName = Event::getEventName( eventId ) + "_TRADE"; @@ -446,7 +446,7 @@ bool Core::Scripting::ScriptManager::onStatusTick( Entity::ActorPtr pActor, Core pActor->getAsPlayer()->sendDebug( "Calling: " + objName + "." + eventName ); auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, Entity::Actor&, - Core::StatusEffect::StatusEffect& ) > >( eventName ); + StatusEffect::StatusEffect& ) > >( eventName ); fn( obj, *pActor, effect ); } catch( std::exception& e ) diff --git a/src/servers/Server_Zone/Script/ScriptManager.h b/src/servers/Server_Zone/Script/ScriptManager.h index 42b5efb7..2e66f3cf 100644 --- a/src/servers/Server_Zone/Script/ScriptManager.h +++ b/src/servers/Server_Zone/Script/ScriptManager.h @@ -5,8 +5,8 @@ #include #include -#include -#include "../Forwards.h" +#include +#include "Forwards.h" namespace chaiscript diff --git a/src/servers/Server_Zone/Script/ScriptManagerInit.cpp b/src/servers/Server_Zone/Script/ScriptManagerInit.cpp index 71b891cc..dbf76194 100644 --- a/src/servers/Server_Zone/Script/ScriptManagerInit.cpp +++ b/src/servers/Server_Zone/Script/ScriptManagerInit.cpp @@ -4,18 +4,17 @@ #include #include -#include "src/servers/Server_Zone/ServerZone.h" +#include "ServerZone.h" -#include "src/servers/Server_Zone/Script/ScriptManager.h" +#include "Script/ScriptManager.h" -#include "src/servers/Server_Zone/Zone/Zone.h" -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Actor/BattleNpc.h" -#include "src/servers/Server_Zone/Event/Event.h" -#include "src/servers/Server_Zone/Event/EventHelper.h" - -#include "src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h" -#include "src/servers/Server_Zone/StatusEffect/StatusEffect.h" +#include "Zone/Zone.h" +#include "Actor/Player.h" +#include "Actor/BattleNpc.h" +#include "Event/Event.h" +#include "Event/EventHelper.h" +#include "Network/PacketWrappers/ServerNoticePacket.h" +#include "StatusEffect/StatusEffect.h" #include diff --git a/src/servers/Server_Zone/ServerZone.cpp b/src/servers/Server_Zone/ServerZone.cpp index bf16a446..a863b06a 100644 --- a/src/servers/Server_Zone/ServerZone.cpp +++ b/src/servers/Server_Zone/ServerZone.cpp @@ -1,9 +1,9 @@ #include "ServerZone.h" -#include -#include -#include -#include +#include +#include +#include +#include #include #include diff --git a/src/servers/Server_Zone/ServerZone.h b/src/servers/Server_Zone/ServerZone.h index 33d6a329..724f031e 100644 --- a/src/servers/Server_Zone/ServerZone.h +++ b/src/servers/Server_Zone/ServerZone.h @@ -1,14 +1,14 @@ #ifndef __GAMESERVER_H #define __GAMESERVER_H -#include +#include #include #include #include #include "Forwards.h" -#include "src/servers/Server_Zone/Actor/BattleNpcTemplate.h" +#include "Actor/BattleNpcTemplate.h" namespace Core { diff --git a/src/servers/Server_Zone/Session.cpp b/src/servers/Server_Zone/Session.cpp index 9f5df569..03965da3 100644 --- a/src/servers/Server_Zone/Session.cpp +++ b/src/servers/Server_Zone/Session.cpp @@ -1,11 +1,11 @@ #include -#include -#include -#include "src/servers/Server_Zone/Network/GameConnection.h" +#include +#include +#include "Network/GameConnection.h" #include "Session.h" -#include "src/servers/Server_Zone/Actor/Player.h" +#include "Actor/Player.h" Core::Session::Session( uint32_t sessionId ) : m_sessionId( sessionId ) @@ -23,13 +23,13 @@ Core::Session::~Session() { } -void Core::Session::setZoneConnection( Core::Network::GameConnectionPtr pZoneCon ) +void Core::Session::setZoneConnection( Network::GameConnectionPtr pZoneCon ) { pZoneCon->m_conType = Network::ConnectionType::Zone; m_pZoneConnection = pZoneCon; } -void Core::Session::setChatConnection( Core::Network::GameConnectionPtr pChatCon ) +void Core::Session::setChatConnection( Network::GameConnectionPtr pChatCon ) { pChatCon->m_conType = Network::ConnectionType::Chat; m_pChatConnection = pChatCon; diff --git a/src/servers/Server_Zone/Zone/Cell.cpp b/src/servers/Server_Zone/Zone/Cell.cpp index 7a598ae7..9ee35e31 100644 --- a/src/servers/Server_Zone/Zone/Cell.cpp +++ b/src/servers/Server_Zone/Zone/Cell.cpp @@ -1,9 +1,8 @@ - #include "Cell.h" -#include "src/servers/Server_Zone/Actor/Actor.h" -#include "src/servers/Server_Zone/Actor/BattleNpc.h" -#include "src/servers/Server_Zone/Forwards.h" +#include "Actor/Actor.h" +#include "Actor/BattleNpc.h" +#include "Forwards.h" #include "Zone.h" diff --git a/src/servers/Server_Zone/Zone/Cell.h b/src/servers/Server_Zone/Zone/Cell.h index 2d85748a..ede57a6f 100644 --- a/src/servers/Server_Zone/Zone/Cell.h +++ b/src/servers/Server_Zone/Zone/Cell.h @@ -4,7 +4,7 @@ #include -#include "src/servers/Server_Zone/Forwards.h" +#include "Forwards.h" #include namespace Core { diff --git a/src/servers/Server_Zone/Zone/Zone.cpp b/src/servers/Server_Zone/Zone/Zone.cpp index 2a8f290a..9da356eb 100644 --- a/src/servers/Server_Zone/Zone/Zone.cpp +++ b/src/servers/Server_Zone/Zone/Zone.cpp @@ -1,36 +1,35 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include "Zone.h" #include "ZoneMgr.h" -#include "src/servers/Server_Zone/Session.h" -#include "src/servers/Server_Zone/Actor/Actor.h" -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Actor/BattleNpc.h" +#include "Session.h" +#include "Actor/Actor.h" +#include "Actor/Player.h" +#include "Actor/BattleNpc.h" -#include "src/servers/Server_Zone/Forwards.h" +#include "Forwards.h" -#include "src/servers/Server_Zone/Network/GameConnection.h" -#include "src/servers/Server_Zone/ServerZone.h" -#include "src/servers/Server_Zone/Script/ScriptManager.h" +#include "Network/GameConnection.h" +#include "ServerZone.h" +#include "Script/ScriptManager.h" #include "CellHandler.h" #include -#include - extern Core::Logger g_log; extern Core::ServerZone g_serverZone; extern Core::Data::ExdData g_exdData; @@ -180,16 +179,10 @@ void Zone::loadCellCache() pos.x = posX; pos.y = posY; pos.z = posZ; - Entity::BattleNpcPtr pBNpc( new Entity::BattleNpc( modelId, nameId, - pos, + Entity::BattleNpcPtr pBNpc( new Entity::BattleNpc( modelId, nameId, pos, sizeId, type, level, behaviour, mobType ) ); pBNpc->setRotation( static_cast< float >( rotation ) ); cache.push_back( pBNpc ); - - //pushActor( pBNpc ); - - //m_zonePositionMap[id] = ZonePositionPtr( new ZonePosition( id, targetZoneId, Position( posX, posY, posZ, posO ), radius ) ); - } @@ -290,9 +283,6 @@ void Zone::pushActor( Entity::ActorPtr pActor ) g_log.debug( "[Zone:" + m_zoneCode + "] Adding player [" + std::to_string( pActor->getId() ) + "]" ); auto pPlayer = pActor->getAsPlayer(); - // fire the onEnter Lua event - //LuaManager->onRegionEnter(this, pPlayer); - auto pSession = g_serverZone.getSession( pPlayer->getId() ); if( pSession ) m_sessionSet.insert( pSession ); @@ -343,7 +333,7 @@ void Zone::removeActor( Entity::ActorPtr pActor ) { Entity::ActorPtr pCurAct; - for( auto iter = pActor->m_inRangeActors.begin(); iter != pActor->m_inRangeActors.end();) + for( auto iter = pActor->m_inRangeActors.begin(); iter != pActor->m_inRangeActors.end(); ) { pCurAct = *iter; auto iter2 = iter++; @@ -368,7 +358,7 @@ void Zone::queueOutPacketForRange( Entity::Player& sourcePlayer, uint32_t range, if( ( distance < range ) && sourcePlayer.getId() != ( *it ).second->getId() ) { auto pSession = g_serverZone.getSession( ( *it ).second->getId() ); - pPacketEntry->setValAt( 0x08, ( *it ).second->getId() ); + pPacketEntry->setValAt< uint32_t >( 0x08, ( *it ).second->getId() ); if( pSession ) pSession->getZoneConnection()->queueOutPacket( pPacketEntry ); } diff --git a/src/servers/Server_Zone/Zone/Zone.h b/src/servers/Server_Zone/Zone/Zone.h index 37c0f7d1..fa318535 100644 --- a/src/servers/Server_Zone/Zone/Zone.h +++ b/src/servers/Server_Zone/Zone/Zone.h @@ -2,12 +2,12 @@ #define _ZONE_H #include -#include +#include #include "Cell.h" #include "CellHandler.h" -#include "src/servers/Server_Zone/Forwards.h" +#include "Forwards.h" #include #include @@ -15,11 +15,10 @@ #include #include namespace Core { - namespace Entity { -class Actor; -class Player; + class Actor; + class Player; } class Session; @@ -39,8 +38,8 @@ protected: bool m_bPrivate; - std::unordered_map m_playerMap; - std::unordered_map m_BattleNpcMap; + std::unordered_map< int32_t, Entity::PlayerPtr > m_playerMap; + std::unordered_map< int32_t, Entity::BattleNpcPtr > m_BattleNpcMap; std::set< Entity::BattleNpcPtr > m_BattleNpcDeadMap; diff --git a/src/servers/Server_Zone/Zone/ZoneMgr.cpp b/src/servers/Server_Zone/Zone/ZoneMgr.cpp index 541955f3..100422f4 100644 --- a/src/servers/Server_Zone/Zone/ZoneMgr.cpp +++ b/src/servers/Server_Zone/Zone/ZoneMgr.cpp @@ -4,7 +4,6 @@ #include "ZoneMgr.h" #include "Zone.h" - #include "ZonePosition.h" #include @@ -65,51 +64,6 @@ namespace Core { m_zoneMap[info.id] = pZone; } - //do - //{ - // Db::Field *field = pQR->fetch(); - // uint16_t id = field[0].getUInt16(); - // std::string inName = field[1].getString(); - // std::string name = field[2].getString(); - // uint32_t layoutId = field[3].getUInt32(); - // bool isPrivate = field[4].getBool(); - - // if(!isPrivate) - // { - // g_log.Log(LoggingSeverity::info, std::to_string(id) + "\t" + inName + " - " + name); - - // ZonePtr pZone( new Zone( id, layoutId, name, inName, isPrivate ) ); - - // m_zoneMap[id] = pZone; - - // // start the region worker - // // ThreadPool->executeTask(pRegion); - // } - // else - // { - // //Console->outTime(" --> %s", inName.c_str()); - // //Console->outTime("\tCached private instance...", name.c_str()); - - // //// write the instance data into the instance cache for later use - // //InstanceCacheEntry * pICE = new InstanceCacheEntry(); - // //pICE->id = id; - // //pICE->inName = inName; - // //pICE->minX = minX; - // //pICE->maxX = maxX; - // //pICE->minY = minY; - // //pICE->maxY = maxY; - // //pICE->name = name; - // //pICE->layoutId = layoutId; - // //pICE->isPrivate = isPrivate; - - // //m_instanceCache[pICE->id] = pICE; - // //m_instanceCacheName[inName] = pICE; - - // //createInstance(pICE); - // } - - //} while(pQR->nextRow()); - return true; } diff --git a/src/servers/Server_Zone/Zone/ZoneMgr.h b/src/servers/Server_Zone/Zone/ZoneMgr.h index 5092bd33..bab6c23b 100644 --- a/src/servers/Server_Zone/Zone/ZoneMgr.h +++ b/src/servers/Server_Zone/Zone/ZoneMgr.h @@ -4,7 +4,7 @@ #include #include -#include "src/servers/Server_Zone/Forwards.h" +#include "Forwards.h" namespace Core { diff --git a/src/servers/Server_Zone/Zone/ZonePosition.cpp b/src/servers/Server_Zone/Zone/ZonePosition.cpp index a5eb7c08..2e80e6c5 100644 --- a/src/servers/Server_Zone/Zone/ZonePosition.cpp +++ b/src/servers/Server_Zone/Zone/ZonePosition.cpp @@ -7,7 +7,7 @@ Core::ZonePosition::ZonePosition() { } -Core::ZonePosition::ZonePosition( uint32_t id, uint32_t targetZoneId, const Core::Common::FFXIVARR_POSITION3& targetPosition, uint32_t radius, float rotation ) +Core::ZonePosition::ZonePosition( uint32_t id, uint32_t targetZoneId, const Common::FFXIVARR_POSITION3& targetPosition, uint32_t radius, float rotation ) { m_id = id; m_targetZoneId = targetZoneId; diff --git a/src/servers/Server_Zone/Zone/ZonePosition.h b/src/servers/Server_Zone/Zone/ZonePosition.h index 73efeb63..0b4cad7c 100644 --- a/src/servers/Server_Zone/Zone/ZonePosition.h +++ b/src/servers/Server_Zone/Zone/ZonePosition.h @@ -1,7 +1,7 @@ #ifndef _ZONELINE_H #define _ZONELINE_H -#include +#include namespace Core { From 5c13f51042f1eaca44f1db1292786163d5453ed9 Mon Sep 17 00:00:00 2001 From: Mordred Date: Fri, 8 Dec 2017 23:05:25 +0100 Subject: [PATCH 17/25] Fixed an issue with one hit kills not registering on kill events. --- src/servers/Server_Zone/Actor/Actor.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/servers/Server_Zone/Actor/Actor.cpp b/src/servers/Server_Zone/Actor/Actor.cpp index 5e3022e1..415fb864 100644 --- a/src/servers/Server_Zone/Actor/Actor.cpp +++ b/src/servers/Server_Zone/Actor/Actor.cpp @@ -704,11 +704,11 @@ void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint16_t actionId, u sendToInRangeSet( effectPacket, true ); - pTarget.takeDamage( static_cast< uint32_t >( param1 ) ); - if ( pTarget.isAlive() ) pTarget.onActionHostile( shared_from_this() ); - + + pTarget.takeDamage( static_cast< uint32_t >( param1 ) ); + } else { @@ -724,11 +724,12 @@ void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint16_t actionId, u // todo: send to range of what? ourselves? when mob script hits this is going to be lacking sendToInRangeSet( effectPacket, true ); - pHitActor->takeDamage( static_cast< uint32_t >( param1 ) ); if( pHitActor->isAlive() ) pHitActor->onActionHostile( shared_from_this() ); + pHitActor->takeDamage( static_cast< uint32_t >( param1 ) ); + // Debug if ( isPlayer() ) { From 04e7f1c9cb461e4179bbd311c31fff0a68a47daf Mon Sep 17 00:00:00 2001 From: Mordred Date: Fri, 8 Dec 2017 23:09:34 +0100 Subject: [PATCH 18/25] Minor style fixes --- src/servers/Server_Zone/Actor/Actor.cpp | 37 ++++++++++++------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/servers/Server_Zone/Actor/Actor.cpp b/src/servers/Server_Zone/Actor/Actor.cpp index 415fb864..3439fef7 100644 --- a/src/servers/Server_Zone/Actor/Actor.cpp +++ b/src/servers/Server_Zone/Actor/Actor.cpp @@ -664,7 +664,7 @@ void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint16_t actionId, u uint64_t param2, Entity::Actor& pTarget ) { - if ( isPlayer() ) + if( isPlayer() ) { getAsPlayer()->sendDebug( std::to_string( pTarget.getId() ) ); getAsPlayer()->sendDebug( "Handle script skill type: " + std::to_string( type ) ); @@ -686,7 +686,7 @@ void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint16_t actionId, u effectPacket.data().effectTarget = pTarget.getId(); // Todo: for each actor, calculate how much damage the calculated value should deal to them - 2-step damage calc. we only have 1-step - switch ( type ) + switch( type ) { case ActionEffectType::Damage: @@ -696,7 +696,7 @@ void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint16_t actionId, u effectPacket.data().effects[0].hitSeverity = ActionHitSeverityType::NormalDamage; effectPacket.data().effects[0].unknown_3 = 7; - if ( !actionInfoPtr->is_aoe ) + if( !actionInfoPtr->is_aoe ) { // If action on this specific target is valid... if ( isPlayer() && !ActionCollision::isActorApplicable( pTarget.shared_from_this(), TargetFilter::Enemies ) ) @@ -716,7 +716,7 @@ void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint16_t actionId, u auto actorsCollided = ActionCollision::getActorsHitFromAction( pTarget.getPos(), getInRangeActors( true ), actionInfoPtr, TargetFilter::Enemies ); - for ( const auto& pHitActor : actorsCollided ) + for( const auto& pHitActor : actorsCollided ) { effectPacket.data().targetId = pHitActor->getId(); effectPacket.data().effectTarget = pHitActor->getId(); @@ -733,9 +733,8 @@ void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint16_t actionId, u // Debug if ( isPlayer() ) { - if ( pHitActor->isPlayer() ) { + if ( pHitActor->isPlayer() ) getAsPlayer()->sendDebug( "AoE hit actor " + std::to_string( pHitActor->getId() ) + " (" + pHitActor->getName() + ")" ); - } else getAsPlayer()->sendDebug( "AoE hit actor " + std::to_string( pHitActor->getId() ) ); } @@ -753,9 +752,9 @@ void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint16_t actionId, u effectPacket.data().effects[0].effectType = ActionEffectType::Heal; effectPacket.data().effects[0].hitSeverity = ActionHitSeverityType::NormalHeal; - if ( !actionInfoPtr->is_aoe ) + if( !actionInfoPtr->is_aoe ) { - if ( isPlayer() && !ActionCollision::isActorApplicable( pTarget.shared_from_this(), TargetFilter::Allies ) ) + if( isPlayer() && !ActionCollision::isActorApplicable( pTarget.shared_from_this(), TargetFilter::Allies ) ) break; sendToInRangeSet( effectPacket, true ); @@ -769,7 +768,7 @@ void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint16_t actionId, u auto actorsCollided = ActionCollision::getActorsHitFromAction( pTarget.getPos(), getInRangeActors( true ), actionInfoPtr, TargetFilter::Allies ); - for ( auto pHitActor : actorsCollided ) + for( auto pHitActor : actorsCollided ) { effectPacket.data().targetId = pTarget.getId(); effectPacket.data().effectTarget = pHitActor->getId(); @@ -778,11 +777,10 @@ void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint16_t actionId, u pHitActor->heal( calculatedHeal ); // Debug - if ( isPlayer() ) + if( isPlayer() ) { - if ( pHitActor->isPlayer() ) { + if( pHitActor->isPlayer() ) getAsPlayer()->sendDebug( "AoE hit actor " + std::to_string( pHitActor->getId() ) + " (" + pHitActor->getName() + ")" ); - } else getAsPlayer()->sendDebug( "AoE hit actor " + std::to_string( pHitActor->getId() ) ); } @@ -837,13 +835,14 @@ void Core::Entity::Actor::addStatusEffectById( uint32_t id, int32_t duration, En /*! \param StatusEffectPtr to be applied to the actor */ void Core::Entity::Actor::addStatusEffectByIdIfNotExist( uint32_t id, int32_t duration, Entity::Actor& pSource, uint16_t param ) { - if( !hasStatusEffect( id ) ) - { - StatusEffect::StatusEffectPtr effect( new StatusEffect::StatusEffect( id, pSource.shared_from_this(), - shared_from_this(), duration, 3000 ) ); - effect->setParam( param ); - addStatusEffect( effect ); - } + if( hasStatusEffect( id ) ) + return; + + StatusEffect::StatusEffectPtr effect( new StatusEffect::StatusEffect( id, pSource.shared_from_this(), + shared_from_this(), duration, 3000 ) ); + effect->setParam( param ); + addStatusEffect( effect ); + } float Core::Entity::Actor::getRotation() const From d84d3be97820f596f748daefbdf8b472df002c61 Mon Sep 17 00:00:00 2001 From: Mordred Date: Fri, 8 Dec 2017 23:27:59 +0100 Subject: [PATCH 19/25] More include refactoring and space adjustments --- .../Server_Zone/Action/ActionCollision.cpp | 12 ++--- .../Server_Zone/Action/ActionCollision.h | 52 +++++++++---------- src/servers/Server_Zone/Actor/Actor.h | 2 +- .../PacketWrappers/ActorControlPacket142.h | 6 +-- .../PacketWrappers/ActorControlPacket143.h | 6 +-- .../PacketWrappers/ActorControlPacket144.h | 4 +- .../Network/PacketWrappers/ActorSpawnPacket.h | 8 +-- .../Network/PacketWrappers/ChatPacket.h | 6 +-- .../PacketWrappers/EventFinishPacket.h | 2 +- .../Network/PacketWrappers/EventPlayPacket.h | 4 +- .../Network/PacketWrappers/EventStartPacket.h | 4 +- .../Network/PacketWrappers/InitUIPacket.h | 8 +-- .../Network/PacketWrappers/ModelEquipPacket.h | 6 +-- .../Network/PacketWrappers/MoveActorPacket.h | 10 ++-- .../Network/PacketWrappers/PingPacket.h | 4 +- .../PacketWrappers/PlayerSpawnPacket.h | 16 +++--- .../PacketWrappers/PlayerStateFlagsPacket.h | 6 +-- .../PacketWrappers/QuestMessagePacket.h | 6 +-- .../PacketWrappers/ServerNoticePacket.h | 6 +-- .../PacketWrappers/UpdateHpMpTpPacket.h | 6 +-- src/servers/Server_Zone/Session.h | 3 -- .../Server_Zone/StatusEffect/StatusEffect.cpp | 14 ++--- .../Server_Zone/StatusEffect/StatusEffect.h | 2 +- 23 files changed, 94 insertions(+), 99 deletions(-) diff --git a/src/servers/Server_Zone/Action/ActionCollision.cpp b/src/servers/Server_Zone/Action/ActionCollision.cpp index 48b04aaa..6eb11182 100644 --- a/src/servers/Server_Zone/Action/ActionCollision.cpp +++ b/src/servers/Server_Zone/Action/ActionCollision.cpp @@ -17,7 +17,7 @@ using namespace Core::Common; bool ActionCollision::isActorApplicable( ActorPtr actorPtr, TargetFilter targetFilter ) { bool actorApplicable = false; - switch ( targetFilter ) + switch( targetFilter ) { case TargetFilter::All: { @@ -58,14 +58,14 @@ std::set< Core::Entity::ActorPtr > ActionCollision::getActorsHitFromAction( FFXI { std::set< ActorPtr > actorsCollided; - switch ( static_cast< ActionCollisionType >( actionInfo->aoe_type ) ) + switch( static_cast< ActionCollisionType >( actionInfo->aoe_type ) ) { case ActionCollisionType::None: case ActionCollisionType::SingleTarget: { // This is actually needed. There is "splash damage" in actions marked as single target. // Notice how we're using aoe_width. How collision works for SingleTarget is unknown as of now. - for ( auto pActor : actorsInRange ) + for( auto pActor : actorsInRange ) { // Make sure actor exists. If it doesn't we done goofed. assert( pActor ); @@ -85,7 +85,7 @@ std::set< Core::Entity::ActorPtr > ActionCollision::getActorsHitFromAction( FFXI } case ActionCollisionType::Circle: { - for ( auto pActor : actorsInRange ) + for( auto pActor : actorsInRange ) { assert( pActor ); @@ -93,15 +93,13 @@ std::set< Core::Entity::ActorPtr > ActionCollision::getActorsHitFromAction( FFXI continue; if ( radiusCollision( pActor->getPos(), aoePosition, actionInfo->aoe_range ) ) - { actorsCollided.insert( pActor ); - } } break; } case ActionCollisionType::Box: { - for ( auto pActor : actorsInRange ) + for( auto pActor : actorsInRange ) { assert( pActor ); diff --git a/src/servers/Server_Zone/Action/ActionCollision.h b/src/servers/Server_Zone/Action/ActionCollision.h index dda72d06..db3f7120 100644 --- a/src/servers/Server_Zone/Action/ActionCollision.h +++ b/src/servers/Server_Zone/Action/ActionCollision.h @@ -7,37 +7,37 @@ #include "Action.h" namespace Core { - namespace Entity { +namespace Entity { - enum class TargetFilter - { - All, // All actors in the AoE are applicable for collision - Players, // Only players - Allies, // Only allies (players, ally NPCs) - Party, // Only party members - Enemies // Only enemies - }; + enum class TargetFilter + { + All, // All actors in the AoE are applicable for collision + Players, // Only players + Allies, // Only allies (players, ally NPCs) + Party, // Only party members + Enemies // Only enemies + }; - class ActionCollision - { - public: + class ActionCollision + { + public: - static bool isActorApplicable( ActorPtr actorPtr, TargetFilter targetFilter ); - static std::set< ActorPtr > getActorsHitFromAction( Common::FFXIVARR_POSITION3 aoePosition, - std::set< ActorPtr > actorsInRange, - boost::shared_ptr< Data::ActionInfo > actionInfo, - TargetFilter targetFilter ); - - private: - static bool radiusCollision( Common::FFXIVARR_POSITION3 actorPosition, Common::FFXIVARR_POSITION3 aoePosition, - uint16_t radius ); + static bool isActorApplicable( ActorPtr actorPtr, TargetFilter targetFilter ); + static std::set< ActorPtr > getActorsHitFromAction( Common::FFXIVARR_POSITION3 aoePosition, + std::set< ActorPtr > actorsInRange, + boost::shared_ptr< Data::ActionInfo > actionInfo, + TargetFilter targetFilter ); - static bool boxCollision( Common::FFXIVARR_POSITION3 actorPosition, Common::FFXIVARR_POSITION3 aoePosition, - uint16_t width, uint16_t height ); - - }; + private: + static bool radiusCollision( Common::FFXIVARR_POSITION3 actorPosition, Common::FFXIVARR_POSITION3 aoePosition, + uint16_t radius ); - } + static bool boxCollision( Common::FFXIVARR_POSITION3 actorPosition, Common::FFXIVARR_POSITION3 aoePosition, + uint16_t width, uint16_t height ); + + }; + +} } #endif diff --git a/src/servers/Server_Zone/Actor/Actor.h b/src/servers/Server_Zone/Actor/Actor.h index 77e89afa..35547b01 100644 --- a/src/servers/Server_Zone/Actor/Actor.h +++ b/src/servers/Server_Zone/Actor/Actor.h @@ -1,7 +1,7 @@ #ifndef _ACTOR_H_ #define _ACTOR_H_ -#include +#include #include #include "Forwards.h" diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h b/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h index 96066473..6a6ae79b 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h @@ -1,9 +1,9 @@ #ifndef _ACTORCONTROL142_H #define _ACTORCONTROL142_H -#include -#include -#include "src/servers/Server_Zone/Forwards.h" +#include +#include +#include "Forwards.h" namespace Core { namespace Network { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h b/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h index e501c34b..09dafb08 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h @@ -1,9 +1,9 @@ #ifndef _ACTORCONTROL143_H #define _ACTORCONTROL143_H -#include -#include -#include "src/servers/Server_Zone/Forwards.h" +#include +#include +#include "Forwards.h" namespace Core { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h b/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h index b6906727..ab5d3dad 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h @@ -1,8 +1,8 @@ #ifndef _ACTORCONTROL144_H #define _ACTORCONTROL144_H -#include -#include +#include +#include namespace Core { namespace Network { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h index df39b4a6..bc52678e 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h @@ -1,10 +1,10 @@ #ifndef _ACTORSPAWN_H #define _ACTORSPAWN_H -#include -#include -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Forwards.h" +#include +#include +#include "Actor/Player.h" +#include "Forwards.h" namespace Core { namespace Network { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ChatPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/ChatPacket.h index 1ffe2e75..1a99ed71 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ChatPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ChatPacket.h @@ -1,9 +1,9 @@ #ifndef _CHATPACKET_H #define _CHATPACKET_H -#include -#include -#include "src/servers/Server_Zone/Forwards.h" +#include +#include +#include "Forwards.h" namespace Core { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/EventFinishPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/EventFinishPacket.h index af8da192..6e55dc76 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/EventFinishPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/EventFinishPacket.h @@ -1,7 +1,7 @@ #ifndef _EVENTFINISH_H #define _EVENTFINISH_H -#include +#include namespace Core { namespace Network { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/EventPlayPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/EventPlayPacket.h index d748ec46..a3505fa2 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/EventPlayPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/EventPlayPacket.h @@ -1,8 +1,8 @@ #ifndef _EVENTPLAY_H #define _EVENTPLAY_H -#include -#include "src/servers/Server_Zone/Forwards.h" +#include +#include "Forwards.h" namespace Core { namespace Network { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/EventStartPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/EventStartPacket.h index cec9260c..6872fa7d 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/EventStartPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/EventStartPacket.h @@ -1,8 +1,8 @@ #ifndef _EVENTSTART_H #define _EVENTSTART_H -#include -#include "src/servers/Server_Zone/Forwards.h" +#include +#include "Forwards.h" namespace Core { namespace Network { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h index acf1826a..37244eb2 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h @@ -1,10 +1,10 @@ #ifndef _CORE_NETWORK_PACKETS_INITUIPACKET_H #define _CORE_NETWORK_PACKETS_INITUIPACKET_H -#include -#include -#include "Server_Zone/Actor/Player.h" -#include "Server_Zone/Forwards.h" +#include +#include +#include "Actor/Player.h" +#include "Forwards.h" namespace Core { namespace Network { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ModelEquipPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/ModelEquipPacket.h index 087f03cf..88536c0d 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ModelEquipPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ModelEquipPacket.h @@ -1,9 +1,9 @@ #ifndef _MODELEQUIPPACKET_H #define _MODELEQUIPPACKET_H -#include -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Forwards.h" +#include +#include "Actor/Player.h" +#include "Forwards.h" namespace Core { namespace Network { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h index 546e76b3..abc7f9d6 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h @@ -1,11 +1,11 @@ #ifndef _MOVEACTORPACKET_H #define _MOVEACTORPACKET_H -#include -#include -#include -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Forwards.h" +#include +#include +#include +#include "Actor/Player.h" +#include "Forwards.h" namespace Core { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/PingPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/PingPacket.h index 786c2312..8a3e1836 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/PingPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/PingPacket.h @@ -1,9 +1,9 @@ #ifndef _CORE_NETWORK_PACKETS_PINGPACKET_H #define _CORE_NETWORK_PACKETS_PINGPACKET_H -#include +#include -#include "src/servers/Server_Zone/Forwards.h" +#include "Forwards.h" namespace Core { namespace Network { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h index a573fc4a..4ee95f5b 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h @@ -1,14 +1,14 @@ #ifndef _PLAYERSPAWN_H #define _PLAYERSPAWN_H -#include -#include -#include -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Forwards.h" -#include "src/servers/Server_Zone/Inventory/Inventory.h" -#include "src/servers/Server_Zone/Inventory/Item.h" -#include "src/servers/Server_Zone/StatusEffect/StatusEffect.h" +#include +#include +#include +#include "Actor/Player.h" +#include "Forwards.h" +#include "Inventory/Inventory.h" +#include "Inventory/Item.h" +#include "StatusEffect/StatusEffect.h" namespace Core { namespace Network { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h index 716cae67..ac0c4826 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/PlayerStateFlagsPacket.h @@ -1,9 +1,9 @@ #ifndef _PLAYERSTATE_H #define _PLAYERSTATE_H -#include -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Forwards.h" +#include +#include "Actor/Player.h" +#include "Forwards.h" namespace Core { namespace Network { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/QuestMessagePacket.h b/src/servers/Server_Zone/Network/PacketWrappers/QuestMessagePacket.h index 2c272237..1c846b11 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/QuestMessagePacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/QuestMessagePacket.h @@ -1,9 +1,9 @@ #ifndef _QUESTMESSAGE_H #define _QUESTMESSAGE_H -#include -#include "src/servers/Server_Zone/Actor/Player.h" -#include "src/servers/Server_Zone/Forwards.h" +#include +#include "Actor/Player.h" +#include "Forwards.h" namespace Core { namespace Network { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h b/src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h index 9f195144..07ec036e 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h @@ -1,9 +1,9 @@ #ifndef _SERVERNOTICEPACKET_H #define _SERVERNOTICEPACKET_H -#include -#include -#include "src/servers/Server_Zone/Forwards.h" +#include +#include +#include "Forwards.h" namespace Core { namespace Network { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/UpdateHpMpTpPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/UpdateHpMpTpPacket.h index 44c16260..927d968f 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/UpdateHpMpTpPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/UpdateHpMpTpPacket.h @@ -1,9 +1,9 @@ #ifndef _UPDATEHPMPTP_H #define _UPDATEHPMPTP_H -#include -#include -#include "src/servers/Server_Zone/Forwards.h" +#include +#include +#include "Forwards.h" namespace Core { namespace Network { diff --git a/src/servers/Server_Zone/Session.h b/src/servers/Server_Zone/Session.h index cd2a1c7f..7145c1e9 100644 --- a/src/servers/Server_Zone/Session.h +++ b/src/servers/Server_Zone/Session.h @@ -5,11 +5,8 @@ #include "Forwards.h" - - namespace Core { - class Session : public boost::enable_shared_from_this< Session > { public: diff --git a/src/servers/Server_Zone/StatusEffect/StatusEffect.cpp b/src/servers/Server_Zone/StatusEffect/StatusEffect.cpp index b2885a82..6a4d439c 100644 --- a/src/servers/Server_Zone/StatusEffect/StatusEffect.cpp +++ b/src/servers/Server_Zone/StatusEffect/StatusEffect.cpp @@ -1,16 +1,16 @@ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include -#include "src/servers/Server_Zone/Actor/Actor.h" +#include "Actor/Actor.h" #include "StatusEffect.h" -#include "src/servers/Server_Zone/Script/ScriptManager.h" +#include "Script/ScriptManager.h" extern Core::Logger g_log; extern Core::Data::ExdData g_exdData; diff --git a/src/servers/Server_Zone/StatusEffect/StatusEffect.h b/src/servers/Server_Zone/StatusEffect/StatusEffect.h index cda7c487..070bfb44 100644 --- a/src/servers/Server_Zone/StatusEffect/StatusEffect.h +++ b/src/servers/Server_Zone/StatusEffect/StatusEffect.h @@ -3,7 +3,7 @@ #include -#include "src/servers/Server_Zone/Forwards.h" +#include "Forwards.h" namespace Core { From 62119f6ac081d0e043125330c18349a11e340b74 Mon Sep 17 00:00:00 2001 From: Perize Date: Sat, 9 Dec 2017 13:09:56 +0900 Subject: [PATCH 20/25] Fix a perform handler --- src/servers/Server_Common/Network/GamePacket.h | 18 ++++++++++++------ .../Network/Handlers/PacketHandlers.cpp | 4 ++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/servers/Server_Common/Network/GamePacket.h b/src/servers/Server_Common/Network/GamePacket.h index d98f0316..a10a43fb 100644 --- a/src/servers/Server_Common/Network/GamePacket.h +++ b/src/servers/Server_Common/Network/GamePacket.h @@ -45,31 +45,37 @@ public: template T getValAt( uint16_t pos ) const { - assert(m_segHdr.size > pos); + assert( m_segHdr.size > pos ); return *reinterpret_cast< const T* >( &m_dataBuf[0] + pos ); } void setBytesAt( uint16_t offset, uint8_t * bytes, uint16_t length ) { - assert(m_segHdr.size > offset); + assert( m_segHdr.size > offset ); memcpy( reinterpret_cast< uint8_t* >( &m_dataBuf[0] + offset ), bytes, length ); } const char * getStringAt( uint16_t pos ) const { - assert(m_segHdr.size > pos); + assert( m_segHdr.size > pos ); return reinterpret_cast< const char* >( &m_dataBuf[0] + pos ); } void setStringAt( uint16_t pos, const std::string& str ) { - assert(m_segHdr.size > pos); + assert( m_segHdr.size > pos ); memcpy( reinterpret_cast< uint8_t* >( &m_dataBuf[0] + pos ), str.c_str(), str.length() ); } - uint8_t * getData() + const uint8_t * getData() const { - return reinterpret_cast< uint8_t* >( &m_dataBuf[0] ); + return reinterpret_cast< const uint8_t* >( &m_dataBuf[0] ); + } + + const uint8_t * getDataAt(uint16_t pos) const + { + assert(m_segHdr.size > pos); + return reinterpret_cast< const uint8_t* >(&m_dataBuf[0] + pos); } void setHeader( uint16_t size, uint16_t type, uint32_t id1, uint32_t id2, uint16_t subType, uint32_t unknown = 0xFED2E000 ); diff --git a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp index 0f397f2a..dcb5e6e0 100644 --- a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp @@ -603,8 +603,8 @@ void Core::Network::GameConnection::performNoteHandler( const Packets::GamePacke { GamePacketNew< FFXIVIpcPerformNote, ServerZoneIpcType > performPacket( player.getId() ); - uint8_t inVal = inPacket.getValAt< uint8_t >( 0x20 ); - memcpy( &performPacket.data().data[0], &inVal, 32 ); + auto inVal = inPacket.getDataAt(0x20); + memcpy( &performPacket.data().data[0], inVal, 32 ); player.sendToInRangeSet( performPacket ); } From 0fa3f93ce901ca59fb26fc94ae6f1652c16996ea Mon Sep 17 00:00:00 2001 From: Perize Date: Sat, 9 Dec 2017 13:14:06 +0900 Subject: [PATCH 21/25] Fix formatting --- src/servers/Server_Common/Network/GamePacket.h | 4 ++-- src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/servers/Server_Common/Network/GamePacket.h b/src/servers/Server_Common/Network/GamePacket.h index a10a43fb..6fcc584e 100644 --- a/src/servers/Server_Common/Network/GamePacket.h +++ b/src/servers/Server_Common/Network/GamePacket.h @@ -74,8 +74,8 @@ public: const uint8_t * getDataAt(uint16_t pos) const { - assert(m_segHdr.size > pos); - return reinterpret_cast< const uint8_t* >(&m_dataBuf[0] + pos); + assert( m_segHdr.size > pos ); + return reinterpret_cast< const uint8_t* >( &m_dataBuf[0] + pos ); } void setHeader( uint16_t size, uint16_t type, uint32_t id1, uint32_t id2, uint16_t subType, uint32_t unknown = 0xFED2E000 ); diff --git a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp index dcb5e6e0..d3734e6f 100644 --- a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp @@ -603,7 +603,7 @@ void Core::Network::GameConnection::performNoteHandler( const Packets::GamePacke { GamePacketNew< FFXIVIpcPerformNote, ServerZoneIpcType > performPacket( player.getId() ); - auto inVal = inPacket.getDataAt(0x20); + auto inVal = inPacket.getDataAt( 0x20 ); memcpy( &performPacket.data().data[0], inVal, 32 ); player.sendToInRangeSet( performPacket ); From 351dd9792a9bd24b808765f95813c35a0d5065c3 Mon Sep 17 00:00:00 2001 From: Perize Date: Sat, 9 Dec 2017 13:55:55 +0900 Subject: [PATCH 22/25] Use zonepacketnew instead --- src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp index d3734e6f..4fc80e64 100644 --- a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp @@ -601,7 +601,7 @@ void Core::Network::GameConnection::tellHandler( const Packets::GamePacket& inPa void Core::Network::GameConnection::performNoteHandler( const Packets::GamePacket& inPacket, Entity::Player& player ) { - GamePacketNew< FFXIVIpcPerformNote, ServerZoneIpcType > performPacket( player.getId() ); + ZoneChannelPacket< FFXIVIpcPerformNote > performPacket( player.getId() ); auto inVal = inPacket.getDataAt( 0x20 ); memcpy( &performPacket.data().data[0], inVal, 32 ); From 552c8adfd429e59cd15462a968f4525424601733 Mon Sep 17 00:00:00 2001 From: GokuWeedLord Date: Mon, 11 Dec 2017 00:40:52 +1100 Subject: [PATCH 23/25] fix itemlevel calc --- src/servers/Server_Zone/Inventory/Inventory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/servers/Server_Zone/Inventory/Inventory.cpp b/src/servers/Server_Zone/Inventory/Inventory.cpp index ee982043..dbcd2080 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.cpp +++ b/src/servers/Server_Zone/Inventory/Inventory.cpp @@ -884,7 +884,7 @@ uint16_t Core::Inventory::calculateEquippedGearItemLevel() it++; } - return boost::algorithm::clamp( iLvlResult / 12, 0, 9999 ); + return boost::algorithm::clamp( iLvlResult / 13, 0, 9999 ); } From 6b39deed6c61cec6895c7b1c40e2e7ee2d3504fd Mon Sep 17 00:00:00 2001 From: Tahir Akhlaq Date: Sat, 9 Dec 2017 23:37:24 +0000 Subject: [PATCH 24/25] updated pcb_reader to read territorytype from ffxivexplorer export --- src/tools/pcb_reader/README.md | 4 +- src/tools/pcb_reader/main.cpp | 96 ++++++++++++++++++---------------- 2 files changed, 53 insertions(+), 47 deletions(-) diff --git a/src/tools/pcb_reader/README.md b/src/tools/pcb_reader/README.md index ec422bd4..66fb849f 100644 --- a/src/tools/pcb_reader/README.md +++ b/src/tools/pcb_reader/README.md @@ -5,10 +5,12 @@ compile with STANDALONE defined to compile without boost and sapphire dependenci usage: - regular - compile with root sapphire dir cmakelists - - sapphire/src/tools/bin/pcb_reader2 "" + - sapphire/src/tools/bin/pcb_reader2 "" - standalone - compile main.cpp with STANDALONE defined in build arg - download ffxivexplorer + - ffxivexplorer > path/to/ffxiv's/game/sqpack/ffxiv/0a0000.dat + - exd/territorytype.exh > `File > Export` and copy `territorytype.exh.csv` from exproted directory to `pcb_reader.exe` directory - ffxivexplorer > path/to/ffxiv's/game/sqpack/ffxiv/020000.dat - ctrl click the following: - `bg/ffxiv/[REGION]/common/collision` diff --git a/src/tools/pcb_reader/main.cpp b/src/tools/pcb_reader/main.cpp index 9d5bb22a..7022dbe3 100644 --- a/src/tools/pcb_reader/main.cpp +++ b/src/tools/pcb_reader/main.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "pcb.h" #include "lgb.h" @@ -84,39 +85,38 @@ int parseBlockEntry( char* data, std::vector& entries, int gOff std::string zoneNameToPath( const std::string& name ) { - char teri = name[0]; - char region = name[1]; - char type = name[2]; - char zone = name[3]; - static std::map< char, std::string > teriMap + std::string path; + auto inFile = std::ifstream( "territorytype.exh.csv" ); + if( inFile.good() ) { - { 'r', "roc" }, - { 'w', "wil" }, - { 'l', "lak" }, - { 'o', "ocn" }, - { 'f', "fst" }, - { 'a', "air" }, - { 's', "sea" }, - { 'z', "zon" } - }; - - static std::map< char, std::string > typeMap + std::string line; + std::regex re("(\\d+),\"(.*)\",\"(.*)\",.*"); + while( std::getline( inFile, line ) ) + { + std::smatch match; + if( std::regex_match( line, match, re ) ) + { + if( name == match[2].str() ) + { + path = match[3].str(); + break; + } + } + } + } + if( !path.empty() ) { - { 'f', "fld" }, - { 't', "twn" }, - { 'd', "dun" }, - { 'b', "bah" }, - { 'i', "ind" }, - { 'e', "evt" }, - }; - std::string ret; - const auto& teriRet = teriMap[teri]; - const auto& typeRet = typeMap[type]; - ret += teriRet + "_"; - ret += teri; - ret += region; - ret += "/" + typeRet + "/" + name; - return ret; + //path = path.substr( path.find_first_of( "/" ) + 1, path.size() - path.find_first_of( "/" )); + //path = std::string( "ffxiv/" ) + path; + path = std::string( "bg" ) + path.substr( 0, path.find( "/level/" ) ); + std::cout << "[Info] " << "Found path for " << name << ": " << path << std::endl; + } + else + { + throw std::runtime_error( "Unable to find path for " + name + + ".\n\tPlease open 0a0000.win32.index with FFXIV Explorer and extract territorytype.exh as CSV\n\tand copy territorytype.exh.csv into pcb_reader.exe directory" ); + } + return path; } void readFileToBuffer( const std::string& path, std::vector< char >& buf ) @@ -141,24 +141,25 @@ int main( int argc, char* argv[] ) { auto startTime = std::chrono::system_clock::now(); - std::string gamePath = "C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\ffxiv"; + // todo: support expansions + std::string gamePath = "C:\\Program Files (x86)\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\ffxiv"; std::string zoneName = "r1f1"; if( argc > 1 ) { - gamePath = argv[1]; + zoneName = argv[1]; if( argc > 2 ) { - zoneName = argv[2]; + gamePath = argv[2]; } } - const auto& zonePath = zoneNameToPath( zoneName ); try { - std::string listPcbPath( "bg/ffxiv/" + zonePath + "/collision/list.pcb" ); - std::string bgLgbPath( "bg/ffxiv/" + zonePath + "/level/bg.lgb" ); - std::string collisionFilePath( "bg/ffxiv/" + zonePath + "/collision/" ); + const auto& zonePath = zoneNameToPath( zoneName ); + std::string listPcbPath( zonePath + "/collision/list.pcb" ); + std::string bgLgbPath( zonePath + "/level/bg.lgb" ); + std::string collisionFilePath( zonePath + "/collision/" ); std::vector< char > section; std::vector< char > section1; @@ -274,7 +275,7 @@ int main( int argc, char* argv[] ) } catch( std::exception& e ) { - std::cout << "Unable to load collision mesh " << fileName << "\n\tError:\n\t" << e.what() << "\n"; + std::cout << "[Error] " << "Unable to load collision mesh " << fileName << "\n\tError:\n\t" << e.what() << "\n"; return false; } }; @@ -301,7 +302,7 @@ int main( int argc, char* argv[] ) } catch( std::exception& e ) { - std::cout << "Unable to load SGB " << fileName << "\n\tError:\n\t" << e.what() << "\n"; + std::cout << "[Error] " << "Unable to load SGB " << fileName << "\n\tError:\n\t" << e.what() << "\n"; sgbFiles.insert( std::make_pair( fileName, sgbFile ) ); } return false; @@ -394,8 +395,8 @@ int main( int argc, char* argv[] ) loadPcbFile( fileName ); pushVerts( pcbFiles[fileName], fileName ); } - std::cout << "Writing obj file " << "\n"; - std::cout << bgLgb.groups.size() << " groups " << "\n"; + std::cout << "[Info] " << "Writing obj file " << "\n"; + std::cout << "[Info] " << bgLgb.groups.size() << " groups " << "\n"; uint32_t totalGroups = 0; uint32_t totalGroupEntries = 0; for( const auto& group : bgLgb.groups ) @@ -467,15 +468,18 @@ int main( int argc, char* argv[] ) } } } - std::cout << "\n\nLoaded " << pcbFiles.size() << " PCB Files \n"; - std::cout << "Total Groups " << totalGroups << " Total entries " << totalGroupEntries << "\n"; + std::cout << "\n[Info] " << "Loaded " << pcbFiles.size() << " PCB Files \n"; + std::cout << "[Info] " << "Total Groups " << totalGroups << " Total entries " << totalGroupEntries << "\n"; } - std::cout << "Finished exporting " << zoneName << " in " << + std::cout << "[Success] " << "Finished exporting " << zoneName << " in " << std::chrono::duration_cast< std::chrono::seconds >( std::chrono::system_clock::now() - startTime ).count() << " seconds\n"; } catch( std::exception& e ) { - std::cout << e.what() << std::endl; + std::cout << "[Error] " << e.what() << std::endl; + std::cout << "[Error] " << "Unable to extract collision data.\n\tIf using standalone ensure your working directory folder layout is \n\tbg/[ffxiv|ex1|ex2]/teri/type/zone/[level|collision]" << std::endl; + std::cout << std::endl; + std::cout << "[Info] " << "Usage: pcb_reader2 territory \"path/to/game/sqpack/ffxiv\" " << std::endl; } return 0; } From 6ce21554763cba53ca4c9315a0c6915cf556a897 Mon Sep 17 00:00:00 2001 From: Robert Baker Date: Sun, 10 Dec 2017 12:59:20 -0800 Subject: [PATCH 25/25] Fixed import.bat to include password on import loop and update.sql import. --- sql/import.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/import.bat b/sql/import.bat index 73359eae..3f9de0e9 100644 --- a/sql/import.bat +++ b/sql/import.bat @@ -32,13 +32,13 @@ FOR %%X IN (*.sql) DO ( REM handle update.sql last ) ELSE ( ECHO Importing %%X - %PATH_MYSQL% %DBNAME% -h %DBADDRESS% -u %USER% < %%X + %PATH_MYSQL% %DBNAME% -h %DBADDRESS% -u %USER% %PASSWORD% < %%X ) ) IF EXIST "update.sql" ( ECHO Importing update.sql - %PATH_MYSQL% %DBNAME% -h %DBADDRESS% -u %USER% < update.sql + %PATH_MYSQL% %DBNAME% -h %DBADDRESS% -u %USER% %PASSWORD% < update.sql ) ECHO Finished!