unerwartetes Problem

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

  • unerwartetes Problem

    Hi

    ich möchte das der player des spieles 3 leben hat...

    also habe ich im create-event folgendes geschrieben

    GML-Quellcode

    1. leben=3;


    und im step-event hab ich das hier geschrieben

    GML-Quellcode

    1. if (place_meeting(x+1,y+1,obj_gegner)) or (place_meeting(x-1,y-1,obj_gegner))
    2. {
    3. leben-=1
    4. }
    5. if (leben>1)
    6. {
    7. game_restart()
    8. }


    wenn ich jetzt das spiel starte, passiert garnichts... als hätte ich eine endlos while-schleife am laufen, was aber nicht der fall ist...
    tests haben ergeben das es tatsächlich an dem letzten code im stepevent liegt.
    Was habe ich falsch gemacht???

    ps. ich habe kein interesse daran das mti D&D zu lösen :P

    gruß gruen


  • och mist stimmt das hab ich garnicht gesehen :huh:

    ich habe das problem, das bei einer kollision mit dem gegner der sofort wieder neustartet (obrigen code hab ich natürlich korrigiert :P)

    obwohl ich in der if anweisung geschrieben habe das leben -=1, wird das spiel sovort wieder neu gestartet. obwohl er ja anfangs 3 leben zur verfügung hat :S
    ich weis nicht was ich jetzt machen soll...


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

  • GML-Quellcode

    1. //create
    2. leben=3
    3. gegner_id=0

    GML-Quellcode

    1. if (place_meeting(x+1,y+1,obj_gegner)) or (place_meeting(x-1,y-1,obj_gegner))
    2. {
    3. if (instance_place(x+1,y+1,obj_gegner)!=gegner_id)
    4. {
    5. leben-=1
    6. gegner_id=instance_place(x+1,y+1,obj_gegner)
    7. }
    8. else if (instance_place(x-1,y-1,obj_gegner)!=gegner_id)
    9. {
    10. leben-=1
    11. gegner_id=instance_place(x-1,y-1,obj_gegner)
    12. }
    13. }
    14. if (leben<1)
    15. {
    16. game_restart()
    17. }
    Alles anzeigen

    Wäre mein Vorschlag.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • das ist aber nicht so toll...
    Besser du setzt bei den Gegnern einen Attack-Timer, so dass sie nur alle Sekunde Schaden verursachen können.

    im gegner objekt
    create

    GML-Quellcode

    1. attack_time = room_speed
    2. alarm[0] = attack_time
    3. can_attack = true;


    alarm 0

    GML-Quellcode

    1. alarm[0] = attack_time
    2. can_attack = true;



    bei kollision im player objekt

    GML-Quellcode

    1. if (other.can_attack) {
    2. with (other)
    3. {
    4. alarm[0] = attack_time;
    5. can_attack = false;
    6. }
    7. leben -= 1;
    8. }
    "das war meine letzte flamewar PM an dich ."
  • das funktioniert leider nicht blubberblub...

    mal für mein verständnis, was hat das other zu bedeuten???

    und bei

    GML-Quellcode

    1. if (other.can_attack)

    muss da nicht noch etwas hin, womit der vergleichen kann ???

    aber wie gesagt ich weiß ja nicht was dieses other bedeutet, vieleicht wird das damit ja erschlagen :S


  • Bei einer Collison wird das mit dem Colliederten Objekten "angesprochen".
    z.B.:

    GML-Quellcode

    1. //create gegner
    2. leben=3

    GML-Quellcode

    1. //player: collison with gegner
    2. other.leben-=1 // d.h. das du bei dem anderen objekt dei variable leben -1 machst

    Bei with bedeuten das man meint das objekt in dem das with stehten.
    z.B.:

    GML-Quellcode

    1. var leben;
    2. leben=3
    3. with(obj_gegner)
    4. {
    5. if (other.leben<leben)
    6. {
    7. game_end();
    8. }
    9. }

    muss da nicht noch etwas hin, womit der vergleichen kann ???
    Bei if (other.can_attack==true) kommt auch true(bsw 1) raus, also wenn ich test=1<2 würde in test false(bsw 0) stehen.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Man kann es auch ein wenig einfacher machen. Ohne diesen other-Quatsch.



    Kannst auch deinen Code benutzen, der ist garnicht so schlecht. Schreib mal so:



    GML-Quellcode

    1. if (place_meeting(x+1,y+1,obj_gegner)) or (place_meeting(x-1,y-1,obj_gegner))
    2. {
    3. if get_hurt = 0 {leben-=1; get_hurt = 1; alarm[0] = 90}
    4. }
    5. if leben < 1
    6. {
    7. game_restart()
    8. }






    Im alarm[0] event musst du einfach nur get_hurt = 0 schreiben.



    Dieser Code sorgt dafür das du nur alle 3 sekunden (also wenn fps auf 30 steht) Schaden erhälst.

    Du kannst es auch so mach das der Player z.b. blink während diese 3 Sekunden ablaufen und/oder das der Player während dieser Zeit auch gegen andere gegner imun is. Is in den meisten Jump'n'run games so :)



    lg

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Benutzer online 1

    1 Besucher