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

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

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

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

Клонирование авто в гараже

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

thehilton

Новичок
Приветствую, пользователи P-I. Имеется проблема в моде, переодически при онлайне и когда игрок несколько раз перезаходит на сервер в гараже автомобили клонируются. То есть по несколько машин сразу в слоте.
Удаление авто при выходе стоит, если же ставить это удаление при коннекте появляется другая проблема - машины у некоторых просто не появляются и выходит ошибка #020
Загрузка авто при успешной авторизации игрока
Код:
if(GetPlayerHouse(playerid) || GetPlayerArendHouse(playerid)) LoadCarPlayerId(playerid,1), LoadCarPlayerId(playerid,2);
public OnVehicleSpawn(vehicleid)
Код:
    GetVehiclePos(vehicleid, gVehicles[vehicleid][vX], gVehicles[vehicleid][vY], gVehicles[vehicleid][vZ]);
	foreach(i)
	{
		if (!IsPlayerConnected(i)) continue;
		if(vehicleid == caridhouse[i]) LoadCarPlayerId(i,1);
		else if(vehicleid == caridhouse2[i]) LoadCarPlayerId(i,2);
	}
Сам stock загрузки авто
Код:
stock LoadCarPlayerId(playerid,idcar)
{
	if(GetPlayerHouse(playerid) == 0 && GetPlayerArendHouse(playerid) == 0) return true;
	new slot = -2;
	switch(idcar)
	{
	case 1:
		{
			if(caridhouse[playerid] != -1) DestroyVehicle(caridhouse[playerid]), caridhouse[playerid] = -1;
			for(new i;i<4;i++)
			{
				if(HouseInfo[GetPVarInt(playerid, "PlayerHouse")][hPark][i] == playerid) {slot = i; break;}
				if(HouseInfo[GetPVarInt(playerid, "PlayerHouse")][hPark][i] == -1) {slot = i; break;}
			}
		}
	case 2:
		{
			if(caridhouse2[playerid] != -1) DestroyVehicle(caridhouse2[playerid]), caridhouse2[playerid] = -1;
			for(new i;i<4;i++)
			{
				if(HouseInfo[GetPVarInt(playerid, "PlayerHouse")][hPark2][i] == playerid) {slot = i; break;}
				if(HouseInfo[GetPVarInt(playerid, "PlayerHouse")][hPark2][i] == -1) {slot = i; break;}
			}
		}
	}
	if(slot == -2) return SCM(playerid,-1,"Ошибка #020");
	switch(slot)
	{
		case 0:
 		{
		    switch(idcar)
		    {
		        case 1:
		        {
		            caridhouse[playerid] = CreateVehicleEx(PlayerInfo[playerid][pCar][0], 505.7477,521.2438,1002.6091,90.1600, cVehcoms[playerid][idcar-1][0] ,cVehcoms[playerid][idcar-1][1], 86400);
		            LinkVehicleToInterior(caridhouse[playerid], 18);
		            //gVehicles[caridhouse[playerid]][vFuel] = gTransport[PlayerInfo[playerid][pCar][0]-400][trTank]; // Временно
					HouseInfo[GetPVarInt(playerid, "PlayerHouse")][hPark][slot] = playerid;
					SetVehicleVirtualWorld(caridhouse[playerid], GetPVarInt(playerid, "PlayerHouse")+50);
		        }
		        case 2:
		        {
		            caridhouse2[playerid] = CreateVehicleEx(PlayerInfo[playerid][pCar][1], 506.6432,503.2216,1001.9526,88.4989, cVehcoms[playerid][idcar-1][0], cVehcoms[playerid][idcar-1][1], 86400);
					LinkVehicleToInterior(caridhouse2[playerid], 18);
					//gVehicles[GetPVarInt(playerid,"CREVEH")][vFuel] = gTransport[PlayerInfo[playerid][pCar][1]-400][trTank]; // Временно
					HouseInfo[GetPVarInt(playerid, "PlayerHouse")][hPark2][slot] = playerid;
					SetVehicleVirtualWorld(caridhouse2[playerid], GetPVarInt(playerid, "PlayerHouse")+50);
		        }
		    }
		}
		case 1:
		{
		    switch(idcar)
		    {
		        case 1:
		        {
		            caridhouse[playerid] = CreateVehicleEx(PlayerInfo[playerid][pCar][0], 505.7477,521.2438,1002.6091,90.1600, cVehcoms[playerid][idcar-1][0] ,cVehcoms[playerid][idcar-1][1], 86400);
		            LinkVehicleToInterior(caridhouse[playerid], 18);
		            if(gVehicles[caridhouse[playerid]][vFuel] <= 1.0) gVehicles[caridhouse[playerid]][vFuel] = 5.0, PlayerInfo[playerid][pFuelcar] = 5.0;
					HouseInfo[GetPVarInt(playerid, "PlayerHouse")][hPark][slot] = playerid;
					SetVehicleVirtualWorld(caridhouse[playerid], GetPVarInt(playerid, "PlayerHouse")+50);
		        }
		        case 2:
		        {
		            caridhouse2[playerid] = CreateVehicleEx(PlayerInfo[playerid][pCar][1], 506.6432,503.2216,1001.9526,88.4989, cVehcoms[playerid][idcar-1][0] ,cVehcoms[playerid][idcar-1][1], 86400);
					LinkVehicleToInterior(caridhouse2[playerid], 18);
					if(gVehicles[caridhouse[playerid]][vFuel] <= 1.0) gVehicles[caridhouse[playerid]][vFuel] = 5.0, PlayerInfo[playerid][pFuelcar] = 5.0;
					HouseInfo[GetPVarInt(playerid, "PlayerHouse")][hPark2][slot] = playerid;
					SetVehicleVirtualWorld(caridhouse2[playerid], GetPVarInt(playerid, "PlayerHouse")+50);
		        }
		    }
		}
		case 2:
		{
		    switch(idcar)
		    {
		        case 1:
		        {
		            caridhouse[playerid] = CreateVehicleEx(PlayerInfo[playerid][pCar][0], 505.7477,521.2438,1002.6091,90.1600, cVehcoms[playerid][idcar-1][0] ,cVehcoms[playerid][idcar-1][1], 86400);
		            LinkVehicleToInterior(caridhouse[playerid], 18);
		            //gVehicles[caridhouse[playerid]][vFuel] = gTransport[PlayerInfo[playerid][pCar][0]-400][trTank]; // Временно
					HouseInfo[GetPVarInt(playerid, "PlayerHouse")][hPark][slot] = playerid;
					SetVehicleVirtualWorld(caridhouse[playerid], GetPVarInt(playerid, "PlayerHouse")+50);
		        }
		        case 2:
		        {
		            caridhouse2[playerid] = CreateVehicleEx(PlayerInfo[playerid][pCar][1], 506.6432,503.2216,1001.9526,88.4989, cVehcoms[playerid][idcar-1][0] ,cVehcoms[playerid][idcar-1][1], 86400);
					LinkVehicleToInterior(caridhouse2[playerid], 18);
					//gVehicles[GetPVarInt(playerid,"CREVEH")][vFuel] = gTransport[PlayerInfo[playerid][pCar][1]-400][trTank]; // Временно
					HouseInfo[GetPVarInt(playerid, "PlayerHouse")][hPark2][slot] = playerid;
					SetVehicleVirtualWorld(caridhouse2[playerid], GetPVarInt(playerid, "PlayerHouse")+50);
		        }
		    }
		}
		case 3:
		{
		    switch(idcar)
		    {
		        case 1:
		        {
		            caridhouse[playerid] = CreateVehicleEx(PlayerInfo[playerid][pCar][0], 505.7477,521.2438,1002.6091,90.1600, cVehcoms[playerid][idcar-1][0] ,cVehcoms[playerid][idcar-1][1], 86400);
		            LinkVehicleToInterior(caridhouse[playerid], 18);
		            //gVehicles[caridhouse[playerid]][vFuel] = gTransport[PlayerInfo[playerid][pCar][0]-400][trTank]; // Временно
					HouseInfo[GetPVarInt(playerid, "PlayerHouse")][hPark][slot] = playerid;
					SetVehicleVirtualWorld(caridhouse[playerid], GetPVarInt(playerid, "PlayerHouse")+50);
		        }
		        case 2:
		        {
		            caridhouse2[playerid] = CreateVehicleEx(PlayerInfo[playerid][pCar][1], 506.6432,503.2216,1001.9526,88.4989, cVehcoms[playerid][idcar-1][0] ,cVehcoms[playerid][idcar-1][1], 86400);
					LinkVehicleToInterior(caridhouse2[playerid], 18);
					//gVehicles[GetPVarInt(playerid,"CREVEH")][vFuel] = gTransport[PlayerInfo[playerid][pCar][1]-400][trTank]; // Временно
					HouseInfo[GetPVarInt(playerid, "PlayerHouse")][hPark2][slot] = playerid;
					SetVehicleVirtualWorld(caridhouse2[playerid], GetPVarInt(playerid, "PlayerHouse")+50);
		        }
		    }
		}
	}
	switch(idcar)
	{
	    case 1:
	    {
	        AC_ChangeVehicleColor(caridhouse[playerid],cVehcoms[playerid][0][0],cVehcoms[playerid][0][1]);
			AddVehicleComponent (caridhouse[playerid], cVehcoms[playerid][0][2]);
			AddVehicleComponent (caridhouse[playerid], cVehcoms[playerid][0][12]);
			AddVehicleComponent (caridhouse[playerid], cVehcoms[playerid][0][13]);
			if(PJ(caridhouse[playerid]))
			{
				ChangeVehiclePaintjob(caridhouse[playerid], cVehcoms[playerid][0][3]);
				AddVehicleComponent (caridhouse[playerid], cVehcoms[playerid][0][4]);
				AddVehicleComponent (caridhouse[playerid], cVehcoms[playerid][0][5]);
				AddVehicleComponent (caridhouse[playerid], cVehcoms[playerid][0][6]);
				AddVehicleComponent (caridhouse[playerid], cVehcoms[playerid][0][7]);
				AddVehicleComponent (caridhouse[playerid], cVehcoms[playerid][0][8]);
				AddVehicleComponent (caridhouse[playerid], cVehcoms[playerid][0][9]);
				AddVehicleComponent (caridhouse[playerid], cVehcoms[playerid][0][10]);
				AddVehicleComponent (caridhouse[playerid], cVehcoms[playerid][0][11]);
			}
		}
		case 2:
	    {
	        AC_ChangeVehicleColor(caridhouse2[playerid],cVehcoms[playerid][1][0],cVehcoms[playerid][1][1]);
			AddVehicleComponent (caridhouse2[playerid], cVehcoms[playerid][1][2]);
			AddVehicleComponent (caridhouse2[playerid], cVehcoms[playerid][1][12]);
			AddVehicleComponent (caridhouse2[playerid], cVehcoms[playerid][1][13]);
			if(PJ(caridhouse2[playerid]))
			{
				ChangeVehiclePaintjob(caridhouse2[playerid], cVehcoms[playerid][1][3]);
				AddVehicleComponent (caridhouse2[playerid], cVehcoms[playerid][1][4]);
				AddVehicleComponent (caridhouse2[playerid], cVehcoms[playerid][1][5]);
				AddVehicleComponent (caridhouse2[playerid], cVehcoms[playerid][1][6]);
				AddVehicleComponent (caridhouse2[playerid], cVehcoms[playerid][1][7]);
				AddVehicleComponent (caridhouse2[playerid], cVehcoms[playerid][1][8]);
				AddVehicleComponent (caridhouse2[playerid], cVehcoms[playerid][1][9]);
				AddVehicleComponent (caridhouse2[playerid], cVehcoms[playerid][1][10]);
				AddVehicleComponent (caridhouse2[playerid], cVehcoms[playerid][1][11]);
			}
		}
	}
	return true;
}
Удаление авто в паблике OnPlayerDisconnect
Код:
	if(caridhouse[playerid] != -1)
	{
		PlayerInfo[playerid][pFuelcar] = gVehicles[caridhouse[playerid]][vFuel];
		DestroyVehicle(caridhouse[playerid]);
		caridhouse[playerid] = -1;
	}
	if(caridhouse2[playerid] != -1)
	{
		PlayerInfo[playerid][pFuelcar] = gVehicles[caridhouse2[playerid]][vFuel];
		DestroyVehicle(caridhouse2[playerid]);
		caridhouse2[playerid] = -1;
	}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу