Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

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

Статус
В этой теме нельзя размещать новые ответы.

ermakl

Начинающий
Пользователь
Регистрация
13 Июн 2011
Сообщения
54
Лучшие ответы
0
Репутация
4
Здраствуйте решил помочь сайту\форуму
Всем известно что на всех серверах есть рега (регистрация - сохранения даных игрока)
в етом уроке мы разсмотрим регу для дм\тдм модов

Итак нам нужен инклуд (нажмите на название для скачки)
теперь откроем наш мод\скрипт\new.pwn
В самый верх добавим
PHP:
#include <mxINI>
Все инклуд подключен теперь создадим переменые я использую кострукцию enum
PHP:
enum dPl
{
pAdmin,
pMoney,
}
new DInfo[MAX_PLAYERS][dPl];
теперь создадим паблики
но сначала их "зарегестрируем"
PHP:
forward InPlayerLogin(playerid);
forward InPlayerUpade(playerid);
forward InPlayerReg(playerid,password[]);
для проверки есть ли акк возможно зделать в стандартном
PHP:
public OnPlayerConnect(playerid)
{
new Plname[256];
new se[256];
GetPlayerName(playerid,Plname,256);
format(se,256,"%s.ini",Plname);
if(fexist(se))
 {
 format(se,256,"{c0c0c0}Уважаемый %s ваш аккуант {00ff00}зарегестрирован   {c0c0c0}\nВы можете войти используя свой пароль\nДля продолжения введите пароль",Plname);
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Авторизация на Test",se,"Отправить","Кик");
}
else
{
format(se,256,"{c0c0c0}Уважаемый %s ваш аккуант {ff0000}не зарегестрирован {c0c0c0}\nВы можете зарегестрироваться используя свой пароль\nДля продолжения введите пароль",Plname);
ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"Регистрация на Test",se,"Отправить","Кик");
}
}
здесь мы создаем окно регистрации или логина (логин - анг(loggin) параметр входа для востановления параметров)
Здесь используетса if(fexist(se)) тоесть проверка есть-ли фаил с именем заданый в переменой se(у нас ето фаил с именем игрока с разшерениям .ini(например:Roman.ini))
возможны и другие способы например
в тойже
PHP:
public OnPlayerConnect(playerid)
{
new se[256] , plname[256]);
GetPlayerName(playerid, plname, 256);
format(se,256, "Здраствуйте %s на нашем рп сервере \n {ff0033}Сёйчас сервер в стадии розроботки !", plname); ShowPlayerDialog(playerid,1,DIALOG_STYLE_MSGBOX,"Информация о серве",se,"Зайти","Кик");
}
здесь мы создали диалог окно с информацией о сервере
Примечание:ИДЫ ДИАЛОГ ОКОН ИЗМЕНЯМ НА СВОИ!
Далле какой бы мы сбособ невыбрали нам нужно зделать ответы на диагол окно
PHP:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
Для 2 способа делаем так
PHP:
if(dialogid == 1)
{
if(response)
{
new Plname[256];
new se[256];
GetPlayerName(playerid,Plname,256);
format(se,256,"%s.ini",Plname);
if(fexist(se))
{
format(se,256,"{c0c0c0}Уважаемый %s ваш аккуант {00ff00}зарегестрирован {c0c0c0}\nВы можете войти используя свой пароль\nДля продолжения введите пароль",Plname);
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Авторизация на Test",se,"Отправить","Кик");
}
else
{
format(se,256,"{c0c0c0}Уважаемый %s ваш аккуант {ff0000}не зарегестрирован {c0c0c0}\nВы можете зарегестрироваться используя свой пароль\nДля продолжения введите пароль",Plname);
ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"Регистрация на Test",se,"Отправить","Кик");
}
}
else
{
Kick(playerid);
}
}
if(dialogid == 2)
{
if(response)
{
new se[256];
new Plname[256];
if(!strlen(inputtext))
{
GetPlayerName(playerid,Plname,256);
format(se,256,"{c0c0c0}Уважаемый %s ваш аккуант {00ff00}зарегестрирован {c0c0c0}\nВведите пожалуста пароль а не просто нажав на \"Отправить\"",Plname);
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Авторизация на Test",se,"Отправить","Кик");
}
GetPlayerName(playerid,Plname,256);
format(se,256,"%s.ini",Plname);
new File = iniOpen(se);
ini_getString(File,"Key", pass);
iniClose(File);
if(!strcmp(inputtext,pass,true))
{
InPlayerLogin(playerid,inputtext);
}
else
{
format(se,256,"{c0c0c0}Уважаемый %s ваш аккуант {00ff00}зарегестрирован {c0c0c0}\nНо вы ввели неправильно пароль",Plname);
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Авторизация на Test",se,"Отправить","Кик");
}
}
else
{
Kick(playerid);
}
}
if(dialogid == 3)
{
if(response)
{
new se[256];
new Plname[256];
if(!strlen(inputtext))
{
format(se,256,"{c0c0c0}Уважаемый %s ваш аккуант {ff0000}не зарегестрирован {c0c0c0}\nВведите пожалуста пароль а не просто нажав на \"Отправить\"",Plname);
ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"Регистрация на Test",se,"Отправить","Кик");
}
InPlayerReg(playerid,inputtext);
}
else
{
Kick(playerid);
}
}
У меня если нажать во время регги на кик вас кикнет, если вы хотите зделать чтобь возможно было без реги то уберите Kick(playerid);
Для 1 способа делаем менее
PHP:
if(dialogid == 2)
{
if(response)
{
new se[256];
new Plname[256];
if(!strlen(inputtext))
{
GetPlayerName(playerid,Plname,256);
format(se,256,"{c0c0c0}Уважаемый %s ваш аккуант {00ff00}зарегестрирован {c0c0c0}\nВведите пожалуста пароль а не просто нажав на \"Отправить\"",Plname);
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Авторизация на Test",se,"Отправить","Кик");
}
GetPlayerName(playerid,Plname,256);
format(se,256,"%s.ini",Plname);
new File = iniOpen(se);
ini_getString(File,"Key", pass);
iniClose(File);
if(!strcmp(inputtext,pass,true))
{
InPlayerLogin(playerid);
}
else
{
format(se,256,"{c0c0c0}Уважаемый %s ваш аккуант {00ff00}зарегестрирован {c0c0c0}\nНо вы ввели неправильно пароль",Plname);
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Авторизация на Test",se,"Отправить","Кик");
}
}
else
{
Kick(playerid);
}
}
if(dialogid == 3)
{
if(response)
{
new se[256];
new Plname[256];
if(!strlen(inputtext))
{
format(se,256,"{c0c0c0}Уважаемый %s ваш аккуант {ff0000}не зарегестрирован {c0c0c0}\nВведите пожалуста пароль а не просто нажав на \"Отправить\"",Plname);
ShowPlayerDialog(playerid,3,DIALOG_STYLE_INPUT,"Регистрация на Test",se,"Отправить","Кик");
}
InPlayerReg(playerid,inputtext);
}
else
{
Kick(playerid);
}
}
теперь делаем сами паблики,начнем с InPlayerReg
PHP:
InPlayerReg(playerid,password[])
{
    new se[256] , Plname[256];
    GetPlayerName(playerid, Plname, 256);
    format(se, 256, "%s.ini",Plname);
    new File = ini_createFile(se);  /* Создаём файл */
    if(File < 0)
    File = ini_openFile(se); /* Открываем файл */
    ini_setString(File,"Пароль",password);
    ini_setInteger(File,"Админка",0);
    ini_setInteger(File,"Деньги",500);
    GivePlayerMoney(playerid,500);
    ini_closeFile(File);
    InPlayerLogin(playerid);
    return 1;
}
Теперь делаем InPlayerLogin
PHP:
InPlayerLogin(playerid)
{
new se[256],Plname[256];
GetPlayerName(playerid, Plname, 256);
format(se, 256, "%s.ini",Plname);
new File = iniOpen(se);
if(!File)
	{
        ini_getInteger(File,"Админка",DInfo[playerid][dAdmin]);
        ini_getInteger(File,"Деньги",DInfo[playerid][dMoney]);
        ini_closeFile(File);
        }
return 1;
}
Также делаем InPlayerUpade
PHP:
InPlayerUpade(playerid)
{
new se[256],Plname[256];
GetPlayerName(playerid, Plname, 256);
format(se, 256, "%s.ini",Plname);
new File = iniOpen(se);
ini_getInteger(File,"Админка",DInfo[playerid][dAdmin]);
ini_getInteger(File,"Деньги",DInfo[playerid][dMoney]);
ini_closeFile(File);
}
Далле для сохранения в паблик
PHP:
public OnPlayerDisconnect(playerid)
{
InPlayerUpade(playerid);
}
Все теперь наша рега сохраняет
Всем спасибо
PHP:
#define Создатель_Урока Ermakl


---------- Сообщение добавлено в 22:01 ---------- Предыдущее сообщение размещено в 20:20 ----------

прошу коментариев =)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу