Habe einen "Timer" 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
  • Guten Tag,


    also wie in der Überschrift zu lesen habe ich einen "Timer" Problem. Besser gesagt einen Timer- und Variablenproblem, denn dieses Problem hat mit beides zu tun. Also ich möchte mir jetzt, nachdem sich der Spieler registriert hat, ein Tutorial aufrufen, dieser zeigt die wichtigsten Orte an. (z.B. Ammunation, BSN, PD, Stadthalle usw.) Aber als ich das gemacht habe und durch eine Variable überprüft habe, bekam ich immer dasselbe Problem.
    Mehr Info steht auch im PWN-Code drin.







    forward TutorialTimer(playerid);
    public TutorialTimer(playerid)
    {
    if(Tutorial[playerid] == 1) //Wenn ich diese überprüfung mache, zeigt bei mir auch Tutorial[playerid] 2 auch sofort an, also die Nachricht von Tutorial[playerid] 2. Tutorial[playerid] habe ich ganz oben im Script definiert als new Tutorial[MAX_PLAYERS];
    {
    //Beim Register-Public setze ich das Tutorial auf eins, da sonst ich eh diesen Tutorial nicht sehe :D
    ClearChat(playerid, 500);
    SendClientMessage(playerid,Gelb,"*** Tutorial: Stadthalle ***");
    SendClientMessage(playerid,Weiß,"Dies hier ist die Stadthalle. Hier kannst du dir einen Personalausweis beantragen.");
    SendClientMessage(playerid,Weiß,"Ebenso kannst du hier einen Job suchen und deinen Arbeitslosengeld beantragen.");
    SendClientMessage(playerid,Weiß,"Durch die Stadthalle kannst du auch in den Bundestag kommen!");
    Tutorial[playerid] = 2;
    SetTimerEx("TutorialTimer",20000,true,"i",playerid);
    }
    if(Tutorial[playerid] == 2)
    {
    ClearChat(playerid, 500);
    SendClientMessage(playerid,Weiß,"SendClientMessage(playerid,Weiß,"");");
    }
    return 1;
    }

  • forward TutorialTimer(playerid);public TutorialTimer(playerid)
    {
    if(Tutorial[playerid] == 1) //Wenn ich diese überprüfung mache, zeigt bei mir auch Tutorial[playerid] 2 auch sofort an, also die Nachricht von Tutorial[playerid] 2. Tutorial[playerid] habe ich ganz oben im Script definiert als new Tutorial[MAX_PLAYERS];
    {
    //Beim Register-Public setze ich das Tutorial auf eins, da sonst ich eh diesen Tutorial nicht sehe :D
    ClearChat(playerid, 500);
    SendClientMessage(playerid,Gelb,"*** Tutorial: Stadthalle ***");
    SendClientMessage(playerid,Weiß,"Dies hier ist die Stadthalle. Hier kannst du dir einen Personalausweis beantragen.");
    SendClientMessage(playerid,Weiß,"Ebenso kannst du hier einen Job suchen und deinen Arbeitslosengeld beantragen.");
    SendClientMessage(playerid,Weiß,"Durch die Stadthalle kannst du auch in den Bundestag kommen!");
    Tutorial[playerid] = 2;
    SetTimerEx("TutorialTimer",20000,true,"i",playerid);
    }
    if(Tutorial[playerid] == 2)
    {
    ClearChat(playerid, 500);
    SendClientMessage(playerid,Weiß,"");
    }
    return 1;
    }




    Ich hoffe ich konnte Helfen ;)

  • Danke schonmal, aber ich kann mir nicht vorstellen, dass du irgendwie mir helfen konntest. Also ich weiß nicht, was genau du verändert hast, weil das nicht deutlich ist.

    Dei Tutorial 2 mit dem SendClientMessage hast du es untereinender Geschrieben oder wie? Weil ich kann mir nicht vorstellen das es so stimmen kann:


    SendClientMessage(playerid,Weiß,"SendClientMessage(playerid,Weiß,"");");


    Ich bitte schonmal um verzeihung da ich noch Selber ein Scripting Noob bin

  • Dei Tutorial 2 mit dem SendClientMessage hast du es untereinender Geschrieben oder wie? Weil ich kann mir nicht vorstellen das es so stimmen kann:


    SendClientMessage(playerid,Weiß,"SendClientMessage(playerid,Weiß,"");");


    Ich bitte schonmal um verzeihung da ich noch Selber ein Scripting Noob bin

    Das SendClientMessage habe ich extra zweifach hintereinander geschrieben, da ich gucken wollte, ob der TutorialTimer auch "buglos" funktioniert, aber anscheinend funktioniert er nicht "buglos"

  • Das ist klar das die Maschine in den 2ten Code sofort reingeht, da ein Code immer von oben nach unten abgearbeitet wird und du ja eine Klammer davor eine Variable höher gesetzt hast und somit die zweite Bedingung erfüllt ist. Was du brauchst ist, dass die Funktion nach der ersten Bedienung rausgeht also return true; (oder return 1;)

    forward TutorialTimer(playerid);public TutorialTimer(playerid)
    {
    if(Tutorial[playerid] == 1) //Wenn ich diese überprüfung mache, zeigt bei mir auch Tutorial[playerid] 2 auch sofort an, also die Nachricht von Tutorial[playerid] 2. Tutorial[playerid] habe ich ganz oben im Script definiert als new Tutorial[MAX_PLAYERS];
    {
    //Beim Register-Public setze ich das Tutorial auf eins, da sonst ich eh diesen Tutorial nicht sehe :D
    ClearChat(playerid, 500);
    SendClientMessage(playerid,Gelb,"*** Tutorial: Stadthalle ***");
    SendClientMessage(playerid,Weiß,"Dies hier ist die Stadthalle. Hier kannst du dir einen Personalausweis beantragen.");
    SendClientMessage(playerid,Weiß,"Ebenso kannst du hier einen Job suchen und deinen Arbeitslosengeld beantragen.");
    SendClientMessage(playerid,Weiß,"Durch die Stadthalle kannst du auch in den Bundestag kommen!");
    Tutorial[playerid] = 2;
    SetTimerEx("TutorialTimer",20000,true,"i",playerid);
    return 1;
    }
    if(Tutorial[playerid] == 2)
    {
    ClearChat(playerid, 500);
    SendClientMessage(playerid,Weiß,"");
    }
    return 1;
    }

  • Och wie niedlich... Spaß beiseite.

    if(Tutorial[playerid] == 1) // Wenn == 1
    {
    Tutorial[playerid] = 2; // Setzt die Variable auf 2
    }
    if(Tutorial[playerid] == 2) // Fragt ab ob die Variable 2 ist und sie ist es
    {


    }


    Fehlerlösung:

    if(Tutorial[playerid] == 1) // Wenn == 1
    {
    Tutorial[playerid] = 2; // Setzt die Variable auf 2
    }
    else if(Tutorial[playerid] == 2) // Fragt ab ob die Variable 2 ist aber die Abfrage oben war richtig also wird alles in den Klammer garnicht erst ausgeführt
    {


    }


    Gruß, Piet