Untitled diff

Created Diff never expires
28 removals
132 lines
29 additions
133 lines
#include <sourcemod>
#include <sourcemod>
#include <SteamWorks>
#include <SteamWorks>
#include <store>
#include <store>
#include <csgocolors>
#pragma newdecls required
#pragma newdecls required


ConVar iGroupID,
ConVar iGroupID,
PlayerCredits,
PlayerCredits,
SpecCredits,
SpecCredits,
group_adverts,
group_adverts,
CreditsTime;
CreditsTime;
Handle TimeAuto = null;
Handle TimeAuto = null;
bool b_IsMember[MAXPLAYERS+1],
bool b_IsMember[MAXPLAYERS+1],
i_advert[MAXPLAYERS+1];
i_advert[MAXPLAYERS+1];


public Plugin myinfo =
public Plugin myinfo =
{
{
name = "Steam Group Credits",
name = "Steam Group Credits",
author = "Xines",
author = "Xines, edited by Wanheda",
description = "Deals x amount of credits per x amount of secounds",
description = "Gives x amount for y seconds if player is on the defined Steam Group",
version = "1.2",
version = "1.0",
url = ""
url = "https://skygaming.pt/"
};
};


public void OnPluginStart()
public void OnPluginStart()
{
{
//Chat print on/off for all players
//I Don't know why he did put this
group_adverts = CreateConVar("sm_group_enable_adverts", "1", "Enables/Disables notifications for all in chat (1=On/0=Off)", FCVAR_PLUGIN|FCVAR_NOTIFY, true, 0.0, true, 1.0);
group_adverts = CreateConVar("sm_group_enable_adverts", "1", "Enables/Disables notifications for all in chat (1=On/0=Off)", FCVAR_NOTIFY, true, 0.0, true, 1.0);
//Chat print on/off Client
//If you wan't to disable the text "You received bla bla bla..."
RegConsoleCmd("sm_sgc", SgcCmd, "(On/Off) Steam Group Credits, Client Announcements");
RegConsoleCmd("sm_sgc", SgcCmd, "(On/Off) Steam Group Credits, Client Announcements");
//Configs
//Configs
iGroupID = CreateConVar("sm_groupid_add", "0000000", "Steam Group ID (Replace with yours)", FCVAR_PLUGIN|FCVAR_NOTIFY);
iGroupID = CreateConVar("sm_groupid_add", "", "Steam Group ID (Replace with yours)", FCVAR_NOTIFY);
PlayerCredits = CreateConVar("sm_group_credits", "5", "Credits to give per X time, if player is in group.", FCVAR_PLUGIN|FCVAR_NOTIFY);
PlayerCredits = CreateConVar("sm_group_credits", "20", "Credits to give per X time, if player is in group.", FCVAR_NOTIFY);
SpecCredits = CreateConVar("sm_group_spec_credits", "2", "Spectate Credits to give per X time, if player is in group and spectate.", FCVAR_PLUGIN|FCVAR_NOTIFY);
SpecCredits = CreateConVar("sm_group_spec_credits", "5", "Spectate Credits to give per X time, if player is in group and spectate.", FCVAR_NOTIFY);
CreditsTime = CreateConVar("sm_group_credits_time", "60", "Time in seconds to deal credits.", FCVAR_PLUGIN|FCVAR_NOTIFY);
CreditsTime = CreateConVar("sm_group_credits_time", "45", "Time in seconds to deal credits.", FCVAR_NOTIFY);
//Don't Touch
//Don't Touch
HookConVarChange(CreditsTime, Change_CreditsTime);
HookConVarChange(CreditsTime, Change_CreditsTime);
}
}


