Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 3 1 2 3 ПоследняяПоследняя
Показано с 1 по 10 из 23
  1. #1
    Аватар для Snoopdy
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.10.2015
    Сообщений
    4
    Репутация:
    0 ±

    Регистрация На Инклуде mxINI

    Здравствуйте, ув. пользователи PP :3, сегодня я хотел бы представить вам свою регистрацию на инклуде mxINI.
    Сразу смотрим есть ли у нас такой инклуд:
    PHP код:
    #include <mxINI> 
    Если да то двигаем дальше, иначе ищем в гугле :D.

    Добавим enum с 1 переменной:
    PHP код:
    enum pInfo
    {
        
    pPassword[34],
            
    pName[MAX_PLAYER_NAME],
            
    bool:PLogged,
            
    bool:PAccount
    }
    new 
    PlayerInfo[MAX_PLAYERS][pInfo]; 
    Добавили? Идем дальше.
    Ищем OnPlayerConnect и добавляем вот такой код:
    PHP код:
            for(new pInfo:epInfo; ++ePlayerInfo[playerid][e] = 0// Обнуляем все 
            
    new string[MAX_PLAYER_NAME+14];// Объявим переменную
            
    GetPlayerName(playerid,PlayerInfo[playerid][pName],MAX_PLAYER_NAME);//Узнаем имя
            
    format(string,sizeof string,"Accounts/%s.ini"PlayerInfo[playerid][pName]);//Ищем Аккаунт в папке 'Accounts', и формартируем текст
            
    PlayerInfo[playerid][PAccount] = (fexist(string)) ? (true) : (false);//Если есть акк, то значение PlayerInfo[playerid][PAccount] = истина, иначе ложь 
    Вот с этим пабликом покончили, двигаем в OnPlayerRequestClass:
    Видим что-то типа:
    PHP код:
    SetPlayerPos(playerid1958.37831343.157215.3746);
        
    SetPlayerCameraPos(playerid1958.37831343.157215.3746);
        
    SetPlayerCameraLookAt(playerid1958.37831343.157215.3746); 
    Удаляем !

    И добавим вот это:
    PHP код:
    SetPlayerCameraPos(playerid, -2498.01461447.5419126.1710);
    SetPlayerCameraLookAt(playerid, -2498.64771448.3204126.1411);
    if(
    PlayerInfo[playerid][PAccount] == true){ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт есть на сервере\nВведите свой пароль в окошко","Ввод","");}
    else{
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт не найден.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");} 
    Идем в OnPlayerDisconnect:
    И суем вот это:
    PHP код:
    SavePlayer(playerid); 
    Осталось только диалоги сделать, да и паблики реги и сохранения :3.
    В OnDialogResponse:
    PHP код:
    switch(dialogid)
            {
                case 
    1:
                {
                    if(!
    response || !strlen(inputtext)) return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт есть на сервере\nВведите свой пароль в окошко","Ввод","");
                     
    OnPlayerLogin(playerid,inputtext);
                     return 
    1;
                }
                case 
    2:
                {
                    if(!
    response || !strlen(inputtext)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт не найден.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");
                    
    OnPlayerRegister(playerid,inputtext);
                    return 
    1;
                }
            } 
    Ну и три функции, отвечающие за загрузку/сохранение/регистрацию:
    PHP код:
    SavePlayer(playerid)
    {
        if(!
    PlayerInfo[playerid][PLogged]) return 1;
        new 
    string[MAX_PLAYER_NAME+14];
            
    format(stringsizeof string"Accounts/%s.ini"PlayerInfo[playerid][pName]);
            new 
    iniFile ini_openFile(string);
            
    ini_setString(iniFile,"Password",PlayerInfo[playerid][pPassword]);
            
    ini_closeFile(iniFile);
            return 
    1;
    }

    OnPlayerRegister(playeridpassword[])
    {
            if(!
    IsPlayerConnected(playerid)) return 1;
            new 
    string[MAX_PLAYER_NAME+14];
            
    format(string,sizeof string"Accounts/%s.ini"PlayerInfo[playerid][pName]);
            new 
    iniFile ini_createFile(string);
            
    ini_setString(iniFile,"Password",password);
            
    ini_closeFile(iniFile);
            
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт есть на сервере\nВведите свой пароль в окошко","Ввод","");
            return 
    1;
    }

    OnPlayerLogin(playerid,password[])
    {
            if(!
    IsPlayerConnected(playerid)) return 1;
            new 
    string[MAX_PLAYER_NAME+14], pass[34];
            
    format(string,sizeof string"Accounts/%s.ini"PlayerInfo[playerid][pName]);
            new 
    iniFile ini_openFile(string);
            
    ini_getString(iniFile,"Password",pass,34);
            
    ini_closeFile(iniFile);
            if(
    strcmp(pass,password,true) == 0)
            {
                
    strmid(PlayerInfo[playerid][pPassword],pass,0,strlen(pass),34);
                    
    SendClientMessage(playerid,0xFF00000,"Добро пожаловать на наш сервер");
                    
    PlayerInfo[playerid][PLogged] = true;
                    
    SpawnPlayer(playerid);
                    return 
    1;
            }
            else return 
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт есть на сервере\nВведите свой пароль в окошко","Ввод","");

    Автор я Snoopdy
    Помогал мне в оптимизации m1n1w

    Писал для своего проекта, кому понадобится, берите!
    Последний раз редактировалось Snoopdy; 08.11.2015 в 21:37. Причина: Сделал как надо.

  2. #2
    Аватар для Osetin
    •Администратор•

    Статус
    Оффлайн
    Регистрация
    26.03.2013
    Адрес
    ♔Osetia, Vladikavkaz♔
    Сообщений
    3,432
    Репутация:
    1093 ±
    Цитата Сообщение от Snoopdy Посмотреть сообщение
    Честно говорю, лучше системы регистрации на данном инклуде не видал, писался для своего проекта, дерзайте!
    http://pro-pawn.ru/showthread.php?6571

    Да, и если не сложно, выкладывайте код в [PHP] [ /PHP]

  3. #3
    Аватар для Snoopdy
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.10.2015
    Сообщений
    4
    Репутация:
    0 ±
    Ну извиняю, писал сначало для другого портала, там говнища..... Удалю эту строку пожалуй :3

  4. #4
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    • Сначала вы не используете макрос MAX_PLAYER_NAME
      Код:
      enum pInfo
      {
      	pPassword[34],
      	pName[24],
      	bool:PLogged,
      	bool:PAccount
      }
      new PlayerInfo[MAX_PLAYERS][pInfo];
      А потом

      Код:
      new string[MAX_PLAYER_NAME+14];
    • Это вы так оптимизировали код?
      PHP код:
      if(PlayerInfo[playerid][PLogged]){SavePlayer(playerid);} 
    • Я бы все условия прям в функции впихнул.

  5. #5
    Аватар для Snoopdy
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.10.2015
    Сообщений
    4
    Репутация:
    0 ±
    Ну использование, счас поменяю :D,
    а вот условие бы я туды не засунул т.к. у каждого по разному мод функционирует с сохранением, а так Спасибо.

  6. #6
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    Цитата Сообщение от Snoopdy Посмотреть сообщение
    Ну использование, счас поменяю :D,
    а вот условие бы я туды не засунул т.к. у каждого по разному мод функционирует с сохранением, а так Спасибо.
    Что? Почему? Если это мануал, то твой код должен быть оптимален для любого мода, запомни это перед следующим созданием топика.

  7. #7
    Аватар для Snoopdy
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.10.2015
    Сообщений
    4
    Репутация:
    0 ±
    Цитата Сообщение от wAx Посмотреть сообщение
    Что? Почему? Если это мануал, то твой код должен быть оптимален для любого мода, запомни это перед следующим созданием топика.
    Ладно.Исправлю

  8. #8
    Аватар для Геннадий Акимов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.08.2015
    Адрес
    СССР
    Сообщений
    46
    Репутация:
    1 ±
    stock/public OnPlayerLogin(playerid,password[]) - за этого будут ошибки !

    - - - Добавлено - - -

    Цитата Сообщение от Геннадий Акимов Посмотреть сообщение
    stock/public OnPlayerLogin(playerid,password[]) - за этого будут ошибки !
    Я это кто-му то что вдруг на неё наткнуться новички


    С уважением ваш Геннадий Акимов

    Официальная группа в контакте проекта Sprunk: Перейти
    Официальный сайт проекта Sprunk: В разработке
    Примерная дата открытие проекта Sprunk: 1.12.2015

  9. #9
    Аватар для Snoopdy
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.10.2015
    Сообщений
    4
    Репутация:
    0 ±
    Цитата Сообщение от Геннадий Акимов Посмотреть сообщение
    stock/public OnPlayerLogin(playerid,password[]) - за этого будут ошибки !

    - - - Добавлено - - -



    Я это кто-му то что вдруг на неё наткнуться новички
    Какая ошибка? Поподробнее, не будет ошибки, тестировал разы 10

  10. #10
    Аватар для Геннадий Акимов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.08.2015
    Адрес
    СССР
    Сообщений
    46
    Репутация:
    1 ±
    ну ты в мод писал просто OnPlayerLogin(playerid,password[]) или в начало писал stock или public


    С уважением ваш Геннадий Акимов

    Официальная группа в контакте проекта Sprunk: Перейти
    Официальный сайт проекта Sprunk: В разработке
    Примерная дата открытие проекта Sprunk: 1.12.2015

 

 
Страница 1 из 3 1 2 3 ПоследняяПоследняя

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

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

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

Ваши права

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