MCPcopy Create free account
hub / github.com/alliedmodders/sourcemod / GetClientOfUserId

Method GetClientOfUserId

core/PlayerManager.cpp:1394–1437  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1392}
1393
1394int PlayerManager::GetClientOfUserId(int userid)
1395{
1396 if (userid < 0 || userid > USHRT_MAX)
1397 {
1398 return 0;
1399 }
1400
1401 int client = m_UserIdLookUp[userid];
1402
1403 /* Verify the userid. The cache can get messed up with older
1404 * Valve engines. :TODO: If this gets fixed, do an old engine
1405 * check before invoking this backwards compat code.
1406 */
1407 if (client)
1408 {
1409 CPlayer *player = GetPlayerByIndex(client);
1410 if (player && player->IsConnected())
1411 {
1412 int realUserId = engine->GetPlayerUserId(player->GetEdict());
1413 if (realUserId == userid)
1414 {
1415 return client;
1416 }
1417 }
1418 }
1419
1420 /* If we can't verify the userid, we have to do a manual loop */
1421 CPlayer *player;
1422 for (int i = 1; i <= m_maxClients; i++)
1423 {
1424 player = GetPlayerByIndex(i);
1425 if (!player || !player->IsConnected())
1426 {
1427 continue;
1428 }
1429 if (engine->GetPlayerUserId(player->GetEdict()) == userid)
1430 {
1431 m_UserIdLookUp[userid] = i;
1432 return i;
1433 }
1434 }
1435
1436 return 0;
1437}
1438
1439void PlayerManager::AddClientListener(IClientListener *listener)
1440{

Callers 5

OnTimerMethod · 0.80
GetClientOfUserIdFunction · 0.80
FileExistsMethod · 0.80
SendFileMethod · 0.80

Calls 2

IsConnectedMethod · 0.80
GetEdictMethod · 0.80

Tested by

no test coverage detected