Große Laggs auf dem Server

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 Leute,


    Ich habe jetzt ca. seit 1-2 Tagen ein neues Script auf dem Server.
    Aber seit dem neuen Script kommen mörderische Leggs bei Leuten die einen Ping über 50 haben.
    Z.b Die Commands erscheinen erst 1 Minute Später oder die Maps laden extrem langsam.
    Ich würde mal gerne wissen woran das liegt.
    An den Objekten(habe 10k Objekte)
    Oder an OnPlayerUpdate?
    Das Komische ist auf meinem Hamachi Server geht es einwandfrei.
    Server IP:94.249.199.107:3652


    OnPlayerUpdate Zeile:


    public OnPlayerUpdate(playerid)
    {
    if(!IsPlayerConnected(playerid)) return 0;
    if(IsPlayerNPC(playerid)) return 1;


    // changing cities by inputs
    if( !gPlayerHasCitySelected[playerid] &&
    GetPlayerState(playerid) == PLAYER_STATE_SPECTATING ) {
    ClassSel_HandleCitySelection(playerid);
    return 1;
    }
    if(!IsPlayerConnected(playerid)) return 0;
    if(IsPlayerNPC(playerid)) return 1;


    // Handle playing SomaFM at the alhambra
    if(GetPlayerInterior(playerid) == 17) {
    if(IsPlayerInRangeOfPoint(playerid,70.0,489.5824,-14.7563,1000.6797)) { // alhambra middle
    if(!GetPVarInt(playerid,"alhambra")) {
    SetPVarInt(playerid,"alhambra",1);
    PlayAudioStreamForPlayer(playerid, "http://somafm.com/tags.pls",480.9575,-3.5402,1002.0781,40.0,true);
    }
    }
    }
    else {
    if(GetPVarInt(playerid,"alhambra")) {
    DeletePVar(playerid,"alhambra");
    StopAudioStreamForPlayer(playerid);
    }
    }
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && !VelocimetroActivado[playerid])
    {
    new
    Float:fPos[3],
    Float:Pos[4][2],
    Float:fVelocidad;
    GetVehicleVelocity(GetPlayerVehicleID(playerid), fPos[0], fPos[1], fPos[2]);


    fVelocidad = floatsqroot(floatpower(fPos[0], 2) + floatpower(fPos[1], 2) +
    floatpower(fPos[2], 2)) * 200;


    new Float:rotacion = 300 - fVelocidad;
    if(rotacion < 30)
    rotacion = 30;


    for(new i; i < 4; i++)
    {
    TextDrawHideForPlayer(playerid, TextDrawVelocimetro[i][playerid]);
    TextDrawDestroy(TextDrawVelocimetro[playerid][i]);
    RotacionXY(548, 401, Pos[i][0], Pos[i][1], rotacion, (i + 1) * 8);
    TextDrawVelocimetro[playerid][i] = TextDrawCreate(Pos[i][0], Pos[i][1], "~r~.");
    TextDrawLetterSize(TextDrawVelocimetro[playerid][i], 0.73, -2.60);
    TextDrawSetOutline(TextDrawVelocimetro[playerid][i], 0);
    TextDrawSetShadow(TextDrawVelocimetro[playerid][i], 1);
    TextDrawShowForPlayer(playerid, TextDrawVelocimetro[playerid][i]);
    }
    }
    if(IsPlayerInRangeOfPoint(playerid, 3.0, 703.5448, -3039.0706, 12.9235))
    {
    MoveObject(BASE,703.5448, -3039.0706, 210.7505,5.0);
    }
    else
    {
    MoveObject(BASE,703.5448, -3039.0706, 12.9235,5.0);
    }
    if(IsPlayerInRangeOfPoint(playerid, 3.0, 2096.070312, 1243.658813, 10.820312))
    {
    SetPlayerTime(playerid,12,0);
    MoveObject(Puerta[2],2093.32, 1242.0000, 7.8012, 3.0);
    MoveObject(Puerta[3],2098.99,1242.0000, 7.8012, 3.0);
    }
    else
    {
    MoveObject(Puerta[2],2093.32, 1242.0000, 11.80, 3.0);
    MoveObject(Puerta[3],2098.99,1242.0000, 11.80, 3.0);
    }
    if(IsPlayerInRangeOfPoint(playerid, 3.0, 2096.277099, 1290.360961, 10.820312))
    {
    SetPlayerTime(playerid,12,0);
    MoveObject(Puerta[0],2093.32, 1291.34007, 7.8012, 3.0);
    MoveObject(Puerta[1],2098.99, 1291.3401, 7.8012, 3.0);
    }
    else
    {
    MoveObject(Puerta[0],2093.32, 1291.34007, 11.80, 3.0);
    MoveObject(Puerta[1],2098.99, 1291.3401, 11.80, 3.0);
    }
    return 1;
    }


    Falls es daran liegt, hoffe ich dass mir i-einer es umschreiben kann oder per Teamviewer machen.


    LG Korny

  • Liegt an dem Hoster pc.
    Zu schlechte Upload rate


    So ein Quatsch :whistling:


    Du solltest das nicht alles unter OnPlayerUpdate packen !


    Erstelle einfach einen Timer oder packe die einzelnen Funktionen in die dafür angefertigten Callbacks !


    PS: Nicht der Server laggt sondern die Spieler ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ich bekomm Plaque, wenn ich diesen Code sehe...


    Im Ernst, was hat
    if(!IsPlayerConnected(playerid)) return 0;
    if(IsPlayerNPC(playerid)) return 1;
    in OnPlayerUpdate verloren?
    Desyncen von nicht conncteten Spielern?
    Welchen Sinn hat das?


    Dazu hast du das noch 2x drin :pinch:



    for(new i; i < 4; i++)
    {
    TextDrawHideForPlayer(playerid, TextDrawVelocimetro[playerid]);
    TextDrawDestroy(TextDrawVelocimetro[playerid][i]);
    RotacionXY(548, 401, Pos[i][0], Pos[i][1], rotacion, (i + 1) * 8);
    TextDrawVelocimetro[playerid][i] = TextDrawCreate(Pos[i][0], Pos[i][1], "~r~.");
    TextDrawLetterSize(TextDrawVelocimetro[playerid][i], 0.73, -2.60);
    TextDrawSetOutline(TextDrawVelocimetro[playerid][i], 0);
    TextDrawSetShadow(TextDrawVelocimetro[playerid][i], 1);
    TextDrawShowForPlayer(playerid, TextDrawVelocimetro[playerid][i]);
    }
    Ich dreh durch, andauernd neue Textdraws erstellen?
    Kein Wunder warum Server und Client aufs übelste laggen.



    if(IsPlayerInRangeOfPoint(playerid, 3.0, 2096.070312, 1243.658813, 10.820312))
    {
    SetPlayerTime(playerid,12,0);
    MoveObject(Puerta[2],2093.32, 1242.0000, 7.8012, 3.0);
    MoveObject(Puerta[3],2098.99,1242.0000, 7.8012, 3.0);
    }
    else
    {
    MoveObject(Puerta[2],2093.32, 1242.0000, 11.80, 3.0);
    MoveObject(Puerta[3],2098.99,1242.0000, 11.80, 3.0);
    }
    if(IsPlayerInRangeOfPoint(playerid, 3.0, 2096.277099, 1290.360961, 10.820312))
    {
    SetPlayerTime(playerid,12,0);
    MoveObject(Puerta[0],2093.32, 1291.34007, 7.8012, 3.0);
    MoveObject(Puerta[1],2098.99, 1291.3401, 7.8012, 3.0);
    }
    else
    {
    MoveObject(Puerta[0],2093.32, 1291.34007, 11.80, 3.0);
    MoveObject(Puerta[1],2098.99, 1291.3401, 11.80, 3.0);
    }
    Das mein Freund ist zu 100% besser in einem Timer aufgehoben,
    dazu fehlen noch gesetze Variablen, sonst geht das Tor nicht vollständig auf und zu.


    Bisher dürfte sich das gar nicht bewegen :sleeping:

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski