Question

Снова я. Проблема с /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

@Покемон 

forward GameModeExitDelay();
public GameModeExitDelay()
{
	GameModeExit();
}

 

Share this post


Link to post
  • 0
Спойлер

{
        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 Замени 

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

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

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

Share this post


Link to post
  • 0

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

Share this post


Link to post
  • 0

Покажи GameModeExitDelay

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

    • August_Rothschild
      By August_Rothschild
      Всем привет , как заменять анимации в игре ? Имеется ввиду анимации танцев , как прочесть файлы с анимациями или как заменять определенную анимацию