Problem mit 39 dll

  • Problem mit 39 dll

    Hi,
    bei technische fragen habe ich diesen thread schon eröffnet (und jetzt geschlossen), doch da konnte mir keiner helfen. vielleicht hier?


    Ich habe ein Spiel mit 39dll. (Es ist ein 2D sidescrolling game).
    Mit der Datenübertragung läuft es soweit ganz gut. soweit^^
    ich habe es so gemacht, dass die obj_other_player quasi simuliert werden. dh. es wird nur beim tastendruck einmal etwas gesendet und das obj_other_player führt das dann aus. (ich hoffe ihr versteht mich^^)
    der spieler kann mit einer waffe schlagen. wenn er das macht wird eben etwas gesendet.
    Nun habe ich das problem, wenn der spieler schlägt sieht man bei dem anderen client die waffe wie sie ihre animation macht, aber der spieler läuft weiter :wacko:
    ich habe seit tagen daran rumgebastelt, ich komme zu keiner lösung.
    (man muss auch bedenken, dass der spieler während dem schlag entweder die taste gedrückt halten kann, dass führt dazu dass der spieler direkt nach dem schlag weiterläuft, oder während dem schlag kann er loslassen und somit stehen bleiben.)

    Ich hoffe ich habe mich ungefähr klar ausgedrückt.

    Grüße Terra

    edit: die codes:
    hi
    ok also das kommt beim spieler ins a press event:






    GML-Quellcode

    1. if schlagen = 1 && cooldown = 1 && global.chat = false && global.ice_sword = 1
    2. {
    3. instance_create(x,y,obj_icesword)
    4. cooldown = 0
    5. aufladen = false
    6. sprite_index = spr_player
    7. clearbuffer()
    8. writebyte(MSG_MOVE)
    9. writebyte(16) //1 = right
    10. writeushort(x)
    11. writeushort(y)
    12. writeshort(global.richtung)
    13. send_server()
    14. alarm[0] = 30*3
    15. }
    Alles anzeigen




    das ins skript auf dem server:




    GML-Quellcode

    1. case 16:
    2. x = readushort()
    3. y = readushort()
    4. global.richtung = readshort()
    5. ........
    6. clearbuffer()
    7. writebyte(MSG_MOVE)
    8. writeshort(playerid)
    9. writebyte(_dir)
    10. writeushort(x)
    11. writeushort(y)
    12. writeshort(global.richtung)
    13. send_client(1)
    Alles anzeigen




    das ins skript auf dem client:




    GML-Quellcode

    1. case 16: // Schwertschlag
    2. x = readshort()
    3. y = readshort()
    4. global.richtung = readshort()
    5. sprite_index = spr_player
    6. if global.richtung = 1
    7. {instance_create(x,y,obj_icesword_rechts)}
    8. if global.richtung = 0
    9. {instance_create(x,y,obj_icesword_links)}
    Alles anzeigen





    so dass ist jetzt die ausgangslage. entscheident ist denke ich der letzte code. hier müsste man das passende hinzufügen. (global.richtung gibt die richtung des spielers wieder, in die er schaut, 1 = rechts, 0 = links.)