mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-05-25 11:07:45 +00:00
SaveDataEventHandler
This commit is contained in:
parent
2ac74f7313
commit
073b79b4f6
11 changed files with 68 additions and 3 deletions
|
@ -1313,7 +1313,16 @@ namespace Sapphire::Common
|
||||||
EmptyCoffer = 11, // seems like no param
|
EmptyCoffer = 11, // seems like no param
|
||||||
};
|
};
|
||||||
|
|
||||||
using PlayerStateFlagList = std::vector< PlayerStateFlag >;
|
struct EventSaveData
|
||||||
|
{
|
||||||
|
uint32_t eventId;
|
||||||
|
uint16_t scene;
|
||||||
|
uint16_t unknown1;
|
||||||
|
uint32_t params[11];
|
||||||
|
uint64_t unknown2;
|
||||||
|
uint8_t unknown3[4];
|
||||||
|
uint64_t unknown4;
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -399,6 +399,7 @@ namespace Sapphire::Network::Packets
|
||||||
ReturnEventHandler = 0x0333, // updated 5.58
|
ReturnEventHandler = 0x0333, // updated 5.58
|
||||||
TradeReturnEventHandler = 0x0179, // updated 5.58
|
TradeReturnEventHandler = 0x0179, // updated 5.58
|
||||||
TradeReturnEventHandler2 = 0x02E1, // updated 5.58
|
TradeReturnEventHandler2 = 0x02E1, // updated 5.58
|
||||||
|
SaveDataEventHandler = 0x03D7, // updated 5.58
|
||||||
|
|
||||||
LinkshellEventHandler = 0x016B, // updated 4.5
|
LinkshellEventHandler = 0x016B, // updated 4.5
|
||||||
LinkshellEventHandler1 = 0x016C, // updated 4.5
|
LinkshellEventHandler1 = 0x016C, // updated 4.5
|
||||||
|
|
|
@ -446,6 +446,12 @@ struct FFXIVIpcHousingEditInterior :
|
||||||
uint16_t slot[10];
|
uint16_t slot[10];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct FFXIVIpcSaveDataEventHandler :
|
||||||
|
FFXIVIpcBasePacket< SaveDataEventHandler >
|
||||||
|
{
|
||||||
|
Common::EventSaveData data;
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //_CORE_NETWORK_PACKETS_ZONE_CLIENT_IPC_H
|
#endif //_CORE_NETWORK_PACKETS_ZONE_CLIENT_IPC_H
|
||||||
|
|
|
@ -2238,6 +2238,14 @@ namespace Sapphire::Network::Packets::Server
|
||||||
char memberName[32];
|
char memberName[32];
|
||||||
uint8_t padding[3];
|
uint8_t padding[3];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct FFXIVIpcEventYield : FFXIVIpcBasePacket< EventYield >
|
||||||
|
{
|
||||||
|
uint32_t eventId;
|
||||||
|
uint16_t scene;
|
||||||
|
uint16_t unknown;
|
||||||
|
uint64_t unknown2;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /*_CORE_NETWORK_PACKETS_SERVER_IPC_H*/
|
#endif /*_CORE_NETWORK_PACKETS_SERVER_IPC_H*/
|
||||||
|
|
|
@ -106,6 +106,7 @@ Sapphire::Network::GameConnection::GameConnection( Sapphire::Network::HivePtr pH
|
||||||
setZoneHandler( ClientZoneIpcType::TradeReturnEventHandler, "TradeReturnEventHandler",
|
setZoneHandler( ClientZoneIpcType::TradeReturnEventHandler, "TradeReturnEventHandler",
|
||||||
&GameConnection::eventHandlerReturn );
|
&GameConnection::eventHandlerReturn );
|
||||||
setZoneHandler( ClientZoneIpcType::TradeReturnEventHandler2, "TradeReturnEventHandler2", &GameConnection::eventHandlerReturn );
|
setZoneHandler( ClientZoneIpcType::TradeReturnEventHandler2, "TradeReturnEventHandler2", &GameConnection::eventHandlerReturn );
|
||||||
|
setZoneHandler( ClientZoneIpcType::SaveDataEventHandler, "SaveDataEventHandler", &GameConnection::saveDataEventHandler );
|
||||||
|
|
||||||
setZoneHandler( ClientZoneIpcType::ShopEventHandler, "ShopEventHandler",
|
setZoneHandler( ClientZoneIpcType::ShopEventHandler, "ShopEventHandler",
|
||||||
&GameConnection::eventHandlerShop );
|
&GameConnection::eventHandlerShop );
|
||||||
|
|
|
@ -208,6 +208,8 @@ namespace Sapphire::Network
|
||||||
DECLARE_HANDLER( kickPartyMemberHandler );
|
DECLARE_HANDLER( kickPartyMemberHandler );
|
||||||
|
|
||||||
DECLARE_HANDLER( disbandPartyHandler );
|
DECLARE_HANDLER( disbandPartyHandler );
|
||||||
|
|
||||||
|
DECLARE_HANDLER( saveDataEventHandler );
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -289,5 +289,24 @@ void Sapphire::Network::GameConnection::eventHandlerShop( const Packets::FFXIVAR
|
||||||
scriptMgr.onTalk( player, player.getId(), eventId );
|
scriptMgr.onTalk( player, player.getId(), eventId );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Sapphire::Network::GameConnection::saveDataEventHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player )
|
||||||
|
{
|
||||||
|
auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref();
|
||||||
|
auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref();
|
||||||
|
|
||||||
|
const auto packet = ZoneChannelPacket< Client::FFXIVIpcSaveDataEventHandler >( inPacket );
|
||||||
|
|
||||||
|
const auto eventId = packet.data().data.eventId;
|
||||||
|
|
||||||
|
std::string eventName = "onSaveData";
|
||||||
|
std::string objName = eventMgr.getEventName( eventId );
|
||||||
|
player.sendDebug( "Calling: {0}.{1} - {2} scene: {3}", objName, eventName, eventId, packet.data().data.scene );
|
||||||
|
|
||||||
|
scriptMgr.onSaveData( player, packet.data().data );
|
||||||
|
|
||||||
|
auto response = makeZonePacket< FFXIVIpcEventYield >( player.getId() );
|
||||||
|
response->data().eventId = eventId;
|
||||||
|
response->data().scene = packet.data().data.scene;
|
||||||
|
player.queuePacket( response );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -146,6 +146,10 @@ namespace Sapphire::ScriptAPI
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventScript::onSaveData( Sapphire::Entity::Player& player, const Common::EventSaveData& data )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
EventObjectScript::EventObjectScript( uint32_t eobjId ) :
|
EventObjectScript::EventObjectScript( uint32_t eobjId ) :
|
||||||
|
|
|
@ -172,6 +172,8 @@ namespace Sapphire::ScriptAPI
|
||||||
uint32_t catalogId );
|
uint32_t catalogId );
|
||||||
|
|
||||||
virtual void onEObjHit( Sapphire::Entity::Player& player, uint64_t actorId, uint32_t actionId );
|
virtual void onEObjHit( Sapphire::Entity::Player& player, uint64_t actorId, uint32_t actionId );
|
||||||
|
|
||||||
|
virtual void onSaveData( Sapphire::Entity::Player& player, const Common::EventSaveData& data );
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
|
@ -566,8 +566,7 @@ Sapphire::Scripting::NativeScriptMgr& Sapphire::Scripting::ScriptMgr::getNativeS
|
||||||
return *m_nativeScriptMgr;
|
return *m_nativeScriptMgr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool Sapphire::Scripting::ScriptMgr::onDutyComplete( Sapphire::QuestBattlePtr instance, Sapphire::Entity::Player& player )
|
||||||
Sapphire::Scripting::ScriptMgr::onDutyComplete( Sapphire::QuestBattlePtr instance, Sapphire::Entity::Player& player )
|
|
||||||
{
|
{
|
||||||
auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::QuestBattleScript >( instance->getDirectorId() );
|
auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::QuestBattleScript >( instance->getDirectorId() );
|
||||||
if( script )
|
if( script )
|
||||||
|
@ -578,3 +577,15 @@ Sapphire::Scripting::ScriptMgr::onDutyComplete( Sapphire::QuestBattlePtr instanc
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Sapphire::Scripting::ScriptMgr::onSaveData( Sapphire::Entity::Player& player, const Sapphire::Common::EventSaveData& data )
|
||||||
|
{
|
||||||
|
auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::EventScript >( data.eventId );
|
||||||
|
if( script )
|
||||||
|
{
|
||||||
|
script->onSaveData( player, data );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
|
@ -118,6 +118,8 @@ namespace Sapphire::Scripting
|
||||||
|
|
||||||
bool onDutyComplete( QuestBattlePtr instance, Entity::Player& player );
|
bool onDutyComplete( QuestBattlePtr instance, Entity::Player& player );
|
||||||
|
|
||||||
|
bool onSaveData( Entity::Player& player, const Common::EventSaveData& data );
|
||||||
|
|
||||||
bool loadDir( const std::string& dirname, std::set< std::string >& files, const std::string& ext );
|
bool loadDir( const std::string& dirname, std::set< std::string >& files, const std::string& ext );
|
||||||
|
|
||||||
NativeScriptMgr& getNativeScriptHandler();
|
NativeScriptMgr& getNativeScriptHandler();
|
||||||
|
|
Loading…
Add table
Reference in a new issue