mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-26 14:37:44 +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
|
void onBNpcKill( uint32_t npcId, Entity::Player& player ) override
|
||||||
{
|
{
|
||||||
switch( npcId )
|
switch( npcId )
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include <Network/PacketWrappers/EffectPacket.h>
|
#include <Network/PacketWrappers/EffectPacket.h>
|
||||||
|
|
||||||
#include "Manager/PlayerMgr.h"
|
#include "Manager/PlayerMgr.h"
|
||||||
|
#include "Script/ScriptMgr.h"
|
||||||
#include <Service.h>
|
#include <Service.h>
|
||||||
#include <Network/CommonActorControl.h>
|
#include <Network/CommonActorControl.h>
|
||||||
#include <WorldServer.h>
|
#include <WorldServer.h>
|
||||||
|
@ -54,6 +55,9 @@ bool EventItemAction::init()
|
||||||
void EventItemAction::execute()
|
void EventItemAction::execute()
|
||||||
{
|
{
|
||||||
Manager::PlayerMgr::sendDebug( *getSourceChara()->getAsPlayer(), "EventItemAction type {0} execute called.", m_eventItemAction->data().Action );
|
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()
|
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,
|
//void EventScript::onEventItem( Entity::Player& player, Entity::Player& player, uint64_t actorId )
|
||||||
uint64_t targetId )
|
//{
|
||||||
{
|
//}
|
||||||
}
|
|
||||||
|
|
||||||
void EventScript::onEventHandlerTradeReturn( Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param,
|
void EventScript::onEventHandlerTradeReturn( Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param,
|
||||||
uint32_t catalogId )
|
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 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,
|
//virtual void onEventItem( World::Quest& quest, Entity::Player& player, uint64_t actorId );
|
||||||
uint64_t targetId );
|
|
||||||
|
|
||||||
virtual void onEventHandlerTradeReturn( Sapphire::Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param,
|
virtual void onEventHandlerTradeReturn( Sapphire::Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param,
|
||||||
uint32_t catalogId );
|
uint32_t catalogId );
|
||||||
|
|
|
@ -320,21 +320,33 @@ bool Sapphire::Scripting::ScriptMgr::onEventHandlerTradeReturn( Entity::Player&
|
||||||
return false;
|
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();
|
auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref();
|
||||||
|
|
||||||
std::string eventName = "onEventItem";
|
std::string eventName = "onEventItem";
|
||||||
std::string objName = eventMgr.getEventName( eventId );
|
std::string objName = eventMgr.getEventName( eventId );
|
||||||
PlayerMgr::sendDebug( player, "Calling: {0}.{1} - {2}", objName, eventName, 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 );
|
||||||
if( script )
|
auto& exdData = Common::Service< Data::ExdData >::ref();
|
||||||
|
if( eventType == Event::EventHandler::EventHandlerType::Quest )
|
||||||
{
|
{
|
||||||
eventMgr.eventStart( player, targetId, eventId, Event::EventHandler::Item, 0, 0 );
|
auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::QuestScript >( eventId );
|
||||||
|
if( script )
|
||||||
script->onEventItem( player, eventItemId, eventId, castTime, targetId );
|
{
|
||||||
return true;
|
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;
|
return false;
|
||||||
|
|
|
@ -64,8 +64,7 @@ namespace Sapphire::Scripting
|
||||||
|
|
||||||
bool onEmote( Entity::Player& player, uint64_t actorId, uint32_t eventId, uint8_t emoteId );
|
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,
|
bool onEventItem( Entity::Player& player, uint32_t eventItemId, uint32_t eventId, uint64_t targetId );
|
||||||
uint64_t targetId );
|
|
||||||
|
|
||||||
bool onBNpcKill( Entity::Player& player, uint16_t nameId );
|
bool onBNpcKill( Entity::Player& player, uint16_t nameId );
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue