#include "pch.h" #include "squirrel.h" #include "masterserver.h" #include "serverauthentication.h" #include "dedicated.h" #include "r2client.h" #include "r2server.h" #include ADD_SQFUNC("void", NSEarlyWritePlayerPersistenceForLeave, "entity player", "", ScriptContext::SERVER) { const R2::CBasePlayer* pPlayer = g_pSquirrel->getentity(sqvm, 1); if (!pPlayer) { spdlog::warn("NSEarlyWritePlayerPersistenceForLeave got null player"); g_pSquirrel->pushbool(sqvm, false); return SQRESULT_NOTNULL; } R2::CBaseClient* pClient = &R2::g_pClientArray[pPlayer->m_nPlayerIndex - 1]; if (g_pServerAuthentication->m_PlayerAuthenticationData.find(pClient) == g_pServerAuthentication->m_PlayerAuthenticationData.end()) { g_pSquirrel->pushbool(sqvm, false); return SQRESULT_NOTNULL; } g_pServerAuthentication->m_PlayerAuthenticationData[pClient].needPersistenceWriteOnLeave = false; g_pServerAuthentication->WritePersistentData(pClient); return SQRESULT_NULL; } ADD_SQFUNC("bool", NSIsWritingPlayerPersistence, "", "", ScriptContext::SERVER) { g_pSquirrel->pushbool(sqvm, g_pMasterServerManager->m_bSavingPersistentData); return SQRESULT_NOTNULL; } ADD_SQFUNC("bool", NSIsPlayerLocalPlayer, "entity player", "", ScriptContext::SERVER) { const R2::CBasePlayer* pPlayer = g_pSquirrel->getentity(sqvm, 1); if (!pPlayer) { spdlog::warn("NSIsPlayerLocalPlayer got null player"); g_pSquirrel->pushbool(sqvm, false); return SQRESULT_NOTNULL; } R2::CBaseClient* pClient = &R2::g_pClientArray[pPlayer->m_nPlayerIndex - 1]; g_pSquirrel->pushbool(sqvm, !strcmp(R2::g_pLocalPlayerUserID, pClient->m_UID)); return SQRESULT_NOTNULL; } ADD_SQFUNC("bool", NSIsDedicated, "", "", ScriptContext::SERVER) { g_pSquirrel->pushbool(sqvm, IsDedicatedServer()); return SQRESULT_NOTNULL; }