Halli Hallo,
ich suche eine Möglichkeit die Anzahl aller Spieler (online) auf dem Server zu zählen und diese dann in einen Text einzubinden.
Ich hoffe jemand kann mir helfen.
Danke im vorraus
Hammerfaul
Halli Hallo,
ich suche eine Möglichkeit die Anzahl aller Spieler (online) auf dem Server zu zählen und diese dann in einen Text einzubinden.
Ich hoffe jemand kann mir helfen.
Danke im vorraus
Hammerfaul
Zähle die Spieler mit einer Schleife, Speicher den Wert in einer Variabel und gebe den dann aus
Geht glaube ich auch etwas sparsamer:
Erstelle eine Variable beim Serverstart, die auf 0 ist. Jedesmal, wenn sich jemand einloggt, erhöhst du den Wert um 1, wenn jemand Disconnected, verkleinerst du ihn um 1. Dann aktualisierst du direkt das Textdraw oder wo auch immer du das angezeigt haben möchtest. Denke zumindest das wäre einfacher als den Wert jedes Mal neu in einer Schleife zu bestimmen.
also habe das mal mit einer for schleife probiert:
GetPlayersOnServer()
{
new count;
for(new x=0; x< MAX_PLAYERS; x++)
{
if(IsPlayerConnected(x))) --3405
{
count++;
}
}
return count;
}
fehler:
(3405):error 029: invalid expression, assumed zero
Du hast eine Klammer zu viel. Aber warum nimmst du nun den umständlichen Weg, der weitaus mehr Ressourcen verbratet als den, den dir xerox verraten hat?
also
forward(player)
OnPlayerConnect
{
Get player(x)
Set player (x+1)
}
OnPlayerDisconnect
{
Get player(x)
Set player (x+1)
}
also so wie ich das mache ist es zu 99,99999% falsch
need help
new bool:connectedIDs[MAX_PLAYERS] = {false, ...};
public OnPlayerConnect(playerid) {
connectedIDs[playerid] = true;
}
public OnPlayerDisconnect(playerid) {
connectedIDs[playerid] = false;
}
printAllConnectedIDs() {
for(new p = 0; p != MAX_PLAYERS; p++) {
if(connectedIDs[p] == true) {
printf("Connected ID: #%i", p);
}
}
}
Ungetestet, hier geschrieben.
zeigt mir das dann nicht nur true oder false an?
{false, ...}; das heißt ich setzte auf 0 und wenn einer online kommt auf 1.
Wenn wieder einer offline geht 0 usw.
bleibt das dann nicht auf 1 oder 0?
Sry wenn ich mich dumm anstelle ich scripte noch nicht so lange.
Es handelt sich um ein Beispiel, ich werde dir nicht dein Vorhaben vorkauen. Es wird die playerid ausgegeben (entspricht p) und nicht connectedIDs[p].
Dürfte so funktionieren
new sOnline = 0;
public OnPlayerConnect(playerid) {
sOnline++;
}
public OnPlayerDisconnect(playerid) {
sOnline--;
}
printAllConnectedIDs() {
printf("Spieler Online: %d",sOnline);
}
Wie binde ich den print in einen Text ein?
Als Beispiel:
ocmd:online(playerid,params[])
{
ShowPlayerDialog(playerid,DIALOG_ONLINE,DIALOG_STYLE_MSGBOX,"Online","Zur Zeit sind ... Spieler online.","Verlassen","Abbrechen");
}
muss ich dann bei ... printAllConnectedIDs einsetzten?
/*Zählt alle Spieler durch und erhöht eine Variable, die am Ende ausgegeben wird*/
stock CountPlayers()
{
new playercount = 0;
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && !IsPlayerNPC(i))
{
playercount++;
}
}
return playercount;
}
/*Dein Befehl, der in einem Dialog einen String anzeigt.*/
ocmd:online(playerid,params[])
{
new string[256];
format(string,sizeof string,"Zurzeit sind %d Spieler auf dem Server.",CountPlayers());
ShowPlayerDialog(playerid,DIALOG_ONLINE,DIALOG_STYLE_MSGBOX,"Online",string,"Schließen","");
return 1;
}
MfG.
Me
Und schon wieder werden die Schleifen verwendet. Verändert einen Wert, wenn er sich verändert und diesen könnt ihr dann immer wieder für welche Zwecke auch immer verwenden. Warum konstant die Anzahl der Spieler neu berechnen ... ?
Wo ist der Unterschied, ob er eine Schleife durch alle Spieler dreht oder ob man eine Variable macht, die beim Joinnen und Verlassen + und - gerechnet wird?
Das ist dasgleiche in Grün. Glaubst du, dass zieht dem Server jetzt 500GB Ram oder was
Wo ist der Unterschied, ob er eine Schleife durch alle Spieler dreht oder ob man eine Variable macht, die beim Joinnen und Verlassen + und - gerechnet wird?
Das ist dasgleiche in Grün. Glaubst du, dass zieht dem Server jetzt 500GB Ram oder was
Warum sollte man den Server zusätzliche Arbeit machen lassen? Macht schlichtweg einfach keinen Sinn.
Ich verstehe nicht wie es noch sparsamer gehen soll.