Перейти к содержанию
Авторизация  
SCRIPTMAN

Создание системы администрации.

Рекомендуемые сообщения

SCRIPTMAN

Привет друзья!

 

Хорошо писать уроки я не умею, так что, придётся вам понимать мои непонятные слова  :D83DDE0A:

 

 

Давайте же начнём!

 

1. Создание основных функций

 

а) Для начала в "enum pInfo" создадим массив pAdmin.

 

Пример:

enum pInfo
{
    Ваш массив пример pSave,
    pName,
    pLeader,
    pAdmin
}

P.S Всё что у меня вы видите выше, добавлять не нужно, кроме "pAdmin"

б) Создадим остальные функции, что касается сохранения.

 

Там, где у вас регистрация аккаунта нужно добавить:

ini_setInteger(File, "Admin", Player[playerid][pAdmin]);

Там, где у вас авторизация нужно добавить:

iniGetInt(File, "Admin", Player[playerid][pAdmin]);

Там, где у вас начисляются все скажем так данные, ну вы поняли :D83DDE07: , нужно вставить:


Player[playerid][pAdmin] = 0;

Это там, где у вас к примеру: Player[playerid][pLevel] = 1;

Ну или какой у вас там выдаётся уровень после регистрации. Туда нужно вставить как раз-то это:

Player[playerid][pAdmin] = 0;

Там, где у вас происходит сохранение аккаунта, у меня это stock SavePlayer(playerid), туда нужно добавить вот это:

ini_setInteger(File, "Admin", Player[playerid][pAdmin]);

Ну в принципе всё, ах да, ещё. Если кто-то хочет, чтобы указывался пароль из имя.cfg, ну вы поняли. Нужно добавить. 

 

2. Создание ввода админ пароля для каждого игрока отдельно, ну вы поняли :D83DDE03: 

 

а) Создадим в "enum pInfo" массив pAkey

 

б) Остальные функции, что касается сохранения. :D83DDE0A: 

 

Там, где у вас регистрация аккаунта, добавьте туда:

ini_setInteger(File, "Admin Pass", Player[playerid][pAkey]);

Там, где у вас происходит регистрация аккаунта, добавьте:

iniGetInt(File, "Admin Pass", Player[playerid][pAkey]);

Там, где у вас сохранение данных аккаунта игрока, добавьте:

ini_setInteger(File, "Admin Pass", Player[playerid][pAkey]);

У меня это stock SavePlayer(playerid) :D83DDE03: 

 Ну вот и всё.

 

Вот вам в помощь диалог проверки админ пароля:

 

3. Диалог для админ пароля:

case 17:
        {
            if(response)
            {
                if(!strlen(inputtext)) return SPD(playerid, 17, DSI, "{DFB3CA}Админ авторизация", "{FFFFFF}Для админ авторизации, пожалуйста введите админ-пароль:", "Далее", "Выход");
                for(new i = strlen(inputtext); i != 0; --i)
                switch(inputtext[i])
                {
                    case 'А'..'Я', 'а'..'я': return SPD(playerid, 17, DSI, "{DFB3CA}Ошибка!", "{BEBEBE}Админ-пароль не должен состоять из русских символов\nПожалуйста, смените расскладку клавиатуры и введите админ-пароль повторно:", "Далее", "Выход");
                }
                if(strlen(inputtext) < 6 || strlen(inputtext) > 20) return SPD(playerid, 17, DSI, "{DFB3CA}Ошибка!", "{BEBEBE}Длина админ-пароля должна быть от {FFFF00}6-ти {BEBEBE}до {FFFF00}20-ти {BEBEBE}символов\nВведите свой админ-пароль повторно:", "Далее", "Выход");
                if(strval(inputtext) == Player[playerid][pAkey])
                {
                    Dostup[playerid] = true;
                    SCM(playerid, COLOR_GREEN, "Вы успешно авторизовались!");
                }
                else
                {
                    SCM(playerid, COLOR_RED, "Пароль введён не верно!");
                    SPD(playerid, 17, DSI, "{DFB3CA}Админ авторизация", "{FFFFFF}Для админ авторизации, пожалуйста введите админ-пароль:", "Далее", "Выход");
                }
            }
        }

Но, чтобы было без ошибок. Добавьте:

new bool: Dostup[MAX_PLAYERS];

Ещё, я создавал такой сток. "stock Clear(playerid)", создайте и вы. и добавьте туда:

Dostup[playerid] = false;

Теперь, в OnPlayerConnect, добавьте:

Clear(playerid);

Я повторюсь, что 3 пункт это диалог с админ авторизацией, вы конечно же можете написать свой, я просто предложил.

Ах, да, ещё добавьте:

Но!

Если у вас 17 диалог занят, замените :D83DDE03: 

#define adm if(Player[playerid][pAdmin] > 0 && Dostup[playerid] == false) return SPD(playerid, 17, DSI, "{A600FF}Админ авторизация", "{FFFFFF}Для админ авторизации, пожалуйста введите админ-пароль:", "Далее", "Выход");

Я видел, писали, что есть такой урок на форуме, но хоть убейте, искал, нету его там и поиском пользовался и смотрел.

Если у вас будут какие-то исправления/дополнения пишите, не стесняйтесь.

 

Всем спасибо, кто прочитал, а может и взял эту систему.

 

Буду рад любой критике, ведь критика делает нас лучше :-) 

 

Автор: LADA(То есть я)

Изменено пользователем LADA
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dmitry_Kikat

нормальный урок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.