Доступ к готовым решениям

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

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

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

Мануал Админ-бот v.1

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

execution

Изучающий
Professional
Пользователь
Регистрация
23 Июн 2017
Сообщения
981
Лучшие ответы
38
Репутация
364
Система предназначена для помощи младшей администрации. Игрок в админ чат посылает запрос и высвечивается старшей администрации, одобрить или нет. Делал под себя, так-что измените, что надо. Нам понадобится foreach, Pawn.CMD

В начало мода.
PHP:
const
	MAX_BOT_REQUEST = 3,			// Максимальное кол-во запросов для бота
	MAX_BOT_REQUEST_LENGTH = 8;		// Максимальная длина запросов

new
	ADMIN_BOT_SUPPORT[MAX_BOT_REQUEST][MAX_BOT_REQUEST_LENGTH] =		// Сами запросы
	{  
		"/mute", 
		"/prison", 
		"/jail"
	},
	ADMIN_BOT_TEXT[128]; // Массив с хранением полного запроса (причина/ник)
Ко всем командам.
PHP:
CMD:admin(playerid, params[])
{
	if(/*проверка на администратора*/)
	{
		if(!(0 < strlen(params) < 90))
			return SendClientMessage(playerid, -1, !"Используйте больше 1 символа и меньше 90");

		new
			string[128];

		format(string, sizeof(string), "[A] %s [%d]: %s", /*Массив с ником админа*/, playerid, params);
		SendAdminMessage(-1, string);

		new
			strFindPos;

		for(new k = MAX_BOT_REQUEST-1; k != -1; k--) 						// Перебираем все существующие запросы
		{
            if((strFindPos = strfind(params, ADMIN_BOT_SUPPORT[k], true)) != -1)				// Смотрим, присутствуют ли в тексте 
            {
            	strdel(params, 0, strFindPos); // Если да, то удаляем всё, до найденного запроса
                 	
				strcat(ADMIN_BOT_TEXT, params); // Сохраним запрос в массив 
				strcat(ADMIN_BOT_TEXT, " // ");
				strcat(ADMIN_BOT_TEXT, /*Массив с ником админа*/);
				
				strcat((string[0] = EOS, string), /*Массив с ником админа*/);
				strcat(string, " запросил помощь о выдаче наказания. Одобрить Y, отказать N");
				SendAdminMessage(-1 , string); 					// Отправим текст администраторам.
				break; // Обрываем цикл, после найденного запроса.
			}
		}
	}
	return 1;
}
alias:admin("a");
В OnPlayerKeyStateChange
PHP:
if(newkeys & KEY_YES) // Если нажали Y
{
	if(ADMIN_BOT_TEXT[0] != '\0')
	{
		if(/*Проверка на администратора*/)
		{
			PC_EmulateCommand(playerid, ADMIN_BOT_TEXT); // Отправим запрос
			ADMIN_BOT_TEXT[0] = EOS; // Обнулим массив.
		}
	}	
}

else if(newkeys & KEY_NO) // Если нажали N
{
	if(ADMIN_BOT_TEXT[0] != '\0')
	{
		if(/*Проверка на администратора*/)
	    {
			new 
				string[(48 + MAX_PLAYER_NAME + 1) - 2];
			
			strcat(string, "[A] Администратор ");
			strcat(string, /*Массив с ником админа*/);
			strcat(string, " отказал в запросе о помощи");
			
			SendAdminMessage(-1, string);
	        ADMIN_BOT_TEXT[0] = EOS;
		}
	}
}
В начало мода или ко всем итераторам
PHP:
new 
	Iterator:Connect_Admin<MAX_PLAYERS>; // Итератор , где будем хранить всех администраторов
При добавлении/заходе администратора
PHP:
if(!Iter_Contains(Connect_Admin, /*админ*/)) Iter_Add(Connect_Admin, /*админ*/);
При выходе/снятии администратора
PHP:
if(Iter_Contains(Connect_Admin, /*админ*/)) Iter_Remove(Connect_Admin, /*админ*/);
Сток для отправки сообщения администраторам
PHP:
stock SendAdminMessage(color, const string[])
{
	foreach(new i : Connect_Admin)
	{
		SendClientMessage(i, color, string);
	}
	return 1;
}
У кого не грузит:
Буду рад увидеть конструктивную критику, а так-же идеи для следующей версии.
Автор: Я
Админ-бот v.2: https://pawno-info.ru/threads/319233-%D0%90%D0%B4%D0%BC%D0%B8%D0%BD-%D0%B1%D0%BE%D1%82-v-2?p=2000056#post2000056
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу