• Страница 1 из 1
  • 1
[Мануал] Регистрация
Дмитрий Дата: Понедельник, 06.08.2012, 22:37 | Сообщение # 1 | Сообщить о нерабочей теме


Аватар для Дмитрий

Я бы хотел Вам рассказать как создать регистрацию с помощью include mxINI.
В место звездочек пробелы
Добавим в начало мода( ко всем #include)

Code
#include <mxINI>  


Добавим ко всем #define:

Code
#define DIALOG_LOGIN 1
#define DIALOG_REGISTER 2  


После переменных(после всех new;")

Code
enum pInfo{
****pSpawn,
****pMoney
};
new PlayerInfo[MAX_PLAYERS][pInfo];  


Теперь найдём

Code
public OnPlayerConnect(playerid)  


и сразу после

Code
public OnPlayerConnect(playerid)
{


добавляем:

Code
new string[128],stringer[512];
********new NamePlayer[40];
********GetPlayerName(playerid, NamePlayer, 40);
********format(string, sizeof(string), "%s.ini", NamePlayer);
********if(fexist(string))
********{
************format(stringer, 512, "{ffffff}Привет, %s.\n\
**************************************** Вы зашли на сервер ИМЯСЕРВЕРА.\n\
**************************************** Этот ник уже зарегистрирован на сервере..\n\
****************************************Приятной игры.", NamePlayer);
************ShowPlayerDialog(playerid, DIALOG_LOGIN , DIALOG_STYLE_PASSWORD, "Авторизация.", stringer, "Ок", "Выход");
********}
********else
********{
************format(stringer, 512, "{ffffff}Привет, %s.\n\
**************************************** Вы зашли на сервер ИМЯСЕРВЕРА.\n\
**************************************** Этот ник еще не зарегистрирован на сервере..\n\
****************************************Приятной игры.", NamePlayer);
************ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Регистрация.", stringer, "Ок", "Выход");
********}  


Всё основное мы создали,теперь ответственная часть,мы должны создать сам диалог,ищем:

Code
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])  


если его нет,то создаём,и вставляем:

Code
new stringer[256];
****new NamePlayer[40];
****GetPlayerName(playerid, NamePlayer, 40);
****if(dialogid == DIALOG_REGISTER)
****{
********if(response)
********{
************if(!strlen(inputtext))
************{
****************format(stringer, 512, "{ffffff}Привет, %s.\n\
**************************************** Вы зашли на сервер ИМЯСЕРВЕРА.\n\
**************************************** Этот ник еще не зарегистрирован на сервере..\n\
****************************************Приятной игры.", NamePlayer);
****************ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Регистрация.", stringer, "Ок", "Выход");
****************return 1;
************}
************OnPlayerRegister(playerid, inputtext);
************return 1;
********}
********else
********{
************SendClientMessage(playerid, COLOR_WHITE, "Вы не зарегистрировались, и были кикнуты.");
************Kick(playerid);

********}
********return 1;
****}
****if(dialogid == DIALOG_LOGIN)
****{
********if(response)
********{
************if(!strlen(inputtext))
************{
****************format(stringer, 512, "{ffffff}Привет, %s.\n\
**************************************** Вы зашли на сервер ИМЯСЕРВЕРА.\n\
**************************************** Этот ник уже зарегистрирован на сервере..\n\
****************************************Приятной игры.", NamePlayer);
****************ShowPlayerDialog(playerid, DIALOG_LOGIN , DIALOG_STYLE_PASSWORD, "Авторизация.", stringer, "Ок", "Выход");
****************return 1;
************}
************OnPlayerLogin(playerid, inputtext);
************return 1;
********}
********else
********{
************SendClientMessage(playerid, COLOR_WHITE, "Вы не авторизовались, и были кикнуты.");
************Kick(playerid);

********}
****}  


Чтобы аккаунт не слетал,мы должны создать стоки авторизации,и регистрации,создаём:

Code
stock OnPlayerRegister(playerid, password[])
{
****new string[255], PlayerName[40];
****GetPlayerName(playerid, PlayerName, 40);
****format(string, 64, "%s.ini", PlayerName);
****new iniFile = ini_createFile(string);
****if(iniFile < 0) iniFile = ini_openFile(string);
****ini_setString(iniFile, "Password", password);
****ini_setInteger(iniFile, "Money",0);
****ini_closeFile(iniFile);
****OnPlayerLogin(playerid, password);
****return 1;
}
stock OnPlayerLogin(playerid, password[])
{
****new string[512], NamePlayer[40], Password[32];
****GetPlayerName(playerid, NamePlayer, 40);
****format(string, 64, "%s.ini", NamePlayer);
****if(fexist(string))
****{
********new iniFile = ini_openFile (string);
********ini_getString(iniFile, "Password", Password);
********if(!strcmp(Password, password, true))
********{
************ini_getInteger(iniFile, "Spawn", PlayerInfo[playerid][pSpawn]);
************ini_getInteger(iniFile, "Money", PlayerInfo[playerid][pMoney]);
************ini_closeFile(iniFile);
************GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
************SpawnPlayer(playerid);
************return 1;
********}
********else
********{
************SendClientMessage(playerid,COLOR_WHITE,"Вы ввели неверный пароль.");
************format(string, 512, "{ffffff}Привет, %s.\n\
**************************************** Вы зашли на сервер ИМЯСЕРВЕРА.\n\
**************************************** Этот ник уже зарегистрирован на сервере..\n\
****************************************Приятной игры.", NamePlayer);
************ShowPlayerDialog(playerid, DIALOG_LOGIN , DIALOG_STYLE_PASSWORD, "Авторизация.", string, "Ок", "Выход");
************return 1;
********}
****}
****return 1;
}

stock OnPlayerSave(playerid)
{
****PlayerInfo[playerid][pMoney] = GetPlayerMoney(playerid);
****new string[128], PlayerName[40];
****GetPlayerName(playerid, PlayerName, 40);
****format(string, sizeof(string), "%s.ini", PlayerName);
****new iniFile = ini_openFile (string);
****ini_setInteger(iniFile, "Spawn",PlayerInfo[playerid][pSpawn]);
****ini_setInteger(iniFile, "Money",PlayerInfo[playerid][pMoney]);
****ini_closeFile(iniFile);
****return 1;
}  


Автор: не знаю
Чтобы компилировалось без ошибок(error`ов),скачиваем include mxINI: Тык


From Russia With Love!
dimka_094 Дата: Понедельник, 22.07.2013, 15:55 | Сообщение # 2 | Сообщить о нерабочей теме


Аватар для dimka_094

fatal error 100: cannot read from file: "mxINI"
Помогите, пожалуйста, исправить.


Сообщение отредактировал dimka_094 - Понедельник, 22.07.2013, 19:17
Дмитрий Дата: Четверг, 01.08.2013, 12:02 | Сообщение # 3 | Сообщить о нерабочей теме


Аватар для Дмитрий

Скачайте рабочий инклуд "mxINI" и поместите его в папку include.

From Russia With Love!
  • Страница 1 из 1
  • 1
Поиск: