Problem mit Race Checkpoints

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
  • Ok, debugge es bitte so nochmal:
    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    printf("Prüfung: %d", Prufung[playerid]);
    if(Prufung[playerid] == 1)
    {
    new cID = GetPVarInt(playerid, "fCP");
    new Float:range;
    if(cID == sizeof(fsCP)-1) range = 20.0;
    else range = 10.0;
    printf("cID: %d /Range: %d", cID, IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]));
    if(IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
    {
    cID++;
    if(cID >= sizeof(fsCP))
    {
    printf("Ende");
    SetPVarInt(playerid, "fCP", 0);
    new string[128];
    format(string,128,"{C8C8C8}Du hast den Flugschein erfolgreich {41FF00}bestanden.");
    DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
    SetPlayerPos(playerid,415.1635,2535.5076,19.1484);
    SetPlayerVirtualWorld(playerid,0);
    Prufung[playerid] = 0;
    Flugschein[playerid] = 1;
    }
    else
    {
    printf("Nächster: %d", cID);
    SetPVarInt(playerid, "fCP", cID);
    if(cID < sizeof(fsCP)-1) SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID+1][fx], fsCP[cID+1][fy],fsCP[cID+1][fz], 10);
    else SetPlayerRaceCheckpoint(playerid, 4, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
    printf("Angezeigt: %d", cID);
    }
    }
    return 1;
    }
    DisablePlayerRaceCheckpoint(playerid);
    return 1;
    }


    Was kommt dann?

  • Dann musst du noch
    DisablePlayerRaceCheckpoint(playerid);
    unter das Flugschein[playerid] = 1; setzen.


    Der Flugschein müste aber 1 sein, da sollte alles passen. Wenn du in der Spieler-Datei oder Datenbank nachschaust, dann lass den Spieler vorher speichern.

  • Mh der speichert mir das nicht ab.
    Habe das nun mit PVars gemacht.


    SavePlayer(playerid)
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new Spielerdatei[128];
    format(Spielerdatei,128,"/Spieler/%s.ini",SpielerName(playerid));
    dini_IntSet(Spielerdatei,"Flugschein",GetPVarInt(playerid,"Flugschein"));
    }
    return 1;
    }

  • Ich bin jetzt gerade sehr verwirrt, ich blicke dort einfach garnicht mehr durch.
    Da ich jetzt möchte wenn er das erste mal mit dem Flugzeug die Route geschafft hat soll er das gleiche nochmal machen
    nur mit ein Maverick.
    Wenn er die Route mit dem Maverick geschafft hat soll das beendet werden.
    Jeffry:


    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    if(GetPVarInt(playerid,"Prufung") == 1)
    {
    new cID = GetPVarInt(playerid, "fCP");
    new Float:range;
    if(cID == sizeof(fsCP)-1) range = 20.0;
    else range = 10.0;
    if(IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
    {
    cID++;
    if(cID >= sizeof(fsCP))
    {
    new string[150];
    DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
    new vID = CreateVehicle(487,419.8472,2503.8560,17.8609,89.4706,1,1,-1);
    SetPVarInt(playerid,"Flugzeug",vID);
    SetPVarInt(playerid,"fCP",0); //Setzen Checkpoint 0 (es wird ab 0 angefangen zu zählen)
    SetPlayerRaceCheckpoint(playerid, 3,fsCP[0][fx],fsCP[0][fy],fsCP[0][fz], fsCP[1][fx],fsCP[1][fy],fsCP[1][fz], 10); //Hier wird der Checkpoint erstellt & der 2 Checkpoint auch
    TextDrawShowForPlayer(playerid, usebox3);
    TextDrawShowForPlayer(playerid, arz);
    TextDrawShowForPlayer(playerid, info1);
    format(string,150,"Fliege mit dem Maverick~n~erneut den Rundflug.");
    TextDrawSetString(info1,string);
    SetVehicleVirtualWorld(GetPVarInt(playerid,"Flugzeug"),GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playerid,vID,0);
    SetPVarInt(playerid,"Stufe",1);
    }
    SetPVarInt(playerid, "fCP", cID);
    if(cID < sizeof(fsCP)-1) SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID+1][fx], fsCP[cID+1][fy],fsCP[cID+1][fz], 10);
    else SetPlayerRaceCheckpoint(playerid, 4, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
    }
    return 1;
    }
    if(GetPVarInt(playerid,"Prufung") == 1)
    {
    if(GetPVarInt(playerid,"Stufe") == 1)
    {
    new cID = GetPVarInt(playerid, "fCP");
    new Float:range;
    if(cID == sizeof(fsCP)-1) range = 20.0;
    else range = 10.0;
    if(IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
    {
    cID++;
    if(cID >= sizeof(fsCP))
    {
    SetPVarInt(playerid, "fCP", 0);
    new string[128];
    format(string,128,"{C8C8C8}Du hast den Flugschein erfolgreich {41FF00}bestanden.");
    SCM(playerid,COLOR_GRAU,string);
    DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
    SetPlayerPos(playerid,415.1635,2535.5076,19.1484);
    SetPlayerVirtualWorld(playerid,0);
    SetPVarInt(playerid,"Prufung",0);
    SetPVarInt(playerid,"Flugschein",1);
    DisablePlayerRaceCheckpoint(playerid);
    SavePlayer(playerid);
    SetPVarInt(playerid,"Stufe",0);
    }
    SetPVarInt(playerid, "fCP", cID);
    if(cID < sizeof(fsCP)-1) SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID+1][fx], fsCP[cID+1][fy],fsCP[cID+1][fz], 10);
    else SetPlayerRaceCheckpoint(playerid, 4, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
    }
    return 1;
    }
    return 1;
    }
    DisablePlayerRaceCheckpoint(playerid);
    return 1;
    }

  • Pascal.: Du hast die Überprüfung der Stufe vergessen.


    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    if(GetPVarInt(playerid,"Prufung") == 1)
    {
    if(GetPVarInt(playerid,"Stufe") != 1)
    {
    new cID = GetPVarInt(playerid, "fCP");
    new Float:range;
    if(cID == sizeof(fsCP)-1) range = 20.0;
    else range = 10.0;
    if(IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
    {
    cID++;
    if(cID >= sizeof(fsCP))
    {
    new string[150];
    DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
    new vID = CreateVehicle(487,419.8472,2503.8560,17.8609,89.4706,1,1,-1);
    SetPVarInt(playerid,"Flugzeug",vID);
    SetPVarInt(playerid,"fCP",0); //Setzen Checkpoint 0 (es wird ab 0 angefangen zu zählen)
    SetPlayerRaceCheckpoint(playerid, 3,fsCP[0][fx],fsCP[0][fy],fsCP[0][fz], fsCP[1][fx],fsCP[1][fy],fsCP[1][fz], 10); //Hier wird der Checkpoint erstellt & der 2 Checkpoint auch
    TextDrawShowForPlayer(playerid, usebox3);
    TextDrawShowForPlayer(playerid, arz);
    TextDrawShowForPlayer(playerid, info1);
    format(string,150,"Fliege mit dem Maverick~n~erneut den Rundflug.");
    TextDrawSetString(info1,string);
    SetVehicleVirtualWorld(GetPVarInt(playerid,"Flugzeug"),GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playerid,vID,0);
    SetPVarInt(playerid,"Stufe",1);
    }
    SetPVarInt(playerid, "fCP", cID);
    if(cID < sizeof(fsCP)-1) SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID+1][fx], fsCP[cID+1][fy],fsCP[cID+1][fz], 10);
    else SetPlayerRaceCheckpoint(playerid, 4, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
    }
    return 1;
    }
    }
    if(GetPVarInt(playerid,"Prufung") == 1)
    {
    if(GetPVarInt(playerid,"Stufe") == 1)
    {
    new cID = GetPVarInt(playerid, "fCP");
    new Float:range;
    if(cID == sizeof(fsCP)-1) range = 20.0;
    else range = 10.0;
    if(IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
    {
    cID++;
    if(cID >= sizeof(fsCP))
    {
    SetPVarInt(playerid, "fCP", 0);
    new string[128];
    format(string,128,"{C8C8C8}Du hast den Flugschein erfolgreich {41FF00}bestanden.");
    SCM(playerid,COLOR_GRAU,string);
    DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
    SetPlayerPos(playerid,415.1635,2535.5076,19.1484);
    SetPlayerVirtualWorld(playerid,0);
    SetPVarInt(playerid,"Prufung",0);
    SetPVarInt(playerid,"Flugschein",1);
    DisablePlayerRaceCheckpoint(playerid);
    SavePlayer(playerid);
    SetPVarInt(playerid,"Stufe",0);
    }
    SetPVarInt(playerid, "fCP", cID);
    if(cID < sizeof(fsCP)-1) SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID+1][fx], fsCP[cID+1][fy],fsCP[cID+1][fz], 10);
    else SetPlayerRaceCheckpoint(playerid, 4, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
    }
    return 1;
    }
    return 1;
    }
    DisablePlayerRaceCheckpoint(playerid);
    return 1;
    }