Zdravím, tak mě napadlo, udělat minomet, ve stylu tepelného zaměřování, attachuntý na Yosemite. Do hlavy mi skočila myšlenka, tak sem se jí teda snažil udělat co nejreálněji.. Script obsahuje celkem 3 příkazy, /yosemite pro spawnutí vozidla s minometem, /desyosemite a /sestrelit id. A ted samotné vystřelení, pro sestřelí zadaného ID nesmí být od vás víc jak 200 metrů. Při výsřelu letí projektil svísle nad vás a přibližně po 500 metrech začne padat na zadané ID řízený projektil. Při testování sem žádný bug nenašel. Sem nováček, tak berte ohled na to, že né vše bude napsané zrovna nejlíp Downoad > http://ulozto.cz/xMFE8pVb/minomet-sa-mp-rar <
#include <a_samp>
#define SCM SendClientMessage
new Yosemite;
new Javelin;
new Projektil;
new Nabiti[MAX_PLAYERS];
new VY[MAX_PLAYERS];
new Sestreleny;
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Minomet by Misan");
print("--------------------------------------\n");
SetTimer("YosemiteInfo", 600000, true);
return 1;
}
forward YosemiteInfo(playerid);
public YosemiteInfo(playerid)
{
if(!IsPlayerAdmin(playerid)) return SCM(playerid, 0x00FF00, "Na serveru se nachází pojízdný minomet, můžeš požádat RCON administrátora, aby ti ho spawnul!");
else if(IsPlayerAdmin(playerid)) return SCM(playerid, 0x00FF00, "Na serveru se nachází pojízdný minomet, pro použití zadej /yosemite nebo /sestrelit id");
return 1;
}
forward NabitiJavelinu(playerid);
public NabitiJavelinu(playerid)
{
Nabiti[playerid] = 0;
return 1;
}
forward ZamireniCile(playerid);
public ZamireniCile(playerid)
{
new Float: X, Float: Y, Float: Z;
new Float: OX, Float: OY, Float: OZ;
GetPlayerPos(Sestreleny, X, Y, Z);
GetObjectPos(Projektil, OX, OY, OZ);
MoveObject(Projektil, X, Y, Z, 35);
SetTimerEx("TepelneZamerovani", 10, 1, "i", playerid);
if(OZ == Z)
{
DestroyObject(Projektil);
}
return 1;
}
forward TepelneZamerovani(playerid);
public TepelneZamerovani(playerid)
{
new Float: X, Float: Y, Float: Z;
new Float: OX, Float: OY, Float: OZ;
GetPlayerPos(Sestreleny, X, Y, Z);
GetObjectPos(Projektil, OX, OY, OZ);
MoveObject(Projektil, X, Y, Z, 70);
if(OZ + random(1) == Z)
{
DestroyObject(Projektil);
CreateExplosion(OX, OY , OZ, 6, 10);
}
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
DestroyVehicle(Yosemite);
DestroyObject(Javelin);
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/yosemite", cmdtext, true, 10) == 0)
{
if(!IsPlayerAdmin(playerid)) return SCM(playerid, 0x00FF00, "[!] Tento příkaz je určen pro RCON administrátory [!]");
else if(IsPlayerAdmin(playerid))
{
new Float:X, Float:Y, Float:Z, Float:A, Jmeno[15], Text[65];
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, A);
Yosemite = CreateVehicle(554, X, Y, Z, A, 0, 1, 3000);
Javelin = CreateObject(360, X, Y, Z, 0.00000, -90.00000, 90.00000);
AttachObjectToVehicle(Javelin, Yosemite, -0.02941, -0.68162, 0.40010, 0.00000, -90.00000, 90.00000);
GetPlayerName(playerid, Jmeno, sizeof (Jmeno));
format(Text, sizeof(Text),"[!] RCON Administrátor %s spawnul pojízdný minomet [!]",Jmeno);
SendClientMessageToAll(0x00FF00, Text);
}
return 1;
}
if (strcmp("/desyosemite", cmdtext, true, 10) == 0)
{
new Jmeno[15], Text[65];
DestroyVehicle(Yosemite);
GetPlayerName(playerid, Jmeno, sizeof (Jmeno));
format(Text, sizeof(Text),"[!] RCON Admistrátor %s nechal pojízdný minomet zničit [!]",Jmeno);
SendClientMessageToAll(0x00FF00, Text);
DestroyObject(Javelin);
return 1;
}
if (strcmp("/sestrelit", cmdtext, true, 10) == 0)
{
new Float:X, Float:Y, Float: Z, SJmeno[15], Jmeno[15], Text[60];
Sestreleny = strval(cmdtext);
GetPlayerPos(playerid, X, Y, Z);
GetPlayerName(Sestreleny, SJmeno, sizeof(SJmeno));
if(!strlen(cmdtext)) return SCM(playerid, 0x00FF00, "[!] Použití /sestrelit id [!]");
else if(!IsPlayerConnected(Sestreleny)) return SendClientMessage(playerid, 0x00FF00, "[!] Žádné takové ID není připojené [!]");
else if(playerid == Sestreleny) return SCM(playerid, 0x00FF00, "[!] Šílenče! Chceš se snad nechat zabít? [!]");
if(IsPlayerInRangeOfPoint(Sestreleny, 200, X, Y, Z))
{
if(Nabiti[playerid] == 0)
{
if(VY[playerid] == 1)
{
GetPlayerName(playerid, Jmeno, sizeof(Jmeno));
format(Text, sizeof(Text),"[!] Hráč %s vystřelil z minometu na hráče %s [!]", Jmeno, SJmeno);
SendClientMessageToAll(0x00FF00, Text);
Projektil = CreateObject(345, X -0.07671, Y -0.84980, Z + 1.10453, 90.00000, 0.00000, 0.00000);
MoveObject(Projektil, X, Y, Z + 3000, 32);
Nabiti[playerid] = 1;
SetTimerEx("NabitiJavelinu", 10000, false, "i", playerid);
SetTimerEx("ZamireniCile", 4000, false, "i", playerid);
}
else SCM(playerid, 0x00FF00, "[!] Nejsi ve speciálním yosemitu [!]");
}
else GameTextForPlayer(playerid, "Nabijim", 1000, 1);
}
else if(!IsPlayerInRangeOfPoint(Sestreleny, 200, X, Y, Z)) return SCM(playerid, 0x00FF00, "[!] Hráč na kterého se chystáš vystřelit musí být od tebe míň jak 200 metrů [!]");
return 1;
}
return 0;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(vehicleid == Yosemite)
{
VY[playerid] = 1;
SCM(playerid, 0x00FF00, "Nasednul si do vojenského Yosemitu, pro vystřelení z minometu zadej /sestrelit id");
}
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
if(vehicleid == Yosemite)
{
VY[playerid] = 0;
}
return 1;
}
Minomet SA-MP.rar