3
3
#include < ServerInstanceBase.h>
4
4
#include < ServerInstanceBaseRef.h>
5
5
#include < state/ServerGameState.h>
6
-
6
+
7
+ #include < ResourceEventComponent.h>
7
8
#include < ResourceManager.h>
8
9
#include < ScriptEngine.h>
9
10
#include < ScriptDeprecations.h>
@@ -1600,7 +1601,8 @@ static void Init()
1600
1601
fx::ScriptEngine::RegisterNativeHandler (" SET_PLAYER_ROUTING_BUCKET" , MakeClientFunction ([](fx::ScriptContext& context, const fx::ClientSharedPtr& client)
1601
1602
{
1602
1603
if (context.GetArgumentCount () > 1 )
1603
- {
1604
+ {
1605
+ const char * player = context.GetArgument <char *>(0 );
1604
1606
auto bucket = context.GetArgument <int >(1 );
1605
1607
1606
1608
if (bucket >= 0 )
@@ -1614,7 +1616,11 @@ static void Init()
1614
1616
// get the server's game state
1615
1617
auto gameState = instance->GetComponent <fx::ServerGameState>();
1616
1618
1617
- auto [lock, clientData] = gameState->ExternalGetClientData (client);
1619
+ auto [lock, clientData] = gameState->ExternalGetClientData (client);
1620
+
1621
+ // store old bucket for event
1622
+ const auto oldBucket = clientData->routingBucket ;
1623
+
1618
1624
gameState->ClearClientFromWorldGrid (client);
1619
1625
clientData->routingBucket = bucket;
1620
1626
@@ -1628,7 +1634,10 @@ static void Init()
1628
1634
if (playerEntity)
1629
1635
{
1630
1636
playerEntity->routingBucket = bucket;
1631
- }
1637
+ }
1638
+
1639
+ auto eventManager = resourceManager->GetComponent <fx::ResourceEventManagerComponent>();
1640
+ eventManager->TriggerEvent2 (" onPlayerBucketChange" , {}, player, bucket, oldBucket);
1632
1641
}
1633
1642
}
1634
1643
@@ -1644,12 +1653,18 @@ static void Init()
1644
1653
{
1645
1654
if (context.GetArgumentCount () > 1 )
1646
1655
{
1656
+ char * ent = context.GetArgument <char *>(0 );
1647
1657
auto bucket = context.GetArgument <int >(1 );
1658
+ int oldBucket = entity->routingBucket ;
1648
1659
1649
1660
if (bucket >= 0 )
1650
1661
{
1651
1662
entity->routingBucket = bucket;
1652
- }
1663
+ }
1664
+
1665
+ auto resourceManager = fx::ResourceManager::GetCurrent ();
1666
+ auto eventManager = resourceManager->GetComponent <fx::ResourceEventManagerComponent>();
1667
+ eventManager->TriggerEvent2 (" onEntityBucketChange" , {}, ent, bucket, oldBucket);
1653
1668
}
1654
1669
1655
1670
return true ;
0 commit comments