Trotz kleinem Timer der ganze Server am laggen?

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
  • Hey Com


    Seit dem ich einen Timer erstellt habe habe ich folgende Probleme:


    Objekte brauchen 20-30 Mininuten um sich aufzubauen


    An bestimmten Stellen laggt es ungemein:


    Es lieht an diesen 2 Timern:


    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(BizBsn[i][pBesetzt] == 0)
    {
    new stringbsn[128];
    format(stringbsn,sizeof(stringbsn),"Eigentum des Staates!\nProdukte auf Lager:%d\n /fill um zu tanken!",BenzinBsn);
    TankeBSN = Create3DTextLabel(stringbsn, WHITE,1005.4361,-940.8749,41.7509,40.0, 0, 0);
    SetTimerEx("Bsn0",1,5000,"d");
    }
    else if(BizBsn[i][pBesetzt] == 1)
    {
    new stringbsn[128];
    format(stringbsn,sizeof(stringbsn),"Besitzer:%s\nProdukte auf Lager:%d\n /fill um zu tanken!",BizBsn[i][pBesitzer],BenzinBsn);
    TankeBSN = Create3DTextLabel(stringbsn, WHITE,1005.4361,-940.8749,41.7509,40.0, 0, 0);
    SetTimerEx("Bsn1",1,5000,"d");
    }
    }


    Die Publics dazu


    forward Bsn0(playerid);
    public Bsn0(playerid)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(BizBsn[i][pBesetzt] == 0)
    {
    new stringbsn[128];
    format(stringbsn,sizeof(stringbsn),"Eigentum des Staates!\nProdukte auf Lager:%d\n /fill um zu tanken!",BenzinBsn);
    Update3DTextLabelText(TankeBSN, WHITE, stringbsn);
    }
    }
    }
    forward Bsn1(playerid);
    public Bsn1(playerid)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(BizBsn[i][pBesetzt] == 1)
    {
    new stringbsn[128];
    format(stringbsn,sizeof(stringbsn),"Besitzer:%s\nProdukte auf Lager:%d\n /fill um zu tanken!",BizBsn[i][pBesitzer],BenzinBsn);
    Update3DTextLabelText(TankeBSN, WHITE, stringbsn);
    }
    }
    }


    Hoffe ihr könnt nochmals helfen :D


    MfG James

  • Kein Wunder.


    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(BizBsn[i][pBesetzt] == 0)
    {

    Rein von der Variablenbezeichnung BizBsn halte ich die playerid / i als Index für unwahrscheinlich.
    TankeBSN = Create3DTextLabel(stringbsn, WHITE,1005.4361,-940.8749,41.7509,40.0, 0, 0);
    SetTimerEx("Bsn0",1,5000,"d");

    Du erstellst immer den 3DText neu. Soll das so sein ?
    Der Timer hat ein Interval von 1ms ( !!! ) und wiederholt sich. Das Gleiche gilt für den Anderen Zweig .


    forward Bsn0(playerid);
    public Bsn0(playerid)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(BizBsn[i][pBesetzt] == 0)
    {
    new stringbsn[128];
    format(stringbsn,sizeof(stringbsn),"Eigentum des Staates!\nProdukte auf Lager:%d\n /fill um zu tanken!",BenzinBsn);
    Update3DTextLabelText(TankeBSN, WHITE, stringbsn);
    }
    }
    }
    Hier das Gleiche "Rein von der Variablenbezeichnung BizBsn halte ich die playerid / i als Index für unwahrscheinlich." . Wozu übergibst du überhaupt die playerid ? Du nutzt sie sowieso nie.


    Was also falsch ist.
    Du rufst im ersten Teil die Funktionen bsn<X> für jedes BizBsn indem du einen Timer mit dem Interval 1ms erstellst und diesen sich wiederholen lässt. In der Funktion bsn<X> wird allerdings wieder jedes BizBsn verarbeitet. Du machst es also doppelt. Auch nutzt du nur 1 Variable um die 3DTexte von allen BizBsn festzuhalten ? Das kann gar nicht funktionieren. Du wirst immer nur das zuletzt erstellte 3DText bearbeiten können,da du dort nur die ID kennst.


  • Sry aber ich versteh das nicht so ganz was soll ich da jetzt drann ändern?
    Mfg James