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
  • Hey,
    Erst einmal habe ich ein kleines Problem:


    Ich bin dabei ein Fahrschulsystem zu machen und habe erst einmal nur den Auto-Schein. Jetzt möchte ich wenn man die Fahrstunde startet das sozusagen der Spieler in das Fahrschulauto kann
    Das habe ich auch hinbekommen, aber dann steht da das er kein Auto-Schein hat.



    Hier ist auch ein Video dazu damit man es besser versteht:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.



    Mein zweites Problem ist ich steige in jedes Auto und jedes hat sozusagen den Autoschein außer Fahrräder soll ich so etwas auch 3x kopieren und es in einer Gruppe einteilen und dann kompliziert immer abfragen? Also nach meiner Art währen das bestimmt 250 Zeilen



    Code
    stock WithoutMotor(vehicleid)
    {
        switch(GetVehicleModel(vehicleid))
        {
            case 510,509,481: return 0;
        }
        return 1;
    }

    Hoffe einer von euch hat einen Plan :)

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

  • Beitrag von Harry. ()

    Dieser Beitrag wurde von seegras gelöscht ().
  • if(pInfo[playerid][pAutoschein]== 0)
    zu
    if(pInfo[playerid][pAutoschein]== 0 && pInfo[playerid][pFahrstunde] == 0)


    Jedoch könnte er in dem Fall , wenn er die Fahrstunde gestartet hat, jedes Fahrzeug benutzen.

  • Ja genau das wollte ich ja am Anfang machen aber das wäre dann wieder ein "Bug" Und mein Ziel ist es ein Fehlerfreies Script auf den Stand zu setzten.
    Man kann doch nach der Sache mit pFahrstunde== 1 irgendwo ein return einsetzten dann macht er nicht weiter mit der Abfrage oder?

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

  • versuch es mal so...



    new vehicleid=GetPlayerVehicleID(playerid);
    if(WithoutMotor(vehicleid))
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    for(new p; p < sizeof(Fahrschulauto); p++)
    {
    if(vehicleid == Fahrschulauto[p])
    {
    if(pInfo[playerid][pFahrstunde] != 1)
    {
    SendClientMessage(playerid, -1,"{c45461}Du musst zuerst die Fahrstunde starten, um mit der Prüfung anzufangen.");
    return RemovePlayerFromVehicle(playerid);
    }
    else
    {
    return SendClientMessage(playerid,-1,"{FAFAFA}Benutze den Befehl{009BFF} /Motor{FAFAFA} um den Motor zu starten. Mit den Befehl {009BFF}/Licht{FAFAFA} schaltest du das Licht ein.");
    }
    }
    }
    if(pInfo[playerid][pAutoschein]== 0)
    {
    SendClientMessage(playerid, -1,"{c45461}Du hast noch keinen Auto-Schein.");
    return RemovePlayerFromVehicle(playerid);
    }
    else
    {
    SendClientMessage(playerid,-1,"{FAFAFA}Benutze den Befehl{009BFF} /Motor{FAFAFA} um den Motor zu starten. Mit den Befehl {009BFF}/Licht{FAFAFA} schaltest du das Licht ein.");
    }
    }
    }

  • Danke dir! ♥
    Jetzt hat ja jedes Fahrzeug einen Autoschein außer Fahrräder wie frage ich ab ob er den gewissen schein dafür hat, also mit z.b nur Autoschein würde ich das ja hinkriegen aber bei mehreren Sachen habe ich Probleme

    Code
    stock sAutos(vehicleid)
    {
        switch(GetVehicleModel(vehicleid))
        {
            case 510: return 0;
        }
        return 1;
    }


    Code
    stock sMotorrad(vehicleid)
    {
        switch(GetVehicleModel(vehicleid))
        {
            case 481: return 0;
        }
        return 1;
    }

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

  • if(sAutos(vehicleid))
    {
    if(pInfo[playerid][pAutoschein] == 0)
    {
    SendClientMessage(playerid, -1,"{c45461}Du hast noch keinen Auto-Schein.");
    RemovePlayerFromVehicle(playerid);
    }
    else
    {
    SendClientMessage(playerid,-1,"{FAFAFA}Benutze den Befehl{009BFF} /Motor{FAFAFA} um den Motor zu starten. Mit den Befehl {009BFF}/Licht{FAFAFA} schaltest du das Licht ein.");
    }
    }
    else if(sMotorrad(vehicleid))
    {
    if(pInfo[playerid][pMotorradschein] == 0)
    {
    SendClientMessage(playerid, -1,"{c45461}Du hast noch keinen Motorrad-Schein.");
    RemovePlayerFromVehicle(playerid);
    }
    else
    {
    SendClientMessage(playerid,-1,"{FAFAFA}Benutze den Befehl{009BFF} /Motor{FAFAFA} um den Motor zu starten. Mit den Befehl {009BFF}/Licht{FAFAFA} schaltest du das Licht ein.");
    }
    }

  • Er sagt mir bei jedem Fahrzeug das ich kein Autoschein habe, komisch


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

  • Sollte deine "sAutos"-Funktion (und auch die anderen) noch so sein, wie oben, dann vertausche return 1 und return 0.
    Es darf nur am Ende ein "return 0" stehen, bei allen anderen Fällen (die dann ja positiv sind), muss return 1 stehen.
    Bzw. false (0) und true (1).

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Da ist Return 0 und 1

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

  • Entweder bin ich doof oder es funktioniert nicht

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

  • Wenn die anderen Funktionen auch so aussehen, dann ist das korrekt und sollte auch funktionieren.
    Lass dir ansonsten mal die Model-ID per print ausgeben, falls es nicht klappt, und prüfen dann, ob die vielleicht doch im switch drin steht.
    Vor den if-Abfragen:
    printf("vehicleid: %d / Model-ID: %d / sAuto: %d", vehicleid, GetVehicleModel(vehicleid), sAuto(vehicleid));

  • //EDIT


    Habe nochmal alles nachgeschaut eine Funktion habe ich vergessen geht doch danke!


    Also erst einmal funktioniert alles gut nur das der Spieler ganz normal bei der Fahrstunde aussteigen kann was nicht der Fall sein soll, also wenn er das Auto verlässt will ich das die Fahrstunde gestoppt wird und das Auto wieder zum Spawn geschickt wird, wie soll ich anfangen bei onplayervehicleexit oder kann das noch hier mit rein? ( ist das erste mal das ich damit arbeite das jemand ein Fahrzeug verlässt )

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

    Einmal editiert, zuletzt von Jameso ()

  • Also, irgendwie verstehe ich es nicht warum oldstate nicht definiert ist?

    Code
    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    	if(pInfo[playerid][aFahrstunde] == 1);
    	{
    		if(oldstate == PLAYER_STATE_DRIVER) return RemovePlayerFromVehicle(playerid);
    	}
    	return 1;
    }


    Code
    (2012) : error 036: empty statement
    (2014) : error 017: undefined symbol "oldstate"
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    2 Errors.

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

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