Advertisement
Guest User

Steam Group Credits

a guest
Jul 3rd, 2016
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.32 KB | None | 0 0
  1. #pragma semicolon 1
  2. #include <SteamWorks>
  3. #include <shop>
  4.  
  5. #define LoopAllPlayers(%1) for(int %1=1;%1<=MaxClients;++%1)\
  6. if(IsClientInGame(%1) && !IsFakeClient(%1))
  7.  
  8. ConVar iGroupID,
  9.     CreditsAdder,
  10.     group_adverts,
  11.     CreditsTime;
  12. Handle TimeAuto = null;
  13. bool b_IsMember[MAXPLAYERS+1],
  14.     b_advert[MAXPLAYERS+1];
  15.  
  16. public Plugin myinfo =
  17. {
  18.     name = "Steam Group Credits",
  19.     author = "Xines",
  20.     description = "Deals x amount of credits per x amount of secounds",
  21.     version = "1.0.0.2",
  22.     url = ""
  23. };
  24.  
  25. public void OnPluginStart()
  26. {
  27.     //Chat print on/off for all players
  28.     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);
  29.    
  30.     //Chat print on/off Client
  31.     RegConsoleCmd("sm_sgc", SgcCmd, "(On/Off) Steam Group Credits, Client Announcements");
  32.    
  33.     //Configs
  34.     iGroupID = CreateConVar("sm_groupid_add", "0000000", "Steam Group ID (Replace with yours)", FCVAR_PLUGIN|FCVAR_NOTIFY);
  35.     CreditsAdder = CreateConVar("sm_group_credits", "5", "Credits to give per X time, if player is in group.", FCVAR_PLUGIN|FCVAR_NOTIFY);
  36.     CreditsTime = CreateConVar("sm_group_credits_time", "60", "Time in seconds to deal credits.", FCVAR_PLUGIN|FCVAR_NOTIFY);
  37.    
  38.     //Don't Touch
  39.     HookConVarChange(CreditsTime, Change_CreditsTime);
  40. }
  41.  
  42. public void OnMapStart()
  43. {
  44.     TimeAuto = CreateTimer(GetConVarFloat(CreditsTime), CheckPlayers, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
  45. }
  46.  
  47. public Action CheckPlayers(Handle timer)
  48. {
  49.     LoopAllPlayers(i) addcredits(i);
  50.     return Plugin_Continue;
  51. }
  52.  
  53. public void addcredits(int client)
  54. {
  55.     if (b_IsMember[client])
  56.     {
  57.         int amount = GetConVarInt(CreditsAdder);
  58.         Shop_GiveClientCredits(client, amount, CREDITS_BY_NATIVE);
  59.         if (GetConVarBool(group_adverts))
  60.         {
  61.             if (b_advert[client]) PrintToChat(client, "\x01[SM] Вы получили \x04%i\x01 кредит, за то что вступили в нашу \x04стим группу.", amount);
  62.         }
  63.     }
  64. }
  65.  
  66. public void OnClientPostAdminCheck(int client)
  67. {
  68.     b_IsMember[client] = false;
  69.     SteamWorks_GetUserGroupStatus(client, GetConVarInt(iGroupID));
  70. }
  71.  
  72. public int SteamWorks_OnClientGroupStatus(int authid, int groupAccountID, bool isMember, bool isOfficer)
  73. {
  74.     int client = UserAuthGrab(authid);
  75.    
  76.     if (client == -1) return;
  77.    
  78.     if (isMember) b_IsMember[client] = true;
  79. }
  80.  
  81. int UserAuthGrab(int authid)
  82. {
  83.     LoopAllPlayers(i)
  84.     {
  85.         char charauth[64], authchar[64];
  86.         GetClientAuthId(i, AuthId_Engine, charauth, sizeof(charauth));  
  87.         IntToString(authid, authchar, sizeof(authchar));
  88.         if (StrContains(charauth, authchar) != -1)
  89.         {
  90.             return i;
  91.         }
  92.     }
  93.    
  94.     return -1;
  95. }
  96.  
  97. public void Change_CreditsTime(Handle cvar, const char[] oldVal, const char[] newVal)
  98. {
  99.     if (TimeAuto != null)
  100.     {
  101.         KillTimer(TimeAuto);
  102.         TimeAuto = null;
  103.     }
  104.  
  105.     TimeAuto = CreateTimer(GetConVarFloat(CreditsTime), CheckPlayers, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
  106. }
  107.  
  108. public Action SgcCmd(int client, int args)
  109. {
  110.     if (!GetConVarBool(group_adverts)) return Plugin_Continue;
  111.    
  112.     if (b_advert[client]) PrintToChat(client, "\x01Уведомления - \x04%s", (b_advert[client] = !b_advert[client]) ? "[ON]":"[OFF]");
  113.     return Plugin_Handled;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement