Checkpoint wird nicht gesetzt

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, ich habe dies bei OnPlayerEnterCheckpoint nur nach dem erreichen des ersten Checkpoints wird der nächste nicht gesetzt...
    Ich komme leider nicht drauf warum das so ist, wie man sieht habe ich schon TEST ausgeben lassen. Es kommt zwar aber der Checkpoint nicht.

    new trinkgeld = 800; // Geld / Checkpoint


    if(MullabfuhrCP[playerid] == 1 && IsPlayerInRangeOfPoint(playerid,10.0,1355.6742,-1749.4160,13.3807))
    {
    GivePlayerMoney(playerid, trinkgeld);
    format(string, sizeof(string), "** Du hast den Müll aufgeladen und %d€ erhalten, fahr zum Nächsten Checkpoint.",trinkgeld);
    SendClientMessage(playerid, COLOR_GREEN, string);
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid, 1531.7, -1668, 13.3, 5.0);
    MullabfuhrCP[playerid] = 2;
    //SendClientMessage(playerid, COLOR_GREEN, "TEST");
    }
    else if(MullabfuhrCP[playerid] == 2 && IsPlayerInRangeOfPoint(playerid,10.0,1539.8971,-1628.5874,13.3828))
    {
    GivePlayerMoney(playerid, trinkgeld);
    format(string, sizeof(string), "** Du hast den Müll aufgeladen und %d€ erhalten, fahr zum Nächsten Checkpoint.",trinkgeld);
    SendClientMessage(playerid, COLOR_GREEN, string);
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid, 1334.5597,-1092.3732,24.9917, 5.0);
    MullabfuhrCP[playerid] = 3;
    }
    else if(MullabfuhrCP[playerid] == 3 && IsPlayerInRangeOfPoint(playerid,10.0,1
    .....

  • Guck mal:



    ´ DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid, 1531.7, -1668, 13.3, 5.0);


    D.h ja, dass der Checkpoint gesetzt wird und wieder gelöscht, also würd ich es nicht so machen.

  • Hatte ich schon raus aber probier ich gerne nochmal =)


    EDIT:
    Ok nun habe ich es so aber es geht auch nicht der CP will einfach nicht auftauchen... und ich habe keine Ahnung warum =(



    format(string, sizeof(string), "** Du hast den Müll aufgeladen und %d€ erhalten, fahr zum Nächsten Checkpoint.",trinkgeld);
    SendClientMessage(playerid, COLOR_GREEN, string);
    //DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid, 1531.7, -1668, 13.3, 5.0);
    MullabfuhrCP[playerid] = 2;

  • Guck mal:



    ´ DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid, 1531.7, -1668, 13.3, 5.0);


    D.h ja, dass der Checkpoint gesetzt wird und wieder gelöscht, also würd ich es nicht so machen.


    Das heißt das eventuell ein berreits vorhandender Checkpoint zuerst ausgbelendet wird, bevor der neue angezeigt wird..
    Hmm.. ich sehe da jetzt keinen Fehler.


    Erscheint der Checkpoint überhaupt nicht oder was?

  • Ich hätte noch eine weitere Vermutung.
    Du erhöhst den Wert (den für die CPs).
    Es wird direkt die nächste Klammer ausgelesen, folglich läuft das so weiter, bis der letzte Checkpoint erreicht ist und dann ausgeblendet wird.



    Hinweis: Keinen Kontakt über TeamViewer oder Skype !
    Grüßt den Fehlerklärbär von mir.
    Coming soon: Pawn-Café ( Concept-Sharing | Scripting-First-Aid )


  • if(MullabfuhrCP[playerid] == 1 && IsPlayerInRangeOfPoint(playerid,10.0,1355.6742,-1749.4160,13.3807))
    {
    GivePlayerMoney(playerid, trinkgeld);
    format(string, sizeof(string), "** Du hast den Müll aufgeladen und %d€ erhalten, fahr zum Nächsten Checkpoint.",trinkgeld);
    SendClientMessage(playerid, COLOR_GREEN, string);
    SetPlayerCheckpoint(playerid, 1531.7, -1668, 13.3, 5.0);
    MullabfuhrCP[playerid] = 2;
    return 1;//Beenden der Aktion
    }


    Viell. ein Ansatz?
    Diese "else if" Sache heißt ja "sonst wenn", sprich wenn der ParameterWert(e) nicht passen, aber andere Kriterien erfüllen, tu bla...
    Jetzt wird das Script von oben nach unten vom Server durchglesen..... (bildhaft)
    Du erhöhst den Wert und es passt auf die nächste Abfrage ;)
    Du erhöhst den Wert wieder und es passt auch auf die darauffolgende Abfrage.
    Und so weiter.......
    Beim letzten CP, oder danach blendet er dann aus und der Drops ist gelutscht.



    Hinweis: Keinen Kontakt über TeamViewer oder Skype !
    Grüßt den Fehlerklärbär von mir.
    Coming soon: Pawn-Café ( Concept-Sharing | Scripting-First-Aid )

  • Omg danke ich verstehe leider noch immer nicht was ein return bewirkt und wann man es setzt, das ist wahrscheindlich noch mein größtest Problem.


    EDIT:
    Leider zu früh gefreut der 2te wird zwar gesetzt also mit dem return 1; aber der nächste dann nicht. Ich habe es jetzt so:

    if(MullabfuhrCP[playerid] == 1 && IsPlayerInRangeOfPoint(playerid,10.0,1355.6742,-1749.4160,13.3807))
    {
    GivePlayerMoney(playerid, trinkgeld);
    format(string, sizeof(string), "** Du hast den Müll aufgeladen und %d€ erhalten, fahr zum Nächsten Checkpoint.",trinkgeld);
    SendClientMessage(playerid, COLOR_GREEN, string);
    //DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid, 1531.7, -1668, 13.3, 5.0);
    MullabfuhrCP[playerid] = 2;
    //SendClientMessage(playerid, COLOR_GREEN, "TEST");
    return 1;
    }
    else if(MullabfuhrCP[playerid] == 2 && IsPlayerInRangeOfPoint(playerid,10.0,1539.8971,-1628.5874,13.3828))
    {
    GivePlayerMoney(playerid, trinkgeld);
    format(string, sizeof(string), "** Du hast den Müll aufgeladen und %d€ erhalten, fahr zum Nächsten Checkpoint.",trinkgeld);
    SendClientMessage(playerid, COLOR_GREEN, string);
    //DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid, 1334.5597,-1092.3732,24.9917, 5.0);
    MullabfuhrCP[playerid] = 3;
    return 1;
    }
    else if(MullabfuhrCP[playerid] == 3 && IsPlayerInRangeOfPoint(playerid,10.0,1334.5597,-1092.3732,24.9917))
    {