Code:
#include <sourcemod>
#include <sdktools>
#include <cstrike>
#pragma semicolon 1
int g_iScore[MAXPLAYERS];
public OnPluginStart()
{
HookEvent("round_end", OnRoundEnd);
HookEvent("player_spawn", OnPlayerSpawnEvent);
}
public OnRoundEnd(Handle event, const char[] name, bool dontBroadcast)
{
for(int i = 1; i <= MaxClients; ++i)
{
if(!IsClientInGame(i) || GetClientTeam(i) <= CS_TEAM_SPECTATOR)
continue;
g_iScore[i] = CS_GetClientAssists(i);
g_iScore[i] += 10; // add 10 assists
CS_SetClientAssists(i, g_iScore[i]);
PrintToChat(i, "[DEBUG] OnRoundEnd: ASSISTS=%i", g_iScore[i]);
}
}
public void OnClientDisconnect(int client)
{
g_iScore[client] = 0;
}
public Action OnPlayerSpawnEvent(Handle event, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(GetEventInt(event, "userid"));
if(!client || !IsPlayerAlive(client))
return Plugin_Continue;
CS_SetClientAssists(client, g_iScore[client]);
PrintToChat(client, "[DEBUG] OnPlayerSpawnEvent: ASSISTS=%i", g_iScore[client]);
return Plugin_Continue;
}
Maybe you forgot to reset variable when client disconnects, it' should work. Also you need to store it again in a variable every time when it's changed, or only right before client spawn, depends on the gameplay...
You can also store a value right before round start and event death if it is necessary:
Code:
HookEvent("round_prestart", OnRoundPreStart, EventHookMode_Pre);
public Action OnRoundPreStart(Handle event, const char[] name, bool dontBroadcast)
{
for(int i = 1; i < MAXPLAYERS; i++)
{
if(!IsClientInGame(i))
continue;
g_iScore[i] = CS_GetClientAssists(i)
}
}