1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-04 17:57:47 +00:00
sapphire/src/scripts/common/CmnDefLinkShell.cpp

97 lines
2.6 KiB
C++
Raw Normal View History

2018-06-18 13:14:11 +00:00
#include <ScriptObject.h>
2018-03-07 08:14:42 +01:00
#include <Actor/Player.h>
#define ACTION_CREATE 2
#define ACTION_RENAME 3
#define ACTION_REMOVE 4
using namespace Sapphire;
2018-10-28 21:53:21 +01:00
class CmnDefLinkShell :
public Sapphire::ScriptAPI::EventScript
2018-03-07 08:14:42 +01:00
{
public:
CmnDefLinkShell() :
Sapphire::ScriptAPI::EventScript( 0xB0006 )
{
}
void Scene00001( Entity::Player& player )
{
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
{
switch( result.getResult( 0 ) )
2018-03-07 08:14:42 +01:00
{
case ACTION_CREATE:
Scene00002( player );
break;
case ACTION_RENAME:
Scene00003( player );
break;
case ACTION_REMOVE:
Scene00004( player );
break;
}
};
eventMgr().playScene( player, getId(), 1, HIDE_HOTBAR | NO_DEFAULT_CAMERA, callback );
}
// create linkshell
void Scene00002( Entity::Player& player )
{
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
{
2021-12-02 23:27:27 +01:00
auto ls = linkshellMgr().createLinkshell( result.resultString, player );
if( !ls )
{
eventMgr().resumeScene( player, result.eventId, result.sceneId, { 0x15a }, false );
2021-12-12 23:26:12 +01:00
linkshellMgr().finishLinkshellAction( result.resultString, 0x15a, player, 1 );
}
2021-12-02 23:27:27 +01:00
else
{
eventMgr().resumeScene( player, result.eventId, result.sceneId, { 0 }, true );
2021-12-12 23:26:12 +01:00
linkshellMgr().finishLinkshellAction( result.resultString, 0, player, 1 );
}
};
eventMgr().playScene( player, getId(), 2, HIDE_HOTBAR, callback );
}
// rename linkshell
void Scene00003( Entity::Player& player )
{
2021-12-12 23:26:12 +01:00
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
{
auto ls = linkshellMgr().renameLinkshell( result.intResult, result.resultString, player );
if( !ls )
{
eventMgr().resumeScene( player, result.eventId, result.sceneId, { 0x15a }, false );
linkshellMgr().finishLinkshellAction( result.resultString, 0x15a, player, 3 );
}
else
{
eventMgr().resumeScene( player, result.eventId, result.sceneId, { 0 }, true );
linkshellMgr().finishLinkshellAction( result.resultString, 0, player, 3 );
}
};
eventMgr().playScene( player, getId(), 3, HIDE_HOTBAR, callback );
}
// remove linkshell
void Scene00004( Entity::Player& player )
{
eventMgr().playScene( player, getId(), 4, HIDE_HOTBAR );
}
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
{
Scene00001( player );
}
};
EXPOSE_SCRIPT( CmnDefLinkShell );