Sign in to follow this  
Followers 0
Sleash`en

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

1 post in this topic

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

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Brabus06
      By Brabus06
      Я захожу через сборку и у меня появляется такая ошибка:


    • z1pa228
      By z1pa228
      Какой плагин, за это отвечает и что нужно исправить ?


      [00:12:15] [debug] Run time error 19: "File or function is not found"
      [00:12:15] [debug]  IsVehicleOccupied
      [00:12:15] [debug]  SetPlayerGravity
      [00:12:15] [debug] Run time error 19: "File or function is not found"
      [00:12:15] [debug]  IsVehicleOccupied
      [00:12:15] [debug]  SetPlayerGravity
      [00:12:15] Script[gamemodes/new.amx]: Run time error 19: "File or function is not found"
      [00:12:15] Number of vehicle models: 0