antiaérea - .Minato. - 14/02/2022
quem poder me da uma dica basica, iria ajuda muito
RE: antiaérea - CoelhaO_LokaO - 14/02/2022
limita a altura ou identifica se o player esta dentro de um veiculo aéreo naquela determinada área.
RE: antiaérea - k2bi_YT - 14/02/2022
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
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; }
RE: antiaérea - .Minato. - 14/02/2022
(14/02/2022 18:38)k2bi_YT Escreveu: 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
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; }
isso que eu quero fazer mano, estou tentando fazer esse sistema em Orgs
RE: antiaérea - k2bi_YT - 14/02/2022
Então, use esse como base e vai adaptando ao seu gosto e melhorando é claro, esse ai é apenas uma ideia parar ajudar você a criar.
|