Payday? Wie geht's am besten?

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,
    ich frage hier mal rum wie ich am besten einen Payday initialisiere. (60 Minuten Intervall)


    Ich hatte so die Idee jede Sekunde einen Timer zu wiederholen namens PaydayInit wo er jede Sekunde 1 Sekunde auf des Spielers Profil zurechnet, bei 60 (einer Minute) wird der Wert PayMinute um 1 erhöht und falls man im paydayInit timer 60 PayMinutes erreicht soll man so seinen Payday erhalten. Wollte keinen Timer im 60 Sekunden Intervall da man sonst z.B. jede 50. Sekunde online kommt und dann für 10 Sekunden onlinezeit 1 Minute zugerechnet bekommt. (OnGameModeInit)


    So stellt sich mir die Frage, gibt es bessere Methoden? Verlangt meine nicht zu viel Speicher/Leistung?


    Danke im Voraus!

    SA:MP in 2020?

  • Minutentimer reicht vollkommen. Das belastet den Server nur unnötig, jede Sekunde durch alle Spieler zu iterieren.
    Einfach eine PVar von 0 auf 60 für jeden Spieler inkrementieren. Wenn PVar = 60, dann Payday auszahlen und PVar zurück auf 0 setzen lassen.
    Beim Logout dann die PVar in der Datenbank speichern und beim Login wieder laden lassen.

  • Wollte keinen Timer im 60 Sekunden Intervall da man sonst z.B. jede 50. Sekunde online kommt und dann für 10 Sekunden onlinezeit 1 Minute zugerechnet bekommt.

    Ah, dies ist eher mein Problemfeld.


    Bei einer Sekunde ist es mir egal ob er bei der 900. Millisekunde einloggt


    *Allgemein war mein Interesse darin ob es zu Laggs führt wenn man zu oft solcher Funktionen macht im Sekunden Intervall, Minuten Intervall ist ja 60x langsamer

    SA:MP in 2020?

  • Warum arbeitest du nicht einfach mit SetTimerEx wenn der Spieler connected? Wäre doch viel einfacher.


  • Aber sobald der erste Spieler connected läuft der doch sowieso ungleichmäßig oder nicht?


    Szenario:


    Spieler 1 connected
    50 Sekunden später connected Spieler 2 und kriegt nach 10 Sekunden +1 Minute


    * Was ist ein Playertimer?

    SA:MP in 2020?

  • Aber sobald der erste Spieler connected läuft der doch sowieso ungleichmäßig oder nicht?


    Szenario:


    Spieler 1 connected
    50 Sekunden später connected Spieler 2 und kriegt nach 10 Sekunden +1 Minute


    Nein eben nicht, da jeder Spieler seinen eigenen Timer bekommt, der punktgenau so läuft, wie er für den jeweiligen Spieler soll.


    /e: Was ein PlayerTimer ist .. schau meinen Code oben an, dann siehst du's :D

  • Es ist extrem ressourcenfressend wenn du jedes mal ein Timer erstellt sobald ein Spieler connected!

  • Es ist extrem ressourcenfressend wenn du jedes mal ein Timer erstellt sobald ein Spieler connected!


    Achso.. jede Sekunde eine for-Schleife auszuführen, ist da viel besser? :P

  • Achso.. jede Sekunde eine for-Schleife auszuführen, ist da viel besser? :P

    Ich glaube, dass Du den Fehler selber merkst. Hier fehlt die Schleife^^


    Ein extra Timer für den Spieler halte ich auch für die beste Lösung. Eine Schleife ist doch schon unperfomanter.

    Chief Technology Officer (CTO)


    Interesse an folgenden Domains?

    fivemp.de - planet-zoo.de

    Jetzt anschreiben :)

  • Ich glaube, dass Du den Fehler selber merkst. Hier fehlt die Schleife^^
    Ein extra Timer für den Spieler halte ich auch für die beste Lösung. Eine Schleife ist doch schon unperfomanter.


    Jap, zumal bei es bei einer Schleife auch unnötige Durchläufe gibt.
    z.B. Bots, oder Spieler die bspw nicht eingeloggt sind (falls der Timer erst nach dem Login startet), etc.

  • Hey,
    Naja, die Schleife läuft dann ja nicht komplett durch, weil du ja abfragen kannst ob es ein Spieler ist oder ein NPC oder dergleichen.


    Dazu hat jedes Script doch eh einen Tim er der jede Sekunde läuft meistens für das antiCheat oder sonst was da kann es dann einfach rein.


    Ja, 100 Timer die jede Sekunde laufen sind belastend, aber einer der jede Sekunde läuft und dann mehr abfragt ist nicht sooo schlimm.