14/02/2022 18:38
Cara, posso ter uma noção de como você queira que funcione, mas fazer um sistema desse é meio complicado, isto é sendo "o sistema". Que envolva detectar a aproximação do inimigo, limite máximo que a antiaérea irá detectar, limite máximo do míssil para seguir, seguir o veículo, etc..
O que eu acho bem legal é o sistema antiaérea que os veículos tem no servidor COD MW3 (samp), se você achar alguma gamemode antiga(caso tenha em publico), pode estar usando como base caso contrario, só contratando um scripter de sua confiança ou fazer você mesmo.
Fiz um aqui basicão só para você ter uma noção mais ou menos como faz... claro que há bugs e afins mas é para ajudar você a desenvolver um melhor e mais fluido.
Video demostração
https://youtu.be/OqSGIXieXJU
O que eu acho bem legal é o sistema antiaérea que os veículos tem no servidor COD MW3 (samp), se você achar alguma gamemode antiga(caso tenha em publico), pode estar usando como base caso contrario, só contratando um scripter de sua confiança ou fazer você mesmo.
Fiz um aqui basicão só para você ter uma noção mais ou menos como faz... claro que há bugs e afins mas é para ajudar você a desenvolver um melhor e mais fluido.
Video demostração
https://youtu.be/OqSGIXieXJU
Código PHP:
static const Float:PosMissil[][] =
{
{237.6953, 1696.8750, 22.4141},
{15.6172, 1719.1641, 22.4141},
{354.4297, 2028.4922, 22.4141},
{188.2422, 2081.6484, 22.4453}
};
new MissilObject[MAX_PLAYERS];
new TimerMissil[MAX_PLAYERS], LimiteMissil[MAX_PLAYERS];
forward MoverMissil(playerid);
public MoverMissil(playerid)
{
if(IsPlayerInAnyVehicle(playerid))
{
LimiteMissil[playerid]++;
new Float:x, Float:y, Float:z, Float:r, vehicleid = GetPlayerVehicleID(playerid);
new Float:ox, Float:oy, Float:oz;
GetVehiclePos(vehicleid, x,y,z);
GetVehicleZAngle(vehicleid, r);
GetObjectPos(MissilObject[playerid], ox,oy,oz);
if(GetPlayerDistanceFromPoint(playerid, ox, oy, oz) <= 15)
{
CreateExplosion(ox, oy, oz, 0, 30);
KillTimer(TimerMissil[playerid]);
DestroyObject(MissilObject[playerid]);
LimiteMissil[playerid] = 0;
return 1;
}
else
if(LimiteMissil[playerid] <= 20)
{
MoveObject(MissilObject[playerid], x,y,z, 100, 0, 0, r);
return 1;
}
else
{
KillTimer(TimerMissil[playerid]);
DestroyObject(MissilObject[playerid]);
SendClientMessage(playerid, -1, "O missil não conseguiu chegar em você.");
LimiteMissil[playerid] = 0;
}
}
return 1;
}
forward CheckRadar();
public CheckRadar()//Deve definir na OnGameModeInit
{
foreach(new playerid: Player)
{
for(new i; i < sizeof(PosMissil); ++i)
{
if(GetPlayerDistanceFromPoint(playerid, PosMissil[i][0], PosMissil[i][1], PosMissil[i][2] )<= 60 && !IsValidObject(MissilObject[playerid]))
{
SendClientMessage(playerid, -1, "Você está em um local restrito. Missil foi lançado contra você.");
MissilObject[playerid] = CreateObject(3786, PosMissil[i][0], PosMissil[i][1], PosMissil[i][2]+4, 0, 0, 0, 1000);
TimerMissil[playerid] = SetTimerEx("MoverMissil", 500, true, "i", playerid);
LimiteMissil[playerid] = 0;
return 1;
}
}
}
return 1;
}
![[Imagem: disc.png]](https://i.ibb.co/YfQpSD1/disc.png)
[C.E.O]Brasil Play Socity