Desktopabfrage?

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

  • 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 :wacko:


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • 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 ;)

    KleineHilfe 2.0

  • 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 :wacko:


    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

  • 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ü


  • Wow, sehr schöne ausführliche Erklärung, vielen Dank! :thumbup: