From 407bf76dc83fcf65f1a01a740249fa3747cef1a7 Mon Sep 17 00:00:00 2001 From: Perize Date: Tue, 12 Jun 2018 09:29:21 +0900 Subject: [PATCH] EObj anim --- .../sapphire_zone/Actor/EventObject.cpp | 12 +++++++++++ src/servers/sapphire_zone/Actor/EventObject.h | 4 ++++ .../DebugCommand/DebugCommandHandler.cpp | 21 +++++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/src/servers/sapphire_zone/Actor/EventObject.cpp b/src/servers/sapphire_zone/Actor/EventObject.cpp index 64e59688..3b711eb1 100644 --- a/src/servers/sapphire_zone/Actor/EventObject.cpp +++ b/src/servers/sapphire_zone/Actor/EventObject.cpp @@ -88,6 +88,18 @@ void Core::Entity::EventObject::setState( uint8_t state ) } } +void Core::Entity::EventObject::setAnimationFlag( uint32_t flag, uint32_t animationFlag ) { + for( const auto& player : m_inRangePlayers ) + { + ZoneChannelPacket< FFXIVIpcActorControl142 > eobjUpdatePacket( getId(), player->getId() ); + eobjUpdatePacket.data().category = Common::ActorControlType::EObjAnimation; + eobjUpdatePacket.data().param1 = flag; + eobjUpdatePacket.data().param2 = animationFlag; + + player->queuePacket( eobjUpdatePacket ); + } +} + void Core::Entity::EventObject::setParentInstance( Core::InstanceContentPtr instance ) { m_parentInstance = instance; diff --git a/src/servers/sapphire_zone/Actor/EventObject.h b/src/servers/sapphire_zone/Actor/EventObject.h index 363d5077..2e79a7a2 100644 --- a/src/servers/sapphire_zone/Actor/EventObject.h +++ b/src/servers/sapphire_zone/Actor/EventObject.h @@ -37,6 +37,8 @@ namespace Entity void spawn( PlayerPtr pTarget ) override; void despawn( PlayerPtr pTarget ) override; + void setAnimationFlag( uint32_t flag, uint32_t animationFlag ); + protected: uint32_t m_gimmickId; uint32_t m_objectId; @@ -45,6 +47,8 @@ namespace Entity std::string m_name; InstanceContentPtr m_parentInstance; OnTalkEventHandler m_onTalkEventHandler; + + }; } } diff --git a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp index 71d8d8fe..b09d043a 100644 --- a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp +++ b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp @@ -31,6 +31,7 @@ #include "Zone/Zone.h" #include "Zone/InstanceContent.h" #include "Zone/TerritoryMgr.h" +#include "Event/EventDefs.h" #include "ServerZone.h" @@ -817,6 +818,26 @@ void Core::DebugCommandHandler::instance( char* data, Entity::Player &player, bo obj->setState( state ); } + else if ( subCommand == "objflag" ) + { + char objName[256]; + uint32_t state1; + uint32_t state2; + + sscanf( params.c_str(), "%s %i %i", objName, &state1, &state2 ); + + auto instance = boost::dynamic_pointer_cast< InstanceContent >( player.getCurrentZone() ); + if( !instance ) + return; + + auto obj = instance->getEObjByName( objName ); + if( !obj ) { + player.sendDebug( "No eobj found." ); + return; + } + + obj->setAnimationFlag( state1, state2 ); + } else if( subCommand == "seq" ) { uint8_t seq;