mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-26 06:27:45 +00:00
onEventItem in scripts can now be implemented
This commit is contained in:
parent
cf2f1d0d58
commit
4baf4314d3
6 changed files with 34 additions and 16 deletions
|
@ -93,6 +93,11 @@ class SubFst033 : public Sapphire::ScriptAPI::QuestScript
|
|||
}
|
||||
}
|
||||
|
||||
void onEventItem( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void onBNpcKill( uint32_t npcId, Entity::Player& player ) override
|
||||
{
|
||||
switch( npcId )
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <Network/PacketWrappers/EffectPacket.h>
|
||||
|
||||
#include "Manager/PlayerMgr.h"
|
||||
#include "Script/ScriptMgr.h"
|
||||
#include <Service.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
#include <WorldServer.h>
|
||||
|
@ -54,6 +55,9 @@ bool EventItemAction::init()
|
|||
void EventItemAction::execute()
|
||||
{
|
||||
Manager::PlayerMgr::sendDebug( *getSourceChara()->getAsPlayer(), "EventItemAction type {0} execute called.", m_eventItemAction->data().Action );
|
||||
auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref();
|
||||
|
||||
scriptMgr.onEventItem( *getSourceChara()->getAsPlayer(), m_eventItem, m_eventItemAction->data().EventHandler, m_targetId );
|
||||
}
|
||||
|
||||
void EventItemAction::onStart()
|
||||
|
|
|
@ -119,10 +119,9 @@ namespace Sapphire::ScriptAPI
|
|||
{
|
||||
}
|
||||
|
||||
void EventScript::onEventItem( Entity::Player& player, uint32_t eventItemId, uint32_t eventId, uint32_t castTime,
|
||||
uint64_t targetId )
|
||||
{
|
||||
}
|
||||
//void EventScript::onEventItem( Entity::Player& player, Entity::Player& player, uint64_t actorId )
|
||||
//{
|
||||
//}
|
||||
|
||||
void EventScript::onEventHandlerTradeReturn( Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param,
|
||||
uint32_t catalogId )
|
||||
|
|
|
@ -163,8 +163,7 @@ namespace Sapphire::ScriptAPI
|
|||
|
||||
virtual void onOutsideRange( Sapphire::Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z );
|
||||
|
||||
virtual void onEventItem( Sapphire::Entity::Player& player, uint32_t eventItemId, uint32_t eventId, uint32_t castTime,
|
||||
uint64_t targetId );
|
||||
//virtual void onEventItem( World::Quest& quest, Entity::Player& player, uint64_t actorId );
|
||||
|
||||
virtual void onEventHandlerTradeReturn( Sapphire::Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param,
|
||||
uint32_t catalogId );
|
||||
|
|
|
@ -320,22 +320,34 @@ bool Sapphire::Scripting::ScriptMgr::onEventHandlerTradeReturn( Entity::Player&
|
|||
return false;
|
||||
}
|
||||
|
||||
bool Sapphire::Scripting::ScriptMgr::onEventItem( Entity::Player& player, uint32_t eventItemId, uint32_t eventId, uint32_t castTime, uint64_t targetId )
|
||||
bool Sapphire::Scripting::ScriptMgr::onEventItem( Entity::Player& player, uint32_t eventItemId, uint32_t eventId, uint64_t targetId )
|
||||
{
|
||||
auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref();
|
||||
|
||||
std::string eventName = "onEventItem";
|
||||
std::string objName = eventMgr.getEventName( eventId );
|
||||
PlayerMgr::sendDebug( player, "Calling: {0}.{1} - {2}", objName, eventName, eventId );
|
||||
|
||||
auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::EventScript >( eventId );
|
||||
auto eventType = static_cast< uint16_t >( eventId >> 16 );
|
||||
auto& exdData = Common::Service< Data::ExdData >::ref();
|
||||
if( eventType == Event::EventHandler::EventHandlerType::Quest )
|
||||
{
|
||||
auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::QuestScript >( eventId );
|
||||
if( script )
|
||||
{
|
||||
eventMgr.eventStart( player, targetId, eventId, Event::EventHandler::Item, 0, 0 );
|
||||
|
||||
script->onEventItem( player, eventItemId, eventId, castTime, targetId );
|
||||
auto questId = static_cast< uint16_t >( eventId );
|
||||
if( player.hasQuest( eventId ) )
|
||||
{
|
||||
World::Quest preQ;
|
||||
auto questIdx = player.getQuestIndex( questId );
|
||||
auto& quest = player.getQuestByIndex( questIdx );
|
||||
preQ = quest;
|
||||
script->onEventItem( quest, player, targetId );
|
||||
if( quest != preQ )
|
||||
player.updateQuest( quest );
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -64,8 +64,7 @@ namespace Sapphire::Scripting
|
|||
|
||||
bool onEmote( Entity::Player& player, uint64_t actorId, uint32_t eventId, uint8_t emoteId );
|
||||
|
||||
bool onEventItem( Entity::Player& player, uint32_t eventItemId, uint32_t eventId, uint32_t castTime,
|
||||
uint64_t targetId );
|
||||
bool onEventItem( Entity::Player& player, uint32_t eventItemId, uint32_t eventId, uint64_t targetId );
|
||||
|
||||
bool onBNpcKill( Entity::Player& player, uint16_t nameId );
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue