PDA

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



codeo
24.05.2014, 15:13
Подскажите как сделать так, чтобы транспорт который я заспавнил исчезал после взрыва
а то я беру админ кар, он взрывается и появляется на том месте где я его брал..

Hidden
24.05.2014, 15:55
Создаёте глобальную переменную, в которую будете записывать создание машины, например:

new some_vehicle; // в начале мода


some_vehicle = AddStaticVehicleEx(403,-59.8639984,-377.4379883,6.0799999,0.5000000,36,1,90000); // в часть мода, где у вас создаются машины, либо в команду

Далее в public OnVehicleDeath(vehicleid, killerid)

public OnVehicleDeath(vehicleid, killerid)
{
if(vehicleid == some_vehicle) DestroyVehicle(some_vehicle);
return true;
}

underwoker
24.05.2014, 16:12
Подскажите как сделать так, чтобы транспорт который я заспавнил исчезал после взрыва
а то я беру админ кар, он взрывается и появляется на том месте где я его брал..
Ну я сделал так.
У меня созданные тачки удалить можно, а серверные - нельзя. Таким образом при спавне машины я просто проверяю машину на то серверная она или нет, и если нет - то удаляем.
Ко всем new:

new bool:SERVERCARID[MAX_VEHICLES];
У вас это уже должно быть, но тут собсна при старте мода(OnGameModeInit), по всем машинам созданным идет цикл, и им присваиваются значения топлива и остальные параметры(У меня, у вас может быть чуть по другому).

for(new veh=0; veh < MAX_VEHICLES; veh++)
{
//FuelCar[veh] = 50;
SetVehicleToRespawn(veh);
SERVERCARID[veh] = true;
}
Как видите в примере выше - идет цикл от первой машины, до той что указана в MAX_VEHICLES, и им всем присваивается значение бензина и их спавнит, а так же им присваивается переменная SERVERCARID(Это дает понять серверу, что машина будет серверная, и удалить ее не получится).

В команду удаления машины, мы вставим такую вот строчку:

if(SERVERCARID[GetPlayerVehicleID(playerid)] == true) return SendClientMessage(playerid, -1, "Нельзя");
И так, мы видим что Если(у машины в которой сидит игрок переменная SERVERCARID == true, значит она серверная, и удалить ее нельзя.

Ну и при создании машины, в конец команды вставьте это:

SERVERCARID[tachka] = false;
Это даст понять серверу, что машина не серверная, и удалить ее можно.
P.S. "tachka" - замените на свою переменную создания машины в команде.

Теперь идем в самое начало паблика OnVehicleSpawn
и вставляем туда

if(SERVERCARID[vehicleid] == false)
{
//format(string, sizeof(string), "[ADM]: ID%i созданная машина автоматом удалена(/veh)",vehicleid);
//AdminMessege(CORANGE,string,1);
DestroyVehicle(vehicleid);
}
OnVehicleSpawn - отвечает за спавн машин в моде, после смерти или старте мода, и еще парочке случаев.
Так вот, тут мы проверяем, если у машины переменная которая обозначает серверу какая машина серверная, а какая нет - равна false(Значите не серверная), то удаляем ее просто.
Выше я закомментировал две строчки, если хотите можете раскомментировать, но переделав под свой мод.

Вот собственно и все.