1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-25 22:17:45 +00:00

instance scripting stuff

This commit is contained in:
Adam 2018-02-09 02:34:43 +11:00
parent 1f40bcf91b
commit 61dfd16d7b
8 changed files with 70 additions and 10 deletions

View file

@ -13,6 +13,7 @@ namespace Core
{ {
TYPE_FORWARD( Cell ); TYPE_FORWARD( Cell );
TYPE_FORWARD( Zone ); TYPE_FORWARD( Zone );
TYPE_FORWARD( InstanceContent );
TYPE_FORWARD( Item ); TYPE_FORWARD( Item );
TYPE_FORWARD( ItemContainer ); TYPE_FORWARD( ItemContainer );
TYPE_FORWARD( Inventory ); TYPE_FORWARD( Inventory );

View file

@ -8,6 +8,7 @@
#include <Actor/Actor.h> #include <Actor/Actor.h>
#include <Actor/Player.h> #include <Actor/Player.h>
#include <StatusEffect/StatusEffect.h> #include <StatusEffect/StatusEffect.h>
#include <Zone/InstanceContent.h>
#ifdef _MSC_VER #ifdef _MSC_VER
#define EXPORT __declspec( dllexport ) #define EXPORT __declspec( dllexport )
@ -48,7 +49,7 @@ public:
class StatusEffectScript : public ScriptObject class StatusEffectScript : public ScriptObject
{ {
public: public:
StatusEffectScript( uint32_t effectId ) : explicit StatusEffectScript( uint32_t effectId ) :
ScriptObject( effectId, typeid( StatusEffectScript ).hash_code() ) ScriptObject( effectId, typeid( StatusEffectScript ).hash_code() )
{ } { }
@ -66,7 +67,7 @@ public:
class ActionScript : public ScriptObject class ActionScript : public ScriptObject
{ {
public: public:
ActionScript( uint32_t abilityId ) : explicit ActionScript( uint32_t abilityId ) :
ScriptObject( abilityId, typeid( ActionScript ).hash_code() ) ScriptObject( abilityId, typeid( ActionScript ).hash_code() )
{ } { }
@ -79,7 +80,7 @@ public:
class EventScript : public ScriptObject class EventScript : public ScriptObject
{ {
public: public:
EventScript( uint32_t questId ) : explicit EventScript( uint32_t questId ) :
ScriptObject( questId, typeid( EventScript ).hash_code() ) ScriptObject( questId, typeid( EventScript ).hash_code() )
{ } { }
@ -97,7 +98,7 @@ public:
class BattleNpcScript : public ScriptObject class BattleNpcScript : public ScriptObject
{ {
public: public:
BattleNpcScript( uint32_t npcId ) : explicit BattleNpcScript( uint32_t npcId ) :
ScriptObject( npcId, typeid( BattleNpcScript ).hash_code() ) ScriptObject( npcId, typeid( BattleNpcScript ).hash_code() )
{ } { }
}; };
@ -105,11 +106,22 @@ public:
class ZoneScript : public ScriptObject class ZoneScript : public ScriptObject
{ {
public: public:
ZoneScript( uint32_t zoneId ) : explicit ZoneScript( uint32_t zoneId ) :
ScriptObject( zoneId, typeid( ZoneScript ).hash_code() ) ScriptObject( zoneId, typeid( ZoneScript ).hash_code() )
{ } { }
virtual void onZoneInit() { } virtual void onZoneInit() { }
}; };
class InstanceContentScript : public ScriptObject
{
public:
explicit InstanceContentScript( uint32_t instanceContentId ) :
ScriptObject( instanceContentId, typeid( InstanceContentScript ).hash_code() )
{ }
virtual void onInit( InstanceContent& instance ) { }
virtual void onUpdate( InstanceContent& instance, uint32_t currTime ) { }
};
#endif #endif

View file

@ -332,7 +332,7 @@ bool Core::Scripting::ScriptManager::onStatusTimeOut( Entity::ActorPtr pActor, u
bool Core::Scripting::ScriptManager::onZoneInit( ZonePtr pZone ) bool Core::Scripting::ScriptManager::onZoneInit( ZonePtr pZone )
{ {
auto script = m_nativeScriptManager->getScript< ZoneScript >(pZone->getTerritoryId() ); auto script = m_nativeScriptManager->getScript< ZoneScript >( pZone->getTerritoryId() );
if( script ) if( script )
{ {
script->onZoneInit(); script->onZoneInit();
@ -342,6 +342,30 @@ bool Core::Scripting::ScriptManager::onZoneInit( ZonePtr pZone )
return false; return false;
} }
bool Core::Scripting::ScriptManager::onInstanceInit( InstanceContent& instance )
{
auto script = m_nativeScriptManager->getScript< InstanceContentScript >( instance.getInstanceContentId() );
if( script )
{
script->onInit( instance );
return true;
}
return false;
}
bool Core::Scripting::ScriptManager::onInstanceUpdate( InstanceContent& instance, uint32_t currTime )
{
auto script = m_nativeScriptManager->getScript< InstanceContentScript >( instance.getInstanceContentId() );
if( script )
{
script->onUpdate( instance, currTime );
return true;
}
return false;
}
Scripting::NativeScriptManager& Core::Scripting::ScriptManager::getNativeScriptHandler() Scripting::NativeScriptManager& Core::Scripting::ScriptManager::getNativeScriptHandler()
{ {
return *m_nativeScriptManager; return *m_nativeScriptManager;

View file

@ -59,6 +59,8 @@ namespace Core
bool onEventHandlerReturn( Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param1, uint16_t param2, uint16_t param3 ); bool onEventHandlerReturn( Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param1, uint16_t param2, uint16_t param3 );
bool onEventHandlerTradeReturn( Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param, uint32_t catalogId ); bool onEventHandlerTradeReturn( Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param, uint32_t catalogId );
bool onInstanceInit( InstanceContent& instance );
bool onInstanceUpdate( InstanceContent& instance, uint32_t currTime );
void loadDir( const std::string& dirname, std::set<std::string> &files, const std::string& ext ); void loadDir( const std::string& dirname, std::set<std::string> &files, const std::string& ext );

View file

@ -39,7 +39,7 @@ foreach(_scriptDir ${children})
endforeach() endforeach()
add_library("script_${_name}" MODULE "${SCRIPT_FILES}" "${SCRIPT_INCLUDE_FILES}" "${_scriptDir}/ScriptLoader.cpp") add_library("script_${_name}" MODULE "${SCRIPT_FILES}" "${SCRIPT_INCLUDE_FILES}" "${_scriptDir}/ScriptLoader.cpp")
target_link_libraries("script_${_name}" sapphire_zone) target_link_libraries("script_${_name}" sapphire_zone ${Boost_LIBRARIES})
if(MSVC) if(MSVC)
set_target_properties("script_${_name}" PROPERTIES set_target_properties("script_${_name}" PROPERTIES

View file

@ -1,8 +1,5 @@
#include <vector>
#include <Script/NativeScriptApi.h> #include <Script/NativeScriptApi.h>
class ScriptObject;
@ScriptIncludes@ @ScriptIncludes@
const ScriptObject* ptrs[] = const ScriptObject* ptrs[] =

View file

@ -0,0 +1,19 @@
#include <ScriptObject.h>
#include <Zone/InstanceContent.h>
class TheNavel : public InstanceContentScript
{
public:
TheNavel() : InstanceContentScript( 20002 )
{ }
void onInit( InstanceContent& instance ) override
{
}
void onUpdate( InstanceContent& instance, uint32_t currTime ) override
{
}
};

View file

@ -8,6 +8,7 @@
#include <common/Network/PacketDef/Zone/ServerZoneDef.h> #include <common/Network/PacketDef/Zone/ServerZoneDef.h>
#include "Event/Director.h" #include "Event/Director.h"
#include "Script/ScriptManager.h"
#include "Actor/Player.h" #include "Actor/Player.h"
@ -15,6 +16,7 @@
#include "Network/PacketWrappers/ActorControlPacket143.h" #include "Network/PacketWrappers/ActorControlPacket143.h"
extern Core::Logger g_log; extern Core::Logger g_log;
extern Core::Scripting::ScriptManager g_scriptMgr;
using namespace Core::Common; using namespace Core::Common;
using namespace Core::Network::Packets; using namespace Core::Network::Packets;
@ -31,6 +33,7 @@ Core::InstanceContent::InstanceContent( boost::shared_ptr< Core::Data::InstanceC
m_instanceContentId( instanceContentId ), m_instanceContentId( instanceContentId ),
m_state( Created ) m_state( Created )
{ {
g_scriptMgr.onInstanceInit( *this );
} }
Core::InstanceContent::~InstanceContent() Core::InstanceContent::~InstanceContent()
@ -119,6 +122,8 @@ void Core::InstanceContent::onUpdate( uint32_t currTime )
case DutyFinished: case DutyFinished:
break; break;
} }
g_scriptMgr.onInstanceUpdate( *this, currTime );
} }
void Core::InstanceContent::onFinishLoading( Entity::PlayerPtr pPlayer ) void Core::InstanceContent::onFinishLoading( Entity::PlayerPtr pPlayer )