public void OnMapStart()
public void OnMapStart()
{
{
TimeAuto = CreateTimer(CreditsTime.FloatValue, CheckPlayers, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
TimeAuto = CreateTimer(CreditsTime.FloatValue, CheckPlayers, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
}
}


public Action CheckPlayers(Handle timer)
public Action CheckPlayers(Handle timer)
{
{
for (int i = 1; i <= MaxClients; i++)
for (int i = 1; i <= MaxClients; i++)
if (IsValidClient(i)) addcredits(i);
if (IsValidClient(i)) addcredits(i);
return Plugin_Continue;
return Plugin_Continue;
}
}


void addcredits(int client)
void addcredits(int client)
{
{
if(b_IsMember[client]) //Is member
if(b_IsMember[client]) //If he's member of the steam group
{
{
//Get Player Credit Buffer!
//Get Player Credit Buffer!
int pcredits = PlayerCredits.IntValue;
int pcredits = PlayerCredits.IntValue;
//If spectate set new value of credits
//If he's spectating set new value of credits
if(GetClientTeam(client) == 1) pcredits = SpecCredits.IntValue;
if(GetClientTeam(client) == 1) pcredits = SpecCredits.IntValue;
//Give Credits
//Give Credits
Store_SetClientCredits(client, Store_GetClientCredits(client) + pcredits);
Store_SetClientCredits(client, Store_GetClientCredits(client) + pcredits);
//Print to client
//Print to client
if(group_adverts.BoolValue && i_advert[client])
if(group_adverts.BoolValue && i_advert[client])
PrintToChat(client, "\x01[SM] You received \x04%i\x01 credits for being member in our \x04steam group!", pcredits);
CPrintToChat(client, "{red}[CREDITS] {default}You won {green}%i {default}credits for being in the Steam Group", pcredits);
}
}
}
}


public void OnClientPostAdminCheck(int client)
public void OnClientPostAdminCheck(int client)
{
{
i_advert[client] = true;
i_advert[client] = true;
b_IsMember[client] = false;
b_IsMember[client] = false;
SteamWorks_GetUserGroupStatus(client, iGroupID.IntValue);
SteamWorks_GetUserGroupStatus(client, iGroupID.IntValue);
}
}


public int SteamWorks_OnClientGroupStatus(int authid, int groupAccountID, bool isMember, bool isOfficer)
public int SteamWorks_OnClientGroupStatus(int authid, int groupAccountID, bool isMember, bool isOfficer)
{
{
int client = UserAuthGrab(authid);
int client = UserAuthGrab(authid);
if (client != -1 && isMember) b_IsMember[client] = true;
if (client != -1 && isMember) b_IsMember[client] = true;
return;
return;
}
}


int UserAuthGrab(int authid)
int UserAuthGrab(int authid)
{
{
for (int i = 1; i <= MaxClients; i++)
for (int i = 1; i <= MaxClients; i++)
{
{
if (IsValidClient(i))
if (IsValidClient(i))
{
{
char charauth[64], authchar[64];
char charauth[64], authchar[64];
GetClientAuthId(i, AuthId_Steam3, charauth, sizeof(charauth));
GetClientAuthId(i, AuthId_Steam3, charauth, sizeof(charauth));
IntToString(authid, authchar, sizeof(authchar));
IntToString(authid, authchar, sizeof(authchar));
if(StrContains(charauth, authchar) != -1) return i;
if(StrContains(charauth, authchar) != -1) return i;
}
}
}
}
return -1;
return -1;
}
}


public void Change_CreditsTime(Handle cvar, const char[] oldVal, const char[] newVal)
public void Change_CreditsTime(Handle cvar, const char[] oldVal, const char[] newVal)
{
{
if (TimeAuto != null)
if (TimeAuto != null)
{
{
KillTimer(TimeAuto);
KillTimer(TimeAuto);
TimeAuto = null;
TimeAuto = null;
}
}


TimeAuto = CreateTimer(CreditsTime.FloatValue, CheckPlayers, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
TimeAuto = CreateTimer(CreditsTime.FloatValue, CheckPlayers, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
}
}


public Action SgcCmd(int client, int args)
public Action SgcCmd(int client, int args)
{
{
if (group_adverts.BoolValue)
if (group_adverts.BoolValue)
{
{
//Do Prints
//Do Prints
if(!i_advert[client]) PrintToChat(client, "\x04[\x01Steam Group Credits\x04] \x01Announcements \x04[ON]");
if(!i_advert[client]) CPrintToChat(client, "{red}[CREDITS] {default}Announcements > {green}[ON]");
else PrintToChat(client, "\x04[\x01Steam Group Credits\x04] \x01Announcements \x04[OFF]");
else CPrintToChat(client, "{red}[CREDITS] {default}Announcements > \x02[OFF]");
//Reverse Bool
//Reverse Bool
i_advert[client] = !i_advert[client];
i_advert[client] = !i_advert[client];
}
}
return Plugin_Handled;
return Plugin_Handled;
}
}


stock bool IsValidClient(int client)
stock bool IsValidClient(int client)
{
{
return (1 <= client <= MaxClients && IsClientInGame(client) && !IsFakeClient(client));
return (1 <= client <= MaxClients && IsClientInGame(client) && !IsFakeClient(client));
}
}