Показано с 1 по 4 из 4

Тема: [Урок] Регистрация на mxINI В диалоговом окне

  1. #1
    Аватар для Diesel
    Новичок
    Регистрация
    05.09.2014
    Сообщений
    6
    Благодарностей
    0
    Сказали спасибо: 2

    [Урок] Регистрация на mxINI В диалоговом окне

    Первым делом удаляем лишний код из мода:

    Скрытый текст

    PHP код:
    #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 
    [свернуть]

    Потом подключаем инкуд mxini, для этого ко всем #include добавляем:
    PHP код:
    #include <mxini> 
    Далее создаём переменные для игрока, для этого после всех инклудов вставляем;
    PHP код:
    enum pInfo //если надо меняйте на свои
    pMoney// Сохраняет кол-во денег.
    pHouse,// ID первого дома (переменные делайте свои)
    pHouse1,// ID второго дома
    pHouse2,// ID третьего дома
    pNHouse // кол-во домов у игрока (Последняя строка без запятой)
    };
    new 
    PlayerInfo[MAX_PLAYERS][pInfo];
    forward SaveAccounts();// форвард для паблика который создадим позднее. 
    Для вывода меню, в паблик - public OnPlayerConnect(playerid)
    PHP код:
    public OnPlayerConnect(playerid)
    {
        new 
    PlayerName[500];
        
    GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); //узнаем ник 
        
    new account[128];
        
    format(account,sizeof(account),"Users/%s.ini",PlayerName); // ищем аккаунт
        // Если нашли, то выводим окно "Авторизация"
        
    if(fexist(account)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT"Авторизация""Введите свой пароль""Войти""");
            else  
    // Если игрок найден, то авторизация
        
    {
            
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT"Регистрация""Введите пароль:""Войти""");
        }
        
    PlayerInfo[playerid][pMoney] = 0// При регистрации 0 денег
        
    PlayerInfo[playerid][pHouse] = 0// 0 домов...
        
    PlayerInfo[playerid][pHouse1] = 0;
        
    PlayerInfo[playerid][pHouse2] = 0;
        
    PlayerInfo[playerid][pNHouse] = 0;
        return 
    true;

    А теперь создаём действия для этих меню.
    В паблик public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    PHP код:
    public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        new 
    PlayerName[MAX_PLAYER_NAME];
        
    GetPlayerName(playerid,PlayerName,sizeof(PlayerName));// Узнаем ник игрока
        
    new account[128];
        
    format(account,sizeof(account),"Users/%s.ini",PlayerName);// Создаем аккаунт
        
    if(dialogid == 1// Регистрация
        
    {
            if(!
    strlen(inputtext)) return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT"Регистрация""Придумайте себе пароль""Войти"""); 
            if(
    response)
            {
                
    GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); //узнаем ник
                
    format(account,sizeof(account),"Users/%s.ini",PlayerName);//ищем акк
                
    if(fexist(account)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT"Авторизация""Введите свой пароль""Войти"""); 
                new 
    iniFile ini_createFile(account); // Создаем аккаунт
                
    if(iniFile 0ini_openFile (account); // Если файл пустой, то откроем и ...
                
    {
                    
    ini_setString(iniFile,"Password",inputtext); // Запишем пароль для игрока
                    
    ini_setInteger(iniFile"Money"0); // Запишем кол-во денег для игрока
                    
    ini_setInteger(iniFile"House"0); //дома
                    
    ini_setInteger(iniFile"House1"0);
                    
    ini_setInteger(iniFile"House2"0);
                    
    ini_setInteger(iniFile"NHouse"0);
                    
    ini_closeFile(iniFile); // Закроем файл
                
    }
            }
            else 
    //проверка Esc'ейпа
            
    {
                
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT"Регистрация""Придумайте себе пароль""Войти""");
            }
        }
        if(
    dialogid == 2)
        {
            if(!
    strlen(inputtext))return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT"Авторизация""Введите свой пароль:""Войти"""); 
            if(
    response)// Проверка на кнопку "ОК" и Enter
            

                new 
    password[64];
                
    GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
                
    format(account,sizeof(account),"Users/%s.ini",PlayerName);
                new 
    iniFile ini_openFile(account);
                {
                    
    ini_getString(iniFile"Password",password); // Узнаём пароль аккаунта.
                    
    if(!strcmp(inputtextpasswordtrue))
                    {
                        
    ini_getInteger(iniFile,"Money"PlayerInfo[playerid][pMoney]); // Запишем кол-во денег игроку
                        
    ini_getInteger(iniFile,"House",PlayerInfo[playerid][pHouse]); // дома
                        
    ini_getInteger(iniFile,"House1",PlayerInfo[playerid][pHouse1]);
                        
    ini_getInteger(iniFile,"House2",PlayerInfo[playerid][pHouse2]);
                        
    ini_getInteger(iniFile,"NHouse",PlayerInfo[playerid][pNHouse]);
                        
    GivePlayerMoney(playeridPlayerInfo[playerid][pMoney]); // Количество денег у игрока
                        
    format(accountsizeof(account), "Вы вошли в свой аккаунт: \"%s\".",PlayerName);
                        
    SendClientMessage(playerid0xFFFF00FF,account);// Напишет в чат
                        
    ini_closeFile(iniFile);// закроем файл
                    
    }
                    else
    //проверка Esc'ейпа
                    
    {
                    
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT"Авторизация""Введите свой пароль:""Войти""");
                    
    SendClientMessage(playerid0xF60000AA"Неверный пароль. Попробуйте ещё раз.");
                    }
                }
            }
            else
    //проверка Esc'ейпа
            
    {
                
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT"Авторизация""Введите свой пароль:""Войти""");
            }
        }
        return 
    true;

    Создаём новый паблик - public SaveAccounts(), ко всем пабликам добавим
    PHP код:
    public SaveAccounts()
    {
        for(new 
    fGetMaxPlayers(); f++)
        {
            if(!
    IsPlayerConnected(f))continue;
            
    SaveAccount(f);
        }

    В конце мода добавляем сток, который и будет выполнять все функции сохранения и записи данных
    PHP код:
    stock SaveAccount(playerid// Сохраняет данные
    {
        new 
    PlayerName[MAX_PLAYER_NAME], account[128];
        
    GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
        
    format(account,sizeof(account), "Users/%s.ini"PlayerName);
        new 
    iniFile ini_openFile(account);// откр. файл
        
    ini_setInteger(iniFile"Money"GetPlayerMoney(playerid));// записываем
        
    ini_setInteger(iniFile"House"PlayerInfo[playerid][pHouse]);
        
    ini_setInteger(iniFile"House1"PlayerInfo[playerid][pHouse1]);
        
    ini_setInteger(iniFile"House2"PlayerInfo[playerid][pHouse2]);
        
    ini_setInteger(iniFile"NHouse"PlayerInfo[playerid][pNHouse]);
        
    ini_closeFile(iniFile);// закрываем
        
    return 1;

    Для сохранения при выходе из игры, в паблик public OnPlayerDisconnect(playerid, reason)
    PHP код:
    public OnPlayerDisconnect(playeridreason)
    {
        
    SaveAccount(playerid); // Сохранение аккаунтов
        
    return true;

    Код:
    
    С модом работу мы закончили, теперь открываем папку с сервером и в папке scriptfiles создаём новую папку Users, в которой и будут сохраняться файлы игроков.
    Код:
    Всё! Заходим в игру регистрируемся, выходим из игры. Открываем папку scriptfiles --> Users и видим там файлик ваш ник.ini.
    PHP код:
        Password 123
        Money 
    0
        House 
    0
        House1 
    0
        House2 
    0
        NHouse 

    Автор: неизвестен
    Последний раз редактировалось Diesel; 20.12.2014 в 05:41.

  2. 1 пользователь сказал cпасибо Diesel за это полезное сообщение:

    Raid3r (04.02.2015)

  3. #2
    Аватар для Scooter
    Новичок
    Регистрация
    10.08.2014
    Сообщений
    14
    Благодарностей
    1
    Сказали спасибо: 2
    PHP код:
    new PlayerName[500]; 
    PHP код:
    new account[128]; 
    PHP код:
    if(fexist(account)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT"Авторизация""Введите свой пароль""Войти"""); 
            else  
    // Если игрок найден, то авторизация 
        

            
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT"Регистрация""Введите пароль:""Войти"""); 
        } 


    PHP код:
    PlayerInfo[playerid][pMoney] = 0// При регистрации 0 денег 
        
    PlayerInfo[playerid][pHouse] = 0// 0 домов... 
        
    PlayerInfo[playerid][pHouse1] = 0
        
    PlayerInfo[playerid][pHouse2] = 0
        
    PlayerInfo[playerid][pNHouse] = 0
    это старый метод
    PHP код:
    for(new pInfo:fpInfo; ++fPlayerInfo[playerid][f] = 0
    в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    PHP код:
    GetPlayerName(playerid,PlayerName,sizeof(PlayerName));// Узнаем ник игрока 
    и чуть спустя опять
    PHP код:
    GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); //узнаем ник 
    :


    PHP код:
    public SaveAccounts() 

        for(new 
    fGetMaxPlayers(); f++) 
        { 
            if(!
    IsPlayerConnected(f))continue; 
            
    SaveAccount(f); 
        } 

    ЗАЧЕМ ?!
    Последний раз редактировалось Scooter; 29.01.2015 в 10:57.

  4. #3
    Аватар для Diesel
    Новичок
    Регистрация
    05.09.2014
    Сообщений
    6
    Благодарностей
    0
    Сказали спасибо: 2
    Ну давай покажи какую бы ты регистрацию сделал!

  5. #4
    Аватар для Scooter
    Новичок
    Регистрация
    10.08.2014
    Сообщений
    14
    Благодарностей
    1
    Сказали спасибо: 2
    Цитата Сообщение от Diesel Посмотреть сообщение
    Ну давай покажи какую бы ты регистрацию сделал!
    я уже все показал
    ну а если ответить на вопрос
    какую бы ты регистрацию сделал!
    я отвечу:
    MySQL R7
    Последний раз редактировалось Scooter; 29.01.2015 в 10:59.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •