jr_acn

tempo de jogatina.sma

Jan 30th, 2013
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.06 KB | None | 0 0
  1. /* Plugin generated by AMXX-Studio */
  2. /* TimePlayed with levels v1.0*/
  3.  
  4. #include <amxmodx>
  5. #include <amxmisc>
  6. #include <fvault>
  7. #include <colorchat>
  8.  
  9. #define PLUGIN "Time"
  10. #define VERSION "1.1"
  11. #define AUTHOR "StarMazter"
  12.  
  13. #define MAXPLAYERS 32
  14. #define MAX_BUFFER_LENGTH 2047
  15.  
  16. new szVault[] = "Time";
  17.  
  18. new iTotalLevels = 5;
  19.  
  20. new szLevels[][64] = {
  21.     "Nivel 1, Noob, 1 Dia (24 horas) de Jogatina.",
  22.     "Nivel 2, Iniciante, 3 Dias (72 horas) de Jogatina.",
  23.     "Nivel 3, Amador, 1 Semana (168 horas) de Jogatina.",
  24.     "Nivel 4, Heroi, 1 Semana e 3 dias (240 horas) de Jogatina.",
  25.     "Nivel 5, Legenda, 2 Semanas e 4 dias (432 horas) de Jogatina."
  26. };
  27.  
  28. new szTimes[][64] = {
  29.     "24",
  30.     "72",
  31.     "168",
  32.     "240",
  33.     "432"
  34. };
  35.  
  36. new Trie:SaveTime;
  37. new Trie:Rank;
  38. new Trie:Name;
  39.  
  40. new TotalRanks;
  41.  
  42. new iCurrentTime[MAXPLAYERS+1];
  43.  
  44. new sBuffer[MAX_BUFFER_LENGTH + 1]  
  45.  
  46. public plugin_init() {
  47.     register_plugin(PLUGIN, VERSION, AUTHOR);
  48.    
  49.     register_clcmd("say /tempo", "CmdTimeTop"); // Register Commands.
  50.     register_clcmd("say /meutempo", "CmdTime");
  51.     register_clcmd("say /niveis", "CmdLevels");
  52. }
  53.  
  54. public plugin_cfg()
  55. {
  56.     SaveTime = TrieCreate();
  57.     Rank = TrieCreate()
  58.     Name = TrieCreate()
  59.     LoadData();
  60. }
  61.  
  62. public plugin_end()
  63. {
  64.     TrieDestroy(SaveTime); // Delete Trie to prevent bugs
  65.     TrieDestroy(Rank);
  66. }
  67.  
  68. LoadData()
  69. {
  70.     new iTotal = fvault_size(szVault);
  71.  
  72.     new szSteamId[32], szName[32], szTime[32], szData[64], szKey[32];
  73.     for( new i = 0; i < iTotal; i++ )
  74.     {
  75.         fvault_get_keyname(szVault, i, szSteamId, sizeof(szSteamId) - 1); // Return Saved Values.
  76.         fvault_get_data(szVault, szSteamId, szData, sizeof(szData) - 1);
  77.        
  78.         parse(szData, szName, sizeof(szName) - 1, szTime, sizeof(szTime) - 1)
  79.        
  80.         TrieSetCell(SaveTime, szSteamId, str_to_num(szTime)) // Set the players new time to the Cell.
  81.        
  82.         num_to_str(TotalRanks, szKey, sizeof(szKey) - 1)
  83.        
  84.         TrieSetString(Name, szKey, szName)
  85.         TrieSetCell(Rank, szKey, str_to_num(szTime))
  86.         TotalRanks++
  87.     }
  88. }
  89.  
  90. SaveData(id)
  91. {
  92.     new szSteamId[32], szName[32], szTime[32], szData[64];
  93.     get_user_authid(id, szSteamId, 31) // Retrieve Steamid.
  94.     get_user_name(id, szName, 31)
  95.    
  96.     TrieSetCell(SaveTime, szSteamId, iCurrentTime[id]) // Set the players new time to the Cell.
  97.    
  98.     num_to_str(iCurrentTime[id], szTime, sizeof(szTime) - 1) // Set the num to a string
  99.     formatex(szData, sizeof(szData) - 1, "^"%s^" %s", szName, szTime)
  100.    
  101.     fvault_set_data(szVault, szSteamId, szData) // Set data to the vault.
  102. }
  103.  
  104. public client_authorized(id)
  105. {
  106.     new szSteamId[32];
  107.     get_user_authid(id, szSteamId, sizeof(szSteamId) - 1) // Retrieve Steamid.
  108.    
  109.     TrieGetCell(SaveTime, szSteamId, iCurrentTime[id]); // Load user's old time.
  110. }
  111.  
  112. public client_disconnect(id)
  113. {
  114.     new iAddTime = get_user_time(id); // Getting the user's hes current time.
  115.    
  116.     iCurrentTime[id] += iAddTime; // Adding  hes new time to hes old time.
  117.    
  118.     SaveData(id)
  119. }
  120.  
  121. public CmdTimeTop(id)
  122. {
  123.     new iRanks[10], iRanking[10], szKey[5], iTemp, z
  124.    
  125.     for(new x; x < 10; x++)
  126.     {
  127.         for(new i=0; i <= TotalRanks; i++)
  128.         {
  129.             num_to_str(i, szKey, sizeof(szKey) - 1)
  130.             TrieGetCell(Rank, szKey, iTemp)
  131.            
  132.             if(x == 0)
  133.             {
  134.                 if(iRanks[x] < iTemp)
  135.                 {
  136.                     iRanks[x] = iTemp
  137.                     iRanking[x] = i
  138.                    
  139.                     if(z<x)
  140.                         z=x
  141.                 }
  142.             }
  143.             else
  144.             {
  145.                 if(iRanks[x] < iTemp && iRanks[x-1] > iTemp)
  146.                 {
  147.                     iRanks[x] = iTemp
  148.                     iRanking[x] = i
  149.                    
  150.                     if(z<x)
  151.                         z=x
  152.                 }
  153.             }
  154.         }
  155.     }
  156.        
  157.     new szName[32]
  158.     new iLen
  159.    
  160.     iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>")
  161.     iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "#%s             %s              %s^n", "Rank", "Nick", "Tempo")
  162.    
  163.     for(new y; y <= z; y++)
  164.     {
  165.         num_to_str(iRanking[y], szKey, sizeof(szKey) - 1)
  166.         TrieGetCell(Rank, szKey, iTemp)
  167.         TrieGetString(Name, szKey, szName, sizeof(szName) - 1)
  168.    
  169.         iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "#%i              %s                              %i ^n", y + 1, szName, iTemp)
  170.     }
  171.    
  172.     show_motd(id, sBuffer, "Top 10 Horas de Jogatina")
  173. }
  174.  
  175.  
  176.  
  177. public CmdTime(id)
  178. {
  179.     new iSecTempTime, iLevel, iRank, iTime, szKey[5];
  180.    
  181.     iSecTempTime = (iCurrentTime[id] + get_user_time(id)) // Get user's current time
  182.    
  183.     for(new i; i < iTotalLevels; i++)
  184.     {
  185.         if((iSecTempTime/3600) >= str_to_num(szTimes[i])) // Compare with presseted levels.
  186.         {
  187.             iLevel++ // Add a level
  188.         }
  189.     }
  190.    
  191.     iRank=1
  192.    
  193.     for(new i; i < TotalRanks + 1; i++)
  194.     {
  195.         num_to_str(i, szKey, sizeof(szKey) - 1)
  196.         TrieGetCell(Rank, szKey, iTime)
  197.        
  198.         if(iCurrentTime[id] < iTime)
  199.         {
  200.             iRank++
  201.         }
  202.     }
  203.    
  204.     ColorChat(id,RED,"^x01[^x04Time^x01]^x01 Seu tempo de jogatina eh^x03 %i ^x01Horas, Rank :^x03 %i/%i ^x01[^x04%i Segundos^x01].", iSecTempTime/3600, iRank, TotalRanks, iSecTempTime);
  205.     ColorChat(id,RED,"^x01[^x04Time^x01]^x01 %s", szLevels[iLevel])
  206. }
  207.  
  208. public CmdLevels(id)
  209. {
  210.     ColorChat(id,RED,"^x01[^x04Time^x01]^x01 Olhe em seu console.");
  211.    
  212.     for(new i; i < iTotalLevels; i++)
  213.     {
  214.         console_print(id, "%s", szLevels[i]) // Print all levels in user's console
  215.     }
  216. }
  217. /* zplague.forumclan.com */
Advertisement
Add Comment
Please, Sign In to add comment