diff --git a/src/PlayerManager.cpp b/src/PlayerManager.cpp index f1ef7d3..a403838 100644 --- a/src/PlayerManager.cpp +++ b/src/PlayerManager.cpp @@ -293,12 +293,14 @@ static void enterPlayer(CNSocket* sock, CNPacketData* data) { sock->setActiveKey(SOCKETKEY_FE); // send all packets using the FE key from now on // Academy builds receive nanos in a separate packet. These need to be sent - // before P_FE2CL_REP_PC_ENTER_SUCC as well as after initial load + // before P_FE2CL_REP_PC_ENTER_SUCC as well as after // due to a race condition in the client :( sendNanoBookSubset(sock, plr); sock->sendPacket(response, P_FE2CL_REP_PC_ENTER_SUCC); + sendNanoBookSubset(sock, plr); + // transfer ownership of Player object into the shard (still valid in this function though) addPlayer(sock, plr); @@ -375,7 +377,6 @@ static void loadPlayer(CNSocket* sock, CNPacketData* data) { Missions::failInstancedMissions(sock); // auto-fail missions Buddies::sendBuddyList(sock); // buddy list Items::checkItemExpire(sock, plr); // vehicle expiration - sendNanoBookSubset(sock, plr); // nanos (post-load) plr->initialLoadDone = true; }