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

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

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

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

Система кика с параметром

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

Vazovskui

Умник
Привет, как всем известно, в версии клиента начиная с 0.3x функция Kick выполняется с приоритетом, сразу появилось мого тем, предлагающих исправить проблему и перед киком вывести сообщение игроку, первые из появившихся тем мне не понравились, а более поздние я и читать не стал.
Сделал подобную систему под себя:

Результат работы:



PHP:
//Добавляем два Forward'a
forward KickPlayer(playerid, targetid, param, reason[]);
forward KickEX(targetid);
и паблики
PHP:
public KickPlayer(playerid, targetid, param, reason[])
{
	new string[512];
	if(IsPlayerConnected(targetid))
	{
	    if(param != 0)
	    {
			if(playerid < 0)
			{
		    	format(string, sizeof(string), "{FFFFFF}[А.С.К.]: {808000}Игрок: %s [ID:%d]{ffffff}был {ff0000}кикнут{ffffff}. Причина:{ffa500} %s", GetName(targetid), targetid, reason);
			}
			else
			{
			    format(string, sizeof(string), "{FFFFFF}Администратор %s[ID:%d] {ff0000}кикнул{ffffff} игрока {808000}%s[ID:%d].{FFFFFF} Причина:{ffa500} %s", GetName(playerid), playerid, GetName(targetid), targetid, reason);
			}
			SendClientMessageToAll(COLOR_WHITE, string);
		}
		if(playerid < 0)
		{
			format(string, sizeof(string), "{FFFFFF}\tFunny L-RP {FF0000}[RED]{FFFFFF}\n- Вы были {ff0000}кикнуты{ffffff} сервером.\n\n{ff0000}>{FFFFFF} Причина:{ffa500}\n%s", reason);
		}
		else
		{
		    new hour, minute, second, day, year, mount;
		    getdate(year, mount, day);
		    gettime(hour, minute, second);
		    format(string, sizeof(string), "{FFFFFF}\t\tFunny L-RP {FF0000}[RED]\n\n>{808000} %s{FFFFFF},\n Вы были {FF0000}кикнуты{FFFFFF}.\n\n{ff0000}>{FFFFFF} Причина:{FFA500}\n%s{FFFFFF}.\n\n- Администратор %s.\nДата: %d.%d.%d\nВремя: %d:%d\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nПритензии по работе администрации вы можете\nвысказать на\n <<FORUM ADDRES>>\n\t- с Уважением Администрация сервера.",GetName(targetid), reason, GetName(playerid), day, mount, year, hour, minute);
		}
		ShowPlayerDialog(targetid, 0, DIALOG_STYLE_MSGBOX, "[Инфо]: Вы кикнуты!", string, "[Закрыть]", "");
		SetTimer("KickEX", 1000, 0);
	}
	return true;
}

public KickEX(targetid)
{
	Kick(targetid);
}
И Команда (ZCMD):
PHP:
CMD:kick(playerid, params[])
{
	if(sscanf(params, "iis", params[0], params[1], params[2])) return SendClientMessage(playerid, COLOR_GREY, "* [Ошибка]: Использование: /kick [playerid] [params: 0 - silent / 1 - normal] [reason]");
	if(IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_GREY, "* [Ошибка]: Игрока нет в сети!");
	if(params[1] >= 0 && params[1] <= 1) return SendClientMessage(playerid, COLOR_GREY, "* [Ошибка]: Доступные параметры: 0, 1!");
	if(strlen(params[2]) != 0) return SendClientMessage(playerid, COLOR_GREY, "* [Ошибка]: Необходимо указать причину!");
	KickPlayer(playerid, params[0], params[1], params[2]);
	return true;
}


---------- Post added at 22:01 ---------- Previous post was at 22:00 ----------

Забыл добавить что + моей системы в том, что можно доолнять параметры, например параметр 2 может использоваться для кика с варном (предупреждением), а параметр 3 для кика с баном (или для "тихого" кика с баном)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу