Fahrzeuge nach Explosion zerstören

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
  • Hallo,
    Ich habe inen Befehl indem ich beliebig viele Autos verschiedener Art spawnen kann.
    Diese sollen aber nach einer Explosion endgültig zerstört werden und nicht wieder spawnen.
    Meine Frage ist wie ich es am besten mit den Variablen mache.


    Beispiel:
    new car[12];


    Und dann:
    car[0] = AddStaticVehicle...


    Ist aber nicht sehr toll, da ich die selben Autos (car[0]) mehrmals spawnen lassen kann.
    Hat jmd. eine funktionierende Methode für mich?


    lg

  • public OnVehicleDeath(vehicleid)
    {

    for (new i; i!= DEINEANZAHLANFAHRZEUGEN;i++)
    {
    if(vehicleid==car[i]) DestroyVehicle(vehicleid);
    }


    return 1;
    }


    Ums deutlicher zu machen:


    DEINEANZAHLANFAHRZEUGEN ist der höchste Wert im car-Array, also zb car[12] oder car[25], je nachdem wie viel du dort drin hast. ;)



    EDIT: Und hör nicht auf Dudalus, der macht dir alle Karren kaputt, wenn eins kaputt geht :P

  • Bloody
    So wollte ich es auch machen.
    Mein Problem:
    Mit einem Befehl lasse ich ein Auto erstellen:
    Car = AddStaticVehicleEx(.....
    Aber ich kann dieses Auto ja mehrmals erstellen.
    Das heißt dann ist das 1. Auto nicht mehr Car sondern das 2. . Verstehst du? :D
    Irgendwie muss ich es ja anders machen mit den Variablen.


    lg

  • new MyCarArray[MAX_VEHICLES];


    OnPlayerText(playerid, text[])
    {
    if(!strcmp(text, "spawnmyvehicle"))
    {
    new Car,
    Float:Pos[4];
    GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
    GetPlayerFacingAngle(playerid, Pos[3]);
    Car = CreateVehicle(411, Pos[0], Pos[1], Pos[2], Pos[3], 0, 0, -1);
    MyCarArray[Car] = 1;
    PutPlayerInVehicle(playerid, Car, 0);
    return 1;
    }
    return 0;
    }


    OnVehicleDeath(vehicleid, killerid)
    {
    if(MyCarArray[vehicleid] == 1)
    {
    DestroyVehicle(vehicleid);
    MyCarArray[vehicleid] = 0;
    return 1;
    }
    }


    1.) Fahrzeug wird erstellt
    2.) Fahrzeug wird beim Verschrotten gelöscht

    Miete mich (nicht) :love:

  • Zu BloodyErics version, in der for-Schleife kannste anstatt die Anzahl der Fahrzeug/des Fahrzeug Arrays manuell einzutragen sizeof car benutzen als Anzahl. ;)


    Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need.
    – Tyler Durden


    Sobald Werbung im Spiel ist, bist du, die Nutzerin, der Nutzer, das Produkt.


  • Wenn du mehrere Fahrzeuge erstellen möchtest, die sich löschen - nimm lieber das:
    //über den Befehl&OnVehicleDeath im Script!
    new FAnzahl,Fahrzeuge[30],bool:FahrzeugErstellt[30];


    //im Befehl:
    if(FahrzeugErstellt[FAnzahl]==false)
    {
    Fahrzeuge[FAnzahl] = CreateVehicle(Model,Pos[0], Pos[1], Pos[2], Pos[3], 0, 0, -1);
    FahrzeugErstellt=true;
    FAnzahl++;
    }
    else
    {
    FAnzahl++;
    //SCM: Fehler o. return zum Befehl!
    }


    //falls Befehl zum zerstören vom Fahrzeug vorhanden, so zerstören:
    for (new i; i!= sizeof Var2;i++)
    {
    if(FahrzeugErstellt[vehicleid]==true)
    {
    DestroyVehicle(Fahrzeuge[i]);
    FahrzeugErstellt[Fahrzeuge[i]]=false;
    FAnzahl=0;
    }
    }


    //im public OnVehicleDeath:
    for (new i; i!= sizeof Var2;i++)
    {
    if(vehicleid==Fahrzeuge[i]&&FahrzeugErstellt[vehicleid]==true)
    {
    DestroyVehicle(vehicleid);
    FahrzeugErstellt[vehicleid]=false;
    FAnzahl--;
    }
    }


    Advertising has us chasing cars and clothes, working jobs we hate so we can buy shit we don’t need.
    – Tyler Durden


    Sobald Werbung im Spiel ist, bist du, die Nutzerin, der Nutzer, das Produkt.