sm-plugins/PlaytimeReward/scripting/PlaytimeReward.sp
DoganGFL 65f270bdb2 improved points system for staying on server
you periodically get more points the longer you play
2018-12-16 01:58:41 +01:00

144 lines
3.5 KiB
SourcePawn

#pragma semicolon 1
#include <sourcemod>
#include "loghelper.inc"
#pragma newdecls required
int g_iClientConnectionTime[MAXPLAYERS + 1];
public Plugin myinfo =
{
name = "PlaytimeReward",
author = "Obus + Dogan",
description = "reward players with points for playing on the server",
version = "1.0.0"
};
public void OnPluginStart()
{
CreateTimer(30.0, Timer_CheckConnectionTime, _, TIMER_REPEAT);
HookEvent("player_disconnect", EventHook_PlayerDisconnect, EventHookMode_Post);
}
public void OnPluginEnd()
{
UnhookEvent("player_disconnect", EventHook_PlayerDisconnect, EventHookMode_Post);
}
public void OnMapStart()
{
GetTeams();
}
public void EventHook_PlayerDisconnect(Event hEvent, const char[] sName, bool bDontBroadcast)
{
bool bIsBot = view_as<bool>(hEvent.GetInt("bot"));
if (bIsBot)
return;
int client = GetClientOfUserId(hEvent.GetInt("userid"));
g_iClientConnectionTime[client] = 0;
}
public Action Timer_CheckConnectionTime(Handle hThis)
{
for (int i = 1; i <= MaxClients; i++)
{
if (!IsValidClient(i))
continue;
g_iClientConnectionTime[i] += 30;
if (g_iClientConnectionTime[i] >= 36000)
{
LogPlayerEvent(i, "triggered", "staying_server_600");
g_iClientConnectionTime[i] = 0; //start over, but i doubt someone will ever reach so far ;)
}
else if (g_iClientConnectionTime[i] >= 34200)
{
LogPlayerEvent(i, "triggered", "staying_server_570");
}
else if (g_iClientConnectionTime[i] >= 32400)
{
LogPlayerEvent(i, "triggered", "staying_server_540");
}
else if (g_iClientConnectionTime[i] >= 30600)
{
LogPlayerEvent(i, "triggered", "staying_server_510");
}
else if (g_iClientConnectionTime[i] >= 28800)
{
LogPlayerEvent(i, "triggered", "staying_server_480");
}
else if (g_iClientConnectionTime[i] >= 27000)
{
LogPlayerEvent(i, "triggered", "staying_server_450");
}
else if (g_iClientConnectionTime[i] >= 25200)
{
LogPlayerEvent(i, "triggered", "staying_server_420");
}
else if (g_iClientConnectionTime[i] >= 23400)
{
LogPlayerEvent(i, "triggered", "staying_server_390");
}
else if (g_iClientConnectionTime[i] >= 21600)
{
LogPlayerEvent(i, "triggered", "staying_server_360");
}
else if (g_iClientConnectionTime[i] >= 19800)
{
LogPlayerEvent(i, "triggered", "staying_server_330");
}
else if (g_iClientConnectionTime[i] >= 18000)
{
LogPlayerEvent(i, "triggered", "staying_server_300");
}
else if (g_iClientConnectionTime[i] >= 16200)
{
LogPlayerEvent(i, "triggered", "staying_server_270");
}
else if (g_iClientConnectionTime[i] >= 14400)
{
LogPlayerEvent(i, "triggered", "staying_server_240");
}
else if (g_iClientConnectionTime[i] >= 12600)
{
LogPlayerEvent(i, "triggered", "staying_server_210");
}
else if (g_iClientConnectionTime[i] >= 10800)
{
LogPlayerEvent(i, "triggered", "staying_server_180");
}
else if (g_iClientConnectionTime[i] >= 9000)
{
LogPlayerEvent(i, "triggered", "staying_server_150");
}
else if (g_iClientConnectionTime[i] >= 7200)
{
LogPlayerEvent(i, "triggered", "staying_server_120");
}
else if (g_iClientConnectionTime[i] >= 5400)
{
LogPlayerEvent(i, "triggered", "staying_server_90");
}
else if (g_iClientConnectionTime[i] >= 3600)
{
LogPlayerEvent(i, "triggered", "staying_server_60");
}
else if (g_iClientConnectionTime[i] >= 1800)
{
LogPlayerEvent(i, "triggered", "staying_server_30");
}
}
}
stock bool IsValidClient(int client)
{
return (client >= 1 && client <= MaxClients && IsClientInGame(client) && !IsFakeClient(client));
}