From 305a1e9c3ab456c6857094f627934060ed67b67c Mon Sep 17 00:00:00 2001 From: Mordred Date: Sun, 31 Mar 2019 13:06:37 +0200 Subject: [PATCH] eobj_parser also parses questbattles now --- src/tools/event_object_parser/instance.tmpl | 6 ++-- src/tools/event_object_parser/main.cpp | 32 ++++++++++++++++++- .../event_object_parser/questbattle.tmpl | 32 +++++++++++++++++++ .../PacketWrappers/PlayerSpawnPacket.h | 2 +- 4 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 src/tools/event_object_parser/questbattle.tmpl diff --git a/src/tools/event_object_parser/instance.tmpl b/src/tools/event_object_parser/instance.tmpl index d0ebdbc7..18073304 100644 --- a/src/tools/event_object_parser/instance.tmpl +++ b/src/tools/event_object_parser/instance.tmpl @@ -3,12 +3,10 @@ using namespace Sapphire; -class INSTANCE_NAME : - public Sapphire::ScriptAPI::InstanceContentScript +class INSTANCE_NAME : public Sapphire::ScriptAPI::InstanceContentScript { public: - INSTANCE_NAME() : - Sapphire::ScriptAPI::InstanceContentScript( INSTANCE_ID ) + INSTANCE_NAME() : Sapphire::ScriptAPI::InstanceContentScript( INSTANCE_ID ) { } void onInit( InstanceContent& instance ) override diff --git a/src/tools/event_object_parser/main.cpp b/src/tools/event_object_parser/main.cpp index e047d117..c09a98b8 100644 --- a/src/tools/event_object_parser/main.cpp +++ b/src/tools/event_object_parser/main.cpp @@ -482,6 +482,11 @@ int main( int argc, char* argv[] ) zoneDumpList.emplace( zoneName ); } + + auto& catQuestBattle = eData->get_category( "QuestBattle" ); + auto questBattleData = static_cast< xiv::exd::Exd >( catQuestBattle.get_data_ln( xiv::exd::Language::none ) ); + + for( auto entry : contentList ) { std::string eobjects = ""; @@ -728,7 +733,14 @@ int main( int argc, char* argv[] ) } std::cout << "\n\n\n"; - std::ifstream t( "instance.tmpl" ); + std::ifstream t; + if( entry.type == 7 ) + { + t = std::ifstream ( "questbattle.tmpl" ); + } + else + t = std::ifstream ( "instance.tmpl" ); + std::string instanceTpl( ( std::istreambuf_iterator< char >( t ) ), std::istreambuf_iterator< char >() ); @@ -736,6 +748,24 @@ int main( int argc, char* argv[] ) result = std::regex_replace( result, std::regex( "\\INSTANCE_ID" ), std::to_string( entry.id ) ); result = std::regex_replace( result, std::regex( "\\EOBJ_INIT" ), eobjects ); + if( entry.type == 7 ) + { + if( entry.id > 200 ) + continue; + + std::string instruction; + auto row = questBattleData.get_row( entry.id ); + for( int i = 0; i < 149; ++i ) + { + if( std::get< std::string >( row.at( 4 + i ) ).empty() ) + continue; + instruction += " static constexpr auto " + std::get< std::string >( row.at( 4 + i ) ) + " = " + + std::to_string( std::get< uint32_t >( row.at( 154 + i ) ) )+ ";\n"; + } + + result = std::regex_replace( result, std::regex( "\\SCRIPT_INSTRUCTIONS" ), instruction ); + } + std::string subdir = ""; diff --git a/src/tools/event_object_parser/questbattle.tmpl b/src/tools/event_object_parser/questbattle.tmpl new file mode 100644 index 00000000..cc161d97 --- /dev/null +++ b/src/tools/event_object_parser/questbattle.tmpl @@ -0,0 +1,32 @@ +#include +#include + +using namespace Sapphire; + +class INSTANCE_NAME : public Sapphire::ScriptAPI::QuestBattleScript +{ +private: +SCRIPT_INSTRUCTIONS +public: + INSTANCE_NAME() : Sapphire::ScriptAPI::QuestBattleScript( INSTANCE_ID ) + { } + + void onInit( QuestBattle& instance ) override + { +EOBJ_INIT + } + + void onUpdate( QuestBattle& instance, uint32_t currTime ) override + { + + } + + void onEnterTerritory( QuestBattle& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, + uint16_t param2 ) override + { + + } + +}; + +EXPOSE_SCRIPT( INSTANCE_NAME ); \ No newline at end of file diff --git a/src/world/Network/PacketWrappers/PlayerSpawnPacket.h b/src/world/Network/PacketWrappers/PlayerSpawnPacket.h index e6798268..7c5363a3 100644 --- a/src/world/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/world/Network/PacketWrappers/PlayerSpawnPacket.h @@ -73,7 +73,7 @@ namespace Sapphire::Network::Packets::Server m_data.currentMount = player.getCurrentMount(); //m_data.activeMinion = player.getCurrentCompanion(); m_data.activeMinion = 0; - + m_data.onlineStatus = static_cast< uint8_t >( player.getOnlineStatus() ); //m_data.u23 = 0x04;