SHARE
TWEET

Untitled

a guest Jan 28th, 2020 80 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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;
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top