Tutorial Problem

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 Community,


    Habe eine Problem mit meinem Tutorial System
    Sobald der Erste Text kommt geht es nicht mehr weiter
    Hier ist der Code
    public Tutorialtimer()
    {
    for (new i = 0; i<MAX_PLAYERS; i++)
    {
    if(tut[i]>=1)
    {
    isttot[i]=0;
    if(tut[i]==1)
    {
    Tutorial2(i);
    return 1;
    }
    if(tut[i]==2)
    {
    Tutorial3(i);
    return 1;
    }
    if(tut[i]==3)
    {
    Tutorial4(i);
    return 1;
    }
    if(tut[i]==4)
    {
    Tutorial5(i);
    return 1;
    }
    if(tut[i]==5)
    {
    Tutorial6(i);
    return 1;
    }
    if(tut[i]==6)
    {
    tut[i]=7;
    return 1;
    }
    if(tut[i]==7)
    {
    registrierung[i]=0;
    TogglePlayerControllable(i,1);
    //SetPlayerCheckpointEx(i,1768.5026,-1940.6367,13.5671,3);
    SetPlayerPos(i,400.6223,-1532.5000,32.2734);
    SetPlayerVirtualWorld(i,0);
    SetCameraBehindPlayer(i);
    tut[i]=0;
    return 1;
    }
    }
    }
    SetTimer("Tutorialtimer",34000,1);
    return 1;
    }


    public Tutorial6(playerid)
    {
    TogglePlayerControllable(playerid,0);
    SetPlayerFacingAngle(playerid,261.8088);
    SetPlayerVirtualWorld(playerid,2);
    SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,2219.4700,-1157.5779,25.7266);
    SetPlayerCameraPos(playerid,2219.4700,-1157.5779,25.7266);
    SetPlayerCameraLookAt(playerid,2232.2581,-1159.5955,25.8906);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"|______Motel_____|");
    SendClientMessage(playerid,COLOR_GREEN,"Wenn du noch kein Haus hast, kannst du im Motel wohnen.");
    SendClientMessage(playerid,COLOR_GREEN,"Du kannst es mit /rent mieten, und wenn du dich einloggst");
    SendClientMessage(playerid,COLOR_GREEN,"wirst du im gemütlichen Saint Jefferson Motel spawnen.");
    SendClientMessage(playerid,COLOR_GREEN,"Du hast das Tutorial abgeschlossen. ");
    SendClientMessage(playerid,COLOR_GREEN,"Steige an der Unity Station in Los Santos aus. Dort ist ein Checkpoint.");
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,1);
    tut[playerid]=6;
    }


    public Tutorial5(playerid)
    {
    TogglePlayerControllable(playerid,0);
    SetPlayerFacingAngle(playerid,139.8221);
    SetPlayerVirtualWorld(playerid,2);
    SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,1506.5172,-1723.1539,27.2764);
    SetPlayerCameraPos(playerid,1506.5172,-1723.1539,27.2764);
    SetPlayerCameraLookAt(playerid,1486.3931,-1743.4344,13.5469);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"|______Weiteres_____|");
    SendClientMessage(playerid,COLOR_GREEN,"Wenn du noch weitere Befehle wissen möchtest gib einfach /help");
    SendClientMessage(playerid,COLOR_GREEN,"ein. Weißt du mal nicht weiter mache /report und ein Admin hilft");
    SendClientMessage(playerid,COLOR_GREEN,"dir weiter. Du kannst auch jemandem eine sms mit /sms schreiben.");
    SendClientMessage(playerid,COLOR_GREEN,"Die passende Handynummer kannst du mit /nummer + Spielername rausfinden.");
    SendClientMessage(playerid,COLOR_GREEN,"Die Navigation zu anderen Orten kannst du mit /navi aufrufen.");
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,1);
    tut[playerid]=5;
    }
    public Tutorial4(playerid)
    {
    TogglePlayerControllable(playerid,0);
    SetPlayerFacingAngle(playerid,356.5927);
    SetPlayerPos(playerid,2101.1167,-1377.2220,23.9835);
    SetPlayerInterior(playerid,0);
    SetPlayerCameraPos(playerid,2101.1167,-1377.2220,23.9835);
    SetPlayerCameraLookAt(playerid,2101.2446,-1372.7838,23.9844);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"|______Jobs_____|");
    SendClientMessage(playerid,COLOR_GREEN,"Du kannst in deiner Laufbahn mehrere Jobs wählen. Einer davon");
    SendClientMessage(playerid,COLOR_GREEN,"ist Müllman. Gehe einfach zu einem Müllwagen, steig ein, und gib ");
    SendClientMessage(playerid,COLOR_GREEN,"/startmull ein. Schon beginnst du mit der Arbeit.");
    tut[playerid]=4;
    SetPlayerVirtualWorld(playerid,1);
    }
    public Tutorial3(playerid)
    {
    TogglePlayerControllable(playerid,0);
    SetPlayerFacingAngle(playerid,265.5638);
    SetPlayerPos(playerid,1526.6272,-1673.3956,13.3828);
    SetPlayerVirtualWorld(playerid,2);
    SetPlayerInterior(playerid,0);
    SetPlayerCameraPos(playerid,1526.6272,-1673.3956,13.3828);
    SetPlayerCameraLookAt(playerid,1542.2948,-1675.2501,13.5542);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"|______SAPD_____|");
    SendClientMessage(playerid,COLOR_GREEN,"Hier wirst du einen Beamten des SAPD antreffen. Er wird dir helfen");
    SendClientMessage(playerid,COLOR_GREEN,"und dich beschützen. Du kannst im Department deinen Führerschein ");
    SendClientMessage(playerid,COLOR_GREEN,"erwerben. Er kostet dich lediglich 1400$.");
    tut[playerid]=3;
    }
    public Tutorial2(playerid)
    {
    TogglePlayerControllable(playerid,0);
    SetPlayerFacingAngle(playerid,139.8221);
    SetPlayerVirtualWorld(playerid,2);
    SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,1506.5172,-1721.1539,23.2764);
    SetPlayerCameraPos(playerid,1506.5172,-1723.1539,30.2764);
    SetPlayerCameraLookAt(playerid,1486.3931,-1743.4344,13.5469);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"|______Stadthalle_____|");
    SendClientMessage(playerid,COLOR_GREEN,"Hier, in der Stadthalle, kannst du dir einen Job suchen,");
    SendClientMessage(playerid,COLOR_GREEN,"oder Arbeitslosengeld beantragen. Du wirst hier viele Leute treffen.");
    tut[playerid]=2;
    }
    public Tutorial(playerid)
    {
    TogglePlayerControllable(playerid,0);
    SetPlayerFacingAngle(playerid, 187.9970);
    SetPlayerVirtualWorld(playerid,2);
    SetPlayerInterior(playerid,0);
    SetPlayerCameraPos(playerid,1534.1870,-705.0476,116.7355);
    SetPlayerCameraLookAt(playerid, 1534.1870,-705.0476,116.7355);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"|______Tutorial_____|");
    SendClientMessage(playerid,COLOR_GREEN,"Herzlich Wilkommen auf dem Royal Streets Reallife Server !");
    SendClientMessage(playerid,COLOR_GREEN,"In dem Folgenden Tutorial wird dir der Server erklärt,");
    SendClientMessage(playerid,COLOR_GREEN,"lehn dich zurück und guck aufmerksam zu.");
    tut[playerid]=1;
    }
    Hoffe mir kann einer Helfen

  • 1.) Startest du überhaupt den Timer ? Ich glaube nicht, sonst würdest du nämlich mit der ersten Nachricht zugespammt werden.
    Lösung: Timer bei OnGameModeInit starten.
    2.) Du startest im Timer den Timer erneut und hast repeating immer auf true. Das heißt, du startest den Server der Timer läuft einmal, nach 5 Stunden stoppst du den Server und zu dem Zeitpunkt lief der Timer 200x.
    Lösung: Timer nur einmal starten (bei OnGameModeInit mit repeating true) und dann niergendswo mehr starten.
    3.) Nun zu deinem Problem, wenn der Timer läuft u.ä solltest du mit der ersten Tutorialnachricht alle x Sekunden zugespammt werden. Wieso ? Ganz einfach, du setzt in den einzelnen erstellten publics den Tutorialwert auf die gleiche Zahl anstatt ihn ein höhr zu setzen.
    Lösung: Bei Tutorial tut[playerid] nicht auf 1 sondern auf 2 setzten und bei Tutorial2 nicht auf 2 sondern auf 3 und so weiter.


    Wenn du die oberen Schritte befolgst sollte dein Code anschließend klappen, ansonsten hätte ich auch noch eine andere Lösung, da ich dein Weg mit einem Globalen Timer ziemlich 'scheiße' finde.

    Spoiler anzeigen
    forward Tutorial(playerid, index);
    public Tutorial(playerid, index){
    if(index == 1){
    TogglePlayerControllable(playerid,0);
    SetPlayerFacingAngle(playerid, 187.9970);
    SetPlayerVirtualWorld(playerid,2);
    SetPlayerInterior(playerid,0);
    SetPlayerCameraPos(playerid,1534.1870,-705.0476,116.7355);
    SetPlayerCameraLookAt(playerid, 1534.1870,-705.0476,116.7355);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"|______Tutorial_____|");
    SendClientMessage(playerid,COLOR_GREEN,"Herzlich Wilkommen auf dem Royal Streets Reallife Server !");
    SendClientMessage(playerid,COLOR_GREEN,"In dem Folgenden Tutorial wird dir der Server erklärt,");
    SendClientMessage(playerid,COLOR_GREEN,"lehn dich zurück und guck aufmerksam zu.");
    SetTimerEx("Tutorial", zeit, false, "ii", playerid, 2);
    }
    else if(index == 2){
    SetPlayerFacingAngle(playerid,139.8221);
    SetPlayerVirtualWorld(playerid,2);
    SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,1506.5172,-1721.1539,23.2764);
    SetPlayerCameraPos(playerid,1506.5172,-1723.1539,30.2764);
    SetPlayerCameraLookAt(playerid,1486.3931,-1743.4344,13.5469);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"|______Stadthalle_____|");
    SendClientMessage(playerid,COLOR_GREEN,"Hier, in der Stadthalle, kannst du dir einen Job suchen,");
    SendClientMessage(playerid,COLOR_GREEN,"oder Arbeitslosengeld beantragen. Du wirst hier viele Leute treffen.");
    SetTimerEx("Tutorial", zeit, false, "ii", playerid, 3);
    }
    else if(index == 3){
    SetPlayerFacingAngle(playerid,265.5638);
    SetPlayerPos(playerid,1526.6272,-1673.3956,13.3828);
    SetPlayerVirtualWorld(playerid,2);
    SetPlayerInterior(playerid,0);
    SetPlayerCameraPos(playerid,1526.6272,-1673.3956,13.3828);
    SetPlayerCameraLookAt(playerid,1542.2948,-1675.2501,13.5542);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"|______SAPD_____|");
    SendClientMessage(playerid,COLOR_GREEN,"Hier wirst du einen Beamten des SAPD antreffen. Er wird dir helfen");
    SendClientMessage(playerid,COLOR_GREEN,"und dich beschützen. Du kannst im Department deinen Führerschein ");
    SendClientMessage(playerid,COLOR_GREEN,"erwerben. Er kostet dich lediglich 1400$.");
    SetTimerEx("Tutorial", zeit, false, "ii", playerid, 4);
    }
    else if(index == 4){
    //...
    }
    return 1;
    }