Scriptproblem bei einem Bomberman Clon

  • GM 7
  • Scriptproblem bei einem Bomberman Clon

    Hi Leude,

    habe wieder ein Problem. HIer erstmal das Script:

    GML-Quellcode

    1. sprite_index=false;
    2. var_gridsize=16;
    3. var i, ii;
    4. i=1;
    5. //Explosion in der Mitte
    6. instance_create(x,y,obj_mexplo);
    7. //Explosion nach oben
    8. repeat(bombpower)
    9. {
    10. if (!collision_point(x,y-i*var_gridsize,all,false,false)) //zuerst wird überprüft
    11. { // ob sich oberhalb der Bombe ein Hinderniss befindet
    12. instance_create(x,y-i*var_gridsize,obj_vexplo) //wenn nicht, wird dort die Explosion erzeugt
    13. i+=1; //und die Positionsabfrage rutsch ein Rasterkästchen nach oben.
    14. }
    15. else //falls sich dort aber ein Hinderniss befindet
    16. {
    17. ii=instance_position(x,y-i*var_gridsize,all); //wird die ID davon gespeichert
    18. if (ii!=noone)
    19. {
    20. if (ii.destructable=true) //und wenn das Hinderniss zerstörbar ist
    21. with (ii) {instance_destroy();} //wird es zerstört
    22. }
    23. {
    24. with other if (global.alive_player1 == true)
    25. with other global.live_player1 += -1;
    26. }
    27. break;
    28. }
    29. }
    30. i=1;
    31. //Explosion nach unten
    32. repeat(bombpower)
    33. {
    34. if (!collision_point(x,y+i*var_gridsize,all,false,false))
    35. {
    36. instance_create(x,y+i*var_gridsize,obj_vexplo)
    37. i+=1;
    38. }
    39. else
    40. {
    41. ii=instance_position(x,y+i*var_gridsize,all);
    42. if (ii!=noone)
    43. {
    44. if (ii.destructable=true)
    45. with (ii) {instance_destroy();}
    46. }
    47. {
    48. with other if (global.alive_player1 == true)
    49. with other global.live_player1 += -1;
    50. }
    51. break;
    52. }
    53. }
    54. i=1;
    55. //Explosion nach links
    56. repeat(bombpower)
    57. {
    58. if (!collision_point(x-i*var_gridsize,y,all,false,false))
    59. {
    60. instance_create(x-i*var_gridsize,y,obj_hexplo)
    61. i+=1;
    62. }
    63. else
    64. {
    65. ii=instance_position(x-i*var_gridsize,y,all);
    66. if (ii!=noone)
    67. {
    68. if (ii.destructable=true)
    69. with (ii) {instance_destroy();}
    70. }
    71. {
    72. with other if (global.alive_player1 == true)
    73. with other global.live_player1 += -1;
    74. }
    75. break;
    76. }
    77. }
    78. i=1;
    79. //Explosion nach rechts
    80. repeat(bombpower)
    81. {
    82. if (!collision_point(x+i*var_gridsize,y,all,false,false))
    83. {
    84. instance_create(x+i*var_gridsize,y,obj_hexplo)
    85. i+=1;
    86. }
    87. else
    88. {
    89. ii=instance_position(x+i*var_gridsize,y,all);
    90. if (ii!=noone)
    91. {
    92. if (ii.destructable=true)
    93. with (ii) {instance_destroy();}
    94. }
    95. {
    96. with other if (global.alive_player1 == true)
    97. with other global.live_player1 += -1;
    98. }
    99. break;
    100. }
    101. }
    102. i=1;
    Alles anzeigen


    In dem Spiel, kann man Bomben legen, die dann die Kisten zerstören, und dem Spieler Leben abziehen sollen, falls sie in dessen Reichweite sind. Mein Problem: Es wird dem Spieler immer Energie abgezogen; auch wenn er nicht in Reichweite ist.

    Kann mir das jemand dort hinein einbauen?


    Danke!
  • mau04 schrieb:

    ähm, kp das script war so, hab nur ein paar kleine sachen geändert.
    Vorgekaut X(

    Egal, ... ähm gut, das ist aber nur der Skript, für die Explosion. Du musst schon sagen, wann der Spieler Energy verliert, und wie das Spieler Objekt heißt. Verliert er bei der Explosion immer die Energy? -> Wenn nein ist dieser Skript falsch.

    Denn soweit ich geguckt habe, ist daran nichts falsch.

    Auserdem hat Foo recht, die repeat schleifen sind sehr komisch, da es mit for schleifen besser und übersichtlicher wäre.

    MFG
    Metalknight
  • Um dir es ehrlich zu sagen ist mir der Skript zu hoch, der ist uznnötig kompliziert gemacht (finde ich), und desweitern das der Überhaupt funktioniert wunder mich o.o

    GML-Quellcode

    1. if (!collision_point(x,y-i*var_gridsize,all,false,false)) //zuerst wird überprüft
    2. { // ob sich oberhalb der Bombe ein Hinderniss befindet
    3. instance_create(x,y-i*var_gridsize,obj_vexplo) //wenn nicht, wird dort die Explosion erzeugt
    4. i+=1; //und die Positionsabfrage rutsch ein Rasterkästchen nach oben.
    5. }


    Es wird kontrolliert ob sich KEIN Objekt (von allen) überhalp der Bombe befindet,.. jedoch sollen ja gegner getroffen werden wenn sie überhalp stehen.

    Hm.. werde da nicht schlau draus @.@

    MFG
    Metalknight
  • Benutzer online 1

    1 Besucher