Написал систему авторизации на MySQL.

Но столкнулся с одной проблемой, когда один игрок проходит авторизацию всё проходит нормально, его спавнит в его скине с его всеми данными.



Но когда авторизован игрок на сервере и заходит другой, при вводе пароля в окно авторизации авторизованному игроку выдаётся скин игрока который ввел пароль в окно авторизации и заспавнило авторизованного игрока на точку спавна.



А у игрока который проходил авторизацию, окно после ввода пароля пропало и не заспавнило!

Вот код авторизации/спавна/и загрузки аккаунта:

Код:
public OnPlayerSpawn(playerid)
{
    if(GetPVarInt( playerid, "RegSkin") == 1)
	{
	    SetPVarInt( playerid, "RegSkin", 0);
	    SetPlayerCameraPos( playerid, 204.4336, -164.8902, 1001.2896);
	    SetPlayerCameraLookAt( playerid, 204.2567, -160.8903, 1000.5234);
		SetPlayerInterior( playerid, 14);
		SetPlayerVirtualWorld( playerid, 14);
	    SetPlayerPos( playerid, 204.2567, -160.8903, 1000.5234);
	    SetPlayerFacingAngle( playerid, 180.0);
	    TextDrawShowForPlayer( playerid, BACK[playerid]);
		TextDrawShowForPlayer( playerid, NEXT[playerid]);
		TextDrawShowForPlayer( playerid, SELECT[playerid]);
		SelectTextDraw( playerid, 0xFFFFFFFF);
		switch(Player[playerid][Sex])
		{
		    case 1:
			{
				SetPlayerSkin( playerid, 2);
				SetPVarInt( playerid, "selectskin", 2);
			}
		    case 2:
			{
			    SetPlayerSkin( playerid, 9);
			    SetPVarInt( playerid, "selectskin", 9);
			}
		}
	}
	if(GetPVarInt( playerid, "registration") == 1)
	{
	    CancelSelectTextDraw( playerid);
	    TextDrawHideForPlayer( playerid, BACK[playerid]);
		TextDrawHideForPlayer( playerid, NEXT[playerid]);
		TextDrawHideForPlayer( playerid, SELECT[playerid]);
		TogglePlayerControllable( playerid, 1);
	    SetPlayerInterior( playerid, 0);
	    SetPlayerVirtualWorld( playerid, 0);
	    SetPlayerSkin( playerid, Player[playerid][Skin]);
	    SetPlayerScore( playerid, Player[playerid][Level]);
    	SetPlayerPos( playerid, 1770.2997, -1949.2952, 14.1096);
    	SetPlayerFacingAngle( playerid, 328.0);
	}
	else
	{
	    SetPVarInt( playerid, "Spawn", 0);
	    SetPlayerInterior( playerid, 0);
	    SetPlayerVirtualWorld( playerid, 0);
	    SetPlayerSkin( playerid, Player[playerid][Skin]);
	    SetPlayerScore( playerid, Player[playerid][Level]);
    	SetPlayerPos( playerid, 1770.2997, -1949.2952, 14.1096);
    	SetPlayerFacingAngle( playerid, 328.0);
	}
	return 1;
}

        case 6:
	{
			if(response)
			{
			    if(!strlen(inputtext))
			    {
			        static const
				        login[] = "{FFFFFF}Уважаемый {00FFA8}%s{FFFFFF}!\n\
								  Вы зашли на сервер: {8AFF00}Server{FFFFFF}!\n\
								  Данный персонаж имеется в базе данных!\n\
								  Пройдите авторизацию!";
					new str_login[sizeof(login) + (-2+24)];
					
					format( str_login, sizeof(str_login), login, sendername(playerid));
			        SPD( playerid, 6, DSI, "{0080B5}Авторизация.", str_login, "{FFFFFF}Далее", "{FFFFFF}Выход");
			        return 1;
			    }
			    for(new i = strlen(inputtext); i != 0; --i)
		        switch(inputtext[i])
		        {
		            case 'А'..'Я', 'а'..'я': return show_mistake2(playerid);
		        }
		        if(strlen(inputtext) < 5 || strlen(inputtext) > 15) return show_mistake2(playerid);
		        
		        static const
					pass[] = "SELECT * FROM `accounts` WHERE `name` = '%s' AND `password` = '%s' LIMIT 1";
				new str_pass[sizeof(pass) + (-2+24) + (-2+15)];
				
				format( str_pass, sizeof(str_pass), pass, sendername(playerid), inputtext);
				return mysql_function_query( Mysqlconnect, str_pass, true, "@OnPlayerLogin", "");
			}
			else
			{
			    SCM( playerid, COLOR_ORANGE, "Вы были кикнуты сервером! (Для того чтобы выйти воспользуйтесь командой /q(uit)).");
	            Kickk(playerid);
			}
		}
	}

@OnPlayerLogin(playerid);
@OnPlayerLogin(playerid)
{
	new r, f;
	cache_get_data( r, f);
	if(r)
	{
	    cache_get_field_content(0, "name", Player[playerid][Name], Mysqlconnect, 25);
	    cache_get_field_content(0, "password", Player[playerid][Password], Mysqlconnect, 16);
	    Player[playerid][Level] = cache_get_field_content_int(0, "level", Player[playerid][Level]);
	    Player[playerid][Nation] = cache_get_field_content_int(0, "nation", Player[playerid][Nation]);
	    Player[playerid][Year] = cache_get_field_content_int(0, "year", Player[playerid][Year]);
	    Player[playerid][Sex] = cache_get_field_content_int(0, "sex", Player[playerid][Sex]);
	    Player[playerid][Skin] = cache_get_field_content_int(0, "skin", Player[playerid][Skin]);
	    Player[playerid][Admin] = cache_get_field_content_int(0, "admin", Player[playerid][Admin]);
	    Player[playerid][Money] = cache_get_field_content_int(0, "money", Player[playerid][Money]);
	    if(Player[playerid][Skin] != 0)
	    {
	        Logged{playerid} = true;
	        TogglePlayerSpectating(playerid, false);
	        LoginPlayer{playerid} = true;
	        KillTimer(PlayerLogin[playerid]);
	        SpawnPlayer(playerid);
	    }
	}
	else
	{
	    SetPVarInt( playerid, "WrongPassword", GetPVarInt(playerid, "WrongPassword")+1);
	    if(GetPVarInt( playerid, "WrongPassword") == 3)
	    {
	        SCM( playerid, COLOR_ORANGE, "Вы ввели 3 раза неверный пароль!");
			SCM( playerid, COLOR_ORANGE, "Вы были кикнуты сервером! (Для того чтобы выйти воспользуйтесь командой /q(uit)).");
	       	return Kickk(playerid);
	    }
	    
	    static const
			Wrong[] = "Введённый пароль не совпадает с паролем в базе данных! У вас осталось попыток: %i из 3!";
		new str_wrong[sizeof(Wrong) + (-2+2)];

		format( str_wrong, sizeof(str_wrong), Wrong, 3-GetPVarInt( playerid, "WrongPassword"));
		SCM( playerid, COLOR_WARNING, str_wrong);
		
		static const
	        login[] = "{FFFFFF}Уважаемый {00FFA8}%s{FFFFFF}!\n\
					  Вы зашли на сервер: {8AFF00}Server{FFFFFF}!\n\
					  Данный персонаж имеется в базе данных!\n\
					  Пройдите авторизацию!";
		new str_login[sizeof(login) + (-2+24)];
		format( str_login, sizeof(str_login), login, sendername(playerid));
        SPD( playerid, 6, DSI, "{0080B5}Авторизация.", str_login, "{FFFFFF}Далее", "{FFFFFF}Выход");
	}
	return 1;
}
Заранее огромное спасибо:)