1
0

staffban.pwn 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. /*
  2. /$$ /$$ /$$$$$$ /$$$$$$$ /$$$$$$$
  3. | $$$ | $$ /$$__ $$ | $$__ $$| $$__ $$
  4. | $$$$| $$| $$ \__/ | $$ \ $$| $$ \ $$
  5. | $$ $$ $$| $$ /$$$$ /$$$$$$| $$$$$$$/| $$$$$$$/
  6. | $$ $$$$| $$|_ $$|______/| $$__ $$| $$____/
  7. | $$\ $$$| $$ \ $$ | $$ \ $$| $$
  8. | $$ \ $$| $$$$$$/ | $$ | $$| $$
  9. |__/ \__/ \______/ |__/ |__/|__/
  10. Staff Ban System
  11. Winterfield
  12. Next Generation Gaming, LLC
  13. (created by Next Generation Gaming Development Team)
  14. * Copyright (c) 2016, Next Generation Gaming, LLC
  15. *
  16. * All rights reserved.
  17. *
  18. * Redistribution and use in source and binary forms, with or without modification,
  19. * are not permitted in any case.
  20. *
  21. *
  22. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  23. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  24. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  25. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  26. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  27. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  28. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  29. * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  30. * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  31. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  32. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  33. */
  34. CMD:staffban(playerid, params[])
  35. {
  36. if(PlayerInfo[playerid][pAdmin] >= 1337 || PlayerInfo[playerid][pHR] > 1)
  37. {
  38. new id, reason[128];
  39. if(sscanf(params, "us[128]", id, reason))
  40. {
  41. return SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /staffban [playerid] [reason]");
  42. }
  43. else
  44. {
  45. if(IsPlayerConnected(id))
  46. {
  47. if(PlayerInfo[playerid][pAdmin] > PlayerInfo[id][pAdmin] || PlayerInfo[playerid][pAdmin] == 99999)
  48. {
  49. szMiscArray[0] = 0;
  50. if(PlayerInfo[id][pStaffBanned] == 0)
  51. {
  52. PlayerInfo[id][pStaffBanned] = 1;
  53. format(szMiscArray, 256, "You have been staff banned by %s, reason: %s", GetPlayerNameEx(playerid), reason);
  54. SendClientMessage(id, COLOR_LIGHTRED, szMiscArray);
  55. PlayerInfo[id][pAdmin] = 0;
  56. PlayerInfo[id][pSMod] = 0;
  57. PlayerInfo[id][pVIPMod] = 0;
  58. PlayerInfo[id][pHelper] = 0;
  59. format(szMiscArray, sizeof(szMiscArray), "{AA3333}AdmWarning{FFFF00}: %s (ID %d) has been staff banned by %s, reason: %s.", GetPlayerNameEx(id), id, GetPlayerNameEx(playerid), reason);
  60. }
  61. else
  62. {
  63. PlayerInfo[id][pStaffBanned] = 0;
  64. format(szMiscArray, 256, "Your staff ban was removed by %s, reason: %s", GetPlayerNameEx(playerid), reason);
  65. SendClientMessage(id, COLOR_LIGHTRED, szMiscArray);
  66. format(szMiscArray, sizeof(szMiscArray), "{AA3333}AdmWarning{FFFF00}: %s (ID %d) has had their staff banned removed by %s, reason: %s.", GetPlayerNameEx(id), id, GetPlayerNameEx(playerid), reason);
  67. }
  68. ABroadCast(COLOR_YELLOW, szMiscArray, 4);
  69. Log("logs/staffban.log", szMiscArray);
  70. }
  71. else return SendClientMessage(playerid, COLOR_WHITE, "You cannot do this to an equal or higher level administrator!");
  72. }
  73. else return SendClientMessage(playerid, COLOR_WHITE, "That player is not connected!");
  74. }
  75. }
  76. else return SendClientMessage(playerid, COLOR_WHITE, "You are not authorized to preform this command!");
  77. return 1;
  78. }
  79. CMD:staffbans(playerid, params[])
  80. {
  81. if(PlayerInfo[playerid][pAdmin] >= 1337 || PlayerInfo[playerid][pHR] > 1)
  82. {
  83. new staffbans;
  84. szMiscArray[0] = 0;
  85. SendClientMessage(playerid, COLOR_WHITE, "-------------------------------------------------------------");
  86. for(new i; i < GetPlayerPoolSize(); i++)
  87. {
  88. if(PlayerInfo[i][pStaffBanned] >= 1)
  89. {
  90. format(szMiscArray, 256, "Username: %s | Reason: %s");
  91. SendClientMessage(playerid, COLOR_GREY, szMiscArray);
  92. staffbans++;
  93. }
  94. }
  95. if(staffbans == 0) SendClientMessage(playerid, COLOR_GREY, "There is nobody online currently serving an active staff ban.");
  96. SendClientMessage(playerid, COLOR_WHITE, "-------------------------------------------------------------");
  97. }
  98. else return SendClientMessage(playerid, COLOR_WHITE, "You are not authorized to preform this command!");
  99. return 1;
  100. }
  101. CMD:ostaffban(playerid, params[])
  102. {
  103. if(PlayerInfo[playerid][pAdmin] >= 1337 || PlayerInfo[playerid][pHR] > 1)
  104. {
  105. new username[16];
  106. if(sscanf(params, "s[16]", username))
  107. {
  108. return SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /ostaffban [username]");
  109. }
  110. else
  111. {
  112. if(IsPlayerConnected(ReturnUser(username))) return SendClientMessageEx(playerid, COLOR_GREY, "That player is currently connected, use /staffban.");
  113. mysql_escape_string(params, username);
  114. SetPVarString(playerid, "OnStaffBan", username);
  115. format(szMiscArray,sizeof(szMiscArray),"UPDATE `accounts` SET `AdminLevel` = 0, `HR` = 0, `AP` = 0, `Security` = 0, `ShopTech` = 0, `FactionModerator` = 0, `GangModerator` = 0, \
  116. `Undercover` = 0, `BanAppealer` = 0, `Helper` = 0, `pVIPMod` = 0, `SecureIP` = '0.0.0.0', `SeniorModerator` = 0, `BanAppealer` = 0, `ShopTech` = 0, `StaffBanned` = 1 WHERE `Username`= '%s' AND `AdminLevel` < %d AND `StaffBanned` = 0", username, PlayerInfo[playerid][pAdmin]);
  117. mysql_tquery(MainPipeline, szMiscArray, false, "OnStaffBan", "ii", playerid, 1);
  118. format(szMiscArray, sizeof(szMiscArray), "Attempting to staff ban %s's account.", username);
  119. SendClientMessageEx(playerid, COLOR_YELLOW, szMiscArray);
  120. }
  121. }
  122. else return SendClientMessage(playerid, COLOR_WHITE, "You are not authorized to preform this command!");
  123. return 1;
  124. }
  125. CMD:ounstaffban(playerid, params[])
  126. {
  127. if(PlayerInfo[playerid][pAdmin] >= 1337 || PlayerInfo[playerid][pHR] > 1)
  128. {
  129. new username[16];
  130. if(sscanf(params, "s[16]", username))
  131. {
  132. return SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /ounstaffban [username]");
  133. }
  134. else
  135. {
  136. if(IsPlayerConnected(ReturnUser(username))) return SendClientMessageEx(playerid, COLOR_GREY, "That player is currently connected, use /staffban.");
  137. mysql_escape_string(params, username);
  138. SetPVarString(playerid, "OnStaffBan", username);
  139. format(szMiscArray,sizeof(szMiscArray),"UPDATE `accounts` SET `StaffBanned` = 0 WHERE `Username`= '%s'", username, PlayerInfo[playerid][pAdmin]);
  140. mysql_tquery(MainPipeline, szMiscArray, false, "OnStaffBan", "ii", playerid, 0);
  141. format(szMiscArray, sizeof(szMiscArray), "Attempting to remove the staff ban from %s's account.", username);
  142. SendClientMessageEx(playerid, COLOR_YELLOW, szMiscArray);
  143. }
  144. }
  145. else return SendClientMessage(playerid, COLOR_WHITE, "You are not authorized to preform this command!");
  146. return 1;
  147. }
  148. forward OnStaffBan(index, value);
  149. public OnStaffBan(index, value)
  150. {
  151. print("test");
  152. new string[128], name[24];
  153. GetPVarString(index, "OnStaffBan", name, 24);
  154. if(mysql_affected_rows(MainPipeline)) {
  155. format(string, sizeof(string), "You have successfully %s %s's account.", ((value) ? ("staff banned") : ("removed the staff ban from")), name);
  156. SendClientMessageEx(index, COLOR_WHITE, string);
  157. format(string, sizeof(string), "AdmCmd: %s has had their %s offline by %s.", name, ((value) ? ("account staff banned") : ("staff ban removed")), GetPlayerNameEx(index));
  158. Log("logs/staffban.log", string);
  159. }
  160. else {
  161. format(string, sizeof(string), "There was an issue with %s %s's account.", ((value) ? ("staff banning") : ("removing the staff ban from")), name);
  162. SendClientMessageEx(index, COLOR_WHITE, string);
  163. }
  164. DeletePVar(index, "OnStaffBan");
  165. return 1;
  166. }