Gleich 3 Fragen auf einmal zu Objekten

  • GM 8
  • Gleich 3 Fragen auf einmal zu Objekten

    Ja, also, ich hab mich jetzt eine ganze Weile intensiv mit GM8 beschäftigt, aber einige Fragen bleiben, wovon 2 wahrscheinlich ziemlich leicht zu beantworten sind, eine wohl nicht so einfach.

    Fange mal mit den "leichten" an:

    1. Wenn ein Object einen Pfad abarbeitet (also langläuft), dann kann der Spieler wohl nicht eingreifen, sondern muß artig warten, bis der Pfad zu Ende ist - ist das richtig? Falls er doch eingreifen kann: wie? Denn auf Maus-Klicks und ähnliche Events reagiert es nicht.

    2. Kann mir bitte jemand sagen, wozu diese ominöse "Ausrufezeichen" da ist, das mit immer wieder begegnet, aber nicht einmal in der Hilfe oder Dokumentation zu finden ist?

    Ähm: 2b. Und ist es eigentlich möglich, irgendwie sich das gesamte Programm in einem Editor anzuschauen? Mich irritiert irgendwie, daß man immer wieder auf dieser D&D-Plattform landet, die einem aber nicht die genaue Syntax eines Befehls verrät. So springt man ständig hin und her.

    3. Und jetzt wird es schwieriger: Ich frage mit einer Routine ab, ob auf den Plätzen rundum ein gleiches Object vorhanden ist. Falls ja, dann soll es die Abfrage für das gefundene Object auch machen - aber mir gelingt es einfach nicht, diese Abfrage "weiterzuführen". Entweder es tut sich gar nichts oder das Ganze hängt sich auf.

    Zur Erklärung hier mal eine stark vereinfachte Anweisung:

    GML-Quellcode

    1. {
    2. do
    3. {if (place_meeting(x-32,y,obj_gelb))=true{Anweisungen...}
    4. ...
    5. until (place_meeting(x-32,y,obj_gelb)=false)
    6. }


    Im Original werden natürlich alle 4 Richtungen abgefragt, nicht nur eine. Wie kann ich denn diese Abfrage, so das Ergebnis True (oder 1) ist, auf das "gefundene" Object übertragen?

    Habe wirklich schon alles ausprobiert, komme da aber nicht weiter. Wäre toll, wenn mir da jemand weiterhelfen könnte.

    Schon mal im Voraus dank an alle, die Antworten geben,

    Gruß Archie
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para:
  • Frage 1. Natürlich kannst du wege vorher beenden. Sonst wäre das ja blöd für gewisse spiel.
    im befehl "path_start(path,speed,endaction,absolut) könntets zu zum beispiel die variable speed auf 0 setzten. Speed mus dann anatürlich anders bennant werden da "speed" vom System schon registriert ist als fest variable.

    zb.
    pathspeed=0

    Einheit soll los geheb bei mausklick then
    {
    pathspeed=2
    path_start(path,pathspeed,endaction,absolut)
    }
    Um das anzhalten könntest du jederzeit per befehl sagen. Pathspeed=0. Praxisbeispiel. Um in einem Strategie spiel deine einheien zu stoppen kannst du ja auch meist dies tun:

    Frage 2 Die zeichen "" sagen dem Programm das es sich hier bei um einen String handelt. String sind in der Programiiersprache keine Zeichen sonden echte buchstaben.
    Wenn du einer Variable sagst x=a dann ist "a" ein Wet. wenn du ihmn aber sagst x="a" dann hast du ihm das a als Buchstabe vorgegen. Ist schwer zu erklären.

    Praxis beispiel. Textausgabe. draw_text(x,y,"Hallo Welt") ohne "" würde Hallo Welt ein Wert und kein Text sein. aber das kann man auch umgehen mi string(variable)

    Frage 3
    Das mit dem Freinplatz habe ich zufällig gestern auch versucht.
    Ich habe ein nicht so originel variante genommen, fast wie deine.
    if place_meeting(x-32,y-32,solid) then {ziel_x=x-32;ziely=y-32}
    else
    if place_meeting(x+32,y-32,solid) then {ziel_x=x+32;ziely=y-32}

    Das geht natürlich auch mit einer switch oder case anweisung, nur vergesse ich jeds mal wie die aufgebaut wird.
    Meine Signatur hat kein Visum für das GM Forum erhalten.
  • Zu 2a: Das Ausrufezeichen invertiert das Ergebnis bei einer Abfrage. Praktisch das Gleiche wie "not".

    GML-Quellcode

    1. k = false
    2. if not (k) {
    3. ...
    4. }
    5. if !(k) {
    6. ...
    7. }

    ... gibt in beiden Fällen "true" zurück.

    2b verstehe ich nicht ganz. Das ganze Programm als Code? Das wird schwierig, da jedes Objekt ja ein klickibunti-Menü hat, wo die Eigemnschaften und Events ausgelistet werden. Oder willst du das GML-Äquivalent zu den D&D-Bildchen haben? Da könnte diese Seite helfen. Bei der Gelegenheit könntest du komplett auf GML umsteigen, das D&D ist zum Glück überflüssig.
  • Zu 3:
    Anfangs würde ich jedem Object eine variable "checking_neighbours" geben, die erstmal auf false steht. Jedes Object bekommt einen Code ins step-event a la

    GML-Quellcode

    1. //pseudo-code
    2. if (checking_neighbours) {
    3. for each direction { // Deine Schleife, die alle Richtungen durchgeht
    4. if (place_meeting(this direction)) {
    5. otherobj = instance_place(x + d,y +d,obj_gelb);
    6. otherobj.checking_neighbours = true; // Das gefundene Object soll auch selber suchen
    7. }
    8. do_whatever();
    9. checking_neighbours = false;
    10. }


    So sollte das Ganze eine Kettenreaktion verursachen.

    Nachtrag: nicht nur eine Kettenreaktion, sondern auch eine Endlosschleife - aber das geht leicht zu fixen.
  • p-head schrieb:

    2b verstehe ich nicht ganz. Das ganze Programm als Code? Das wird schwierig, da jedes Objekt ja ein klickibunti-Menü hat, wo die Eigemnschaften und Events ausgelistet werden. Oder willst du das GML-Äquivalent zu den D&D-Bildchen haben? Da könnte diese Seite helfen. Bei der Gelegenheit könntest du komplett auf GML umsteigen, das D&D ist zum Glück überflüssig.


    Ja, genau das meinte ich, sowas suchte ich! Klasse, danke!

    Meinen Dank auch an p-head und x-sascha (traue mich jetzt nicht mehr, jedem ein kleines Danke zu sagen, siehe vorletzten Beitrag)! Werde das jetzt auf jeden Fall alles in Ruhe austesten. Mal muß es ja klappen.... :D

    Aber erst mal lege ich mir die Vollversion zu, finde das haben die Macher von GM allemal verdient.

    Bis denne,
    Archie
    Signatur? Ich überlege mir noch eine. Die besten sind ja schon alle vergeben... :para: