Hiho
wollte mal nachfragen, ob es schon etwas "einfaches" gibt, um abzufragen, ob ein Spieler auf dem Desktop oder im Pausenmenü ist?
Irgendwie find ich hier nix brauchbares mit den Suchbegriffen Desktop, Pause check etc.
MFG
Hiho
wollte mal nachfragen, ob es schon etwas "einfaches" gibt, um abzufragen, ob ein Spieler auf dem Desktop oder im Pausenmenü ist?
Irgendwie find ich hier nix brauchbares mit den Suchbegriffen Desktop, Pause check etc.
MFG
Alles anzeigenHiho
wollte mal nachfragen, ob es schon etwas "einfaches" gibt, um abzufragen, ob ein Spieler auf dem Desktop oder im Pausenmenü ist?
Irgendwie find ich hier nix brauchbares mit den Suchbegriffen Desktop, Pause check etc.
MFG
Hmm, ich glaube nicht.
Eine Möglichkeit dazu wäre, den Spieler AFK zu setzen. - Bin mir nicht sicher ob das geht, wenn er auf den Desk geht (bzw. den sollte man es auch so prüfen können?)
Denk ich aber nicht
Die Funktion gibt es, ich such mal ein bisschen. Die gibts 101%
Y_Less hat mal eine Funktion erstellt, welche nach vollzieht ob der Spieler ESC sprich sich außerhalb oder innerhalb des Spiel befand. Such ein wenig und du wirst fündig.
Tipp: Verwende auch englische Begriffe
Wenn der Spieler auf dem Desktop ist hört OnPlayerUpdate was für die synchronisation des spielers zuständig ist auf sich aufzurufen für dne jeweiligen spieler.
Daher kann man das ganze via extra Timer abprüfen und einer variabel.
Hmm, ich glaube nicht.
Eine Möglichkeit dazu wäre, den Spieler AFK zu setzen. - Bin mir nicht sicher ob das geht, wenn er auf den Desk geht (bzw. den sollte man es auch so prüfen können?)
Denk ich aber nicht
Ja, wäre eigentlich auch eine Möglichkeit, nur wenn er ingame einfach 10 sekunden stehen bleibt, ist er auch "AFK", so wie ich das möchte
Die Funktion gibt es, ich such mal ein bisschen. Die gibts 101%
und?
Y_Less hat mal eine Funktion erstellt, welche nach vollzieht ob der Spieler ESC sprich sich außerhalb oder innerhalb des Spiel befand. Such ein wenig und du wirst fündig.
Tipp: Verwende auch englische Begriffe
Ich hab im englischen forum was gefunden (pause check), doch die wissen selber nicht, ob das effizient und richtig funzt
Wenn der Spieler auf dem Desktop ist hört OnPlayerUpdate was für die synchronisation des spielers zuständig ist auf sich aufzurufen für dne jeweiligen spieler.
Daher kann man das ganze via extra Timer abprüfen und einer variabel.
das habe ich auch schon gelesen, nur wie muss ich den Timer setzen? Klar, am besten nach dem Login oder Connect, aber was für ne Zeit?
MFG
Ein Timer von 0,5 bis 1.0 Sekunde(n) finde ich dafür vollkommen ausreichend...
Nagut, da es niemand auf die Reihe bekommt und nur sagen können das es schon gibt hier eine kleine Erklärung:
OnPlayerUpdate - Ist ein "zwischen" Callback wo immer vor der Synchronisation aufgerufen wird, das heißt wenn der Spieler sich bewegt werden natürlich mehr Pakete an den Server gesendet und bevor es an die anderen Spieler geht durch OnPlayerUpdate gejagt...
So, das kannst du natürlich zu deinem nützen machen, undzwar wenn der Spieler auf den Desktop ist kommen auch keine "Idle" Packete mehr das heißt du kannst bei jedem OnPlayerUpdate Call eine Variable für den Spieler auf 0 Setzen nennen wir die mal Ixel .
Wenn du jetzt einen Timer nimmst, und darin die "Var" immer hoch zählst, während OnPlayerUpdate sie zurückzieht (0), und OnPlayerUpdate nicht mehr aufgerufen wird sobald du auf dem Desktop bist erreicht diese Zahl bald dann einen Wert über 1...
Ein pseudo beispiel:
var -> globale variable
var ixel[MAX_PLAYERS]; // <- globale variable, mit einen Platz für jeden Spieler
OnPlayerUpdate(playerid)
ixel[playerid] = 0; // setze variable bei jedem Update wieder auf 0
Timer (1000 seks)
//iterator-> spielerschleife
ixel[iterator]++; // Zähle Variable hoch ..
ixel[iterator] > 2 // Wenn sie diesen Wert erreicht wird OnPlayerUpdate in diesem Zeitraum nicht aufgerufen das heißt -> Desktop / Timeout / Afk whatsover.
// Spieler ist in dem Menü
Alles anzeigenNagut, da es niemand auf die Reihe bekommt und nur sagen können das es schon gibt hier eine kleine Erklärung:
OnPlayerUpdate - Ist ein "zwischen" Callback wo immer vor der Synchronisation aufgerufen wird, das heißt wenn der Spieler sich bewegt werden natürlich mehr Pakete an den Server gesendet und bevor's an die anderen Spieler geht durch OnPlayerUpdate gejagt...
So, das kannst du natürlich zu deinem nützen machen, undzwar wenn der Spieler auf den Desktop ist kommen auch keine "Idle" Packete mehr das heißt du kannst bei jedem OnPlayerUpdate Call eine Variable für den Spieler auf 0 Setzen nennen wir die mal Ixel .
Wenn du jetzt einen Timer nimmst, und darin die "Var" immer hochzählst, während OnPlayerUpdate sie zurückzieht (0), und OnPlayerUpdate nichtmehr aufgerufen wird sobald du auf dem Desktop bist erreicht diese Zahl bald dann einen Wert über 1...
Ein pseudo beispiel:
var -> globale variable
var ixel[MAX_PLAYERS]; // <- gloable variable, mit einen Platz für jeden Spieler
OnPlayerUpdate(playerid)
ixel[playerid] = 0; // setze variable bei jedem Update wieder auf 0
Timer (1000 seks)
//iterator-> spielerschleife
ixel[iterator]++; // Zähle Variable hoch ..
ixel[iterator] > 2 // Wenn sie diesen Wert erreicht wird OnPlayerUpdate in diesem Zeitraum nicht aufgerufen das heißt -> Desktop / Timeout / Afk whatsover.
// Spieler ist in dem Menü
Wow, sehr schöne ausführliche Erklärung, vielen Dank!