Einzelnes Objekt sperren

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

  • Einzelnes Objekt sperren

    Hallo liebe Community
    Wie es der Titel schon beschreibt möchte ich ein einzelnes Objekt sperren(Baufeld) weiß aber nicht wie.
    In meinem Fall ist es ein Baufeld für ein Turm ich habe es über eine Variabel versucht das Problem ist sobald der Turm auf einem Baufeld platziert ist sind ALLE Baufelder gesperrt :headtouch: .

    wenn man auf das Baufeld klickt

    Quellcode

    1. if (global.kreis = true)&&(belegt = false)
    2. {
    3. with (obj_kreis_dummy)
    4. {
    5. instance_destroy();
    6. }
    7. instance_create(x, y-20, obj_kreis_dummy)
    8. }
    9. if (global.kreis = false)&&(belegt = false)
    10. {
    11. instance_create(x, y-20, obj_kreis_dummy)
    12. }
    13. else
    14. {
    15. }
    Alles anzeigen


    wenn man dann auf den kreis klickt

    Quellcode

    1. if (global.kreis = true)
    2. {
    3. with (obj_kreis_dummy)
    4. {
    5. instance_destroy();
    6. }
    7. instance_create(x, y + 20, obj_tower_dummy)
    8. }


    und der tower setzt die variabel "belegt" auf true
    hoffe das man mir helfen kann
    Gruß Meltdragon
  • machst du es per code oder mit dem left mouse pressed event ?... ich sag mal ehrlich ich raff den code von dir nicht mal.... warum wird da obj_kreis_dummy gelöscht und dann wieder eins erstellt ? zudem solltest du dir angewöhnen das wenn du in deinen if abfragen etwas abfrägst mit z.B == abfrägst und nicht mit = weil ein einfaches = zeichen zur deklarierung benutzt wird... soviel ich weiß kriegst du in anderen programmiersprachen gleich mal nen syntax error....


    also ich machs mal blind, ich geh mal davon aus du verteilst deine felder manuel... also ich würds so in die richtung machen

    obj_freierplatz

    create_event:

    GML-Quellcode

    1. freierplatz = true;


    //dann mache es mit dem left mouse pressed event
    left mouse pressed:

    GML-Quellcode

    1. if (freierplatz){
    2. instance_create(x,y,obj_mein_turm);
    3. freierplatz = false;
    4. }


    jetzt kannst du da noch 400 mal klicken der wird dir nix mehr drauf bauen ausser du willst es natürlich
    Wir stehen zusammen und wir fallen zusammen

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

  • schaue das ich heute Abend Bilder davon rein setzen um noch mal das Problem zu nennen
    Ich habe mehrere Baufelder (alle das gleiche Objekt aber verschiedene Instanzen) bei einem links klick erscheint ein blauer Kreis(neues Objekt) über das man einen Turm platzieren kann.
    Sobald der Turm platziert ist soll das dazu gehörige Baufeld gesperrt werden. Mein Problem ist das alle Baufelder gesperrt werden. die Sperrung erfolgt über eine Variable (belegt = false bzw. true)

    Baufeld
    create event:

    GML-Quellcode

    1. belegt = false;

    left pressed

    GML-Quellcode

    1. if (global.kreis = true)&&(belegt = false)
    2. {
    3. with (obj_kreis_dummy)
    4. {
    5. instance_destroy();
    6. }
    7. instance_create(x, y-20, obj_kreis_dummy)
    8. }
    9. if (global.kreis = false)&&(belegt = false)
    10. {
    11. instance_create(x, y-20, obj_kreis_dummy)
    12. }
    Alles anzeigen


    Kreis (Turm wahl)
    create event

    GML-Quellcode

    1. global.kreis = true;

    left pressed

    GML-Quellcode

    1. if (global.kreis = true)
    2. {
    3. with (obj_kreis_dummy)
    4. {
    5. instance_destroy();
    6. }
    7. instance_create(x, y + 20, obj_tower_dummy)
    8. with (obj_baufeld_dummy)
    9. {
    10. belegt = true
    11. }
    12. }
    Alles anzeigen


    hoffe schon mal das ein Lösungsvorschlag bis dahin kommt
    ansonsten werde ich eben heute abend bilder noch reinstellen
  • Versuchs doch mal so:

    Inst = instance_nearest (obj_kreis_dummy.x, obj_kreis_dummy.y, obj_baufeld_dummy)

    with (Inst)
    {
    belegt = true;
    }

    Ansonsten musst du die Instance ID rausfinden des baufeldes darunter.
    Oder das gesamte Spielfeld in ein Grid speichern.