Create Event If-Abfrage

  • GM 8

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

  • Create Event If-Abfrage

    Hallo zusammen,

    ich habe eine weitere Frage an euch alle: In meinem 2D mmorpg ,wenn man es so nennen kann ;), gibt es jetzt seid neuem einen Begleiter der einem das Game über begleitet selber exp sammeln und aufsteigen kann usw.
    Mein Problem ist, dass es gibt wo der Hund sehr rumbuggt. Um nicht elend viel programmieren zu müssen :rolleyes: habe ich mich entschieden eine "Begleiterfreiezone" einzuführen. Die Instance wird dort zerstört und an einer anderen stelle wieder createt. Jetzt müssen natürlich werte wie die aktuellen hp, exp, Level usw von der vorigen Instance übernommen werden.

    Meine Lösung: bevor die Instance zerstört wird, werden dessen hp, exp, Level etc. in global.sav variablen gespeichert:

    GML-Quellcode

    1. if(image_alpha==0)
    2. {
    3. global.sav_show = show
    4. global.sav_r_hund_p1=global.r_hund_p1
    5. global.sav_Level_hund_p1 = global.Level_hund_p1
    6. global.sav_Level_ad_p1 = global.ad_hund_p1
    7. global.sav_hp_hund_p1 = hp
    8. global.sav_hp_max_hund_p1 = hp_max
    9. global.sav_ep_hund_p1 = global.ep_hund_p1
    10. global.sav_ep_max_hund_p1= ep_max
    11. instance_destroy();
    12. }
    Alles anzeigen


    Jetzt zu meinem Problem: ich möchte jetzt, dass beim createn der Instance überprüft wird ob diese die erste Instance (Begleiter) ist und damit alle werte bei null anfangen oder ob schon vorher ein Begleiter existierte und dessen Werte damit übernommen werden sollen.

    So sieht mein Create Event aus:

    GML-Quellcode

    1. global.ersterhund += 1
    2. if global.ersterhund > 2
    3. {
    4. global.ersterhund= 2
    5. }
    6. if (global.ersterhund == 1)
    7. {
    8. show=true
    9. hund1= false
    10. image_speed= 0.08
    11. global.ad_hund_p1 = 200 // Schaden
    12. global.r_hund_p1= 0 // Rüstung
    13. // Fähigkeitsstärke
    14. image_alpha=1
    15. global.hund=1
    16. global.Level_hund_p1=8
    17. { // Lebenseinstellungen
    18. bronze = 0
    19. silber = 0
    20. // Erstelle eine Variable, "hp"
    21. // Diese Variable gibt die HP des Gegners an
    22. hp = 200;
    23. // hp_max gibt die Maximale HP der Einheit an,
    24. // dies ist f�r die Prozentuale Rechnung wichtig!
    25. hp_max = 200;
    26. // "size" stellt die Gr��e der Healthbar dar
    27. // Ich habe die "size" auf "sprite_get_width" gestellt,
    28. // was die Breite des Sprites wieder gibt, und somit genau da endet,
    29. // wo das Sprite endet!
    30. // Durch "sprite_index" als Variable, brauch man hier nichts mehr machen
    31. // egal welchen Sprite man bentutz!
    32. size = sprite_get_width(sprite_index);
    33. }
    34. {
    35. // Erstelle eine Variable, "hp"
    36. // Diese Variable gibt die HP des Gegners an
    37. global.ep_hund_p1 = 0;
    38. // hp_max gibt die Maximale HP der Einheit an,
    39. // dies ist f�r die Prozentuale Rechnung wichtig!
    40. ep_max = 100;
    41. // "size" stellt die Gr��e der Healthbar dar
    42. // Ich habe die "size" auf "sprite_get_width" gestellt,
    43. // was die Breite des Sprites wieder gibt, und somit genau da endet,
    44. // wo das Sprite endet!
    45. // Durch "sprite_index" als Variable, brauch man hier nichts mehr machen
    46. // egal welchen Sprite man bentutz!
    47. size = 200;
    48. }
    49. }
    50. else
    51. {
    52. show=global.sav_show
    53. hund1= false
    54. image_speed= 0.08
    55. global.ad_hund_p1 = global.sav_ad_hund_p1 // Schaden
    56. global.r_hund_p1= global.sav_r_hund_p1 // Rüstung
    57. // Fähigkeitsstärke
    58. image_alpha=1
    59. global.hund=1
    60. global.Level_hund_p1=global.sav_Level_hund_p1
    61. { // Lebenseinstellungen
    62. bronze = 0
    63. silber = 0
    64. // Erstelle eine Variable, "hp"
    65. // Diese Variable gibt die HP des Gegners an
    66. hp = global.sav_hp_hund_p1;
    67. // hp_max gibt die Maximale HP der Einheit an,
    68. // dies ist f�r die Prozentuale Rechnung wichtig!
    69. hp_max = global.sav_hp_max_hund_p1;
    70. // "size" stellt die Gr��e der Healthbar dar
    71. // Ich habe die "size" auf "sprite_get_width" gestellt,
    72. // was die Breite des Sprites wieder gibt, und somit genau da endet,
    73. // wo das Sprite endet!
    74. // Durch "sprite_index" als Variable, brauch man hier nichts mehr machen
    75. // egal welchen Sprite man bentutz!
    76. size = sprite_get_width(sprite_index);
    77. }
    78. {
    79. // Erstelle eine Variable, "hp"
    80. // Diese Variable gibt die HP des Gegners an
    81. global.ep_hund_p1 = global.sav_ep_hund_p1;
    82. // hp_max gibt die Maximale HP der Einheit an,
    83. // dies ist f�r die Prozentuale Rechnung wichtig!
    84. ep_max = global.sav_ep_max_hund_p1;
    85. // "size" stellt die Gr��e der Healthbar dar
    86. // Ich habe die "size" auf "sprite_get_width" gestellt,
    87. // was die Breite des Sprites wieder gibt, und somit genau da endet,
    88. // wo das Sprite endet!
    89. // Durch "sprite_index" als Variable, brauch man hier nichts mehr machen
    90. // egal welchen Sprite man bentutz!
    91. size = 200;
    92. }
    93. }
    Alles anzeigen


    Leider kommt dann folgender Error (siehe Bild)

    Was kann man da tun?
    Bilder
    • Fehler.JPG

      33,47 kB, 515×404, 154 mal angesehen
  • Nachdenken ^^, wäre ne möglichkeit,....

    Er kennt die variable global.ersterhund nicht, sprich du musst sie irgendwo deklarieren, sonst gehts nicht!!!
    Da du sie aber nicht direkt im Objekt "Hund" deklarieren kannst musst es halt in einem Control objekt machen das in allen Räumen persistent ist!
    Da du ja nicht weist welches Objekt zuerst erstellt wird, ist das bissle schwer,...

    Ich würde es ja einfach so machen, das ich die Id der Instance Speichern würde und dann beim erstellen der neuen Instance schau ich ob die jetztige Id größer als die gespeicherte ist,... damit weist du dann automatisch das es bereits vorher schon eine Objekt "Hund" gegeben hat! Beim deklarieren schreibst dann halt rein

    GML-Quellcode

    1. Im Persistenten Objekt:
    2. global.ersterhund = noone
    3. Im Hund Objekt:
    4. if global.ersterhund !=noone
    5. {
    6. ....
    7. }


    Zudem würde ich eh nicht alles in globalen Variablen Speichern wenn es nicht sein muss!
    Ich würde diese Werte alle in das Persistente Objekt schreiben und sie später wieder dort herauslesen!!!

    EDIT:
    Ne andere Idee, statt die Instance zu löschen könntest du es auch einfach so machen das der Hund vor der "Begleiterfreien Zone " wartet und wenn der Spieler diese passiert hat wieder zum Spieler geportet wird,.... wäre meines erachtens noch weniger Code denn du Programmieren müsstest,... :p
    Allerdings müsstest du dem Player dann irgendwie verklickern das der Hund da gewollt net weitergeht ^^, sonst denkt er des wäre en Bug

    Grüßle Blayde

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Blayde ()