Вопросы

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

 

Поделиться сообщением


Ссылка на сообщение

6 ответов на этот вопрос

  • 0

@Покемон 

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

 

Поделиться сообщением


Ссылка на сообщение
  • 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);
                }
    }

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

Отредактировано пользователем archiboy6

Поделиться сообщением


Ссылка на сообщение
  • 0

@archiboy6 Замени 

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

 

Отредактировано пользователем archiboy6

Поделиться сообщением


Ссылка на сообщение
  • 0

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

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

Поделиться сообщением


Ссылка на сообщение
  • 0

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

Поделиться сообщением


Ссылка на сообщение
  • 0

Покажи GameModeExitDelay

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

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

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

    • Доналдо Фарекелка
      От Доналдо Фарекелка


      Скачать файл Arizona RolePlay || Ser
      Приветствую, этот мод я нашёл на просторах интернета. 
      Скачал мод у автора:  Developer Stravinskiy
      Доработал мод: Donaldo_Farekelka
       
      Предупреждаю! Мод сырой, багов стало меньше, но они есть.
      Мод: Баня, Подвал, В некоторых местах маппинг, система коронавируса, 8 лвл админок
       
      Информация:
      1) Dc_Cmd
      2) Mysql, mode, language - Всё настраивается теперь в pawno ( UPDATE: 1.1.0 )
      3) Административные права в данный момент можно выдать только через MYSQL ( BD ).
       
      То что я сделал ( Всё что я делаю сейчас, смотрите в изменениях ):
       
      Добавил Доналдо Фарекелка Добавлено 13.04.2023 Категория Моды Автор shenol (vk.com/donaldo_farekelka)  
    • SheikhMAN
      От SheikhMAN
      Цель: Хочу сделать систему авторизации, нужно сделать чтобы шла проверка через mysql игрока т.е какой пароль у данного игрока так-же узнавался пароль, если данный пароль не совпадает тогда пишет что "Пароль не верен!"
      Что нужно сделать: Нашёл данный скрипт, помогите решить проблему (прикрепил файлик)
      new db_password[sizeof(player_info[playerid][S_PASSWORD])];     cache_get_field_content(0, "password", db_password, dbHandle);     new resultat = !strcmp(inputtext, db_password);     if(resultat) SCM(playerid, COLOR_WHITE, "Пароль верный!"), SpawnPlayer(playerid);     else SCM(playerid, COLOR_RED, "Не верный!"), ShowLogin(playerid);  Проблема находится в  -
      new db_password[sizeof(player_info[playerid][S_PASSWORD])]; Сама ошибка - 
      error 001: expected token: "]", but found "-identifier-" warning 215: expression has no effect error 001: expected token: ";", but found "]" error 029: invalid expression, assumed zero  fatal error 107: too many error messages on one line Коллеги прошу помощи, мне кажется здесь не столь так тяжело, возможно я устал мне нужен отдых, но очень хочу дописать скрипт.