1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-26 14:37:44 +00:00

Instance join cutscene will no longer mess up the player, removed wrong field from event start, cotire server_zone only when using linux

This commit is contained in:
Mordred 2018-03-12 23:51:17 +01:00
parent 113273e571
commit 855ae3e961
8 changed files with 27 additions and 14 deletions

View file

@ -999,7 +999,7 @@ struct FFXIVIpcEventStart : FFXIVIpcBasePacket<EventStart>
/* 000D */ uint8_t param2; /* 000D */ uint8_t param2;
/* 000E */ uint16_t padding; /* 000E */ uint16_t padding;
/* 0010 */ uint32_t param3; /* 0010 */ uint32_t param3;
/* 0014 */ uint32_t contentId; /* 0014 */ uint32_t padding1;
}; };
@ -1036,7 +1036,8 @@ struct FFXIVIpcDirectorPlayScene : FFXIVIpcBasePacket<DirectorPlayScene>
uint8_t param4; uint8_t param4;
uint8_t padding1[3]; uint8_t padding1[3];
uint32_t param5; uint32_t param5;
uint8_t unknown[0x40]; uint8_t unknown8[0x08];
uint8_t unknown[0x38];
}; };
/** /**

View file

@ -71,7 +71,7 @@ public:
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
{ {
player.directorPlayScene( getId(), 1, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 0, 0xA ); player.directorPlayScene( getId(), 1, NO_DEFAULT_CAMERA | HIDE_HOTBAR | CONDITION_CUTSCENE, 0, 0xA );
} }
}; };

View file

@ -54,7 +54,7 @@ public:
/*! start an event item action */ /*! start an event item action */
void eventItemActionStart( uint32_t eventId, uint32_t action, ActionCallback finishCallback, ActionCallback interruptCallback, uint64_t additional ); void eventItemActionStart( uint32_t eventId, uint32_t action, ActionCallback finishCallback, ActionCallback interruptCallback, uint64_t additional );
/*! start/register a normal event */ /*! start/register a normal event */
void eventStart( uint64_t actorId, uint32_t eventId, Event::EventHandler::EventType eventParam, uint8_t eventParam1, uint32_t eventParam2, uint32_t contentId = 0 ); void eventStart( uint64_t actorId, uint32_t eventId, Event::EventHandler::EventType eventParam, uint8_t eventParam1, uint32_t eventParam2 );
/*! play a subevent */ /*! play a subevent */
void eventPlay( uint32_t eventId, uint32_t scene, uint32_t flags, uint32_t eventParam2, uint32_t eventParam3 ); void eventPlay( uint32_t eventId, uint32_t scene, uint32_t flags, uint32_t eventParam2, uint32_t eventParam3 );

View file

@ -99,7 +99,7 @@ void Core::Entity::Player::directorPlayScene( uint32_t eventId, uint32_t scene,
void Core::Entity::Player::eventStart( uint64_t actorId, uint32_t eventId, void Core::Entity::Player::eventStart( uint64_t actorId, uint32_t eventId,
Event::EventHandler::EventType eventType, uint8_t eventParam1, Event::EventHandler::EventType eventType, uint8_t eventParam1,
uint32_t eventParam2, uint32_t contentId ) uint32_t eventParam2 )
{ {
auto newEvent = Event::make_EventHandler( this, actorId, eventId, eventType, eventParam2 ); auto newEvent = Event::make_EventHandler( this, actorId, eventId, eventType, eventParam2 );
@ -108,7 +108,7 @@ void Core::Entity::Player::eventStart( uint64_t actorId, uint32_t eventId,
setStateFlag( PlayerStateFlag::InNpcEvent ); setStateFlag( PlayerStateFlag::InNpcEvent );
EventStartPacket eventStart( getId(), actorId, eventId, eventType, eventParam1, eventParam2, contentId ); EventStartPacket eventStart( getId(), actorId, eventId, eventType, eventParam1, eventParam2 );
queuePacket( eventStart ); queuePacket( eventStart );

View file

@ -67,4 +67,6 @@ target_link_libraries( sapphire_zone ${Boost_LIBRARIES} )
target_include_directories( sapphire_zone PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}" ) target_include_directories( sapphire_zone PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}" )
target_include_directories( sapphire_zone PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/Script" ) target_include_directories( sapphire_zone PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/Script" )
target_include_directories( sapphire_zone PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/external" ) target_include_directories( sapphire_zone PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/external" )
#cotire( sapphire_zone ) if (UNIX)
cotire( sapphire_zone )
endif()

View file

@ -170,7 +170,7 @@ void Core::Network::GameConnection::eventHandlerEnterTerritory( const Packets::G
if( auto instance = player.getCurrentInstance() ) if( auto instance = player.getCurrentInstance() )
{ {
player.eventStart( player.getId(), eventId, Event::EventHandler::EnterTerritory, 0, player.getZoneId(), instance->getDirectorId() & 0xFFFF ); player.eventStart( player.getId(), eventId, Event::EventHandler::EnterTerritory, 1, player.getZoneId() );
instance->onEnterTerritory( player, eventId, param1, param2 ); instance->onEnterTerritory( player, eventId, param1, param2 );
} }
else else

View file

@ -44,6 +44,19 @@ private:
m_data.param3 = param3; m_data.param3 = param3;
m_data.param4 = param4; m_data.param4 = param4;
m_data.param5 = param5; m_data.param5 = param5;
m_data.unknown[0] = 0x05;
m_data.unknown[4] = 0x22;
m_data.unknown[5] = 0xD6;
m_data.unknown[6] = 0x62;
m_data.unknown[7] = 0x59;
m_data.unknown[0x14] = 0x08;
m_data.unknown[0x15] = 0x02;
m_data.unknown[0x18] = 0x19;
m_data.unknown[0x19] = 0x14;
m_data.unknown[0x1C] = 0x23;
m_data.unknown[0x20] = 0x40;
m_data.unknown[0x24] = 0x80;
}; };
}; };

View file

@ -20,11 +20,10 @@ public:
uint32_t eventId, uint32_t eventId,
uint8_t param1 = 0, uint8_t param1 = 0,
uint8_t param2 = 0, uint8_t param2 = 0,
uint32_t param3 = 0, uint32_t param3 = 0 ) :
uint32_t contentId = 0 ) :
ZoneChannelPacket< FFXIVIpcEventStart >( playerId, playerId ) ZoneChannelPacket< FFXIVIpcEventStart >( playerId, playerId )
{ {
initialize( actorId, eventId, param1, param2, param3, contentId ); initialize( actorId, eventId, param1, param2, param3 );
}; };
private: private:
@ -32,15 +31,13 @@ private:
uint32_t eventId, uint32_t eventId,
uint8_t param1, uint8_t param1,
uint8_t param2, uint8_t param2,
uint32_t param3, uint32_t param3 )
uint32_t contentId )
{ {
m_data.actorId = actorId; m_data.actorId = actorId;
m_data.eventId = eventId; m_data.eventId = eventId;
m_data.param1 = param1; m_data.param1 = param1;
m_data.param2 = param2; m_data.param2 = param2;
m_data.param3 = param3; m_data.param3 = param3;
m_data.contentId = contentId;
}; };
}; };