mplay : gejointe Spieler anzeigen

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • mplay : gejointe Spieler anzeigen

    Hey Leute,

    ich wollte in GM in meinem online Spiel ein Objekt machen, welches mir ausgibt welche Spieler schon aufm Server sind...
    Das habe ich so bewerkstelligt :
    SpielerAuflistenOBJ :

    Quellcode

    1. if (variable_global_exists("bla")){ if (global.bla > 0) { for (i = 0; i < global.bla; i += 1) { global.Spieler[i] = ""; } }}
    2. for (i = 0; i < mplay_player_find(); i += 1){ global.Spieler[i] = mplay_player_name(i); instance_create(16, 16 + i * 48, objektSpieler);}
    3. global.bla = mplay_player_find();



    In ObjektSpieler wird dann einfach aus dem Array der Text ausgelesen, und halt der Name ausgegeben, alle 3 Blöcke...
    Aber wenn ich die Spieler als Host, dann wird erst einer korrekt angezeigt.
    Wenn ein Spieler joind, und ich das ganze wiederhole, dann wird der host immernoch angezeigt, aber als joiner, wird dann in etwa sowas angezeigt :
    "B ? jC" sowas ganz komisches, immer unterschiedlich, je nach Name des joiners...

    Woran kann das liegen ?

    Mit freundlichen Grüßen,

    BDG
  • Nee sorry, ich wüste nicht mal wie man Überhaupt so ein Mplay Game erstellt, das Tut was ich darüber hatte, hat irgendwie nicht funktioinirt, kann aber auch an mir geklegen haben.

    Kannst du mir kurz einen Link zu einem Tutorial geben? vieleicht verstehe ich dan, was du eventuell Falsch gemacht hast.

    Mfg franky180
  • @franky180: gamemaker.info/de/manual/413_00_multiplayer Is kein fertiges Tutorial, aber alle Funktionen die du brauchst^^

    @alleAnderen :
    Also : Beim Spieler auslesen, wird der erste Spieler in der Liste richtig angezeigt. Das is immer man selbst. Alle anderen die joinen werden falsch angezeigt.
    Hierdan muss der Fehler liegen :

    Quellcode

    1. for (i = 0; i < mplay_player_find(); i += 1)
    2. {
    3. global.Spieler[i] = mplay_player_name(i);
    4. show_message(global.Spieler[i]);
    5. show_message(mplay_player_name(i));
    6. }

    Meine Idee is, das beim ersten mal die Schleife noch richtig funktioniert, und danach, wird irgendwas verändert, dass sie nichtmehr funktioniert...
    Wenn ich als Name als Joiner "Banane" eingebe, dann gibt er bei den anderen irgendwie sowas aus : "BA c C?"

    Darüber hab ich heute 2 Stunden mit meim Informatik-Lehrer diskutiert, und wir sind zu keiner Lösung gekommen...
    Kann mir da jemand helfen ?

    MfG, ich
  • Ich hab das ganze jetzt mal mit ds_list probiert...
    Wie vorher ist das erste immer richtig, aber jetzt bei allen anderen Spielern die auf den Server kommen, hat er in der Liste nur den Anfangsbuchstaben von den stehn...
    Hier der Code :

    Quellcode

    1. global.Spieler = ds_list_create();
    2. a = mplay_player_find();
    3. var i;
    4. for (i = 0; i < a; i += 1)
    5. {
    6. ds_list_add(global.Spieler, mplay_player_name(i));
    7. show_message(mplay_player_name(i));
    8. }
    9. global.bla = mplay_player_find();

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von BDG ()

  • Liegt wahrscheinlich daran das du irgendwelche andere Werte verschickst/empfängst, jedoch nicht liest.
    Und mit so wenig Info kann hier niemand was anfangen und dein Code ist eigentlich richtig.

    Ich denk aber das du:

    GML-Quellcode

    1. for (i = 0; i < mplay_player_find(); i += 1)
    2. anstatt
    3. for (i = 0; i <= mplay_player_find(); i += 1)

    Schreiben solltest (falls der erste Spieler bei 0 anfängt (Kenn mich mit mplay recht wenig aus))

    Wenns immer noch nicht funktioniert.
    Dann poste hier mal deine *.gmk
    :saint: