Лучший вариант для регистрации на инклуде Power INI от SwipoStyleЗдесь регистрация сохраняет Админ уровень, Деньги и Убийства
Важно: Необходимо создать папку users в папке scriptfiles
Скрытый текст [Показать]
/*
Готовая регистрация для модов с 0
Создатель SwipoStyle (skype: swipos)
Update 1.1 (22.01.2012)
Новое в 1.1:
* Проверка игрока на то что он авторизован
* Добавлен выбор пола
* Исправлена ошибка с созданием аккаунта
------------------------------------------------------------------------------*/
#include <a_samp>
#include <power_ini>
//------------------------------------------------------------------------------
#define COLOR_RED 0xFF0000FF // красный
//------------------------------------------------------------------------------
// Ячейки для хранения информации из аккаунта
enum pInfo {
pAdmin,
pScore,
pMoney,
pSex
};
//------------------------------------------------------------------------------
new PlayerInfo[MAX_PLAYERS][pInfo]; // Для проверки все ячеек информации
new pLogin[MAX_PLAYERS]; // Для проверки авторизации
//------------------------------------------------------------------------------
main()
{
print("\n-------------------------------");
print("Регистрация Power INI загружена");
print("-------------------------------\n");
}
//------------------------------------------------------------------------------
public OnGameModeInit()
{
SetGameModeText("Power INI");
AddPlayerClass(0, 0.0,0.0,0.0,0.0, 0,0,0,0,0,0);
return 1;
}
//------------------------------------------------------------------------------
public OnPlayerRequestClass(playerid, classid)
{
// Если он авторизован то разрешаем выбирать скин
if(pLogin[playerid] == 1)
{
SetPlayerInterior(playerid,11);
SetPlayerPos(playerid,508.7362,-87.4335,998.9609);
SetPlayerFacingAngle(playerid,0.0);
SetPlayerCameraPos(playerid,508.7362,-83.4335,998.9609);
SetPlayerCameraLookAt(playerid,508.7362,-87.4335,998.9609);
}
return 1;
}
//------------------------------------------------------------------------------
public OnPlayerConnect(playerid)
{
pLogin[playerid] = 0; // Не авторизован
// Регистрация/Авторизация
new name[MAX_PLAYER_NAME], account[128];
GetPlayerName(playerid, name, sizeof(name));
format(account, sizeof(account),"users/%s.ini", name);
{
if(!fexist(account)) // Если нету аккаунта, то регистрация
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Регистрация","Вы не зарегистрированы на нашем\nсервере, пожалуйста введите\nпароль для регистрации","Рега","Выход");
}
else // Если есть аккаунт, то авторизация
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Авторизация","Вы зарегистрированы на нашем\nсервере, пожалуйста введите\nпароль для входа в игру","Вход","Выход");
}
}
return 1;
}
//------------------------------------------------------------------------------
public OnPlayerDisconnect(playerid, reason)
{
// Сохраняем его если он авторизован
if(pLogin[playerid] == 1)
{
new name[MAX_PLAYER_NAME], account[128];
GetPlayerName(playerid, name, sizeof(name));
format(account, sizeof(account), "users/%s.ini", name);
new iniFile = ini_open(account);
ini_set_int(iniFile, "Информация", "Админ", PlayerInfo[playerid][pAdmin]);
ini_set_int(iniFile, "Информация", "Очки", GetPlayerScore(playerid));
ini_set_int(iniFile, "Информация", "Деньги", GetPlayerMoney(playerid));
ini_set_int(iniFile, "Информация", "Пол", PlayerInfo[playerid][pSex]);
ini_close(iniFile);
}
return 1;
}
//------------------------------------------------------------------------------
public OnPlayerSpawn(playerid)
{
// Если авторизован то спавним
if(pLogin[playerid] == 1)
{
SetPlayerInterior(playerid, 0);
// Ваша функция
}
return 1;
}
//------------------------------------------------------------------------------
public OnPlayerText(playerid, text[])
{
// Если авторизован то пишет в чат
if(pLogin[playerid] == 1)
{
// Текст
SendClientMessageToAll(GetPlayerColor(playerid), text);
return 0;
}
else // Если нет
{
SendClientMessage(playerid, COLOR_RED, "Авторизуйтесь для того чтобы общаться");
}
return 1;
}
//------------------------------------------------------------------------------
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1) // Регистрация
{
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Регистрация","Вы не зарегистрированы на нашем\nсервере, пожалуйста введите\nпароль для регистрации","Рега","Выход");
new name[MAX_PLAYER_NAME], account[128];
GetPlayerName(playerid, name, sizeof(name));
format(account, sizeof(account), "users/%s.ini", name);
new iniFile = ini_open(account);
ini_set(iniFile, "Настройки", "Пароль", inputtext);
ini_set_int(iniFile, "Информация", "Админ", 0);
ini_set_int(iniFile, "Информация", "Очки", 0);
ini_set_int(iniFile, "Информация", "Деньги", 5000);
ini_set_int(iniFile, "Информация", "Пол", 0);
ini_close(iniFile);
ShowPlayerDialog(playerid, 3, DIALOG_STYLE_MSGBOX, "Выбор пола","Выберите ваш пол","Мужской","Женский");
}
else
{
Kick(playerid);
}
}
if(dialogid == 3) // Выбор пола
{
new name[MAX_PLAYER_NAME], account[128];
GetPlayerName(playerid, name, sizeof(name));
format(account, sizeof(account), "users/%s.ini", name);
new iniFile = ini_open(account);
if(response)
{
ini_set_int(iniFile, "Информация", "Пол", 1); // Мужской
}
else
{
ini_set_int(iniFile, "Информация", "Пол", 2); // Женский
}
ini_close(iniFile);
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Авторизация","Вы зарегистрированы на нашем\nсервере, пожалуйста введите\nпароль для входа в игру","Вход","Выход");
}
if(dialogid == 2) // Авторизация
{
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Авторизация","Вы зарегистрированы на нашем\nсервере, пожалуйста введите\nпароль для входа в игру","Вход","Выход");
new name[MAX_PLAYER_NAME], account[128], pass[64];
GetPlayerName(playerid, name, sizeof(name));
format(account, sizeof(account), "users/%s.ini", name);
new iniFile = ini_open(account);
ini_get(iniFile, "Настройки", "Пароль", pass);
if(!strcmp(inputtext, pass, true))
{
ini_get_int(iniFile, "Информация", "Админ", PlayerInfo[playerid][pAdmin]);
ini_get_int(iniFile, "Информация", "Очки", PlayerInfo[playerid][pScore]);
ini_get_int(iniFile, "Информация", "Деньги", PlayerInfo[playerid][pMoney]);
ini_get_int(iniFile, "Информация", "Пол", PlayerInfo[playerid][pSex]);
ini_close(iniFile);
pLogin[playerid] = 1;
SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
OnPlayerRequestClass(playerid, 0);
}
else
{
pLogin[playerid] = 0;
SendClientMessage(playerid, COLOR_RED, "Вы ввели неверный пароль, повторите попытку!");
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Авторизация","Вы зарегистрированы на нашем\nсервере, пожалуйста введите\nпароль для входа в игру","Вход","Выход");
}
}
else
{
Kick(playerid);
}
}
//--------------------------------------------------------------------------
return 1;
}
Смотреть инклуд
Автор: Я (SwipoStyle)
[attachment=137:reg.pwn]
Вход
Регистрация
Помощь















