Server laggt

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
  • Ich hab ein kleines Problem,
    ich scripte jetzt mitlerweile über 2 Jahre, und hatte schon die verschiedensten Reallife script auf meinem PC,
    selbst aufwändigere Scripts funktionierten wenn ich sie auf meinem PC mit dem Server gestartet habe einwandfrei,
    doch jetzt hab ich begonnen einen Selfmade zu scripten, hab aber erst rund 2000 Zeilen im Script,
    und hab keine Timer, oda sonst irgendwas das dauernd wiederholt wird, dass das Gamemode langsamer machen könnte drinnen,
    trotzdem laggt der Server so stark, dass wenn ich ihn starte, und nur ich alleine drauf connecte,
    ich genau einmal irgendetwas machen kann, und dann der ganze Server still steht, ich kann zwar noch normal in vehicles einsteigen usw..
    aber wenn ich disconnecte oda einen Befehl eingebe, passiert rein gar nichts, wenn ich disconnecte wird es in der Server log nicht angezeigt,
    das ich Disconnected habe, wenn ich einen Befehl eingebe passiert überhaupt nichts. Woran kann das liegen? Ich hab keine Filterscript oda dergleichen drinnen..
    Hier meine server.cfg Datei


    Edit:
    Hab auch schon versucht den Server über meinen PC laufen lassen, und am Laptop drauf gehn, laggt weniger aber mit der Zeit geht dann auch gar nichts mehr..

    Einmal editiert, zuletzt von Black_Game ()

  • Uhr hab ich keine Eingebaut...
    Und die einzigen for Abfragen die ich drinnen hab sind die hier: for(new i = 0; i < MAX_PLAYERS; i++)
    da hab ich auch immer: if(IsPlayerConnected(i)) rein gemacht, damit es noch sparender ist..
    hab auch keine while schleifen oder dergleichen..

  • Also bei mir lags damals an einer do while Schleife. Da es aber bei dir nichts dergleichen gibt, würde ich dir raten entweder rückwerts zu arbeiten sprich du kommentierst immer wieder etwas aus, und schaust obs dann funktioniert (zuerst im großben Bereich, z.B. du kommentierst 80% der Funktionen aus, danach 70%, 60,50 etc. bis der Fehler auftaucht und du dann gezielter etwas auskommentierst). Oder du schreibst das Script nochmal neu (copy und paste vom alten Script) und schaust, ab wann es laggt.

  • ´währ ein guter Vorschlag, ich hab das Script in der zwischenzeit 5 mal genau durchgenommen, und hab nix gefunden woran es laggen könnte....


    Edit:
    Ich versuch jetzt das mit dem Ausklammern..


    Edit2:
    Ich hab das jetzt bisschen durchgecheckt, und paar unnötige Sachen ausgeklammert..
    Am meisten laggt es bei dem /help Befehl...
    Wie mach ich den Besser, er soll genau die gleiche Funktion haben, und möglichst leicht zu bearbeiten sein...

    dcmd_help(playerid,params[])
    {
    #pragma unused params
    new string[100], fraktion[300], string2[1000], admin1[150], admin2[150], admin3[150], admin4[150], admin5[300], premium1[150], premium2[150];
    format(string,sizeof(string),"Allgemeine Commands: \n/help /me /stats\n\nVehicle Commands: \n \n\n");
    if(Spieler[playerid][Fraktion] == 0)//Zivi
    {
    format(fraktion,sizeof(fraktion),"Zivilisten Commands: \nNoch keine Commands\n\n"); //Keine Commands für diese Fraktion
    }
    if(Spieler[playerid][Fraktion] == 1 || Spieler[playerid][Fraktion] == 2) //LSPD | Army
    {
    format(fraktion,sizeof(fraktion),"Polizei Commands: \nNoch keine Commands\n\n");
    }
    if(Spieler[playerid][Fraktion] == 3) //Medic
    {
    format(fraktion,sizeof(fraktion),"Medic Commands: \nNoch keine Commands\n\n");
    }
    if(Spieler[playerid][Fraktion] == 4) //Hitman
    {
    format(fraktion,sizeof(fraktion),"Hitman Commands: \nNoch keine Commands\n\n");
    }
    if(Spieler[playerid][Fraktion] == 5) //La Cosa Nostra
    {
    format(fraktion,sizeof(fraktion),"La Cosa Nostra Commands: \nNoch keine Commands\n\n");
    }
    if(Spieler[playerid][Fraktion] == 6) //Präsident
    {
    format(fraktion,sizeof(fraktion),"Präsident Commands: \nNoch keine Commands\n\n");
    }
    if(Spieler[playerid][Fraktion] == 7) //Groove Street
    {
    format(fraktion,sizeof(fraktion),"Groove Commands: \nNoch keine Commands\n\n");
    }
    if(Spieler[playerid][Fraktion] == 8) //The Ballas
    {
    format(fraktion,sizeof(fraktion),"Ballas Commands: \nNoch keine Commands\n\n");
    }
    if(Spieler[playerid][AdminLevel] >= 1) //Admin Level 1
    {
    format(admin1,sizeof(admin1),"Admin Level 1 Commands: \n/kick --> Kicke einen Spieler vom Server \n/ban --> Banne einen Spieler vom Server\n\n");
    }
    if(Spieler[playerid][AdminLevel] >= 2) //Admin Level 2
    {
    format(admin2,sizeof(admin2),"Admin Level 2 Commands: \nNoch keine Commands\n\n");
    }
    if(Spieler[playerid][AdminLevel] >= 3) //Admin Level 3
    {
    format(admin3,sizeof(admin3),"Admin Level 3 Commands: \n/veh --> Erstelle ein Vehicle \n/delveh --> Lösche ein Fahrzeug (bitte nur zuvor erstellte löschen)\n\n");
    }
    if(Spieler[playerid][AdminLevel] >= 4) //Admin Level 4
    {
    format(admin4,sizeof(admin4),"Admin Level 4 Commands: \nNoch keine Commands\n\n");
    }
    if(Spieler[playerid][AdminLevel] >= 5) //Admin Level 5
    {
    format(admin5,sizeof(admin5),"Admin Level 5 Commands: \n/makeleader --> Mache einen Spieler zum Leader einer Fraktion\n/makeadmin --> Mache einen Spieler zum Administrator\n\n");
    }
    if(Spieler[playerid][Premium] >= 1) //Premium Level 1
    {
    format(premium1,sizeof(premium1),"Premium Level 1 Commands: \nNoch keine Commands\n\n");
    }
    if(Spieler[playerid][Premium] >= 2) //Premium Level 2
    {
    format(premium2,sizeof(premium2),"Premium Level 2 Commands: \nNoch keine Commands\n\n");
    }
    format(string2,sizeof(string2),"%s%s%s%s%s%s%s%s%s",string,fraktion,admin1,admin2,admin3,admin4,admin5,premium1,premium2);
    ShowPlayerDialog(playerid,DIALOG_HELP,DIALOG_STYLE_MSGBOX,"Help",string2," "," ");
    return 1;
    }

    2 Mal editiert, zuletzt von Black_Game ()

  • Ich kanns mir beim besten Willen nicht vorstellen, dass es hier laggen würde, aber um es Ressourcenschonender zu machen, würde ich es mit switch/case machen, aber es würde auch ganz gut anders klappen undzwar:
    Wenn die eine Bedingung erfüllt ist, muss ja nicht die andere auch noch abgefragt werden, daher nach dem ersten if, ein else if.


    z.B.

    Code
    if(Spieler[playerid][Fraktion] == 0)//Zivi
    	{
    	format(fraktion,sizeof(fraktion),"Zivilisten Commands: \nNoch keine Commands\n\n"); //Keine Commands für diese Fraktion
    	}
    	else if(Spieler[playerid][Fraktion] == 1 || Spieler[playerid][Fraktion] == 2) //LSPD | Army
    	{
    	format(fraktion,sizeof(fraktion),"Polizei Commands: \nNoch keine Commands\n\n");
    	}


    Weil wenn Fraktion 0 ist, dann kann es eh nicht mehr 1 oder 2 sein.
    Das bezieht sich jetzt nur mal auf die Fraktion, bei Adminlevel und Premium musst du ohne else if arbeiten.

  • ^^
    Joa, bin auch z.Z. auf der Suche nach einigen Übeltätern ...
    Mein Script (86000+ Zeilen) läuft auf nem Quadcore Server und hatte normal immer so ne CPU Auslastung von 0.6 mit mehrerern Spielern, das ist jetzt aber auf ca. 3 (!) pro Spieler hoch, mit den Bots (50) dazu hab ich dann ne Last von 20% und höher ^^


    Nur hab ich keine Idee, was da böse sein könnte, muss ich eben weitersuchen :o

  • Ich frage mich wie man überhaupt auf eine CPU - Auslastung von 20 - 80% kommen kann, ...


    Ich hab mein Script mal für 400 Spieler +100 Bots (CNPC), laufen lassen, natürlich alle möglichen abfragen wie:
    if(IsPlayerConnected(playerid)) //Oder
    if(!IsPlayerNPC(playerid))


    rausgelassen, wohlbemerkt auf meinen eigenen DualCore-Rechner, und über 6 - 12% CPU auslastung bin ich nicht gekommen :P
    Ich hab selbst die NPCS als Spieler gespeichert, nur ich war zwar verbunden ... aber alle Schleifen sind durchgelaufen.


    Meta
    Ich sag mal so ein 86k Zeilen-Script verspricht auch nicht viel, außer gelagge und bugs...mein Selfmade besitzt 11,8K Zeilen, und es läuft einwandfrei.


    Wenn ihr möchtet guck ich mir eure Schantaten mal an :D


    MfG Kevin

  • Ich werd gleich mal versuchen mit else if das ganze zu machen :D ..
    Vielleicht funktionierts dann besser :D