Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.00 KB | None | 0 0
  1. #include "uploaded/YSI/YSI_Coding\y_hooks"
  2.  
  3. #define ALOGIN 13 // -> indexes
  4.  
  5. new Iterator: logged_admins<50>;
  6.  
  7. #define HELPER_COMMAND 1
  8. #define JUNIORADMIN_COMMAND 2
  9. #define ADMIN_COMMAND 3
  10. #define SENIORADMIN_COMMAND 4
  11. #define FOUNDER_COMMAND 5
  12.  
  13. stock LoadAdminPanel(playerid) {
  14. return 1;
  15. }
  16.  
  17. stock CheckAdminCodeCorrectness(playerid, inputtext[]) {
  18. new code[4] = GetPVarString(playerid, "admin_code");
  19. DeletePVar(playerid, "admin_code");
  20. if (strcmp(code, inputtext)) {
  21. SendInfoMessage(playerid, "Вы неправильно ввели админ-код.");
  22.  
  23. SetPVarString(playerid, "alogin_attempts", GetPVarString(playerid, "alogin_attempts") + 1);
  24. if (GetPVarString(playerid, "alogin_attempts") == 3)
  25. return BanUser(playerid, 1, -1, "Неверный код при авторизации в /apanel"); // BanUser(playerid, days, by_who, reason[]);
  26. SetPVarInt(playerid, "alogin_time", gettime() + (15 * 60 * 1000));
  27.  
  28. new text[64];
  29. format(text, sizeof(text), "Администратор %s неправильно ввёл админ-код.", U_LOGIN);
  30. return SendAdminAlert(text);
  31. }
  32. return LoadAdminPanel(playerid);
  33. }
  34.  
  35. hook PlayerUpdate(playerid) {
  36. if (IsAdmin(playerid)
  37. if (GetPVarInt(playerid, "alogin_time") < gettime()) // && GetPVarInt(playerid, "alogin_time"))
  38. DeletePVar(playerid, "alogin_attempts");
  39. return 1;
  40. }
  41.  
  42. flags:apanel(ADMIN_COMMAND);
  43. cmd:apanel(playerid) {
  44. new query[128];
  45. format(query, sizeof(query), "SELECT `code` FROM `admin_panel` WHERE `user_id` = %i", UID);
  46. mysql_query(DB, query);
  47. new code[6];
  48. cache_get_value_name(0, "code", code);
  49.  
  50. new random_array[4];
  51. for (new i = 0; i < 4; ++i)
  52. random_array[i] = random(strlen(code));
  53.  
  54. new code_string[14];
  55. format(code_string, sizeof(code_string), "%i – %i – %i – %i.", random_array[0] + 1, random_array[1] + 1, random_array[2] + 1, random_array[3] + 1);
  56.  
  57. new answer[4] = "";
  58. for (new i = 0; i < 4; ++i)
  59. strcat(answer, code[random_array[i]]);
  60. SetPVarString(playerid, "admin_code", answer);
  61.  
  62. new dialog[256] = "{757575}// {FFFFFF}Админ-панель.\n\nВведите 4 символа из админ-кода в заданном ниже порядке (порядке номеров символов в слове).\n\n";
  63. strcat(dialog, code_string);
  64. return ShowPlayerDialog(playerid, ALOGIN, DIALOG_STYLE_PASSWORD, dialog, "»", "X");
  65.  
  66. stock SendAdminMessage(message[]) {
  67. foreach (new targetid: logged_admins)
  68. SendClientMessage(targetid, COLOR_LIGHTYELLOW, message);
  69. return 1;
  70. }
  71.  
  72. flags:achat(JUNIORADMIN_COMMAND);
  73. cmd:achat(playerid, data[]) {
  74. extract data -> new string: text[128]; else
  75. return SendMessageFormat(playerid, "/achat <сообщение>.");
  76. new message[256];
  77. format(message, sizeof(message), "%s (%i): %s", U_LOGIN, playerid, text);
  78. message = OOCMessage(message);
  79. return SendAdminMessage(message);
  80. }
  81.  
  82. stock BanUser(playerid, days, by_who, reason[]) {
  83. if (users[playerid][ADMIN_LEVEL] >= users[by_who][ADMIN_LEVEL])
  84. return 0;
  85.  
  86. new days_string[5];
  87. switch (days % 10) {
  88. case 1:
  89. days_string = " день";
  90. case 2..4:
  91. days_string = " дня";
  92. case 5..9, 0:
  93. days_string = " дней";
  94.  
  95. default:
  96. days_string = "всегда";
  97. }
  98.  
  99. new message[128];
  100. format(message, sizeof(message), "Администратор %s заблокировал %s (%i) на%s. Причина: %s.", (by_who == -1 ? "«SERVER»" : GetPlayerName(by_who)), GetPlayerName(playerid), playerid, days_string, reason);
  101. return Kick(playerid);
  102. }
  103.  
  104. flags:ban(ADMIN_COMMAND);
  105. cmd:ban(playerid, data[]) {
  106. extract data -> new player: targetid, days, string: reason; else
  107. return SendMessageFormat(playerid, "/ban <ID/никнейм> <дни> <причина>.");
  108. if (!IsPlayerConnected(targetid) || playerid == targetid)
  109. return InvalidPlayerID(playerid);
  110. return BanUser(targetid, days, targetid, reason);
  111. }
  112.  
  113. flags:unban(SENIORADMIN_COMMAND);
  114. cmd:unban(playerid, data[]) {
  115. extract data -> new string: nickname; else
  116. return SendMessageFormat(playerid, nickname);
  117. return 1; // доделать;
  118. }
  119.  
  120. flags:kick(JUNIORADMIN_COMMAND);
  121. cmd:kick(playerid, data[]) {
  122. extract data -> new player: targetid; else
  123. return SendCommandFormat(playerid, "/kick <ID/никнейм>.");
  124. if (!IsPlayerConnected(targetid) || playerid == targetid)
  125. return InvalidPlayerID(playerid);
  126.  
  127. new admin_message[128];
  128. format(admin_message, sizeof(admin_message), "%s (%i) был отключён от сервера администратором %s.", c
  129.  
  130. new message[128];
  131. format(message, sizeof(message), "Вы были отключены от сервера администратором %s. Используйте /q(uit) для выхода.", U_NAME);
  132. return Kick(playerid, message);
  133. }
  134.  
  135. flags:slap(JUNIORADMIN_COMMAND);
  136. cmd:slap(playerid, data[]) {
  137. extract data -> new targetid; else
  138. return SendMessageFormat(playerid, "/slap <ID/никнейм>.");
  139. if (!IsPlayerConnected(targetid))
  140. return InvalidPlayerID(playerid);
  141. new Float: x, Float: y, Float: z, Float: angle;
  142. GetPlayerPos(targetid, x, y, z);
  143. GetPlayerFacingAngle(targetid, angle);
  144. SetPlayerPos(targetid, x, y, z + 5);
  145. SetPlayerFacingAngle(targetid, angle);
  146. return 1;
  147. }
  148.  
  149. flags:gethere(ADMIN_COMMAND);
  150. cmd:gethere(playerid, data[]) {
  151. extract data -> new targetid; else
  152. return SendCommandFormat(playerid, "/gethere <ID/никнейм>.");
  153. if (!IsPlayerConnected(targetid) || playerid == targetid)
  154. return InvalidPlayerID(playerid);
  155. new Float: x, Float: y, Float: z, Float: angle;
  156. GetPlayerPos(playerid, x, y, z);
  157. SetPlayerPos(targetid, x, y, z + 5);
  158. return 1;
  159. }
  160.  
  161. flags:cometo(ADMIN_COMMAND);
  162. cmd:cometo(playerid, data[]) {
  163. extract data -> new targetid; else
  164. return SendCommandFormat(playerid, "/gethere <ID/никнейм>.");
  165. if (!IsPlayerConnected(targetid) || playerid == targetid)
  166. return InvalidPlayerID(playerid);
  167. new Float: x, Float: y, Float: z, Float: angle;
  168. GetPlayerPos(targetid, x, y, z);
  169. SetPlayerPos(playerid, x, y, z + 5);
  170. return 1;
  171. }
  172.  
  173. hook OnDialogResponse() {
  174. switch(dialogid) {
  175. case ALOGIN:
  176. return (response) ? CheckAdminCodeCorrectness(playerid, inputtext) : 1;
  177. }
  178. }
  179.  
  180. hook OnCommandReceived(playerid, cmd[], params[], flags) {
  181. if (flags > users[playerid][ADMIN_LEVEL]) {
  182. SendInfoMessage(playerid, "Неизвестная команда. Используйте /help чтобы увидеть их список.", false);
  183. return 0;
  184. }
  185. return 1;
  186. }
  187.  
  188. // -> systems/apanel.pwn;
  189.  
  190. forward OnCommandReceived(playerid, cmd[], params[], flags);
  191. public OnCommandReceived(playerid, cmd[], params[], flags) {
  192. return 1;
  193. }
  194.  
  195. forward OnCommandPerformed(playerid, cmd[], params[], result, flags);
  196. public OnCommandPerformed(playerid, cmd[], params[], result, flags) {
  197. if (result == -1)
  198. return SendInfoMessage(playerid, "Неизвестная команда. Используйте /help чтобы увидеть их список.", false);
  199. return 1;
  200. }
  201.  
  202. public OnPlayerCommandReceived(playerid, cmd[], params[], flags) {
  203. return OnCommandReceived(playerid, cmd, params, flags);
  204. }
  205.  
  206. public OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags) {
  207. return OnCommandPerformed(playerid, cmd, params, result, flags);
  208. }
  209.  
  210. // -> core;
  211. // delete core/chat.pwn;
  212. // rename "main_commands" -> "commands";
  213.  
  214. if (!is_logged[playerid])
  215. return 0;
  216.  
  217. ...
  218.  
  219. return 0;
  220.  
  221. // -> systems/chat.pwn;
  222.  
  223. Kick(playerid);
  224. return 0;
  225.  
  226. // -> anti-cheat/main.pwn;
  227.  
  228. hook OnPlayerText(playerid, text[]) {
  229. ++ac_flood[playerid];
  230. if (ac_flood[playerid] == MAX_AC_FLOOD)
  231. return AC_Kick(playerid, AC_FLOOD_CODE);
  232. if (ac_flood[playerid] > 1) {
  233. if (is_logged[playerid])
  234. SendInfoMessage(playerid, "Вы не можете использовать команды/чат так часто.");
  235. return 0;
  236. }
  237. return 0;
  238. }
  239.  
  240. hook OnCommandReceived(playerid, cmd[], params[], flags) {
  241. ++ac_flood[playerid];
  242. if (ac_flood[playerid] == MAX_AC_FLOOD)
  243. return AC_Kick(playerid, AC_FLOOD_CODE);
  244. if (ac_flood[playerid] > 1) {
  245. if (is_logged[playerid])
  246. SendInfoMessage(playerid, "Вы не можете использовать команды/чат так часто.");
  247. return 0;
  248. }
  249. return 1;
  250. }
  251.  
  252. hook PlayerUpdate(playerid) {
  253. return ac_flood[playerid] = 0;
  254. }
  255.  
  256. // -> anti-cheat/anti-flood.pwn;
  257.  
  258. if (time + (12 * 60 * 60) < gettime())
  259. spawn_number = DEFAULT_SPAWN;
  260.  
  261. // -> systems/authorization.pwn;
  262.  
  263. stock GetFormatStringWithWrap(playerid, text[]) {
  264. new result[256] = "";
  265. strcat(result, TakePrefix(text));
  266. strcat(result, '\n');
  267. strcat(result, TakePostfix(text));
  268. return result;
  269. }
  270.  
  271. // -> core/interceptions.pwn;
  272.  
  273. cmd:skin(playerid, data[]) {
  274. extract data -> new skinid; else
  275. return SendMessageFormat(playerid, "/skin <ID>.");
  276. SetPlayerSkin(playerid, skinid);
  277. new query[128];
  278. format(query, sizeof(query), "UPDATE `characters` SET `skin` = %i WHERE `character_id` = %i", skinid, CID);
  279. mysql_query(DB, query);
  280. return 1;
  281. }
  282.  
  283. // -> systems/commands.pwn;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement