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:
parent
7a7674b943
commit
6d6c3c0f90
5 changed files with 31 additions and 28 deletions
|
@ -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")
|
||||
|
|
|
@ -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 );
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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 );
|
||||
|
|
|
@ -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 ) );
|
||||
|
|
Loading…
Add table
Reference in a new issue