Timer fail? Oder was anderes?

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 Abend zusammen,


    ich habe einen kleinen Fehler bei mir entdeckt, komme aber leider nicht auf die Lösung.



    if(Spieler[i][pCurrentTutorial] == 1)
    {
    if(Spieler[i][pFahrlehrerWait] > 0)
    {
    Spieler[i][pFahrlehrerWait] --;
    if(Spieler[i][pFahrlehrerWait] == 30)
    {
    SendClientMessage(i, COLOR_YELLOW, ">> "COLOR_HEX_WHITE"Auf unserem Server wird erwartet, dass du auf der rechten Straßenseite fährst.");
    }
    else if(Spieler[i][pFahrlehrerWait] == 24)
    {
    SendClientMessage(i, COLOR_YELLOW, ">> "COLOR_HEX_WHITE"Halte dich an die Begrenzung von "COLOR_HEX_YELLOW"80km/h"COLOR_HEX_WHITE" innerorts. Außerorts ("COLOR_HEX_YELLOW"Autobahnen, Landstraßen, .."COLOR_HEX_WHITE") gibt es keine Tempolimits.");
    }
    else if(Spieler[i][pFahrlehrerWait] == 18)
    {
    SendClientMessage(i, COLOR_YELLOW, ">> "COLOR_HEX_WHITE"Wenn du einen Beamten im Einsatz siehst, fahre bitte an den Straßenrand!");
    }
    else if(Spieler[i][pFahrlehrerWait] == 12)
    {
    SendClientMessage(i, COLOR_YELLOW, ">> "COLOR_HEX_WHITE"Wenn es zwischen "COLOR_HEX_YELLOW"20 "COLOR_HEX_WHITE"und"COLOR_HEX_YELLOW" 7"COLOR_HEX_WHITE" Uhr ist, schalte bitte das Licht an. ("COLOR_HEX_YELLOW"/licht"COLOR_HEX_WHITE")");
    }
    else if(Spieler[i][pFahrlehrerWait] == 6)
    {
    SendClientMessage(i, COLOR_YELLOW, ">> "COLOR_HEX_WHITE"Den Motor schaltest du mit '"COLOR_HEX_YELLOW"/motor"COLOR_HEX_WHITE"' an.");
    }
    else if(Spieler[i][pFahrlehrerWait] == 1)
    {
    SendClientMessage(i, COLOR_YELLOW, ">> "COLOR_HEX_WHITE"Viel Glück wünscht dir die "COLOR_HEX_YELLOW"SA Fahrschule"COLOR_HEX_WHITE".");
    Spieler[i][pFahrlehrerWait] = 0;
    UnfreezePlayer(i);
    }
    }
    }


    Alle Nachrichten bis auf

    SendClientMessage(i, COLOR_YELLOW, ">> "COLOR_HEX_WHITE"Halte dich an die Begrenzung von "COLOR_HEX_YELLOW"80km/h"COLOR_HEX_WHITE" innerorts. Außerorts ("COLOR_HEX_YELLOW"Autobahnen, Landstraßen, .."COLOR_HEX_WHITE") gibt es keine Tempolimits.");


    Wird abgesendet.
    3 Mal habe ich es getestet, 0x kam es an.
    Ich wüsste nicht, woran es liegen könnte.


    Kann da evtl. jemand helfen? Danke :)

  • Lass dir doch einfach die Werte ausgeben:
    Spieler[i][pFahrlehrerWait] --;


    zu:
    Spieler[i][pFahrlehrerWait] --;
    printf("pFahrlehrerWait(%d) = %d". i, Spieler[i][pFahrlehrerWait]);


    Und vor die jeweiligen Nachrichten:
    print("Nachricht (30 sek);
    Und so weiter (24, 18, ...)




    Was wird geprintet?


  • Spieler[i][pFahrlehrerWait] --;
    if(Spieler[i][pFahrlehrerWait] == 30)
    {
    printf("Spieler[i][pFahrlehrerWait] == 30: Wurde abgefragt!");
    SendClientMessage(i, COLOR_YELLOW, ">> "COLOR_HEX_WHITE"Auf unserem Server wird erwartet, dass du auf der rechten Straßenseite fährst.");
    }
    else if(Spieler[i][pFahrlehrerWait] == 24)
    {
    printf("Spieler[i][pFahrlehrerWait] == 24: Wurde abgefragt!");
    SendClientMessage(i, COLOR_YELLOW, ">> "COLOR_HEX_WHITE"Halte dich an die Begrenzung von "COLOR_HEX_YELLOW"80km/h"COLOR_HEX_WHITE" innerorts. Außerorts ("COLOR_HEX_YELLOW"Autobahnen, Landstraßen, .."COLOR_HEX_WHITE") gibt es keine Tempolimits.");
    }
    else if(Spieler[i][pFahrlehrerWait] == 18)
    {
    printf("Spieler[i][pFahrlehrerWait] == 18: Wurde abgefragt!");
    SendClientMessage(i, COLOR_YELLOW, ">> "COLOR_HEX_WHITE"Wenn du einen Beamten im Einsatz siehst, fahre bitte an den Straßenrand!");
    }
    else if(Spieler[i][pFahrlehrerWait] == 12)
    {
    printf("Spieler[i][pFahrlehrerWait] == 12: Wurde abgefragt!");
    SendClientMessage(i, COLOR_YELLOW, ">> "COLOR_HEX_WHITE"Wenn es zwischen "COLOR_HEX_YELLOW"20 "COLOR_HEX_WHITE"und"COLOR_HEX_YELLOW" 7"COLOR_HEX_WHITE" Uhr ist, schalte bitte das Licht an. ("COLOR_HEX_YELLOW"/licht"COLOR_HEX_WHITE")");
    }
    else if(Spieler[i][pFahrlehrerWait] == 6)
    {
    printf("Spieler[i][pFahrlehrerWait] == 6: Wurde abgefragt!");
    SendClientMessage(i, COLOR_YELLOW, ">> "COLOR_HEX_WHITE"Den Motor schaltest du mit '"COLOR_HEX_YELLOW"/motor"COLOR_HEX_WHITE"' an.");
    }
    else if(Spieler[i][pFahrlehrerWait] == 1)
    {
    printf("Spieler[i][pFahrlehrerWait] == 1: Wurde abgefragt!");
    SendClientMessage(i, COLOR_YELLOW, ">> "COLOR_HEX_WHITE"Viel Glück wünscht dir die "COLOR_HEX_YELLOW"SA Fahrschule"COLOR_HEX_WHITE".");
    Spieler[i][pFahrlehrerWait] = 0;
    UnfreezePlayer(i);
    }


    Ergebnis:

    Code
    [20:12:34] Spieler[i][pFahrlehrerWait] == 30: Wurde abgefragt!
    [20:12:41] Spieler[i][pFahrlehrerWait] == 24: Wurde abgefragt!
    [20:12:48] Spieler[i][pFahrlehrerWait] == 18: Wurde abgefragt!
    [20:12:54] Spieler[i][pFahrlehrerWait] == 12: Wurde abgefragt!
    [20:13:01] Spieler[i][pFahrlehrerWait] == 6: Wurde abgefragt!
    [20:13:06] Spieler[i][pFahrlehrerWait] == 1: Wurde abgefragt!


    Hmm, seltsam ...

  • Der Text ist zu lang.
    Wenn der Text länger als 144 Zeichen ist, wird die Nachricht nicht an den Client gesendet. Sieht dann immer so aus, als würde der Funktionsaufruf zu SendClientMessage(ToAll) nicht stattfinden. Bei dir komme ich auf 160 Zeichen. Das Color-Embedding zählt ebenfalls zu den 144 Zeichen ( bzw 160 ).


    //Edit:

    Zitat

    The function executed successfully. Success is reported when the string is over 144 characters, but the message won't be sent.


    http://wiki.sa-mp.com/wiki/SendClientMessage