mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-23 21:27:45 +00:00
fix infinite callback loop
This commit is contained in:
parent
ee715a62af
commit
c24c215208
9 changed files with 25 additions and 53 deletions
|
@ -6,7 +6,7 @@ class CmnDefCutSceneReplay : public EventScript
|
|||
{
|
||||
public:
|
||||
CmnDefCutSceneReplay() : EventScript( 721028 )
|
||||
{ }
|
||||
{}
|
||||
|
||||
void Scene00000( Entity::Player& player )
|
||||
{
|
||||
|
|
|
@ -6,7 +6,7 @@ class CmnDefInnBed : public EventScript
|
|||
{
|
||||
public:
|
||||
CmnDefInnBed() : EventScript( 720916 )
|
||||
{ }
|
||||
{}
|
||||
|
||||
// menu
|
||||
void Scene00000( Entity::Player& player )
|
||||
|
|
|
@ -10,7 +10,7 @@ class CmnDefLinkShell : public EventScript
|
|||
{
|
||||
public:
|
||||
CmnDefLinkShell() : EventScript( 0xB0006 )
|
||||
{ }
|
||||
{}
|
||||
|
||||
void Scene00001( Entity::Player& player )
|
||||
{
|
||||
|
|
|
@ -6,7 +6,7 @@ class HouFurOrchestrion : public EventScript
|
|||
{
|
||||
public:
|
||||
HouFurOrchestrion() : EventScript( 721226 )
|
||||
{ }
|
||||
{}
|
||||
|
||||
void Scene00000( Entity::Player& player )
|
||||
{
|
||||
|
|
|
@ -49,12 +49,7 @@ private:
|
|||
|
||||
void Scene00001( Entity::Player& player )
|
||||
{
|
||||
auto callback = [&]( Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
Scene00002( player );
|
||||
};
|
||||
|
||||
player.playScene( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, 0, 0, callback );
|
||||
player.playSceneChain( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, BIND_SCENE( &ManFst001::Scene00002 ) );
|
||||
}
|
||||
|
||||
void Scene00002( Entity::Player& player )
|
||||
|
@ -71,12 +66,7 @@ private:
|
|||
|
||||
void Scene00004( Entity::Player& player )
|
||||
{
|
||||
auto callback = [&]( Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
Scene00005( player );
|
||||
};
|
||||
|
||||
player.playScene( getId(), 4, FADE_OUT | HIDE_HOTBAR | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback );
|
||||
player.playSceneChain( getId(), 4, FADE_OUT | HIDE_HOTBAR | CONDITION_CUTSCENE | HIDE_UI, BIND_SCENE( &ManFst001::Scene00005 ) );
|
||||
}
|
||||
|
||||
void Scene00005( Entity::Player& player )
|
||||
|
@ -85,7 +75,7 @@ private:
|
|||
{
|
||||
if( result.param2 == 1 )
|
||||
{
|
||||
if( player.giveQuestRewards( getId(), 0 ))
|
||||
if( player.giveQuestRewards( getId(), 0 ) )
|
||||
player.finishQuest( getId() );
|
||||
}
|
||||
};
|
||||
|
|
|
@ -79,11 +79,13 @@ public:
|
|||
// Event Handlers
|
||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||
{
|
||||
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ));
|
||||
auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );
|
||||
|
||||
if( actor == ManFst004::Actor0 )
|
||||
{
|
||||
Scene00000( player );
|
||||
} else if( actor == ManFst004::Actor1 )
|
||||
}
|
||||
else if( actor == ManFst004::Actor1 )
|
||||
{
|
||||
// starting the Aetheryte eventaction
|
||||
// player.eventStart( actorId, 0x050002, 7, 0, 0);
|
||||
|
@ -99,13 +101,16 @@ public:
|
|||
[&]( Entity::Player& player, uint32_t eventId, uint64_t additional )
|
||||
{ },
|
||||
eventId );
|
||||
} else if( actor == ManFst004::Actor2 )
|
||||
}
|
||||
else if( actor == ManFst004::Actor2 )
|
||||
{
|
||||
Scene00002( player );
|
||||
} else if( actor == ManFst004::Actor3 )
|
||||
}
|
||||
else if( actor == ManFst004::Actor3 )
|
||||
{
|
||||
Scene00003( player );
|
||||
} else if( actor == ManFst004::Actor4 )
|
||||
}
|
||||
else if( actor == ManFst004::Actor4 )
|
||||
{
|
||||
Scene00005( player );
|
||||
}
|
||||
|
@ -199,7 +204,7 @@ private:
|
|||
{
|
||||
if( result.param2 == 1 ) // finish quest
|
||||
{
|
||||
if( player.giveQuestRewards( m_id, 0 ))
|
||||
if( player.giveQuestRewards( m_id, 0 ) )
|
||||
{
|
||||
player.finishQuest( m_id );
|
||||
}
|
||||
|
|
|
@ -41,22 +41,12 @@ private:
|
|||
|
||||
void Scene00001( Entity::Player& player )
|
||||
{
|
||||
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
Scene00002( player );
|
||||
};
|
||||
|
||||
player.playScene( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, 0, 0, callback );
|
||||
player.playSceneChain( getId(), 1, DISABLE_SKIP | HIDE_HOTBAR | SET_BASE, BIND_SCENE( &ManSea001::Scene00002 ) );
|
||||
}
|
||||
|
||||
void Scene00002( Entity::Player& player )
|
||||
{
|
||||
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
Scene00003( player );
|
||||
};
|
||||
|
||||
player.playScene( getId(), 2, NONE, 0, 0, callback );
|
||||
player.playSceneChain( getId(), 2, NONE, BIND_SCENE( &ManSea001::Scene00003 ) );
|
||||
}
|
||||
|
||||
void Scene00003( Entity::Player& player )
|
||||
|
@ -76,12 +66,7 @@ private:
|
|||
|
||||
void Scene00005( Entity::Player& player )
|
||||
{
|
||||
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
Scene00006( player );
|
||||
};
|
||||
|
||||
player.playScene( getId(), 5, HIDE_HOTBAR, 0, 0, callback );
|
||||
player.playSceneChain( getId(), 5, HIDE_HOTBAR, BIND_SCENE( &ManSea001::Scene00006 ) );
|
||||
}
|
||||
|
||||
void Scene00006( Entity::Player& player )
|
||||
|
@ -118,12 +103,7 @@ private:
|
|||
|
||||
void Scene00011( Entity::Player& player )
|
||||
{
|
||||
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
Scene00012( player );
|
||||
};
|
||||
|
||||
player.playScene( getId(), 11, 0x2c02, 0, 0, callback );
|
||||
player.playSceneChain( getId(), 11, 0x2c02, 0, 0, BIND_SCENE( &ManSea001::Scene00012 ) );
|
||||
}
|
||||
|
||||
void Scene00012( Entity::Player& player )
|
||||
|
|
|
@ -67,12 +67,7 @@ private:
|
|||
|
||||
void Scene00004( Entity::Player& player )
|
||||
{
|
||||
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
||||
{
|
||||
Scene00005( player );
|
||||
};
|
||||
|
||||
player.playScene( getId(), 4, 0x2c02, 0, 0, callback );
|
||||
player.playSceneChain( getId(), 4, 0x2c02, BIND_SCENE( &ManWil001::Scene00005 ) );
|
||||
}
|
||||
|
||||
void Scene00005( Entity::Player& player )
|
||||
|
|
|
@ -170,6 +170,7 @@ void Core::Entity::Player::playScene( uint32_t eventId, uint32_t scene,
|
|||
|
||||
pEvent->setPlayedScene( true );
|
||||
pEvent->setEventReturnCallback( eventCallback );
|
||||
pEvent->setSceneChainCallback( nullptr );
|
||||
EventPlayPacket eventPlay( getId(), pEvent->getActorId(), pEvent->getId(),
|
||||
scene, flags, eventParam2, eventParam3, eventParam4 );
|
||||
|
||||
|
@ -186,6 +187,7 @@ void Core::Entity::Player::playSceneChain( uint32_t eventId, uint32_t scene, uin
|
|||
|
||||
pEvent->setPlayedScene( true );
|
||||
pEvent->setSceneChainCallback( sceneChainCallback );
|
||||
pEvent->setEventReturnCallback( nullptr );
|
||||
EventPlayPacket eventPlay( getId(), pEvent->getActorId(), pEvent->getId(),
|
||||
scene, flags, eventParam2, eventParam3, eventParam4 );
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue