Hallo,
Hi
ich habe mein Script ein bisschen weiter gemacht und dann wo andere drauf kommen sind also ab 7 spieler laggt der server so derbe
was kann den sein?
Mit freundlichen grüßen,
Tyler
Server lagg
- Tyler_Capone
- Geschlossen
- Erledigt
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
-
-
Wie oft speichert er die User Daten?? I-welche Timer??
Sind meißtens die Gründe für laggs.
-
Hast du Spielerbezogene Timer, welche sich repeaten (wiederholen)?
-
Hast du Spielerbezogene Timer, welche sich repeaten (wiederholen)?
Hmm meint ihr bei Onplayerupdate oder wo?
und die user werden über mysql gespeichert.
Und danke sehr das ihr mir helfen wollt -
Zu viele Timer?
OnPlayerUpdate mit zuviel Code "zugebombt"?
Allgemein Ressourcenfressend gescripted(rießige Strings/viele "MAX_PLAYERS Schleifen") wäre alles was mir so auf Anhieb einfallen würde
aber ohne Code kann ich nicht mehr sagen -
Ja, wie oft??
Alle parr Sekunden oder wie?
-
Hmm also bei OnplayerUpdate steht nur das
Function OnPlayerUpdate(playerid)
{
new Keys,ud,lr;
GetPlayerKeys(playerid,Keys,ud,lr);
if(MussTasteDruecken[playerid] == 1)
{
if(ud < 0)
{
SendClientMessage(playerid, 0xFFFFFFFF, "Gut. Du bist da :D");
MussTasteDruecken[playerid] = 0;
}
}
return 1;
}
Wer kann mir helfen?
//edit was hingefügt -
Such dein Script nach SetTimerEx nach und suche dann den public dazu und wenn ein public einen riesigen Code hat Poste ihn mal hier vielleicht liegt es am Code der jede x ms ausgeführt wird.
-
Such dein Script nach SetTimerEx nach und suche dann den public dazu und wenn ein public einen riesigen Code hat Poste ihn mal hier vielleicht liegt es am Code der jede x ms ausgeführt wird.
Hmm vllt das:
Function bombexplode(playerid)
{
DestroyObject(bombe);
CreateExplosion(PlayerExplosionX[1]+10, PlayerExplosionY[1]-10, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]-10, PlayerExplosionY[1]+10, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+15, PlayerExplosionY[1]-15, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]-15, PlayerExplosionY[1]+15, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]-5, PlayerExplosionY[1]-5, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+5, PlayerExplosionY[1]+5, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+7.5, PlayerExplosionY[1]-7.5, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]-7.5, PlayerExplosionY[1]+7.5, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+20, PlayerExplosionY[1]-20, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]-20, PlayerExplosionY[1]+20, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]-30, PlayerExplosionY[1]+30, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+30, PlayerExplosionY[1]-30, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]-30, PlayerExplosionY[1]+30, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+25, PlayerExplosionY[1]-25, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+10, PlayerExplosionY[1], PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+20, PlayerExplosionY[1], PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+25, PlayerExplosionY[1], PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+15, PlayerExplosionY[1], PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+7.5, PlayerExplosionY[1], PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1], PlayerExplosionY[1]-10, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1], PlayerExplosionY[1]-20, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1], PlayerExplosionY[1]-25, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1], PlayerExplosionY[1]-15, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1], PlayerExplosionY[1]-7.5, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]-7.5, PlayerExplosionY[1]-7.5, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]-10, PlayerExplosionY[1]-10, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]-15, PlayerExplosionY[1]-15, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]-20, PlayerExplosionY[1]-20, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]-25, PlayerExplosionY[1]-25, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+7.5, PlayerExplosionY[1]+7.5, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+10, PlayerExplosionY[1]+10, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+15, PlayerExplosionY[1]+15, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+20, PlayerExplosionY[1]+20, PlayerExplosionZ[1], 10, 0);
CreateExplosion(PlayerExplosionX[1]+25, PlayerExplosionY[1]+25, PlayerExplosionZ[1], 10, 0);
WantedPoints[playerid] += 6;
SetPlayerCriminal(playerid,255, "BombenAnschlag!");
GivePlayerMoney(playerid,5000);
SendClientMessage(playerid, Leichtrot, "Bombe ist explodiert! Du bekommst $5000.");
for(new i = 0; i < GetMaxPlayers(); i++)
{
if(IsACop(i) || IsPlayerInFrac(i, 22))
{
GangZoneStopFlashForPlayer(i,bombzone);
GangZoneHideForPlayer(i,bombzone);
GangZoneDestroy(bombzone);
SendClientMessage(i,Rot," Die Bombe ist explodiert!");
}
}
SetTimer("Abkling", 90000 , 0);
Bombactivated=0;
}//edit was geändert
//edit1 brauche schnell hilfe, sonst kann ich den script in müll werfen -
OKay, also ich sehe nicht wirklich etwas, jetzt würde ich dich bitten, such dein komplettes Script ab nach SetTimer- und Ex, wo überall nach der Timer länge (nach den ms) true oder 1 steht (alle Timer die sich wiederholen) und schau dir dann mal die publics von diesen an, vielleicht ist dort ein riesiger Code und wie Speicherst du die Spieler dini oder mysql?
-
OKay, also ich sehe nicht wirklich etwas, jetzt würde ich dich bitten, such dein komplettes Script ab nach SetTimer- und Ex, wo überall nach der Timer länge (nach den ms) true oder 1 steht (alle Timer die sich wiederholen) und schau dir dann mal die publics von diesen an, vielleicht ist dort ein riesiger Code und wie Speicherst du die Spieler dini oder mysql?
Also die Spieler speichere ich mit Mysql,
Aber was meinst du mit Sekunde? -
Läuft der Server auf deinem PC?
-
Läuft der Server auf deinem PC?
Nein das läuft auf samp4you eig hat der hoster gute ram etc -
Also es kann durchaus daran liegen da du mit MySql Speicherst und wenn du die Funktion mysql_SetString etc. (aus maddins Tutorial) benutzt zum Speichern kann durchaus dies die Laggs verursachen da du nur für eine Variable einen Query öffnest und bei ca. 40-50 Variablen die du Speicherst * ca.10 Spieler kann es wirklich zu sehr massiven Laggs führen, aber nur wenn du auch diese Funktion benutzt.
-
Also es kann durchaus daran liegen da du mit MySql Speicherst und wenn du die Funktion mysql_SetString etc. (aus maddins Tutorial) benutzt zum Speichern kann durchaus dies die Laggs verursachen da du nur für eine Variable einen Query öffnest und bei ca. 40-50 Variablen die du Speicherst * ca.10 Spieler kann es wirklich zu sehr massiven Laggs führen, aber nur wenn du auch diese Funktion benutzt.
Hmm also hier den script wo es gespeichert wird:
http://pastebin.com/zgRbXM10 -
Weißt du vielleicht wann es genau laggt (z.b. beim Speichern, Befehl ausführen etc.)?
Und es könnte zu 70% an deiner Speicher Methode liegen da du dann sehr viele querys ausführt könntest du auch noch vielleicht Sagen wo du überall SavePlayer(playerid) ausführst?Und du sollst es so bald wie möglich das Speichern umschreiben in:
format(query, 500, "UPDATE samp_players SET Passwort = '%d', `Level`= '%d' WHERE Name = '%s'",
PlayerInfo[playerid][pKey],
PlayerInfo[playerid][pLevel],
PlayerName[playerid]
//etc..);
mysql_query(query);So führst du für einen Spieler dann nur einen query aus und im End Effekt müsste es um die hälfte weniger laggen
-
SavePlayer(playerid)
Ok also bei
Onplayerdisconnect wird SavePlayer(playerid) ausgeführt
Bei /bizkaufen
Bei /bizverkaufen
bei namechange
bei registrieren
und fertig
und danke das du mir helfen willst,
Mit freundlichen grüßen,
Tyler -
Sieht man doch schon, du führst bei OnPlayerDisconnect 30 Querys pro Spieler aus.
-
Sieht man doch schon, du führst bei OnPlayerDisconnect 30 Querys pro Spieler aus.
Ja wie kann ich dann machen?
Wer Teamviewer 8 hat kann es mir bitte fixxen?
wäre sehr dankbar einfach per skype melden
unter tyler.capone//edit fail gemacht
-
Ist es nen GF?, sonst wäre das sehr unschlau.