PDA

Просмотр полной версии : [Вопрос] Багаются домашние и фракционные машиы



Dondi
18.12.2016, 02:20
Помогите пожалуйста! Как найти проблему ? Это часто под вечер случается, садишься в свое авто или фракционное и появляется диалог



if(caridi >= ArendaCar[0] && caridi <= ArendaCar[1] && ArendaCarPlayer[caridi] == -1) ShowPlayerDialog(playerid, 248, DIALOG_STYLE_MSGBOX, "{0089FF}Аренда самолета", "Стоимость аренды: 80.000", "Арендовать", "Закрыть");


case 248:
{
if(response)
{
if(pTemp[playerid][pArendaCar] != -1)
{
SetVehicleToRespawn(pTemp[playerid][pArendaCar]);
ArendaCarPlayer[pTemp[playerid][pArendaCar]] = -1;
pTemp[playerid][pArendaCar] = -1;
pTemp[playerid][pArendaTime] = -1;
}
new caridi = GetPlayerVehicleID(playerid);
pTemp[playerid][pArendaCar] = caridi;
pTemp[playerid][pArendaTime] = 600;
ArendaCarPlayer[caridi] = playerid;
SendClientMessage(playerid, 0x66CC00AA, "Вы арендовали самолет, внимание если вы оставите самолет без внимания более чем на 10 минут");
SendClientMessage(playerid, 0x66CC00AA, "Он будет отбуксирован назад в аэропорт.");
PlayerInfo[playerid][pCash] -= 80000;
}
else RemoveFromVehicle(playerid);
return 1;
}

DeimoS
18.12.2016, 05:41
Нигде не удаляешь автомобили?
Вероятнее всего баг случается из-за того, что путаются ID авто при удалении и повторном создании.

То бишь, при старте сервера у тебя с по 10 ID создались фракционные авто, а с 11 по 20 - авто для аренды.
Через некоторое время фракционное авто было удалено и не создано.
Так же было удалено авто для аренды и после создано по новой, но так как сервер автоматически помещает авто в первый свободный ID, авто для аренды заняло слот фракционного авто. И тут создаётся удалённое ранее фракцинное авто, которое уже помещается в слот авто для аренды. И получается твой баг.

Хотя у тебя, скорее всего, наоборот: сначала создаются авто для аренды (1-10 слот), а потом фракционные авто. После авто для аренды удаляются и при пересоздании фракционного, оно помещается в слот для аренды... Ну а дальше уже понял.