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

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

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

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

/admdonate - Покупка команд администраторами

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

narkk3

Умник
Приветствую, уважаемые пользователи Pawno-Info!
Суть темы будет покупка определенных команд администраторами. Да, большинству это кажется полным бредом (собственно как и мне), но как показал опыт, всё же ею пользуются и ищет множество владельцев своих "пуперских" проектов.
В данной теме я расскажу как можно вшить её в свой мод.​

1. Ищем свой калбэк (enum pInfo/PlayerInfo и т.п) в котором хранятся все данные игрока (pLvl, pAdmin, pSkin и т.д) после чего вставляем туда это:
Код:
	pBan,
	pBanIP,
	pCanOffban,
	pCanAdminWarn,
	pCanFrak,
	pCanCheat,
	pCanMakeHelper
2. В public OnPlayerConnect вставляем следующее:
Код:
        PlayerInfo[playerid][pBan] = 			cache_get_field_content_int(0, "pBan", connects);
	PlayerInfo[playerid][pBanIP] = 			cache_get_field_content_int(0, "pBanIP", connects);
	PlayerInfo[playerid][pCanOffban] = 			cache_get_field_content_int(0, "pCanOffban", connects);
	PlayerInfo[playerid][pCanAdminWarn] = 		cache_get_field_content_int(0, "pCanAdminWarn", connects);
	PlayerInfo[playerid][pCanFrak] = 			cache_get_field_content_int(0, "pCanFrak", connects);
	PlayerInfo[playerid][pCanCheat] = 			cache_get_field_content_int(0, "pCanCheat", connects);
	PlayerInfo[playerid][pCanMakeHelper] = 		cache_get_field_content_int(0, "pCanMakeHelper", connects);
