diff --git a/Extension/gsnatives.cpp b/Extension/gsnatives.cpp index 95486b2..386165e 100644 --- a/Extension/gsnatives.cpp +++ b/Extension/gsnatives.cpp @@ -180,6 +180,27 @@ static cell_t sm_UserHasLicenseForApp(IPluginContext *pContext, const cell_t *pa return pServer->UserHasLicenseForApp(checkid, params[2]); } +static cell_t sm_GetClientSteamID(IPluginContext *pContext, const cell_t *params) +{ + int client = gamehelpers->ReferenceToIndex(params[1]); + IGamePlayer *pPlayer = playerhelpers->GetGamePlayer(client); + + if (pPlayer == NULL || pPlayer->IsConnected() == false) + { + return pContext->ThrowNativeError("Client index %d is invalid", params[1]); + } + + CSteamID steamId = CreateCommonCSteamID(pPlayer, params, 4, 5); + + char *steamIdBuffer; + pContext->LocalToString(params[2], &steamIdBuffer); + + int numBytes = g_pSM->Format(steamIdBuffer, params[3], "%llu", steamId.ConvertToUint64()); + numBytes++; // account for null terminator + + return numBytes; +} + static sp_nativeinfo_t gsnatives[] = { {"SteamWorks_IsVACEnabled", sm_IsVACEnabled}, {"SteamWorks_GetPublicIP", sm_GetPublicIP}, @@ -191,6 +212,7 @@ static sp_nativeinfo_t gsnatives[] = { {"SteamWorks_ClearRules", sm_ClearRules}, {"SteamWorks_ForceHeartbeat", sm_ForceHeartbeat}, {"SteamWorks_HasLicenseForApp", sm_UserHasLicenseForApp}, + {"SteamWorks_GetClientSteamID", sm_GetClientSteamID}, {NULL, NULL} }; diff --git a/Pawn/includes/SteamWorks.inc b/Pawn/includes/SteamWorks.inc index 83519e0..594c17b 100644 --- a/Pawn/includes/SteamWorks.inc +++ b/Pawn/includes/SteamWorks.inc @@ -183,6 +183,7 @@ native bool:SteamWorks_ClearRules(); native bool:SteamWorks_ForceHeartbeat(); native EUserHasLicenseForAppResult:SteamWorks_HasLicenseForApp(client, app); +native SteamWorks_GetClientSteamID(client, String:sSteamID[], length); native bool:SteamWorks_RequestStatsAuthID(authid, appid); native bool:SteamWorks_RequestStats(client, appid); @@ -277,6 +278,7 @@ public __ext_SteamWorks_SetNTVOptional() MarkNativeAsOptional("SteamWorks_ForceHeartbeat"); MarkNativeAsOptional("SteamWorks_HasLicenseForApp"); + MarkNativeAsOptional("SteamWorks_GetClientSteamID"); MarkNativeAsOptional("SteamWorks_RequestStatsAuthID"); MarkNativeAsOptional("SteamWorks_RequestStats");