nochmal ne frage, wie stellt man das optimal ein für ungefair 50 leute?
und für was ist das alles?
hab schonmal irgendwo ein thema über das gefunden
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
nochmal ne frage, wie stellt man das optimal ein für ungefair 50 leute?
und für was ist das alles?
hab schonmal irgendwo ein thema über das gefunden
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
Ja MAX_PLAYERS ist zu hoch, wenn es über der Slotanzahl ist
OnPlayerUpdate ist ein Standart-SA:MP Callback. Es wird immer aufgerufen wenn ein Spieler mit den anderen Clients synchronisiert wird - Das sind pro Sekunde ~ 20-50 Mal. Jeder der in diesem Callback Accounts updatet, ist einfach nur dumm.
dann bin ich ja 1. dumm und 2. hab ich wieder was gelernt.. also sollte man dort am besten einfach nix drinhaben und das "update der spieler" in ein eigenes callback nehmen?
MFG
Genau sonst laggt der Server wie Hechtsuppe , in OnPlayerUpdate sollte so wenig wie möglich drinnen sein wenn du diese Callback mal verwenden solltest
ZitatJeder der in diesem Callback Accounts updatet, ist einfach nur dumm.
So, habe einen neuen Callback erstellt, und benutze es statt OnPlayerUpdate, wie bei 0.2x, und den OnPlayerUpdate hab ich komplett gelöscht
Es lebe No-Lagg!!
Alles anzeigenBsp:
100 Slot Server
// MAX_PLAYERS ist auf 500
new gArray[MAX_PLAYERS];
/* 500 * 4 Byte = 2000 Byte */
Bessere Version:
#undef MAX_PLAYERS
#define MAX_PLAYERS 100
// MAX_PLAYERS ist auf 100
new gArray[MAX_PLAYERS];
/* 100 * 4 Byte = 400 Byte */
Und nein, OnPlayerUpdate wird maximal 50 Mal in der Sekunde aufgerufen, da bin ich mir sicher
Man kann doch einfach direkt im a_samp Include MAX_PLAYERS auf 100 definieren.
danke danke danke danke
es klappt wieder ohne lagg vielen dank
das gibts eh schon in der a_samp.inc:
#define MAX_PLAYERS (500)
einfach den 500 zu 100 machen. etwa so:
#define MAX_PLAYERS (100)
also sollte man es nicht wie im godfather machen , so 20 sachen in onplayerupdate?
OnPlayerUpdate wird schon immer Automatisch alle XX aufgerufen nicht erst seit 0.3 .
Man sollte unter diese Public wirklich nur das Nötigste reintuhen .
Naja hab die funktion ganz gelöscht, nicht mal DAS ist drinnen:
public OnPlayerUpdate(playerid)
{
return 1;
}
Wollt ihr wissen wie ich ein neues public gemacht hab, der weniger aufgerufen wird und bzw. nicht laggn læsst? für die, die es nicht wissen:
Ich hab den server durch OnPlayerUpdate immer zum crashen gebraucht
Ich wusste aber nit dass OnPlayerUpdate schon standart drinne is, ich hatte das eig reingemacht für mein login-register script xD
Nu weiß ich ja why der immer abgekratzt is^^
Laggs können aber auch durch den anbieter verursacht werden, wenn der server nit so gut is
MFG, Rob
Lieber ein globaler Timer der auf einen Schlag alle Player durchloopt, anstatt für jeden Spieler einen eigenen Timer laufen zu lassen. ;o
Wenn du dann mal einen 50 Slot Server machen willst, aber in der a_samp Include MAX_PLAYERS auf 100 hast, müsste man, wenn man es macht wie du, auch wieder die a_samp.inc umdefinieren. Lieber direkt in jedem Script so umstellen wie mans grade braucht.
Übrigens, Sachen die in OnPlayerUpdate auf KEINEN Fall benutzt werden sollten:
- File-Zugriffe
- Remote Functions
- Loops (egal ob for oder while)
- Vielzahl an Custom Functions
Wenn man OnPlayerUpdate richtig nutzt lassen sich sehr schöne Dinge anstellen, siehe Y_Less' YUP Include.
Das Thema kommt grade wie gerufen, ich habe gestern mein Serverseitiges Anticheat unter OnPlayerUpdate eingebaut, wäre das ok oder wäre es besser ein extra Callback zu erstellen und es mit einem Timer aufzurufen?
Ist insofern ok, wenn du nicht zuviel Code aufrufst und zuviele Checks einbaust.
Hi
ich hatte das hier unter onplayerupdate
aber der server hat gelaggt bis zum geht nicht mehr
if (Eingeloggt[playerid] == 1)
{
new tmpip[16];
new ip[40];
new string[256];
new Spieler[MAX_PLAYER_NAME];
GetPlayerName(playerid, Spieler, sizeof(Spieler));
format(string, sizeof(string), "/Admin/User/%s.ini", Spieler);
GetPlayerIp(playerid,ip,40);
GetPlayerIp(playerid,tmpip,sizeof(tmpip));
dini_Set(string,"ip",tmpip);
dini_IntSet(string, "score", SpielerInfo[playerid][score]);
dini_IntSet(string, "cash", GetPlayerMoney(playerid));
dini_IntSet(string, "kills", SpielerInfo[playerid][kills]);
dini_IntSet(string, "bank", SpielerInfo[playerid][bank]);
dini_IntSet(string, "exporte", SpielerInfo[playerid][exporte]);
dini_IntSet(string, "deaths", SpielerInfo[playerid][deaths]);
dini_IntSet(string, "haus", SpielerInfo[playerid][haus]);
dini_IntSet(string, "admin",SpielerInfo[playerid][admin]);
}
jetzt habe ich es unter public SaveStats(playerid) dazu einen timer der auf 1ne sekunde gestellt ist
aber die statistik wir nicht gespeichert
Wozu einen Timer wenn du OnPlayerDisconnect nutzen kannst
wir das dann auch gespeichert, wenn das spiel crash, allso sofort weg ist, abkackt
Ja die Callback wird immer aufgerufen sobald der Spieler weg von der Bildfläche ist