Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Затычка!

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

LaD

Новичок
Здравствуйте!

Предоставляю вашему вниманию систему затычки, в ее общей проблемой!
Ко всем new:
PHP:
new Mute[MAX_PLAYERS];
В паблик OnPlayerCommandText:
PHP:
if(strcmp(cmd, "/mute", true) == 0)
{
	if(PlayerInfo[playerid][ADM] > 2)
	{
     	tmp = strtok(cmdtext, idx);
     	//new id = strval(tmp);
   	 	if(IsPlayerConnected(strval(tmp)) && !IsPlayerNPC(strval(tmp)))
  		{
   			tmp = strtok(cmdtext, idx);
	     	new time = strval(tmp);
  			if(GetPVarInt (playerid, "Mute" ) > gettime()) {
			format(string,sizeof(string),"Внимание! {ffffff}Чтобы снова использовать {00ff00}/mute {ffffff}подождите {ff9d00}%d секунд",GetPVarInt(playerid,"Mute")-gettime(),(GetPVarInt(playerid,"Mute")-gettime())/7);
			return SendClientMessage(playerid,0xFF0000FF,string); }
			SetPVarInt( playerid, "Mute", gettime() + 7*1 ) ;
			if(PlayerInfo[playerid][ADM] < PlayerInfo[strval(tmp)][ADM] || (PlayerInfo[strval(tmp)][ADM] == 4 && strval(tmp) != playerid)) return SendClientMessage(playerid,0xFF6347FF,"Неразрешено делать затычку: Модераторам 4 лвл, Администраторам 5 лвл!");
	     	//if(!strlen(cmdtext[idx])) return SendClientMessage(playerid, LIGHT_RED, "/Mute [id][время] [причина]");
	     	//if(!strlen(tmp) || !IsPlayerConnected(id)) return SendClientMessage(playerid, LIGHT_RED, "/Mute [id][время] [причина]");
	     	if(!strlen(tmp)) return SendClientMessage(playerid, LIGHT_RED, "/Mute [id] [время] [причина]");
			format(string, sizeof(string), "%s использовал MUTE", PlayerInfo[playerid][PrName]);
			format(str10, sizeof(str10), "\"Админ\" {ffffff}%s {0077ff}сделал затычку {c0c0c0}%s {0077ff}на {ffffff}%d(минут). Причина: %s", PlayerInfo[playerid][PrName], PlayerInfo[strval(tmp)][PrName], time, cmdtext[idx]);
			for(new i = 0; i < MAX_PLAYERS; i++)
			{
				if(!IsPlayerConnected(i)) { continue; }
				if(PlayerInfo[i][ADM] > 0)
				{
					SendClientMessage(i, 0x0077FFAA, string);
					SendClientMessage(i, 0x0077FFAA, str10);
				}
			}
		 	format(string, sizeof(string), "Вы сделали затычку %s на %d(минут)! Причина: %s", PlayerInfo[playerid][PrName], time, cmdtext[idx]);  //собщение нам
	     	SendClientMessage(playerid, RED, string);
	     	format(string, sizeof(string), "%s! Вам сделал ЗАТЫЧКУ \"Админ\" %s на %d(минут)! {00ff00}Причина: %s", PlayerInfo[strval(tmp)][PrName], PlayerInfo[playerid][PrName], time, cmdtext[idx]); //собщение заткнутому
	     	SendClientMessage(strval(tmp), RED, string);
	     	Mute[strval(tmp)] = time*60;
  		}
		else SendClientMessage(playerid,0xFF6347FF,"Игрока нет в сети!");
	}
	else SendClientMessage(playerid,0xFF6347FF,"Недостаточный LVL \"админки\", необходим 3 уровень!");
	return 1;
}
В паблик OnPlayerText:
PHP:
if(Mute[playerid] != 0)
{
    format(string, sizeof(string), "У вас затычка, прежде чем написать, подождите %d(сек)",Mute[playerid]);
	SendClientMessage(playerid, 0xFF6347AA, string);
	return 0;
}
Делаем таймер в паблик OnGameModeInit():
PHP:
SetTimer("MuteTimer", 1000, 1);
Паблик таймера, цикл завершения:
PHP:
forward MuteTimer();
public MuteTimer()
{
	for(new i = 0; i < MAX_PLAYERS; i++)//цикл
	{
		if(Mute[i] > 0)//если мут больше нуля секунд
		{
			Mute[i] --;//отнимаем мут на 1
			if(Mute[i] == 0)//если мут равно одному
			SendClientMessage(i,RED,"Внимание! Затычка снята! Теперь вы можете писать в чат");//выдаем сообщение
			//SendClientMessage(i,LIGHT_RED,"Во избежания затычки от \"Админов\", не нарушайте {00ff00}/Правила");//выдаем сообщение
		}
	}
	return 1;
}
Помогите исправить проблему, после ввода админа команды ставим игроку затычку. Блокируем игроку ввод сообщений в общий чат с предупреждением "У вас затычка..."

Пока что получается так: делаем затычку, срабатывает таймер, после ввода сообщения в чат игроку даем предупреждение, НО все равно осуществляется ввод сообщений, т.к. есть в паблике с текстом:
PHP:
format(string, sizeof(string), "%s", text);
SendPlayerMessageToAll(playerid, string);
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу