1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-27 06:47:45 +00:00

Simplified syntax for eobj registering, added test script for thousand maws

This commit is contained in:
Mordred 2018-02-25 01:23:40 +01:00
parent 67c2cb7971
commit e548e148e5
6 changed files with 48 additions and 10 deletions

View file

@ -59,7 +59,8 @@ std::string Core::Event::getEventName( uint32_t eventId )
auto contentInfo = g_exdDataGen.get< Core::Data::InstanceContent >( eventId & 0xFFFF );
std::string name = contentInfo->name;
name.erase( boost::remove_if( name, boost::is_any_of( "_ '()[]" ) ), name.end() );
name.erase( boost::remove_if( name, boost::is_any_of( "★_ '()[]-\x1a\x1\x2\x1f\x1\x3.:" ) ), name.end() );
name[0] = toupper( name[0] );
return name;
}

View file

@ -251,9 +251,8 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in
player.getCurrentZone()->onInitDirector( player );
break;
}
case ClientTrigger::EnterTerritoryEventFinished:
case ClientTrigger::EnterTerritoryEventFinished:// this may still be something else. I think i have seen it elsewhere
{
g_log.debug( "[DOOOOOOOOOOOOOOOOOOOOOOONE]" );
player.setOnEnterEventDone( true );
break;
}

View file

@ -0,0 +1,33 @@
#include <ScriptObject.h>
#include <Zone/InstanceContent.h>
class TheThousandMawsOfTotoRak : public InstanceContentScript
{
public:
TheThousandMawsOfTotoRak() : InstanceContentScript( 1 )
{ }
void onInit( InstanceContentPtr instance ) override
{
instance->registerEObj( "Exit", EXIT_OBJECT, 0, EXIT_OBJECT_STATE, { 237, -39, -144 } );
instance->registerEObj( "Entrance", START_CIRCLE, START_CIRCLE_MAPLINK, START_CIRCLE_STATE, { -322, 12, -78 } );
}
void onUpdate( InstanceContentPtr instance, uint32_t currTime ) override
{
}
void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override
{
}
private:
static constexpr auto EXIT_OBJECT = 2000683;
static constexpr auto EXIT_OBJECT_STATE = 4;
static constexpr auto START_CIRCLE = 2000182;
static constexpr auto START_CIRCLE_MAPLINK = 4127435;
static constexpr auto START_CIRCLE_STATE = 5;
};

View file

@ -9,13 +9,8 @@ public:
void onInit( InstanceContentPtr instance ) override
{
Common::FFXIVARR_POSITION3 pos = { 0, 0, -10 };
auto exit = Entity::make_EventObject( EXIT_OBJECT, 0, EXIT_OBJECT_STATE, pos, "Exit" );
instance->registerEObj( exit );
Common::FFXIVARR_POSITION3 pos1 = { 0, 0, 24 };
auto start = Entity::make_EventObject( START_CIRCLE, START_CIRCLE_MAPLINK, START_CIRCLE_STATE, pos1, "Entrance" );
instance->registerEObj( start );
instance->registerEObj( "Exit", EXIT_OBJECT, 0, EXIT_OBJECT_STATE, { 0, 0, -10 } );
instance->registerEObj( "Entrance", START_CIRCLE, START_CIRCLE_MAPLINK, START_CIRCLE_STATE, { 0, 0, 24 } );
}
void onUpdate( InstanceContentPtr instance, uint32_t currTime ) override

View file

@ -716,3 +716,10 @@ uint32_t Core::Zone::getNextEObjId()
{
return ++m_nextEObjId;
}
void Core::Zone::registerEObj( const std::string &name, uint32_t objectId, uint32_t mapLink, uint8_t state,
FFXIVARR_POSITION3 pos )
{
auto eObj = Entity::make_EventObject( objectId, mapLink, state, pos, name );
registerEObj( eObj );
}

View file

@ -108,6 +108,9 @@ public:
void updateSessions( bool changedWeather );
void registerEObj( const std::string& name, uint32_t objectId, uint32_t mapLink,
uint8_t state, Common::FFXIVARR_POSITION3 pos );
void registerEObj( Entity::EventObjectPtr object );
Entity::EventObjectPtr getEObj( uint32_t objId );
void updateEObj( Entity::EventObjectPtr object );