• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

/mute с задержкой

Статус
В этой теме нельзя размещать новые ответы.

Woxer

Изучающий
Пользователь
Регистрация
5 Июн 2019
Сообщения
372
Лучшие ответы
2
Репутация
60
Написал команду /mute, работающую на таймере.

Выдаю себе мут на 1 минуту, включаю /timestamp для того, чтобы отследить точное время и разница во времени между выдачей наказания и его снятием равна 1 минуте и 2 секундам. После чего выдаю наказание на 3 минуты - разница уже 1 мин и 8 секунд, на 5 минут - 1 мин 12 секунд. С чем может быть связана данная проблема и как её пофиксить? Код команды ниже:

PHP:
cmd:mute(playerid, params[])
{
	if(Player[params[0]][pMute] <= 0)
	{
		Player[params[0]][pMute] = params[1]*60;
		strmid(Player[params[0]][pMuteReason], params[2], 0, strlen(params[2]), 64);
		new string[62 + MAX_PLAYER_NAME * 2 + 3 + 80];
		format(string, sizeof(string), "Администратор %s заблокировал чат игрока %s на %d мин. Причина: %s", Player[playerid][pCurrentAdminNick], Player[params[0]][pName], params[1], params[2]);
		SendClientMessageToAll(COLOR_LIGHTRED, string);
		Muted(params[0], 1);
	}
	else 
		SendClientMessage(playerid, COLOR_LIGHTRED, "У игрока уже имеется бан чата.");
	return 1;
}
PHP:
stock Muted(playerid, type)
{
	switch(type)
	{
	    case 1:
	 	{
 			SendClientMessage(playerid, COLOR_LIGHTRED, "Возможность писать в чат временно заблокирована.");
			SetPlayerChatBubble(playerid, "Блокировка чата", COLOR_WHITE, 20.0, 5000);
		}
		case 2:
	 	{
 			SendClientMessage(playerid, COLOR_LIGHTRED, "Возможность писать в OOC чат временно заблокирована.");
		}
	}
	return 1;
}
В OnGameModeInit:

PHP:
onesecondtimer = SetTimer("OneSecondTimer", 1000, 1);
OneSecondTimer:

PHP:
public OneSecondTimer()
{
	foreach(Player, i)
	{
		if(Player[i][pMute] > 0)
		{
			Player[i][pMute]--;
			if(Player[i][pMute] <= 0)
			{
				Player[i][pMute] = 0;
				SendClientMessage(i, COLOR_GREEN, "Бан чата был снят.");
				new qwery[54 + 64 +  MAX_PLAYER_NAME];
				format(qwery,sizeof(qwery),"UPDATE `accounts` SET `MuteReason`='%s' WHERE `Name`='%s'","", Player[i][pName]);
				mysql_tquery(dbHandle, qwery);
				continue;
			}
		}
	}
}
В OnGameModeExit:

PHP:
KillTimer(onesecondtimer);
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу