• Страница 1 из 1
  • 1
Регистрация в Диалогах с помощью Mxini
Fr33doMДата: Пятница, 23.03.2012, 02:40 | Сообщение # 1
.::Offline::.
Новичок
Сообщений: 7
[ 5 ]
Награды: 1

Статус отсутствует
Здравствуйте, думаю еще кто-то ищет регистрацию на Диалоговых окнах, думаю полезный урок будет smile

Для начала качаем инклюд Mxini
Скачать Mxini.ini


Отлично, теперь в начале мода приписываем:
Код
[color=orange]#include[/color] [color=green]<mxINI>[/color]


Теперь ко всем массивам добавляем

Код
enum pInfo {
pMoney, // Сохраняет кол-во денег.
Float:pHeal, // Сохраняет кол-во жизней.
Float:pArmour, // Сохраняет кол-во брони.
Kills,//сохраняет убийства
Deaths//сохраняет смерти
};
new PlayerInfo[MAX_PLAYERS][pInfo];// создадим массив со статистикой


Потом в public OnPlayerConnect(playerid):
Код
logged[playerid] = 0;
new PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); // Получаем имя игрока
new account[128];
format(account,sizeof(account),"users/%s.ini",PlayerName); //Создадим аккаунт
{
if(!fexist(account)) //Если такого аккаунта нет,то...
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Регистрация", "Зарегистрируйся \nПароль ниже:", "Регистр", ""); //Выдаем диалог с регой
}
else
{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйся \nПароль нижу:", "Логин", ""); //Если аккаунт существует, то выдаем авторизацию
}
}


Идем в паблик public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]):
Код
if(dialogid == 1) //Регистрация
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Регистрация", "Ну зарегистрируйся ты уже! \nПароль ниже:", "Ок", "");
if(response)
{
new PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); //Узнаем имя игрока
new account[128];
format(account,sizeof(account),"users/%s.ini",PlayerName);//проверяем. Есть ли этот акк в папке users
if(fexist(account)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйся! \n Пароль ниже:", "Логин", ""); //авторизуем его, если есть акк
new iniFile = ini_createFile(account); //создаем акк
if(iniFile < 0) ini_openFile (account); //если файл пустой, то
{
ini_setString(iniFile,"Пароль",inputtext); //Пароль
ini_setInteger(iniFile, "Money", 5000); // Создаем файл аккаунта с кол-вом денег 5000
ini_setFloat(iniFile, "Heal", 100.0); // Создаем файл аккаунта с кол-вом Здоровья
ini_setFloat(iniFile, "Armour", 100.0); // Создаем файл аккаунта с кол-вом Брони
ini_setInteger(iniFile, "Kills", 0); // Ну тут убийства
ini_setInteger(iniFile, "Deaths", 0); // Смерти
ini_closeFile(iniFile); //закроем файл
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйся:", "Логин", "");
}
}
else //Если этот вася захочет обойти регу и нажмет на Esc, то даем ему опять диалог
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Регистрация", "Регистрируйся, червь:", "Ок", "");
}
}
if(dialogid == 2)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйся! \nПароль ниже:", "Логин", "");
if(response)
{
new PlayerName[MAX_PLAYER_NAME], password[64];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
new account[128];
format(account,sizeof(account),"users/%s.ini",PlayerName);
if(IsPlayerNPC(playerid))return 1;
new iniFile = ini_openFile(account);
ini_getString(iniFile, "Пароль",password); // Узнаём пароль аккаунта.
if(!strcmp(inputtext, password, true))
{
ini_getInteger(iniFile, "Money", PlayerInfo[playerid][pMoney]); // Записываем данные в переменную
ini_getFloat(iniFile, "Heal", PlayerInfo[playerid][pHeal]);
ini_getFloat(iniFile, "Armour", PlayerInfo[playerid][pArmour]);
ini_getInteger(iniFile,"Kills", PlayerInfo[playerid][Kills]);
ini_getInteger(iniFile,"Deaths", PlayerInfo[playerid][Deaths]);
SetPlayerHealth(playerid, PlayerInfo[playerid][pHeal]);
SetPlayerArmour(playerid, PlayerInfo[playerid][pArmour]);
GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
ini_closeFile(iniFile);
SpawnPlayer(playerid);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_RED, "Сервер: Пароль неверный");
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Авторизация", "Авторизуйся ты наконец:", "Ок", "");
return 1;
}
}
else //Клавиша Esc
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Авторизация", "Авторизовывайся,рачок:", "Ок", ""); // выдаем диалог, если нажмет на кнопку Esc
}
}


