Привет! Если вы читаете это - Вы еще не зарегистрированы. Это займет не больше минуты. Нажмите здесь, чтобы пройти регистрацию в несколько простых шагов, чтобы пользоваться всеми возможностями нашего форума. Обратите внимание, запрещены непристойные, матерные, бессмысленные (цифры, случайный набор букв) ники. Удачи!

Реклама






 
SAMP АДМИНКИ 15 ЛВЛ ПРИ ВХОДЕ КОМАНДА /MAKEADMIN2017 Адрес сервера:176.32.36.34:7777

500р
Маленький баннер400р/мес(Статический показ)
,400рТекстовая реклама300р/мес(Статический показ)
Большой баннер статический
1200р 1000/мес

Внимание ЦЕНЫ СНИЖЕНЫ!!!
Писать по поводу рекламы VK: vk.com/sergey68

** Как получить V.I.P --> КЛИК **
Страница 1 из 4 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 39
  1. #1
    Пользователь
    Аватар для Andrey_Kiryuhin
    Статус
    Оффлайн
    Регистрация
    11.11.2010
    Адрес
    г.Пенза
    Сообщений
    516
    Репутация
    153 [+/-] 

    Сообщение Простая регистрация с помощью [dini]

    Простая регистрация с помощью [dini] !
    Недавно начал работать с pawno и в первые же дни столкнулся с проблемой - регистрация игроков на РП сервере. Одни скрипты достаточно кривые, в других слишком много ненужных функций. Пришлось путем курения мануалов писать свой. Функционал практически на нуле но для общего развития, думаю, пойдет

    Если у нас нет инклуда dini, то скачаем его (Вложение) и кинем в папку "pawno\include\"

    Дальше создадим новый проект, или попытаемся доработать ваш старый.

    В начале скрипта добавим инклуд, несколько дефайнов и переменных:
    PHP код:
    #include <a_samp>
    #include <dini>

    #define COLOR_Y 0xE0EA64AA
    #define COLOR_A 0xF97804FF
    #define COLOR_ME 0xC2A2DAAA

    new pass[MAX_PLAYERS][256];
    new 
    skin[MAX_PLAYERS];
    new 
    money[MAX_PLAYERS];
    new 
    fraction[MAX_PLAYERS]; 
    Дальше идем в паблик OnGameModeInit() и заменяем его содержимое на это:
    PHP код:
    public OnGameModeInit()
    {
    AddPlayerClass(26,  -1974.1481,137.7335,27.6875,91.5174000000);//турист
    AddPlayerClass(285,  -1974.1481,137.7335,27.6875,91.5174000000);//мент
    return 1;

    Этим мы добавили пару скинов на выбор. Дальше меняем OnPlayerRequestClass(playerid, classid):
    PHP код:
    public OnPlayerRequestClass(playeridclassid)
    {
        switch(
    fraction[playerid])
        {
        case 
    0:
        {
        
    SetPlayerPos(playerid1958.37831343.157215.3746);
        
    SetPlayerCameraLookAt(playerid1958.37831343.157215.5746);
        
    SetPlayerCameraPos(playerid,1960.24561342.157216.3746);//+2; -1; 0
        
    SetPlayerFacingAngle(playerid,220.0);
        }
        case 
    1:
        {
        
    SpawnPlayer(playerid);
        
    SetSpawnInfo(playerid,0,skin[playerid],-1974.1481,137.7335,27.6875,91.5174,0,0,0,0,0,0);
        }
        case 
    2:
        {
        
    SpawnPlayer(playerid);
        
    SetSpawnInfo(playerid,0,skin[playerid],-1627.8296,693.3826,6.9881,177.3655,0,0,0,0,0,0);
        }
        }
        return 
    1;

    Здесь мы выбираем где будет стоять чувак при выборе скина. Затем посложнее:
    в паблик OnPlayerConnect(playerid) добавляем это:
    PHP код:
    public OnPlayerConnect(playerid)
    {
            new 
    fn[256];
            
    format (fn,256,"%s.ini",PlayerName(playerid));
            if(!
    dini_Exists(fn))
            {
            
    dini_Create(fn);
            new 
    s[128];
            
    format(s,sizeof(s)," Регистрация пользователя.\n\n Имя: %s\n\n Пароль:",PlayerName(playerid));
            
    ShowPlayerDialog(playerid,0,DIALOG_STYLE_INPUT," Форма регистрации!",s," Зарегать"," Отмена");
            return 
    1;
            }
            else
            {
            new 
    s[128];
            
    format(s,sizeof(s)," Привет, %s!\n\n Введи пароль:",PlayerName(playerid));
            
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT," Форма входа!",s," Логин"," Отмена");
            return 
    1;
            }

    Здесь мы проверяем зареган ли пользователь путем проверки ini файла с именем пользователя.
    Если файла нету то создаем его. Дальше нужно разобрать ответы пользователя: добавляем в паблик OnDialogResponse следующее:
    PHP код:
    public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        new 
    fn[256];
        
    format (fn,256,"%s.ini",PlayerName(playerid));

        if(
    dialogid == 0)
        {
        if(
    response)
        {
        new 
    str[256];
        
    format(str256"%s, приветствуем тебя на сервере!"PlayerName(playerid));
        
    SendClientMessage(playeridCOLOR_Ystr);
        
    dini_Set(fn,"Pass",inputtext);
        
    dini_IntSet(fn,"Skin"26);
        
    dini_IntSet(fn,"Money",1000);
        
    dini_IntSet(fn,"Fraction",0);
        new 
    s[128];
        
    format(s,sizeof(s)," Привет, %s!\n\n Введи пароль:",PlayerName(playerid));
        
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT," Форма входа!",s," Логин"," Отмена");
        }
        else
        {
        
    SendClientMessage(playeridCOLOR_A"Этот сервер требует регистрации!");
        
    SetSpawnInfo(playerid,0,285,-1974.1481,137.7335,27.6875,91.5174,0,0,0,0,0,0);
        
    SpawnPlayer(playerid);
        
    Kick(playerid);
        }
        return 
    1;
        }

        if(
    dialogid == 1)
        {
        if(
    response)
        {
        
    pass[playerid] = dini_Get(fn,"Pass");
        if(
    strcmp(pass[playerid],inputtext,false,strlen(pass[playerid])) == 0)
        {
        
    //===================================================спаун!
        
    money[playerid]=dini_Int(fn,"Money");
        
    fraction[playerid]=dini_Int(fn,"Fraction");
        
    skin[playerid]=dini_Int(fn,"Skin");

        new 
    msg[256];

        switch(
    fraction[playerid])
        {
        case 
    0:
        {
    //чел 1й раз на серве, выбор скинов, спаун -вокзал
        
    format (msg,256," * %s первый раз зашел на сервер =)",PlayerName(playerid));
        
    SendClientMessage(playeridCOLOR_MEmsg);
        
    GivePlayerMoney(playerid,money[playerid]);
        }
        case 
    1:
        {
    //чел НЕ 1й раз на серве, без выбор скинов (только по F4), спаун -вокзал
        
    format (msg,256," * %s зашел как Бомж",PlayerName(playerid));
        
    SendClientMessage(playeridCOLOR_MEmsg);
        
    SetSpawnInfo(playerid,0,skin[playerid],-1974.1481,137.7335,27.6875,91.5174,0,0,0,0,0,0);
        
    SpawnPlayer(playerid);
        
    GivePlayerMoney(playerid,money[playerid]);
        }
        case 
    2:
        { 
    //чел вообще админ и хз какой раз на серве, без выбора скинов, спаун - СФПД
        
    format (msg,256," * %s зашел как Админ",PlayerName(playerid));
        
    SendClientMessage(playeridCOLOR_MEmsg);
        
    SetSpawnInfo(playerid,0,skin[playerid],-1627.8296,693.3826,6.9881,177.3655,0,0,0,0,0,0);
        
    SpawnPlayer(playerid);
        
    SetPlayerColor(playerid,0x0000BBAA);
        
    GivePlayerMoney(playerid,money[playerid]);
        }
        }
        
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++!спаун
        
    }
        else
        {
        
    SetSpawnInfo(playerid,0,285,-1974.1481,137.7335,27.6875,91.5174,0,0,0,0,0,0);
        
    SpawnPlayer(playerid);
        
    SendClientMessage(playeridCOLOR_A"Пароль набран неверно!");
        
    Kick(playerid);
        }
        }
        else
        {
        
    SetSpawnInfo(playerid,0,285,-1974.1481,137.7335,27.6875,91.5174,0,0,0,0,0,0);
        
    SpawnPlayer(playerid);
        
    SendClientMessage(playeridCOLOR_A"Этот сервер требует регистрации!");
        
    Kick(playerid);
        }
        return 
    1;
        }

        return 
    1;

    Кратко: если пользователь не зареган, регаем его, потом логинимся. Если зареган- просто логинимся. После этого изменим еще 2 паблика: OnPlayerDisconnect и OnPlayerSpawn:
    PHP код:
    public OnPlayerDisconnect(playeridreason)
    {
    //запись переменых
        
    new fn[256];
        
    format(fn,256,"%s.ini",PlayerName(playerid));
        
    dini_IntSet(fn,"Skin"GetPlayerSkin(playerid));
        
    dini_IntSet(fn,"Money"GetPlayerMoney(playerid));
        
    dini_IntSet(fn,"Fraction"fraction[playerid]);
        return 
    1;
    }

    public 
    OnPlayerSpawn(playerid)
    {
    /*если чувак первый раз зашел на серв и выбрал скин, после второго захода скин будет выбираться автоматом
     фракция 0-чувак первый раз на сервере
     фракция 1-чувак второй и более раз на сервере
     фракция 2-админ
     */
        
    new fn[256];
        
    format (fn,256,"%s.ini",PlayerName(playerid));
        
    fraction[playerid] = dini_Int(fn,"Fraction");
        if (
    fraction[playerid] ==0)
        {
        
    fraction[playerid] =1;
        
    dini_IntSet(fn,"Fraction"fraction[playerid]);
        }
        return 
    1;

    Если игрок отключился, запишем его данные. При спауне идет проверка - предоставить игроку выбор скина или нет. В самом конце мода добавляем строки:
    PHP код:
    stock PlayerName(playerid){
    new 
    pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pname,sizeof(pname));
    return 
    pname;} 
    Они возвращают имя игрока.

    По идее всё, можно тыкать F6
    Урок от:vadosnn

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

    .Happy (20.01.2012), DeIMoS (24.03.2011), Elantra (12.12.2011), fenix05 (08.11.2011), Grad42rus (22.02.2012), HarryE (23.03.2011), Павел Барышников (07.02.2012), KinG_95 (16.03.2011), kiruxa125 (15.09.2011), Maxim_Shmakov (07.12.2012), Steve (14.07.2011), Tupac (01.08.2011), [Corleone] (09.04.2011)

  3. #2
    Заблокирован
    Аватар для DeIMoS
    Статус
    Оффлайн
    Регистрация
    01.03.2011
    Сообщений
    4,425
    Репутация
    1248 [+/-] 
    Всего наград
    1
    А можно ссылочку на dini?)

  4. #3

  5. 2 пользователей сказали cпасибо Mr. Oscar за это полезное сообщение:

    DeIMoS (23.03.2011), fenix05 (08.11.2011)

  6. #4
    Заблокирован
    Аватар для DeIMoS
    Статус
    Оффлайн
    Регистрация
    01.03.2011
    Сообщений
    4,425
    Репутация
    1248 [+/-] 
    Всего наград
    1
    Цитата Сообщение от Oscar_Monrique Посмотреть сообщение
    http://depositfiles.com/files/iqc3qparb
    С тебя + и не ипет
    Та без пэ =) Хоть каждый день по +су =) (Позже ток. Ща пишет "Вы должны добавить отзыв кому-то ещё, прежде чем сможете снова добавить его Oscar_Monrique." =D

  7. #5
    Заблокирован
    Аватар для HarryE
    Статус
    Оффлайн
    Регистрация
    03.02.2011
    Сообщений
    1,651
    Репутация
    429 [+/-] 
    От души 5 балов :D
    Мне для моего мода в котором основа new.pwn , т.е лично мой мод очень даже помогло

  8. #6
    Пользователь
    Аватар для CycJluk
    Статус
    Оффлайн
    Регистрация
    23.03.2011
    Сообщений
    56
    Репутация
    0 [+/-] 
    Плюс тебе

  9. #7
    Пользователь
    Аватар для Benson Miller
    Статус
    Оффлайн
    Регистрация
    05.03.2011
    Сообщений
    408
    Репутация
    16 [+/-] 
    Вот, что у меня.
    PHP код:
    C:\Documents and Settings\Joker.910E225DE502473\Рабочий стол\Test\Varlando RolePlay\gamemodes\tgl.pwn(57) : error 017undefined symbol "fraction"
    C:\Documents and Settings\Joker.910E225DE502473\Рабочий стол\Test\Varlando RolePlay\gamemodes\tgl.pwn(57) : error 029invalid expressionassumed zero
    C
    :\Documents and Settings\Joker.910E225DE502473\Рабочий стол\Test\Varlando RolePlay\gamemodes\tgl.pwn(57) : error 029invalid expressionassumed zero
    C
    :\Documents and Settings\Joker.910E225DE502473\Рабочий стол\Test\Varlando RolePlay\gamemodes\tgl.pwn(57) : fatal error 107too many error messages on one line

    Compilation aborted
    .Pawn compiler 3.2.3664              Copyright (c1997-2006ITB CompuPhase


    4 Errors


  10. #8
    Заблокирован
    Аватар для HarryE
    Статус
    Оффлайн
    Регистрация
    03.02.2011
    Сообщений
    1,651
    Репутация
    429 [+/-] 
    57 строку в студию!

  11. #9
    Пользователь
    Аватар для Benson Miller
    Статус
    Оффлайн
    Регистрация
    05.03.2011
    Сообщений
    408
    Репутация
    16 [+/-] 
    Вот (57) switch(fraction[playerid])

  12. #10
    Пользователь
    Аватар для [Corleone]
    Статус
    Оффлайн
    Регистрация
    10.03.2011
    Адрес
    Канада,Биг Вайт..
    Сообщений
    102
    Репутация
    12 [+/-] 
    ++ те)
    [Есть умные люди, а есть продуманные] (c)
    Вернулся в PAWNO =D


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

Ваши права

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