Hallo Leute,
Ich wollte mal meine Referenzen etwas erhöhen
deswegen zeig ich euch mal wie man einen Ping Tester macht,
es ist kein großes System, jedoch hilfreich und ja es ist ein Schnippsel
Was ihr braucht:
- 2-7 Minuten Zeit
- eig. nicht mehr.
Fangen wir an
Achso, davor noch es gibt 2 Möglich keiten,
einmal mit Warnungen und einmal Ohne.
Machen wir erstmal mit Warnungen
Als Erstes erstellen wir ein New , bzw. die Warnings.
new PingWarnung[MAX_PLAYERS];
Ihr könnt es auch natürlich anders nennen. die Max Player bedeutet eig. nur das es immer erhöh bar ist.
als nähstes erstellen wir den Timer.
forward PingTest();
Somit sagen wir dem Script, das wir in diesem Fall nen Timer haben wollen
public PingTest()
Das ist dann der Timer
Wir erstellen nun eine Schleife, und fragen somit alle User ab...
for(new i= 0; i < GetMaxPlayers(); i++)
anschließend die Ping Abfrage mit
if(GetPlayerPing(i) >= 400)
InDiesem Fall fragt man ab ob der Spieler mehr als 400 Ping hat, wenn er das hat, wollen wir ne Nachricht und ne WarnungPunkt geben. das machen wir mit
new string[64];
format(string,sizeof(string),"%s hast ein Warn bekommen. Grund: Hoher Ping(Über 400). ",/*Namen Abfragung*/);
SendClientMessageToAll(EURE FARBE, string);
Dan geben wir ihm noch nen WarnungPunkt mit
PingWarnung[i] ++;
Dann abfragen ob er schon 3 Warnings oder mehr schon hat mit
if(PingWarnung[i] > 3)
Dan kicken wir ihm mit
Kick(i);
wenn ihr wollt könnt ihr noch ne nachricht schreiben aber ich machs diesmal nicht
Jetzt fügen wir den Timer noch unter OnGameModeInit ein
SetTimer("PingTest",2000,true);
Damit wird es alle 2 Sekunden abgefragt[10 Sekunden wären auch gut aber 2-5 wären optimal
das wars dan auch mit der 1 Methode
Jetzt kommen wir zur 2x
Das gleiche nur das wir im Timer Public das
if(PingWarnung[i] > 3)
ganz auslassen
und bei if(GetPlayerPing(i) >= 400)
den kick einbauen
____________________-
Hier mal im Ganzen für die die es nicht verstanden haben
Mothode 1.
new PingWarnung[MAX_PLAYERS]; // Oben Im Script
forward PingTest(); // oben im Script
SetTimer("PingTest", 2000,true); // Unter OnGamemode Init
//Unten Im Script
public PingTest()
{
for(new i= 0; i < GetMaxPlayers(); i++)
{
if(GetPlayerPing(i) >= 400)
{
new name[MAX_PLAYER_NAME], string[24+MAX_PLAYER_NAME];
GetPlayerName(i, name, sizeof(name));
PingWarnung[i] ++;
format(string,sizeof(string),"%s hast ein Warn bekommen. Grund: Hoher Ping(Über 400). ", name);
SendClientMessageToAll(COLOR_YELLOW,string);
}
if(PingWarnung[i] > 3)
{
new name[MAX_PLAYER_NAME], string[24+MAX_PLAYER_NAME];
GetPlayerName(i, name, sizeof(name));
format(string,sizeof(string),"%s hast einen Kick bekommen. Grund: Hoher Ping(Über 400).[Zum 3. Mal] ", name);
SendClientMessageToAll(COLOR_YELLOW,string);
Kick(i);
}
}
return 1;
}
Mothode 2.
forward PingTest(); // oben im Script
SetTimer("PingTest", 2000,true); // Unter OnGamemode Init
//Unten Im Script
public PingTest()
{
for(new i= 0; i < GetMaxPlayers(); i++)
{
if(GetPlayerPing(i) >= 400)
{
new name[MAX_PLAYER_NAME], string[24+MAX_PLAYER_NAME];
GetPlayerName(i, name, sizeof(name));
PingWarnung[i] ++;
format(string,sizeof(string),"%s hast ein Warn bekommen. Grund: Hoher Ping(Über 400). ", name);
SendClientMessageToAll(COLOR_YELLOW,string);
}
}
return 1;
}
Oder Bei OnPlayerUpdate
for(new i= 0; i < GetMaxPlayers(); i++)
{
if(GetPlayerPing(i) >= 400)
{
new name[MAX_PLAYER_NAME], string[24+MAX_PLAYER_NAME];
GetPlayerName(i, name, sizeof(name));
PingWarnung[i] ++;
format(string,sizeof(string),"%s hast ein Warn bekommen. Grund: Hoher Ping(Über 400). ", name);
SendClientMessageToAll(COLOR_YELLOW,string);
}
}
____
Wenn ich etwas Falsch hab bitte sagen:D
p.s
das ist jetzt zum großteil freihand und ich bin müde, also garantie net garantiert