/Gps mit Dialog - Checkpoint NO ERRORS

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, wollt euch ein simples tutorial zeigen, wie man ein GPS/Navi Command macht, das ein Dialog erscheint und es zu einen Checkpoint hinführt!


    Fangen wir mal an! ^^


    unter includes erstellt ihr ein neuen define für diesen Dialog der dann erscheinen soll wenn man /gps macht! Das sieht so aus:
    #define DIALOG_GPS 5 Es hat die Zahl 5 da ich schon 4 weitere Dialoge habe, bei mir sieht es so aus:
    //DefinesDIALOG
    #define DIALOG_TUTORIAL 1
    #define DIALOG_REGISTER 2
    #define DIALOG_LOGIN 3
    #define DIALOG_JOBLIST 4
    #define DIALOG_GPS 5
    Also wenn ihr keine anderen Dialoge habt, stellt ihr die Zahl 0 oder 1 hinter dem #define DIALOG_GPS


    Dann geht ihr zu OnPlayerCommandText und mach ein command dafür
    if(strcmp(cmdtext,"/gps",true)==0)
    {
    ShowPlayerDialog(playerid,DIALOG_GPS, DIALOG_STYLE_LIST, "Important places", "Driving school\n Tutorial\n BSN\n Jobcenter", "Find", "Cancel");
    return 1;
    }

    // /gps ist der Command der eingegeben werden soll. Für "Important places kommt der Titel der dann in der Box erscheint,
    Dann kommen die Orte die man Finden kann. Auch die könnt ihr ändern aber
    immer mit \n kommt das nächste. \n steht für den nächsten Absatz. Mit
    leertaste wird das nicht klappen^^. Und dann die Buttons, Find oder
    Cancel, ich habs jezt in Englisch da ich einen Englischen RP Script
    mache, natürlich Selfmade!


    Danach geht ihr auf OnDialogResponse und stellt ein, was erscheinen soll wenn man den Dialog aufruft.
    if(dialogid==DIALOG_GPS) //Dialog ID, wenn dialog Beispiel ist, soll...
    {
    if(response)//Wenn sie auf den Linken Button drücken...
    switch(listitem)//Wenn ein Item von der Liste ausgewählt wurde
    {
    case 0://Erste Item, bei mir ist es z.B dann Driving School, da ich das als erstes in der Tabelle eingefügt hab
    {
    SetPlayerCheckpoint(playerid,-1687.2301,377.7286,6.7881,3.0);// Der Checkpoint wird gesetzt, playerid, xyz, und 3,0 für die größe des Checkpoints
    SendClientMessage(playerid, WHITE, "Follow the Checkpoint!.");// Die Nachricht. Bitte WHITE nicht benutzen, wenn ihr die Farbe noch nicht defeniert habt.
    }
    case 1://Item 2 aus der liste
    {
    SetPlayerCheckpoint(playerid,1097.2717,-1794.5433,13.6046,3.0);
    SendClientMessage(playerid, WHITE, "Follow the Checkpoint!.");
    }
    case 2://Item 3 aus der liste
    {
    SetPlayerCheckpoint(playerid,1211.7794,-924.3547,42.5275,3.0);
    SendClientMessage(playerid, WHITE, "Follow the Checkpoint!.");
    }
    case 3://Item 4 aus der liste
    {
    SetPlayerCheckpoint(playerid,591.8506,-1244.0804,17.6145,3.0);
    SendClientMessage(playerid, WHITE, "Follow the Checkpoint!.");
    }
    }
    return 1;
    }


    Und das wars :)

  • 10/10


    Sehr gutes Tutorial. Vielen dank.


    Nur es wäre wirklich 11/10 wenn du noch einen Befehl machen könntest mit dem man den Checkpoint deleten kann. Also das wenn man keine Lust mehr hat dahin zu fahren , das man z.B /stop Checkpoint oder /löschen , Oder egal welcher Befehl kann man ja ändern wie man will. Also wenn es das auchnoch gäbe wirklich Sensationell!!!


    Aber so auch SUPPPPER gut.

    Projektleiter

    Cleared to Land ist in der Script Werkstatt ;)


  • Einfach den hier unter OnPlayerEnterCheckpoint


    public OnPlayerEnterCheckpoint(playerid)
    {
    DisablePlayerCheckpoint(playerid);
    return 1;
    }

  • Sowas it in meinen Augen ein Scriptschnipsel ^^. Sorry aber sowas ist doch kein Tutorial, das ist ja was für C&P als Anfänger, du erklärst ja mal garnix was sich in diesem "System" befindet. Versuch doch mal einige Sachen zu erklären :)

  • 1.) Warum machst du es auf Englisch in einem Deutschen Forum.
    2.) Das ist eher ein Scriptschnipsel für mich.
    3.) Die Checkpoints gehen bei dir nie wieder weg außer man macht erneut /gps.
    5.) 1/10 Punkte dafür
    6.) Ich habe die 4.) vergessen.

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • @ZKX


    Zu deinem 3.).


    Ähhh... Klar gehen die weg. Er hats doch beschrieben. Ich habs ihn gefragt.Du musst halt nur


    Erst unter OnPlayerEnterCheckpoint



    public OnPlayerEnterCheckpoint(playerid)
    {
    DisablePlayerCheckpoint(playerid);
    return 1;
    }



    Und ich hab darazus einfach einen Command gemacht.



    if(strcmp(cmdtext,"/gpsaus",true)==0)
    {
    DisablePlayerCheckpoint(playerid);
    SendClientMessage(playerid,BEIGE,"Du hast dein Ziel gestrichen!");
    SendClientMessage(playerid,ROT,"Natürlich 'Nur' wenn du auch ein Ziel hattest!");
    }


    Dann geht der Checkpoint ganz einfach weg. Ähm. Farben kannste ja Austauschen.

    Projektleiter

    Cleared to Land ist in der Script Werkstatt ;)


  • und btw die 3.0 nach den Koordinaten bei den case's steht für die größe/form vom Checkpoint

  • Wirklich eher ein Codeschnipsel aber alles in allem gut gemacht.


    8/10 :thumbup:

  • Einfach aber Gut!
    Naja beim Befehl müsst ihr noch:

    if(IsPlayerInRangeOfPoint(playerid,5.0,Coords))


    Einbauen sonst kan man den Guide überall Öffnen!
    8/10
    MFG
    Er!k