Ich grüß euch.
Ich bin im Moment am überlegen, ob es eine Möglichkeit gibt ein Event zu erstellen, welches nur aktiv ist, wenn der Held darauf steht.
Also, beispielsweise: Der Held stellt sich auf das Event - es erscheint ein Picture.
Nun geht der Held wieder von dem Event runter - Bild soll verschwinden.
Geht das?
Habe bereits etliche Sachen ausgetestet, aber nichts hilft irgendwie.
Ja ich wollte es halt sehr schlicht halten, ansonsten müsste ich für jede Map die Koordinaten abfragen.
Oder die Koordinaten des Helden in die Common Events?
Das ganze würde natürlich 2 Events benötigen:
das, welches die Koordinaten abfragt und
das, welches aktiviert werden soll.
Im Grunde kommt es nur darauf an, wie oft solche Events auftauchen. Wenn es selten ist, dann würde ich nur die Events kopieren, da kann man sich wenigstens sicherer sein, dass sie nicht mit anderen Events kollidieren. Ist es natülich essenziell, dann natürlich CommonEvent. Allerdings frag ich mich, ob man das nicht auch in eines packen kann, was beide Parts übernimmt. Ist alles nur eine Frage, wofür es da sein soll.
Machs über Terrain ID: Statt einem Event nimmst du einfach ein Tile, dem du eine sonst nicht verwendete Terrain ID gibst, sollen es verschiedene Untergründe sein, kannst du ja einfach Events drübersetzen die nur Grafik liefern.
Anschließend speicherst du die Koords des Helden, schaust ob da deine Terrain ID is und wenn ja, Picture.
--
class Dog { //(...)
boolean getBuddha() { throw NullPointerException; } }
Spielt Hero-Chan!
Ja ich wollte es halt sehr schlicht halten, ansonsten müsste ich für jede Map die Koordinaten abfragen.
Oder die Koordinaten des Helden in die Common Events?
...
Machs dir doch einfach, du erstellt ein Mapevent mit das ein PP ist, das fragt dann seine eigene Position und die des Helden ab, wenn die übereinstimmen - also (Gegner X - Hero X = 0 etc.)- dann zeigst du das bild an, wenn nicht löscht du die ID, das ganz mit 3x 0.0 waits
Ah, ok. Ja das hilft mir. Dann werd ich das mal ausprobieren, besten Dank.
An ein Parallel-Event hab ich noch gar nicht gedacht.
Ich wollte das ganze nämlich am liebsten in EINEM Event haben. Da es sowas öfter geben wird und ich keine Lust habe für jede Map mehrere Events immer zu kopieren.
Achso, dann machs mit einem PP, welches darauf wartet das ein Switch "XXX" angeht. Dann machst du Map Event welches den Switch "XXX" an macht und eine Variable "YYY" - die eine ID speichert, für verschiedene Bilder - auf eine Wert.
Das Mapevent sieht dann so aus:
Das PP wartet (wieder mit 3x 0,0) darauf das XXX angeht und wenn ja, speichert er X- und Y-Pos des Helden. und zeigt das Bild an. Solange der Switch On ist fragst du immer wieder ab ob sich X- und Y-Pos verändert haben:
Kann sein, das da noch Fehler drin sind, aber ich hoffe du hast es verstanden Damit brauchst du dann nur noch in die drauf stellt Event, die ID ändern.
@R.D.: Dann habe ich aber trotzdem das Problem, dass ich 2 Events habe und 2 Variablen für das Event. Also einmal die Koordinaten des Helden (sind im Commen Event - also fein raus) und die Koordinaten für das zu aktivierende Event.
Ist es möglich, wenn ich das ParallelEvent als unter-held auf die Position packe wo sie aktiviert werden soll. Und sie dann mit einer Bedingung einstelle, wenn die Held Koordinaten gleich dieses Events sind, ohne das dieses Event 2 Extravariablen bekommen? Also nur durch das reine betreten die Koordinaten gleichgesetzt werden können?
Oder geht das nur mit Dhans Möglichkeit mit dem Terrain?
Wenn ich es jetzt richtig verstanden habe:
Erstelle das Event, auf das der Held laufen soll, und stelle ein das dort ein Pic angezeigt wird, und ein switch aktiviert wird. Als 2. Page machst du ein PP event das sich aktiviert wenn der switch an ist:
Es wird also alle 0,1 sekunden geprüft ob der held noch die koordinaten hat, und wenn nicht wird das Bild gelöscht.
Die beiden pages sind in einem event, und dieses kann einfach so kopiert werden.
Wenn der Held vom Spieler gesteuert wird, dann kannst du auch folgendes machen:
Held berührt Event -> Picture wird angezeigt. Dann wird über Key Input Proc gewartet, bis eine der Pfeiltasten aktiviert wird. Dann Picture wieder löschen.
Sollen außer den Pfeiltasten noch weitere Tasten wirksam sein, aber nur auf die Pfeiltasten reagiert werden, dann musst du halt nach Key Input Proc noch ne Abfrage reinbauen und das ganze in ne Schleife packen. Ich hoffe, du verstehts, wie ichs mein.
Kurz in den Raum gefragt, was passt an der Terrain ID-Lösung nicht? Spart massiv Code, ich mein, alles was es braucht ist:
Var X = Hero X Coords
Var Y = Hero Y Coords
Set Terrain ID (X,Y,ID)
fork (ID = 35) {show pic 1 blabla} else {erase pic 1}
wait 0,0s
Zitat von Leana
Held berührt Event -> Picture wird angezeigt. Dann wird über Key Input Proc gewartet, bis eine der Pfeiltasten aktiviert wird. Dann Picture wieder löschen.
...
Nett gemeint, aber wenn man eine Taste gedrückt hält, aktiviert sie ein "Wait Until Key Hit" nicht, sprich wenn man nicht kurz auf dem Feld stehenbleibt, funzt das nicht (dem Maker fehlt echt eine "Until Hero Moves"-Bedingung)
--
class Dog { //(...)
boolean getBuddha() { throw NullPointerException; } }
Spielt Hero-Chan!
Kurz in den Raum gefragt, was passt an der Terrain ID-Lösung nicht?
...
Ich denke mal, die ist nicht ideal, weil sowas ja meistens für eine Ortsnamenanzeige o.ä. genutzt wird, und dafür braucht man weit mehr als 1 Terrain ID. Und entsprechend viele verschiedene (für nichts anderes nutzbare) Tiles im Chipset. Und das zahlt sich nicht aus.
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!
@sushi: ich dachte, du wüsstest es? Na dann:
Erst einmal "Variable [0001:HeldXPos] = Sprite Hero X Coordinate" setzen
dann "Variable [0002:HeldYPos] = Sprite Hero Y Coordinate" setzen
"Variable [0003:EventXPos] = Sprite Event001/This Event X Coordinate" setzen
"Variable [0004:EventYPos] = Sprite Event001/This Event Y Coordinate" setzen
Dann eine Bedingung "wenn Variable [HeldXPos] = Variable [EventXPos] dann
wenn Variable [HeldYPos] = Variable [EventYPos] dann
*Hier soll stehen, was eben passiert*
bla
bla
*hier, am Ende, dann Waits*
@Cherry: Dann kombiniert man das mit einen Below Hero On Hero Touch Event an der Stelle des Ortes, das ganz einfach noch eine Variable verändert - für jeden Ort eine Vari und der PP ändert sich dementsprechend in
Var X = Hero X Coords
Var Y = Hero Y Coords
Set Terrain ID (X,Y,ID)
fork (ID = 35) {
__fork (Ortsvari = 1) {show pic 1 Dorf1.png }
__fork (Ortsvari = 2) {show pic 1 Dorf2.png }
..
} else {erase pic 1}
wait 0,0s
(bzw bei sehr vielen Orten PPP)
edit: bei diesem Skript brauchts noch einen Switch, der vom Below-Hero-Ortsevent aktiviert wird und hinter erase pic 1 deaktiviert wird und Bedingung für die ganzen show pics ist - das Terrain-PP ist nämlich nen Tick schneller als das Below-Hero-Ortsevent
Aber du hast mich da auf was Wichtiges gebracht:
@Sushi: Was ist überhaupt der Kontext? Also was genau willst du dir bauen? Bei vielen Sachen hats Alternativideen oder sonstigen Krams für den man das Problem selbst kennen muss ^^
--
class Dog { //(...)
boolean getBuddha() { throw NullPointerException; } }
Spielt Hero-Chan!
Aber du hast mich da auf was Wichtiges gebracht:
@Sushi: Was ist überhaupt der Kontext? Also was genau willst du dir bauen? Bei vielen Sachen hats Alternativideen oder sonstigen Krams für den man das Problem selbst kennen muss ^^
...
Also mein Problem ist: Ich möchte, dass ein Bild angezeigt wird wenn man vor einem Objekt steht. Beispielsweise man geht vor eine Kiste (ohne irgendwas zu drücken) und dann erscheint über der Kiste ein Bild mit "öffnen". Dieses Bild erscheint nur, wenn der Held: 1.direkt vor der Kiste auf dem Feld steht; 2. auch in die Richtung der Kiste schaut.
Ich habe es so gesehen jetzt. Jedem Event wird 2 Variablen zugeordnet, einmal die X-Koordinate und eben die Y-Koordinate.
Probleme treten dann auf, wenn ich mehrere solcher Events auf einer Map habe, da die Bildnummer gleich ist und das ein PP ist, sodass dann alle auf der Map aktiviert werden - zumindest das löschen des Picture, da der Held ja die Koordinaten nicht erfüllt, sondern auf einem anderen Feld steht.
Was ich nun will, ist eine vereinfachte und kompakte Version davon. Also am besten eben ohne groß Variablen, denn wenn man sowas 4-5mal auf einer Map hat, bin ich ja pro Map bei mindestens 10Variablen, dass wär eine Mammutarbeit ohne Grenzen.
Vielleicht doch mit der Terrain ID? Dann würde ich dich die Variablen umgehen?
Wenn der Held vom Spieler gesteuert wird, dann kannst du auch folgendes machen:
Held berührt Event -> Picture wird angezeigt. Dann wird über Key Input Proc gewartet, bis eine der Pfeiltasten aktiviert wird. Dann Picture wieder löschen.
Sollen außer den Pfeiltasten noch weitere Tasten wirksam sein, aber nur auf die Pfeiltasten reagiert werden, dann musst du halt nach Key Input Proc noch ne Abfrage reinbauen und das ganze in ne Schleife packen. Ich hoffe, du verstehts, wie ichs mein.
...
Hier brauchst du nur eine Variable und könntest das Event beliebig oft kopieren, ohne etwas ändern zu müssen.
Jo, in dem Fall gehts mit Leanas Lösung weil wenn man erstmal in richtiger Position ist nur ein Richtungswechsel vom Feld führt und der aktiviert den Enter Password auf jeden Fall, allerdings musses noch leicht erweitert werden damit man, wenn man gegen die Truhe drückt, das Bild noch sieht, mit einer einfachen Richtungsabfrage in das Enter Password geht das aber.
Mit meiner Methode wärs auch leicht machbar, insbesondere weil das Feld unter der Truhe ja meist nicht sichtbar ist - du packst das einmalige Terrain unter die Truhe, speicherst ständig die Heldenkoords und erweiterst sie um einen Schritt in Blickrichtung.
Der Vorteil dieser Methode wäre immer noch, dass du pro Karte lediglich ein Event brauchst, insbesondere wenn das Öffnen-Bild bei jeder Truhe gleich ist
Auch eine sehr simple Lösung: ordne Events sternförmig um die Truhe wie hier:
Die weißen Scherben machen einfach:
Below Hero, On Hero Touch
fork(Hero Face Dir Richtung Truhe) {show pic, switch bla ON}
Die roten Scherben:
Below Hero, On Hero Touch
erase pic, switch bla OFF
Und die Truhe:
Seite 1: Same Level as Hero, On Hero Touch
show pic, switch bla ON
Seite 2: Same Level as Hero, Push Key, Bedingung switch bla
(normaler Truheninhalt)
("Scherben" sind hier nur zur Übersicht, natürlich sind die Events unsichtbar)
braucht viele Events aber keine einzige Variable und funktioniert garantiert problemfrei und die Events sind ja sehr schnell erstellt und sehr schnell kopiert
würd ich dir sogar empfehlen - je einfacher der Code, desto besser und einfacher gehts wohl nicht
--
class Dog { //(...)
boolean getBuddha() { throw NullPointerException; } }
Spielt Hero-Chan!