Fahrschule und 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
  • Guten Abend,
    habe hier aus diesem Muell Script von Goldkiller
    eine Automatische Fahrschule gemacht, doch wenn man im Auto der Fahrschule ist und man /fahrpruefung eingibt, kommt der erste Chekpoint und dann wenn man in den ersten Checkpoint reinfährt und er weg geht, kommt nicht der nächste :(
    ich habe es immer wieder angeguckt, doch ich weiß nicht weiter.
    könnt ihr mir bitte bitte bitte weiterhelfen?


    Hier der Code:
    Pastebin


    oder:

    Spoiler anzeigen

    #include <a_samp>

    Spoiler anzeigen
    #define COLOR_LIGHTGREEN 0x86FF59FF
    #define COLOR_RED 0xFF0000FF
    #define COLOR_GREEN 0x00CA00FF

    Spoiler anzeigen
    enum e_PlayerMuellInfo {
    bool:pmi_bAktiv,
    pmi_Checkpoint
    }
    new Fahrschule[MAX_PLAYERS][e_PlayerMuellInfo];

    Spoiler anzeigen
    enum e_Pruefung {
    Float:M_fX,
    Float:M_fY,
    Float:M_fZ,
    Float:M_fRad
    }

    Spoiler anzeigen
    new
    Fahrschule_Stationen[][e_Pruefung] = {
    {-2047.0698, -78.9770, 34.8860, 6.0},
    {-2106.0088, -68.4744, 34.8882, 6.0},
    {-2251.8965, -45.1003, 34.8883, 6.0},
    {-2276.3950, 52.1817, 34.8805, 6.0},
    {-2400.5483, -67.7900, 34.8805, 6.0},
    {-2599.5723, -68.1146, 3.9970, 6.0},
    {-2807.4138, -48.1616, 6.7481, 6.0},
    {-2806.6597, 143.6969, 6.7477, 6.0},
    {-2779.0969, 156.3102, 6.7472, 6.0},
    {-2544.2495, 155.2064, 3.8983, 6.0},
    {-2239.2341, 318.2473, 34.8884, 6.0},
    {-2035.4738, 317.9279, 34.7321, 6.0},
    {-1979.4679, 340.8038, 34.3082, 6.0},
    {-1849.6448, 405.2497, 16.7322, 6.0},
    {-1765.3301, 296.4426, 7.3805, 6.0},
    {-1806.9032, 60.3476, 14.6774, 6.0},
    {-1802.3086, -182.4884, 11.9989, 6.0},
    {-1852.6919, -233.7217, 17.9430, 6.0},
    {-2002.6488, -198.1924, 35.4275, 6.0},
    {-2006.8594, -68.2464, 34.8869, 6.0},
    {-2042.4216, -67.2241, 34.8882, 6.0},
    {-2054.1309, -97.1779, 34.8862, 6.0},
    {-2088.8389, -97.3427, 34.8804, 6.0}
    };

    Spoiler anzeigen
    public OnFilterScriptInit()
    {

    Spoiler anzeigen
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerCommandText(playerid, cmdtext[]) {
    if (strcmp("/fahrpruefung", cmdtext, true, 8) == 0) {
    if(!Fahrschule[playerid][pmi_bAktiv]) {
    new
    vehicleid = GetPlayerVehicleID(playerid),
    model = GetVehicleModel(vehicleid);
    if(model == 496) {
    Fahrschule[playerid][pmi_Checkpoint]=0;
    Fahrschule[playerid][pmi_bAktiv]=false;
    SendClientMessage(playerid, COLOR_LIGHTGREEN, "Fahrprüfung gestartet, fahre nun zu den einzelnen Checkpoints!");
    GivePlayerMoney(playerid, -20000);
    SetPlayerCheckpoint(playerid,Fahrschule_Stationen[0][M_fX],Fahrschule_Stationen[0][M_fY],Fahrschule_Stationen[0][M_fZ],Fahrschule_Stationen[0][M_fRad]);
    }
    else {
    SendClientMessage(playerid, COLOR_RED, "Du bist nicht bei der Fahrschule!");
    }
    }
    else {
    SendClientMessage(playerid, COLOR_RED, "Es macht schon jemand ein Führersein. Komm später wieder!");
    }
    return 1;
    }
    return 0;
    }
    public OnPlayerEnterCheckpoint(playerid) {
    if(Fahrschule[playerid][pmi_bAktiv]) {
    Fahrschule[playerid][pmi_Checkpoint]++;
    DisablePlayerCheckpoint(playerid);
    new
    playercp = Fahrschule[playerid][pmi_Checkpoint];
    if(playercp == sizeof(Fahrschule_Stationen)) {
    Fahrschule[playerid][pmi_bAktiv]=false;
    // Extra code
    SendClientMessage(playerid, COLOR_GREEN, "Super Arbeit,du hast den Führerschein bestanden!");
    GameTextForPlayer(playerid,"Führerschein bestanden!",5*1000,5);
    SetPVarInt(playerid,"Autofahrschein",1);
    new vid = GetPlayerVehicleID(playerid);
    SetVehicleToRespawn(vid);
    }
    else {
    new
    String[128];
    PlayerPlaySound(playerid,1056,0.0,0.0,0.0);
    format(String,sizeof(String),"Weiter so,du hast es fasst geschafft ! (%d / %d)",playercp,sizeof(Fahrschule_Stationen));
    SendClientMessage(playerid,COLOR_LIGHTGREEN,String);
    SetPlayerCheckpoint(playerid,Fahrschule_Stationen[playercp][M_fX],Fahrschule_Stationen[playercp][M_fY],Fahrschule_Stationen[playercp][M_fZ],Fahrschule_Stationen[playercp][M_fRad]);
    }
    return 1;
    }
    return 1;
    }


    Bitte helft mir.


    Danke
    Scripter4.0

    Scripter im Ruhestand.

  • Hättest dir auch gleich ein weiteres Tutorial von mir anschauen können zum Thema debuggen,dann hättest sehr schnell gemerkt wo der Fehler liegt.


    Zeile 62 im PAWN-Tag
    Fahrschule[playerid][pmi_bAktiv]=false;
    Da muss schon mal true hin,nicht false.Denn sonst klappt die Abfrage bei OnPlayerEnterCheckpoint nicht,ob der Spieler gerade den Führerschein macht.
    Denke du hast aber nicht den ganze Code gezeigt, denn so verschwindet der Checkpoint nämlich nie.

  • Na false stimmt aber mit Sicherheit nicht.Denn wenn beim Startbefehl die Variable auf false gesetzt wird,du aber nur den Spieler als Fahrschüler wahr nimmst bei OnPlayerEnterCheckpoint wenn die Variable auf true ist,kann es gar nicht funktionieren. Denn die Variable ist ja eh nie auf true.
    http://forum.sa-mp.de/san-andr…ints-abfahren/#post102868
    Wenn du dort nochmal schaust,da hab ich es immer auf true bei dem Startbefehl. Das es funktioniert ist selbstverständlich,ich stelle ja keine Tutorials rein die nicht funktionieren ( kann man nicht von Jedem behaupten :p ).


    //Edit:
    Übrigens,

    Zitat

    Weiter so,du hast es fasst geschafft ! (%d / %d)

  • ok goldkiller. werde es morgen nochmal ausprobieren.
    kann man es denn auch so machen, dass auch mehrere Leute gleichzeitig den Führerschein machen kann?



    hey Golkiller, soll das nun wieder auf ein Fehler hinweisen oder was meinst du damit:

    Zitat

    Weiter so,du hast es fasst geschafft ! (%d / %d)

    Scripter im Ruhestand.

  • Da ist nix


    das hier ist der letzte satz


    "Wie auch,da ist nämlich keine."


    Verstanden?

  • Völliger Quatsch.
    Du könntest den Text aus so haben:
    SendClientMessage(playerid, COLOR_RED, "Der Server schaltet sich in 5 Minuten automatisch ab");
    Die Textnachricht bedeutet nichts,wenn der Code nicht das tut,was der Text aussagt.


    Das else mit dem Text gehört ja zu :
    if(!Fahrschule[playerid][pmi_bAktiv]) {
    Das heisst nur,dass der Spieler der den Startbefehl ausfürt,zur Zeit schon die Fahrprüfung macht.Nicht,dass Irgendjemand Anderes eine Fahrprüfung macht.


  • Ich kann mich nur zitieren.


    Der Text ist völlig egal.Den hast du dir sowieso ausgedacht. Du stellst dich wirklich total doof an ... :|

  • Das stimmt nicht.
    SendClientMessage(playerid, COLOR_RED, "Es laeuft schon eine Mission!");
    Da steht nirgendwo,dass jemand anderes bereits eine Mission macht und deswegen keine mehr Möglich ist :/.
    Ich hab es aber auch schon mit dem Code begründet.Da ist nirgendwo eine Limitierung drin. Außerdem geht probieren sowieso über studieren :whistling: