Sign in to follow this  
Followers 0
Sleash

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

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

    • ismailov
      By ismailov
      Привет! Что делать, если игрока выкинули из машины? как сделать так, чтобы не выкидывало из машины? из-за NOP выкидывает человека из машины. Если заменить на PutPlayerInVehicle, такая тема все равно будет.


    • YoungKaiser
      By YoungKaiser
      При заходе на сервер, не доходя до авторизации крашит

      Логи: 
      [21:02:24] Number of vehicle models: 0 [21:03:29] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:30] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:30] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:32] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:32] [connection] 188.233.12.12:47928 requests connection cookie. [21:03:32] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:32] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:33] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:33] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:33] [connection] incoming connection: 188.233.12.12:47928 id: 0 [21:03:33] [sv:dbg:network:connect] : connecting player (0) with address (188.233.12.12) ... [21:03:33] [sv:dbg:network:connect] : player (0) assigned key (c0ce9bc6330e042) [21:03:33] [join] Young_Kaiser has joined the server (0:188.233.12.12) [21:03:33] LoadMapping загрузился за 5 ms [21:03:33] CreateObject всего: 65535 [21:03:33] [sv:dbg:network:receive] : player (0) identified (port:48086) [21:03:34] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:35] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:35] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:35] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:35] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:36] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:36] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:37] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:37] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:37] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:38] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:38] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:41] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:41] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:41] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:41] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:41] Error occured processing incomming packet: DecodingError(OrderingGuarantee) [21:03:51] [sv:dbg:network:connect] : disconnecting player (0) ... [21:03:51] [part] Young_Kaiser has left the server (0:0)