Fahrkahrten-Automaten für den Zug

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
  • Einfach sowas:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ja, das ist möglich, du kannst das sogar auf verschiedene Arten machen, diese wären:
    - Objekt setzen + Pickup => Menü anzeigen bei OnPlayerPickUpPickup.
    - Objekt setzen + Checkpoint => Menü anzeigen bei OnPlayerEnterCheckpoint (gegebenenfalls mit einem Checkpoint-Streamer).
    - Wenn der Spieler in der Nähe des gesetzten Objektes einen Befehl (z.B. /automat) eingibt => Menü anzeigen.
    - Per Timer/OnPlayerUpdate prüfen, ob der Spieler in der Nähe des Objektes ist => Menü anzeigen.


    Persönlich finde ich die Variante mit dem Pickup am sinnvollsten, vor allem weil es am wenigsten auf die Ressourcen geht und der Code am leichtesten ist, da man keine Berechnungen braucht, daher beschreibe ich dir diese Variante. Falls du eine andere der oben genannten haben willst, oder dir selbst noch eine einfällt, die du lieber haben willst, dann sag bitte Bescheid.


    Unter den Includes die Deklaration für den Speicher der Objekt-IDs und Pickup-IDs:

    C
    #define DIALOG_FAHRKARTEN 1403
    new fahrkartenAutomat[10] = {-1,...}; //Maximal 10 Fahrkartenautomaten
    new fahrkartenPickup[10] = {-1,...};


    Unter OnGameModeInit:

    C
    fahrkartenAutomat[0] = CreateObject(/*Model & Koordinaten hier einfügen*/);
    fahrkartenAutomat[1] = CreateObject(/*Model & Koordinaten hier einfügen*/);
    //...
    fahrkartenAutomat[9] = CreateObject(/*Model & Koordinaten hier einfügen*/);

    [wiki]CreateObject[/wiki]
    Und dazu dann, jeweils vor dem Fahrkartenautomaten, bzw. in ihm drin, so dass das Pickup nicht sichtbar ist, falls du das so haben willst:

    C
    fahrkartenPickup[0] = CreatePickup(/*Model & Koordinaten hier einfügen*/);
    fahrkartenPickup[1] = CreatePickup(/*Model & Koordinaten hier einfügen*/);
    //...
    fahrkartenPickup[9] = CreatePickup(/*Model & Koordinaten hier einfügen*/);

    [wiki]CreatePickup[/wiki]


    Dann brauchst du nur noch bei OnPlayerPickUpPickup folgendes einfügen:

    C
    for(new i=0; i<sizeof(fahrkartenPickup); i++)
    {
        if(fahrkartenPickup[i] == pickupid)
        {
            ShowPlayerDialog(playerid, DIALOG_FAHRKARTEN, DIALOG_STYLE_LIST, "Fahrkartenautomat", "Text Hier\nUnd Hier\n...", "Ok", "Abbrechen");
            return 1;
        }
    }


    Und bei OnDialogResponse entsprechend dann die Aktionen durchführen, die gemacht werden sollen, wenn der Spieler das jeweilige Item ausgewählt hat:


    Anschließend musst du dann abfragen, ob der Spieler einen Zug betreten hat, oder nicht, und dort dann abfragen, ob er das korrekte Ticket für die Strecke gekauft hat (zuvor mit dem Dialog).


    Die entsprechend markierten Stellen musst du natürlich mit deinen Dingen ausfüllen.