Navigation's Sytem Scripten (by |John|)

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
  • Hallo Breadfish!
    Ja ich habe mal so ein bisschen rum geguckt und habe ein Navi Tut gesehn
    was ich aber ziemlich unübersichtlich finde.
    Ich werde das in meinen Worten erklären (Speziell für Anfänger)

    =======================================================================================
    Was ich euch erklären werde:


    • Dialog für den Navi erstellen
    • Dialog Style List richitg benützen
    • Checkpoints beim erreichen löschen


    Was ihr braucht:


    • Zeit
    • Lesen können


    Was ihr solltet:


    •Kein C&P damit ihr versteht um was es hier geht


    Also gut fangen wir an :)
    =======================================================================================

    So als erstes definieren wir Oben im Script ein Dialog, ich werde ihn
    "DIALOG_NAVI" nennen.


    z. B:


    #define DIALOG_NAVI 1 //Die Zahl müsst ihr selber einstellen falls die 1 schon einem anderen Dialog zugewiesen wird


    So Schritt 1 wäre erledigt es folgt

    -Schritt 2


    So wir haben nun ein Dialog definiert und ihm die id 1 zugewiesen. Jetzt erstellen wir ein
    Command, ich werde es mit OCMD tun, falls ihr noch nicht Ocmd habt ladet euch das
    Include runter.
    Ihr könnt natürlich auch strcmp benutzen das bleibt euch überlassen. Also erstellen wir mal den Command.


    ocmd:navi(playerid,params[])
    {
    return 1;
    }


    Unser Command wäre erstellt nun fügen wir noch ein was passieren soll
    wenn jemand /navi eingibt. Das machen wir so:



    ocmd:navi(playerid,params[])
    {
    ShowPlayerDialog(playerid,DIALOG_NAVI,DIALOG_STYLE_LIST,"Navigation","Stadthalle\nSAPD\nBank","Go","Abbrechen");
    //nun wird dem Spieler dialog navi gezeigt
    return 1;
    }


    So das hätten wir es folgt


    -Schritt 3

    Nun will er ja wissen was passieren soll wenn man z. B Stadthalle auswählt.
    Dafür gehen wir zu OnDialogResponse, und Scripten was passieren soll
    wenn man Stadthalle auswählt. Ich werde mit
    switch und case arbeiten
    ihr könnt natürlich auch listitem==0 benutzen wenn ihr möchet.
    Warum ich
    case nutze ? Ganz einfach ich finde es einfacher und schneller. Also gut los gehts.


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch(dialogid==DIALOG_NAVI) //Welchen dialog
    {
    case 1:
    {
    if(!response) //Wenn auf Abbrechen gedrückt wird
    {
    SendClientMessage(playerid,farbe,"Du hast den Vorgang abgebrochen");
    return 1;
    }
    switch(listitem)
    {
    case 0:
    {
    SetPlayerCheckpoint(playerid,x,y,z,4.0); //Bei X,Y,Z eure Koordinaten einsetzen
    }
    case 1:
    {
    SetPlayerCheckpoint(playerid,x,y,z,4.0);
    }
    case 2:
    {
    SetPlayerCheckpoint(playerid,x,y,z,4.0);
    }
    return 1;
    }


    Warum fange ich bei case 0: an? Ganz eifnach in pwn wird angefangen ab 0 zuzählen.
    So nun werden die CheckPoints gesetzt alles gut. Wenn ihr es jetzt testet würdet ihr merken
    das die Checkpoints nicht verschwinden. Wie stellen wir ein dass wenn ein Spieler sein
    Checkpoint erreicht das dieser Checkpoint nicht mehr auf der Minimap angezeigt wird ?
    Das ist ganz einfach und zwar mit der Funktion: DisablePlayerCheckpoint. diesen befehl
    fügt ihr einfach bei OnPlayerEnterCheckpoint ein. Wenn ihr das getan habt sieht es so aus.


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


    Nun wird der Checkpoint gelöscht wenn man ihn erreicht.
    So das wars mit diesem Tutorial. Ich werde auch noch in einem 2Part einfügen wie
    die Checkpoints nach einer bestimmten zeit einfach gelöscht werden.
    Mit diesem Tutorial wollte ich nicht das bereits vorhandene Tutorial für den
    Navi system verbessern , ich wollte es nur nochmal in meinen Worten erklären, und

    alles genau erklären wie es alles abläuft. Dieses Tutorial ist Anfänger freundlich.
    Bewertet es, damit ich weiß ob ich noch weitere Tut's für anfänger machen soll.


    Hier nochmal ein Tutorial wie man Tore mit Timer Scriptet
    [ SCRIPTING ] Tore mit Befehl & Timer Scripten/erstellen
    =======================================================================================


    MFG: |John| ~ Bei errors bitte einfach posten

    -Ted.

    3 Mal editiert, zuletzt von Ted. ()

  • Bei mir kommen diese Errors:


    C:\Dokumente und Einstellungen\haus\Eigene Dateien\Script\YPL Selfmade\gamemodes\Roleplay.pwn(1515) : error 002: only a single statement (or expression) can follow each "case"
    C:\Dokumente und Einstellungen\haus\Eigene Dateien\Selfmade\gamemodes\Script.pwn(1515) : warning 215: expression has no effect
    C:\Dokumente und Einstellungen\haus\Eigene Dateien\Selfmade\gamemodes\Script.pwn(1517) : error 002: only a single statement (or expression) can follow each "case"
    C:\Dokumente und Einstellungen\haus\Eigene Dateien\Selfmade\gamemodes\Script.pwn(1517 -- 1518) : error 029: invalid expression, assumed zero
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.




    Gescriptet so:
    switch(dialogid==DIALOG_NAVIGATION)
    {
    case 1:
    {
    if(!response)
    {
    SendClientMessage(playerid,ROT,"Du hast den Vorgang abgebrochen.");
    return 1;
    }
    switch(listitem)
    {
    case 0:
    {
    SetPlayerCheckpoint(playerid,1493.5513,-1731.7076,13.3828,4.0);
    }
    case 1:
    {
    SetPlayerCheckpoint(playerid,1269.3052,-1848.9164,13.3915,4.0);
    }
    case 2:
    {
    SetPlayerCheckpoint(playerid,1201.3418,-1329.2771,13.3984,4.0);
    }
    return 1;
    }




    Wieso kommen die? Was mache ich Fail?