Spin new logic into GetClientAuthString2...

and mark GetClientAuthString as deprecated, using 1.6.x GetClientAuthString behavior
This commit is contained in:
Nicholas Hastings 2014-09-02 17:38:25 -07:00
parent 8c89b72fbc
commit e3b87a5ca4
2 changed files with 41 additions and 22 deletions

View File

@ -340,9 +340,8 @@ enum class AuthStringType
SteamID64, SteamID64,
}; };
static cell_t sm_GetClientAuthStr(IPluginContext *pCtx, const cell_t *params) static cell_t SteamIDToLocal(IPluginContext *pCtx, int index, AuthStringType authType, cell_t local_addr, size_t bytes, bool validate)
{ {
int index = params[1];
if ((index < 1) || (index > playerhelpers->GetMaxClients())) if ((index < 1) || (index > playerhelpers->GetMaxClients()))
{ {
return pCtx->ThrowNativeError("Client index %d is invalid", index); return pCtx->ThrowNativeError("Client index %d is invalid", index);
@ -354,18 +353,6 @@ static cell_t sm_GetClientAuthStr(IPluginContext *pCtx, const cell_t *params)
return pCtx->ThrowNativeError("Client %d is not connected", index); return pCtx->ThrowNativeError("Client %d is not connected", index);
} }
bool validate = true;
if (params[0] >= 4)
{
validate = !!params[4];
}
AuthStringType authType = AuthStringType::Engine;
if (params[0] >= 5)
{
authType = (AuthStringType)params[5];
}
switch (authType) switch (authType)
{ {
case AuthStringType::Engine: case AuthStringType::Engine:
@ -376,7 +363,7 @@ static cell_t sm_GetClientAuthStr(IPluginContext *pCtx, const cell_t *params)
return 0; return 0;
} }
pCtx->StringToLocal(params[2], static_cast<size_t>(params[3]), authstr); pCtx->StringToLocal(local_addr, bytes, authstr);
} }
break; break;
case AuthStringType::Steam2: case AuthStringType::Steam2:
@ -384,7 +371,7 @@ static cell_t sm_GetClientAuthStr(IPluginContext *pCtx, const cell_t *params)
{ {
if (pPlayer->IsFakeClient()) if (pPlayer->IsFakeClient())
{ {
pCtx->StringToLocal(params[2], static_cast<size_t>(params[3]), "BOT"); pCtx->StringToLocal(local_addr, bytes, "BOT");
return 1; return 1;
} }
@ -393,11 +380,11 @@ static cell_t sm_GetClientAuthStr(IPluginContext *pCtx, const cell_t *params)
{ {
if (gamehelpers->IsLANServer()) if (gamehelpers->IsLANServer())
{ {
pCtx->StringToLocal(params[2], static_cast<size_t>(params[3]), "STEAM_ID_LAN"); pCtx->StringToLocal(local_addr, bytes, "STEAM_ID_LAN");
} }
else else
{ {
pCtx->StringToLocal(params[2], static_cast<size_t>(params[3]), "STEAM_ID_PENDING"); pCtx->StringToLocal(local_addr, bytes, "STEAM_ID_PENDING");
} }
return 1; return 1;
@ -425,7 +412,7 @@ static cell_t sm_GetClientAuthStr(IPluginContext *pCtx, const cell_t *params)
snprintf(szAuth, sizeof(szAuth), "[U:%u:%u]", universe, accountId); snprintf(szAuth, sizeof(szAuth), "[U:%u:%u]", universe, accountId);
} }
pCtx->StringToLocal(params[2], static_cast<size_t>(params[3]), szAuth); pCtx->StringToLocal(local_addr, bytes, szAuth);
} }
break; break;
@ -445,7 +432,7 @@ static cell_t sm_GetClientAuthStr(IPluginContext *pCtx, const cell_t *params)
char szAuth[64]; char szAuth[64];
snprintf(szAuth, sizeof(szAuth), "%" PRIu64, steamId); snprintf(szAuth, sizeof(szAuth), "%" PRIu64, steamId);
pCtx->StringToLocal(params[2], static_cast<size_t>(params[3]), szAuth); pCtx->StringToLocal(local_addr, bytes, szAuth);
} }
break; break;
} }
@ -453,6 +440,22 @@ static cell_t sm_GetClientAuthStr(IPluginContext *pCtx, const cell_t *params)
return 1; return 1;
} }
static cell_t sm_GetClientAuthStr(IPluginContext *pCtx, const cell_t *params)
{
bool validate = true;
if (params[0] >= 4)
{
validate = !!params[4];
}
return SteamIDToLocal(pCtx, params[1], AuthStringType::Steam2, params[2], (size_t)params[3], validate);
}
static cell_t sm_GetClientAuthStr2(IPluginContext *pCtx, const cell_t *params)
{
return SteamIDToLocal(pCtx, params[1], (AuthStringType)params[2], params[3], (size_t)params[4], params[5] != 0);
}
static cell_t sm_GetSteamAccountID(IPluginContext *pCtx, const cell_t *params) static cell_t sm_GetSteamAccountID(IPluginContext *pCtx, const cell_t *params)
{ {
int index = params[1]; int index = params[1];
@ -1639,6 +1642,7 @@ REGISTER_NATIVES(playernatives)
{ "CanUserTarget", CanUserTarget }, { "CanUserTarget", CanUserTarget },
{ "ChangeClientTeam", ChangeClientTeam }, { "ChangeClientTeam", ChangeClientTeam },
{ "GetClientAuthString", sm_GetClientAuthStr }, { "GetClientAuthString", sm_GetClientAuthStr },
{ "GetClientAuthString2", sm_GetClientAuthStr2 },
{ "GetSteamAccountID", sm_GetSteamAccountID }, { "GetSteamAccountID", sm_GetSteamAccountID },
{ "GetClientCount", sm_GetClientCount }, { "GetClientCount", sm_GetClientCount },
{ "GetClientInfo", sm_GetClientInfo }, { "GetClientInfo", sm_GetClientInfo },

View File

@ -277,11 +277,26 @@ native bool:GetClientIP(client, String:ip[], maxlen, bool:remport=true);
* @param validate Check backend validation status. * @param validate Check backend validation status.
* DO NOT PASS FALSE UNLESS YOU UNDERSTAND THE CONSEQUENCES, * DO NOT PASS FALSE UNLESS YOU UNDERSTAND THE CONSEQUENCES,
* You WILL KNOW if you need to use this, MOST WILL NOT. * You WILL KNOW if you need to use this, MOST WILL NOT.
* @param authType Auth string type and format to use.
* @return True on success, false otherwise. * @return True on success, false otherwise.
* @error If the client is not connected or the index is invalid. * @error If the client is not connected or the index is invalid.
*/ */
native bool:GetClientAuthString(client, String:auth[], maxlen, bool:validate=true, AuthStringType:authType=AuthString_Engine); #pragma deprecated Use GetClientAuthString2
native bool:GetClientAuthString(client, String:auth[], maxlen, bool:validate=true);
/**
* Retrieves a client's authentication string (SteamID).
*
* @param client Player index.
* @param authType Auth string type and format to use.
* @param auth Buffer to store the client's auth string.
* @param maxlen Maximum length of string buffer (includes NULL terminator).
* @param validate Check backend validation status.
* DO NOT PASS FALSE UNLESS YOU UNDERSTAND THE CONSEQUENCES,
* You WILL KNOW if you need to use this, MOST WILL NOT.
* @return True on success, false otherwise.
* @error If the client is not connected or the index is invalid.
*/
native bool:GetClientAuthString2(client, AuthStringType:authType, String:auth[], maxlen, bool:validate=true);
/** /**
* Returns the client's Steam account ID. * Returns the client's Steam account ID.