Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "uploaded/YSI/YSI_Coding\y_hooks"
- #define ALOGIN 13 // -> indexes
- new Iterator: logged_admins<50>;
- #define HELPER_COMMAND 1
- #define JUNIORADMIN_COMMAND 2
- #define ADMIN_COMMAND 3
- #define SENIORADMIN_COMMAND 4
- #define FOUNDER_COMMAND 5
- stock LoadAdminPanel(playerid) {
- return 1;
- }
- stock CheckAdminCodeCorrectness(playerid, inputtext[]) {
- new code[4] = GetPVarString(playerid, "admin_code");
- DeletePVar(playerid, "admin_code");
- if (strcmp(code, inputtext)) {
- SendInfoMessage(playerid, "Вы неправильно ввели админ-код.");
- SetPVarString(playerid, "alogin_attempts", GetPVarString(playerid, "alogin_attempts") + 1);
- if (GetPVarString(playerid, "alogin_attempts") == 3)
- return BanUser(playerid, 1, -1, "Неверный код при авторизации в /apanel"); // BanUser(playerid, days, by_who, reason[]);
- SetPVarInt(playerid, "alogin_time", gettime() + (15 * 60 * 1000));
- new text[64];
- format(text, sizeof(text), "Администратор %s неправильно ввёл админ-код.", U_LOGIN);
- return SendAdminAlert(text);
- }
- return LoadAdminPanel(playerid);
- }
- hook PlayerUpdate(playerid) {
- if (IsAdmin(playerid)
- if (GetPVarInt(playerid, "alogin_time") < gettime()) // && GetPVarInt(playerid, "alogin_time"))
- DeletePVar(playerid, "alogin_attempts");
- return 1;
- }
- flags:apanel(ADMIN_COMMAND);
- cmd:apanel(playerid) {
- new query[128];
- format(query, sizeof(query), "SELECT `code` FROM `admin_panel` WHERE `user_id` = %i", UID);
- mysql_query(DB, query);
- new code[6];
- cache_get_value_name(0, "code", code);
- new random_array[4];
- for (new i = 0; i < 4; ++i)
- random_array[i] = random(strlen(code));
- new code_string[14];
- 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);
- new answer[4] = "";
- for (new i = 0; i < 4; ++i)
- strcat(answer, code[random_array[i]]);
- SetPVarString(playerid, "admin_code", answer);
- new dialog[256] = "{757575}// {FFFFFF}Админ-панель.\n\nВведите 4 символа из админ-кода в заданном ниже порядке (порядке номеров символов в слове).\n\n";
- strcat(dialog, code_string);
- return ShowPlayerDialog(playerid, ALOGIN, DIALOG_STYLE_PASSWORD, dialog, "»", "X");
- stock SendAdminMessage(message[]) {
- foreach (new targetid: logged_admins)
- SendClientMessage(targetid, COLOR_LIGHTYELLOW, message);
- return 1;
- }
- flags:achat(JUNIORADMIN_COMMAND);
- cmd:achat(playerid, data[]) {
- extract data -> new string: text[128]; else
- return SendMessageFormat(playerid, "/achat <сообщение>.");
- new message[256];
- format(message, sizeof(message), "%s (%i): %s", U_LOGIN, playerid, text);
- message = OOCMessage(message);
- return SendAdminMessage(message);
- }
- stock BanUser(playerid, days, by_who, reason[]) {
- if (users[playerid][ADMIN_LEVEL] >= users[by_who][ADMIN_LEVEL])
- return 0;
- new days_string[5];
- switch (days % 10) {
- case 1:
- days_string = " день";
- case 2..4:
- days_string = " дня";
- case 5..9, 0:
- days_string = " дней";
- default:
- days_string = "всегда";
- }
- new message[128];
- format(message, sizeof(message), "Администратор %s заблокировал %s (%i) на%s. Причина: %s.", (by_who == -1 ? "«SERVER»" : GetPlayerName(by_who)), GetPlayerName(playerid), playerid, days_string, reason);
- return Kick(playerid);
- }
- flags:ban(ADMIN_COMMAND);
- cmd:ban(playerid, data[]) {
- extract data -> new player: targetid, days, string: reason; else
- return SendMessageFormat(playerid, "/ban <ID/никнейм> <дни> <причина>.");
- if (!IsPlayerConnected(targetid) || playerid == targetid)
- return InvalidPlayerID(playerid);
- return BanUser(targetid, days, targetid, reason);
- }
- flags:unban(SENIORADMIN_COMMAND);
- cmd:unban(playerid, data[]) {
- extract data -> new string: nickname; else
- return SendMessageFormat(playerid, nickname);
- return 1; // доделать;
- }
- flags:kick(JUNIORADMIN_COMMAND);
- cmd:kick(playerid, data[]) {
- extract data -> new player: targetid; else
- return SendCommandFormat(playerid, "/kick <ID/никнейм>.");
- if (!IsPlayerConnected(targetid) || playerid == targetid)
- return InvalidPlayerID(playerid);
- new admin_message[128];
- format(admin_message, sizeof(admin_message), "%s (%i) был отключён от сервера администратором %s.", c
- new message[128];
- format(message, sizeof(message), "Вы были отключены от сервера администратором %s. Используйте /q(uit) для выхода.", U_NAME);
- return Kick(playerid, message);
- }
- flags:slap(JUNIORADMIN_COMMAND);
- cmd:slap(playerid, data[]) {
- extract data -> new targetid; else
- return SendMessageFormat(playerid, "/slap <ID/никнейм>.");
- if (!IsPlayerConnected(targetid))
- return InvalidPlayerID(playerid);
- new Float: x, Float: y, Float: z, Float: angle;
- GetPlayerPos(targetid, x, y, z);
- GetPlayerFacingAngle(targetid, angle);
- SetPlayerPos(targetid, x, y, z + 5);
- SetPlayerFacingAngle(targetid, angle);
- return 1;
- }
- flags:gethere(ADMIN_COMMAND);
- cmd:gethere(playerid, data[]) {
- extract data -> new targetid; else
- return SendCommandFormat(playerid, "/gethere <ID/никнейм>.");
- if (!IsPlayerConnected(targetid) || playerid == targetid)
- return InvalidPlayerID(playerid);
- new Float: x, Float: y, Float: z, Float: angle;
- GetPlayerPos(playerid, x, y, z);
- SetPlayerPos(targetid, x, y, z + 5);
- return 1;
- }
- flags:cometo(ADMIN_COMMAND);
- cmd:cometo(playerid, data[]) {
- extract data -> new targetid; else
- return SendCommandFormat(playerid, "/gethere <ID/никнейм>.");
- if (!IsPlayerConnected(targetid) || playerid == targetid)
- return InvalidPlayerID(playerid);
- new Float: x, Float: y, Float: z, Float: angle;
- GetPlayerPos(targetid, x, y, z);
- SetPlayerPos(playerid, x, y, z + 5);
- return 1;
- }
- hook OnDialogResponse() {
- switch(dialogid) {
- case ALOGIN:
- return (response) ? CheckAdminCodeCorrectness(playerid, inputtext) : 1;
- }
- }
- hook OnCommandReceived(playerid, cmd[], params[], flags) {
- if (flags > users[playerid][ADMIN_LEVEL]) {
- SendInfoMessage(playerid, "Неизвестная команда. Используйте /help чтобы увидеть их список.", false);
- return 0;
- }
- return 1;
- }
- // -> systems/apanel.pwn;
- forward OnCommandReceived(playerid, cmd[], params[], flags);
- public OnCommandReceived(playerid, cmd[], params[], flags) {
- return 1;
- }
- forward OnCommandPerformed(playerid, cmd[], params[], result, flags);
- public OnCommandPerformed(playerid, cmd[], params[], result, flags) {
- if (result == -1)
- return SendInfoMessage(playerid, "Неизвестная команда. Используйте /help чтобы увидеть их список.", false);
- return 1;
- }
- public OnPlayerCommandReceived(playerid, cmd[], params[], flags) {
- return OnCommandReceived(playerid, cmd, params, flags);
- }
- public OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags) {
- return OnCommandPerformed(playerid, cmd, params, result, flags);
- }
- // -> core;
- // delete core/chat.pwn;
- // rename "main_commands" -> "commands";
- if (!is_logged[playerid])
- return 0;
- ...
- return 0;
- // -> systems/chat.pwn;
- Kick(playerid);
- return 0;
- // -> anti-cheat/main.pwn;
- hook OnPlayerText(playerid, text[]) {
- ++ac_flood[playerid];
- if (ac_flood[playerid] == MAX_AC_FLOOD)
- return AC_Kick(playerid, AC_FLOOD_CODE);
- if (ac_flood[playerid] > 1) {
- if (is_logged[playerid])
- SendInfoMessage(playerid, "Вы не можете использовать команды/чат так часто.");
- return 0;
- }
- return 0;
- }
- hook OnCommandReceived(playerid, cmd[], params[], flags) {
- ++ac_flood[playerid];
- if (ac_flood[playerid] == MAX_AC_FLOOD)
- return AC_Kick(playerid, AC_FLOOD_CODE);
- if (ac_flood[playerid] > 1) {
- if (is_logged[playerid])
- SendInfoMessage(playerid, "Вы не можете использовать команды/чат так часто.");
- return 0;
- }
- return 1;
- }
- hook PlayerUpdate(playerid) {
- return ac_flood[playerid] = 0;
- }
- // -> anti-cheat/anti-flood.pwn;
- if (time + (12 * 60 * 60) < gettime())
- spawn_number = DEFAULT_SPAWN;
- // -> systems/authorization.pwn;
- stock GetFormatStringWithWrap(playerid, text[]) {
- new result[256] = "";
- strcat(result, TakePrefix(text));
- strcat(result, '\n');
- strcat(result, TakePostfix(text));
- return result;
- }
- // -> core/interceptions.pwn;
- cmd:skin(playerid, data[]) {
- extract data -> new skinid; else
- return SendMessageFormat(playerid, "/skin <ID>.");
- SetPlayerSkin(playerid, skinid);
- new query[128];
- format(query, sizeof(query), "UPDATE `characters` SET `skin` = %i WHERE `character_id` = %i", skinid, CID);
- mysql_query(DB, query);
- return 1;
- }
- // -> systems/commands.pwn;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement