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

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

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

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

Пароль 'Администрирования' [ALL] v 1.0

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

Nourthmar

Изучающий
Пользователь
Регистрация
1 Авг 2012
Сообщения
322
Лучшие ответы
0
Репутация
160
Доброго времени суток, уважаемые Юзеры P-I.
Вот мой очередной мануал, для new.pwn. (MX_INI) (ZCMD + sscanf)

Что же представляет из себя "Пароль Администрирования"
- При выдачи Уровня администрирования, у игрока будет личный пароль к Админ панели ( random ).

и так, как же это будет выглядеть?:

При выдаче командой админки, игроку высвечивается это окно:

При использовании любой функции админки, игроку будет высвечиваться окно ввода пароля:

так же можно будет поменять поменять командой /changealogin:


Начнем. Ко всем переменным new:

PHP:
new PAvtorizate[MAX_PLAYERS];
new Pavtorizate[MAX_PLAYERS]; // это переменные, которые будут отвечать за авторизацию в Админ панели.
В
PHP:
enum pInfo
PHP:
	pAvtorizate[128] // и делаем сохранение.
ко всем #define:
PHP:
#define ADMINS_LOGIN PlayerInfo[playerid][pAdmin]
#define SCM SendClientMessage
#define SPD ShowPlayerDialog
В вашу команду выдачи админки. У всех поразному: /makeadmin , /setadmin. Где нибудь в ней:

PHP:
	new adminpass = 1000 + random(89999);
	PlayerInfo[playerid][pAvtorizate] = adminpass;
	format(string, sizeof(string), "Ваш пароль 'Администрирования!' %d\n", PlayerInfo[playerid][pAvtorizate]);
	SPD(playerid,playerid,DIALOG_STYLE_MSGBOX, "Информация",string, "Готово", "Выход");
Далее создадим команду авторизации, без принуждения '/alogin':

PHP:
CMD:alogin(playerid, params[])
{
	if(Pavtorizate[playerid] == 0)
	{
		SPD(playerid,3,DIALOG_STYLE_INPUT, "Информация", "Введите личный пароль 'Администрирования':\n", "Авторизация", "Выход");
	}
	else SCM(playerid,COLOR_GREY,"[Ошибка]: Вы уже авторизовались!");
}
Далее наш диалог:

в
PHP:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
PHP:
		case 3:
	    {
	        if(response)
	        {
	            if(!strlen(inputtext)) return SPD(playerid,3,DIALOG_STYLE_INPUT, "Информация", "Введите личный пароль 'Администрирования':\n", "Авторизация", "Выход");
	            PAvtorizate[playerid] = strval(inputtext);
				if(Pavtorizate[playerid] == 1) return SCM(playerid, COLOR_GREY, "[Ошибка]: Вы уже авторизовались!");
	            if(PAvtorizate[playerid] == PlayerInfo[playerid][pAvtorizate])
	            {
					if(ADMINS_LOGIN <= 0) return SCM(playerid, COLOR_GREY, "[Ошибка]: Вы не имеете правно для авторизации!");
	                Pavtorizate[playerid] = 1;
	                SCM(playerid,COLOR_WHITE,"[Успех]: Вы успешно авторизовались!");
	                new sendername[MAX_PLAYER_NAME];
	               	GetPlayerName(playerid, sendername, sizeof(sendername));
	   				return true;
				}
				else  SCM(playerid,COLOR_GREY,"[Ошибка]: Пароль введен неверно!");
				{
					return true;
				}
			}
			else
			{
				return true;
			}
		}
Команда на смену пароля:

PHP:
CMD:changealogin(playerid, params[])
{
	if(ADMINS_LOGIN <= 2) return true;
	new string[70],
	sendername[MAX_PLAYER_NAME], adminpass;
	GetPlayerName(playerid, sendername, sizeof(sendername));
	if(sscanf(params,"d", adminpass)) return SCM(playerid, COLOR_WHITE, "[Используйте]: /changealogin [ключ]");
	PlayerInfo[playerid][pAvtorizate] = adminpass;
	format(string,sizeof(string), "gamefiles/%s.ini",sendername);
	new File=ini_openFile(string);
	ini_setString(File, "Avtorizate",PlayerInfo[playerid][pAvtorizate]);
	ini_closeFile(File);
	format(string, sizeof(string), "[Успеx]: Пароль успешно изменен. Новый пароль: {FFFFFF}%d{FFA500}", PlayerInfo[playerid][pAvtorizate]);
	SendClientMessage(playerid, COLOR_WHITE, string);
	return true;
}
Пример использования:

PHP:
if(Pavtorizate[playerid] == 0) return SPD(playerid,3,DIALOG_STYLE_INPUT, "Информация", "Введите личный пароль 'Администрирования':\n", "Авторизация", "Выход");
PHP:
Pavtorizate[playerid] == 0 // это если админ ещё не авторизовался.
Все.

Автор: Nourthmar ( видел в каком то моде, но не смог найти, сам написал).

По этой системе можно сделать: VISA card.


______________________________________ Дополнение _______________________________________

Для тех у кого нет командного процессора:


PHP:
if(strcmp(cmd, "/alogin", true) == 0)
{
	if(ADMINS_LOGIN => 1) return true;
    if(Pavtorizate[playerid] == 0)
    {
        SPD(playerid,3,DIALOG_STYLE_INPUT, "Информация", "Введите личный пароль 'Администрирования':\n", "Авторизация", "Выход");
    }
    else SCM(playerid,COLOR_GREY,"[Ошибка]: Вы уже авторизовались!");
}

if(strcmp(cmd, "/changealogin", true) == 0)
{
    if(ADMINS_LOGIN <= 2) return true;
    new string[70],
    sendername[MAX_PLAYER_NAME], adminpass;
    GetPlayerName(playerid, sendername, sizeof(sendername));
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return	SendClientMessage(playerid, COLOR_WHITE, "Введите: /changealogin [ключ]");
    new adminpass = strval(tmp);
    PlayerInfo[playerid][pAvtorizate] = adminpass;
    format(string,sizeof(string), "gamefiles/%s.ini",sendername);
    new File=ini_openFile(string);
    ini_setString(File, "Avtorizate",PlayerInfo[playerid][pAvtorizate]);
    ini_closeFile(File);
    format(string, sizeof(string), "[Успеx]: Пароль успешно изменен. Новый пароль: {FFFFFF}%d{FFA500}", PlayerInfo[playerid][pAvtorizate]);
    SendClientMessage(playerid, COLOR_WHITE, string);
    return true;
}
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу