72f2d3168e
Rework listwinners (reward) plugin so now it's async and simple. go back to ded
127 lines
3.9 KiB
SourcePawn
127 lines
3.9 KiB
SourcePawn
#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);
|
|
} |