Можно ли сделать действие при взрыве прицепа (AttachTrailerToVehicle)?
Вид для печати
Можно ли сделать действие при взрыве прицепа (AttachTrailerToVehicle)?
Впринципе можно закрывать, понял то что прицеп это авто и нужно использовать OnVehicleDeath
К сожалению, почему то не срабатывает (
for(new i; i < OWNABLETRAIELR; i++) { if(vehicleid == Trailer[i]) { TrailerInfo[i][tShtraf] = 1; SendClientMessage(killerid, COLOR_RED, !"[ Оповощение ] {FFFFFF}Вы утопили/взорвали свой трейлер, заберите другой трейлер в салоне."); } }
Ну так а что логирование показывает? Смотри какое значение записано в vehicleid при взрыве, а какое выдаётся Trailer[i]
Ну так значит неверно записываешь данные в Trailer[i]?
В общем,скинь весь код: начиная от создания трейлера/переменных для хранения и заканчивая проверок при взрыве
PHP код:
//создание
Trailer[PI[playerid][pTrailer]] = CreateVehicle(607, -2139.5718,-2463.2014,30.6250+1.0,319.8435, -1, -1, -1);
TrailerInfo[PI[playerid][pTrailer]][tObject] = CreateObject(3171, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000);
AttachObjectToVehicle(TrailerInfo[PI[playerid][pTrailer]][tObject], Trailer[PI[playerid][pTrailer]], -0.227439, -1.792068, -1.119750, 0.000000, 0.000000, -182.568710);
SetVehiclePos(carid, -2134.8965,-2457.5325,30.5000);
SetVehicleZAngle(carid, 320.7799);
SetTimerEx("AttachTrailer", 1350, false, "d", playerid);
SendClientMessage(playerid, -1, !"Вы забрали Ваш трейлер (меню трейлера: {FAAC58}/trmenu{FFFFFF})");
LinkVehicleToInterior(Trailer[PI[playerid][pTrailer]], 100);
SendClientMessage(playerid, COLOR_ORANGE, !"[ Подсказка ] {FFFFFF}Обязательно припаркуйте трейлер через меню! Иначе прийдется снова забирать его у нас, оплатив штраф.");
//взрыв
for(new i; i < OWNABLETRAILER; i++) {
printf("%i %i %i", i, Trailer[i], vehicleid);
if(vehicleid == Trailer[i]+1) {
TrailerInfo[i][tShtraf] = 1;
printf("сработались");
DestroyObject(TrailerInfo[i][tObject]);
SendClientMessage(killerid, COLOR_RED, !"[ Оповощение ] {FFFFFF}Вы утопили/взорвали свой трейлер, заберите другой трейлер в салоне.");
SaveTrailer(i);
}
}
//массивы
#define MAX_TRAILERS 500
enum trailerInfo
{
tID,
tObject,
tOwner[MAX_PLAYER_NAME],
Text3D:tLabel,
tShtraf,
tPark,
Float:tX,
Float:tY,
Float:tZ,
Float:tA,
tDoor,
tNalog,
tArea
};
new TrailerInfo[MAX_TRAILERS][trailerInfo];
new Trailer[MAX_TRAILERS];
new OWNABLETRAILER;
А если так?
PHP код:
for(new i; i < MAX_TRAILERS; i++) {
printf("%i %i %i", i, Trailer[i], vehicleid);
if(vehicleid == Trailer[i]) {
TrailerInfo[i][tShtraf] = 1;
printf("сработались");
DestroyObject(TrailerInfo[i][tObject]);
SendClientMessage(killerid, COLOR_RED, !"[ Оповощение ] {FFFFFF}Вы утопили/взорвали свой трейлер, заберите другой трейлер в салоне.");
SaveTrailer(i);
}
}
Хотя вообще не очень понятна логика твоего кода. При создании трейлера ты используешь переменную PI[playerid][pTrailer] в качестве индекса массива Trailer. При уничтожении трейлера это уже перебор цикла.