Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 31

Thema: Event nur aktiv, wenn Held darauf steht?

  1. #1

    Event nur aktiv, wenn Held darauf steht?

    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.

  2. #2
    Du musst die Variablen vom Helden und vom Event abfragen in nem Fork


    If Variable Held X, Y equal to Event X Y
    Show picture no. x

    else
    Erase pic no. x


    nur so denke ich wirst du dein problem lösen können

  3. #3
    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?

  4. #4
    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.

  5. #5
    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.

  6. #6
    Zitat Zitat von Sushi Beitrag anzeigen
    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

  7. #7
    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.

    Außerdem je kompakter die Sache, desto einfacher

    Besten Dank an alle.

  8. #8
    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:
    Code:
    if XXX is OFF then
      switch XXX = ON
      vari YYY = wert
    end:
    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:
    Code:
    if XXX is On then
      vari PosX = Held X
      vari PosY = Held Y
      note : ID abfragen etc
      vari PosX2 = Held X
      vari PosY2 = Held Y
      if PosX != PosX2 then
        if PosY != PosY2 then
          note: lösche Bild
          Switch XXX OFF
        end:
      end: 
      wait 0,0
      wait 0,0
      wait 0,0
    else
      wait 0,0
      wait 0,0
      wait 0,0
    end:
    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.

  9. #9
    @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?

  10. #10
    Es geht auch mit deiner Möglichkeit, ohne Zweifel.

  11. #11
    @relxi: Ja aber wie? Weil ich meine, dass der Maker die Bedingung nicht hat, oder?

  12. #12
    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.

  13. #13
    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.

  14. #14
    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 Zitat von Leana Beitrag anzeigen
    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)

  15. #15
    Zitat Zitat von Dhan Beitrag anzeigen
    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.

  16. #16
    @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*

  17. #17
    @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 ^^

    Geändert von Dhan (01.09.2010 um 23:30 Uhr)

  18. #18
    Zitat Zitat von Dhan Beitrag anzeigen
    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?

  19. #19
    Bin mal so frei und zitiere mich selbst:
    Zitat Zitat von Leana Beitrag anzeigen
    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.

  20. #20
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •