Nächster RaceCP wird nicht angezeigt

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.
    Kurze Frage.. bei mir wird der nächste RaceCheckpoint nicht mehr angezeigt, wenn ich den ersten passiert habe.. mit normalen Checkpoint klappt das alles.. jedoch so nicht... wüsste wer zufällig warum?
    So habe ich die koordinaten in einem array +enum

    new PilotLSSF[][NJobDaten] = {
    {491.0360,-2480.9023,208.3164},
    {-934.9673,-2460.8608,353.8739},
    {-1648.3916,-1971.1779,326.9221},
    {-1535.7734,-1203.6198,252.9583},
    {-1764.5897,-391.3161,247.9086},
    {-1417.1436,73.7660,14.8915},
    {-1249.4308,-103.9663,14.8782}
    };
    enum NJobDaten {
    Float:X,
    Float:Y,
    Float:Z
    }


    public PilotTimerLSSF(playerid)
    {
    TogglePlayerControllable(playerid, 1);
    SendClientMessage(playerid,COLOR_GELB,"Tower Los Santos: Startfreigabe erteilt. Guten Flug!");
    SetPlayerRaceCheckpoint(playerid, 3,PilotLSSF[0][X], PilotLSSF[0][Y],PilotLSSF[0][Z],PilotLSSF[1][X],PilotLSSF[1][Y],PilotLSSF[1][Z], 5.0);//Erster Checkpoint
    }


    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    for(new i = 0;i<sizeof PilotLSSF;i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5.0,PilotLSSF[i][X],PilotLSSF[i][Y],PilotLSSF[i][Z]))
    {
    new string[128];
    DisablePlayerRaceCheckpoint(playerid);
    Nebenjob[playerid][p_Checkpoint]++;
    new playercp = Nebenjob[playerid][p_Checkpoint];
    if(playercp == sizeof(PilotLSSF))
    {
    new EXP = 4 + random(5);
    new GELD = 400 + random(267);
    pInfo[playerid][PilotenExp] += EXP;
    pInfo[playerid][pSonstigeEinnahmen] +=GELD;
    format(string,sizeof(string),"Sie erhalten +%d Exp und %i$ dazu!", EXP,GELD);
    SendClientMessage(playerid,COLOR_HELLBLAU,string);
    PilotErfahrung(playerid);
    }
    else
    {
    SetPlayerRaceCheckpoint(playerid, 3, PilotLSSF[playercp][X],PilotLSSF[playercp][Y],PilotLSSF[playercp][Z],PilotLSSF[Nebenjob[playerid][p_Checkpoint]+1][X],PilotLSSF[Nebenjob[playerid][p_Checkpoint]+1][Y],PilotLSSF[Nebenjob[playerid][p_Checkpoint]+1][Z],5.0);
    }
    }
    }
    return 1;
    }

    //Edit: Hat keiner eine Idee?


    Mfg
    Sebastian


    Einmal editiert, zuletzt von Sebastian. ()

  • Da du ja geschrieben hast,dass es sich an meinem Tutorial orientiert ( PM :(
    - Du brauchst definitiv kein Schleife unter OnPlayerEnter(Race)Checkpoint ( Du weisst doch anhand von Nebenjob[playerid][p_Checkpoint] an welchem Checkpoint man ist )
    - Du brauchst keinen IsPlayerInRangeOfPoint Abfrage ( Wieso auch ? Er hat den Checkpoint betreten , wo sonst soll er sein ? )


    Anstatt
    Nebenjob[playerid][p_Checkpoint]+1
    kannst du auch
    playercp + 1 machen.

  • Ok.. danke :D jedoch brauche ich glaube ich schon die schleife + IsPlayerInRangeOfPoint oder? Weil es wird ja noch mehr "Flugrouten" geben^^
    Mfg


    Dann brauchst es trotzdem nicht. Du kannst doch einfach eine Variable benutzten für die Flugrouten,die der Spiele benutzt.
    if( Route[playerid] == 1 ) {
    }
    else if( Route[playerid] == 2 ) {
    ...
    }

    Checkpoint's kann man auch ändern bei den meisten Gamemode's ( über /navi meistens ) und daher ist es sinnvoll - denke ich - mit IsPlayerInRangeOfPoint.


    Ja klar, wie wird er dann noch gleich den Checkpoint der Flugroute betreten ?
    Wenn ein Spieler irgendwo eine Checkpoint-Route hat, sollte man alle Funktionen sperren,die einen neuen Checkpoint setzen können.