Mein Script ist sehr ressourcendfressend

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
  • Guten Tag SA-MP Gemeinde,


    Also in den letzten 1-2 Monaten habe ich einen neuen GM gebaut, ich hoste bei GTA-Servers.de.


    So,
    Wenn ich meinen Server nun starte mit dem GM dann liegt der CPU wert bei ca 2.5 also durchschnittlich wie jeder andere GM auch. Nach 10 - bis 15 Minuten liegt der CPU Wert schon bei 5.4 und das bei einer Spieleranzahl von 0 Spielern.
    Ich habe 3 Timer im Script und noch andere die sich aber erst bei Commands aktivieren.
    Die Scriptlänge beträgt 5891 Zeilen daran kann es eig. nicht liegen. ich habe auch versucht, die Stringlänge richtig anzupassen, auch habe ich die MAX Spieler Anzahl bei for Schleifen auf 50 (Anzahl Slots Server) gebracht.


    Habt ihr vielleicht noch Tipps was ich tun kann?

  • vielleicht liegt das an einem bestimmten bug

    Mach doch bitte mal Sinnvolle Posts...


    Villeicht hast du irgendwo einen Timer Versteckt, der sich mehrmals Aktiviert.

  • also es gab schon 100 bugs an den der server sogar mal abgestürzt ist bei anderen ^^ wieso sollte das dann auch nicht daran liegen ?


    b2t: sicher hast du irgendwo nen schreibfehler drin, am hoster liegts sicher nicht

  • Also ich kann dir ja schon zb nen command schicken weildie anderen sind dann doch schon viel zu groß hier mal nen Freeze cmd...


    dcmd_freeze(playerid,params[])
    {
    new pID,levelsetter[MAX_PLAYER_NAME], playername[MAX_PLAYER_NAME];
    new adminstring[50];
    new adminstring1[50];
    if(Spieler[playerid][AdminLevel] < 3) return ClientLanguageText(playerid, hellrot, "[ERROR] Dein AdminLvl ist nicht hoch genug!","[ERROR] Your Adminlvl is not high enough");
    if(sscanf(params, "u",pID,adminstring1)) return ClientLanguageText(playerid,hellrot,"[ERROR] Benutze: /freeze [ID]","Use: /freeze [ID]");
    if (pID == INVALID_PLAYER_ID) return ClientLanguageText(playerid,hellrot,"[ERROR] Spieler ist nicht online!","[ERROR] Player is not online");
    if (playerid == pID) return ClientLanguageText(playerid,hellrot,"[ERROR] Du kannst dich nicht selber freezen!","[ERROR] You can´t freeze yourself!");
    else if(Spieler[playerid][AdminLevel] > 2)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(PlayerLanguage[i] == 0)
    {
    GetPlayerName(pID,playername,sizeof playername);
    GetPlayerName(playerid,levelsetter,sizeof(levelsetter));
    format(adminstring,sizeof(adminstring),"Admin %s hat dich gefreezed!",levelsetter);
    SendClientMessage(pID,rot, adminstring);
    format(adminstring1,sizeof(adminstring1),"Du hast %s gefreezed!",playername);
    SendClientMessage(playerid,rot, adminstring1);
    TogglePlayerControllable(pID,0);
    return 1;
    }
    if(PlayerLanguage[i] == 1)
    {
    GetPlayerName(pID,playername,sizeof playername);
    GetPlayerName(playerid,levelsetter,sizeof(levelsetter));
    format(adminstring,sizeof(adminstring),"Admin %s has freeze you!",levelsetter);
    SendClientMessage(pID,rot, adminstring);
    format(adminstring1,sizeof(adminstring1),"You have freeze %s!",playername);
    SendClientMessage(playerid,rot, adminstring1);
    TogglePlayerControllable(pID,0);
    return 1;
    }
    }
    }
    return 1;
    }


    Edit: Also ich glaube habe Fehler in einer Include war ein Timer von 100ms das dürfte dafür gesorgt haben hoffe ich mal

  • Wie schon gesagt ich hatte inner Include nen Timer von 100ms daran wird es wohl gescheitert haben die Timer sind bei mir so:


    SetTimer("infotime1",60000*32,1);
    SetTimer("UpdateTime",1000*60,1);
    weaponchecktimer = SetTimer("Weaponchecktimer", 2504, 1);

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Also es lag wohl eindeutig an dem Timer von 100ms. Hier der Beweiß:
    Ich hab immer bei CPU Auslastung 3.6% gestoppt. Schaut auf die Zeit. Hier der Timer bei der Include auf 2000ms:



    Jetz der Timer mit 100ms^^




    Ihr seht ja klar den Unterschied^^
    Danke für Eure Hilfe, wenns wieder Probleme gibt melde ich mich.


    Closed^^