Advertisement
Guest User

Steam Group Credits

a guest
Jul 3rd, 2016
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.17 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 h_timer[MAXPLAYERS+1];
  13. bool b_IsMember[MAXPLAYERS+1],
  14.     b_advert[MAXPLAYERS+1];
  15.    
  16. // Получить SteamID64: http://steamcommunity.com/groups/{YOUR_GROUP_NAME}/memberslistxml/?xml=1
  17.  
  18. public Plugin myinfo =
  19. {
  20.     name = "Steam Group Credits",
  21.     author = "Xines",
  22.     description = "Deals x amount of credits per x amount of secounds",
  23.     version = "1.0.0.3",
  24.     url = ""
  25. };
  26.  
  27. public void OnPluginStart()
  28. {
  29.     //Chat print on/off for all players
  30.     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);
  31.    
  32.     //Chat print on/off Client
  33.     RegConsoleCmd("sm_sgc", SgcCmd, "(On/Off) Steam Group Credits, Client Announcements");
  34.    
  35.     //Configs
  36.     iGroupID = CreateConVar("sm_groupid_add", "0000000", "Steam Group ID (Replace with yours)", FCVAR_PLUGIN|FCVAR_NOTIFY);
  37.     CreditsAdder = CreateConVar("sm_group_credits", "5", "Credits to give per X time, if player is in group.", FCVAR_PLUGIN|FCVAR_NOTIFY);
  38.     CreditsTime = CreateConVar("sm_group_credits_time", "60.0", "Time in seconds to deal credits.", FCVAR_PLUGIN|FCVAR_NOTIFY);
  39.    
  40.     for (int i = 1; i <= MaxClients; i++){
  41.         if (!IsClientInGame(i) || IsFakeClient(i) || !(1 < GetClientTeam(i) < 4)) continue;
  42.         OnClientDisconnect_Post(i);
  43.         h_timer[i] = CreateTimer(GetConVarFloat(CreditsTime), CheckPlayers, i, TIMER_REPEAT);
  44.     }
  45.     HookEvent("player_team", OnPlayerTeam);
  46.    
  47.     //Don't Touch
  48.     HookConVarChange(CreditsTime, Change_CreditsTime);
  49. }
  50.  
  51. public Action CheckPlayers(Handle timer){
  52.     LoopAllPlayers(i){
  53.         GiveCredits(i);
  54.     }
  55. }
  56.  
  57. public void GiveCredits(int client){
  58.     if (b_IsMember[client]){
  59.         int amount = GetConVarInt(CreditsAdder);
  60.         Shop_GiveClientCredits(client, amount, CREDITS_BY_NATIVE);
  61.         if (GetConVarBool(group_adverts))
  62.         {
  63.             if (b_advert[client]) PrintToChat(client, "\x01Вы будете получать \x04%i \x01кредит(ов), за вступление в нашу стим группу!", amount);
  64.         }
  65.     }
  66. }
  67.  
  68. public void OnClientPostAdminCheck(int client)
  69. {
  70.     b_IsMember[client] = false;
  71.     SteamWorks_GetUserGroupStatus(client, GetConVarInt(iGroupID));
  72. }
  73.  
  74. public int SteamWorks_OnClientGroupStatus(int authid, int groupAccountID, bool isMember, bool isOfficer)
  75. {
  76.     int client = GetUserFromAuthID(authid);
  77.    
  78.     if (isMember) b_IsMember[client] = true;
  79. }
  80.  
  81. int GetUserFromAuthID(int authid)
  82. {
  83.     LoopAllPlayers(i)
  84.     {
  85.         char authstring[50], authstring2[50];
  86.         GetClientAuthId(i, AuthId_Steam3, authstring, sizeof(authstring)); 
  87.         IntToString(authid, authstring2, sizeof(authstring2));
  88.        
  89.         if (StrContains(authstring, authstring2) != -1)
  90.         {
  91.             return i;
  92.         }
  93.     }
  94.     return -1;
  95. }
  96.  
  97. public void Change_CreditsTime(Handle cvar, const char[] oldVal, const char[] newVal){  
  98.     for (int i = 1; i <= MaxClients; i++){
  99.         if (!IsClientInGame(i) || IsFakeClient(i) || !(1 < GetClientTeam(i) < 4)) continue;
  100.         Create(i);
  101.     }
  102. }
  103.  
  104. int Create(int client){
  105.     OnClientDisconnect_Post(client);
  106.     float interval = GetConVarFloat(CreditsTime);
  107.     if (interval < 1.0) return;
  108.     h_timer[client] = CreateTimer(interval, CheckPlayers, client, TIMER_REPEAT);
  109. }
  110.  
  111. public void OnClientDisconnect_Post(client)
  112. {
  113.     if (h_timer[client] != INVALID_HANDLE)
  114.     {
  115.         KillTimer(h_timer[client]);
  116.         h_timer[client] = INVALID_HANDLE;
  117.     }
  118. }
  119.  
  120. public Action SgcCmd(int client, int args)
  121. {
  122.     if (!GetConVarBool(group_adverts)) return Plugin_Continue;
  123.    
  124.     if (b_advert[client]) PrintToChat(client, "\x01Уведомления - \x04%s", (b_advert[client] = !b_advert[client]) ? "[ON]":"[OFF]");
  125.     return Plugin_Handled;
  126. }
  127.  
  128. public void OnPlayerTeam(Handle event, const char[] name, bool dontBroadcast){
  129.     int client = GetClientOfUserId(GetEventInt(event, "userid"));
  130.     if (!client || IsFakeClient(client)) return;
  131.    
  132.     switch (GetEventInt(event, "team")){
  133.         case 2,3:{
  134.             Create(client);
  135.         }
  136.         default:{
  137.             OnClientDisconnect_Post(client);
  138.         }
  139.     }
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement