Форум Pawn.Wiki - Воплоти мечту в реальность!: [PAWNO] Авторизация | Ошибка проверки пароля. - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Pawn ]
[PAWNO] Авторизация | Ошибка проверки пароля. Проблема с авторизацией / проверка пароля

#1
Пользователь офлайн   VDOVA 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Вступление и описание проблемы: Приветствую еще раз, недавно писал еще одну тему c старым кодом. Теперь я исправил ошибки массива, mysql log, и т.д, и взял другой код под основу, но вот проблема. Он тоже не работает... При подключении я ввожу правильный пароль и мне все равно выдает нет. Что я делаю не так? Ошибок в коде нет, в логах нет, сервер запускается стабильно, ничего не вылетает, к базе все подключено, я подозреваю что дело в самом коде...



Весь код(Кроме не нужного):
#include <a_samp>
#include <fix>
#include <a_mysql>
#include <streamer>
#include <sscanf2>
#include <foreach>
#include <Pawn.Regex>
#include <Pawn.CMD>
#include <crashdetect>

#define 	SCM     SendClientMessage
#define 	SCMTA   SendClientMessageToAll
#define     SPD     ShowPlayerDialog

#define     COLOR_WHITE 0xFFFFFFFF
#define     COLOR_RED 	0xff0004AA

#define MAX_PASSWORD_LENGTH 32


//---------------------------   БАЗА ДАННЫХ   ----------------------------
#define MYSQL_HOST "localhost"
#define MYSQL_USER "root"
#define MYSQL_PASS ""
#define MYSQL_BASE "project"

//------------------------------------------------------------------------

main()
{
	print("\n----------------------------------");
	print(" 14.11.23 | Mr.Sokolowsky");
	print("----------------------------------\n");
}

//----------------------------   Переменные   ----------------------------
//-----------------------------   Мусорка   ------------------------------

//------------------------------------------------------------------------
//------------------------------------------------------------------------

enum player
{
	ID,
	NAME[MAX_PLAYER_NAME],
	PASSWORD[32],
	EMAIL[64],
	REF,
	SEX,
	RACE,
	AGE,
	SKIN,
	REGDATA[13],
	REGIP[16],
}

new player_info[MAX_PLAYERS][player]; // 1 Warning, он ни на что не влияет.

enum Dialog
{
	DLG_NONE,
	DLG_REG,
	DLG_REGEMAIL,
 	DLG_LOG,
 	DLG_REGREF,
 	DLG_SEX,
 	DLG_REGRACE,
 	DLG_REGAGE
}

new MySQL:dbHandle;

public OnGameModeInit()
{
	ConnectMySQL();
    return 1;
}

stock ConnectMySQL()
{
 	dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_BASE);
	switch(mysql_errno())
	{
	    case 0: print("Успешно");
	    default: print("НЕ РАБОТАЕТ");
	}
}

public OnGameModeExit()
{
    mysql_close(dbHandle);
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	return 1;
}

public OnPlayerConnect(playerid)
{
	GetPlayerName(playerid, player_info[playerid][NAME], MAX_PLAYER_NAME);
	TogglePlayerSpectating(playerid, 1);
	InterpolateCameraPos(playerid, 1243.014526, -2036.578369, 82.257240+5.0, 71.424697, -2078.663574, 37.513919, 25000);
	InterpolateCameraLookAt(playerid, 498.725097, -1991.036376, 37.513919-5.0, 364.344390, -1828.529296, 8.788626, 25000);
	static const fmt_query[] = "SELECT `id`, `password` FROM `users` WHERE `name` = '%s'";
	new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)];
	format(query, sizeof(query), fmt_query, player_info[playerid][NAME]);
	mysql_tquery(dbHandle, query, "CheckRegistration", "i", playerid);
	return 1;
}

forward CheckRegistration(playerid);
public CheckRegistration(playerid)
{
	new rows;
	cache_get_row_count(rows);
	if(rows)
	{
	    cache_get_value_name(0, "password", player_info[playerid][PASSWORD], 32);
	    ShowLogin(playerid);
	}
	else ShowRegistration(playerid);
}

stock ShowLogin(playerid)
{
	new dialog[156+(-2+MAX_PLAYER_NAME)];
	format(dialog, sizeof(dialog),
	    "{FFFFFF}Уважаемый {0089ff}%s{FFFFFF}, с возврощением на {0089ff}Venera RolePlay{FFFFFF}\n\
		\t\tМы рады снова видеть вас!\n\n\
		Для продолжения, введите свой пароль в поле ниже:",
	player_info[playerid][NAME]
	);
	SPD(playerid, DLG_LOG, DIALOG_STYLE_INPUT, "* {ffd100}Авторизация{FFFFFF} *", dialog, "Войти", "Выход");
}

stock ShowRegistration(playerid)
{
	new dialog[340+(-2+MAX_PLAYER_NAME)];
	format(dialog, sizeof(dialog),
	    "{FFFFFF}Уважаемый {0089ff}%s{FFFFFF}, мы рады вас видеть на {0089ff}Venera RolePlay{FFFFFF}\n\
		Аккаунт с таким именем не зарегестрирован в базе\n\
		Для игры на нашем сервере, придумайте сложный пароль!\n\
		После чего нажмите \"Далее\"\n\
		{ff9500}\t* Пароль должен быть от 8-ми до 32-ух символов\n\
		\t* Пароль дожен состоять из цифр и латинских букв.",
		player_info[playerid][NAME]
	);
	SPD(playerid, DLG_REG, DIALOG_STYLE_INPUT, "* {ffd100}Регистрация{FFFFFF} * Ввод пароля", dialog, "Далее", "Выход" );
}

public OnPlayerDisconnect(playerid, reason)
{
	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[])
{
	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[])
{
    switch(dialogid)
    {
        case DLG_REG:
        {
            if(response)
            {
                if(!strlen(inputtext))
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Введите пароль в поле ниже и нажмите \"Далее\"");
                }
                if(strlen(inputtext) < 8 || strlen(inputtext) > 32)
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Длина пароля должна быть от 8 до 32 символов.");
                }
                new regex:rg_passwordcheck = regex_new("^[a-zA-Z0-9]{1,}$");
                if(regex_check(inputtext, rg_passwordcheck))
                {
					strmid(player_info[playerid][PASSWORD], inputtext, 0, strlen(inputtext), 32);
                    SPD(playerid, DLG_REGEMAIL, DIALOG_STYLE_INPUT, "{ff9300}Регистрация{FFFFFF} * Ввод Email",
                        "{FFFFFF}Введите свой настоящий Email адрес \n\
                        Если вы потеряете доступ к аккаунту, то сможете восстановить его через Email\n\
                        Введите его в поле ниже и нажмите \"Далее\"",
                        "Далее", "");
                }
                else
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Пароль может состоять только из чисел и цифр!");
                }
                regex_delete(rg_passwordcheck);
            }
            else
            {
                SCM(playerid, COLOR_RED, "Используйте \"/q\", чтобы покинуть сервер");
                SPD(playerid, -1, 0, " ", " ", " ", "");
                return Kick(playerid);
            }
        }
        case DLG_REGEMAIL:
        {// case
            if(!strlen(inputtext))
            {//strlen
                SPD(playerid, DLG_REGEMAIL, DIALOG_STYLE_INPUT, "{ff9300}Регистрация{FFFFFF} * Ввод Email",
                	"{FFFFFF}Введите свой настоящий Email адрес \n\
                	Если вы потеряете доступ к аккаунту, то сможете восстановить его через Email\n\
                 	Введите его в поле ниже и нажмите \"Далее\"",
               		"Далее", "");
               		return SCM(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Введите ваш Email ниже и нажмите \"Далее\"");
			}//strlen
			new regex:rg_emailcheck = regex_new("^[a-zA-Z0-9.-_]{1,43}@[a-zA-Z]{1,12}.[a-zA-Z]{1,8}$");
			if(regex_check(inputtext, rg_emailcheck))
			{//regex
   				strmid(player_info[playerid][EMAIL], inputtext, 0, strlen(inputtext), 64);
   				SPD(playerid, DLG_REGREF, DIALOG_STYLE_INPUT, "{ff9300}Регистрация{FFFFFF} * Ввод пригласившего игрока",
				   "{FFFFFF}Если ты зашел на сервер по приглашению, то \n\
				   можешь указать ник пригласившего в поле ниже.",
				   "Далее", "Пропустить");
			}//regex
   			else
   			{//else-regex
   				SPD(playerid, DLG_REGEMAIL, DIALOG_STYLE_INPUT, "{ff9300}Регистрация{FFFFFF} * Ввод Email",
                	"{FFFFFF}Введите свой настоящий Email адрес \n\
                	Если вы потеряете доступ к аккаунту, то сможете восстановить его через Email\n\
                 	Введите его в поле ниже и нажмите \"Далее\"",
               		"Далее", "");
               		return SCM(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Введите ваш Email ниже и нажмите \"Далее\"");
      			return SCM(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Укажите правильно ваш Email адрес.");
   			}//else-regex
   			regex_delete(rg_emailcheck);
		}//case
		case DLG_REGREF:
		{ // case 2
			if(response)
			{ // if response 2
                new regex:rg_refcheck = regex_new("^[a-zA-Z_]{4,24}$");
                if(regex_check(inputtext, rg_refcheck))
                { // if regex
               		static const fmt_query[] = "SELECT * FROM `users` WHERE `name` = '%s'";
					new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)];
					format(query, sizeof(query), fmt_query, inputtext);
					mysql_tquery(dbHandle, query, "CheckReferal", "is", playerid, inputtext);
                } // if regex
                else
                { // else regex
	   				SPD(playerid, DLG_REGREF, DIALOG_STYLE_INPUT, "{ff9300}Регистрация{FFFFFF} * Ввод пригласившего игрока",
					   "{FFFFFF}Если ты зашел на сервер по приглашению, то \n\
					   можешь указать ник пригласившего в поле ниже.",
					   "Далее", "Пропустить");
				       return SCM(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Введите ник игрока приглосившего вас корректно!");
                } // else regex
                regex_delete(rg_refcheck);
			} // if response 2
			else
			{ // else if response 2
				SPD(playerid, DLG_SEX, DIALOG_STYLE_MSGBOX, "{ff9300}Регистрация{FFFFFF} * Выбор пола",
					"{FFFFFF}Выберите пол вашего персонажа:",
					"Мужской", "Женский");
			} // else if response 2
		} //case 2
  		case DLG_SEX:
		{
			if(response) player_info[playerid][SEX] = 1;
  			else player_info[playerid][SEX] = 2;
  			SPD(playerid, DLG_REGRACE, DIALOG_STYLE_LIST, "{ff9300}Регистрация{FFFFFF} * Выбор расы",
				"Негроидная\n\
				Европиоидная\n\
				Монголоидная/Азиатская",
			"Далее", "");
	    }
	    case DLG_REGRACE:
	    {
	        switch(listitem)
	        {
				case 0: player_info[playerid][RACE] = 1;
				case 1: player_info[playerid][RACE] = 2;
				case 2: player_info[playerid][RACE] = 3;
			}
			SPD(playerid, DLG_REGAGE, DIALOG_STYLE_INPUT, "{ff9300}Регистрация{FFFFFF} * Выбор возраста",
				"{FFFFFF}Введите возраст вашего будующего персонажа:\n\
				{ff9500}\t* Возраст должен быть от 18-ти до 60-ти лет!",
				"Далее", "");
		}
		case DLG_REGAGE:
		{
			if(!strlen(inputtext))
			{
			 	SPD(playerid, DLG_REGAGE, DIALOG_STYLE_INPUT, "{ff9300}Регистрация{FFFFFF} * Выбор возраста",
				"{FFFFFF}Введите возраст вашего будующего персонажа:\n\
				{ff9500}\t* Возраст должен быть от 18-ти до 60-ти лет!",
				"Далее", "");
			return SCM(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Укажите ваш возраст");
			}
    		if(strval(inputtext) < 18 || strval(inputtext) > 60)
			{
			SPD(playerid, DLG_REGAGE, DIALOG_STYLE_INPUT, "{ff9300}Регистрация{FFFFFF} * Выбор возраста",
			"{FFFFFF}Введите возраст вашего будующего персонажа:\n\
			{ff9500}\t* Возраст должен быть от 18-ти до 60-ти лет!",
			"Далее", "");
			return SCM(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Укажите возраст от 18-ти до 60-ти");
			}
			player_info[playerid][AGE] = strval(inputtext);
			//  ИНФ ПРО МАССИВ
			// В массиве 3 рассы, на каждый диаразон возраста - свои скины
			// Расы: Негроидная, Европиоидная, Монголоидная
			// Диапазоны: 18-29, 30-45, 46-60
			new regmaleskins[9][2] =
			{
				{19,28}, // Негроидная 18-29
				{25,36}, // Негроидная 30-45
				{14,142}, // Негроидная 46-60
				{101,26}, // Европиоидная 18-29
				{2,202}, // Европиоидная 30-45
				{3,290}, // Европиоидная 46-60
				{170,180}, // Монголоидная 18-29
				{47,48}, // Монголоидная 30-45
				{132,229} // Монголоидная 46-60
			};
  			new regfemaleskins[9][2] = // Аналогично
			{
                {13,69},
                {9,190},
                {10,218},
                {41,56},
                {31,151},
                {39,89},
                {169,193},
                {207,225},
                {54,130}
			};
			    new newskinindex;
				switch(player_info[playerid][RACE])
				{
				    case 1: {}
				    case 2: newskinindex+=3;
				    case 3: newskinindex+=6;
				}
				switch(player_info[playerid][AGE])
				{
				    case 18..29: {}
				    case 30..45: newskinindex++;
				    case 46..60: newskinindex+=2;
				}
				if(player_info[playerid][SEX] == 1) player_info[playerid][SKIN] = regfemaleskins[newskinindex][random(2)];
				else player_info[playerid][SKIN] = regfemaleskins[newskinindex][random(2)];
				new Year, Month, Day;
				getdate(Year, Month, Day);
				new date[13];
				format(date, sizeof(date), "%02d.%02d.%d", Day, Month, Year);
				new ip[16];
				GetPlayerIp(playerid, ip, sizeof(ip));
				
				static const fmt_query[] = "INSERT INTO `users` (`name`, `password`, `email`, `ref`, `sex`, `race`, `age`, `skin`, `regdata`,  `regip`) VALUES ('%s', '%s', '%s', '%d', '%d', '%d', '%d', '%d', '%s', '%s')";
					new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)+(-2+64)+(-2+32)+(-2+8)+(-2+2)+(-2+2)+(-2+3)+(-2+4)+(-2+13)+(-2+16)];
					format(query, sizeof(query), fmt_query, player_info[playerid][NAME], player_info[playerid][PASSWORD], player_info[playerid][EMAIL], player_info[playerid][REF], player_info[playerid][SEX], player_info[playerid][RACE], player_info[playerid][AGE], player_info[playerid][SKIN], date, ip);
					mysql_query(dbHandle, query);
					
				static const fmt_query2[] = "SELECT * FROM `users` WHERE `name` = '%s' AND `password` = '%s'";
					format(query, sizeof(query), fmt_query2, player_info[playerid][NAME], player_info[playerid][PASSWORD]);
					mysql_tquery(dbHandle, query, "PlayerLogin", "i", playerid);

					
		}

