Переключение названия и динамического названия сервера

В теме 1 сообщение

Sleash
Завсегдатый

Всем привет! На днях от "нечего делать" написал команду для изменения названия сервера, делать его динамическим с указанным вами интервалом, не буду многословить, приступаем сразу к коду:

// Для начала все объявления/переменные в начало мода
#define CREATER_ADMIN 15 // Уровень админки, с которого хотите разрешить доступ к команде
#define SERVER_NAME_DIALOG 1937
forward server_name(playerid);
new server_name_timer, servernamestring[256], servername[3][50], server_name_id, server_name_interval;

После всех объявлений, сразу приступим к команде (dc_cmd/zcmd/Pawn.CMD + sscanf):

CMD:setservername(playeid, params[]) {
    if(PlayerInfo[playrid][pAdmin] < CREATER_ADMIN) return false// Не забываем заменять на свои переменные
    if(sscanf(params, "dds[50]", params[0], params[1], params[2])) {
        SendClientMessage(playerid, 0x696969FF"/setservername [mode] [interval] [name]");
        SendClientMessage(playerid, 0x696969FF"Режим 1 - Название меняется с указанным интервалом (в секундах)");
        SendClientMessage(playerid, 0x696969FF"Режим 2 - Название не меняется, пока не сменят режим на другой");
        return false;
    }
    if(params[0] != 2 && params[0] != 1return SendClientMessage(playerid, 0x800000FF"Неверно указан режим!");
    if(params[1] < 1 && params[0] == 1return SendClientMessage(playerid, 0x800000FF"Нельзя поставить интервал меньше одной секунды!");
    if(params[0] == 2) {
        format(servernamestring, 128"hostname %s", params[2]);
        SendRconCommand(servernamestring);
        new nick[MAX_PLAYER_NAME];
        GetPlayerName(playerid,nick,MAX_PLAYER_NAME);
        format(servernamestring, 256"ADMIN %s CHANGED SERVER NAME ON %s (MODE 2)", nick, params[2]);
        server_name_id = -1;
        return 1;
    } else {
        ShowPlayerDialog(playerid, SERVER_NAME_DIALOG, DIALOG_STYLE_INPUT, "Второе название""Введите второе название сервера:""Ок""Отмена");
        strmid(servername[2], params[2], 0, strlen(params[2]), 50);
        server_name_interval = params[1]*1000;
    }
    return true;
}

следующий этап: Добавление диалогового окна:

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == SERVER_NAME_DIALOG) {
        if(!response) return false;
        if(!strlen(inputtext)) return ShowPlayerDialog(playerid, SERVER_NAME_DIALOG, DIALOG_STYLE_INPUT, "Второе название""Введите второе название сервера:""Ок""Отмена");
        if(strlen(inputtext) > 50return ShowPlayerDialog(playerid, SERVER_NAME_DIALOG, DIALOG_STYLE_INPUT, "Второе название""Слишком длинное название!\nВведите второе название сервера:""Ок""Отмена");
        strmid(servername[0], inputtext, 0, strlen(inputtext), 50);
        strmid(servername[1], servername[2], 0, strlen(servername[2]), 50);
        server_name_id = 0;
        new nick[MAX_PLAYER_NAME];
        GetPlayerName(playerid,nick,MAX_PLAYER_NAME);
        format(servernamestring, 256"ADMIN %s CHANGED SERVER NAME ON %s AND %s (MODE 1)", nick, servername[0], servername[1]);
        server_name_timer = SetTimerEx("server_name"1, server_name_interval, "d", playerid);
    }
    return 1
}

Завершающим действием будет добавления нашего public server_name, о котором мы объявили в начале через forward:

public server_name(playerid)
{
    if(server_name_id == 0) {
        format(servernamestring, 128"hostname %s", servername[1]);
        SendRconCommand(servernamestring);
        server_name_id = 1;
    }
    else if(server_name_id == 1) {
        format(servernamestring, 128"hostname %s", servername[0]);
        SendRconCommand(servernamestring);
        server_name_id = 0;
    } else return KillTimer(server_name_timer);
}

На этом всё, команда несложная, но я всё же решил, что кому-то пригодится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • miroki
      От miroki
      Возможно ли как-то в pawno сделать темную тему?
    • Доналдо Фарекелка
      От Доналдо Фарекелка
      Приветствую, этот мод я нашёл на просторах интернета. 
      Скачал мод у автора:  Developer Stravinskiy.
      Доработал мод: Donaldo_Farekelka.
       
      Предупреждаю! Мод сырой, багов стало меньше, но они есть.
      Мод: Баня, Подвал, В некоторых местах маппинг, система коронавируса, 8 лвл админок.
       
      [01.11.2025] ВНИМАНИЕ! Не используйте бесплатные хостинги, если Вы не уверены в их работоспособности. Если запустили мод на бесплатном хостинге и он не работает, то просьба мне не писать! (Вина скорее всего, лежит на хостинге!). Исключение: dragon(Не реклама. Проверено на личном опыте).
      [29.11.2025] Спасибо! За 1000+ скачиваний. 
      [08.12.2025] ВНИМАНИЕ! Мод не рекомендуется к использованию для новичков. Мод признается старым.
      [16.02.2026] ВНИМАНИЕ! Если вы не умеете что-либо делать, то новичкам рекомендуется к изучению pawn роликов... книг(Например, PawnBook)... просмотр форумов на тему уроков. 
       
      Информация:
      1) Dc_Cmd
      2) Mysql, mode, language - Всё настраивается теперь в pawno ( UPDATE: 1.1.0 )
      3) Административные права в данный момент можно выдать через /amakeadmin(Смотреть уроки) или БД ( UPDATE: 1.2.2 ).

      Всё что я делаю сейчас, смотрите в изменениях.
      Что сделал:
       

      Как установить мод на хостинг(Чтобы больше не было вопросов в ЛС):
      RUTUBE: https://rutube.ru/video/private/f74276be05e090652ee46bcbe2b4e27d/?p=6tWFvG_lTFk4sHVaCjheZQ
      YOUTUBE: https://youtu.be/z07sJUAVQpI