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

Создание Регистрации/Авторизации на mxINI(new.pwn)

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

steverossi

Приветствую! Меня зовут Steve Rossi и сегодня я Вам расскажу как сделать Регистрацию/Авторизацию с чистого "new.pwn".

 

Действие первое:

 

Скачиваем сам сервер с офф. сайта (клик).

Скачиваем инклайд mxINI (клик).

Помещаем инклайд mxINI папку "include" и "pawno > include".

Скачанный сервер разархивируем на рабочий стол.

Удаляем все файлы с папки "gamemodes".

Заходим в папку "pawno" и копируем там файл "new.pwn", копированный файл вставляем в папку "gamemodes".

Заходим в файл "server.cfg" и меняем rcon_password на свой. Пример:

- rcon_password cr-mp.ru

После gamemode0 ставим на new.pwn, пример:

- gamemode0 new 1

Ищем строку filescript и удаляем все скрипты.

Закрываем и сохраняем.

 

Действие второе:

 

Открываем наш мод через "pawno".

Ищем строки:

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
        print("\n--------------------------------------");
        print(" Blank Filterscript by your name here");
        print("--------------------------------------\n");
        return 1;
}

public OnFilterScriptExit()
{
        return 1;
}

#else

main()
{
        print("\n----------------------------------");
        print(" Blank Gamemode by your name here");
        print("----------------------------------\n");
}

#endif

Удаляем их, они нам не нужны.

После находим public onGameModeInit().

public OnGameModeInit()
{
        // Don't use these lines if it's a filterscript
        SetGameModeText("Blank Script");
        AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
        return 1;
}

Вместо "Blank Script" пишем своё название мода.

Так же после него вставляем:

main()
{
        print("\n----------------------------------");
        print("Blank Script");
        print("----------------------------------\n");
}

И пишем название вашего мода (сервера).

 

Переходим в начало мода и ищем:

#include <a_samp>

После данного инклуда вставляем:

#include <mxINI>

Все готово, теперь компилируем сам мод, если все прошло без ошибок и варнингов, то вы сделали все правильно.

 

Действие третье:

 

После строки нашего инлкуда mxINI нам нужно вставить:

enum pInfo
{
     pPass[64],
}
new Player[MAX_PLAYERS][pInfo];

Это будут данные о нашем аккаунте, когда будем делать админку нам нужно будет вставить "pAdmin".

 

Затем в конце мода вставляем:

stock SavePlayer(playerid)
{
    new string[64];
        new playername[MAX_PLAYER_NAME];
        GetPlayerName(playerid, playername, sizeof(playername));
        format(string, sizeof(string), "players/%s.ini", playername);
        iniFile = ini_openFile(string);
        ini_setString(iniFile,"Pass",Player[playerid][pPass]);
        ini_closeFile(iniFile);
}

Готово, теперь когда мы зарегистрируемся или кто то зарегистрируется, то пароль будет записываться в файл игрока.

Заходим в папку scriptfiles и там создаем папку players. Если там будут ещё папки их нужно удалить.

 

Готово, кампилируем, если всё прошло гладко, то приступаем дальше делать регистрация.

 

Действие четвёртое:

 

Теперь нам нужно сделать проверку на аккаунт, существуем он или нет, после нашего инклайда mxINI вставляем эти строки:

new PAccount[MAX_PLAYERS];

Теперь ищем такой паблик как public OnPlayerConnect и туда вставляем:

new playername[MAX_PLAYER_NAME];
    new string[128];
        GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"players/%s.ini", playername);
    if(fexist(string))
        {
                PAccount[playerid] = 1;
        }
        else
        {
            PAccount[playerid] = 0;
        }

Теперь ищем паблик public OnPlayerRequestClass, он будет показывать диалог Регистрации/Авторизации.

