Question

publics UpdateTime(playerid)
{
	if(player[playerid][pMute] != 0) player[playerid][pMute] -= 1;
	if(player[playerid][pMute] == 1) SendClientMessage(playerid, COLOR_BLUE, "Доступ в чат разблокирован! Больше не нарушайте правила сервера :)");
}
stock Timers()
{
	SetTimer("UpdateTime", 1000, 1);
}

Не работает данный таймер, т. е при выдаче мута, в массив игрока pMute записываются секунды, а с данным таймером они не отнимаются из массива.
Помогите решить проблему.

Share this post


Link to post

2 answers to this question

  • 0
Если честно, лучше переделать вашу систему на новую.
Мое предложение заключается вот в чём:
В массив player
добавить pMuteTime
Вместо pMute, объявить bool:pMute

Далее переделать сам таймер.


forward UpdateTime(playerid);
public UpdateTime(playerid)
{
    if(player[playerid][pMute] == true)
    {
        if(player[playerid][pMuteTime] != 0) player[playerid][pMuteTime] --; // Проверяем, если у игрока время на снятие мута не стоит 0, отнимаем время
        else if(player[playerid][pMuteTime] == 0) OnPlayerUnMute(playerid);// Если время мута достигло 0, снимаем мут.
    }
} 

 
stock OnPlayerUnMute(playerid)
{
    player[playerid][pMute] = false;
    player[playerid][pMuteTime] = 0;
    SendClientMessage(playerid, COLOR_BLUE, "Доступ в чат разблокирован! Больше не нарушайте правила сервера :)");
    return 1;
}
Далее нужно отредактировать саму команду:

CMD:mute(playerid, params[])
{
    if(sscanf(params, "ud", params[0], params[1])) return SendClientMessage(playerid, -1, "Введите команду: /mute [id] [секунд]");
    if(PI[params[0]][pMuted] == true) return SendClientMessage(playerid, -1, "У игрока уже есть мут");
    if(params[1] > 2400 || params[1] < 1) return SendClientMessage(playerid, -1, "Слишком много секунд");
    PI[params[0]][pMuteTime] = params[1];
    PI[params[0]][pMuted] = true;
    SendClientMessage(params[0], -1, "Вам выдали мут");
    return 1;
}

 

Думаю смысл сам по себе ясен. Ибо то что я увидел у Вас, к сожалению не имеет логической цепи.

 

Edited by Lionely

Share this post


Link to post
  • 0

@Lionely 

forward UpdateTime(playerid);
public UpdateTime(playerid)
{
    if(player[playerid][pMute] == true)
    {
      	player[playerid][pMuteTime] == 0 ? OnPlayerUnMute(playerid) : player[playerid][pMuteTime]--;
    }
} 

Вот так будет проще.

Edited by SCRIPTMAN

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

    • JAFAR
      By JAFAR
      Удалил полностью все объекты с города Батырево
      вы спросите зачем я это сделал?
      Я вам отвечу я хотел удалить все города с карты CRMP но затея не оправдала себя
      так как я хотел сделать единый город с 0 на crmp 0.3e ну потом я подумал и решил бросить затею
      так как это долго и нудно и смысл не вижу дальше продолжать!
       
      Если хотите что бы я продолжил делать дело с вас Like.
      Скриншоты проделанной работы:
       
      Желаю вам удачи!
      Удалённый батырево.txt
    • Jadyn Allen
      By Jadyn Allen
      Всем привет! Купил Мод Moscow RolePlay, поставил на хост, захожу и тут бац! Пишет что подключился и сразу выкидывает с сервера с переподключением с ошибкой LШ connection to the server. Reconnecting crmp. Кто сможет помочь буду благодарен