HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  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. "Level 1, Kezdo, 1 Nap (24 ora) jatekido.",
  22. "Level 2, Halado, 3 nap (72 ora) jatekido.",
  23. "Level 3, Kocka, 1 het (168 ora) jatekido.",
  24. "Level 4, Hos, 1 het es 3 nap (240 ora) jatekido.",
  25. "Level 5, Legenda, 2 het es 4 nap (432 hours) jatekido."
  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 /time", "CmdTimeTop"); // Register Commands.
  50. register_clcmd("say /mytime", "CmdTime");
  51. register_clcmd("say /levels", "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", "Nev", "Jatekido")
  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 Jatekido")
  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[^x04Ido^x01]^x01 A te jatekidod^x03 %i ^x01 ora, Rank :^x03 %i/%i ^x01[^x04%i Masodperc^x01].", iSecTempTime/3600, iRank, TotalRanks, iSecTempTime);
  205. ColorChat(id,RED,"^x01[^x04Ido^x01]^x01 %s", szLevels[iLevel])
  206. }
  207.  
  208. public CmdLevels(id)
  209. {
  210. ColorChat(id,RED,"^x01[^x04Ido^x01]^x01 Kerlek nezd meg a konzolt.");
  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.  
  218. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  219. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1053\\ f0\\ fs16 \n\\ par }
  220. */
  221.