if(PAccount[playerid] == 1)
        {
            ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Авторизация","Здравствуйте\nВаш аккаунт зарегистрирован на сервере\nПожалуйста авторизуйтесь:","LOGIN","CANCEL");
        }
        else
        {
            ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Регистрация","Здравствуйте\nВаш аккаунт не зарегистрирован.\nПожалуйста зарегистрируйтесь:","LOGIN","CANCEL");

Теперь нам нужно, что бы этот Диалог работал. Теперь мы будем делать функцию Регистрации. В конце мода вставляем:

forward OnPlayerRegister(playerid, password[]);
public OnPlayerRegister(playerid, password[])
{
        if(IsPlayerConnected(playerid))
        {
            new string[64];
                new playername[MAX_PLAYER_NAME];
                GetPlayerName(playerid, playername, sizeof(playername));
                format(string,sizeof(string), "players/%s.ini", playername);
                new iniFile = ini_createFile(string);
                if(iniFile < 0)
                {
                        iniFile = ini_openFile(string);
                }
                if(iniFile >= 0)
                {
                        strmid(Player[playerid][pPass],password,0,strlen(password),255);
                        ini_setString(iniFile,"Pass",Player[playerid][pPass]);
                        ini_closeFile(iniFile);
                        ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Авторизация","Здравствуйте\nВаш аккаунт зарегистрирован на сервере\nПожалуйста авторизуйтесь:","LOGIN","CANCEL");
                }
        }
        return 1;
}

Теперь создаем функцию Авторизации.

forward OnPlayerLogin(playerid,password[]);
public OnPlayerLogin(playerid,password[])
{
        if(IsPlayerConnected(playerid))
        {
        new string[64];
        new pass[64];
                new playername[MAX_PLAYER_NAME];
                GetPlayerName(playerid, playername, sizeof(playername));
                format(string,sizeof(string), "players/%s.ini", playername);
                new iniFile = ini_openFile(string);
                ini_getString(iniFile,"Pass",pass,64);
        if(strcmp(pass,password,true) == 0)
            {
                ini_getString(iniFile,"Pass",Player[playerid][pPass],64);
                ini_closeFile(iniFile);
        }
                else
                {
                    ini_closeFile(iniFile);
                ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Авторизация","Здравствуйте\nВаш аккаунт зарегистрирован на сервере\nПожалуйста авторизуйтесь:","LOGIN","CANCEL");
                return 1;
                }
                SendClientMessage(playerid,0xFFFFFFF,"Добро пожаловать на сервер!");
                SpawnPlayer(playerid);
        }
        return 1;
}

Все готово, создаем теперь работаспособность этого всего в паблик public OnDialogResponse и туда вставляем:

if(dialogid == 1)
        {
            if(response)
            {
                        if(!strlen(inputtext))
                {
                    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Авторизация","Здравствуйте\nВаш аккаунт зарегистрирован на сервере\nПожалуйста авторизуйтесь:","LOGIN","CANCEL");
                    return 1;
                }
                new pass[64];
                strmid(pass,inputtext,0,strlen(inputtext),64);
                OnPlayerLogin(playerid,pass);
            }
            else
            {
                ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Авторизация","Здравствуйте\nВаш аккаунт зарегистрирован на сервере\nПожалуйста авторизуйтесь:","LOGIN","CANCEL");
            }
        }
        if(dialogid == 2)
        {
            if(response)
            {
                if(!strlen(inputtext))
                {
                ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Регистрация","Здравствуйте\nВаш аккаунт не зарегистрирован.\nПожалуйста зарегистрируйтесь:","LOGIN","CANCEL");
                    return 1;
                }
                new pass[64];
                strmid(pass,inputtext,0,strlen(inputtext),64);
                OnPlayerRegister(playerid,pass);
            }
            else
            {
            ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Регистрация","Здравствуйте\nВаш аккаунт не зарегистрирован.\nПожалуйста зарегистрируйтесь:","LOGIN","CANCEL");
        }

Все готово теперь компилируем, если все прошло успешно без ошибок и варнингов, то вы создали простую регистрацию.

На этом урок ОКОНЧЕН. Спасибо всем, понравилось, поставить "Спасибо".

 

Автор урока: Steve Rossi.

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

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


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

Мало того что автор не ты, так еще и mxini.

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


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

Ну зачеееееем?

Я думал ты нормальный, адекватный, новый пользователь.

Что тебе это дало?

ты захотел больше "+"???

Ты думал, что изменив пометки в коде, изменив слова, я ничего не узнаю?

бред.

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


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

Мда.... Хоть бы уже mySQL украл. А ты ещё mxINI. 2017 год. КАААРЛ!!!!

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


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

:D83DDE02: . Бесполезная тема. 

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


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

@OlegDobritsa, Набил пост, молодец.

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


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

Ехх 2k17,mXINI.

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


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

Насколько я знаю взято с другого форума данная работа

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


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

@Na'Vi,Насколько я знаю, я уже выдал предупреждение и написал заметку на пост.

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


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

@Na'Vi, Кто бы говорил))

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


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

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

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

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

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

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

Войти

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

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

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

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

×

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

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