Can't Destroy vehicle Attached Object
#1

I was writing a car tracking missile script and the missiles aren't destroyed after being fired.
pawn Код:
if(PRESSED(KEY_FIRE) && vehhasrocket[vehid] == 1)
    {
        vehhasrocket[vehid] = 0;
        new Float:x,Float:y,Float:z;
        RocketPos(vehid,x,y,z);
        DestroyObject(infmgun[vehid]);
        infmgunextra[vehid] = CreateObject(3790,x+2,y,z,0,0,180,300);
        ClosestVehicle[vehid] = GetClosestVehicle(playerid,150);
        UpdateMissile(infmgunextra[vehid],ClosestVehicle[vehid]);
        SetTimerEx("missile",250,1,"i",vehid);
    }
Reply
#2

Anyone ?
Reply
#3

Which object is the missile object
and what does the "missile" timer do? Does it detroy the missile?
Reply
#4

the timer
pawn Код:
forward missile(vehid);
public missile(vehid)
{
    new Float:ox,Float:oy,Float:oz;
    RocketPosExtra(vehid,ox,oy,oz);
    if(GetVehicleDistanceFromPoint(ClosestVehicle[vehid],ox,oy,oz) > 5)
    {
    UpdateMissile(infmgunextra[vehid],ClosestVehicle[vehid]);
    }else{
    DestroyObject(infmgunextra[vehid]);
    CreateExplosion(ox,oy,oz,7,10);
    }
    return 1;
}
Reply
#5

Does the explosion work?
Reply
#6

imma post the whole script
pawn Код:
new infmgun[MAX_VEHICLES]
,infmgunextra[MAX_VEHICLES]
,ClosestVehicle[MAX_VEHICLES];

public OnVehicleSpawn(vehicleid)
    {
    new model = GetVehicleModel( vehicleid );
    switch(model)
    {
        case  411:
        {
            if( vehhasrocket[ vehicleid ] == 0 )
                {
                vehhasrocket[ vehicleid ] = 1;
                infmgun[vehicleid] = CreateDynamicObject( 3790, 0, 0, 0, 0, 0, 0 );
                AttachDynamicObjectToVehicle( infmgun[vehicleid], vehicleid, 02, 0, 0, 0.000000, 0.000000, 90); //Object Model: 2985 |
                minigunnum ++;
            }
           
        }
    }
    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(PRESSED(KEY_FIRE) && vehhasrocket[vehid] == 1)
        {
        vehhasrocket[vehid] = 0;
        new Float:x,Float:y,Float:z;
        RocketPos(vehid,x,y,z);
        DestroyObject(infmgun[vehid]);
        infmgunextra[vehid] = CreateObject(3790,x+2,y,z,0,0,180,300);
        ClosestVehicle[vehid] = GetClosestVehicle(playerid,150);
        UpdateMissile(infmgunextra[vehid],ClosestVehicle[vehid]);
        SetTimerEx("missile",250,1,"i",vehid);
    }
    return 1;
}
stock RocketPos(vehicleid,Float:x,Float:y,Float:z)
    {
    new mod = GetVehicleModel(vehicleid);
    switch(mod)
    {
        case(411):
        {
            GetObjectPos(infmgun[vehicleid],x,y,z);
        }
    }
    return 1;
}
stock RocketPosExtra(vehicleid,Float:x,Float:y,Float:z)
    {
    new mod = GetVehicleModel(vehicleid);
    switch(mod)
    {
        case(411):
        {
            GetObjectPos(infmgunextra[vehicleid],x,y,z);
        }
    }
    return 1;
}
forward missile(vehid);
public missile(vehid)
    {
    new Float:ox,Float:oy,Float:oz;
    RocketPosExtra(vehid,ox,oy,oz);
    if(GetVehicleDistanceFromPoint(ClosestVehicle[vehid],ox,oy,oz) > 5)
        {
        UpdateMissile(infmgunextra[vehid],ClosestVehicle[vehid]);
        }else{
        DestroyObject(infmgunextra[vehid]);
        CreateExplosion(ox,oy,oz,7,10);
    }
    return 1;
}
forward VehicleHasDriver(vehicleid);
public VehicleHasDriver(vehicleid)
    {
    for(new i=0;i<=MAX_PLAYERS;i++)
        {
        if(IsPlayerInAnyVehicle(i))
            {
            if(GetPlayerVehicleID(i)==vehicleid)
                {
                if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
                    {
                    return 1;
                }
            }
        }
    }
    return 0;
}
stock GetClosestVehicle(playerid, Float:range)
    {
    new     Float:p_X;
    new     Float:p_Y;
    new     Float:p_Z;
   
    new     Float:Distance;
    new     Float:PretendentDistance = range +1;
    new     Pretendent;
   
    GetPlayerPos(playerid, p_X, p_Y, p_Z);
   
    for(new vehicleid=1; vehicleid < MAX_VEHICLES; vehicleid++)
        {
        if(VehicleHasDriver(vehicleid))
            {
            if(vehicleid != GetPlayerVehicleID(playerid))
                {
                Distance = GetVehicleDistanceFromPoint(vehicleid, p_X, p_Y, p_Z);
               
                if(Distance <= range && Distance <= PretendentDistance)
                    {
                    Pretendent = vehicleid;
                    PretendentDistance = Distance;
                }
            }
        }
    }
   
    return Pretendent;
}
stock Float:GetAngleFromPosToPos(Float:X, Float:Y, Float:PointX, Float:PointY)
    {
    new Float:Angle;
    if(X > PointX && Y > PointY)
        Angle = floatabs(atan2(floatsub(PointX, X), floatsub(PointY, Y)));
    if(X > PointX && Y <= PointY)
        Angle = floatadd(floatabs(atan2(floatsub(Y, PointY), floatsub(PointX, X))), 270.0);
    if(X <= PointX && Y > PointY)
        Angle = floatadd(floatabs(atan2(floatsub(PointY, Y), floatsub(X, PointX))), 90.0);
    if(X <= PointX && Y <= PointY)
        Angle = floatadd(floatabs(atan2(floatsub(X, PointX), floatsub(Y, PointY))), 180.0);
   
    return Angle >= 360.0 ? floatsub(Angle, 360.0) : Angle;
}


stock UpdateMissile(objectid, targetvehicle)
    {
    new
    Float: fFromX,
    Float: fFromY,
    Float: fFromZ,
    Float: fToX,
    Float: fToY,
    Float: fToZ
    ;
   
   
    GetObjectPos(objectid, fFromX, fFromY, fFromZ);
    GetVehiclePos(targetvehicle, fToX, fToY, fToZ);
   
   
    new Float: fTargetAngle = GetAngleFromPosToPos(fFromX, fFromY, fToX, fToY);
   
   
    SetObjectRot(objectid, 0.0, 0, 180+fTargetAngle);
   
   
    MoveObject(objectid, fToX, fToY, fToZ, 150.0);
}
Reply
#7

no sometimes no
Reply
#8

anyone ? please some one help me
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)