Gespawnte Vehicles entfernen?

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
  • Hey,
    ich habe so ziemlich alles versucht um das oben genannte zu erreichen, jedoch erfolglos. Ich bin nun mit meinem Latein ziemlich am Ende.
    Kann mir nun jemand ein Beispiel machen, wie man alle gespawnten Autos am besten mittels einer Variable abfragt und löschen kann?
    Wäre sehr nett!

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Macht bitte mal ein Beispiel.
    hab bei dem Spawnbefehl:
    new spawnedcar;



    spawnedcar = CreateVehicle(id,x,y,z,a,-1,-1,-1);



    //Und der Delete:
    for(new i=0; i<sizeof(spawnedcar); i++)
    {
    if(!IsVehicleEmpty(i))
    {
    DestroyVehicle(i);
    }
    }


    stock IsVehicleEmpty(vehicleid)
    {
    for(new i =0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(IsPlayerInVehicle(i,vehicleid)) return 0;
    }
    return 1;
    }


    edit: Ausgebessert

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

    Einmal editiert, zuletzt von ElDiabolo ()

  • Willst du jetzt eigentlich ALLE löschen?
    Dann mach doch einfach so:



    for(new i = 0; i <= MAX_VEHICLES; i++)
    {
    DestroyVehicle(i);
    }

    Unkompetent. Das neue dynamisch.



    ihr seit schon lustig postet erros aber nicht die zeilen wo sie sind dann können wir euch auch nicht helfen^^


    Lernt Scripten, Leute, und macht eure Augen auf!


    _______________________________________
    50 Beiträge: [x] 300 Beiträge: [x]
    100 Beiträge: [x] 500 Beiträge: [x]
    150 Beiträge: [x] 1000 Beiträge: [x]
    200 Beiträge: [x]
    2000 Beiträge: []
    250 Beiträge: [X] Boardaktivitäten: Profil


    [size=36]_______________________________________

    /Edit: Schmerzt es dir eigentlich nicht so ein Müll zu schreiben 8|

  • Hab ich doch niemals behauptet....


    Also....
    Man spawnt sich ein Vehicle mit /veh oder sonst was. Daraufhin soll dieses Vehicle eine Variable bekommen, dass ich es mit einem Befehl wieder löschen kann, wenn ich außerhalb des Vehicles bin. Soweit kein Problem. Allerdings wird ja nicht immer nur ein Vehicle gespawnt, sondern andere Admins spawnen ebenfalls welche. Nun möchte ich eben mit einem Befehl alle GESPAWNTEN Vehicles in denen niemand sitzt, entfernen. Dabei dürfen aber nicht die anderen Vehicles, die beim Gamemode gespawnt wurden, entfernt werden.

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Ich denke mal Fraktionsautos sollen nicht gelöscht werden sonder nur sowas wie die Noob-Faggios, Adminwagen...

    Wer ist der Mensch hinter der Uniform? Ist euch das bekannt?
    Es ist der selbe der noch eben in Zivil neben euch stand.
    Warum wird er gehasst und so selten respektiert?
    Warum ist er derjenige der seinen Hals für euch riskiert?
    Trägt der Bulle eine Weste, das hat er früher nie gemacht,
    die Zeiten haben sich geändert und jeder Dienst ist ein Kampf!
    Warum gibt’s das SEK und warum sind sie so brutal?
    Und wieso hat wieder einer mit seinem Leben bezahlt?

  • Dann brauchst du das hier garantiert:



    new SpawnVehicle[MAX_PLAYERS];
    // Beim erstellen:
    SpawnVehicle[playerid] = CreateVehicle( ... )
    // Beim löschen
    for(new i=0;i<MAX_PLAYERS;i++) {
    if(!IsPlayerInVehicle(i, SpawnVehicle[i])) {
    DestroyVehicle(SpawnVehicle[i]);
    }
    }

  • funzt nicht :S
    habe bei allen Befehlen, bei denen ein fahrzeug gespawnt wird, folgendes eingefügt:
    spawnedcar[playerid] = CreateVehicle//bla
    Wenn ich den Befehl nun durchführe:
    ocmd:destroyallveh(playerid,params[])
    {
    #pragma unused params
    //Adminabfrage
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerInVehicle(i, spawnedcar[i]))
    {
    DestroyVehicle(spawnedcar[i]);
    SendClientMessage(playerid, cRot, "Erfolgreich respawnt!");
    }
    }
    }
    return 1;
    }


    Wird der ganze Chat mit dem erfolgreich respawnt zugespammt, aber kein einziges auto wird gelöscht!


    edit: Wenn ich dann aus einem Veh aussteige und den Befehl erneut eingebe, wird nur das Veh gelöscht und der Chat wieder vollgespammt.

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

  • Wenn ich dich richtig verstehe:
    Weise jedem von einem Administrator gespawnten Fahrzeug einen Boolean zu, der auf "true" ist.


    new bool:Spawned[MAX_VEHICLES];
    Spawned[vehicleid] = true;


    Dann kannst du in einer Schleife abfragen, ob es gespawnt ist - wenn ja, lässt du es zerstören.


    Grüße

  • ocmd:destroyallveh(playerid,params[])
    {
    #pragma unused params
    //Adminabfrage
    {
    for(new i=0;i {
    if(!IsPlayerInVehicle(i, spawnedcar))
    {
    DestroyVehicle(spawnedcar);
    }
    }
    SendClientMessage(playerid, cRot, "Erfolgreich respawnt!");
    }
    return 1;
    }

    So solltest du nicht mehr zugespammt werden

  • Klappt nich @SpySpy.
    PS: Wir sind hier in Scriptwünsche. Da könntet ihr auchmal nen Beispiel Code posten :D


    edit: PS

    ▬|██████|▬
    This is Nudelholz.
    Copy Nudelholz in your Signatur
    to make better Kuchens
    and other Teigprodukte!

    Einmal editiert, zuletzt von ElDiabolo ()

  • ElDiabolo:
    Ganz oben ins Script:
    new ErstellteAutos[100];
    new ErstelltesAuto = 0;


    Dann bei deinem /veh Befehl, wo Du ein Fahrzeug erstellst, schreibst Du noch das hier rein:
    ErstellteAutos[ErstelltesAuto] = carid(oder wie Du dein auto auch definiert hast);
    ErstelltesAuto++;


    Dann bei deinem /destroycar Befehl, wo nur die gespawnten Fahrzeuge gelöscht werden sollen, das hier schreiben:
    if(strcmp(cmd, "/destroycars", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    for(new i = 0; i < sizeof(ErstellteAutos); i++)
    {
    if(i != 0)
    {
    DestroyVehicle(i);
    }
    }
    SendClientMessage(playerid, FARBE, " Die gespawnten Fahrzeuge erfolgreich gelöscht");
    }
    return 1;
    }


    Sollte klappen ;)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen