Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma semicolon 1
- #include <SteamWorks>
- #include <shop>
- #define LoopAllPlayers(%1) for(int %1=1;%1<=MaxClients;++%1)\
- if(IsClientInGame(%1) && !IsFakeClient(%1))
- ConVar iGroupID,
- CreditsAdder,
- group_adverts,
- CreditsTime;
- Handle h_timer[MAXPLAYERS+1];
- bool b_IsMember[MAXPLAYERS+1],
- b_advert[MAXPLAYERS+1];
- // Получить SteamID64: http://steamcommunity.com/groups/{YOUR_GROUP_NAME}/memberslistxml/?xml=1
- public Plugin myinfo =
- {
- name = "Steam Group Credits",
- author = "Xines",
- description = "Deals x amount of credits per x amount of secounds",
- version = "1.0.0.3",
- url = ""
- };
- public void OnPluginStart()
- {
- //Chat print on/off for all players
- 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);
- //Chat print on/off Client
- RegConsoleCmd("sm_sgc", SgcCmd, "(On/Off) Steam Group Credits, Client Announcements");
- //Configs
- iGroupID = CreateConVar("sm_groupid_add", "0000000", "Steam Group ID (Replace with yours)", FCVAR_PLUGIN|FCVAR_NOTIFY);
- CreditsAdder = CreateConVar("sm_group_credits", "5", "Credits to give per X time, if player is in group.", FCVAR_PLUGIN|FCVAR_NOTIFY);
- CreditsTime = CreateConVar("sm_group_credits_time", "60.0", "Time in seconds to deal credits.", FCVAR_PLUGIN|FCVAR_NOTIFY);
- for (int i = 1; i <= MaxClients; i++){
- if (!IsClientInGame(i) || IsFakeClient(i) || !(1 < GetClientTeam(i) < 4)) continue;
- OnClientDisconnect_Post(i);
- h_timer[i] = CreateTimer(GetConVarFloat(CreditsTime), CheckPlayers, i, TIMER_REPEAT);
- }
- HookEvent("player_team", OnPlayerTeam);
- //Don't Touch
- HookConVarChange(CreditsTime, Change_CreditsTime);
- }
- public Action CheckPlayers(Handle timer){
- LoopAllPlayers(i){
- GiveCredits(i);
- }
- }
- public void GiveCredits(int client){
- if (b_IsMember[client]){
- int amount = GetConVarInt(CreditsAdder);
- Shop_GiveClientCredits(client, amount, CREDITS_BY_NATIVE);
- if (GetConVarBool(group_adverts))
- {
- if (b_advert[client]) PrintToChat(client, "\x01Вы будете получать \x04%i \x01кредит(ов), за вступление в нашу стим группу!", amount);
- }
- }
- }
- public void OnClientPostAdminCheck(int client)
- {
- b_IsMember[client] = false;
- SteamWorks_GetUserGroupStatus(client, GetConVarInt(iGroupID));
- }
- public int SteamWorks_OnClientGroupStatus(int authid, int groupAccountID, bool isMember, bool isOfficer)
- {
- int client = GetUserFromAuthID(authid);
- if (isMember) b_IsMember[client] = true;
- }
- int GetUserFromAuthID(int authid)
- {
- LoopAllPlayers(i)
- {
- char authstring[50], authstring2[50];
- GetClientAuthId(i, AuthId_Steam3, authstring, sizeof(authstring));
- IntToString(authid, authstring2, sizeof(authstring2));
- if (StrContains(authstring, authstring2) != -1)
- {
- return i;
- }
- }
- return -1;
- }
- public void Change_CreditsTime(Handle cvar, const char[] oldVal, const char[] newVal){
- for (int i = 1; i <= MaxClients; i++){
- if (!IsClientInGame(i) || IsFakeClient(i) || !(1 < GetClientTeam(i) < 4)) continue;
- Create(i);
- }
- }
- int Create(int client){
- OnClientDisconnect_Post(client);
- float interval = GetConVarFloat(CreditsTime);
- if (interval < 1.0) return;
- h_timer[client] = CreateTimer(interval, CheckPlayers, client, TIMER_REPEAT);
- }
- public void OnClientDisconnect_Post(client)
- {
- if (h_timer[client] != INVALID_HANDLE)
- {
- KillTimer(h_timer[client]);
- h_timer[client] = INVALID_HANDLE;
- }
- }
- public Action SgcCmd(int client, int args)
- {
- if (!GetConVarBool(group_adverts)) return Plugin_Continue;
- if (b_advert[client]) PrintToChat(client, "\x01Уведомления - \x04%s", (b_advert[client] = !b_advert[client]) ? "[ON]":"[OFF]");
- return Plugin_Handled;
- }
- public void OnPlayerTeam(Handle event, const char[] name, bool dontBroadcast){
- int client = GetClientOfUserId(GetEventInt(event, "userid"));
- if (!client || IsFakeClient(client)) return;
- switch (GetEventInt(event, "team")){
- case 2,3:{
- Create(client);
- }
- default:{
- OnClientDisconnect_Post(client);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement