PDA

Просмотр полной версии : [Вопрос] Взрыв прицепа



verteich
23.06.2019, 20:08
Можно ли сделать действие при взрыве прицепа (AttachTrailerToVehicle)?

verteich
23.06.2019, 22:29
Впринципе можно закрывать, понял то что прицеп это авто и нужно использовать OnVehicleDeath

verteich
24.06.2019, 01:08
К сожалению, почему то не срабатывает (
for(new i; i < OWNABLETRAIELR; i++) {
if(vehicleid == Trailer[i]) {
TrailerInfo[i][tShtraf] = 1;
SendClientMessage(killerid, COLOR_RED, !"[ Оповощение ] {FFFFFF}Вы утопили/взорвали свой трейлер, заберите другой трейлер в салоне.");
}
}

DeimoS
24.06.2019, 17:06
Ну так а что логирование показывает? Смотри какое значение записано в vehicleid при взрыве, а какое выдаётся Trailer[i]

verteich
24.06.2019, 18:42
Ну так а что логирование показывает? Смотри какое значение записано в vehicleid при взрыве, а какое выдаётся Trailer[i]

в игре 988 в логах 987

DeimoS
24.06.2019, 20:31
в игре 988 в логах 987

Эмм, в смысле?

verteich
24.06.2019, 20:34
Эмм, в смысле?

в игре если написать /dl ид прицепа 988, а ид Trailer[i] 987, пытался прибавить к значению Trailer[i] + 1 оно все равно не срабатывает

DeimoS
24.06.2019, 22:36
Ну так значит неверно записываешь данные в Trailer[i]?

В общем,скинь весь код: начиная от создания трейлера/переменных для хранения и заканчивая проверок при взрыве

verteich
24.06.2019, 23:01
Ну так значит неверно записываешь данные в Trailer[i]?

В общем,скинь весь код: начиная от создания трейлера/переменных для хранения и заканчивая проверок при взрыве



//создание
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;

DeimoS
25.06.2019, 00:02
А если так?


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. При уничтожении трейлера это уже перебор цикла.