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

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

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

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

Система регистрации

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

KuliSH

Дебютант
Здравствуйте, у меня возникла проблема с системой регистрации. Она проявляется в том, что у меня не сохраняются аккаунты. Прошу помощи
Код:
#include <a_samp>
#include <mxINI>

forward SavePlayers(playerid);

new PAccount[MAX_PLAYERS];// Есть аккаунт, или нет

enum pInfo
{
        pPass[64],// Масив с паролем
}
new Player[MAX_PLAYERS][pInfo];

main()
{
        print("\n----------------------------------");
        print(" test ");
        print("----------------------------------\n");
}

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
		{
		if(PAccount[playerid] == 1)// Если аккаунт есть
        {
        ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт есть на сервере\nВведите свой пароль в окошко","Ввод","");// Показываем диалог входа в игру. Стиль диалога выставляем на ввод текста.
        }
        else// Если аккаунта нет
        {
        ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт не найден.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");// Показываем диалог регистрации. Стиль диалога выставляем на ввод текста.
}
		return 1;
}

public SavePlayers(playerid)
{
    for(new i; i < GetMaxPlayers(); i++)
    {
        if(!IsPlayerConnected(i))continue;
        SavePlayer(i);
    }
}

public OnPlayerConnect(playerid)
{
	new playername[MAX_PLAYER_NAME];// Масив для имени игрока
    new string[128];// Путь до папки с именем игрока
    GetPlayerName(playerid,playername,sizeof(playername));// Узнаем имя игрока
    format(string,sizeof(string),"players/%s.ini", playername);// Путь к файлу с аккаунтом
    if(fexist(string))// Проверка на файл, если он есть то выполняется следующее действие.
        {
                PAccount[playerid] = 1;// Аккаунт есть
        }
        else// Если файла с именем нет, то выполняется это действие.
        {
            PAccount[playerid] = 0;// Аккаунта нет
        }
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	SavePlayers(playerid);//автосохранение при выходе

	return 1;
}

public OnPlayerSpawn(playerid)
{
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	if (strcmp("/mycommand", cmdtext, true, 10) == 0)
	{
		// Do something here
		return 1;
	}
	return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
	return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
	return 1;
}

public OnRconCommand(cmd[])
{
	return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	return 1;
}

public OnObjectMoved(objectid)
{
	return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
	return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
	return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
	return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
	return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
	return 1;
}

public OnPlayerExitedMenu(playerid)
{
	return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
	return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
	return 1;
}

public OnPlayerUpdate(playerid)
{
	return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
	return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
	return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
	return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
			if(dialogid == 1)// Ид диалога Для Логина
        	{
            if(response)// Если игрок нажал первую кнопку входа
            {
            if(!strlen(inputtext))// Если окно ввода пустое, выводим диалог снова
            {
            ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт есть на сервере\nВведите свой пароль в окошко","Ввод","");// Показываем диалог входа в игру.
            return 1;
            }
            new pass[64];// Масив с паролем
            strmid(pass,inputtext,0,strlen(inputtext),64);// Считываем текст с диалога
            OnPlayerLogin(playerid,pass);// Запускаем паблик входа
            }
            else// Если игрок нажал Esc, вернём ему диалог
            {
            ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт есть на сервере\nВведите свой пароль в окошко","Ввод","");// Показываем диалог входа в игру.
            }
        	}
        	if(dialogid == 2)// Ид диалога для регистрации
        	{
            if(response)// Если игрок нажал первую кнопку
            {
            if(!strlen(inputtext))// Если окно ввода пустое, выводим диалог снова
            {
            ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт не найден.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");// Показываем диалог регистрации.
            return 1;
            }
            new pass[64];// Масив с паролем
            strmid(pass,inputtext,0,strlen(inputtext),64);// Считываем текст с диалога
            OnPlayerRegister(playerid,pass);// Запускаем паблик регистрации
            }
            else// Если игрок нажал Esc, вернём ему диалог
            {
            ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Окно Регистрации","Здравствуйте\nВаш аккаунт не найден.\nЗарегистрируйтесь введя пароль в окошко","Ввод","");// Показываем диалог регистрации.
            }
       		}
			return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}

stock SavePlayer(playerid)
{
   		new string[64];// Масив с путём для файла
        new playername[MAX_PLAYER_NAME];// Масив для получения имени игрока
        GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
        format(string, sizeof(string), "players/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
        new iniFile;
        iniFile = ini_openFile(string);// Открываем файл по тому пути который указали.
        ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл
        ini_closeFile(iniFile);// Закрываем файл
}

forward OnPlayerRegister(playerid, password[]);
public OnPlayerRegister(playerid, password[])// Паблик регестрации
{
        if(IsPlayerConnected(playerid))
        {
            	new string[64];// Масив с путём для файла
                new playername[MAX_PLAYER_NAME];// Масив для получения имени игрока
                GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
                format(string,sizeof(string), "players/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
                new iniFile = ini_createFile(string);// Создаём файл с именем игрока в папке players
                if(iniFile < 0)// Если Файла нет
                {
                        iniFile = ini_openFile(string);// Открываем
                }
                if(iniFile >= 0)// Если файл есть
                {
                        strmid(Player[playerid][pPass],password,0,strlen(password),255);
                        ini_setString(iniFile,"Pass",Player[playerid][pPass]);
                        ini_closeFile(iniFile);// Закрываем файл
                        ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт есть на сервере\nВведите свой пароль в окошко","Ввод","");// Показываем диалог входа в игру
                }
        }
        return 1;
}

forward OnPlayerLogin(playerid,password[]);
public OnPlayerLogin(playerid,password[])
{
        if(IsPlayerConnected(playerid))// Проверка на подключение игрока
        {
        new string[64];// Масив с путём для файла
        new pass[64];// Масив с паролем
        new playername[MAX_PLAYER_NAME];// Масив для получения имени игрока
        GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
        format(string,sizeof(string), "players/%s.ini", playername);// Добавляем имя игрока, в путь для загрузки
        new iniFile = ini_openFile(string);// Открываем файл
        ini_getString(iniFile,"Pass",pass,64);// Загружаем пароль
        if(strcmp(pass,password,true) == 0)// Если введёный пароль, соответсвует паролю при регистрации, то загружаем акк
        {
        ini_getString(iniFile,"Pass",Player[playerid][pPass],64);// Загружаем пароль

        ini_closeFile(iniFile);// Закрываем файл
        }
        else// Если пароль не верен..
        {
        ini_closeFile(iniFile);// Закрываем файл
        ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Окно Входа","Здравствуйте\nВаш аккаунт есть на сервере\nВведите свой пароль в окошко","Ввод","");// Показываем диалог входа в игру.
        return 1;
        }
        SendClientMessage(playerid,0xFF00000,"Добро пожаловать на наш сервер");// Выводим игрок сообщение
        SpawnPlayer(playerid);// Спавним игрока
        }
        return 1;
}
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу