Online Schuß Problem

  • Online Schuß Problem

    Hay ich habe nen Problem mit dem Schießen im Online spiel und zwar habe ich beim schuss objekt im Begin Step event:

    GML-Quellcode

    1. mplay_message_send(0,50,x);
    2. mplay_message_send(0,51,y);
    3. mplay_message_send(0,52,sprite_index);


    Aber trozdem werden die Daten zum anderen pc nicht übertragen.

    (im controlle objekt habe ich:

    GML-Quellcode

    1. if (messid == 51) feuerball.y = val;
    2. if (messid == 50) feuerball.x = val;
    3. if (messid == 24) feuerball.sprite_index = val;

    )

    Wieso funktioniert das nicht?
  • Gute Frage, ohne mehr Details ist eine genaue lösung wohl so gut wie unmöglich, weil bis jetzt sieht alles richtig aus.
    Ich würde dir aber empfehlen für die daten die in jedem step gesenedet werden sollen die mplay_data Funktionen zu verwenden und nur für einmal zu sendende Daten messages zu nehmen. z.b. wenn ein schussobjekt erstellt wird eine message senden, dass der andere das weiß, die koordinaten aber dann immer mit mplay_data übertragen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Bl@ckSp@rk ()

  • ich würde es so machen, dass wenn geschossen wird, im Createvent der Kugel an den anderen Spieler einfach der x,y und dirrection Wert übertragen wird.
    Ein Controllerobject kontolliert dann ob x,y und direction Daten vorhanden sind und falls ja, dann wird das Obejct mit der vorgegebenen direction auf den vorgegebenen Koordinaten erstellt und die Werte wieder auf 0 gesetzt.
    Heißt der Conmtoller müsste dann nur x kontollieren und wenns ungleich 0 ist die 3 werte auslesen, erstellen und eigentlich nur x wieder auf 0 setzten.
  • ich habe vor einiger zeit 5 codes zum codieren bzw entcodieren gebastelt, das sollte dir helfen
    das ganze geht dann etwa so: mplay_message_send(0,50,x|y|image_index)
    sollte alles ausreichend kommentiert sein
    im anhang ist eine (zip-komprimierte) gm6 Datei mit beispiel und den codes, die kannst du exportieren und in deinem spiel einfügen, oder du benutzt die "merge games" funktion ;)

    EDIT: hast du mehrere objekte vom typ feuerball? dann geht das nähmlich nicht -.-
    Tipps:
    - Host verwaltet Collisionen und anderes, bei Spielern passiert garnix
    - Host übergibt Daten den Spielern, andersrum am besten garnix
    - Öfters mal Positionen der Bälle ausgleichen (wegen manchmal verschiedenen FPS)
    Beispiele:
    - Neuer Ball, Host "sagt": NEUER BALL (X,Y,DIRECTION)
    - Collision, Host "sagt": COLLISION (OBJEKT_ID,NEW_X,NEW_Y,NEW_DIRECTION)
    Dateien
    • codiercode.zip

      (5,26 kB, 194 mal heruntergeladen, zuletzt: )

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

  • Benutzer online 1

    1 Besucher