Jump per GML fehler im skript. Was nu?

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

  • Jump per GML fehler im skript. Was nu?

    Hay ich bins mal wieder :ops:
    also ich versuche grade im moment eine steuerung für nen jump and run game in gml zumachen nur fehler im skript dieses event ist im step event:

    GML-Quellcode

    1. if keyboard_check(vk_right)
    2. {
    3. image_speed = 2;
    4. image_xscale = 1;
    5. x += 4;
    6. sprite_index = player_go;
    7. }
    8. if keyboard_check(vk_left)
    9. {
    10. sprite_index = player_go;
    11. image_speed = 2;
    12. image_xscale = -1;
    13. x -= 4;
    14. }
    15. ;
    16. if keyboard_check(vk_space) && !place_free(x,y+1) then
    17. vspeed = -10
    18. gravity_direction = 270;
    19. if place_free(x,y+1) then
    20. gravity = 1
    21. else
    22. gravity = 0;
    23. if keyboard_check_released(vk_right)
    24. {
    25. sprite_index = player_stand;
    26. image_speed = 0.1;
    27. x += 0;
    28. }
    29. if keyboard_check_released(vk_left)
    30. {
    31. sprite_index = player_stand;
    32. image_speed = 0.1;
    33. x -= 0;
    34. }
    Alles anzeigen


    muss ich noch irgend was ins creat event machen oder ist das skript falsch?
  • Sorry, Dragoon^^
    Original von Dragoon
    Schön dass du glaubst, dass wir Hellsehen können, leider ist das nicht so und wir benötigen wie normale Menschen eine Beschreibung des enstehenden Fehlers...

    Dragoon

    Das hat er dir letztes mal grantwortet und selbiges gilt auch hier.
    Der GM gibt doch aus was es für ein Fehlertyp ist und in welcher Zeile und welcher Poition dieser auftritt.
  • da kommt keine fehler meldung also ich habe folgendes:
    Im player objekt creat event => nichts
    im step event => den code oben

    und mehr nicht

    Laut diesen skript kann der player link recht gehen und springen nur leider kann der player nicht springen weil da ein fehler ist der nicht anzgezeigt wird oder ich habe eine variable vergessen und ich möchte das der spieler auch springen kann.

    ich hoffe ich habe mich so ausgedrückt das man es diesmal versteht
  • Meine Kristallkugel schweigt zwar, aber mein Verstand sagt mir folgendes:

    Muss es nicht anstatt so:

    GML-Quellcode

    1. if keyboard_check(vk_space) && !place_free(x,y+1) then
    2. vspeed = -10
    3. gravity_direction = 270;


    so aussehen:

    GML-Quellcode

    1. if keyboard_check(vk_space) && !place_free(x,y+1) then
    2. {
    3. vspeed = -10
    4. gravity_direction = 270;
    5. }


    ?

    Ich glaube wohl :)
  • ohw sachen gibs :D :D

    Wie veränder ich den jetzt die grafik bei springen?

    sprite_index = player_jump

    nur wo muss das rein an welche stelle ?



    Edit @ Marv1: Nein das then steht ja schon davor, wäre das then weg müsste man die {} klammern setzten

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

  • Es ist schon richtig was ich gesagt habe, ob nun then vorsteht oder nicht ist herzlich egal^^.
    Er erkennt die Funktion nur als ganze zum obigen Event wenn die unteren Befehle in Klammern gesetzt werden.
    Beispiel:

    GML-Quellcode

    1. if global.muh=1 then
    2. global.muh=0
    3. sound_play(snd_muh)

    würde heißen er spielt den Sound "snd_muh" auch ab, wenn die Variable global.muh nicht = 1 ist, da es nicht in "{}"steht.

    GML-Quellcode

    1. if global.muh=1 then
    2. {
    3. global.muh=0
    4. sound_play(snd_muh)
    5. }

    Das würde er als ganzes Event erkennen und nur den Sound spielen wenn global.muh auch =1 ist.

    das sprite_index=player_jump würde ich hier rein packen:


    GML-Quellcode

    1. if place_free(x,y+1) then
    2. {
    3. gravity = 1
    4. sprite_index=player_jump
    5. }
    6. else
    7. {
    8. gravity = 0;
    9. sprite_index=(normales sprite)
    10. }

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

  • okay mein player jumpt zwar jetzt ABER die funktion von player_go funktioniert nicht mehr er zeigt nur noch das erste bild an? wieso das:

    code sieht grade so aus:

    GML-Quellcode

    1. if keyboard_check(vk_right)
    2. {
    3. image_speed = 2;
    4. image_xscale = 1;
    5. x += 4;
    6. sprite_index = player_go;
    7. }
    8. if keyboard_check(vk_left)
    9. {
    10. sprite_index = player_go;
    11. image_speed = 2;
    12. image_xscale = -1;
    13. x -= 4;
    14. }
    15. ;
    16. if keyboard_check(vk_up) && !place_free(x,y+1) then
    17. vspeed = -10
    18. gravity_direction = 270;
    19. if place_free(x,y+1) then
    20. {
    21. gravity = 1
    22. sprite_index=player_jump
    23. }
    24. else
    25. {
    26. gravity = 0;
    27. sprite_index=(player_stand)
    28. }
    29. if place_free(x,y+1) then
    30. gravity = 1
    31. else
    32. gravity = 0;
    33. if keyboard_check_released(vk_right)
    34. {
    35. sprite_index = player_stand;
    36. image_speed = 0.1;
    37. x += 0;
    38. }
    39. if keyboard_check_released(vk_left)
    40. {
    41. sprite_index = player_stand;
    42. image_speed = 0.1;
    43. x -= 0;
    44. }
    Alles anzeigen
  • Original von The_Shadow3
    image_speed

    fehlt? oder?

    jap image speed fehlt

    GML-Quellcode

    1. if keyboard_check(vk_right)
    2. {
    3. image_speed = 2;
    4. image_xscale = 1;
    5. x += 4;
    6. sprite_index = player_go;
    7. image_speed = 0.5;
    8. }
    9. if keyboard_check(vk_left)
    10. {
    11. sprite_index = player_go;
    12. image_speed = 2;
    13. image_xscale = -1;
    14. x -= 4;
    15. image_speed = 0.5;
    16. }
    17. ;
    18. if keyboard_check(vk_up) && !place_free(x,y+1) then
    19. {
    20. vspeed = -10;
    21. gravity_direction = 270;
    22. }
    23. if place_free(x,y+1) then
    24. {
    25. gravity = 1;
    26. sprite_index=player_jump;
    27. image_speed = 0.5;
    28. }
    29. else
    30. {
    31. gravity = 0;
    32. sprite_index= player_stand;
    33. }
    34. if place_free(x,y+1) then
    35. gravity = 1;
    36. else
    37. gravity = 0;
    38. if keyboard_check_released(vk_right)
    39. {
    40. sprite_index = player_stand;
    41. image_speed = 0.1;
    42. x += 0;
    43. image_speed = 0;
    44. }
    45. if keyboard_check_released(vk_left)
    46. {
    47. sprite_index = player_stand;
    48. image_speed = 0.1;
    49. x -= 0;
    50. image_speed = 0;
    51. }
    Alles anzeigen


    €d!t:
    Müsste so eigentlich gehen, habe es nicht ausprobiert!

    €d!t 2:
    Warum hast du eigentlich bei Selbsteinschätzung D&D gemacht wenn du schon en bisschen GML kannst? Mach dann doch lieber GML Anfänger rein...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Metalknight ()

  • ich weiß noch nicht so gut bin ich noch nicht in gml ich kann zwar links rechts gehen varibalen erstellen bilder drehen speed ändern und erstellen paar draw funktionen aber im gegensatz zu der ganzen GML sprache kenn ich grade mal 2 % oder so da lohnt es sich noch nicht gml anfänger zu sagen =D

    naja. geht irgendwie nicht. dann werde ich mal einfach mein spiel online stellen. vllt. seht ihr dann den fehler, das gml skript ist im player2 und player ist mit d&d perfekt gecodet (also der kann dort alles was ich bisher will)

    Die datei wird auch bald als spiel raus komme nur habe ich bisher nur 50% der fertigen grafik und 3% von den funktionen also bis zu demo dauert es noch was (falls es jemanden intressiert, aber ich code das spiel für mich um gml und D&D zuüben. Aber erstmal überwiegend D&D)

    naja ich hoffe ihr findet den fehler
  • ey jo danke.
    Viel dank auch an alle andern die mir geholfen haben
    ABER du müsstest mir jetzt noch erklären was du gemacht hast sonst wär meine frage ja so gut wie überflüssig da ich sie bei nächsten mal coden wieder stellen muss :)

    also wär nett wenn du mir es noch erklären könntest was du gemacht hast
  • Das hab ich gemacht:

    GML-Quellcode

    1. //Das habe ich durch check_pressed ersetzt damit er die player_go Grafik vernünftig anzeigt
    2. //------------------------------------------------
    3. if keyboard_check_pressed(vk_right)
    4. {
    5. image_speed = 2;
    6. image_xscale = 1;
    7. sprite_index = player_go;
    8. }
    9. if keyboard_check_pressed(vk_left)
    10. {
    11. sprite_index = player_go;
    12. image_speed = 2;
    13. image_xscale = -1;
    14. }
    15. //------------------------------------------------
    16. //Dafür hab ich hier dann die Bewegung reingemacht
    17. //------------------------------------------------
    18. if keyboard_check(vk_left)
    19. {
    20. x -= 4;
    21. }
    22. if keyboard_check(vk_right)
    23. {
    24. x += 4;
    25. }
    26. //------------------------------------------------
    27. if keyboard_check(vk_up) && !place_free(x,y+1) then
    28. {
    29. vspeed = -10
    30. gravity_direction = 270;
    31. }
    32. //Hier habe ich eine Abfrage hinzugefügt um abzufragen ob links oder rechts gedrückt ist
    33. //wenn der Spieler am Boden aufkommt, wenn ja soll er zur player_go Grafik wechseln
    34. //wenn nicht dann wechselt er zur player_stand Grafik
    35. //------------------------------------------------
    36. if place_free(x,y+1) then
    37. {
    38. gravity = 1
    39. sprite_index=player_jump
    40. }
    41. else
    42. {
    43. if keyboard_check(vk_left) or keyboard_check(vk_right)
    44. {
    45. sprite_index=player_go
    46. image_speed = 2;
    47. }
    48. else
    49. {
    50. sprite_index=player_stand
    51. }
    52. gravity = 0;
    53. }
    54. //------------------------------------------------
    55. if place_free(x,y+1) then
    56. gravity = 1
    57. else
    58. gravity = 0;
    59. if keyboard_check_released(vk_right)
    60. {
    61. if not place_free(x,y+1)
    62. sprite_index = player_stand;
    63. image_speed = 0.1;
    64. x += 0;
    65. }
    66. if keyboard_check_released(vk_left)
    67. {
    68. if not place_free(x,y+1)
    69. sprite_index = player_stand;
    70. image_speed = 0.1;
    71. x -= 0;
    72. }
    Alles anzeigen
  • okay aber ich habe noch einen kleinen fehler entdeckt und zwar habe ich etwas die datei bisher bearbeitet und wenn man jetzt mit dem player nach rechts geht sieht man irgendwann platten auf die man springen muss und irgendwann läuft er dann nicht mehr wieso das?:

    Neue datei
  • Das ist weil dein Spieler keine Maske hat und somit pixelgenau mit dem darunterliegendem Objekt kollidiert.
    Du musst einfach ein neues Sprite machen, am besten mit nem Kätchen das so breit ist wie der Spieler und so hoch, und das legst du dann als Maske beim player2 objekt fest.
    Dann funktioniert es.