Теперь идем в public OnPlayerDeath(playerid, killerid, reason):
Код
PlayerInfo[killerid][Kills]++;// добавляем килл убийце
PlayerInfo[playerid][Deaths]++; //добавляем смерть убитому


Идем в начало мода вашего:
Код
forward SaveAccounts(playerid);//ко всем форвардам, сохранение акков
new saveacctimer;// ко всем массивам, созздадим таймер для сохранения акков


В public OnGameModeInit():
Код
saveacctimer = SetTimer("SaveAccounts", 200000, 1);// делаем таймер для сохранения акков


В public OnGameModeExit():
Код
KillTimer(saveacctimer);


Ну и теперь создаем раздел для сохранения акков:
Код
public SaveAccounts(playerid)
{
for(new i=0; i<MAX_PLAYERS; i++)
{
new PlayerName[MAX_PLAYER_NAME], account[128];
GetPlayerName(i,PlayerName,sizeof(PlayerName));
format(account,sizeof(account), "users/%s.ini", PlayerName);
new iniFile = ini_openFile(account);
ini_setInteger(iniFile, "Money", GetPlayerMoney(i));
ini_setInteger(iniFile,"Kills", PlayerInfo[i][Kills]);
ini_setInteger(iniFile,"Deaths", PlayerInfo[i][Deaths]);
GetPlayerHealth(i,PlayerInfo[i][pHeal]);
ini_setFloat(iniFile, "Heal", PlayerInfo[i][pHeal]);
GetPlayerArmour(i,PlayerInfo[i][pArmour]);
ini_setFloat(iniFile, "Armour", PlayerInfo[i][pArmour]);
ini_closeFile(iniFile);
SendClientMessage(i, COLOR_WHITE, "Аккаунт сохранен");// для теста добавим
}
return 1;
}


Теперь создадим проверку на логин, чтобы игрок не смог писать в чат.
В начало мода
Код
new logged[MAX_PLAYERS];// массив залогинности игрока=)


Далее вставляем в public OnPlayerText
Код
if(logged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_GREY, "Сервер: Чтобы писать в чат, пожалуйста авторизуйтесь");
return 0;
}


Объяснения:
logged[playerid] = 0 - когда игрок не залогинен
logged[playerid] = 1 - когда игрок залогинен

Вот и конец, урока, надеюсь помог smile

Автор урока: HaWk69

Скачать готовый скрипт :) ->
(Автор: Fr33doM)




Сообщение отредактировал [S]ilverbac[k] - Понедельник, 14.07.2014, 00:56
 
ILYXA7655Дата: Среда, 28.11.2012, 23:14 | Сообщение # 2
.::Offline::.
Новичок
Сообщений: 4
[ 2 ]
Награды: 0

Статус отсутствует
IIere3aleite ccilky na готовый скрипт plis
 
Igor2012Дата: Воскресенье, 28.04.2013, 14:35 | Сообщение # 3
.::Offline::.
Новичок
Сообщений: 9
[ 0 ]
Награды: 0

Статус отсутствует
Долго искал н мог найти в Гугле =( Наверное не так писал biggrin Спасибо вам большое !!!!! Если получиться будет на моем сервере скоро !!!=) Кстати кто знает напишите мне в ЛС или здесь более выгодный хостинг и дешеаый или может тот кторым вы сами пользуетесь =) ) Скоро хочк выпустить свой серв на хост =) Кто может помогите мне чем-то biggrin
 
Samp-rp4545Дата: Понедельник, 29.04.2013, 02:56 | Сообщение # 4
.::Offline::.
Новичок
Сообщений: 5
[ 0 ]
Награды: 0

Статус отсутствует
mxini dno используйте p_ini
 
  • Страница 1 из 1
  • 1
Поиск:


Copyright www.SAMP-TEAM.com (c) 2009-2024
Правила использования материалов сайта

При копировании материалов из нашего сайта
ссылка на www.SAMP-TEAM.com обязательна!
Нарушители правил будут строго наказаны!

Хостинг от uCoz   
Для корректного просмотра мы рекомендуем Вам использовать браузер Google Chrome.
Яндекс.Метрика
Яндекс.Метрика