3. В public OnDialogResponse вставляем следующее:
Код:
case 9898:
		{
		    new string[256];
		    if(!response) return 1;
			    switch(listitem)
			    {
			        case 0:
					{
						if (!PlayerInfo[playerid][pBan])
			   			{
							SendClientMessage(playerid, COLOR_WHITE, "Вы {73B461}успешно{FFFFFF} приобрели доступ к команде {B22222}/ban{FFFFFF} :)");
							format(string, sizeof(string), "[A]{FFFFFF} %s[%d] приобрел доступ к команде {B22222}/ban{FFFFFF}", PlayerInfo[playerid][pNames]);
							SendAdminMessage(0xB22222FF, string);
							PlayerInfo[playerid][pBan] = 1;
							PlayerInfo[playerid][pRub] -= 100;
						}
						else
						{
   							SendClientMessage(issuerid, COLOR_GREY, "У вас уже куплена эта команда!");
						}
							UpdatePlayerDataEx(playerid, "pBan", PlayerInfo[playerid][pBan]);
							UpdatePlayerDataEx(playerid, "pRub", PlayerInfo[playerid][pRub]);
							ShowDonateDostup(playerid);
					}
					case 1:
					{
						if (!PlayerInfo[playerid][pCanOffban])
			   			{
							SendClientMessage(playerid, COLOR_WHITE, "Вы {73B461}успешно{FFFFFF} приобрели доступ к команде {B22222}/offban{FFFFFF} :)");
							format(string, sizeof(string), "[A]{FFFFFF} %s[%d] приобрел доступ к команде {B22222}/offban{FFFFFF}", PlayerInfo[playerid][pNames]);
							SendAdminMessage(0xB22222FF, string);
							PlayerInfo[playerid][pCanOffban] = 1;
							PlayerInfo[playerid][pRub] -= 100;
						}
						else
						{
						    SendClientMessage(playerid, COLOR_GREY, "У вас уже куплена эта команда!");
						}
						UpdatePlayerDataEx(playerid, "pCanOffban", PlayerInfo[playerid][pCanOffban]);
						UpdatePlayerDataEx(playerid, "pRub", PlayerInfo[playerid][pRub]);
						ShowDonateDostup(playerid);
					}
					case 2:
					{
						if (!PlayerInfo[playerid][pBanIP])
			   			{
							SendClientMessage(playerid, COLOR_WHITE, "Вы {73B461}успешно{FFFFFF} приобрели доступ к команде {B22222}/banip{FFFFFF} :)");
							format(string, sizeof(string), "[A]{FFFFFF} %s[%d] приобрел доступ к команде {B22222}/banip{FFFFFF}", PlayerInfo[playerid][pNames]);
							SendAdminMessage(0xB22222FF, string);
							PlayerInfo[playerid][pBanIP] = 1;
							PlayerInfo[playerid][pRub] -= 100;
						}
						else
						{
						    SendClientMessage(playerid, COLOR_GREY, "У вас уже куплена эта команда!");
						}
						UpdatePlayerDataEx(playerid, "pBanIP", PlayerInfo[playerid][pBanIP]);
						UpdatePlayerDataEx(playerid, "pRub", PlayerInfo[playerid][pRub]);
						ShowDonateDostup(playerid);
					}
					case 3:
					{
						if (!PlayerInfo[playerid][pCanAdminWarn])
			   			{
							SendClientMessage(playerid, COLOR_WHITE, "Вы {73B461}успешно{FFFFFF} приобрели доступ к команде {B22222}/awarn{FFFFFF} :)");
							format(string, sizeof(string), "[A]{FFFFFF} %s[%d] приобрел доступ к команде {B22222}/awarn{FFFFFF}", PlayerInfo[playerid][pNames]);
							SendAdminMessage(0xB22222FF, string);
							PlayerInfo[playerid][pCanAdminWarn] = 1;
							PlayerInfo[playerid][pRub] -= 100;
						}
						else
						{
						    SendClientMessage(playerid, COLOR_GREY, "У вас уже куплена эта команда!");
						}
						UpdatePlayerDataEx(playerid, "pCanAdminWarn", PlayerInfo[playerid][pCanAdminWarn]);
						UpdatePlayerDataEx(playerid, "pRub", PlayerInfo[playerid][pRub]);
						ShowDonateDostup(playerid);
					}
					case 4:
					{
						if (!PlayerInfo[playerid][pCanFrak])
			   			{
							SendClientMessage(playerid, COLOR_WHITE, "Вы {73B461}успешно{FFFFFF} приобрели доступ к{B22222} вступлению в орг{FFFFFF} :)");
							format(string, sizeof(string), "[A]{FFFFFF} %s[%d] приобрел доступ к {B22222}вступлению в орг{FFFFFF}", PlayerInfo[playerid][pNames]);
							SendAdminMessage(0xB22222FF, string);
							PlayerInfo[playerid][pCanFrak] = 1;
							PlayerInfo[playerid][pRub] -= 100;
						}
						else
						{
						    SendClientMessage(playerid, COLOR_GREY, "У вас уже куплена эта команда!");
						}
						UpdatePlayerDataEx(playerid, "pCanFrak", PlayerInfo[playerid][pCanFrak]);
						UpdatePlayerDataEx(playerid, "pRub", PlayerInfo[playerid][pRub]);
						ShowDonateDostup(playerid);
					}
					case 5:
					{
						if (!PlayerInfo[playerid][pCanCheat])
			   			{
							SendClientMessage(playerid, COLOR_WHITE, "Вы {73B461}успешно{FFFFFF} приобрели доступ к{B22222} использованию читов{FFFFFF} :)");
							format(string, sizeof(string), "[A]{FFFFFF} %s[%d] приобрел доступ к {B22222}использованию читов{FFFFFF}", PlayerInfo[playerid][pNames]);
							SendAdminMessage(0xB22222FF, string);
							PlayerInfo[playerid][pCanCheat] = 1;
							PlayerInfo[playerid][pRub] -= 100;
						}
						else
						{
						    SendClientMessage(playerid, COLOR_GREY, "У вас уже куплена эта команда!");
						}
						UpdatePlayerDataEx(playerid, "pCanCheat", PlayerInfo[playerid][pCanCheat]);
						UpdatePlayerDataEx(playerid, "pRub", PlayerInfo[playerid][pRub]);
						ShowDonateDostup(playerid);
					}
					case 6:
					{
						if (!PlayerInfo[playerid][pCanMakeHelper])
			   			{
							SendClientMessage(playerid, COLOR_WHITE, "Вы {73B461}успешно{FFFFFF} приобрели доступ к команде {B22222}/makehelper{FFFFFF} :)");
							format(string, sizeof(string), "[A]{FFFFFF} %s[%d] приобрел доступ к команде {B22222}/makehelper{FFFFFF}", PlayerInfo[playerid][pNames]);
							SendAdminMessage(0xB22222FF, string);
							PlayerInfo[playerid][pCanMakeHelper] = 1;
							PlayerInfo[playerid][pRub] -= 100;
						}
						else
						{
						    SendClientMessage(playerid, COLOR_GREY, "У вас уже куплена эта команда!");
						}
						UpdatePlayerDataEx(playerid, "pCanMakeHelper", PlayerInfo[playerid][pCanMakeHelper]);
						UpdatePlayerDataEx(playerid, "pRub", PlayerInfo[playerid][pRub]);
						ShowDonateDostup(playerid);
					}
			}
			return 1;
		}
