Missile Object abwerfen (nur mit Cargobob)

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Das ist soweit ich weiß nicht möglich, das Objekt würde dann einfach in der Luft hängen, WENN dann müsste man es mit MoveObjekt machen, aber mann kann (Glaub ich) nicht überprüfen ob das Objekt jetzt aufgeprallt ist oder nicht.

  • In dem Gangfight Script gab es so einen Befehl.
    Allerdings spawned das Object dort nicht unter dem Heli sondern ganz weit darüber und das ist auch immer und überall möglich. Kann man das ändern?
    Hier der Befehl:


    new Missile[MAX_PLAYERS];


    if(!strcmp(cmd, "/missile", true)) // Spawns a missile 50 Z higher than player's and drops it to the ground, toggling a huge explosion
    {
    if (AccountInfo[playerid][AdminLevel] >= 5 || IsPlayerAdmin(playerid) || gTeam[playerid] == 7 || IsATR(playerid))
    {
    if (IsValidObject(Missile[playerid])) return SendClientMessage(playerid, RED, "Es fällt bereits eine Missile vom Himmel!");
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid, X,Y,Z);
    Missile[playerid] = CreateObject(3786, X, Y, Z+50, 357.6293, 272.3375, 6.8755);
    MoveObject(Missile[playerid], X, Y, Z, 20.0);
    }
    else return SendClientMessage(playerid, RED, "Du bist kein Terrorist!");
    return 1;
    }


    ..........


    public OnObjectMoved(objectid)
    {
    for(new i; i < MAX_PLAYERS; i++) if (objectid == Missile[i])
    {
    new Float:X,Float:Y,Float:Z,Float:x,Float:y,Float:z;
    GetObjectPos(objectid, X, Y, Z);
    GetObjectPos(objectid, x, y, z);
    DestroyObject(objectid);
    CreateExplosion(X, Y, Z, 7, 5);
    //front
    X += (5.0 * floatsin(0, degrees));
    Y += (5.0 * floatcos(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X += (3.0 * floatsin(0+45, degrees));
    Y += (3.0 * floatcos(0+45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X += (3.0 * floatsin(0-45, degrees));
    Y += (3.0 * floatcos(0-45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    //right-left
    X += (5.0 * floatcos(0, degrees));
    Y += (5.0 * floatsin(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    //back
    X -= (5.0 * floatcos(0, degrees));
    Y -= (5.0 * floatsin(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X -= (5.0 * floatsin(0, degrees));
    Y -= (5.0 * floatcos(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X -= (3.0 * floatsin(0+45, degrees));
    Y -= (3.0 * floatcos(0+45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X -= (3.0 * floatsin(0-45, degrees));
    Y -= (3.0 * floatcos(0-45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    SetTimerEx("MissileExplosion", 700, 0, "fffd", x, y, z, 3);
    break;
    }
    }


    forward MissileExplosion(Float:X, Float:Y, Float:Z, times);
    public MissileExplosion(Float:X, Float:Y, Float:Z, times)
    {
    new Float:x = X;
    new Float:y = Y;
    new Float:z = Z;
    if (times == 3)
    {
    //front
    X += (10.0 * floatsin(0, degrees));
    Y += (10.0 * floatcos(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X += (6.0 * floatsin(0+45, degrees));
    Y += (6.0 * floatcos(0+45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X += (6.0 * floatsin(0-45, degrees));
    Y += (6.0 * floatcos(0-45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    //right-left
    X += (10.0 * floatcos(0, degrees));
    Y += (10.0 * floatsin(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    //back
    X -= (10.0 * floatcos(0, degrees));
    Y -= (10.0 * floatsin(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X -= (10.0 * floatsin(0, degrees));
    Y -= (10.0 * floatcos(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X -= (6.0 * floatsin(0+45, degrees));
    Y -= (6.0 * floatcos(0+45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X -= (6.0 * floatsin(0-45, degrees));
    Y -= (6.0 * floatcos(0-45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    }
    else if (times == 2)
    {
    //front
    X += (15.0 * floatsin(0, degrees));
    Y += (15.0 * floatcos(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X += (9.0 * floatsin(0+45, degrees));
    Y += (9.0 * floatcos(0+45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X += (9.0 * floatsin(0-45, degrees));
    Y += (9.0 * floatcos(0-45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    //right-left
    X += (15.0 * floatcos(0, degrees));
    Y += (15.0 * floatsin(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    //back
    X -= (15.0 * floatcos(0, degrees));
    Y -= (15.0 * floatsin(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X -= (15.0 * floatsin(0, degrees));
    Y -= (15.0 * floatcos(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X -= (9.0 * floatsin(0+45, degrees));
    Y -= (9.0 * floatcos(0+45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X -= (9.0 * floatsin(0-45, degrees));
    Y -= (9.0 * floatcos(0-45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    }
    else if (times == 1)
    {
    //front
    X += (20.0 * floatsin(0, degrees));
    Y += (20.0 * floatcos(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X += (12.0 * floatsin(0+45, degrees));
    Y += (12.0 * floatcos(0+45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X += (12.0 * floatsin(0-45, degrees));
    Y += (12.0 * floatcos(0-45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    //right-left
    X += (20.0 * floatcos(0, degrees));
    Y += (20.0 * floatsin(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    //back
    X -= (20.0 * floatcos(0, degrees));
    Y -= (20.0 * floatsin(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X -= (20.0 * floatsin(0, degrees));
    Y -= (20.0 * floatcos(0, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X -= (12.0 * floatsin(0+45, degrees));
    Y -= (12.0 * floatcos(0+45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    X -= (12.0 * floatsin(0-45, degrees));
    Y -= (12.0 * floatcos(0-45, degrees));
    CreateExplosion(X, Y, Z, 7, 5);
    }


    if (times > 0) SetTimerEx("MissileExplosion", 700, 0, "fffd", x, y, z, times-1);
    }


    forward PushPlayer(playerid, distance, zup);
    public PushPlayer(playerid, distance, zup)
    {
    new Float:X,Float:Y,Float:Z,Float:A;
    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerFacingAngle(playerid, A);
    if (zup == 1) SetPlayerPos(playerid, X, Y, Z+5);
    GetPlayerPos(playerid, X, Y, Z);
    X -= (2.0 * floatsin(-A, degrees));
    Y -= (2.0 * floatcos(-A, degrees));
    SetPlayerPos(playerid, X, Y, Z);
    if (distance > 0) SetTimerEx("PushPlayer", 100, 0, "ddd", playerid, distance-1, 0);
    }


    stock GetVehicleModelIDFromName(vehname[])
    {
    for(new i = 0; i < 211; i++)
    {
    if (strfind(VehNames[i], vehname, true) != -1) return i + 400;
    }
    return -1;
    }


    stock GetWeaponModelIDFromName(weapname[])
    {
    for(new i = 0; i < 48; i++)
    {
    if (i == 19 || i == 20 || i == 21) continue;
    if (strfind(WeapNames[i], weapname, true) != -1) return i;
    }
    return -1;
    }


    stock bigstrtok(const string[], &idx)
    {
    new length = strlen(string);
    while ((idx < length) && (string[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[128];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = string[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    return result;
    }

  • Missile[playerid] = CreateObject(3786, X, Y, Z+50, 357.6293, 272.3375, 6.8755);
    Da musste
    Z+50
    z.b so machen:
    Missile[playerid] = CreateObject(3786, X, Y, Z-5, 357.6293, 272.3375, 6.8755); 
    Denke mal das es dann doch geht...
    Habe aber keine Ahnung d.h teste es einfach ;)

  • ne geht so nicht. ganz einfach das cmd geht von einem spieler auf dem boden auf, erstellt ein objekt 50 höher und lässt es dann auf die position des Spilers herunterfahren. sobald das obejkt unten angekommen ist explodiert es.

  • 1. kenne das bombfs nicht.
    2. ich würde es mit dem MapAndreas Plugin probieren muss nur im server installiert sein. es liefert dir die höhe des bodens eines bestimmten XY Punktes. damit weisst du wohin sich das Objekt bewegen muss und explodieren muss.


    Einziges Manko Bomben würden bei keiner absicherung unter Brücken oder ähnliches Nach oben fallen.