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

Тема: Простая регистрация с помощью [dini]

Показано с 1 по 10 из 39

  1. #1
    Пользователь

    Аватар для Andrey_Kiryuhin

    Статус: Оффлайн
    Регистрация:11.11.2010
    Адрес:г.Пенза
    Сообщений:515
    Репутация: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,409
    Репутация:1240 [+/-] 
    А можно ссылочку на dini?)
  4. #3
    Пользователь

    Аватар для Mr. Oscar

    Статус: Оффлайн
    Регистрация:21.03.2011
    Адрес:Иркутск
    Сообщений:433
    Репутация:65 [+/-] 
    http://depositfiles.com/files/iqc3qparb
    С тебя + и не ипет
  5. 2 пользователей сказали cпасибо Mr. Oscar за это полезное сообщение:

    DeIMoS (23.03.2011), fenix05 (08.11.2011)

  6. #4
    Заблокирован

    Аватар для DeIMoS

    Статус: Оффлайн
    Регистрация:01.03.2011
    Сообщений:4,409
    Репутация:1240 [+/-] 
    Та без пэ =) Хоть каждый день по +су =) (Позже ток. Ща пишет "Вы должны добавить отзыв кому-то ещё, прежде чем сможете снова добавить его Oscar_Monrique." =D
  7. #5
    Заблокирован

    Аватар для HarryE

    Статус: Оффлайн
    Регистрация:03.02.2011
    Сообщений:1,656
    Репутация: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 029: invalid expressionassumed zero
    C
    :\Documents and Settings\Joker.910E225DE502473\Рабочий стол\Test\Varlando RolePlay\gamemodes\tgl.pwn(57) : error 029: invalid 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,656
    Репутация: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 ... Последняя
  • К странице:

Пользователи, которые читали эту тему: 0

В данный момент нет участников для отображения в списке.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
В обязанности Администрации не входит контроль легальности или нелегальности передаваемой информации (любой, включая, но не ограничиваясь, информацией передаваемой между пользователями, внутренней пересылки информации в виде различных ссылок, текстов или архивов), определение прав собственности или законности передачи, приема или использования этой информации.
Администрация не несёт никакой ответственности за пользователей и модер состав форума!
читы хаки samp-rp advanvce скачать pawn скриптинг моды скрипты гарант s0beit cs 1.6 0.3x читы World of Tanks Баги samp-rp,читы samp-rp,аккаунты самп-рп Скриптинг PAWNO SA-MP IV-MP MTA уроки помощь создание сервер моды скрипты плагины cleo читы читинг собейт s0beit sobeit моды для sa-mp скрипты для sa-mp pawno скриптинг pawno скрипты pawno моды iv-mp скриптинг iv-mp скрипты iv-mp моды мод godfather Моды SAMP как установить машины для gta 4 Моды гта 4 Моды GTA 4 скачать моды для GTA 4 скрипты и моды GTA 4 скачать скрипты SAMP моды SAMP на русском языке где можно скачать Pen1 LS скачать Pen1 Fugitive скачать The Godfather rp roleplay samp-rp скачать бесплатно создать sa-mp сервер создать мод sa-mp создать скрипт в pawno gta-iv gta-v gta-sa gta-3 gta-III gta-4 gta-5 gta-vc mta mta-dm mta-race mta-sa pawno инфо info информация ru помощь в pawno ошибки pawno сервер павно gta-iv крэк gta-iv патч gta-v демо gta-v трейлер gta-iv keygen скрипты gta sa gta 4 multiplayer gta san adnreas multiplayer sa-mp forum форум о sa-mp форум о pawno русский sa-mp русское pawno русификатор реклама раскрутка сервера пиар сервера sa-mp мониторинг gta-sa ошибки в pawno pawno errors sa-mp 0.3c SA-MP 0.3d Играть в гта по сети моды для сампа скрипты самп Моды гта 4 Моды GTA 4 скачать моды для GTA 4 скрипты и моды GTA 4 скачать скрипты SAMP моды SAMP на русском языке где можно скачать Pen1 LS скачать Pen1 Fugitive скачать The Godfather Все моды SAMP у нас взлом вк hack rat android instagram twitter хак хакер лайфхак рынок продажа ddos защита услуги администратор root linux ubuntu mac android андроид прошивка без ограничений advance arizona читы 4g безлимит