Полицейский командой /block устанавливает на дорогу шипы, прокалывающие колёса у проезжающих мимо машин. Чтобы убрать шипы, необходимо ввести команду заново.
Для работы требуются:- streamer
- ZCMD/DC_CMD
- foreach
Ко всем new:
PHP код:
new spike_areas[MAX_PLAYERS];
new spike_objects[MAX_PLAYERS] = {0, ...};
В самый конец мода:
PHP код:
CMD:block(playerid, params[])
{
if(!IsACop(playerid)) // Заменяем на свою проверку Полиции/ФБР
return SendClientMessage(playerid, -1, "Ошибка: Вы не состоите в Полиции/ФБР.");
if(GetPlayerVirtualWorld(playerid) != 0 || GetPlayerInterior(playerid) != 0)
return SendClientMessage(playerid, -1, "Ошибка: Данную команду нельзя использовать в интерьере.");
if(IsPlayerInAnyVehicle(playerid))
return SendClientMessage(playerid, -1, "Ошибка: нельзя использовать в машине.");
if(spike_objects[playerid] == 0)
{
new Float:x, Float:y, Float:z, Float:a;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
spike_objects[playerid] = CreateDynamicObject(2899, x, y, z-0.8, 0, 0, a);
spike_areas[playerid] = CreateDynamicSphere(x, y, z, 7.0, -1, -1, -1);
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.1, 0, 1, 1, 1, 1);
SendClientMessage(playerid, 0x0bda51FF, "Вы установили шипы с дистанционным управлением.");
return SendClientMessage(playerid, 0x0bda51FF, "Используйте команду {007fff}/block {0bda51}, чтобы дезактивировать их.");
}
else
{
DestroyDynamicObject(spike_objects[playerid]);
spike_objects[playerid] = 0;
DestroyDynamicArea(spike_areas[playerid]);
return SendClientMessage(playerid, COLOR_GREY, "Шипы дезактивированы.");
}
}
Далее в колбэк OnPlayerEnterDynamicArea:
PHP код:
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
foreach(new i:Player)
{
if(areaid == spike_areas[i])
{
new panels, doors, lights, tires;
GetVehicleDamageStatus(GetPlayerVehicleID(playerid), panels, doors, lights, tires);
UpdateVehicleDamageStatus(GetPlayerVehicleID(playerid), panels, doors, lights, 15);
break;
}
}
}
При дисконнекте (OnPlayerDisconnect):
PHP код:
if(spike_objects[playerid] != 0)
{
DestroyObject(spike_objects[playerid]);
DestroyDynamicArea(spike_areas[playerid]);
}
Автор: codyO
Доработка: Daniel_Cortez