Advertisement
Guest User

Untitled

a guest
Apr 29th, 2016
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.20 KB | None | 0 0
  1. #include <sourcemod>
  2. #include <commandfilters>
  3. #include <adt_trie>
  4. #include <files>
  5. #include <clientprefs>
  6. #pragma semicolon 1
  7. #define NEWBIE_FILE "newbiesfile.txt"
  8.  
  9. float TimeOfConnect[32];
  10. float TimeOfDisconnect[32];
  11. float Playtime[32];
  12. bool noNewbiesTag = false;
  13. Handle g_hCookieNewbieTags = INVALID_HANDLE;
  14. Handle g_hCookieNewbieTime = INVALID_HANDLE;
  15. Handle g_hNewbieTags = INVALID_HANDLE;
  16. Handle g_hNewbieTime = INVALID_HANDLE;
  17. Handle g_hNewbies = INVALID_HANDLE;
  18. public OnPluginStart()
  19. {
  20. g_hNewbies = CreateTrie();
  21. g_hNewbieTags = CreateTrie();
  22. g_hNewbieTime = CreateTrie();
  23. g_hCookieNewbieTags = RegClientCookie("nametagnew", "Newbie name tag.", CookieAccess_Protected);
  24. g_hCookieNewbieTime = RegClientCookie("newbietime", "Newbie play time.", CookieAccess_Protected);
  25. CreateConVar("timeplayedint", "3600", "Playtime before newbie is disabled.");
  26. AddCommandListener(OnChat, "say");
  27. RegAdminCmd("sm_reloadnew", cmd_ReloadNewbies, ADMFLAG_SLAY);
  28. }
  29. public OnClientDisconnect(int client)
  30. {
  31. char PreviousPlaytimeBuffer[32];
  32. TimeOfDisconnect[client] = GetEngineTime();
  33. Playtime[client] = (TimeOfDisconnect[client] - TimeOfConnect[client]);
  34. GetClientCookie(client, g_hCookieNewbieTime, PreviousPlaytimeBuffer, sizeof(PreviousPlaytimeBuffer));
  35. float floatpp = StringToFloat(PreviousPlaytimeBuffer);
  36. SetClientCookie(client, g_hCookieNewbieTime, IntToString(RoundToFloor(Playtime[client] + floatpp)));
  37. }
  38. public OnClientConnected(int client)
  39. {
  40. TimeOfConnect[client] = GetEngineTime();
  41. }
  42. public OnClientPostAdminCheck(int client)
  43. {
  44. if (AreClientCookiesCached(client))
  45. {
  46. Handle g_hCvarNewbieTime = FindConVar("timeplayedint");
  47. char TagBuffer[32];
  48. char useSteamId[64];
  49. char PreviousPlaytimeBuffer[32];
  50. float previousplayertime[32];
  51. GetClientAuthId(client, useSteamId, sizeof(useSteamId));
  52. GetClientCookie(client, g_hCookieNewbieTags, TagBuffer, sizeof(TagBuffer));
  53. GetClientCookie(client, g_hCookieNewbieTime, PreviousPlaytimeBuffer, sizeof(PreviousPlaytimeBuffer));
  54. int intpp = StringToInt(PreviousPlaytimeBuffer);
  55. if (intpp < GetConVarInt(g_hCvarNewbieTime))
  56. {
  57. SetTrieString(g_hNewbieTags, useSteamId, TagBuffer, true);
  58. return Plugin_Continue;
  59. }
  60. if (intpp >= GetConVarInt(g_hCvarNewbieTime))
  61. {
  62. SetTrieString(g_hNewbieTags, useSteamId, "", true);
  63. noNewbiesTag = true;
  64. return Plugin_Continue;
  65. }
  66. }
  67. }
  68. public Action OnChat(client, const char command[], args)
  69. {
  70. if (noNewbiesTag = true)
  71. {
  72. return Plugin_Handled;
  73. }
  74. char useNameBuffer[MAXLENGTH_NAME]
  75. char useTagBuffer[32];
  76. char useSteamIdChat[64];
  77. GetClientAuthId(client, useSteamIdChat, sizeof(useSteamIdChat));
  78. GetTrieString(g_hNewbieTags, "tag", useTagBuffer, sizeof(useTagBuffer));
  79. GetClientName(client, useNameBuffer, sizeof(useNameBuffer));
  80. if (GetTrieString(client, "tag", useTagBuffer, sizeof(useTagBuffer)))
  81. {
  82. Format(useNameBuffer, sizeof(useNameBuffer), "%s%s", useTagBuffer, useNameBuffer);
  83. return Plugin_Continue;
  84. }
  85. }
  86. public Action NewbiesLoad()
  87. {
  88. char newFile[PLATFORM_MAX_PATH];
  89. BuildPath(Path_SM, newFile, sizeof(newFile), "config/newbies.cfg");
  90. Handle filehandle= OpenFile(newFile, "r");
  91. if (filehandle != INVALID_HANDLE)
  92. {
  93. newFile = "";
  94. ClearTrie(g_hNewbieTags);
  95. ClearTrie(g_hNewbies);
  96. while (!IsEndOfFile(filehandle) && ReadFileLine(file, newFile, sizeof(newFile)))
  97. {
  98. if (newFile[0] != ';' && strlen(newFile) > 1)
  99. {
  100. char bTemporary[2][64];
  101. TrimString(newFile);
  102. ExplodeString(newFile, ";", bTemporary, 2, sizeof(bTemporary[]));
  103. SetTrieValue(g_hNewbies, bTemporary[0], StringToInt(bTemporary[1]));
  104. SetTrieString(g_hNewbieTags, newFile, "");
  105. }
  106. }
  107. CloseHandle(filehandle);
  108. }
  109. else
  110. {
  111. SetFailState("Unable to load newbie file (%s)", NEWBIE_FILE);
  112. }
  113. }
  114. public Action cmd_ReloadNewbies(int client, int args)
  115. {
  116. NewbiesLoad();
  117. for (int i = 1; i <= MaxClients; i++)
  118. {
  119. if (IsClientInGame(i) && !IsFakeClient(i))
  120. {
  121. char useSteamIdReload[64];
  122. GetTrieString(g_hNewbies, "steamid", useSteamIdReload, sizeof(useSteamIdReload));
  123. if (GetTrieString(g_hNewbies, "steamid", useSteamIdReload, sizeof(useSteamIdReload))
  124. {
  125. ReplyToCommand(client, "You have reloaded newbies.");
  126. }
  127.  
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement