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

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

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

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

/alogin

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

Leon_Colors

Умник
Всем привет выкладываю команду /alogin причина я сам долго искал его не мог найти все такое командный были на DCMD или YCMD Вот решил сделать сам Может кому понадобиться.
К define
PHP:
#define D_ADMIN 				5
Ко всем new
PHP:
new DATABASE;
new QUERY[2524];
new AdminKey[MAX_PLAYERS][32];
К командам
PHP:
    else if(strcmp(cmd, "/alogin", true) == 0)
	{
    	if(!strcmp(AdminKey[playerid],"0",true)) return ShowPlayerDialog(playerid, D_ADMIN+1, 1, "{FF8300}Регистрация пароля", "{ffffff}Создайте персональный пароль для доступа к правам администратора\n{FF8300}Длина пароля от 6 до 14 символов\nВ пароле должны присутствовать символы a-z, A-Z", "Создать", "Отмена");
    	if(GetPVarInt(playerid,"AdminLogin") > 0)
    	{
        	new string[90];
        	format(string,90,"< ALogin > %s(%i) вышел, лвл %i",PlayerInfo[playerid][pNames],playerid,GetPVarInt(playerid,"Admins"));
        	SendAdmin(string,COLOR_YELLOW);
        	SetPVarInt(playerid,"AdminLogin",0);
        	return true;
		}
    	ShowPlayerDialog(playerid, D_ADMIN, 1, "{FF8300}Авторизация", "{FFFFFF}Введите ваш персональный пароль от администраторской панели в данное окно.\n{FF8300}В пароле должны присутствовать символы a-z", "Вход", "Выход");
		return true;
	}
	else if(strcmp(cmd, "/makeadmin", true) == 0)
	{
		if(FD1 || FD2 || FD3 || IsPlayerAdmin(playerid))
		{
			tmp = strcharsplit(cmdtext, idx);
			new para1 = ReturnUser(tmp);
			if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD1, "Error: Введите: /makeadmin [id] [0-13]");
			tmp = strcharsplit(cmdtext, idx);
			new level = strval(tmp);
			if(level > 13 || level < 0) return SendClientMessage(playerid, COLOR_GRAD1, "Error: Значение не может быть меньше 0 и больше 13!");
 		    if(!GetPVarInt(para1,"Admins"))
    		{
        		SendMes(para1,COLOR_GOLD,"Администратор %s(%i) назначил вас администратором",PlayerInfo[playerid][pNames],playerid);
        		SendMes(playerid,COLOR_GOLD,"Вы назначили %s(%i) администратором",PlayerInfo[para1][pNames],para1);
        		mysql_format(DATABASE, QUERY, sizeof(QUERY), "INSERT INTO `admins` (`Name`, `Level`, `CheckKey`) VALUES ('%e', '1','0')",PlayerInfo[para1][pNames]);
		 		mysql_function_query(DATABASE, QUERY, false, "", "");
		 		SetPVarInt(para1,"Admins",1);
		 		strmid(AdminKey[para1],"0", 0, strlen("0"), 32);
		        //ShowPlayerDialog(params[0], D_ADMIN+1, 1, "Авторизация(П)", "Создайте персональный пароль для доступа к правам модератора\nВ пароле должны присутствовать символы a-z", "Создать", "");
			}
			else
			{
				if(GetPVarInt(para1,"Admins") >= 6) return SendClientMessage(playerid,COLOR_GREY,"Данного человека нельзя повысить");
			    SetPVarInt(para1,"Admins",GetPVarInt(para1,"Admins")+1);
			    SendMes(para1,COLOR_GOLD,"Администратор %s(%i) повысил вас до уровня %i",PlayerInfo[playerid][pNames],playerid,GetPVarInt(para1,"Admins"));
			    SendMes(playerid,COLOR_GOLD,"Вы повысили %s(%i) до уровня %i",PlayerInfo[para1][pNames],para1,GetPVarInt(para1,"Admins"));
			    mysql_format(DATABASE, QUERY, sizeof(QUERY), "UPDATE `admins` SET `Level` = '%i'",GetPVarInt(para1,"Admins"));
				mysql_format(DATABASE, QUERY, sizeof(QUERY), "%s WHERE `Name` = '%e'", QUERY, PlayerInfo[para1][pNames]);
				mysql_function_query(DATABASE, QUERY, false, "", "");
			}
		}
		return true;
	}
Ко всем диалогам
PHP:
		case D_ADMIN:
		{
		    if(!response || GetPVarInt(playerid,"Admins") <= 0) return true;
            if(strcmp(AdminKey[playerid],inputtext, false) != 0 || strlen(inputtext) <= 0) return SendClientMessage(playerid,-1,"Неверный пароль");
            SetPVarInt(playerid,"AdminLogin",1);
            new string[62];
            format(string,62,"<ALogin> %s авторизовался. AdmLvl %i",PlayerInfo[playerid][pNames],GetPVarInt(playerid,"Admins"));
            SendAdmin(string,COLOR_YELLOW);
		}
		case D_ADMIN+1:
		{
		    if(!response) return true;
		    new null_[3];
		    for(new i = strlen(inputtext); i != 0; --i)
			switch(inputtext[i])
			{
			    case 'A'..'Z': null_[0]++;
			    case 'a'..'z': null_[1]++;
			    case 'А'..'Я','а'..'я',' ': null_[2]++;
			}
		    if(strlen(inputtext) < 4 || strlen(inputtext) > 16 || null_[2] == 1 || null_[0] == 0 || null_[1] == 0) return ShowPlayerDialog(playerid, D_ADMIN+1, 1, "{FF8300}Регистрация пароля", "Создайте персональный пароль для доступа к правам администратора\n{FF8300}Длина пароля от 6 до 14 символов\nВ пароле должны присутствовать символы a-z, A-Z", "Создать", "Отмена");
			if(GetPVarInt(playerid,"Admins") <= 0) return SendClientMessage(playerid,COLOR_GREY,"Вы не администратор!");
		    strmid(AdminKey[playerid],inputtext, 0, strlen(inputtext), 32);
		    new string[52];
			format(string,52,"%s - зарегистрировал пароль",PlayerInfo[playerid][pNames]);
			SendAdmin(string,COLOR_YELLOW);
		    SendMes(playerid,COLOR_GOLD,"Ваш персональный пароль: %s. Для доступа введите /alogin",inputtext);
		    mysql_format(DATABASE, QUERY, sizeof(QUERY), "UPDATE `admins` SET `CheckKey` = '%s'",inputtext);
			mysql_format(DATABASE, QUERY, sizeof(QUERY), "%s WHERE `Name` = '%e'", QUERY, PlayerInfo[playerid][pNames]);
			mysql_function_query(DATABASE, QUERY, false, "", "");
		}
Куда угодно
PHP:
forward 	Admins(playerid);
public Admins(playerid)
{
    new r, f,lvl,key[32];
	cache_get_data(r, f);
	if(r)
	{
	    lvl = cache_get_field_content_int(0,"Level");
	    cache_get_field_content(0, "CheckKey",key,DATABASE,16);
	    SetPVarInt(playerid,"Admins",lvl);
	    strmid(AdminKey[playerid],key, 0, strlen(key), 32);
	}
	else SetPVarInt(playerid,"Admins",0), SetPVarInt(playerid,"AdminLogin",0);
	return true;
}
stock SendAdmin(text[],color,level = 1)
{
    for(new i = 0; i < MAX_PLAYERS; i++)
	{
		if(GetPVarInt(i,"Admins") < level || !GetPVarInt(i,"AdminLogin")) continue;
		else SendClientMessage(i,color,text);
	}
	return true;
}
В базу данных добавляем эти строки
PHP:
--
-- Структура таблицы `admins`
--

CREATE TABLE IF NOT EXISTS `admins` (
  `Name` varchar(32) CHARACTER SET cp1251 COLLATE cp1251_bin NOT NULL,
  `Level` int(11) NOT NULL,
  `CheckKey` varchar(32) CHARACTER SET cp1251 COLLATE cp1251_bin NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

--
-- Дамп данных таблицы `admins`
--

-- --------------------------------------------------------
Вот и всё от + не откажусь
И вот ещё если вам что нить не нравиться засуньте это что нить себе в одно место.
Скайп: ashablider
ВК:




 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу