Die Schalter
Kommen wir zum nächsten Punkt – die Schalter. Wie ihr wisst, haben wir insgesamt fünf Schalter zu erstellen. Vier blaue, ein roter.
Tipp: Die blauen Schalter haben diese Farbe, weil am Ende alle Flammen zur Lösung blau sein müssen.
Tipp: Rot wurde gewählt, da man alle Schaltereinstellungen damit wieder auf 0 setzen kann, der Vorgang wird also abgebrochen. Aber dazu später mehr.
Aber genug der Theorie, kommen wir zur Praxis. Jetzt müsst ihr besonders aufpassen, denn dies ist der schwierigste Teil des gesamten Rätsels.
Wir erstellen uns ein Event, einen ganz normalen Schalter und nennen ihn „Schalter 1“.
Ebenen-Priorität: Unter Spielerebene
Auslöser: Berührung durch Spieler
Grafik: Ein blauer Schalter
Damit wir auch sehen, dass der Schalter etwas macht, brauchen wir erst einmal eine Bewegungsanimation und ein kleiner Sound, um es realistischer zu machen. Durch die Bewegungsroute wird der Schalter gedrückt und geht dann in die Ausgangsposition zurück.
Nun kommt der schwerste Teil, ich hoffe ich erkläre es euch jetzt gut genug.
Wie ihr euch erinnert, haben wir im letzten Schritt vier Variablen erzeugt:
Variable Feuer 1
Variable Feuer 2
Variable Feuer 3
Variable Feuer 4
Diese müssen wir nun benutzen. Wenn wir einen Schalter betätigen, werden jetzt eine oder mehrere Variablen vergrößert oder verkleinert (addiert oder multipliziert), wie ihr im nächsten Bild seht.
Variable Flamme 1: +=2
Variable Flamme 3: +=1
Event „Flamme 1“ hatte den Ausgangswert 0 in der Variablenbedingung. Wird nun der Wert durch +2 auf 2 gesetzt, wird nun Reiterseite 3 geladen. Seht am besten noch einmal nach. Event „Flamme 1“ wäre nun nicht mehr die leere Feuerschale sondern hätte nun die kleine gelbe Flamme. Genau so gibt es jetzt bei Event „Flamme 3“ eine Veränderung. Die Variable wird um 1 erhöht. Die Feuerschale ist nun nicht mehr erloschen, sondern es ist nun ein rotes Glühen zu sehen.
Achtung: Bitte beachtet, dass wir den Wert multiplizieren. Verwechselt dies nicht mit „Wert setzen auf“. Dies sind zwei verschiedene Einstellungen in der Variablensteuerung!
Aber halt, werden jetzt einige sagen! Was ist, wenn ich mehrmals über die Schalter laufe, die Variable würde ja ewig erhöht werden oder ewig verringert. Es gäbe kein Ende!
Richtig, aus diesem Grund bauen wir uns nun einen kleinen Sicherungsmechanismus ein. Wie ihr ja sicher noch wisst, hatten wir die Flammen bis zur Variablengröße 4 eingestellt und 0 war der geringste Wert. Also machen Werte über 4 und kleiner als 0 keinen Sinn.
Darum fragen wir jetzt per Bedingung ab:
Ist die Variable „Flamme 1“ denn so groß wie 5 oder größer?
Wenn Nein: Passiert gar nichts.
Wenn Ja: Geben wir einen Variablenbefehl aus. Variable Flamme 1 = 0
Ist die Variable „Flamme 3“ denn so groß wie 5 oder größer?
Wenn Nein: Passiert gar nichts.
Wenn Ja: Geben wir einen Variablenbefehl aus. Variable Flamme 3 = 0
Ist die Variable „Flamme 1“ denn so groß wie -1 oder kleiner?
Wenn Nein: Passiert gar nichts.
Wenn Ja: Geben wir einen Variablenbefehl aus. Variable Flamme 1 = 0
Ist die Variable „Flamme 3“ denn so groß wie -1 oder kleiner?
Wenn Nein: Passiert gar nichts.
Wenn Ja: Geben wir einen Variablenbefehl aus. Variable Flamme 3 = 0
So können keine Werte mehr größer als 4 oder kleiner als 0 sein.
Achtung: Hier benutzen wir den Befehl „Wert Setzen auf“ in der Variablenkontrolle! Wir multiplizieren oder dividieren hier nicht!
Soweit so gut, damit ist dieses Event fertig.
Jetzt kommt der Rechenteil der Aufgabe! Wir haben mit Hilfe von Schalter 1 nun die Variable 1 auf 2 erhöht und die Variable 3 auf 1. Nun machen wir so etwas Ähnliches auch bei den blauen Schaltern 2, 3 und 4. Nur können wir dies nicht irgendwie machen. Irgendwann muss ja einmal ein Zustand erreicht werden, bei dem eine Lösung möglich ist.
Unsere Lösung ist, alle Flammen blau zu bekommen, sprich alle Variablen auf 4 zu setzen. Da wir aber die Variablen mit den Schaltern immer wieder ändern, müssen wir uns einen Lösungsweg ausdenken, der bei mir wie folgt aussieht:
Schalter | Variable Feuer 1 |
Variable Feuer 2 | Variable Feuer 3 | Variable Feuer 4 |
Schalter 1 |
+2 | / | +1 | / |
Schalter 2 | -1 | +3 | +1 | / |
Schalter 3 | +1 | +1 | / | +3 |
Schalter 4 | +2 | / | +2 | +1 |
Es wurde ja schon beim Event „Schalter 1“ eingestellt, dass die Variablen nicht höher als 4 oder kleiner als 0 sein können. Darum folgt, was folgen muss, falsche Reihenfolge der Schalter ergibt einen falschen Lösungsweg. Man muss die richtigen Schalter in der richtigen Reihenfolge aktivieren, damit es klappt.
Jetzt braucht ihr nur noch die Schalter 2, 3 und 4 einbauen. Dies sieht dann so aus:
Schalter 2:
Schalter 3:
Schalter 4:
Wir ändern mit den Schaltern nun ständig die Einstellungen unserer Flammen. Jedoch, wenn man noch mal von vorn beginnen will, ist es schon schwer, die richtigen Schalter zu drücken, um zum Ausgangswert 0 zurückzukehren. Dies erledigt dann unser Schalter 5, der rote. Dieser setzt, wie man sieht, alle Variablen zurück auf 0.
Damit sind wir mit den Schaltern durch.
Tipp: Um es etwas komplizierter zu machen, tauscht die Positionen der Schalter aus!
Die Lichtsteuerung
Willkommen bei der Lichtsteuerung. Da der schwierigste Teil hinter uns ist, kann es nun nur noch einfacher werden. Wir öffnen noch einmal unser erstes Event, den Autostart. Hier müssen wir nun noch einen neuen Schalter setzen, nämlich den Schalter für die Lichtsteuerung der Flammen. Damit sind wir in diesem Event schon fertig.
Nun kommt ein neues Event auf die Map, welches ich schlicht und einfach „Licht“ genannt habe
Bedingung ist hier unser gerade erstellter Schalter: „Lichter aktualisieren“
Auslöser: Paralleler Prozess
Rufen wir uns noch einmal etwas ins Gedächtnis:
EFFECTS[14] = ["GROUND6", "Light", 3, 3, 150, 1, Tone.new(255,-100,-255), 37, 10, 0, 0, 1000]
EFFECTS[15] = ["Orange1", "Light", 2, 2, 150, 1, Tone.new(255,-255,-255,255), 4, 10, 0, 0, 1000]
EFFECTS[16] = ["Gelb1", "Light", 2, 2, 150, 1, Tone.new(255,-100,-255), 5, 10, 0, 0, 1000]
EFFECTS[17] = ["Gruen1", "Light", 2, 2, 150, 1, Tone.new(-255,255,-255,100), 6, 10, 0, 0, 1000]
EFFECTS[18] = ["Blau1", "Light", 2, 2, 150, 1, Tone.new(-255,255,255,100), 7, 10, 0, 0, 1000]
EFFECTS[19] = ["Orange2", "Light", 2, 1, 150, 1, Tone.new(255,-255,-255,255), 8, 10, 0, 0, 1000]
EFFECTS[20] = ["Gelb2", "Light", 2, 2, 150, 1, Tone.new(255,-100,-255), 9, 10, 0, 0, 1000]
EFFECTS[21] = ["Gruen2", "Light", 2, 2, 150, 1, Tone.new(-255,255,-255,100), 10, 10, 0, 0, 1000]
EFFECTS[22] = ["Blau2", "Light", 2, 2, 150, 1, Tone.new(-255,255,255,100), 11, 10, 0, 0, 1000]
EFFECTS[23] = ["Orange3", "Light", 2, 2, 150, 1, Tone.new(255,-255,-255,255), 12, 10, 0, 0, 1000]
EFFECTS[24] = ["Gelb3", "Light", 2, 2, 150, 1, Tone.new(255,-100,-255), 13, 10, 0, 0, 1000]
EFFECTS[25] = ["Gruen3", "Light", 2, 2, 150, 1, Tone.new(-255,255,-255,100), 14, 10, 0, 0, 1000]
EFFECTS[26] = ["Blau3", "Light", 2, 2, 150, 1, Tone.new(-255,255,255,100), 15, 10, 0, 0, 1000]
EFFECTS[27] = ["Orange4", "Light", 2, 2, 150, 1, Tone.new(255,-255,-255,255), 16, 10, 0, 0, 1000]
EFFECTS[28] = ["Gelb4", "Light", 2, 2, 150, 1, Tone.new(255,-100,-255), 17, 10, 0, 0, 1000]
EFFECTS[29] = ["Gruen4", "Light", 2, 2, 150, 1, Tone.new(-255,255,-255,100), 18, 10, 0, 0, 1000]
EFFECTS[30] = ["Blau4", "Light", 2, 2, 150, 1, Tone.new(-255,255,255,100), 19, 10, 0, 0, 1000]
Dies sind unsere Schalter zu den Lampen. Es betrifft hier die Schalter 4 – 19. Mit diesen 16 Schaltern steuern wir die Lichter der Flammen.
Darum müssen wir nun als nächsten Arbeitsschritt 16 Schalter erstellen, die da heißen:
Schalter-Nr. | |
4 | Licht Orange 1 |
5 | Licht Gelb 1 |
6 | Licht Grün 1 |
7 | Licht Blau 1 |
8 | Licht Orange 2 |
9 | Licht Gelb 2 |
10 | Licht Grün 2 |
11 | Licht Blau 2 |
12 | Licht Orange 3 |
13 | Licht Gelb 3 |
14 | Licht Grün 3 |
15 | Licht Blau 3 |
16 | Licht Orange 4 |
17 | Licht Gelb 4 |
18 | Licht Grün 4 |
19 | Licht Blau 4 |
Wenn ihr fertig seit, kommt nun etwas Bedingungsabfragenchaos auf uns zu, aber keine Angst, es geht wieder Schritt für Schritt. Wir haben ja noch unser neues Event mit dem Namen „Licht“ auf
Am Anfang kommt erst einmal ein „Wait = 2 Frames“ hin. Dieses beugt Lags vor.
Der nächste Schritt ist ein Abfrageblock für je eine Flamme.
Darum fragen wir nun ab:
Variabel Flamme 1 = 0
Wenn ja:
Schalter Licht Orange 1 = AUS
Schalter Licht Gelb 1 = AUS
Schalter Licht Grün 1 = AUS
Schalter Licht Blau 1 = AUS
Dies ist logisch. Kein Feuer brennt, darum brauchen wir auch keinen Feuerschein. Also jegliches Licht für das Event „Flamme 1“ aus.
Sollte die Variable nicht 0 sein, kommen wir zur nächsten Abfrage:
Variabel Flamme 1 = 1
Wenn ja:
Schalter Licht Orange 1 = AN
Schalter Licht Gelb 1 = AUS
Schalter Licht Grün 1 = AUS
Schalter Licht Blau 1 = AUS
Wenn die „Variable Flamme 1“ gleich 1 ist, dann ist die kleine rote Flamme an, darum müssen alle anderen Schalter aus sein, außer der Schalter für das kleine orange Licht.
Sollte die Variable nicht 1 sein, kommen wir zur nächsten Abfrage:
Variabel Flamme 1 = 2
Wenn ja:
Schalter Licht Orange 1 = AUS
Schalter Licht Gelb 1 = AN
Schalter Licht Grün 1 = AUS
Schalter Licht Blau 1 = AUS
Wenn die „Variable Flamme 1“ gleich 2 ist, dann ist die schon etwas größere gelbe Flamme an, darum müssen alle anderen Schalter aus sein, außer der Schalter für das gelbe Licht.
Sollte die Variable nicht 2 sein, kommen wir zur nächsten Abfrage:
Variabel Flamme 1 = 3
Wenn ja:
Schalter Licht Orange 1 = AUS
Schalter Licht Gelb 1 = AUS
Schalter Licht Grün 1 = AN
Schalter Licht Blau 1 = AUS
Wenn die „Variable Flamme 1“ gleich 3 ist, dann ist die schon recht große grüne Flamme an, darum müssen alle anderen Schalter aus sein, außer der Schalter für das grüne Licht.
Sollte die Variable nicht 3 sein, kommen wir letzten Abfrage:
Variabel Flamme 1 = 4
Wenn ja:
Schalter Licht Orange 1 = AUS
Schalter Licht Gelb 1 = AUS
Schalter Licht Grün 1 = AUS
Schalter Licht Blau 1 = AN
Wenn die „Variable Flamme 1“ gleich 4 ist, dann ist die große blaue Flamme an, darum müssen alle anderen Schalter aus sein, außer der Schalter für das blaue Licht.
Damit hätten wir aber nur die Lichtersteuerung des Events „Flamme 1“ fertiggestellt. Wir haben aber noch drei weitere Flammen. Darum kopieren wir uns diesen Teil der Bedingungsabfrage und ändern die Variablen und Schalterwerte ab:
Was sehen eure vom Tutorial entzündeten Augen denn da am Ende? Kennen wir diesen Befehl nicht?
Die Antwort lautet: JA!
Aber warum stellen wir hier diesen Scripteintrag noch einmal hin? War nicht die Rede davon, dass der Scripteintrag dafür zuständig sei, die Lichter bei Änderungen zu aktualisieren?
Jetzt habt ihr mich aber! Ja ist auch so ... eigentlich sollte der Scriptbefehl, wenn er einmal ausgeführt wurde, auch seine Wirkung tun. Aus irgendeinem Grund macht er dies aber nicht, darum muss er am Ende stehen, damit die Lichter aktualisiert werden, wenn der Schalter geändert wird.
Hier noch einmal der Script Befehl: $game_map.csca_light_need_refresh = true
Damit sind wir hier schon fertig!
Die Lösungsabfrage
Fast geschafft! Nun müssen wir nur noch die Bedingung festlegen, wann das kleine Rätsel gelöst ist. Darum öffnen wir uns noch einmal das Event „Licht“. Wie lösen wir es auf? Alle vier Flammen sollten zur Lösung groß und blau sein. Dazu müssen alle Variablen auf 4 sein.
Fragen wir dies doch ab und legen mehrere Bedingungen direkt hintereinander.
Also fragen wir nun ab:
Bedingung Variable Flamme 1 = 4
Wenn ja: Bedingung Variable Flamme 2 = 4
Wenn ja: Bedingung Variable Flamme 3 = 4
Wenn ja: Bedingung Variable Flamme 4 = 4
Sollte dieser Zustand eintreten, ist das Rätsel gelöst und einiges wird nun aufgelöst:
Ein neuer Schalter wird aktiviert: „Schalter und Flammen AUS“
Wait = 20 Frames
Ein Türknarzen für Detailverliebte, bei mir Earth 8, 80, 55
Türbewegung für eine Tür, die wir toller Weise noch nicht eingebaut haben
Ein zweiter neuer Schalter wird aktiviert: „Dungeon Tür I offen“
Als letztes nutzen wir den guten alten Eigenschalter, um das Event zu deaktivieren
Damit wären wir in diesem Event fertig und ich zeige euch noch kurz wie es bei mir aussieht. Eine Erklärung für die ganzen Schalter folgt danach.
Damit sind wir mit diesem Event fertig. So, nun zur Erklärung der ominösen neuen Schalter. Da wir ja Einiges eingeschalten haben, müssen wir auch einiges wieder ausschaltet. Ergibt Sinn, oder?
Schalter „Schalter AUS“
Mit diesem Schalter sorgen wir dafür, dass die Schalter keinen Blödsinn mehr machen können. Öffnet noch einmal alle fünf Schalter und erstellt noch eine Reiterseite, in dem der Schalter zwar gedrückt werden kann, aber nichts mehr passiert.
Vergesst nicht die Bedingungen einzustellen!
Achtet auch auf die Farben der Schalter, wenn ihr Eventseiten kopiert. Es sieht doof aus, wenn die Schalterfarbe der Map plötzlich wechselt.
Schalter „Dungeon Tür I offen“
Als letztes kommen wir noch zur Türsteuerung. Setzt euch die Tür an die Mauer eurer Wahl. Als Grafik nehmt ihr eine beliebige Tür. Die Grafik der Tür sollte verschlossen sein. Dies erfolgt alles auf der ersten Ebene. Zu beachten ist also, dass die Tür auf der Spielerebene ist und der Auslöser auf Aktionstaste steht.
Auf der zweiten Seite könnt ihr die Tür nun einstellen, wie ihr es gewohnt seid. Bei mir ist die Tür immer auf Spielerebene und der Auslöser ist Berührung durch Spieler.
Bei den meisten dürfte jetzt ein Teleport im Inhalt stehen – bei mir nicht. Denn unser kleiner Protagonist läuft nur durch die Tür, um dem nächsten kleinen Rätsel geradewegs in die Arme zu laufen.
Vergesst nicht, den Schalter zu setzen und eventuell im letzten Event, was wir bearbeiten haben, noch das richtige Event für die Türsteuerung einzustellen.
Damit sind wir am Ende des Tutorials angelangt.
Wenn ihr alles genau nach Vorlage gemacht habt, dürftet ihr nun ein schönes kleines Rätsel haben. An vielen Ecken könnte man einiges anders machen, auch durch Scriptbefehlte vereinfachen. Aber wie sagt man so schön: „Viele Wege führen nach Rom.“ Dies war meiner und habe habe mich für ihn entschieden, da meine Tutorialreihe gerade an neue Makerfreunde gerichtet ist. Darum sollte es so einfach wie möglich sein. Ich hoffe sehr, dass alles verständlich war. Wenn nicht, dann scheut euch nicht, nachzufragen.
Im Übrigen könnt ihr mit dieser Methode auch jeden anderen Licht-Script nutzen. Jedoch ist jeder Script anders und ich habe nur diesen hier erklärt. Bei anderen Scripten müsstet ihr dann selber die nötigen Anpassungen vornehmen.