DefenderMoney: fix reconnect exploit
This commit is contained in:
parent
65fe0f846b
commit
6ba9f4a319
@ -17,15 +17,18 @@ ConVar g_cvarDamageMultiplier = null;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool g_bZRLoaded;
|
bool g_bZRLoaded;
|
||||||
|
bool g_bMapEnd;
|
||||||
|
|
||||||
int g_iCash[MAXPLAYERS + 1];
|
int g_iCash[MAXPLAYERS + 1];
|
||||||
|
int g_iCashReconnect[256];
|
||||||
|
int g_iSteamID[256];
|
||||||
|
|
||||||
public Plugin myinfo =
|
public Plugin myinfo =
|
||||||
{
|
{
|
||||||
name = "Defender Money",
|
name = "Defender Money",
|
||||||
author = "Obus + Dogan",
|
author = "Obus + Dogan",
|
||||||
description = "",
|
description = "Reward Humans with cash for shooting Zombies",
|
||||||
version = "1.0.0",
|
version = "1.1.0",
|
||||||
url = ""
|
url = ""
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -41,6 +44,8 @@ public void OnPluginStart()
|
|||||||
HookEvent("player_death", EventHook_PlayerDeath, EventHookMode_Pre);
|
HookEvent("player_death", EventHook_PlayerDeath, EventHookMode_Pre);
|
||||||
HookEvent("player_spawn", EventHook_PlayerSpawn, EventHookMode_Post);
|
HookEvent("player_spawn", EventHook_PlayerSpawn, EventHookMode_Post);
|
||||||
HookEvent("round_end", EventHook_RoundEnd, EventHookMode_Pre);
|
HookEvent("round_end", EventHook_RoundEnd, EventHookMode_Pre);
|
||||||
|
|
||||||
|
g_bMapEnd = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnAllPluginsLoaded()
|
public void OnAllPluginsLoaded()
|
||||||
@ -62,14 +67,76 @@ public void OnLibraryRemoved(const char[] sName)
|
|||||||
|
|
||||||
public void OnMapStart()
|
public void OnMapStart()
|
||||||
{
|
{
|
||||||
|
for(int i = 0; i < 256; i++)
|
||||||
|
{
|
||||||
|
g_iSteamID[i] = 0;
|
||||||
|
g_iCashReconnect[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
for(int i = 1; i <= MaxClients; i++)
|
for(int i = 1; i <= MaxClients; i++)
|
||||||
{
|
{
|
||||||
g_iCash[i] = 0;
|
g_iCash[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_bMapEnd = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnMapEnd()
|
||||||
|
{
|
||||||
|
g_bMapEnd = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnClientPutInServer(int client)
|
||||||
|
{
|
||||||
|
if(IsFakeClient(client) || g_bMapEnd)
|
||||||
|
return;
|
||||||
|
|
||||||
|
int iSteamID = GetSteamAccountID(client);
|
||||||
|
|
||||||
|
for(int i = 0; i < 256; i++)
|
||||||
|
{
|
||||||
|
if(iSteamID == g_iSteamID[i])
|
||||||
|
{
|
||||||
|
g_iCash[client] = g_iCashReconnect[i];
|
||||||
|
CreateTimer(3.0, MessageReconnect, client);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Action MessageReconnect(Handle timer, int client)
|
||||||
|
{
|
||||||
|
PrintToChat(client, "[SM] Restored your cash: $%d.", g_iCash[client]);
|
||||||
|
|
||||||
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnClientDisconnect(int client)
|
public void OnClientDisconnect(int client)
|
||||||
{
|
{
|
||||||
|
if(IsFakeClient(client))
|
||||||
|
return;
|
||||||
|
|
||||||
|
int iSteamID = GetSteamAccountID(client);
|
||||||
|
|
||||||
|
for(int i = 0; i < 256; i++)
|
||||||
|
{
|
||||||
|
if(iSteamID == g_iSteamID[i])
|
||||||
|
{
|
||||||
|
g_iCashReconnect[i] = GetEntProp(client, Prop_Send, "m_iAccount");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < 256; i++)
|
||||||
|
{
|
||||||
|
if(g_iSteamID[i] == 0)
|
||||||
|
{
|
||||||
|
g_iSteamID[i] = iSteamID;
|
||||||
|
g_iCashReconnect[i] = GetEntProp(client, Prop_Send, "m_iAccount");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
g_iCash[client] = 0;
|
g_iCash[client] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user