Probleme mit Timern...

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
  • Hi,


    also ich habe Timer erstellt die alle 10 Minuten eine SendClientMessage schicken. D.h. nach den ersten 10 Minuten steht da -> "Du hast jetzt 10 Minuten gespielt". Nach 20 Minuten -> "Du hast jetzt 20 Minuten gespielt".
    Jetzt habe ich folgendes Problem: Jemand kommt auf meinen Server und spielt 15 Minuten. Nach 20 Minuten soll ja der Text erscheinen. Zwischen den 15 und 20 Minuten komm noch jemand auf den Server. Nach 20 Min erscheint
    dann der Text "Du hast jetzt 20 Minuten gespielt" ... für beide Spieler ... Das ist das Problem. Obwohl der andere Spieler erst 5 Min online ist sieht er schon den Text von 20 Minuten. Diese Timer mit den Minuten sollen nur für den jeweiligen Spieler erscheinen und nicht für alle. Wie macht man das?


    Gruß Tim

  • forward mins();
    public mins()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    SendClientMessage(i,ROT,"{C30000}SERVER: Du hast jetzt 10 Minuten gespielt!");
    }
    }

  • forward mins(playerid);


    // Beides bei OnPlayerConnect
    SetTimerEx("mins", 600000, true, "i", playerid); // Das sind 10 Minuten
    SetPVarInt(playerid, "playtime", 0)


    public mins(playerid)
    {
    new msg[70];
    SetPVarInt(playerid, "playtime", GetPVarInt(playerid, "playtime")+10);
    format(msg, sizeof(msg), "{C30000}SERVER: Du hast jetzt %i Minuten gespielt!", GetPVarInt(playerid, "playtime"));
    SendClientMessage(playerid,ROT,msg);
    return 1;
    }
    Das was du gemacht hast, ist ja auch eigentlich Mumpitz. Du machst eine Schleife die alle Spieler abläuft und sendest dann jedem 'ne Nachricht. Hättest du auch gleich SendClientMessageToAll nehmen können ;)
    Dein SetTimer durch mein SetTimerEx ersetzen und den Rest auch abändern, dann passts.


    edit: Hab jetzt noch Vincents Vorschlag eingebaut^^

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Padarom


    error 017: undefined symbol "playerid"


    Zeile:


    SetTimerEx("mins", 600000, false, "i", playerid);


    ? :D

  • Startest du den Timer bei OnGameModeInit? Wenn ja, verschiebe ihn zu OnPlayerConnect.
    Und guck dir meine Bearbeitung an, dann bekommt man alle 10 Minuten 'ne Nachricht mit der jeweiligen Spielzeit ;)

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger