Лучшие комментаторыЛучшие пользователи Популярные темы Недавние ответы
  • JR
  • Комментариев: 16
  • Luis_Lopez
  • Комментариев: 4
  • эльсанчик
  • Комментариев: 3
  • 4еРт
  • Комментариев: 3
  • Vadi4
  • Комментариев: 3
  • JR
  • Ответов: 100
  • Luis_Lopez
  • Ответов: 71
  • 4еРт
  • Ответов: 47
  • Turgenev
  • Ответов: 37
  • Z0_oM_er
  • Ответов: 29
  • GTA-TesJin Server
  • (30)
  • Вопрос-Ответ по скри...
  • (28)
  • West Coast Role Play
  • (17)
  • [GM] Samp Role Play[...
  • (16)
  • [FS]Выборы губернато...
  • (14)
  • Помогите Пожалуйсто ...
  • (0)
  • vidavitrual
  • (1)
  • [FAQ] Делаем дома на...
  • (0)
  • SA-MP 0.3c R3-R5 Обн...
  • (0)
  • GTA Servers Monitori...
  • (1)
    [ Новое на форуме · Участники проекта · Правила форума · Поиск · RSS ]
    • Страница 1 из 1
    • 1
    Модератор форума: JR  
    РП регистрация
    Luis_LopezДата: Воскресенье, 24.04.2011, 11:04 | Сообщение # 1
    Бывалый






    Группа: Заблокированные
    Сообщений: 71
    Репутация: 3
    Статус:
    На так уж давно я влекся языком pawno, Начинал играть на РП серверах и мне понравилась система Регистрации/Входа.
    Одни скрипты достаточно кривые, в других слишком много ненужных функций. Пришлось путем курения мануалов писать свой. Функционал практически на нуле но для общего развития, думаю, пойдет
    Если у нас нет инклуда dini, то скачаем его и кинем в папку "pawno\include\"
    Дальше создадим новый проект, или попытаемся доработать ваш старый.
    В начале скрипта добавим инклуд, несколько дефайнов и переменных:
    Код
    #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() и заменяем его содержимое на это:
    Код
    public OnGameModeInit()
    {
    AddPlayerClass(26, -1974.1481,137.7335,27.6875,91.5174, 0, 0, 0, 0, 0, 0);//турист
    AddPlayerClass(285, -1974.1481,137.7335,27.6875,91.5174, 0, 0, 0, 0, 0, 0);//мент
    return 1;
    }

    Этим мы добавили пару скинов на выбор. Дальше меняем OnPlayerRequestClass(playerid, classid):
    Код
    public OnPlayerRequestClass(playerid, classid)
    {
    switch(fraction[playerid])
    {
    case 0:
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.5746);
    SetPlayerCameraPos(playerid,1960.2456, 1342.1572, 16.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) добавляем это:
    Код
    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 следующее:
    Код
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new fn[256];
    format (fn,256,"%s.ini",PlayerName(playerid));

    if(dialogid == 0)
    {
    if(response)
    {
    new str[256];
    format(str, 256, "%s, приветствуем тебя на сервере!", PlayerName(playerid));
    SendClientMessage(playerid, COLOR_Y, str);
    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(playerid, COLOR_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(playerid, COLOR_ME, msg);
    GivePlayerMoney(playerid,money[playerid]);
    }
    case 1:
    {//чел НЕ 1й раз на серве, без выбор скинов (только по F4), спаун -вокзал
    format (msg,256," * %s зашел как Бомж",PlayerName(playerid));
    SendClientMessage(playerid, COLOR_ME, msg);
    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(playerid, COLOR_ME, msg);
    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(playerid, COLOR_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(playerid, COLOR_A, "Этот сервер требует регистрации!");
    Kick(playerid);
    }
    return 1;
    }

    return 1;
    }

    Кратко: если пользователь не зареган, регаем его, потом логинимся. Если зареган- просто логинимся. После этого изменим еще 2 паблика: OnPlayerDisconnect и OnPlayerSpawn:
    Код
    public OnPlayerDisconnect(playerid, reason)
    {//запись переменых
    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;
    }

    Если игрок отключился, запишем его данные. При спауне идет проверка - предоставить игроку выбор скина или нет. В самом конце мода добавляем строки:
    [color="#0000FF"]
    Код
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pname,sizeof(pname));
    return pname;}


    ЕСЛИ ВАМ ПОДУШЕ МОЙ ФАЙЛ ПОСТАВЬ +
     
    JRДата: Понедельник, 25.04.2011, 05:15 | Сообщение # 2
    Элитный юзер






    Группа: Администраторы
    Сообщений: 100
    Репутация: 8
    Статус:
    Ну написали бы уже что-небудь свое, а не копипастели с других сайтов mda

    Если хотите попасть в команду сайта, щелкните на ссылку ниже, но не забывайте, что к каждому
    у нас высокие требования, и с каждым разом они все ужесточаются. Если у тебя есть опыт, настойчивость и ты не бросаешь все на половине пути,
    тогда у тебя есть шансы попаусть в команду SFYR.
    - Набор в модераторы сайта(высокие требования)
    - Набор в команду публикаторов(высокие требования)

    Устанавливаю глобальный анти-чит на оружие в мод(видит собейт и другие плагины), не пропускает не один анти-чит. Скайп: massaoff, цена установки: 300 рублей
     
    Luis_LopezДата: Понедельник, 25.04.2011, 15:26 | Сообщение # 3
    Бывалый






    Группа: Заблокированные
    Сообщений: 71
    Репутация: 3
    Статус:
    Вот моя работа!

    ЕСЛИ ВАМ ПОДУШЕ МОЙ ФАЙЛ ПОСТАВЬ +
     
    leXuSДата: Четверг, 05.05.2011, 23:10 | Сообщение # 4
    Нездешний






    Группа: Пользователи
    Сообщений: 15
    Репутация: 2
    Статус:
    Quote (Luis_Lopez)
    Вот моя работа!

    не твоя...просто нехочу говорить откуда ты скопи пастил!
     
    JRДата: Пятница, 06.05.2011, 09:29 | Сообщение # 5
    Элитный юзер






    Группа: Администраторы
    Сообщений: 100
    Репутация: 8
    Статус:
    Quote (Luis_Lopez)
    Вот моя работа!

    Разве ты автор Godather'a crazy
    Данную систему можно высунуть из него. wink


    Если хотите попасть в команду сайта, щелкните на ссылку ниже, но не забывайте, что к каждому
    у нас высокие требования, и с каждым разом они все ужесточаются. Если у тебя есть опыт, настойчивость и ты не бросаешь все на половине пути,
    тогда у тебя есть шансы попаусть в команду SFYR.
    - Набор в модераторы сайта(высокие требования)
    - Набор в команду публикаторов(высокие требования)

    Устанавливаю глобальный анти-чит на оружие в мод(видит собейт и другие плагины), не пропускает не один анти-чит. Скайп: massaoff, цена установки: 300 рублей
     
    • Страница 1 из 1
    • 1
    Поиск:


    SAMPFORYOU.ru © 2010-2011 Хостинг от uCoz