Per Event Touch (mit Koordinaten) einen Switch an & aus switchen
Das ist eine Gegner-Event-Eventpage als PP:
Man soll also den Gegner berühren & dann soll der Switch 'h dmg water' auf an gestellt & wieder ausgestellt werden wenn man den Gegner nicht mehr berührt...
Funktioniert das so. Es wirkt bisweilen so, als würde es funktionieren, aber könnt ihr mir sagen, ob das nicht zu Komplikationen mit anderen Gegner-Events führen kann?
Danke euch, Leute, für eure nette, schnelle, kompetente Hilfe immer. :>
Gibt es bei dem Maker, den du verwendest, kein "Event Touch"? Wäre eine alternative, anstelle eines PP.
Auf den ersten Blick sieht es für mich so aus:
Bleibt das Monster nach einer Berührung auf der gleichen Y-Koordinate, wird der Switch nicht ausgestellt, nur sobald sich die X-Koordinate ändert. Somit bleibt der Switch auch dann an, wenn das Monster 10 Felder unter/über dem Spieler ist.
Okay, habe jetzt einen Event-Touch-Befehl draus gemacht & eine Abweichung von 1 Tiles der Koordinaten des Spielers zum Gegner eingefügt.
Weil wegender Gegner ist Same Layer As Character. XD
Ist das so koreckt:
Scheint zu funktionieren, aber ich scheue mich noch davor das jetzt wieder in jedes einzelne Gegner-Event einzupflegen.
Ehrlich gesagt check ich nicht so ganz, was du da abfragst.
Du fragst ja jeweils ab, ob enemy x u. y == 1. Das würde dann ja nur funktionieren, wenn der enemy auf dem Tile mit den Koordinaten (1;1) steht.
Und natürlich ist es relevant, ob das Event same level ist. ^^ Ansonsten hätte es ja vorher auch nicht funktionieren können.
Nach dem, wie mir Corti das beigebracht hat, geht das so:
1. Speichere die Hero-Koordinaten in 2 Variablen
2. Speichere die Event-Koordinaten des betreffenden Events in 2 Koordinaten, also:
3. Subtrahiere die Eventposition von der Heroposition, also:
4. Multipliziere beide Variablen mit -1, falls sie unter 0 sind.
5. Abfrage:
So fragst du den bereich rund um das Event ab. Problem könnte dabei werden, dass auch ein diagonal versetztes Feld dazu gehört, dann musst du vermutlich die Abfrage anders gestalten.
Tipp: Lass die leeren ELSE CASEs weg, wenn du sie nicht nutzt. Die machen den Code nicht nur unnötig lang, sonder, kosten noch dazu Performance, da der Maker jede Zeile einzeln durchgeht, egal ob was drin steht oder nicht.
Ein Problem kann (wird) es aber noch geben: Da alle Gegner vermutlich den selben Switch für den Wasserschaden verwenden, wird jeder Gegner, in dessen Umkreis der Spieler nicht steht, den Switch ausstellen - völlig egal, ob der Spieler in einer vorherigen Abfrage eines anderen Gegner, in dessen Umkreis er tatsächlich steht, den Switch gerade erst eingeschaltet hat. Daher habe ich das ausstellen hier rausgenommen. Deswegen bräuchtest du streng genommen für jedes Event einen eigenen "dmg water"-Switch, das müsstest du also jedes Mal individuell anpassen.
Davion ab hier eine etwas gekürzte Version deines Codes:
...das mit den Switches könnte man umgehen, indem man die Gegner-Koordinaten alle geordnet in einem Event abfragt, da muss man dann allerdings die Gegner einzeln auswählen anstatt das über "this Event" zu regeln.