SCRIPTMAN 358 Опубликовано 6 ноября, 2016 (изменено) Привет друзья! Хорошо писать уроки я не умею, так что, придётся вам понимать мои непонятные слова Давайте же начнём! 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]); Там, где у вас начисляются все скажем так данные, ну вы поняли , нужно вставить: Player[playerid][pAdmin] = 0; Это там, где у вас к примеру: Player[playerid][pLevel] = 1; Ну или какой у вас там выдаётся уровень после регистрации. Туда нужно вставить как раз-то это: Player[playerid][pAdmin] = 0; Там, где у вас происходит сохранение аккаунта, у меня это stock SavePlayer(playerid), туда нужно добавить вот это: ini_setInteger(File, "Admin", Player[playerid][pAdmin]); Ну в принципе всё, ах да, ещё. Если кто-то хочет, чтобы указывался пароль из имя.cfg, ну вы поняли. Нужно добавить. 2. Создание ввода админ пароля для каждого игрока отдельно, ну вы поняли а) Создадим в "enum pInfo" массив pAkey б) Остальные функции, что касается сохранения. Там, где у вас регистрация аккаунта, добавьте туда: 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) Ну вот и всё. Вот вам в помощь диалог проверки админ пароля: 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 диалог занят, замените #define adm if(Player[playerid][pAdmin] > 0 && Dostup[playerid] == false) return SPD(playerid, 17, DSI, "{A600FF}Админ авторизация", "{FFFFFF}Для админ авторизации, пожалуйста введите админ-пароль:", "Далее", "Выход"); Я видел, писали, что есть такой урок на форуме, но хоть убейте, искал, нету его там и поиском пользовался и смотрел. Если у вас будут какие-то исправления/дополнения пишите, не стесняйтесь. Всем спасибо, кто прочитал, а может и взял эту систему. Буду рад любой критике, ведь критика делает нас лучше Автор: LADA(То есть я) Изменено 6 ноября, 2016 пользователем LADA 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Dmitry_Kikat 11 Опубликовано 9 мая, 2017 нормальный урок. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты