Was ist Resourcensparender? bzw ist hier überhaupt ein unterschied?

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
  • Wie der titel schon sagt, was ist schneller bzw resourcensparender?


    Methode 1:


    new TachoTimerID[MAX_PLAYERS];
    forward TachoTimer(playerid);
    Public TachoTimer(playerid)
    {
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
    KillTimer(TachoTimerID[playerid]);
    format(str, sizeof(str), "~n~~n~~n~~n~~n~~n~Geschwindigkeit: %i Km/h", GetPlayerSpeed(playerid, true));
    GameTextForPlayer(playerid, str, 1000, 3);
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    TachTimerID[playerid] = SetTimerEx("TachoTimer", 1000, 1, "i", playerid);
    }
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    KillTimer(TachoTimerID[playerid]);
    }



    Methode 2:


    Public MainTimer() // Interval: 1000
    {
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
    if(!IsPlayerConnected || PlayerInfo[playerid][pIsLoggedIn] == 0 || IsPlayerNPC(playerid)) continue;
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    format(str, sizeof(str), "~n~~n~~n~~n~~n~~n~Geschwindigkeit: %i Km/h", GetPlayerSpeed(playerid, true));
    GameTextForPlayer(playerid, str, 1000, 3);
    }
    }
    return 1;
    }


    Beide Funktionen laufen auf das gleiche aus, erklärung:


    Methode 1, der Timer wird für jeden Spieler einzel aufgerufen sobald er in einem Fahrzeug ist, hier wird keine for schleife benötigt.
    Methode 2, Ein Timer, wo eine for schleife für jeden Spieler läuft und hier wird gecheckt ob er in einem Fahrzeug ist oder nicht.


    Welche methode ist jetzt eigentlich besser? ich zerbrech mir schon den ganzen abend den kopf :thumbdown:


    Man beachte folgendes -->
    Methode 1: Führt den Timer für jeden Spieler in einer Sekunde aus der in einem Fahrzeug sitzt, zeigt dann die Geschwindigkeit an..
    Methode 2: Führt den Timer jede sekunde mit einer for schleife aus und checkt ob der Spieler in einem Fahrzeug ist oder nicht, zeigt dann die Geschwindigkeit an.


    Edit: Pseudo Methode 1 editiert.
    Edit 2: Text hinzugefügt

    SA-MP Scripting Hilfe/Erklärungen bekommt ihr auf der SA-MP Wikipedia

    2 Mal editiert, zuletzt von .#~Momo ()

  • Sehe es so ... es ist immer die Abfrage da ... :)
    aber bei 200 Usern, sagen wir mal 100 davon fahren ... Wären ca. 100 Timer ...


    würde lieber ein Globen nehmen, wo du immer abfragt ob Connected und State^^

  • Sehe es so ... es ist immer die Abfrage da ... :)
    aber bei 200 Usern, sagen wir mal 100 davon fahren ... Wären ca. 100 Timer ...


    würde lieber ein Globen nehmen, wo du immer abfragt ob Connected und State^^


    Du verstehst da was Falsch, der Führt den Timer 100 mal aus, es werden keine 100 Timer erstellt ^^


    Die Praxis ist die gleiche wie im MainTimer

  • wenn du es für jeden spieler einen Timer machst reicht eigentlich ein Intervall von 800-1110 ms. Daß beste ist, du könntest mehrere Timer zusammenfügen