Beispiel #1
0
size_t IsAuthIdConnected(char *authID)
{
	IGamePlayer *player;
	const char *authString;
	
	for (int playerIndex = playerhelpers->GetMaxClients()+1; --playerIndex > 0;)
	{
		player = playerhelpers->GetGamePlayer(playerIndex);
		if (player == NULL || !player->IsAuthorized())
		{
			continue;
		}
		
		if (!strcmp(player->GetAuthString(), authID)
			|| !strcmp(player->GetSteam2Id(), authID)
			|| !strcmp(player->GetSteam3Id(), authID)
			)
		{
			return playerIndex;
		}
	}

	return 0;
}
Beispiel #2
0
static cell_t SteamIdToLocal(IPluginContext *pCtx, int index, AuthIdType authType, cell_t local_addr, size_t bytes, bool validate)
{
    pCtx->StringToLocal(local_addr, bytes, "STEAM_ID_STOP_IGNORING_RETVALS");

    if ((index < 1) || (index > playerhelpers->GetMaxClients()))
    {
        return pCtx->ThrowNativeError("Client index %d is invalid", index);
    }

    IGamePlayer *pPlayer = playerhelpers->GetGamePlayer(index);
    if (!pPlayer->IsConnected())
    {
        return pCtx->ThrowNativeError("Client %d is not connected", index);
    }

    const char *authstr;

    switch (authType)
    {
    case AuthIdType::Engine:
        authstr = pPlayer->GetAuthString(validate);
        if (!authstr || authstr[0] == '\0')
        {
            return 0;
        }

        pCtx->StringToLocal(local_addr, bytes, authstr);
        break;
    case AuthIdType::Steam2:
        authstr = pPlayer->GetSteam2Id(validate);
        if (!authstr || authstr[0] == '\0')
        {
            return 0;
        }

        pCtx->StringToLocal(local_addr, bytes, authstr);
        break;
    case AuthIdType::Steam3:
        authstr = pPlayer->GetSteam3Id(validate);
        if (!authstr || authstr[0] == '\0')
        {
            return 0;
        }

        pCtx->StringToLocal(local_addr, bytes, authstr);
        break;

    case AuthIdType::SteamId64:
    {
        if (pPlayer->IsFakeClient() || gamehelpers->IsLANServer())
        {
            return 0;
        }

        uint64_t steamId = pPlayer->GetSteamId64(validate);
        if (steamId == 0)
        {
            return 0;
        }

        char szAuth[64];
        snprintf(szAuth, sizeof(szAuth), "%" PRIu64, steamId);

        pCtx->StringToLocal(local_addr, bytes, szAuth);
    }
    break;
    }

    return 1;
}