diff --git a/src/servers/Server_Common/CMakeLists.txt b/src/servers/Server_Common/CMakeLists.txt index eab0f1b3..3dce76c2 100644 --- a/src/servers/Server_Common/CMakeLists.txt +++ b/src/servers/Server_Common/CMakeLists.txt @@ -69,7 +69,7 @@ link_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/sapphire/datReader set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -add_library(Common ${UTILS_PUBLIC_INCLUDE_FILES} ${UTILS_SOURCE_FILES}) +add_library(Common ${UTILS_PUBLIC_INCLUDE_FILES} ${UTILS_SOURCE_FILES} Network/PacketDef/Lobby/ServerLobbyDef.h) set_target_properties(Common PROPERTIES CXX_STANDARD 14 diff --git a/src/servers/Server_Common/Network/CommonNetwork.h b/src/servers/Server_Common/Network/CommonNetwork.h index a72473a6..4c06c02f 100644 --- a/src/servers/Server_Common/Network/CommonNetwork.h +++ b/src/servers/Server_Common/Network/CommonNetwork.h @@ -124,6 +124,12 @@ namespace Packets { // TODO: Include structures for the individual packet segment types + template struct FFXIVIpcBasePacket + { + /** Creates a constant representing the IPC type */ + enum { _ServerIpcType = T }; + }; + /** * Server IPC Lobby Type Codes. */ diff --git a/src/servers/Server_Common/Network/PacketDef/Lobby/ServerLobbyDef.h b/src/servers/Server_Common/Network/PacketDef/Lobby/ServerLobbyDef.h new file mode 100644 index 00000000..2f356d33 --- /dev/null +++ b/src/servers/Server_Common/Network/PacketDef/Lobby/ServerLobbyDef.h @@ -0,0 +1,143 @@ +#ifndef _CORE_NETWORK_PACKETS_LOBBY_SERVER_IPC_H +#define _CORE_NETWORK_PACKETS_LOBBY_SERVER_IPC_H + +#include "src/servers/Server_Common/Common.h" +#include "src/servers/Server_Common/Network/CommonNetwork.h" + +namespace Core { +namespace Network { +namespace Packets { +namespace Server { + + struct FFXIVIpcRetainerList : FFXIVIpcBasePacket + { + uint8_t padding[0x210]; + }; + +/** +*/ + struct FFXIVIpcServiceIdInfo : FFXIVIpcBasePacket + { + uint64_t seq; + uint8_t padding; + uint8_t numServiceAccounts; + uint8_t u1; + uint8_t u2; + uint32_t padding1; + + struct + { + uint32_t id; + uint32_t unknown; + uint32_t index; + char name[0x44]; + } serviceAccount[8]; + }; + + + struct FFXIVIpcServerList : FFXIVIpcBasePacket + { + uint64_t seq; + uint16_t final; + uint16_t offset; + uint32_t numServers; + uint32_t padding; + uint32_t padding1; + + struct + { + uint16_t id; + uint16_t index; + uint32_t flags; // 0x02 = World not accepting new characters + uint32_t padding1; + uint32_t icon; // 2 = bonus XP star + uint32_t padding2; + char name[0x40]; + } server[6]; + }; + + struct FFXIVIpcCharList : FFXIVIpcBasePacket + { + uint64_t seq; + uint8_t counter; // current packet count * 4, count * 4 +1 on last packet. + uint8_t numInPacket; // always 2?? + uint16_t padding; + uint8_t unknown1; + uint8_t unknown2; + uint8_t unknown3; + uint8_t unknown4; // 0x80 in case of last packet + uint32_t unknown5[7]; + uint8_t unknown6; // 0x80 in case of last packet + uint8_t veteranRank; + uint8_t unknown7; + uint8_t padding1; + uint32_t daysSubscribed; + uint32_t remainingDays; + uint32_t daysToNextRank; + uint16_t maxCharOnWorld; + uint16_t unknown8; + uint32_t entitledExpansion; + uint32_t padding2; + + struct CharaDetails + { + uint32_t uniqueId; + uint32_t padding; + uint64_t contentId; + uint32_t index; + uint32_t padding2; + uint16_t serverId; + char nameChara[32]; + char nameServer[32]; + char charDetailJson[1030]; + } charaDetails[2]; + + }; + + struct FFXIVIpcEnterWorld : FFXIVIpcBasePacket + { + uint64_t seq; + uint32_t charId; + uint32_t padding; + uint64_t contentId; + uint32_t padding2; + char sid[66]; + uint16_t port; + char host[48]; + uint64_t padding3; + uint64_t padding4; + }; + + struct FFXIVIpcCharCreate : FFXIVIpcBasePacket + { + uint64_t seq; + uint8_t unknown; + uint8_t unknown_2; + uint8_t type; + uint8_t padding; + uint32_t unknown_3; + uint32_t unknown_4; + uint32_t unknown_5; + uint64_t content_id; + uint16_t unknown_7; + uint16_t unknown_8; + uint32_t unknown_9; + uint16_t unknown_10; + char name[32]; + char world[32]; + }; + + struct FFXIVIpcLobbyError : FFXIVIpcBasePacket + { + uint64_t seq; + uint32_t error_id; + uint32_t param; + uint16_t message_id; + char message[516]; + }; + +} +} +} +} +#endif \ No newline at end of file diff --git a/src/servers/Server_Common/Network/PacketDef/Zone/ServerPacketDef.h b/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h similarity index 90% rename from src/servers/Server_Common/Network/PacketDef/Zone/ServerPacketDef.h rename to src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h index d02a27b5..197ec664 100644 --- a/src/servers/Server_Common/Network/PacketDef/Zone/ServerPacketDef.h +++ b/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h @@ -4,8 +4,8 @@ * IMPORTANT NOTE: Do not use these for parsing IPC packets sent by the * client. See the Client namespace for those types! */ -#ifndef _CORE_NETWORK_PACKETS_SERVER_IPC_H -#define _CORE_NETWORK_PACKETS_SERVER_IPC_H +#ifndef _CORE_NETWORK_PACKETS_ZONE_SERVER_IPC_H +#define _CORE_NETWORK_PACKETS_ZONE_SERVER_IPC_H #include "src/servers/Server_Common/Common.h" #include "src/servers/Server_Common/Network/CommonNetwork.h" @@ -15,139 +15,6 @@ namespace Network { namespace Packets { namespace Server { -template struct FFXIVIpcBasePacket -{ - /** Creates a constant representing the IPC type */ - enum { _ServerIpcType = T }; -}; - -struct FFXIVIpcRetainerList : FFXIVIpcBasePacket -{ - uint8_t padding[0x210]; -}; - -/** -*/ -struct FFXIVIpcServiceIdInfo : FFXIVIpcBasePacket -{ - uint64_t seq; - uint8_t padding; - uint8_t numServiceAccounts; - uint8_t u1; - uint8_t u2; - uint32_t padding1; - - struct - { - uint32_t id; - uint32_t unknown; - uint32_t index; - char name[0x44]; - } serviceAccount[8]; -}; - - -struct FFXIVIpcServerList : FFXIVIpcBasePacket -{ - uint64_t seq; - uint16_t final; - uint16_t offset; - uint32_t numServers; - uint32_t padding; - uint32_t padding1; - - struct - { - uint16_t id; - uint16_t index; - uint32_t flags; // 0x02 = World not accepting new characters - uint32_t padding1; - uint32_t icon; // 2 = bonus XP star - uint32_t padding2; - char name[0x40]; - } server[6]; -}; - -struct FFXIVIpcCharList : FFXIVIpcBasePacket -{ - uint64_t seq; - uint8_t counter; // current packet count * 4, count * 4 +1 on last packet. - uint8_t numInPacket; // always 2?? - uint16_t padding; - uint8_t unknown1; - uint8_t unknown2; - uint8_t unknown3; - uint8_t unknown4; // 0x80 in case of last packet - uint32_t unknown5[7]; - uint8_t unknown6; // 0x80 in case of last packet - uint8_t veteranRank; - uint8_t unknown7; - uint8_t padding1; - uint32_t daysSubscribed; - uint32_t remainingDays; - uint32_t daysToNextRank; - uint16_t maxCharOnWorld; - uint16_t unknown8; - uint32_t entitledExpansion; - uint32_t padding2; - - struct CharaDetails - { - uint32_t uniqueId; - uint32_t padding; - uint64_t contentId; - uint32_t index; - uint32_t padding2; - uint16_t serverId; - char nameChara[32]; - char nameServer[32]; - char charDetailJson[1030]; - } charaDetails[2]; - -}; - -struct FFXIVIpcEnterWorld : FFXIVIpcBasePacket -{ - uint64_t seq; - uint32_t charId; - uint32_t padding; - uint64_t contentId; - uint32_t padding2; - char sid[66]; - uint16_t port; - char host[48]; - uint64_t padding3; - uint64_t padding4; -}; - -struct FFXIVIpcCharCreate : FFXIVIpcBasePacket -{ - uint64_t seq; - uint8_t unknown; - uint8_t unknown_2; - uint8_t type; - uint8_t padding; - uint32_t unknown_3; - uint32_t unknown_4; - uint32_t unknown_5; - uint64_t content_id; - uint16_t unknown_7; - uint16_t unknown_8; - uint32_t unknown_9; - uint16_t unknown_10; - char name[32]; - char world[32]; -}; - -struct FFXIVIpcLobbyError : FFXIVIpcBasePacket -{ - uint64_t seq; - uint32_t error_id; - uint32_t param; - uint16_t message_id; - char message[516]; -}; - /** * Structural representation of the packet sent by the server as response * to a ping packet diff --git a/src/servers/Server_Lobby/GameConnection.cpp b/src/servers/Server_Lobby/GameConnection.cpp index e8e002ea..9af5a4c2 100644 --- a/src/servers/Server_Lobby/GameConnection.cpp +++ b/src/servers/Server_Lobby/GameConnection.cpp @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/servers/Server_Zone/Actor/PlayerQuest.cpp b/src/servers/Server_Zone/Actor/PlayerQuest.cpp index 28e7c20a..07c529d2 100644 --- a/src/servers/Server_Zone/Actor/PlayerQuest.cpp +++ b/src/servers/Server_Zone/Actor/PlayerQuest.cpp @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include #include diff --git a/src/servers/Server_Zone/Inventory/Inventory.cpp b/src/servers/Server_Zone/Inventory/Inventory.cpp index e88d3af0..28e46a18 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.cpp +++ b/src/servers/Server_Zone/Inventory/Inventory.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include #include diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h b/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h index 44262702..4e5a548e 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket142.h @@ -2,7 +2,7 @@ #define _ACTORCONTROL142_H #include -#include +#include #include "src/servers/Server_Zone/Forwards.h" namespace Core { diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h b/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h index f9826b0c..e5f32c31 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket143.h @@ -2,7 +2,7 @@ #define _ACTORCONTROL143_H #include -#include +#include #include "src/servers/Server_Zone/Forwards.h" diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h b/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h index cb4f7011..51b3c9b6 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ActorControlPacket144.h @@ -2,7 +2,7 @@ #define _ACTORCONTROL144_H #include -#include +#include 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 6d277a3e..96b9a8ea 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ChatPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ChatPacket.h @@ -2,7 +2,7 @@ #define _CHATPACKET_H #include -#include +#include #include "src/servers/Server_Zone/Forwards.h" diff --git a/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h index 0ecd8035..1a4d06e5 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h @@ -2,7 +2,7 @@ #define _CORE_NETWORK_PACKETS_INITUIPACKET_H #include -#include +#include #include "Server_Zone/Actor/Player.h" #include "Server_Zone/Forwards.h" diff --git a/src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h index 17b0937e..f1ba1aab 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/MoveActorPacket.h @@ -2,7 +2,7 @@ #define _MOVEACTORPACKET_H #include -#include +#include #include #include "src/servers/Server_Zone/Actor/Player.h" #include "src/servers/Server_Zone/Forwards.h" diff --git a/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h index 1e89d1f2..08e7d4f1 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h @@ -1,7 +1,7 @@ #ifndef _PLAYERSPAWN_H #define _PLAYERSPAWN_H -#include +#include #include #include #include "src/servers/Server_Zone/Actor/Player.h" diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h b/src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h index 1c8c75c4..da9282b3 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/ServerNoticePacket.h @@ -2,7 +2,7 @@ #define _SERVERNOTICEPACKET_H #include -#include +#include #include "src/servers/Server_Zone/Forwards.h" namespace Core { diff --git a/src/servers/Server_Zone/StatusEffect/StatusEffect.cpp b/src/servers/Server_Zone/StatusEffect/StatusEffect.cpp index 2fc9ae10..b2885a82 100644 --- a/src/servers/Server_Zone/StatusEffect/StatusEffect.cpp +++ b/src/servers/Server_Zone/StatusEffect/StatusEffect.cpp @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include diff --git a/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp b/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp index 300c2c4a..ba5d7860 100644 --- a/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp +++ b/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include "src/servers/Server_Zone/Actor/Actor.h" #include "StatusEffect.h" diff --git a/src/servers/Server_Zone/Zone/Zone.cpp b/src/servers/Server_Zone/Zone/Zone.cpp index 05057a6d..c1fda497 100644 --- a/src/servers/Server_Zone/Zone/Zone.cpp +++ b/src/servers/Server_Zone/Zone/Zone.cpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include "Zone.h"