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

eobj state cmd and some ontalk fixes

This commit is contained in:
Adam 2018-02-27 23:05:42 +11:00
parent 7a7674b943
commit 6d6c3c0f90
5 changed files with 31 additions and 28 deletions

View file

@ -67,5 +67,5 @@ add_subdirectory("src/tools/exd_common_gen")
add_subdirectory("src/tools/exd_struct_gen")
add_subdirectory("src/tools/exd_struct_test")
add_subdirectory("src/tools/quest_parser")
add_subdirectory("src/tools/pcb_reader")
add_subdirectory("src/tools/event_object_parser")
#add_subdirectory("src/tools/pcb_reader")
#add_subdirectory("src/tools/event_object_parser")

View file

@ -13,7 +13,7 @@ namespace Entity
EventObject( uint32_t objectId, uint32_t mapLinkId, uint8_t initialState, Common::FFXIVARR_POSITION3 pos,
const std::string& givenName = "none" );
using OnTalkEventHandler = std::function< void( Entity::Player&, uint64_t ) >;
using OnTalkEventHandler = std::function< void( Entity::Player&, Entity::EventObjectPtr, InstanceContentPtr, uint64_t ) >;
uint32_t getMapLinkId() const;
void setMapLinkId( uint32_t mapLinkId );

View file

@ -720,34 +720,18 @@ void Core::DebugCommandHandler::instance( char* data, Entity::Player &player, bo
instance->setVar( static_cast< uint8_t >( index ), static_cast< uint8_t >( value ) );
}
else if( subCommand == "objupdate" )
{
uint32_t objId;
sscanf( params.c_str(), "%d", &objId );
auto instance = boost::dynamic_pointer_cast< InstanceContent >( player.getCurrentZone() );
if( !instance )
return;
auto obj = instance->getEObj(objId);
if( !obj )
return;
//instance->updateEObj(obj);
}
else if( subCommand == "objstate" )
{
uint32_t objId;
char objName[128];
uint8_t state;
sscanf( params.c_str(), "%d %hhu", &objId, &state );
sscanf( params.c_str(), "%s %hhu", objName, &state );
auto instance = boost::dynamic_pointer_cast< InstanceContent >( player.getCurrentZone() );
if( !instance )
return;
auto obj = instance->getEObj(objId);
auto obj = instance->getEObjByName( objName );
if( !obj )
return;

View file

@ -3,6 +3,19 @@
class Sastasha : public InstanceContentScript
{
private:
static void memoOnTalk( Entity::Player& player, Entity::EventObjectPtr object, InstanceContentPtr instance, uint64_t actorId )
{
}
static void switchOnTalk( Entity::Player& player, Entity::EventObjectPtr object, InstanceContentPtr instance, uint64_t actorId )
{
object->setState( 7 );
instance->getEObjByName( "Hiddendoor" )->setState( 7 );
}
public:
Sastasha() : InstanceContentScript( 4 )
{ }
@ -25,17 +38,23 @@ public:
instance->registerEObj( "Bluecoralformation", 2000213, 3668215, 4, { 75.869797f, 35.101421f, -32.537209f }, 0.930753f );
instance->registerEObj( "Redcoralformation", 2000214, 3668214, 4, { 88.769371f, 31.135691f, -40.869640f }, 0.930753f );
instance->registerEObj( "Greencoralformation", 2000215, 3668216, 4, { 64.988159f, 33.672821f, -56.690559f }, 0.991789f );
instance->registerEObj( "Inconspicuousswitch", 2000216, 3653858, 4, { 62.907951f, 33.969521f, -31.172279f }, 1.000000f );
instance->registerEObj( "Hiddendoor", 2000217, 3653517, 4, { 59.000000f, 32.000000f, -35.000000f }, 1.000000f );
auto switchObj = instance->registerEObj( "Inconspicuousswitch", 2000216, 3653858, 4, { 62.907951f, 33.969521f, -31.172279f }, 1.000000f );
switchObj->setOnTalkHandler( switchOnTalk );
instance->registerEObj( "Hiddendoor", 2000217, 3653517, 5, { 59.000000f, 32.000000f, -35.000000f }, 1.000000f );
instance->registerEObj( "Giantclam", 2000222, 4208408, 4, { 181.170303f, 32.104599f, -128.069000f }, 0.991789f );
instance->registerEObj( "Unknown10", 2000260, 4208409, 4, { 166.318695f, 30.735420f, -128.312103f }, 0.991789f );
instance->registerEObj( "Unknown11", 2000261, 4208410, 4, { 158.800598f, 28.586321f, -76.340927f }, 0.991789f );
instance->registerEObj( "Unknown12", 2000262, 4208411, 4, { 125.463402f, 29.260550f, -51.934608f }, 0.991789f );
instance->registerEObj( "Unknown13", 2000263, 4208412, 4, { 126.070198f, 28.913260f, -99.908722f }, 1.000000f );
instance->registerEObj( "Unknown14", 2000264, 4208413, 4, { 97.055313f, 27.081551f, -70.264381f }, 0.991789f );
instance->registerEObj( "Bloodymemo", 2000212, 0, 4, { 320.812988f, 47.862450f, -130.776306f }, 0.600000f );
instance->registerEObj( "Bloodymemo", 2001548, 0, 4, { 320.812988f, 47.862450f, -130.776306f }, 0.600000f );
instance->registerEObj( "Bloodymemo", 2001549, 0, 4, { 320.812988f, 47.862450f, -130.776306f }, 0.600000f );
auto memo = instance->registerEObj( "Bloodymemo", 2000212, 0, 4, { 320.812988f, 47.862450f, -130.776306f }, 0.600000f );
memo->setOnTalkHandler( memoOnTalk );
//instance->registerEObj( "Bloodymemo", 2001548, 0, 4, { 320.812988f, 47.862450f, -130.776306f }, 0.600000f );
//instance->registerEObj( "Bloodymemo", 2001549, 0, 4, { 320.812988f, 47.862450f, -130.776306f }, 0.600000f );
instance->registerEObj( "Rambadedoor", 2000225, 3653865, 4, { -35.299999f, 24.000000f, 60.799999f }, 1.000000f );
instance->registerEObj( "Captainsquarters", 2000227, 3687697, 4, { -95.044670f, 20.513069f, 172.039597f }, 0.991789f );
instance->registerEObj( "WaveriderGate", 2000231, 3655909, 4, { -130.600006f, 16.000000f, 156.800003f }, 1.000000f );

View file

@ -273,7 +273,7 @@ void Core::InstanceContent::onTalk( Core::Entity::Player& player, uint32_t event
return;
if( auto onTalk = it->second->getOnTalkHandler() )
onTalk( player, actorId );
onTalk( player, it->second, getAsInstanceContent(), actorId );
else
player.sendDebug( "No onTalk handler found for interactable eobj with EObjID: " +
std::to_string( it->second->getObjectId() ) + ", eventId: " + std::to_string( eventId ) );