extending buffers a bit. some extra checks. not reseting players that disconnected. initializing all indexes as -1 on loading
This commit is contained in:
parent
950fba2f5c
commit
e8b7eeef56
@ -10,9 +10,9 @@
|
|||||||
class CBaseEntity;
|
class CBaseEntity;
|
||||||
//class CBasePlayer;
|
//class CBasePlayer;
|
||||||
|
|
||||||
uint8_t g_ClientGiveNamedCounter[SM_MAXPLAYERS + 1];
|
uint32_t g_ClientGiveNamedCounter[SM_MAXPLAYERS + 1];
|
||||||
char g_ClientSteamIDMap[SM_MAXPLAYERS + 1][32];
|
char g_ClientSteamIDMap[SM_MAXPLAYERS + 1][64];
|
||||||
char g_ClientNameMap[SM_MAXPLAYERS + 1][32];
|
char g_ClientNameMap[SM_MAXPLAYERS + 1][128];
|
||||||
int g_Capacity = 20;
|
int g_Capacity = 20;
|
||||||
|
|
||||||
//https://sm.alliedmods.net/doxygen/index.html
|
//https://sm.alliedmods.net/doxygen/index.html
|
||||||
@ -144,6 +144,12 @@ bool GiveNamedItemTracker::SDK_OnLoad(char *error, size_t maxlength, bool late)
|
|||||||
|
|
||||||
//set up timer for reseting GiveNamedItemTracker counts.
|
//set up timer for reseting GiveNamedItemTracker counts.
|
||||||
g_pGiveNamedItemTimer = timersys->CreateTimer(&g_GiveNamedItemTracker, 2.0, NULL, TIMER_FLAG_REPEAT);
|
g_pGiveNamedItemTimer = timersys->CreateTimer(&g_GiveNamedItemTracker, 2.0, NULL, TIMER_FLAG_REPEAT);
|
||||||
|
|
||||||
|
for (int idx = 0; idx <= 65; idx++)
|
||||||
|
{
|
||||||
|
g_ClientGiveNamedCounter[idx] = -1;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,7 +163,7 @@ void GiveNamedItemTracker::OnClientPostAdminCheck(int client)
|
|||||||
|
|
||||||
void GiveNamedItemTracker::OnClientDisconnected(int client)
|
void GiveNamedItemTracker::OnClientDisconnected(int client)
|
||||||
{
|
{
|
||||||
g_ClientGiveNamedCounter[client] = 0;
|
g_ClientGiveNamedCounter[client] = -1;
|
||||||
strlcpy(g_ClientSteamIDMap[client], "", sizeof(*g_ClientSteamIDMap));
|
strlcpy(g_ClientSteamIDMap[client], "", sizeof(*g_ClientSteamIDMap));
|
||||||
strlcpy(g_ClientNameMap[client], "", sizeof(*g_ClientNameMap));
|
strlcpy(g_ClientNameMap[client], "", sizeof(*g_ClientNameMap));
|
||||||
}
|
}
|
||||||
@ -166,6 +172,11 @@ void GiveNamedItemTracker::OnTimer()
|
|||||||
{
|
{
|
||||||
for (int idx = 0; idx <= playerhelpers->GetMaxClients(); idx++)
|
for (int idx = 0; idx <= playerhelpers->GetMaxClients(); idx++)
|
||||||
{
|
{
|
||||||
|
if (g_ClientGiveNamedCounter[idx] == -1)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (strcmp(g_ClientSteamIDMap[idx], "") == 0)
|
if (strcmp(g_ClientSteamIDMap[idx], "") == 0)
|
||||||
{
|
{
|
||||||
//empty steamid. (null). idx: 2. name: mituju
|
//empty steamid. (null). idx: 2. name: mituju
|
||||||
@ -174,8 +185,17 @@ void GiveNamedItemTracker::OnTimer()
|
|||||||
IGamePlayer* gp = playerhelpers->GetGamePlayer(idx);
|
IGamePlayer* gp = playerhelpers->GetGamePlayer(idx);
|
||||||
if (gp && gp->IsConnected() && gp->IsInGame())
|
if (gp && gp->IsConnected() && gp->IsInGame())
|
||||||
{
|
{
|
||||||
strlcpy(g_ClientSteamIDMap[idx], gp->GetAuthString(), sizeof(*g_ClientSteamIDMap));
|
const char *steamID = gp->GetAuthString();
|
||||||
strlcpy(g_ClientNameMap[idx], gp->GetName(), sizeof(*g_ClientNameMap));
|
const char *name = gp->GetName();
|
||||||
|
if (steamID)
|
||||||
|
{
|
||||||
|
strlcpy(g_ClientSteamIDMap[idx], steamID, sizeof(*g_ClientSteamIDMap));
|
||||||
|
}
|
||||||
|
//not too bad if we miss the name, just steam id is important
|
||||||
|
if (name)
|
||||||
|
{
|
||||||
|
strlcpy(g_ClientNameMap[idx], name, sizeof(*g_ClientNameMap));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g_ClientGiveNamedCounter[idx] = 0;
|
g_ClientGiveNamedCounter[idx] = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user