sm-plugins/VIP_Reward/scripting/VIP_Reward.sp

127 lines
3.9 KiB
SourcePawn
Raw Normal View History

#include <sourcemod>
#include <unloze>
#include <cstrike>
#include <sdktools>
ConVar g_cvarEventIsOn = null;
char g_directory_path[128];
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public Plugin myinfo =
{
name = "Unloze_VIP_Reward",
author = "Neon + WASD + ??????????",
description = "",
version = "1.1",
url = "https://steamcommunity.com/id/n3ontm"
}
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public void OnPluginStart()
{
RegAdminCmd("sm_listwinners", Command_Winners, ADMFLAG_GENERIC);
g_cvarEventIsOn = CreateConVar("sv_event_is_on", "0", "Cvar decides whether event mode is on or not.", _);
HookEvent("round_end", Event_Round_End)
BuildPath(Path_SM, g_directory_path, sizeof(g_directory_path), "data/events/");
if (!DirExists(g_directory_path, false)) {
CreateDirectory(g_directory_path, 457, false);
}
}
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public Action Command_Winners(int iClient, int iArgs)
{
static char sSID[64];
static char sName[64];
for (int client = 1; client <= MaxClients; client++)
{
if(IsValidWinner(client))
{
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
GetForumNameFormat(client, sName, sizeof(sName));
PrintToConsole(iClient, "%s --- %N --- %s", sSID, client, sName);
}
}
return Plugin_Handled;
}
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public Action Event_Round_End(Handle event, const char[] name, bool dontBroadcast)
{
if (g_cvarEventIsOn.IntValue == 1 && GetEventInt(event, "winner") == CS_TEAM_CT) {
int t_score = GetTeamScore(CS_TEAM_T);
int ct_score = GetTeamScore(CS_TEAM_CT);
char date[20];
FormatTime(date, sizeof(date), "%Y%m%d");
char map[90];
GetCurrentMap(map, sizeof(map));
char file_path[256];
Format(file_path, sizeof(file_path), "%s%s-%s.txt", g_directory_path, date, map);
Handle file_handle = OpenFile(file_path, "a", false);
WriteFileLine(file_handle, "Current score: (CT) : %d - (T): %d", ct_score, t_score);
static char sSID[64];
static char sName[64];
for (int client = 1; client <= MaxClients; client++)
{
if(IsValidWinner(client))
{
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
GetForumNameFormat(client, sName, sizeof(sName));
WriteFileLine(file_handle, "%s --- %N --- %s", sSID, client, sName);
}
}
WriteFileLine(file_handle, "\n");
CloseHandle(file_handle);
}
}
GetForumNameFormat(int client, char[] sName, int sNameLen)
{
char sForumName[64];
GetClientForumName(client, sForumName, sizeof(sForumName));
if(strlen(sForumName) > 0)
Format(sName, sNameLen, "FORUM NAME: %s", sForumName);
else
Format(sName, sNameLen, "NO FORUM ACCOUNT");
}
stock bool IsValidWinner(int client)
{
if (IsValidClient(client, true) && IsPlayerAlive(client) && GetClientTeam(client) == CS_TEAM_CT && !IsClientSourceTV(client))
return true;
return false;
}
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
stock int IsValidClient(int client, bool nobots = true)
{
if (client <= 0 || client > MaxClients || !IsClientConnected(client) || (nobots && IsFakeClient(client)))
{
return false;
}
return IsClientInGame(client);
}