Fahrzeugklassen

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
  • Hi leute...
    ich wollte gerne unter OnGameModeInit eine Fahrzeuggruppe machen die Arbeit heißt.


    wenn ich jetzt z.B. folgendes unter OnGameModeInit schreibe:



    Arbeit = AddStaticVehicle(515,1278,-1807.5,14.4053,180,1,1), // LKW1
    AddStaticVehicle(515,1273,-1807.5,14.4053,180,1,1); // LKW2


    und in einem Timer bei OnGameModeInit erstelle:


    SetTimerEx("labelTimer",50000,true,"i");


    und dann folgendes erstelle:


    public labelTimer()
    {
    DestroyVehicle(Arbeit);
    return 1;
    }


    Löscht er nur den 1. LKW...


    Meine Frage:


    wie kann ich es machen dass er beide löscht

    MFG.:
    manumeyer


    if (strcmp("/Hatschi", cmdtext, true) == 0)
    {
    SendClientMessage(playerid,0xAA3333,"Gesundheit!");
    return 1;
    }

  • hier meine Lösung ^ ^ vllt gehts ja


    Code
    new Arbeit[2];


    Code
    Arbeit[0]=AddStaticVehicle(515,1278,-1807.5,14.4053,180,1,1), // LKW1 
    Arbeit[1]=AddStaticVehicle(515,1273,-1807.5,14.4053,180,1,1); // LKW2
  • So alls erstes wenn du alle gleichzeitig zerstören willst musst du nicht Arbeit[2] machen dann mach bei beiden vorne Arbeit = ... rein
    und bei destory
    for (new i=0; i< MAX_VEHICLES; i++)
    {
    DestroyVehicle(Arbeit);
    return 1;
    }
    aber wenn die unterschiedlich zerstört werden sollen dann mach das was der vor poster gesagt hat und bei destory
    DestroyVehicle(Arbeit[0]);
    DestroyVehicle(Arbeit[1]);
    return 1;
    allso ich glaub du weist wo das alles rein kommt.

  • WTF warum benutzt du SetTimerEx?! Guck mal nach der Funktion SetTimer.


    Der Unterschied ist SetTimerEx ist Spieler bezogen. SetTimer dagegen ist für den ganzen Server.



    MfG: Apoolecu


    EDIT: Deine Methode ist unlogisch da du ja bei Arbeit auch nur das eine Fahrzeug angegeben hast...

  • Deine Methode ist unlogisch da du ja bei Arbeit auch nur das eine Fahrzeug angegeben hast..


    habe das mit komma versehen...
    Arbeit = ... ,
    ...,
    ...,
    ...;

    MFG.:
    manumeyer


    if (strcmp("/Hatschi", cmdtext, true) == 0)
    {
    SendClientMessage(playerid,0xAA3333,"Gesundheit!");
    return 1;
    }

  • SetTimerEx ist nicht spielerbezogen sondern kann nur Variablen mitgeben.


    Megabyte:
    Was soll denn bitte diese Schleife?
    Du gehst alle Fahrzeuge in der Schleife durch, zerstörst aber wieder nur das Fahrzeug dessen ID in der Variable "Arbeit" gespeichert wurde.



    Lösung deines Problems:
    //Ganz oben im Script
    new arbeit[2];
    forward labelTimer();


    public OnGameModeInit()
    {
    arbeit[0] = CreateVehicle(..);
    arbeit[1] = CreateVehicle(..);
    SetTimer("labelTimer",50000,true);
    }
    public labelTimer
    {
    for(new car; car<sizeof(arbeit); car++)
    {
    DestroyVehicle(arbeit[car]);
    }
    }


    Erklärung:
    Du erstellt oben ein 2-stelliges Array für die Fahrzeuge. In dem Array speicherst du beide Car-ID's ab.
    Der vorteil ist, wir haben die Arrays global erstellt und können in jedem Callback auf sie zugreifen.
    Jetzt haben wir eine schleife, die den wert der zuvor für die Schleife erstellen Variable "car" immer um 1 erhöht, bis er bei der größe des Arrays angekommen ist.
    Somit können wir die Cars ganz einfach zerstören.



    MfG Firer

  • ... geht immer noch nich...


    der löscht auch mit deiner variante nur den 1.

    MFG.:
    manumeyer


    if (strcmp("/Hatschi", cmdtext, true) == 0)
    {
    SendClientMessage(playerid,0xAA3333,"Gesundheit!");
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Dann vergiss das mit der Schleife und ändere den Timer mal so um:

    public labelTimer
    {
    DestroyVehicle(arbeit[0]);
    DestroyVehicle(arbeit[1]);
    }

    Müsste aber eigentlich mit der Schleife funktionieren..
    Naja, versuchs mal so.



    MfG Firer

  • ...habe das schon als übergangslösung ;)
    aber thy... bekommst nen hilfreich in deiner signatur :D

    MFG.:
    manumeyer


    if (strcmp("/Hatschi", cmdtext, true) == 0)
    {
    SendClientMessage(playerid,0xAA3333,"Gesundheit!");
    return 1;
    }

  • @Firefan


    ... kannst du mir verzeihen?


    deine schleife geht doch xD
    habe nur ausversehen das return 1; von Megabyte übernommen ... :S


    (Das kommt wenn man nich richtig hinschaut)


    MFG.


    manu

    MFG.:
    manumeyer


    if (strcmp("/Hatschi", cmdtext, true) == 0)
    {
    SendClientMessage(playerid,0xAA3333,"Gesundheit!");
    return 1;
    }