Untitled diff

Created Diff never expires
22 removals
Lines
Total
Removed
Words
Total
Removed
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
132 lines
23 additions
Lines
Total
Added
Words
Total
Added
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
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));
}
}