Problem mit Checkpoints abfahren

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 wollte bei meinem jobsystem machen das man checkpoints abfahren muss, aber es geht nicht, es geht von ersten checkpoint gleich zum letzten, was mache ich falsch?


    if(GetPVarInt(playerid,"str") == 1)
    {
    SetPlayerCheckpoint(playerid, 1691.3373,-1637.9550,13.3828, 3.0);
    SetPVarInt(playerid,"str",2);
    }
    if(GetPVarInt(playerid,"str") == 2)
    {
    SetPlayerCheckpoint(playerid, 1661.6512,-1524.3806,13.3828, 3.0);
    SetPVarInt(playerid,"str",3);
    }
    if(GetPVarInt(playerid,"str") == 3)
    {
    SetPlayerCheckpoint(playerid, 1563.8516,-1438.4923,13.3828, 3.0);
    SetPVarInt(playerid,"str",4);
    }
    if(GetPVarInt(playerid,"str") == 4)
    {
    SetPlayerCheckpoint(playerid, 1371.4841,-1394.2799,13.4201, 3.0);
    SetPVarInt(playerid,"str",5);
    }
    if(GetPVarInt(playerid,"str") == 5)
    {
    SetPlayerCheckpoint(playerid, 1180.6565,-1396.7629,13.2467, 3.0);
    SetPVarInt(playerid,"str",6);
    }
    if(GetPVarInt(playerid,"str") == 6)
    {
    SetPlayerCheckpoint(playerid, 1058.6385,-1442.2699,13.3599, 3.0);
    SetPVarInt(playerid,"str",7);
    }
    if(GetPVarInt(playerid,"str") == 7)
    {
    SetPlayerCheckpoint(playerid, 1035.3191,-1741.6403,13.3812, 3.0);
    SetPVarInt(playerid,"str",8);
    }
    if(GetPVarInt(playerid,"str") == 8)
    {
    SetPlayerCheckpoint(playerid, 1108.0007,-1854.8330,13.3828, 3.0);
    SetPVarInt(playerid,"str",9);
    }
    if(GetPVarInt(playerid,"str") == 9)
    {
    SetPlayerCheckpoint(playerid, 1245.9342,-1854.9565,13.3828, 3.0);
    SetPVarInt(playerid,"str",10);
    }
    if(GetPVarInt(playerid,"str") == 10)
    {
    SetPlayerCheckpoint(playerid, 1429.3011,-1875.5471,13.3828, 3.0);
    SetPVarInt(playerid,"str",1);
    }
    if(GetPVarInt(playerid,"str") == 11)
    {
    SetPlayerCheckpoint(playerid, 1635.6691,-1888.2684,13.5549, 3.0);
    }

  • if(GetPVarInt(playerid,"str") == 1)
    {
    SetPlayerCheckpoint(playerid, 1691.3373,-1637.9550,13.3828, 3.0);
    SetPVarInt(playerid,"str",2);
    }
    if(GetPVarInt(playerid,"str") == 2)
    {
    SetPlayerCheckpoint(playerid, 1661.6512,-1524.3806,13.3828, 3.0);
    SetPVarInt(playerid,"str",3);
    }
    if(GetPVarInt(playerid,"str") == 3)
    {
    SetPlayerCheckpoint(playerid, 1563.8516,-1438.4923,13.3828, 3.0);
    SetPVarInt(playerid,"str",4);
    }
    if(GetPVarInt(playerid,"str") == 4)
    {
    SetPlayerCheckpoint(playerid, 1371.4841,-1394.2799,13.4201, 3.0);
    SetPVarInt(playerid,"str",5);
    }
    if(GetPVarInt(playerid,"str") == 5)
    {
    SetPlayerCheckpoint(playerid, 1180.6565,-1396.7629,13.2467, 3.0);
    SetPVarInt(playerid,"str",6);
    }
    if(GetPVarInt(playerid,"str") == 6)
    {
    SetPlayerCheckpoint(playerid, 1058.6385,-1442.2699,13.3599, 3.0);
    SetPVarInt(playerid,"str",7);
    }
    if(GetPVarInt(playerid,"str") == 7)
    {
    SetPlayerCheckpoint(playerid, 1035.3191,-1741.6403,13.3812, 3.0);
    SetPVarInt(playerid,"str",8);
    }
    if(GetPVarInt(playerid,"str") == 8)
    {
    SetPlayerCheckpoint(playerid, 1108.0007,-1854.8330,13.3828, 3.0);
    SetPVarInt(playerid,"str",9);
    }
    if(GetPVarInt(playerid,"str") == 9)
    {
    SetPlayerCheckpoint(playerid, 1245.9342,-1854.9565,13.3828, 3.0);
    SetPVarInt(playerid,"str",10);
    }
    if(GetPVarInt(playerid,"str") == 10)
    {
    SetPlayerCheckpoint(playerid, 1429.3011,-1875.5471,13.3828, 3.0);
    SetPVarInt(playerid,"str",11);
    }
    if(GetPVarInt(playerid,"str") == 11)
    {
    SetPlayerCheckpoint(playerid, 1635.6691,-1888.2684,13.5549, 3.0);
    }

  • Setze ab dem 2ten Checkpoint einmal eine else vor dem if.


    Also:


    if(GetPVarInt(playerid,"str") == 1)
    {
    SetPlayerCheckpoint(playerid, 1691.3373,-1637.9550,13.3828, 3.0);
    SetPVarInt(playerid,"str",2);
    }
    else if(GetPVarInt(playerid,"str") == 2)
    //usw

  • Nur nebenbei: Es gibt da eine sinnvollere Methode, das mit den Checkpoints zu realisieren, brauchst dafür auch nur ca. 5 Zeilen ;)


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • PullDown
    Leg einen Enumerator an mit den entsprechenden Daten (X,Y,Z,Radius)
    und dann einen 2 Dimensionalen Array (in der 2.Dimension den Enumerator einbezogen) und "füge" dort die Checkpoint Koordinaten in der richtigen Reihenfolge ein. Danach legst du eine Variable an, die den aktuellen "Fahrstatus" beschreibt und ob er gerade aktiv fährt.
    Beim "Starten" setzt du das "Fahrboolean" auf true, den Fahrstatus auf 0 und setzt den Checkpoint auf den allerersten (das ist dann Element 0).
    Dann bei OnPlayerEnterCheckpoint hidest du den aktuellen Checkpoint, erhöhst die Fahrstatusvariable um eins und legst eine Hilfsvariable, die den aktuellen Wert von der Fahrstatusvariable bekommt. Dann fragst du ab, ob die Hilfsvariable != die Größe des "Checkpointarray" besitzt (Stichwort: sizeof) und setzt den Checkpoint jetzt auf den Checkpoint, dessen "Element" du mit der Hilfsvariable ansprechen kannst.
    Dann das entsprechende else bedeutet dann einfach nur, dass der Spieler alle Checkpoints abgefahren hat, hier kannst du ihm z.B. dann Nachrichten senden, usw.


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • mir solltest du es nicht erklären ^^ ich weiß es.
    Ich meinte es Generell.
    Wenn ihr schon sagt das es einfacher geht und ressoursensparender , dann schreib doch auch direkt nen beispiel dabei oder erklärt es.
    Aber nicht nur schreiben : Es geht auch einfacher........


    naja, vieleicht denkst du /ihr ja beim nächsten mal daran ;)


    Mfg


    PullDown


  • find ich auch ^^ aber naja hauptsache es geht, so versteh ich das wenigstens :D