[Frage] Tutorial (In-Game)

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
  • in welcher reinfolge also erst
    du bist eingelog
    und dann
    du wirst zum tutorial weiter geleitet?

    Ich connecte, logge mich ein, spawne und dann wird das Tutorial gestartet.

    Fragst du auch beim einloggen noch mal die Variable ab?
    Wenn ja, musst du natürlich auch verhindern das in dem Moment das Tutorial gestartet wird.

    Welche Variable denn?

  • Die Variable zum starten des Tutorials.

    Mach ich nicht.


  • Es reicht, wenn du die Login Funktion wie folgt schreibst;
    forward OnPlayerLogin(playerid);
    public OnPlayerLogin(playerid)
    {
    new Rows;
    cache_get_row_count(Rows);
    if(Rows == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Rollenspiel - Einloggen", "Bitte gib nun dein Passwort ein:\n{FF0000}Falsches Passwort!", "Einloggen", "Abbrechen");
    }
    else
    {
    cache_get_value_name_int(0, "ID", PlayerInfo[playerid][p_ID]);
    cache_get_value_name_int(0, "Level", PlayerInfo[playerid][pLevel]);
    cache_get_value_name_int(0, "Money", PlayerInfo[playerid][pMoney]);
    cache_get_value_name_int(0, "Kills", PlayerInfo[playerid][pKills]);
    cache_get_value_name_int(0, "Deaths", PlayerInfo[playerid][pDeaths]);
    cache_get_value_name_int(0, "Tutorial", PlayerInfo[playerid][pTutorial]);
    PlayerInfo[playerid][pLoggedIn] = true;
    SendClientMessage(playerid, COLOR_GREEN, "{2AD400}Rollenspiel:{FFFFFF} Du hast dich eingeloggt.");
    SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
    GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
    if(PlayerInfo[playerid][pTutorial] != 1)
    {
    //Hier dann das Tutorial hin
    //Sobald es fertig ist, folgendes anwenden; PlayerInfo[playerid][pTutorial] = 1;
    }
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Es reicht, wenn du die Login Funktion wie folgt schreibst;
    forward OnPlayerLogin(playerid);public OnPlayerLogin(playerid){ new Rows; cache_get_row_count(Rows); if(Rows == 0) { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Rollenspiel - Einloggen", "Bitte gib nun dein Passwort ein:\n{FF0000}Falsches Passwort!", "Einloggen", "Abbrechen"); } else { cache_get_value_name_int(0, "ID", PlayerInfo[playerid][p_ID]); cache_get_value_name_int(0, "Level", PlayerInfo[playerid][pLevel]); cache_get_value_name_int(0, "Money", PlayerInfo[playerid][pMoney]); cache_get_value_name_int(0, "Kills", PlayerInfo[playerid][pKills]); cache_get_value_name_int(0, "Deaths", PlayerInfo[playerid][pDeaths]); cache_get_value_name_int(0, "Tutorial", PlayerInfo[playerid][pTutorial]); PlayerInfo[playerid][pLoggedIn] = true; SendClientMessage(playerid, COLOR_GREEN, "{2AD400}Rollenspiel:{FFFFFF} Du hast dich eingeloggt."); SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]); GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]); if(PlayerInfo[playerid][pTutorial] != 1) { //Hier dann das Tutorial hin //Sobald es fertig ist, folgendes anwenden; PlayerInfo[playerid][pTutorial] = 1; } } return 1;}

    Nur das und den Rest komplett entfernen?

  • Welchen Rest genau?

    Den hier:



    @ShinoX

  • Die globale Variable Tutorial.. ist totaler Müll.
    Allgemein alles unter OnPlayerSpawn entfernen, den ganzen Public OnPlayerTutorial entfernen.


    Danach mit meiner Hilfestellung davor weiter machen.

  • Beitrag von Mythik ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Neue antwort wird erstellt. ().
  • Die globale Variable Tutorial.. ist totaler Müll.
    Allgemein alles unter OnPlayerSpawn entfernen, den ganzen Public OnPlayerTutorial entfernen.


    Danach mit meiner Hilfestellung davor weiter machen.

    So?


    @ShinoX

    Es kommt aber dann nur nichts.

  • Probier es so, da man immer bei 0 beginnt. Desweiteren musst du die Variable auch erhöhen.
    forward OnPlayerLogin(playerid);
    public OnPlayerLogin(playerid)
    {
    new Rows;
    cache_get_row_count(Rows);
    if(Rows == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Rollenspiel - Einloggen", "Bitte gib nun dein Passwort ein:\n{FF0000}Falsches Passwort!", "Einloggen", "Abbrechen");
    }
    else
    {
    cache_get_value_name_int(0, "ID", PlayerInfo[playerid][p_ID]);
    cache_get_value_name_int(0, "Level", PlayerInfo[playerid][pLevel]);
    cache_get_value_name_int(0, "Money", PlayerInfo[playerid][pMoney]);
    cache_get_value_name_int(0, "Kills", PlayerInfo[playerid][pKills]);
    cache_get_value_name_int(0, "Deaths", PlayerInfo[playerid][pDeaths]);
    cache_get_value_name_int(0, "Tutorial", PlayerInfo[playerid][pTutorial]);
    PlayerInfo[playerid][pLoggedIn] = true;
    SendClientMessage(playerid, COLOR_GREEN, "{2AD400}Rollenspiel:{FFFFFF} Du hast dich eingeloggt.");
    SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
    GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
    SpawnPlayer(playerid);
    if(PlayerInfo[playerid][pTutorial] == 0)
    {
    switch(PlayerInfo[playerid][pTutorial])
    {
    case 0:
    {
    SendClientMessage(playerid, -1, "Text 1");
    PlayerInfo[playerid][pTutorial] ++;
    }
    case 1:
    {
    SendClientMessage(playerid, -1, "Text 2");
    PlayerInfo[playerid][pTutorial] ++;
    }
    case 2:
    {
    SendClientMessage(playerid, -1, "Text 3");
    PlayerInfo[playerid][pTutorial] ++;
    }
    case 3:
    {
    SendClientMessage(playerid, -1, "Text 4");
    PlayerInfo[playerid][pTutorial] ++;
    }
    case 4:
    {
    SendClientMessage(playerid, -1, "Tutorial absolviert.");
    PlayerInfo[playerid][pTutorial] ++;
    PlayerInfo[playerid][pTutorial] = 1;
    OnPlayerSave(playerid);
    }
    }
    }
    }
    return 1;
    }