Так как я не нашёл урока с описанием и примерами использования инклуда mxINI, который позволяет быстро читать/записывать данные с файла. (скачать инклуд: http://gta-samp.ucoz.net/diz/inc/mxINI_0.4.zip ) 1. Работа с файлами.
ini_createFile("Путь/к/файлу.ini"); // Данная функция создаёт файл.
ini_openFile("Путь/к/файлу.ini"); // Эта функция открывает существующий файл.
ini_closeFile(ИД_открытого_файла); // Эта функция закрывает уже открытый файл.
2. Запись данных в файл.
ini_setString(ИД_открытого_файла, "имя ключа", "текст"); // Эта функция записывает текст в ключ.
ini_setInteger(ИД_открытого_файла, "имя ключа", 123456 ); // Эта функция записывает целое число в ключ.
ini_setFloat(ИД_открытого_файла, "имя ключа", 3.1416 ); // Эта функция записывает десятичное число в ключ.
3. Чтение ключей из файла.
ini_getString(ИД_открытого_файла, "имя ключа", Нужная_вам_переменная); // Эта функция записывает текст в переменную из файла.
ini_getInteger(ИД_открытого_файла, "имя ключа", Нужная_вам_переменная); // Эта функция записывает целое число в переменную из файла.
ini_getFloat(ИД_открытого_файла, "имя ключа", Нужная_вам_переменная); // Эта функция записывает десятичное число в переменную из файла.
4. Остальные функции.
ini_removeKey(ИД_открытого_файла, "имя ключа"); // Эта функция удаляет ключ из файла
ini_getErrorInfo(Код_ошибки); // Эта функция возвращает ошибку, не как число, а как текст.
Шаг 2: Создание регистрации.
1. Создаём переменные для игрока.
enum pInfo {
pMoney, // Сохраняет кол-во денег.
Float:pHeal, // Сохраняет кол-во жизней.
};
new Player[MAX_PLAYERS][pInfo];
2. Создание регистрации/авторизации/сохранения аккаунта.
2.1. Создание аккаунта.
stock CreateAccount(playerid, pass[])
{
new pName[MAX_PLAYER_NAME], string[64];
GetPlayerName(playerid, pName, MAX_PLAYER_NAME); // Узнаём имя игрока
format(string, 64, "%s.ini", pName); // Добавляем тип файла (.ini).
new iniFile = ini_createFile(string); // Создаём файл.
if(iniFile < 0) ini_openFile(string); // Если файл выдал ошибку, то мы его откроем заного.
ini_setString(iniFile, "Password", pass); // Запишем пароль в файл.
ini_setInteger(iniFile, "Money", 0); // Запишем кол-во денег в файл.
ini_setFloat(iniFile, "Heal", 100.0); // Запишем кол-во жизней в файл.
ini_closeFile(iniFile); // Закрываем файл.
LoadAccount(playerid, pass);
return 1;
}
2.2 Авторизация аккаунта.
stock LoadAccount(playerid, pass[])
{
new pName[MAX_PLAYER_NAME], string[64], password2[64];
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
format(string, 64, "%s.ini", pName); // Задаём путь к файлу
new iniFile = ini_openFile(string); // Открываем файл.
ini_getString(iniFile, "Password", password2); // Узнаём пароль аккаунта.
if(!strcmp(pass, password2, true))
{
// если пароль верный то:
ini_getInteger(iniFile, "Money", Player[playerid][pMoney]); // Запишем кол-во денег в переменную.
ini_getFloat(iniFile, "Heal", Player[playerid][pHeal]); // Запишем кол-во жизней в переменную.
SetPlayerHealth(playerid, Player[playerid][pHeal]);
GivePlayerMoney(playerid, Player[playerid][pMoney]);
return 1;
}
else
{
// если пароль неверный то:
SendClientMessage(playerid, 0xffffffFF, " * Невенрный пароль!");
return 0;
}
ini_closeFile(iniFile); // Закрываем файл.
}
2.3 Сохранение аккаунта.
stock SaveAccount(playerid)
{
new pName[MAX_PLAYER_NAME], string[64];
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
format(string, 64, "%s.ini", pName); // Задаём путь к файлу
GetPlayerHealth(playerid, Player[playerid][pHeal]);
new iniFile = ini_openFile(string); // Открываем файл.
ini_setInteger(iniFile, "Money", Player[playerid][pMoney]); // Запишем кол-во денег в файл.
ini_setFloat(iniFile, "Heal", Player[playerid][pHeal]); // Запишем кол-во жизней в файл.
ini_closeFile(iniFile); // Закрываем файл.
return 1;
}