[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Der Timer wird nicht so oft ausgeführt.

    Der Timer wurde (vor meiner Version) so oft ausgeführt, wie MAX_PLAYERS auch definiert war (ein kleiner Teil wurde ausgeführt, danach kam die Abfrage ob ein Spieler connected ist.)
    Jetzt sollte der Timer nicht mehr aufgerufen werden, wenn der Spieler (i) auch nicht connected ist.


    Die Anzahl in der samp.cfg hat auch nichts mit MAX_PLAYERS zu tun, das kannst du nur im Script ändern. Die Zahl in der samp.cfg ändert den Wert von GetMaxPlayers().

  • Habe da nochn Problem beim Timer, wie man vllt gesehen hat habe ich ein eigenes Todessystem, (Bei low HP ist man verletzt etc.), dies wird auch jede Sekunde abgefragt.


    Problem: Manchmal (nicht immer) kriege ich nach dem Login die Animation & Freeze & Zeit des verletzt seins, obwohl ich beim Spawn 75 HP habe, und beim Timer <= 14 HP angegeben ist,woran könnte das liegen, wie wirds vermieden?


    (Btw, Danke es klappt jetzt mit dem Timer, dass es jede Sekunde ausgeführt wird statt 4000000x in ner Sekunde)

    SA:MP in 2020?


  • Hai,
    ich empfehlen "SetTimerEx" für Spieler zu benutzen.
    Einfach bei "OnPlayerConnect" einfügen.

    Code
    SetTimerEx("SecTimer", 1000, true, "i", playerid);


    Anschließend noch


    Code
    forward SecTimer(playerid);
    public SecTimer(playerid)
    {
      //dein code
    
    
    }

    ersetzen.



    Da brauchst du die Schleife um alle Spieler auf dem Server auf zu nennen auch nicht mehr.




    Beispiel:



    Weiß nicht ob dies dein Problem löst aber ein Versuch ist es wert :D

  • Bleib bei einem Timer und fang so an:


    for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    // Dein Code hier
    }
    Versuch MAX_PLAYERS in Verbindung mit for() zu vermeiden, [wiki]GetPlayerPoolSize[/wiki] ist da deutlich besser geeignet, selbe gilt für MAX_VEHICLES & [wiki]GetVehiclePoolSize[/wiki]


    Das break; am Ende bricht es übrigens komplett ab, es würde also nur für den Spieler mit der niedrigsten ID funktionieren, also solltest du das auch rausnehmen.


    @N1co


    Zitat

    The use of many timers will result in increased memory/cpu usage.

    Jetzt stell dir mal vor es befinden sich 128 Spieler auf dem Server, und für jeden Spieler wird ein Timer gestartet. Glaubst du dass das eine geringe auswirkung auf die Leistung hat?
    Du musst außerdem bedenken dass das Script nur in einem Thread läuft.

    4 Mal editiert, zuletzt von dnlk ()

  • Bleib bei einem Timer und fang so an:


    for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++){if(!IsPlayerConnected(i)) continue;// Dein Code hier}


    Das break; am Ende bricht es übrigens komplett ab, es würde also nur für den Spieler mit der niedrigsten ID funktionieren, also solltest du das auch rausnehmen.

    Was genau sit das für ein Code bzw was ist GetPlayerPoolSize?

    SA:MP in 2020?

  • Ich habe das erst leztens in einem Video hier aus dem Forum gesehen.
    Da hat jemand draufgeschossen und die ist stehen geblieben


    Ich habe noch eine Frage unswa habe ich mein Script auf ein Server doch dort Funktioniert das Script nicht richtig.
    1 Fehler
    Wenn ich mein Passwort eingebe wird es mir als Falsch angezeigt ?


    2 Fehler
    Wenn ich mich Registriere kann ich nichtmehr auf Weiter Klicken


    Wenn ich das Script auf mein Pc abspiele geht es ?

  • Ich habe noch eine Frage unswa habe ich mein Script auf ein Server doch dort Funktioniert das Script nicht richtig.
    1 Fehler
    Wenn ich mein Passwort eingebe wird es mir als Falsch angezeigt ?


    2 Fehler
    Wenn ich mich Registriere kann ich nichtmehr auf Weiter Klicken


    Wenn ich das Script auf mein Pc abspiele geht es ?