thehilton
Новичок
Приветствую, пользователи P-I. Имеется проблема в моде, переодически при онлайне и когда игрок несколько раз перезаходит на сервер в гараже автомобили клонируются. То есть по несколько машин сразу в слоте.
Удаление авто при выходе стоит, если же ставить это удаление при коннекте появляется другая проблема - машины у некоторых просто не появляются и выходит ошибка #020
Загрузка авто при успешной авторизации игрока
public OnVehicleSpawn(vehicleid)
Сам stock загрузки авто
Удаление авто в паблике OnPlayerDisconnect
Удаление авто при выходе стоит, если же ставить это удаление при коннекте появляется другая проблема - машины у некоторых просто не появляются и выходит ошибка #020
Загрузка авто при успешной авторизации игрока
Код:
if(GetPlayerHouse(playerid) || GetPlayerArendHouse(playerid)) LoadCarPlayerId(playerid,1), LoadCarPlayerId(playerid,2);
Код:
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 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;
}
Код:
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;
}
