Advertisement
Rostu

Untitled

Sep 20th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.96 KB | None | 0 0
  1. public Action:SM_Playtime(client, args)
  2. {
  3.     if(!IsSpamming(client))
  4.     {
  5.         SetIsSpamming(client, 1.0);
  6.        
  7.         if(args == 0)
  8.         {
  9.             if(g_PlayerID[client] != 0)
  10.             {
  11.                 DB_ShowPlaytime(client, g_PlayerID[client]);
  12.             }
  13.         }
  14.         else
  15.         {
  16.             decl String:sArg[MAX_NAME_LENGTH];
  17.             GetCmdArgString(sArg, sizeof(sArg));
  18.            
  19.             new target = FindTarget(client, sArg, true, false);
  20.             if(target != -1)
  21.             {
  22.                 if(g_PlayerID[target] != 0)
  23.                 {
  24.                     DB_ShowPlaytime(client, g_PlayerID[target]);
  25.                 }
  26.             }
  27.         }
  28.     }
  29.    
  30.     return Plugin_Handled;
  31. }
  32.  
  33. DB_ShowPlaytime(client, PlayerID)
  34. {
  35.     new Handle:pack = CreateDataPack();
  36.     WritePackCell(pack, GetClientUserId(client));
  37.     WritePackCell(pack, PlayerID);
  38.    
  39.     decl String:query[512];
  40.     Format(query, sizeof(query), "SELECT (SELECT Playtime FROM players WHERE PlayerID=%d) AS TargetPlaytime, User, Playtime, PlayerID FROM players ORDER BY Playtime DESC LIMIT 0, 100",
  41.         PlayerID);
  42.     SQL_TQuery(g_DB, DB_ShowPlaytime_Callback, query, pack);
  43. }
  44.  
  45. public DB_ShowPlaytime_Callback(Handle:owner, Handle:hndl, String:error[], any:data)
  46. {
  47.     if(hndl != INVALID_HANDLE)
  48.     {
  49.         ResetPack(data);
  50.         new client = GetClientOfUserId(ReadPackCell(data));
  51.        
  52.         if(client != 0)
  53.         {            
  54.             new rows = SQL_GetRowCount(hndl);
  55.             if(rows != 0)
  56.             {
  57.                 new TargetPlayerID = ReadPackCell(data);
  58.                
  59.                 new Handle:menu = CreateMenu(Menu_ShowPlaytime);
  60.                
  61.                 decl String:sName[MAX_NAME_LENGTH], String:sTime[32], String:sDisplay[64], String:sInfo[16], PlayTime, PlayerID, TargetPlaytime;
  62.                 for(new i = 1; i <= rows; i++)
  63.                 {
  64.                     SQL_FetchRow(hndl);
  65.                    
  66.                     TargetPlaytime = SQL_FetchInt(hndl, 0);
  67.                     SQL_FetchString(hndl, 1, sName, sizeof(sName));
  68.                     PlayTime = SQL_FetchInt(hndl, 2);
  69.                     PlayerID = SQL_FetchInt(hndl, 3);
  70.                    
  71.                     // Set info
  72.                     IntToString(PlayerID, sInfo, sizeof(sInfo));
  73.                    
  74.                     // Set display
  75.                     FormatPlayerTime(float(PlayTime), sTime, sizeof(sTime), false, 1);
  76.                     SplitString(sTime, ".", sTime, sizeof(sTime));
  77.                     FormatEx(sDisplay, sizeof(sDisplay), "#%d: %s: %s", i, sName, sTime);
  78.                     if((i % 7) == 0 || i == rows)
  79.                     {
  80.                         Format(sDisplay, sizeof(sDisplay), "%s\n--------------------------------------", sDisplay);
  81.                     }
  82.                    
  83.                     // Add item
  84.                     AddMenuItem(menu, sInfo, sDisplay);
  85.                 }
  86.                
  87.                 GetNameFromPlayerID(TargetPlayerID, sName, sizeof(sName));
  88.                
  89.                 new Float:ConnectionTime, target;
  90.                
  91.                 if((target = GetClientFromPlayerID(TargetPlayerID)) != 0)
  92.                 {
  93.                     ConnectionTime = GetEngineTime() - g_fJoinTime[target];
  94.                 }
  95.                
  96.                 FormatPlayerTime(ConnectionTime + float(TargetPlaytime), sTime, sizeof(sTime), false, 1);
  97.                 SplitString(sTime, ".", sTime, sizeof(sTime));
  98.                
  99.                 SetMenuTitle(menu, "Playtimes\n \n%s: %s\n--------------------------------------",
  100.                     sName,
  101.                     sTime);
  102.                
  103.                 SetMenuExitButton(menu, true);
  104.                 DisplayMenu(menu, client, MENU_TIME_FOREVER);
  105.             }
  106.         }
  107.     }
  108.     else
  109.     {
  110.         LogError(error);
  111.     }
  112.     CloseHandle(data);
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement