Wie erstelle ich ein Tutorial?

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
  • Es gibt hier im Forum so einen Bereich, der nennt sich "Tutorials" ... schau mal rein und dann hast du dort das ein oder andere Tutorial für ein Tutorial^^ (*lach* tolles Wortspiel :D ) das passt du dann ganz einfach an deinen Verhältnissen an ;)

  • Wenn du es mit Boxen machen möchtest, machst du es wie folgt:
    Ganz oben im Script solltest du einen Userbezogene Variable erstellen. Gleichzeitig musst du auch noch ein Dialog definieren.
    Dies geht wie folgt:
    #define DIALOG_TUTORIAL 55; (Die 55 ist die Dialog ID, du müsstest dann schauen welche bei dir die nächst höchste ID wäre)
    new User-Tutorial[MAX_PLAYERS];


    Anschließend müsstest du diese Variable mit einem Wert füllen. Sprich, wenn ein User beispielsweise /tutorial eingibt, oder wenn ein User die Registration abgeschlossen hat, fügst du dies in dein Script ein (Wo das ist, müsstest du selber wissen):
    User-Tutorial[playerid] = 1;
    Die 1 kannst du als "Step-1 des Tutorials" interpretieren.


    Jetzt direkt nach der gesetzten Variable müsstest du dem User ein Dialog (Von dir gewünscht: msgbox) anzeigen lassen. Dies geht wie folgt:
    ShowPlayerDialog(playerid, DIALOG_TUTORIAL, DIALOG_STYLE_MSGBOX, "Dies ist das Tutorial", "Tutorial Text", "Weiter", "");


    Nun müsste die Zeile wie folgt aussehen:
    User-Tutorial[playerid] = 1;
    ShowPlayerDialog(playerid, DIALOG_TUTORIAL, DIALOG_STYLE_MSGBOX, "Dies ist das Tutorial", "Tutorial Text", "Weiter", "");


    Nun, um abzufragen wann bzw. ob der User "Weiter" drückt, müssen wir das ganze in OnDialogResponse Abfragen, dies geht wie folgt:
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_TUTORIAL)
    {
    if(response)
    {
    if(User-Tutorial[playerid] == 1)
    {
    ShowPlayerDialog(playerid, DIALOG_TUTORIAL, DIALOG_STYLE_MSGBOX, "Dies ist das Tutorial", "Text2", "Weiter", "");
    User-Tutorial[playerid] = 2;
    }
    else if(User-Tutorial[playerid] == 2)
    {
    ShowPlayerDialog(playerid, DIALOG_TUTORIAL, DIALOG_STYLE_MSGBOX, "Dies ist das Tutorial", "Text3", "Weiter", "");
    User-Tutorial[playerid] = 3;
    }
    else if(User-Tutorial[playerid] == 3)
    {
    ShowPlayerDialog(playerid, DIALOG_TUTORIAL, DIALOG_STYLE_MSGBOX, "Dies ist das Tutorial", "Text4", "Weiter", "");
    User-Tutorial[playerid] = 4;
    }
    else if(User-Tutorial[playerid] == 4)
    {
    ShowPlayerDialog(playerid, DIALOG_TUTORIAL, DIALOG_STYLE_MSGBOX, "Dies ist das Tutorial", "Text5", "Weiter", "");
    User-Tutorial[playerid] = 5;
    }
    else if(User-Tutorial[playerid] == 5)
    {
    SendClientMessage(playerid, COLOR, "Herzlichen Glückwunsch, das Tutorial ist beendet!");
    }
    else
    {
    SendClientMessage(playerid, COLOR, "Es ist anscheinend ein Fehler aufgetreten...");
    }


    }
    else
    {


    }
    return 1;
    }


    return 0;
    }


    So in etwa, kannst du ein einfaches Tutorial System gestalten. Hast du noch Fragen, oder verstehst du etwas an dem Code nicht?

  • C:\Users\kev\Desktop\test\gamemodes\test.pwn(128) : error 001: expected token: ";", but found "-"
    C:\Users\kev\Desktop\test\gamemodes\test.pwn(403) : warning 217: loose indentation
    C:\Users\kev\Desktop\test\gamemodes\test.pwn(403) : error 001: expected token: ")", but found ";"
    C:\Users\kev\Desktop\test\gamemodes\test.pwn(403) : error 036: empty statement
    C:\Users\kev\Desktop\test\gamemodes\test.pwn(403) : error 029: invalid expression, assumed zero
    C:\Users\kev\Desktop\test\gamemodes\test.pwn(403) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    5 Errors.


    if(dialogid == DIALOG_TUTORIAL) //403


    new User-Tutorial[MAX_PLAYERS]; //128

  • Also in den Zeilen die du angegeben hast, gibts keine Fehler. Die Zeile drüber und drunter wäre noch ganz praktisch. Und poste auch noch deinen #define DIALOG_TUTORIAL bitte.

    Ich habe es jetzt hinbekommen,allerdings wird das Tutorial vor dem Regestrieren abgespielt nicht nach dem.



    case DG_REGISTER:
    {
    new string[230];
    format(string, sizeof(string), ""COLW"Herzlich Willkommen auf [pR]Planet Reallife\n"COLW"Der Account "COLO"%s"COLW" ist nicht registriert!\nWenn du diesen Account registrieren willst,\ngib unten dein gewünschtes Passwort ein!", GetName(playerid));
    ShowPlayerDialog(playerid, DG_REGISTER, DG_PASSWORD, ServerName, string, "Erstellen", "Abbrechen");
    Tutorial[playerid] = 1;
    ShowPlayerDialog(playerid, DIALOG_TUTORIAL, DIALOG_STYLE_MSGBOX, "Dies ist das Tutorial", "Tutorial Text", "Weiter", "");

  • Du musst das Tutorial auch bei public OnPlayerSpawn(playerid) abspielen lassen. Dort erstellst du eine Variable und fragst ab oder das Tutorial schon gemacht hat. Wenn nein, lässt du es laufen. Wenn ja, lässt du ihn normal spawnen.

  • Du musst das Tutorial auch bei public OnPlayerSpawn(playerid) abspielen lassen. Dort erstellst du eine Variable und fragst ab oder das Tutorial schon gemacht hat. Wenn nein, lässt du es laufen. Wenn ja, lässt du ihn normal spawnen.

    also so:
    if(pFirstLog[playerid] == true)
    {
    //Tutorial anzeigen
    }



    Und wenn das tutorial fertig ist
    pFirstLog[playerid] == false;



    ?


    //edit Montero wie soll ich das denn sonst machen? :D

  • Naja, du musst halt irgendwir pFirstLog[playerid] auf true setzen, damit es überhaupt geht. Aber ja, an der Stelle würde es passen, wenn es keine Komplikationen mit nachfolgenden Anweisungen unter FirstLog kommt.