xcry
Новичок
Суть проблемы: При выходе игрока удаляется транспорт который ему принадлежит, кроме фракционного, при этом совершенно случайно может пропасть транспорт и у других игроков, причем происходит это совершенно случайно. Определенно проблема в OnPlayerDisconnect, но конкретно в чем проблема - так и не понял.
Буду благодарен если хоть кто-то откликнется и предложит свои варианты решения, если нет - имеется тема в столе заказов, пока никто не написал
Буду благодарен если хоть кто-то откликнется и предложит свои варианты решения, если нет - имеется тема в столе заказов, пока никто не написал
PHP:
//Непосредственно удаление транспорта при выходе
if(IsValidVehicle(veh_info[playerid][v_vehicle]))
{
DestroyVehicleEx(veh_info[playerid][v_vehicle]);
veh_info[playerid][v_vehicle] = INVALID_VEHICLE_ID;
DeleteGelik(playerid);
}
//DeleteGelik (удаление обьектов, если присутствуют)
stock DeleteGelik(playerid)
{
for(new i = 0; i < 10; i++)
{
if(IsValidDynamicObject(gelik[playerid][i]))
{
DestroyDynamicObject(gelik[playerid][i]);
}
}
}
// Чуть ниже в OnPlayerDisconnect обнаружил такую строчку, выполняет точно такую же функцию как и DeleteGelik
for(new i = 0; i < 9; i++) if(IsValidDynamicObject(gelik[playerid][i])) DestroyDynamicObject(gelik[playerid][i]);
//DestroyVehicleEx
stock DestroyVehicleEx(vehicleid)
{
if(Iter_Contains(valid_vehicles, vehicleid))
Iter_Remove(valid_vehicles, vehicleid);
foreach(new i : Player)
{
if(vehicleid == caridhouse[i] && PlayerInfo[i][pMercedes][GetPVarInt(i,"CarNomer")] == 1)
{
DeleteGelik(i);
break;
}
}
VEHICLE[vehicleid-1][vTurbo] = 0;
VEHICLE[vehicleid-1][vStyle] = 0;
if(IsValidDynamicObject(VEHICLE[vehicleid][vObject]))
DestroyDynamicObject(VEHICLE[vehicleid][vObject]);
foreach(new i : Player)
{
if(vehicleid == veh_info[i][v_vehicle])
{
if(IsValidDynamic3DTextLabel(veh_info[i][v_label]))
{
DestroyDynamic3DTextLabel(veh_info[i][v_label]);
break;
}
}
}
return DestroyVehicle(vehicleid);
}
Последнее редактирование:
