Question

Supreme
Новичок

Снова я. Проблема с /gmx решена. Осталась последняя просьба.

Нужно, чтобы за 5 секунд до момента отключения мода (перезагрузки), произошло сохранение аккаунтов + кик всех игроков. Я тут пытался с этим пошаманить - безуспешно. Так же, нужен текст (gametextforplayer), который будет обновляться. В тексте будет написано "Рестарт сервера через %d секунд", надпись по середине экрана. И, соответственно, по мере уменьшения времени, обновляется и этот текст, чтобы люди знали, сколько времени осталось до рестарта. С этим тоже пытался что-то сделать, но результат аналогичный. Ниже прикреплю код команды. Помогите, люди добрые.

CMD:gmx(playerid, params[])
{
    if(PI[playerid][pAdmin] < 8) return 1;
    else if(AdminLogged[playerid] == false) return SCM(playerid, COLOR_GREY, YouAreNotLoggedInAsAdmin);

    if(isnull(params)) return SCM(playerid, COLOR_WHITE, "• {66CC00}[ Подсказка ] {ffffff}Введите: /gmx [0 - 300 секунд]");
	new string[128];
    new sec;
    if(sscanf(params, "d", sec)) return SCM(playerid, COLOR_WHITE, "• {66CC00}[ Подсказка ] {ffffff}Введите: /gmx [0 - 300 секунд]");
    else if(!(5 <= sec <= 300) && sec != 0) return SCM(playerid, COLOR_WHITE, "Время от 5 до 300 секунд, либо 0");

    static timerid;
    if(sec == 0)
    {
        KillTimer(timerid);
        SendMesAll(COLOR_RED, "*ВНИМАНИЕ: %s отменил технический перезапуск сервера", AdminName(playerid));
    }
    else
    {
        timerid = SetTimer("GameModeExitDelay", 1000*sec, false);
		format(string, sizeof(string), "*ВНИМАНИЕ: %s запустил таймер на технический перезапуск сервера (%d сек)", AdminName(playerid), sec);
		SendClientMessageToAll(COLOR_RED, string);
		SaveAcc();
		SaveWarehouse();
    }
    return 1;
}

 

Share this post


Link to post

6 answers to this question

  • 0
archiboy6
Гуру форума
Спойлер

{
        timerid = SetTimer("GameModeExitDelay", 1000*sec, false);
		format(string, sizeof(string), "*ВНИМАНИЕ: %s запустил таймер на технический перезапуск сервера (%d сек)", AdminName(playerid), sec);
		SendClientMessageToAll(COLOR_RED, string);
                GameTextForPlayer(i,"~r~Осталось до рестарта %d сек", sec);
                if(sec == 5) 
                {
		SaveAcc();
		SaveWarehouse();
                Kick(playerid);
                }
    }

Не уверен что сработает, если что сорян))

Edited by archiboy6

Share this post


Link to post
  • 0
archiboy6
Гуру форума

@archiboy6 Замени 

GameTextForPlayer(i,"~r~Осталось до рестарта %d сек", sec);
    GameTextForPlayer(playerid,"~r~Осталось до рестарта %d сек", sec, 2, 3000);
    timerid = SetTimerEx("sec", 5000, false, "ii", playerid, sec-1);

 

Edited by archiboy6

Share this post


Link to post
  • 0
Cawfee
Великий Гуру

@archiboy6, нельзя так использовать функцию GameTextForPlayer.

Форматирование в этой функции не предусмотрено.

Share this post


Link to post
  • 0
Supreme
Новичок

@odosenok Я думаю, что что-то нужно в секундный таймер кидать. Напишите свой вариант кода?)

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Nimalin⁵²
      By Nimalin⁵²
      Всем привет. Я часто использую моды по типу: Adrenaline RP, Russia RP и подобный калл. И из этого говна по выкачке денег, я хотел сделать конфетку, но каждый раз падал лицом в грязь. Начинал я с организаций, так как по мне это самая важная часть на RP серверах. Я бывало хотел создать новую организацию, но не знал как. Полазив в Базе Данных, в моде, я не нашел, как же тут создать фракцию. Поэтому прошу помощи скиньте пожалуйста решение этой задачки.