Страница 1 из 23 12311 ... ПоследняяПоследняя
Показано с 1 по 10 из 230

Тема: Простая регистрация в диалоговых окнах - mxINI

  1. #1
    Активный пользователь Аватар для GeraniS
    Регистрация
    13.02.2011
    Адрес
    НСК
    Сообщений
    360
    Репутация: 26

    Звание: на пути к лучшему

    Сообщение Простая регистрация в диалоговых окнах - mxINI

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

    Решил сделать свой сервер. Ну а так как все начинается с регистрации, то и появился вопрос: как сделать и что же нужно использовать. Пролистав немало страниц на форуме, я понял, что единых и понятных уроков нет (на тот момент времени не было). Вот так и появилась идея создания данного решения. Ну что ж, приступим.

    Приготовление.

    Для регистрации нам понадобится особый инклюд mxINI. Скачать его можете тут(кликабельно).
    Его нужно поместить в специальную папку, которая находится:
    PHP код:
    папка с сервером/pawno/include 
    После того как мы поместили инклюд в нужную папку, переходим в наш мод/new.pwn

    Ко всем форвардам (если они есть, если нету, то под инклюдами) вставляем такие форварды:
    forward OnPlayerRegister(playerid, password[]); //паблик отвечающий за регистрацию
    forward OnPlayerLogin(playerid,password[]); //паблик отвечающий за логин
    forward SaveAccounts(); //сток отвечающий за сохранение аккаунта[SIZE=2][/SIZE]


    В начале мода создаем масив отвечающий за нашу регистрацию.
    enum pInfo
    {
    pPass [64], //переменная отвечающая за пароль от аккаунта
    pMoney, //переменная отвечающая за деньги
    Float:pHealth, //переменная типа Float, отвечающая за здоровье (тип Float поддерживает значения с плавающей точкой, например 3.66)
    }
    new Player[MAX_PLAYERS][pInfo];


    И ко всем new добавляем переменную, которая отслеживает, существует ли уже аккаунт с данным ником или нет.
    new PAccount [MAX_PLAYERS];


    Теперь мы готовы приступать к созданию самой "начинки" регистрации.

    Создаем "тело" регистрации.

    В паблик OnPlayerConnect(playerid) вставляем следующее:
    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;
    }

    в строчке "format(string,sizeof(string),"players/%s.ini", playername);" players можете изменить на любое другое название вашей папки в которую будет сохранятся файл аккаунта. Данная папка находится:
    PHP код:
    папка с сервером/scriptfiles 
    если же ее нет, то нужно создать папку с точно таким же именем, иначе файл не будет сохранятся.

    Затем в паблик OnPlayerRequestClass(playerid, classid) вставляем приглашения к диалогам, вместо выбора скина:
    if(PAccount[playerid] == 1)// Если аккаунт есть    {
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Добро пожаловать.\nВаш аккаунт зарегистрирован.\nВведите свой пароль в окошко","Ввод","");// Показываем диалог входа в игру.
    }
    else// Если аккаунта нет
    {
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт не зарегистрирован.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");// Показываем диалог регистрации.
    }


    Теперь у нас есть приглашения к диалогам, но самих действий с ними нет. Что бы это исправить, в конец мода вставляем наши паблики:
    public OnPlayerRegister(playerid, password[])// Паблик регистрации
    {
    if(IsPlayerConnected(playerid))
    {
    new string[64];// Масив с путём для файла
    new playername[MAX_PLAYER_NAME];// Масив для получения имени игрока
    new playersip[64];
    GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
    GetPlayerIp(playerid,playersip,sizeof(playersip));
    format(string,sizeof(string), "players/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
    new iniFile = ini_createFile(string);// Создаём файл с именем игрока в папке players
    if(iniFile < 0)// Если Файла нет
    {
    iniFile = ini_openFile(string);// Открываем
    }
    if(iniFile >= 0)// Если файл есть
    {
    strmid(Player[playerid][pPass],password,0,strlen(password),255);// Присваиваем масиву pPass, значение password[]
    ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл
    ini_setFloat(iniFile, "Heal", 100.0);
    ini_setInteger(iniFile,"Money",300);
    ini_closeFile(iniFile);// Закрываем файл
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Добро пожаловать.\nВаш аккаунт зарегистрирован.\nВведите свой пароль в окошко","Ввод","");// Показываем диалог входа в игру.
    }
    }
    return 1;
    }

    и
    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_getFloat(iniFile, "Heal", Player[playerid][pHeal]);
    ini_getInteger(iniFile,"Money",Player[playerid][pMoney]);
    ini_closeFile(iniFile);// Закрываем файл
    }
    else// Если пароль не верен..
    {
    ini_closeFile(iniFile);// Закрываем файл
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Добро пожаловать.\nВаш аккаунт зарегистрирован.\nВведите свой пароль в окошко","Ввод","");// Показываем диалог входа в игру.
    return 1;
    }
    SpawnPlayer(playerid);// Спавним игрока
    }
    return 1;
    }


    Ну а что бы все это работало, в паблик OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) вставляем это:
    if(dialogid == 1)// Ид диалога Для Логина
    {
    if(response)// Если игрок нажал первую кнопку входа
    {
    if(!strlen(inputtext))// Если окно ввода пустое, выводим диалог снова
    {
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Добро пожаловать.\nВаш аккаунт зарегистрирован.\nВведите свой пароль в окошко","Ввод","");// Показываем диалог входа в игру.
    return 1;
    }
    new pass[64];// Масив с паролем
    strmid(pass,inputtext,0,strlen(inputtext),64);// Считываем текст с диалога
    OnPlayerLogin(playerid,pass);// Запускаем паблик входа
    }
    else// Если игрок нажал Esc, вернём ему диалог
    {
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Добро пожаловать.\nВаш аккаунт зарегистрирован.\nВведите свой пароль в окошко","Ввод","");// Показываем диалог входа в игру.
    }
    }
    if(dialogid == 2)// Ид диалога для регистрации
    {
    if(response)// Если игрок нажал первую кнопку
    {
    if(!strlen(inputtext))// Если окно ввода пустое, выводим диалог снова
    {
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт не зарегистрирован.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");// Показываем диалог регистрации.
    return 1;
    }
    new pass[64];// Масив с паролем
    strmid(pass,inputtext,0,strlen(inputtext),64);// Считываем текст с диалога

    OnPlayerRegister(playerid,pass);// Запускаем паблик регистрации
    }
    else// Если игрок нажал Esc, вернём ему диалог
    {
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт не зарегистрирован.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");// Показываем диалог регистрации.
    }
    }


    Ну и в завершении всего, добавляем сток, который будет сохранять информацию по игроку. В самом конце мода создаем это:
    stock SavePlayer(playerid)
    {
    new string[64];// Масив с путём для файла
    new playername[MAX_PLAYER_NAME];// Масив для получения имени игрока
    new Float:health;
    GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
    GetPlayerHealth(playerid,health); //Получаем кол-во хп
    format(string, sizeof(string), "players/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
    new iniFile = ini_openFile(string);// Открываем файл по тому пути который указали.
    ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл
    ini_setFloat(iniFile,"Heal",health);
    ini_setInteger(iniFile,"Money",GetPlayerMoney(playerid));
    ini_closeFile(iniFile);// Закрываем файл
    }


    Ну и что бы все сохранялось при выходе игрока с сервера, в паблик OnPlayerDisconnect(playerid, reason) вставляем это:
    SavePlayer(playerid); //вызываем наш сток сохранения


    Вот и все. Ваша регистрация создана. Не забудьте, если вы поменяли путь к папке для сохранения файла в одном месте, то нужно поменять его везде. Ну вроде бы и все. Об ошибках или вопросах пишите, надеюсь смогу ответить

    Полностью реконструировал тему. Надеюсь теперь косяков не будет. Не забывайте про + если помог.
    Помог?! Ставь +(плюс кликабелен) скорее:opasnoste:

    Вернулся в павно, ну здравствуйте ребятки!

    Готовые решения:
    [SCR][ALL]Простая регистрация в диалоговых окнах - mxINI (реконструирована, теперь должна работать)

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

    ReDDy (23.08.2015)

  3. #2
    Активный пользователь Аватар для 9GYAR
    Регистрация
    28.02.2011
    Адрес
    Челябинск
    Возраст
    30
    Сообщений
    613
    Репутация: 33

    Звание: на пути к лучшему

    Re: [ scr ][ all ][ Простая регистрация в диалоговых окнах - mxINI ]

    молодцы ребята...+ поставлю
    [scr][gf][Навык стрельбы]
    [scr][gf][Работа грузчика и прораба]
    [scr][gf][Система материалов]
    [GM][NRL]nrl-rp
    Skype:Sanchazz1993
    Хотите меня отблагодарить? нажимай сюда
    Последние полученные отзывы (Всего баллов:259)

  4. #3
    Активный пользователь Аватар для Dr._House
    Регистрация
    15.05.2011
    Адрес
    Владивосток
    Сообщений
    382
    Репутация: 32

    Звание: на пути к лучшему

    Re: [ scr ][ all ][ Простая регистрация в диалоговых окнах - mxINI ]

    Как раз для сервере надо.Лови +
    Стив Джобс помним,любим.:ba::ba:
    :] ;d ;]
    Я вернулся,И уже в минусе зашибысььь

  5. #4
    Активный пользователь Аватар для GeraniS
    Регистрация
    13.02.2011
    Адрес
    НСК
    Сообщений
    360
    Репутация: 26

    Звание: на пути к лучшему

    Re: [ scr ][ all ][ Простая регистрация в диалоговых окнах - mxINI ]

    Спс, стараюсь:ups:
    Помог?! Ставь +(плюс кликабелен) скорее:opasnoste:

    Вернулся в павно, ну здравствуйте ребятки!

    Готовые решения:
    [SCR][ALL]Простая регистрация в диалоговых окнах - mxINI (реконструирована, теперь должна работать)

  6. #5
    Активный пользователь Аватар для Paxan_Pavlov
    Регистрация
    14.05.2011
    Адрес
    ekb
    Сообщений
    230
    Репутация: 4

    Звание: пока не определено

    Re: [ scr ][ all ][ Простая регистрация в диалоговых окнах - mxINI ]

    Лови +ик,заслужил :bq:
    Мои работы:
    Skype: paxan_pavlov1

  7. #6
    Проверенный Аватар для frog163
    Регистрация
    12.04.2010
    Адрес
    Samara
    Возраст
    31
    Сообщений
    4,548
    Репутация: 365

    Звание: - очень-очень хороший человек

    Re: [ scr ][ all ][ Простая регистрация в диалоговых окнах - mxINI ]

    Всем спасибо, ну я пойду, пока мне не сказали: "Пощель в ..., это не урок!!!"
    так это и не урок xD это готовое решение
    Ничто не ограничивает полет мысли программиста так, как компилятор, сцуко!
    Если в предложении собеседника различного рода смайлов больше чем слов - однозначно, что этот индивид страдает критической, неизлечимой и при этом прогрессирующей формой долбоебизма © лурка
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

  8. #7
    Активный пользователь
    Регистрация
    19.03.2011
    Адрес
    Россия
    Возраст
    29
    Сообщений
    560
    Репутация: 54

    Звание: скоро придёт к известности

    Re: [ scr ][ all ][ Простая регистрация в диалоговых окнах - mxINI ]

    ошибка:
    error 017: undefined symbol "Player"
    PHP код:
        ini_getInteger(iniFile"Money"Player[playerid][pMoney]); // Запишем кол-во денег в переменную. 
    new Player; не хватает или что ?

  9. #8
    Проверенный Аватар для frog163
    Регистрация
    12.04.2010
    Адрес
    Samara
    Возраст
    31
    Сообщений
    4,548
    Репутация: 365

    Звание: - очень-очень хороший человек

    Re: [ scr ][ all ][ Простая регистрация в диалоговых окнах - mxINI ]

    PHP код:
    new Player[MAX_PLAYERS][pInfo]; 
    Ничто не ограничивает полет мысли программиста так, как компилятор, сцуко!
    Если в предложении собеседника различного рода смайлов больше чем слов - однозначно, что этот индивид страдает критической, неизлечимой и при этом прогрессирующей формой долбоебизма © лурка
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

  10. #9
    Почетный пользователь Аватар для EvgeN 1137
    Регистрация
    10.01.2011
    Адрес
    не скажу
    Сообщений
    3,005
    Репутация: 580

    Звание: - это имя известно всем

    Re: [ scr ][ all ][ Простая регистрация в диалоговых окнах - mxINI ]

    Цитата Сообщение от 4ydak Посмотреть сообщение
    ошибка:
    error 017: undefined symbol "Player"
    PHP код:
        ini_getInteger(iniFile"Money"Player[playerid][pMoney]); // Запишем кол-во денег в переменную. 
    new Player; не хватает или что ?
    под enum'ом забыл засунуть new Player[MAX_PLAYERS][pInfo];
    :)

  11. #10
    Активный пользователь
    Регистрация
    19.03.2011
    Адрес
    Россия
    Возраст
    29
    Сообщений
    560
    Репутация: 54

    Звание: скоро придёт к известности

    Re: [ scr ][ all ][ Простая регистрация в диалоговых окнах - mxINI ]

    я после этого enum поставил этот new. Зачем 2 раза то ?

    все та ошибка и весит )

Страница 1 из 23 12311 ... ПоследняяПоследняя

Похожие темы

  1. Регистрация в диалоговых окнах
    от Coper_Non в разделе Вопросы по скриптингу
    Ответов: 6
    Последнее сообщение: 22.09.2011, 20:46
  2. Регистрация в диалоговых окнах
    от hartmary в разделе Вопросы по скриптингу
    Ответов: 0
    Последнее сообщение: 28.05.2011, 16:44
  3. Приветствие в диалоговых окнах и потом регистрация
    от REBOK в разделе Вопросы по скриптингу
    Ответов: 1
    Последнее сообщение: 29.12.2010, 20:24

Ваши права

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