#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
#pragma newdecls required
#define PLAYER_INFO_LEN 344
enum
{
PlayerInfo_Version = 0, // int64
PlayerInfo_XUID = 8, // int64
PlayerInfo_Name = 16, // char[128]
PlayerInfo_UserID = 144, // int
PlayerInfo_SteamID = 148, // char[33]
PlayerInfo_AccountID = 184, // int
PlayerInfo_FriendsName = 188, // char[128]
PlayerInfo_IsFakePlayer = 316, // bool
PlayerInfo_IsHLTV = 317, // bool
PlayerInfo_CustomFile1 = 320, // int
PlayerInfo_CustomFile2 = 324, // int
PlayerInfo_CustomFile3 = 328, // int
PlayerInfo_CustomFile4 = 332, // int
PlayerInfo_FilesDownloaded = 336 // char
};
int g_accountIDs[MAXPLAYERS+1] =
{
0,
25341944, // [U:1:25341944]
33063657, // [U:1:33063657]
86114025, // ...
33139149,
10019795,
64136527,
10014490,
112064860,
3312,
3,
136555,
49797024,
53988387,
168894,
29462734,
20599720
};
public void OnClientSettingsChanged(int client)
{
if (!IsFakeClient(client) || !g_accountIDs[client])
return;
int tableIdx = FindStringTable("userinfo");
if (tableIdx == INVALID_STRING_TABLE)
return;
char userInfo[PLAYER_INFO_LEN];
if (!GetStringTableData(tableIdx, client - 1, userInfo, PLAYER_INFO_LEN))
return;
int accountId = g_accountIDs[client];
int steamIdHigh = 16781313;
userInfo[PlayerInfo_XUID] = steamIdHigh;
userInfo[PlayerInfo_XUID + 1] = steamIdHigh >> 8;
userInfo[PlayerInfo_XUID + 2] = steamIdHigh >> 16;
userInfo[PlayerInfo_XUID + 3] = steamIdHigh >> 24;
userInfo[PlayerInfo_XUID + 7] = accountId;
userInfo[PlayerInfo_XUID + 6] = accountId >> 8;
userInfo[PlayerInfo_XUID + 5] = accountId >> 16;
userInfo[PlayerInfo_XUID + 4] = accountId >> 24;
Format(userInfo[PlayerInfo_SteamID], 32, "STEAM_1:%d:%d", accountId & 1, accountId >>> 1);
userInfo[PlayerInfo_AccountID] = accountId;
userInfo[PlayerInfo_AccountID + 1] = accountId >> 8;
userInfo[PlayerInfo_AccountID + 2] = accountId >> 16;
userInfo[PlayerInfo_AccountID + 3] = accountId >> 24;
userInfo[PlayerInfo_IsFakePlayer] = 0;
bool lockTable = LockStringTables(false);
SetStringTableData(tableIdx, client - 1, userInfo, PLAYER_INFO_LEN);
LockStringTables(lockTable);
}
#include <sourcemod>
#include <sdktools>
#pragma newdecls required
#define PLAYER_INFO_LEN 344
enum
{
PlayerInfo_Version = 0, // int64
PlayerInfo_XUID = 8, // int64
PlayerInfo_Name = 16, // char[128]
PlayerInfo_UserID = 144, // int
PlayerInfo_SteamID = 148, // char[33]
PlayerInfo_AccountID = 184, // int
PlayerInfo_FriendsName = 188, // char[128]
PlayerInfo_IsFakePlayer = 316, // bool
PlayerInfo_IsHLTV = 317, // bool
PlayerInfo_CustomFile1 = 320, // int
PlayerInfo_CustomFile2 = 324, // int
PlayerInfo_CustomFile3 = 328, // int
PlayerInfo_CustomFile4 = 332, // int
PlayerInfo_FilesDownloaded = 336 // char
};
int g_accountIDs[MAXPLAYERS+1] =
{
0,
25341944, // [U:1:25341944]
33063657, // [U:1:33063657]
86114025, // ...
33139149,
10019795,
64136527,
10014490,
112064860,
3312,
3,
136555,
49797024,
53988387,
168894,
29462734,
20599720
};
public void OnClientSettingsChanged(int client)
{
if (!IsFakeClient(client) || !g_accountIDs[client])
return;
int tableIdx = FindStringTable("userinfo");
if (tableIdx == INVALID_STRING_TABLE)
return;
char userInfo[PLAYER_INFO_LEN];
if (!GetStringTableData(tableIdx, client - 1, userInfo, PLAYER_INFO_LEN))
return;
int accountId = g_accountIDs[client];
int steamIdHigh = 16781313;
userInfo[PlayerInfo_XUID] = steamIdHigh;
userInfo[PlayerInfo_XUID + 1] = steamIdHigh >> 8;
userInfo[PlayerInfo_XUID + 2] = steamIdHigh >> 16;
userInfo[PlayerInfo_XUID + 3] = steamIdHigh >> 24;
userInfo[PlayerInfo_XUID + 7] = accountId;
userInfo[PlayerInfo_XUID + 6] = accountId >> 8;
userInfo[PlayerInfo_XUID + 5] = accountId >> 16;
userInfo[PlayerInfo_XUID + 4] = accountId >> 24;
Format(userInfo[PlayerInfo_SteamID], 32, "STEAM_1:%d:%d", accountId & 1, accountId >>> 1);
userInfo[PlayerInfo_AccountID] = accountId;
userInfo[PlayerInfo_AccountID + 1] = accountId >> 8;
userInfo[PlayerInfo_AccountID + 2] = accountId >> 16;
userInfo[PlayerInfo_AccountID + 3] = accountId >> 24;
userInfo[PlayerInfo_IsFakePlayer] = 0;
bool lockTable = LockStringTables(false);
SetStringTableData(tableIdx, client - 1, userInfo, PLAYER_INFO_LEN);
LockStringTables(lockTable);
}