11.01.2012, 16:40
(
Последний раз редактировалось cruising; 11.01.2012 в 23:49.
)
Hello!
Firs of all, ALL credits to Backwardsman97 who made this!
I have no knowledge about vehicle angels so i dont know how to make this.
This is a include that make you able to shoot rockets with vehicles, but the rockets only fly straight and not in the same angle as the vehicle (like if your in a plane), how to make that possible in this include?
CODE:
Firs of all, ALL credits to Backwardsman97 who made this!
I have no knowledge about vehicle angels so i dont know how to make this.
This is a include that make you able to shoot rockets with vehicles, but the rockets only fly straight and not in the same angle as the vehicle (like if your in a plane), how to make that possible in this include?
CODE:
pawn Код:
//Backwardsman97
#include <a_samp>
/*------------------------------------
native AddVehicleMissiles(vehicleid,Float:offsetx,Float:offsetz)
native RemoveVehicleMissiles(vehicleid)
native IsVehicleHot(vehicleid)
-------------------------------------*/
#define MISSILE_DETONATE_TIME 500 //milliseconds
#define MISSILE_EXPLODE_TYPE 10
#define MISSILE_EXPLODE_RADIUS 10.0
#define MISSILE_SPEED 200.0
#define MISSILE_FIRE_KEY 1
new VehicleFire[MAX_VEHICLES];
new VehicleBomb[MAX_VEHICLES][2];
new VehicleSmok[MAX_VEHICLES][2];
new Float:VehicleOffsetX[MAX_VEHICLES];
new Float:VehicleOffsetZ[MAX_VEHICLES];
forward VM_OnPlayerKeyStateChange(playerid,newkeys);
forward VM_Explode(vehicleid,mode);
forward VM_OnVehicleFire(vehicleid,slot);
stock AddVehicleMissiles(vehicleid,Float:offsetx,Float:offsetz)
{
if(!VehicleFire[vehicleid])
{
new Float:x,Float:u;
GetVehiclePos(vehicleid,x,u,u);
if(x != 0)
{
if(!IsValidObject(VehicleBomb[vehicleid][1]))
{
VehicleBomb[vehicleid][0] = CreateObject(3790,0.0,0.0,0.0,0,0,0,300.0);
VehicleBomb[vehicleid][1] = CreateObject(3790,0.0,0.0,0.0,0,0,0,300.0);
AttachObjectToVehicle(VehicleBomb[vehicleid][0],vehicleid,offsetx,0,offsetz,0,0,270);
AttachObjectToVehicle(VehicleBomb[vehicleid][1],vehicleid,-offsetx,0,offsetz,0,0,270);
VehicleOffsetX[vehicleid] = offsetx;
VehicleOffsetZ[vehicleid] = offsetz;
return 1;
}
}
}
return 0;
}
stock RemoveVehicleMissiles(vehicleid)
{
if(!VehicleFire[vehicleid])
{
if(IsValidObject(VehicleBomb[vehicleid][1]))
{
if(VehicleBomb[vehicleid][0])
{
DestroyObject(VehicleBomb[vehicleid][0]);
DestroyObject(VehicleBomb[vehicleid][1]);
return 1;
}
return DestroyObject(VehicleBomb[vehicleid][1]),1;
}
}
return 0;
}
stock IsVehicleHot(vehicleid)
{
if(IsValidObject(VehicleBomb[vehicleid][1]))
return 1;
return 0;
}
public VM_OnPlayerKeyStateChange(playerid,newkeys)
{
if((newkeys & MISSILE_FIRE_KEY) == (MISSILE_FIRE_KEY))
{
new id = GetPlayerVehicleID(playerid);
if(!VehicleFire[id])
{
if(id)
{
if(IsValidObject(VehicleBomb[id][1]))
{
new
Float:x,
Float:y,
Float:z,
Float:a;
VehicleFire[id] = 1;
if(IsValidObject(VehicleBomb[id][0]))
{
DestroyObject(VehicleBomb[id][0]);
GetVehiclePos(id,x,y,z);
GetVehicleZAngle(id,a);
a += 270;
z += VehicleOffsetZ[id];
x += (VehicleOffsetX[id] * floatsin(-a, degrees));
y += (VehicleOffsetX[id] * floatcos(-a, degrees));
VehicleBomb[id][0] = CreateObject(3790,x,y,z,0,0,a,300.0);
VehicleSmok[id][0] = CreateObject(18731,x,y,z-1.3,0,0,0,300.0);
a += 90;
x += (200 * floatsin(-a, degrees));
y += (200 * floatcos(-a, degrees));
MoveObject(VehicleBomb[id][0],x,y,z,MISSILE_SPEED);
MoveObject(VehicleSmok[id][0],x,y,z-1.3,MISSILE_SPEED);
SetTimerEx("VM_Explode",MISSILE_DETONATE_TIME,0,"dd",id,0);
VM_OnVehicleFire(id,0);
return 1;
}
DestroyObject(VehicleBomb[id][1]);
GetVehiclePos(id,x,y,z);
GetVehicleZAngle(id,a);
a += 90;
z += VehicleOffsetZ[id];
x += (VehicleOffsetX[id] * floatsin(-a, degrees));
y += (VehicleOffsetX[id] * floatcos(-a, degrees));
VehicleBomb[id][1] = CreateObject(3790,x,y,z,0,0,a+180,300.0);
VehicleSmok[id][1] = CreateObject(18731,x,y,z-1.3,0,0,0,300.0);
a += 270;
x += (200 * floatsin(-a, degrees));
y += (200 * floatcos(-a, degrees));
MoveObject(VehicleBomb[id][1],x,y,z,MISSILE_SPEED);
MoveObject(VehicleSmok[id][1],x,y,z-1.3,MISSILE_SPEED);
SetTimerEx("VM_Explode",MISSILE_DETONATE_TIME,0,"dd",id,1);
VM_OnVehicleFire(id,1);
return 1;
}
}
return 1;
}
}
return 1;
}
public VM_Explode(vehicleid,mode)
{
if(IsValidObject(VehicleBomb[vehicleid][mode]))
{
new
Float:x,
Float:y,
Float:z;
GetObjectPos(VehicleBomb[vehicleid][mode],x,y,z);
CreateExplosion(x,y,z,MISSILE_EXPLODE_TYPE,MISSILE_EXPLODE_RADIUS);
DestroyObject(VehicleBomb[vehicleid][mode]);
DestroyObject(VehicleSmok[vehicleid][mode]);
VehicleFire[vehicleid] = 0;
return 1;
}
return 1;
}