Scheine an Fahrzeugen zuordnen und abfragen

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
  • Wenn ich PInfo[playerid]{aFahrstunde] = 0; mache wird es auf 0 gesetzt oder wird sozusagen + 0 gerechnet weil das funktioniert nicht irgendwie aslo aFahrstunde ist nicht auf 1 oder er setzt das automatisch auf 0 wenn ich reingehe

    Code
    if(pInfo[playerid][aFahrstunde] == 1)
    	{
    		if(oldstate == PLAYER_STATE_DRIVER) return RemovePlayerFromVehicle(playerid);
      		SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    		pInfo[playerid][aFahrstunde] = 0;
    	}

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Das liegt daran, dass es zu 0 gesetzt wird, wenn du einsteigst. Das Fahrzeug müsste auch zurück gesetzt werden.
    Schreibe es so:
    if(pInfo[playerid][aFahrstunde] == 1 && oldstate == PLAYER_STATE_DRIVER)
    {
    RemovePlayerFromVehicle(playerid);
    SetVehicleToRespawn(pInfo[playerid][aFahrstundeVeh]);
    pInfo[playerid][aFahrstunde] = 0;
    }


    Edit:
    GetPlayerVehicleID geht nach dem Aussteigen nicht mehr, du bist ja in keinem Fahrzeug mehr. Speichere die vehicleid beim Einsteigen in die Spielervariable und nutze das anstatt GetPlayerVehicleID beim Aussteigen.

  • SetVehicleToRespawn(pInfo[playerid][aFahrstundeVeh]);
    kann man das dahinter nicht weg lassen sondern nur das mit toSpawn wie am Anfang


    //Edit sollte lesen lernen


    Ist das nicht komplizierter, also wie erstelle ich diese Variable ich finde das so mega kompliziert

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Ist das nicht komplizierter, also wie erstelle ich diese Variable ich finde das so mega komplizier

    Füge es dem enum hinzu, da wo die andere Variable auch steht.


    Und dann beim Einsteigen in das Fahrzeug, wenn der Spieler im Fahrstunde Modus ist und newstate == PLAYER_STATE_DRIVER ist, dann setzt du die Variable gleich GetPlayerVehicleID. Du speicherst damit die vehicleid, damit diese auch nach Verlassen des Fahrzeugs noch bekannt ist.

  • Habe ich was falsch gemacht?

    Code
    if(pInfo[playerid][aFahrstunde] == 1 && newstate == PLAYER_STATE_DRIVER)
    	{
    		pInfo[playerid][FahrstundeVID] = GetPlayerVehicleID(playerid);
    	}


    Ich habe bemerkt das wenn die Fahrstunde gestartet ist, das wenn ich auf ein Fahrrad z.b steige um schnelle zu den Autos zu kommen und ich dann absteige die Fahrstunde beendet wird,
    Ich habe ja new Fahrschulauto[ 50 ];


    Code
    if(pInfo[playerid][aFahrstunde] == 1 && oldstate == PLAYER_STATE_DRIVER)
    	{
    		RemovePlayerFromVehicle(playerid);
    	  	SetVehicleToRespawn(GetPlayerVehicleID(playerid));
    		pInfo[playerid][aFahrstunde] = 0;
    		SendClientMessage(playerid,-1,"{c45461}Deine Fahrstunde wurde beendet, du hast das Fahrschul-Auto verlassen.");
    	}

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Dann musst du prüfen, ob es sich um ein Fahrschulauto handelt, beim Einsteigen:
    if(pInfo[playerid][aFahrstunde] == 1 && newstate == PLAYER_STATE_DRIVER)
    {
    new vid = GetPlayerVehicleID(playerid);
    for(new i = 0; i < sizeof(Fahrschulauto); i++)
    {
    if(vid == Fahrschulauto[i])
    {
    pInfo[playerid][FahrstundeVID] = vid;
    break;
    }
    }
    }


    Und beim Aussteigen prüfen, ob der Spieler auch in einem solchen Fahrzeug war, das geht in dem Falle dann recht einfach:
    if(pInfo[playerid][aFahrstunde] == 1 && oldstate == PLAYER_STATE_DRIVER && pInfo[playerid][FahrstundeVID] != 0)
    {
    SetVehicleToRespawn(pInfo[playerid][FahrstundeVID]);
    pInfo[playerid][aFahrstunde] = 0;
    pInfo[playerid][FahrstundeVID] = 0;
    SendClientMessage(playerid,-1,"{c45461}Deine Fahrstunde wurde beendet, du hast das Fahrschul-Auto verlassen.");
    }

  • Oke gut danke, habe jetzt noch hinzugefügt das der Checkpoint auch noch entfernt wird.


    Jetzt möchte ich was haben aber weiß die Idee nicht umzusetzten


    Wenn man eine Geschwindigkeit ( Habe das Tachosystem von MrMonat ) überschreitet sagen wir mal 80Km/h soll der Spieler einen Fehlerpunkt bekommen was einfach in einer Variable abgespeichert wird und am ende nach der Prüfung gezeigt wird also wenn er mehr als 7 Strafpunkte hat kriegt er den Schein nicht, man kann auch hinzufügen das wenn der Spieler das Auto Schaden hinzufügt er auch da einen Fehlerpunkt bekommt, wie soll ich anfangen

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Die Geschwindigkeit kannst du mit [wiki]GetVehicleVelocity[/wiki] auslesen. Dabei kannst du dich an der Berechnung im Tacho orientieren.
    Den Schaden am Auto kannst du mit [wiki]GetVehicleHealth[/wiki] auslesen.


    Wenn der Spieler also zu schnell ist, kannst du ihm per Variable einen Fehlerpunkt geben.
    Außerdem kannst du am Prüfungsende nachgucken, ob der Spieler zu viel Schaden am Auto verursacht hat.

  • Sagen wir aber der Spieler überschreitet die 80Km/h dann wird ja nur beim überschreiten ein Fehlerpunkt hinzugefügt dann kann er ja die ganze Zeit drüber fahren

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Habe noch nie mit Wurzeln oder ähnliches gearbeitet, woher weiß ich denn wann 80Km/h sind und wie frage ich das dann mit der Wurzel ab

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Verstehe allein das normale Tacho nicht einmal also Zeile 3. steht ja am ende "" woher weiß er das da die Km/h reinkommen, das ist mir glaube ich zu schwer fürs erste reicht auch das Simple System

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Kann ich das einfach so abfragen if getPlayerSpeed > 80 return pInfo[playerid][aFehler]=+1; dann noch irgendwo ein Gametext anzeigen lassen das man zu schnell fährt.


    Und sollte ich auch ein neues public dafür erstellen und da halt einen Timer noch dazu also



    SetTimer("tofast",1500, true);

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Ich verstehe nicht warum da z.b bei Zeile 2356. gefragt wird ob der Spieler nicht Connected ist und nicht in einem Auto ist




    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Okey gut, bin stolz auf mich das ich das mit dem String geschafft habe haha


    Ich habe immer noch nicht verstanden bei Zeile 9. und 19. steht ja = 0 ; wird es dann auf 0 gesetzt oder wird +0 gesetzt oder muss ich doch == schreiben?`


    Glaube einer hat die Frage schon beantwortet aber ich habe es vergessen.

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen