Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13
  1. #1
    Аватар для Londlem
    Модератор

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,360
    Репутация:
    767 ±

    Система регистрации [file]

    Регистрация на стандартном файловом инклуде "file".

    В начало мода:

    PHP код:

    enum pInfo
    {
        
    pName[MAX_PLAYER_NAME], // Для записи имени игрока
        
    pLogged// Для проверки, вошёл ли игрок в аккаунт
        
    pPassword[20], // Для записи пароля игрока
        
    pAdmin // Для записи уровня админки у игрока
    };

    new 
    PlayerInfo[MAX_PLAYERS][pInfo];

    static const 
    MsgBox[][] = // Массив для текста в диалоге при регистрации / авторизации
    {
        
    "{00CC00}Добро пожаловать на сервер, {FF0000}%s{00CC00}.\nТакой аккаунт {FF0000}не зарегистрирован {00CC00}на сервере, введите пароль в окно, чтобы зарегистрировать аккаунт.",
        
    "{00CC00}Добро пожаловать на сервер, {00FF00}%s{00CC00}.\nТакой аккаунт {00FF00}зарегистрирован {00CC00}на сервере, введите пароль в окно, чтобы войти в аккаунт."
    }; 
    В public OnPlayerConnect:
    PHP код:
    PlayerInfo[playerid][pLogged] = 0;
    // Дать понять, что игрок не вошёл в аккаунт

    GetPlayerName(playeridPlayerInfo[playerid][pName], MAX_PLAYER_NAME);
    // Получаем никнейм игрока

    new str[171 MAX_PLAYER_NAME];
     
    // Массив, с размером нулевого символа, длины строки текста диалога регистрации, максимальной длины никнейма

    str "Accounts/"strcat(strPlayerInfo[playerid][pName]), strcat(str".ini");
    //    Accounts/        Accounts/Никнейм        Accounts/Никнейм.ini

    new ex fexist(str); // Переменная для определения, существует ли аккаунт игрока

    format(strsizeof(str), MsgBox[ex], PlayerInfo[playerid][pName]); // Превратим "%s" в полученный никнейм игрока

    ShowPlayerDialog(playeridexDIALOG_STYLE_INPUT"Добро пожаловать на сервер"str"Далее"""); // Если игрок зарегистрирован покажет диалог логина, иначе - диалог регистрации 
    В public OnPlayerDisconnect
    PHP код:
    if(PlayerInfo[playerid][pLogged]) SaveAccount(playerid); // Если игрок входил в аккаунт, то сохраним аккаунт игрока 
    В public OnDialogResponse:
    PHP код:
    switch(dialogid// Пробежимся по идам диалога, если нашёлся тот диалог, который выбрал игрок, то перейдём к коду который прилагается к иду диалога
    {
        case 
    0// Если игрок выбрал 0 ид диалога (диалог регистрации)
        
    {
            new 
    str[171 MAX_PLAYER_NAME];
            
    // Массив, с размером нулевого символа, длины строки текста диалога регистрации, максимальной длины никнейма

            
    if(response == || !(<= strlen(inputtext) <= 20)) // Если длина пароля меньше 3 либо больше 20, либо игрок нажал на вторую кнопку
            
    {
                
    format(strsizeof(str), MsgBox[0], PlayerInfo[playerid][pName]);
                     
    // Превратим "%s" в полученный никнейм игрока

                
    ShowPlayerDialog(playerid0DIALOG_STYLE_INPUT"Добро пожаловать на сервер"str"Далее""");
            }

            
    strmid(PlayerInfo[playerid][pPassword], inputtext02121);
                
    // Запишем введённый текст с диалога в массив с паролем игрока

            
    str "Accounts/"strcat(strPlayerInfo[playerid][pName]), strcat(str".ini");
            
    //    Accounts/        Accounts/Никнейм        Accounts/Никнейм.ini

            
    new Filefile fopen(strio_write);
            
    // Откроем файл аккаунта игрока в режиме записи

            
    if(file// Если файл открылся
            
    {
                
    str "Password="strcat(strinputtext);
                
    // Password=Введённый текст в диалог

                
    fwrite(filestr);
                
    // Запишем получившуются строку "str" в файл

                
    fclose(file);
                
    // Закроем файл
            
    }
            
    str "Добро пожаловать, "strcat(strPlayerInfo[playerid][pName]), strcat(str", вы успешно зарегистрировались");
            
    SendClientMessage(playerid0xFF9900FFstr);
            
    PlayerInfo[playerid][pLogged] = 1// Дать понять, что игрок вошёл в аккаунт
        
    }
        case 
    1:
        {
            new 
    str[159 MAX_PLAYER_NAME];
            
    // Массив, с размером нулевого символа, длины строки текста диалога логина, максимальной длины никнейма

            
    str "Accounts/"strcat(strPlayerInfo[playerid][pName]), strcat(str".ini");
            
    //    Accounts/        Accounts/Никнейм        Accounts/Никнейм.ini

            
    if(response == || inputtext[0] == '\0'// Если игрок нажал на вторую кнопку, либо не ввёл ничего в диалог
            
    {
                
    format(strsizeof(str), MsgBox[1], PlayerInfo[playerid][pName]); // Превратим "%s" в полученный никнейм игрока
                
    ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"С возвращением на сервер"str"Далее""");
                return 
    true;
            }

            new 
    Filefile fopen(strio_read); // Открываем файл в режиме чтения
            
    if(file// Если файл открылся
            
    {
                
    fread(filestr); // Прочитаем первую строку из файла
                
    GetDataAfterChar(str); // Записали данные после символа "=", в параметрах его нет, так как по умолчанию, в параметрах функции стоит этот символ
                
    if(strcmp(strinputtextfalse))
                {
                    
    format(strsizeof(str), MsgBox[1], PlayerInfo[playerid][pName]); // Превратим "%s" в полученный никнейм игрока
                    
    ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT"Вы ввели неверный пароль"str"Далее""");
                    
    fclose(file); // Закроем файл
                
    }
                else
                {
                    
    strmid(PlayerInfo[playerid][pPassword], str02121); // Запишем сконвертированную строку в массив с паролем игрока
                    
    while(fread(filestr)) // Пробежимся по строкам из файла
                    
    {
                        
    // Важное примечание! Распологайте строки в файле так, чтобы потом они считывались по порядку, если у вас сначала сохраняется, уровень админки, потом деньги, то сохраняйте так, как показано ниже
                        
    if(!strcmp(str"AdminLevel="true11)) PlayerInfo[playerid][pAdmin] = strval(str[11]);
                        if(!
    strcmp(str"Money="true6)) GivePlayerMoney(playeridstrval(str[6]));
                    }
                    
    fclose(file); // Закроем файл
                    
    str "С возвращением, "strcat(strPlayerInfo[playerid][pName]), strcat(str", вы успешно вошли в аккаунт.");
                    
    // С возвращением,             С возвращением, Никнейм     С возвращением, Никнейм, вы успешно вошли в аккаунт.
                    
    SendClientMessage(playerid0xFF9900FFstr);
                    
    PlayerInfo[playerid][pLogged] = 1// Дать понять, что игрок вошёл в аккаунт
                
    }
            }
        }

    В конец мода:
    PHP код:
    stock GetDataAfterChar(str[], ch[] = "="// Функция для получения данных после символа
    {
        new 
    len strlen(str); // Создаём переменную в которой будет записана длина строки
        
    if(str[len 1] == '\n'str[len 1] = '\0'// Если последний символ строки переход на новую строку, то этот символ будет концом строки
        
    strmid(strstrstrfind(strch) + 16464); // Запишем данные, полученные после символа, указанные в параметрах (по умолчанию символ "=")
    }

    stock SaveAccount(playerid// Функция для сохранения аккаунта игрока
    {
        new 
    str[34];
        
    // Массив для форматирования строк

        
    str "Accounts/"strcat(strPlayerInfo[playerid][pName]), strcat(str".ini");
        
    //    Accounts/        Accounts/Никнейм        Accounts/Никнейм.ini

        
    new Filefile fopen(strio_write);
        
    // Откроем файл аккаунта игрока в режиме записи

        
    if(file// Если файл открылся
        
    {
            
    format(str31"Password=%s\n"PlayerInfo[playerid][pPassword]);
            
    // Запишем в аккаунт игрока его пароль

            
    fwrite(filestr);
            
    // Запишем получившуются строку "str" в файл

            
    format(str14"AdminLevel=%d\n"PlayerInfo[playerid][pAdmin]);
            
    // Запишем в аккаунт игрока его уровень администратирования

            
    fwrite(filestr);
            
    // Запишем получившуются строку "str" в файл

            
    format(str13"Money=%d"GetPlayerMoney(playerid));
            
    // Запишем в аккаунт игрока его количество денег

            
    fwrite(filestr);
            
    // Запишем получившуются строку "str" в файл

            
    fclose(file);
            
    // Закроем файл
        
    }

    Автор: Londlem

    Специально для: Pro-Pawn.Ru


    Копирование данной статьи на других ресурсах без разрешения автора запрещено!
    Последний раз редактировалось Londlem; 24.04.2014 в 00:17.

  2. 9 пользователя(ей) сказали cпасибо:
    #Vito (02.02.2014)BaBuIIIkaDrifteR (13.03.2015)Daniel_Cortez (29.03.2014)Flime (28.06.2014)Hidden (01.02.2014)Johny (02.02.2014)Osetin (01.02.2014)SkillYoYo (17.02.2014)[ForD] (02.02.2014)
  3. #2
    Аватар для Hidden
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.11.2013
    Сообщений
    74
    Репутация:
    41 ±
    Как же любишь ты эти файлы))

  4. #3
    Аватар для Londlem
    Модератор

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,360
    Репутация:
    767 ±
    Цитата Сообщение от Hidden Посмотреть сообщение
    Как же любишь ты эти файлы))
    А как же :3

  5. #4
    Аватар для [ForD]
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    694
    Репутация:
    104 ±
    Вроде хорошо,сегодня лимит,завтра отплюсую тему :3 Молодец.
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

  6. #5
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    560
    Репутация:
    272 ±
    Баян.
    Кому-то явно нечем заняться.

  7. #6
    Аватар для Londlem
    Модератор

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,360
    Репутация:
    767 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    Баян.
    Кому-то явно нечем заняться.
    Нечем заняться? Найди хотя бы одну систему регистрации на этом инклуде.

  8. #7
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    PHP код:
    static const MsgBox[][] = // Массив для текста в диалоге при регистрации / авторизации
    {
        
    "{00CC00}Добро пожаловать на сервер, {FF0000}%s{00CC00}.\nТакой аккаунт {FF0000}не зарегистрирован {00CC00}на сервере, введите пароль в окно, чтобы зарегистрировать аккаунт.",
        
    "{00CC00}Добро пожаловать на сервер, {00FF00}%s{00CC00}.\nТакой аккаунт {00FF00}зарегистрирован {00CC00}на сервере, введите пароль в окно, чтобы войти в аккаунт."
    }; 
    Два вопроса
    1) Зачем это static const, или количество модификаторов увеличивает ваше ЧСВ? ©
    2) Какой смысл создавать для подобного текста массивы? Это разве удобно, выискивать код в начале мода, когда диалог расположен где-то в центре? Разве сложно поместить код в тот же format или создать stock, если диалог часто вызывается? Никогда не понимал к чему такие извращения :с
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. #8
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,282
    Репутация:
    417 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    Баян.
    Кому-то явно нечем заняться.
    Не все на SQLite сидят.

  10. #9
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    560
    Репутация:
    272 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Нечем заняться? Найди хотя бы одну систему регистрации на этом инклуде.
    Нашел. Мод Alex009, название: Wars of the Gangs.
    Да и к тому же, все файловые ридеры/райдеры основаны на этом инклуде.

  11. #10
    Аватар для Johny
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.12.2013
    Сообщений
    118
    Репутация:
    26 ±
    Дам +
    Мои работы:
    [MAP]Миникарта для Dm Servera
    [MAP]Миникарта для DM Server'a №2

    Пожертвование для создания проекта Hard-RolePlay:
    WebMoney:R116691342884


    Тыкни,если помог.

 

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

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

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

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

Ваши права

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