[code]case DLG_LOG:
{
    if (response)
    {
		static const fmt_query[] = "SELECT * FROM `users` WHERE `password` = '%s'";
		new query[sizeof(fmt_query)+(-2+32)];
		format(query, sizeof(query), fmt_query, player_info[playerid][PASSWORD]);
		new result;
		mysql_tquery(dbHandle, query, "PlayerLogin", "i", playerid);

        if(result)
        {
            SCM(playerid, COLOR_WHITE, "{22ff00}[SERVER]{FFFFFF}: {ff0000}Да!");
        }
        else
        {
            SCM(playerid, COLOR_WHITE, "{ff0000}[SERVER]{FFFFFF}: {ff0000}Нет!");
            ShowLogin(playerid);
        }
    }
    else
    {
        SCM(playerid, COLOR_WHITE, "{ff0000}[SERVER]{FFFFFF}: {ff0000}(/q){FFFFFF}.");
        SPD(playerid, -1, 0, " ", " ", " ", "");
        return Kick(playerid);
    }
}
    }// Не трогать
    return 1;
}// не трогать

forward PlayerLogin(playerid);
public PlayerLogin(playerid)
{
	new rows;
    cache_get_row_count(rows);
    if(rows)
    {
        cache_get_value_name_int(0, "id", player_info[playerid][ID]);
        cache_get_value_name(0, "email", player_info[playerid][EMAIL], 64);
        cache_get_value_name(0, "password", player_info[playerid][PASSWORD], 32);
        cache_get_value_name_int(0, "ref", player_info[playerid][REF]);
        cache_get_value_name_int(0, "sex", player_info[playerid][SEX]);
        cache_get_value_name_int(0, "race", player_info[playerid][RACE]);
        cache_get_value_name_int(0, "age", player_info[playerid][AGE]);
        cache_get_value_name_int(0, "skin", player_info[playerid][SKIN]);
        cache_get_value_name_int(0, "regdata", player_info[playerid][REGDATA], 13);
        cache_get_value_name_int(0, "regip", player_info[playerid][REGIP], 16);

   		TogglePlayerSpectating(playerid, 0);
   		SetSpawnInfo(playerid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
   		SetPVarInt(playerid, "logged", 1);
   		SpawnPlayer(playerid);
	}
	return 1;
}

forward CheckReferal(playerid, referal[]);
public CheckReferal(playerid, referal[])
{
    new rows;
    cache_get_row_count(rows);

    if(rows)
    {
        new refid;
		SPD(playerid, DLG_SEX, DIALOG_STYLE_MSGBOX, "{ff9300}Регистрация{FFFFFF} * Выбор пола",
			"{FFFFFF}Выберите пол вашего персонажа:",
			"Мужской", "Женский");
        cache_get_value_name_int(0, "id", refid);
        player_info[playerid][REF] = refid;
    }
    else
    {
        SPD(playerid, DLG_REGREF, DIALOG_STYLE_INPUT, "{ff9300}Регистрация{FFFFFF} * Ввод пригласившего игрока",
           "{FFFFFF}Если ты зашел на сервер по приглашению, то \n\
           можешь указать ник пригласившего в поле ниже.",
           "Далее", "Пропустить");
        return SCM(playerid, COLOR_RED, "[Ошибка] {FFFFFF}Аккаунта с таким ником нет в базе данных!");
    }
    return 1;
}

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

CMD:spawn(playerid)
{
    TogglePlayerSpectating(playerid, 0);
   		SetSpawnInfo(playerid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
   		SetPVarInt(playerid, "logged", 1);
   		SpawnPlayer(playerid);
}


Код авторизации:
case DLG_LOG:
{
if (response)
{
static const fmt_query[] = "SELECT * FROM `users` WHERE `password` = '%s'";
new query[sizeof(fmt_query)+(-2+32)];
format(query, sizeof(query), fmt_query, player_info[playerid][PASSWORD]);
new result;
mysql_tquery(dbHandle, query, "PlayerLogin", "i", playerid);

if(result)
{
SCM(playerid, COLOR_WHITE, "{22ff00}[SERVER]{FFFFFF}: {ff0000}Да!");
}
else
{
SCM(playerid, COLOR_WHITE, "{ff0000}[SERVER]{FFFFFF}: {ff0000}Нет!");
ShowLogin(playerid);
}
}
else
{
SCM(playerid, COLOR_WHITE, "{ff0000}[SERVER]{FFFFFF}: {ff0000}(/q){FFFFFF}.");
SPD(playerid, -1, 0, " ", " ", " ", "");
return Kick(playerid);
}
}[/code]

mysql.log: [16:30:04] [WARNING] mysql_connect: no password specified
0

#2
Пользователь офлайн   k3lly. 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
В OnPlayerConnect:
SetPVarInt(playerid, "WrongPassword", 3);

case DLG_LOG:
{
if(response)
{
if(!strlen(inputtext))
{
ShowLogin(playerid);
return 1;
}
new checkpass[16];
strmid(checkpass, inputtext, 0, strlen(inputtext), 16);
if(!strcmp(player_info[playerid][PASSWORD], checkpass))
{
static const fmt_query[] = "SELECT * FROM `users` WHERE `name` = '%s' AND `password` = '%s'";
new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)+(-2+16)];
format(query, sizeof(query), fmt_query, player_info[playerid][NAME], player_info[playerid][PASSWORD]);
mysql_tquery(dbHandle, query, "PlayerLogin", "i", playerid);
}
else
{
new string[100];
SetPVarInt(playerid, "WrongPassword", GetPVarInt(playerid, "WrongPassword")-1);
if(GetPVarInt(playerid, "WrongPassword") > 0)
{
format(string, sizeof(string), "Вы ввели неправильный пароль от аккаунта. Попыток ввода пароля осталось: %d", GetPVarInt(playerid, "WrongPassword"));
SCM(playerid, COLOR_ORED, string);
}
if(GetPVarInt(playerid, "WrongPassword") == 0)
{
SCM(playerid, COLOR_QRED, "Вы были кикнуты по подозрению во взломе");
SCM(playerid, COLOR_QRED, "Для выхода из игры используйте {FFFFFF}/q(uit)");
SPD(playerid, -1, 0, " ", " ", " ", " ");
return Kick(playerid);
}
ShowLogin(playerid);
}
}

Готовая авторизация под тебя. Используй. Замени всё под себя
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика