Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Регистрация на mxINI - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

  • (5 Страниц) +
  • 1
  • 2
  • 3
  • Последняя »
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

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

#1
Пользователь офлайн   killer02 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
1) Скачиваем инклуд mxINI
2) Помещаем этот инклуд в папку pawno\include
3) В начало мода после #include <a_samp> вставляем:
#include <mxINI> 

new PAccount[MAX_PLAYERS];// Есть аккаунт, или нет 
enum pInfo 
{ 
    pPass[64],// Пароль 
    pAdmin,// Админ уровень 
} 
#define PlayerInfo Player 
new Player[MAX_PLAYERS][pInfo];

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

5) Ищем (ctrl+f) public OnPlayerConnect(playerid) и вставляем:
 //Reset start 
    PlayerInfo[playerid][pAdmin] = 0; 
//End 
    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;// Аккаунта нет 
    } 

6) Ищем (ctrl+f) public 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Зарегистрируйтесь введя пароль в окошко","Ввод","");// Показываем диалог регистрации. 
        } 
    }  

7) Ищем (ctrl+f) public OnPlayerDisconnect(playerid, reason) и вставляем:
SavePlayer(playerid);// Сохраняем игрока

8) И в конец мода вставляем:
stock SavePlayer(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_openFile(string);// Открываем файл по тому пути который указали. 
    ini_setString(iniFile,"Pass",Player[playerid][pPass]);/
/ Записываем пароль игрока в файл 
    ini_setInteger(iniFile,"Admin",Player[playerid][pAdmin]
);// Записываем уровень админа 
    ini_closeFile(iniFile);// Закрываем файл 
} 

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

9) В папке \scriptfiles создаем папку для хранения аккаунтов, получится: \scriptfiles\players
Автор регистрации не я, написал ее некий: Joje_Wayne

Сообщение отредактировал iRusel: 09 Ноябрь 2013 - 20:36

-4

#2
Пользователь офлайн   Mikes 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Не могу никак поправить....
C:\Users\Андрей\Desktop\Untitled(2).pwn(235) : warning 217: loose indentation
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


1 Warning.

public 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Зарегистрируйтесь введя пароль.","Ввод","");// Показываем диалог регистрации.
            }
        }
return 1;
}

0

#3
Пользователь офлайн   DeViLsS 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
-

Прикрепленные файлы


Сообщение отредактировал DeViLsS: 13 Декабрь 2013 - 06:53

0

#4
Пользователь офлайн   DIEGOS 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияMikes (12 Декабрь 2013 - 21:37) писал:

...


loose indentation, ты где то пробелов мало поставил или за много
0

#5
Пользователь офлайн   Mikes 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDIEGOS (13 Декабрь 2013 - 11:11) писал:

loose indentation, ты где то пробелов мало поставил или за много

Скрытый текст [Показать]




Чё делать?
0

#6
Пользователь офлайн   ArtmeTuborgov 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
C:\Users\****\Desktop\pawno\new.pwn(52) : error 017: undefined symbol "playerid"



Что делать??
0

#7
Пользователь офлайн   killer02 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияArtmeTuborgov (17 Декабрь 2013 - 14:53) писал:

C:\Users\****\Desktop\pawno\new.pwn(52) : error 017: undefined symbol "playerid"



Что делать??


Скинь пожалуйста весь паблик, в котором произошла ошибка.
0

#8
Пользователь офлайн   De1uxeKZ 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияkiller02 (30 Декабрь 2013 - 16:44) писал:

Скинь пожалуйста весь паблик, в котором произошла ошибка.

#pragma tabsize 0
-1

#9
Пользователь офлайн   Morphone 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
Причем тут #pragma? Это же игнор этой ошибки 217: loose indentation(Не лесенкой когда)

P.S. Строчки скинь

Просмотр сообщенияMikes (13 Декабрь 2013 - 16:26) писал:

ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"???? ?????","????????????\n??? ??????? ???????????????\n?????????????","????","");

Скобку пропустил.
0

#10
Пользователь офлайн   marchela_17 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Не твоя! В скайп: woodiwwe доказательства могу предоставить!
0

Поделиться темой:


  • (5 Страниц) +
  • 1
  • 2
  • 3
  • Последняя »
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей