diff --git a/src/common/Common.h b/src/common/Common.h index 3eba346d..92e68294 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -203,7 +203,7 @@ namespace Common { Walking = 0x02, Strafing = 0x04, Jumping = 0x10, - BackWalk = Walking | Strafing, + BackWalk = 0x06, }; enum MoveState : uint8_t diff --git a/src/common/Network/GamePacketNew.h b/src/common/Network/GamePacketNew.h index e93f29cb..1eb6d0f8 100644 --- a/src/common/Network/GamePacketNew.h +++ b/src/common/Network/GamePacketNew.h @@ -10,6 +10,7 @@ #include #include #include +#include #include "CommonNetwork.h" #include "PacketDef/Ipcs.h" @@ -238,6 +239,7 @@ protected: // The IPC type itself. m_ipcHdr.type = static_cast< ServerZoneIpcType >( m_data._ServerIpcType ); + m_ipcHdr.timestamp = Util::getTimeSeconds(); m_segHdr.size = sizeof( T ) + sizeof( FFXIVARR_IPC_HEADER ) + sizeof( FFXIVARR_PACKET_SEGMENT_HEADER ); }; diff --git a/src/common/Network/PacketDef/Lobby/ServerLobbyDef.h b/src/common/Network/PacketDef/Lobby/ServerLobbyDef.h index a414fb3b..92d1f304 100644 --- a/src/common/Network/PacketDef/Lobby/ServerLobbyDef.h +++ b/src/common/Network/PacketDef/Lobby/ServerLobbyDef.h @@ -91,7 +91,7 @@ struct FFXIVIpcCharList : FFXIVIpcBasePacket char nameChara[32]; char nameServer[32]; char nameServer1[32]; - char charDetailJson[1030]; + char charDetailJson[1028]; } charaDetails[2]; }; diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index d04a06f7..dedc5058 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -624,18 +624,20 @@ struct FFXIVIpcInitUI : FFXIVIpcBasePacket unsigned short pvpWolfFoldWeeklyMatches; unsigned short pvpWolfFoldWeeklyVictories; unsigned short pvpStats[6]; - unsigned short playerCommendations; + unsigned short unknown74; unsigned short pvpStats1; unsigned char frontlineCampaigns[4]; unsigned short frontlineCampaignsWeekly; unsigned char currentRelic; unsigned char currentBook; unsigned char masterCrafterMask; - unsigned char unknown69; - unsigned char unknown6A; - unsigned char unknown6B; - unsigned char unknown6C[4]; - unsigned char unknown70[34]; + unsigned char unknown81; + unsigned char unknown82; + unsigned char unknown83; + unsigned char unknown84[4]; + unsigned char unknown88[10]; + unsigned short playerCommendations; + unsigned char unknown94[22]; unsigned short unknown18; unsigned char maxLevel; unsigned char expansion; diff --git a/src/servers/sapphire_lobby/GameConnection.cpp b/src/servers/sapphire_lobby/GameConnection.cpp index 8c402d3e..8b853b96 100644 --- a/src/servers/sapphire_lobby/GameConnection.cpp +++ b/src/servers/sapphire_lobby/GameConnection.cpp @@ -191,7 +191,6 @@ void Core::Network::GameConnection::getCharList( FFXIVARR_PACKET_RAW& packet, ui charListPacket->data().counter = ( i * 4 ) + 1; charListPacket->data().unknown4 = 128; } - Packets::LobbyPacketContainer pRP( m_encKey ); pRP.addPacket( charListPacket ); sendPacket( pRP ); diff --git a/src/servers/sapphire_zone/Actor/Chara.cpp b/src/servers/sapphire_zone/Actor/Chara.cpp index 64a673d3..4fbc8716 100644 --- a/src/servers/sapphire_zone/Actor/Chara.cpp +++ b/src/servers/sapphire_zone/Actor/Chara.cpp @@ -34,7 +34,8 @@ using namespace Core::Network::Packets::Server; using namespace Core::Network::ActorControl; Core::Entity::Chara::Chara( ObjKind type ) : - Actor( type ) + Actor( type ), + m_targetId( INVALID_GAME_OBJECT_ID ) { // initialize the free slot queue for( uint8_t i = 0; i < MAX_STATUS_EFFECTS; i++ ) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index f8df9442..8621da64 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -68,8 +68,7 @@ Core::Entity::Player::Player() : m_markedForRemoval( false ), m_mount( 0 ), m_directorInitialized( false ), - m_onEnterEventDone( false ), - m_bJumping( false ) + m_onEnterEventDone( false ) { m_id = 0; m_currentStance = Stance::Passive; diff --git a/src/servers/sapphire_zone/Actor/Player.h b/src/servers/sapphire_zone/Actor/Player.h index fbfa96fc..a61454ae 100644 --- a/src/servers/sapphire_zone/Actor/Player.h +++ b/src/servers/sapphire_zone/Actor/Player.h @@ -595,13 +595,10 @@ public: /*! checks if a spawn index is valid */ bool isObjSpawnIndexValid( uint8_t index ); - uint64_t m_lastMoveTime; uint8_t m_lastMoveflag; - bool m_bJumping; - private: uint32_t m_lastWrite; uint32_t m_lastPing; diff --git a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp index 40c1d76d..f693b86d 100644 --- a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp @@ -190,13 +190,21 @@ void Core::Network::GameConnection::updatePositionHandler( const Core::Network:: //pLog->debug( std::to_string( moveState ) + " -- moveState " ); //pLog->debug( std::to_string( moveType ) + " -- moveType " ); + if( moveType & MoveType::Running ) + { + unk1 = 0x7F; + unk2 = 0x00; + unk4 = 0x3C; + } + if( moveType & MoveType::Strafing ) { unk2 = 0x40; - if( IPC_OP_019A.strafeRight == 1 ) - unk1 = 0xbf; - else - unk1 = 0x5f; + unk1 = 0x7F; + //if( IPC_OP_019A.strafeRight == 1 ) + // unk1 = 0xbf; + //else + // unk1 = 0x5f; unk4 = 0x3C; } @@ -205,22 +213,16 @@ void Core::Network::GameConnection::updatePositionHandler( const Core::Network:: unk1 = 0x7F; unk2 = 0x02; unk3 = 0x00; - unk4 = 0x0518; + unk4 = 0x18; } - if( moveType & MoveType::BackWalk ) + if( moveType & MoveType::Walking && moveType & MoveType::Strafing ) { unk2 = 0x06; unk1 = 0xFF; unk4 = 0x18; } - if( moveType & MoveType::Running ) - { - unk1 = 0x7F; - unk4 = 0x3C; - } - if( moveType & MoveType::Jumping ) {