4. В команды перечисленные ниже добавляем проверки:
Код:
CMD: ban вставить: if(!PlayerInfo[playerid][pBan]) return SendClientMessage(playerid, COLOR_GREY, "Вам недоступна эта функция!");
CMD: offban вставить: if(!PlayerInfo[playerid][pCanOffban]) return SendClientMessage(playerid, COLOR_GREY, "Вам недоступна эта функция!");
CMD: banip вставить: if(!PlayerInfo[playerid][pBanIP]) return SendClientMessage(playerid, COLOR_GREY, "Вам недоступна эта функция!");
CMD: warn вставить: if(!PlayerInfo[playerid][pCanAdminWarn]) return SendClientMessage(playerid, COLOR_GREY, "Вам недоступна эта функция!");
CMD: makehelper вставить: if(!PlayerInfo[playerid][pCanMakeHelper]) return SendClientMessage(playerid, COLOR_GREY, "Вам недоступна эта функция!");
В case Invait (проще говоря в кейс с принятием в орг) вставляем это:
Код:
if(!PlayerInfo[playerid][pCanFrak]) return SendClientMessage(playerid, COLOR_GREY, "Администратор не может вступить в фракцию! (/donate)");
5. Ко всем командам добавляем это:
Код:
CMD:admdonate(playerid)
{
   	if(PlayerInfo[playerid][pAdmin] < 1) return 1;
	ShowDonateDostup(playerid);
	return 1;
}
6. И последний шаг - добавляем сток в конец мода:
Код:
stock ShowDonateDostup(playerid)
{
    new nickdostup[50];
    format(string, 500, "{ffffff}\
	/ban\t\t\t\t\t%s\n\
	/offfban\t\t\t\t%s\n\
	/banip\t\t\t\t%s\n\
	/warn\t\t\t\t%s\n\
	Разр. на фраку\t\t\t\t%s\n\
	Разр. на читы\t\t\t\t%s\n\
	/makehelper\t\t\t\t%s",
	(!PlayerInfo[playerid][pBan]) ? ("{ff0000}100 рублей") : ("{11FF00}Куплено"),
	(!PlayerInfo[playerid][pCanOffban]) ? ("{ff0000}100 рублей") : ("{11FF00}Куплено"),
	(!PlayerInfo[playerid][pBanIP]) ? ("{ff0000}100 рублей") : ("{11FF00}Куплено"),
	(!PlayerInfo[playerid][pCanAdminWarn]) ? ("{ff0000}100 рублей") : ("{11FF00}Куплено"),
	(!PlayerInfo[playerid][pCanFrak]) ? ("{ff0000}100 рублей") : ("{11FF00}Куплено"),
	(!PlayerInfo[playerid][pCanCheat]) ? ("{ff0000}100 рублей") : ("{11FF00}Куплено"),
	(!PlayerInfo[playerid][pCanMakeHelper]) ? ("{ff0000}100 рублей") : ("{11FF00}Куплено"));
	format(nickdostup, 50, "{11FF00}%s", PlayerInfo[playerid][pNames]);
	ShowPlayerDialog(playerid, 9898, 2, nickdostup, string, "Выбрать", "Назад");
	return 1;
}

Не скажу что эта сложная команда, т.к основную роль играют проверки. У кого есть хоть небольшой опыт в сфере Pawn и MySQL, с легкостью вошьют эту команду себе в мод.

Переменные:
Код:
PlayerInfo - заменить на свою (pInfo,pData,player и т.д)
pAdmin - доступ администратору
SendAdminMessage - вывод сообщения администраторам (замените на своё)
pRub - валюта на сервере (проще говоря донат, у вас может быть pDonate, pDonateMoney и т.д)
UpdatePlayerDataEx - обновление переменной в БД (у вас тоже будет другое)
cache_get_field_content_int - у вас может быть cache_get_value_name_int (в зависимости от версии MySQL)
connects - у вас может быть dbHandle и т.п

Спасибо за просмотр :ay:​
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу