diff --git a/code/components/citizen-server-impl/src/state/ServerGameState_Scripting.cpp b/code/components/citizen-server-impl/src/state/ServerGameState_Scripting.cpp index bb64bc2953..47823ebd35 100644 --- a/code/components/citizen-server-impl/src/state/ServerGameState_Scripting.cpp +++ b/code/components/citizen-server-impl/src/state/ServerGameState_Scripting.cpp @@ -1627,9 +1627,15 @@ static void Init() // get the server's game state auto gameState = instance->GetComponent(); + + uint32_t routingBucket = 0; - auto [lock, clientData] = gameState->ExternalGetClientData(client); - return int(clientData->routingBucket); + { + auto [lock, clientData] = gameState->ExternalGetClientData(client); + routingBucket = clientData->routingBucket; + } + + return int(routingBucket); })); fx::ScriptEngine::RegisterNativeHandler("SET_PLAYER_ROUTING_BUCKET", MakeClientFunction([](fx::ScriptContext& context, const fx::ClientSharedPtr& client) @@ -1649,26 +1655,31 @@ static void Init() // get the server's game state auto gameState = instance->GetComponent(); - - auto [lock, clientData] = gameState->ExternalGetClientData(client); - // store old bucket for event - const auto oldBucket = clientData->routingBucket; - - gameState->ClearClientFromWorldGrid(client); - clientData->routingBucket = bucket; - - fx::sync::SyncEntityPtr playerEntity; - - { - std::shared_lock _lock(clientData->playerEntityMutex); - playerEntity = clientData->playerEntity.lock(); - } + + uint32_t oldBucket = 0; - if (playerEntity) - { - playerEntity->routingBucket = bucket; - } + { + auto [lock, clientData] = gameState->ExternalGetClientData(client); + + // store old bucket for event + oldBucket = clientData->routingBucket; + + gameState->ClearClientFromWorldGrid(client); + clientData->routingBucket = bucket; + + fx::sync::SyncEntityPtr playerEntity; + + { + std::shared_lock _lock(clientData->playerEntityMutex); + playerEntity = clientData->playerEntity.lock(); + } + + if (playerEntity) + { + playerEntity->routingBucket = bucket; + } + } auto eventManager = resourceManager->GetComponent();