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

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

Завсегдатый

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

// Для начала все объявления/переменные в начало мода
#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 пользователей онлайн

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

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

    • От DonK/Key
      Всем привет, помогите кто разбирается, так как я можно сказать начинающий сделать свой КРМП, буду благодарен. Напишите либо тут либо @evreI_sigma (Мой Telegram)
    • От OPCODERSSSS
      Прописал уже все инклуды,он мне все равно вот эту дрянь ну емае
       
       
      other.amx
      other.pwn
      hgsystem.amx