Advertisement
Mciko123

[PAWN] Hours Ban system

Nov 4th, 2016
1,091
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.25 KB | None | 0 0
  1. #include < a_samp >
  2. #include < izcmd >
  3. #include < sscanf2 >
  4. #include < streamer >
  5. #include < YSI\y_ini >
  6.  
  7.  
  8. #define SCMTA SendClientMessageToAll
  9. #define SCM SendClientMessage
  10.  
  11. #define BanHours_FOLDER "BanHours/%s.ini"
  12.  
  13. enum bana
  14. {
  15. BanHours,
  16. BanDay
  17. };
  18. new SBanInfo[MAX_PLAYERS][bana];
  19.  
  20. public OnPlayerConnect(playerid)
  21. {
  22. SBanInfo[playerid][BanDay] = 0;
  23. SBanInfo[playerid][BanHours] = -1;
  24.  
  25. if(fexist(SBanPath(playerid)))
  26. {
  27. INI_ParseFile(SBanPath(playerid), "LoadSBan", .bExtra = true, .extra = playerid);
  28. if(SBanInfo[playerid][BanHours] > -1)
  29. {
  30. new sati, minute, sekunde;
  31. gettime(sati, minute, sekunde);
  32. new yera, monthb, dayb;
  33. getdate(yera, monthb, dayb);
  34. if(dayb >= SBanInfo[playerid][BanDay])
  35. {
  36. if(SBanInfo[playerid][BanHours] > sati)
  37. {
  38. new string[30];
  39. format(string, sizeof(string), "You are banned from this server for %d hours.", SBanInfo[playerid][BanHours]);
  40. SCM(playerid, -1, string);
  41. Kick(playerid);
  42. }
  43. else
  44. {
  45. SBanInfo[playerid][BanHours] = -1;
  46. SBanInfo[playerid][BanDay] = 0;
  47. SavehBan(playerid);
  48. }
  49. }
  50. else
  51. {
  52. new string[30];
  53. format(string, sizeof(string), "You are banned from this server for %d hours.", SBanInfo[playerid][BanHours]);
  54. SCM(playerid, -1, string);
  55. Kick(playerid);
  56. }
  57. }
  58. }
  59. return 1;
  60. }
  61.  
  62. forward LoadSBan(playerid,name[],value[]);
  63. public LoadSBan(playerid,name[],value[])
  64. {
  65. INI_Int("BanHours",SBanInfo[playerid][BanHours]);
  66. INI_Int("BanDay",SBanInfo[playerid][BanDay]);
  67. return 1;
  68. }
  69. ///////////////////////////////////////////////////////////////////////////
  70. stock SavehBan(playerid)
  71. {
  72. new INI:File = INI_Open(SBanPath(playerid));
  73. INI_WriteInt(File,"BanHours",SBanInfo[playerid][BanHours]);
  74. INI_WriteInt(File,"BanDay",SBanInfo[playerid][BanDay]);
  75. INI_Close(File);
  76. return 1;
  77. }
  78. ///////////////////////////////////////////////////////////////////////////
  79. stock SBanPath(playerid)
  80. {
  81. new string[128];
  82. format(string,sizeof(string),BanHours_FOLDER,GetName(playerid));
  83. return string;
  84. }
  85.  
  86. CMD:BanHours(playerid, params[])
  87. {
  88. if(IsPlayerAdmin(playerid))
  89. {
  90. new id, hour, reason[128];
  91. if(sscanf(params, "uis[128]", id, hour, reason)) return SCM(playerid, -1, "Usage: /BanHours [ID/Name] [Hours(max 3)] [Reason]");
  92. if(hour > 3 || hour < 0) return SCM(playerid, -1, "ERROR: You can't ban more than 3 hours or less than 0");
  93. new hourb, minb, secb;
  94. gettime(hourb,minb,secb);
  95. new yearb, monthb, dayb;
  96. getdate(yearb,monthb,dayb);
  97. new houro = hourb+hour;
  98. if(houro == 24)
  99. {
  100. houro=0;
  101. dayb++;
  102. }
  103. if(houro == 25)
  104. {
  105. houro=1;
  106. dayb++;
  107. }
  108. if(houro == 26)
  109. {
  110. houro=2;
  111. dayb++;
  112. }
  113. SBanInfo[id][BanHours] = houro;
  114. SBanInfo[id][BanDay] = dayb;
  115. new str[128];
  116. format(str, sizeof(str), "Admin %s temporary banned %s || Reason: %s || he will be unbanned in: %d hours", GetName(playerid), GetName(id), reason, hour);
  117. SavehBan(id);
  118. SCMTA(-1, str);
  119. new string1[128], string2[128];
  120. format(string1, sizeof(string1), "You've banned player %s | Ban reason: %s", GetName(id), reason);
  121. format(string2, sizeof(string2), "| he will be unbanned in %d hours |", hour);
  122. SCM(playerid, -1, string1);
  123. SCM(playerid, -1, string2);
  124. new string[128];
  125. format(string,sizeof(string), "You have been baned by %s | Reason: %s",GetName(playerid), reason);
  126. new str2[128];
  127. format(str2, sizeof(str2), "You will be unbaned in: %d hours", hour);
  128. SCM(id, 0xFF6347AA, string);
  129. SCM(id, 0xFF6347AA, str2);
  130. Kick(id);
  131. }
  132. else
  133. {
  134. SCM(playerid,-1, "ERROR: You are not allowed to use this command");
  135. }
  136. return 1;
  137. }
  138.  
  139. CMD:UnbanHours(playerid, params[])
  140. {
  141. if(!IsPlayerAdmin(playerid)) return SCM(playerid,-1, "ERROR:You are not allowed to use this command!");
  142. new user[50];
  143. new String[128];
  144. new sendername[MAX_PLAYER_NAME];
  145. if(sscanf(params, "s[50]", user)) return SCM(playerid, -1, "Usage: /hunban [Nick]");
  146. format(user, sizeof(user), "BanHours/%s.ini", user);
  147. if(fexist(user))
  148. {
  149. new INI:File = INI_Open(user);
  150. INI_WriteInt(File, "BanHours", -1);
  151. INI_WriteInt(File, "BanDay", 0);
  152. INI_Close(File);
  153. GetPlayerName(playerid, sendername, sizeof(sendername));
  154. format(String, 128, "Admin %s has unbaned player %s(Day - Hours ban).", sendername, user);
  155. SCMTA(-1, String);
  156. return 1;
  157. }
  158. else
  159. {
  160. SCM(playerid,-1, "ERROR: User not found!");
  161. }
  162. return 1;
  163. }
  164.  
  165. stock GetName(playerid)
  166. {
  167. new name[MAX_PLAYER_NAME];
  168. GetPlayerName(playerid, name, sizeof(name));
  169. return name;
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement