tach
also ich hab mich gefagt, wie ich ein event mache, dass gestartet wird, wenn ein npc "drauftritt" aber nicht wenn der held das feld berührt!!! wie mach ich das?
tach
also ich hab mich gefagt, wie ich ein event mache, dass gestartet wird, wenn ein npc "drauftritt" aber nicht wenn der held das feld berührt!!! wie mach ich das?
N'abend desRed,
hmm ... mach einen PARALLEL PROCESS der die X und die Y Achse des Trigger-Events und des Events der das ganze durch Berührung auslösen soll abgleicht. Stimmen X und Y dann überein, passiert dann ein Ereignis deiner Wahl. Der PARALLEL PROCESS kann auch der eigentliche Trigger-Event sein.
=BEISPIEL=
Zur Erklärung:
Trigger-Event = Event der berührt werden soll damit was geschieht.
<>IF VAR [00X: NPCX] V[00X: TRIGGERX] (=)
<>IF VAR [0XX: NPCY] V[0XX: TRIGGERY] (=)
<>FLASH SCREEN
Also wenn X vom NPC und X vom TRIGGER übereinstimmen und auch noch Y vom NPC mit Y vom TRIGGER übereinstimmt, dann flashe den Screen.
Einen anderen Weg kenne ich sonst nich. Vielleicht weiss jemand anderes eine bessere Lösung mir fällt grad nur die ein. >_<
Nein eigentlich gibt es keine einfachere Loesung man koennte es nur schwerer machen in dem man die Variablenanzahl hochschraubt... oder versucht den Npc danach etwas sprechen zu lassen was man will... *lol*
wenn wa schon mal dem variablen scheiß sind, könnt ihr mir mit sicherheit auch vollgende frage beantworten:
bezogen zu dieser zeile
wie finde ich heraus was ich für das "X" einsetzen muss? kästchen abzählenn oder wie oder wo oder wat?Zitat
mfg
desRed
genau dasZitat
links oben ist das kästchen X = 0 und Y = 0, steht aber auch unten dran in so ner leiste, welches kästchen du markiert hast
Edit: oder so wie bei meph? kommt drauf an was ziek meinte ^^°
Geändert von melior (14.09.2003 um 03:00 Uhr)
N'abend Community,
N'abend desRed!
also machen wir es jetzt mal GANZ ausführlich.
Als erstes erstellen wir einen Parallelprocess und der muss folgende Dinge enthalten:
<>Change Var: [Var0001:TriggerX] (Set)-TriggerEvent's X Pos.
<>Change Var: [Var0002:TriggerY] (Set)-TriggerEvent's Y Pos.
<>Change Var: [Var0003:desRedX] (Set)-desRed's X Pos.
<>Change Var: [Var0004:desRedY] (Set)-desRed's Y Pos.
Dieser Event speichert also die X und Y Positionen vom TriggerEvent (der Event der berührt werden soll) in den Variablen 0001 + 0002 ab. In den Variablen 0003 und 0004 werden die Coordinaten vom Event "desRed" gespeichert. In diesem Beispiel ist der Event "desRed" der Event der den Trigger berühren soll, worauf daraufhin ein Ereignis stattfindet.
Als nächstes brauchen wir den eigentlichen Trigger, der abgleicht ob beide Positionen übereinstimmen und dann einen Switch auslöst oder ähnliches macht. In diesen Event muss folgendes eingetragen werden:
<>IF VAR [0001:TriggerEventX] V[0003:desRedX] (=)
<>IF VAR [0002:TriggerEventY] V[0004:desRedY] (=)
<>FLASH SCREEN
Wie bereits gesagt überprüft dieser Event ob die Coordianten in der Variable 0001 und 0003 identisch sind. Sind sie es werden die Coordinaten in den Variablen 0002 und 0004 überprüft. Sind diese ebenfalls identisch dann wird der Screen kurz "ge-flashed" sind sie es nicht dann passiert nichts.
Anstelle des FLASH SCREEN Befehls kannst du natürlich irgendetwas anderes setzen.
So das sollte dir helfen.
Fehler meinerseits .... die X-e waren nur Platzhalter weil ich ja nicht wusste welche Variablen du verwendest. Hier habe ich jetzt die ersten 4 benutzt. Wieder nur ein Beispiel also nicht auf Krampf diese Variablen Nr. wählen!Zitat
Sollte es immer noch Fragen oder Probleme geben, stehe ich per PN oder hier im Forum gerne zur Verfügung.
Zur Not kann ich dir auch eine kleine Testmap basteln die das ganze einmal in Aktion zeigt.
also, nur so als beispiel, auf einer map die 3 x 3 kästchen groß ist, ist:
oben links------------1 - 1
oben mitte------------2 - 1
oben rechts-----------3 - 1
mitte links-----------1 - 2
mitte mitte ^^--------2 - 2
mitte rechts----------3 - 2
unten links-----------1 - 3
unten mite------------2 - 3
unten rechts----------3 - 3
so ungefähr? oder wie?!?!!?!?!?
Yep genauso, aber eigentlich brauchst du das nicht, da in meinem Beispiel der erste Parallel Process Event sich die Variablen automatisch holt und der zweite diese Abgleicht. Ist IMHO einfach als die Felder zu zählen ^^Zitat
Holla die Waldfee ... ihr wart aber beide recht fix, du und Melior ^^Zitat
Ja, die X-e kann man durch eine x-belibige Variable ersetzen. Hätte ich vielleicht erwähnen sollen .... mein Fehler![]()
falsch ^^Zitat
oben links------------0 - 0
oben mitte------------1 - 0
oben rechts-----------2 - 0
mitte links-----------0 - 1
mitte mitte ^^--------1 - 1
mitte rechts----------2 - 1
unten links-----------0 - 2
unten mite------------1 - 2
unten rechts----------2 - 2
Es gibt btw. doch eine einfacher Methode, abzufragen, ob ein NPC auf das Gewünschte Event nun steht.
Erstmal muss eines beachtet werden:
Das Event auf dass der NPC stehen soll (etwa ein Schalter) muss zuerst erstellt werden, dann erst das Event des NPCs, der auf das andere Event drauf soll.
Hierbei geht es darum, dass der NPC eine höhere Event-ID hat, als der Schalter.
Die Event ID von einem Event kann man sehen, wenn man das Fenster öffnet, womit man das Event bearbeitet oder erstellt. Ganz oben steht dort neben "Event Editor" die Event ID.
Hat man nun die Events von NPC und Schalter erstellt und hat der Schalter eine kleinere ID als der NPC geht es so weiter:
Man erstellt ein Parallel Event und verwendet den befehl "Set Event ID" (der eigentlich "Get event ID" heißen sollte). Oben wählt man bei Position die Position von dem Schalter. Unten wählt gibt man eine Variable an, in der das Ergebnis eingespeichert wird, man kann sie z.B. "Schalter-ID" nennen oder so.
Letztendlich speichert dieser Befehl die ID, von dem Feld, worauf sich der Schalter befindet, in eine Variable.
Das interessante ist nun:
Steht der NPC nicht auf dem Schalter bekommt die Variable die ID von dem Schalter.
Steht aber der NPC auf dem Schalter, bekommt die Variable die ID vom NPC.
Das liegt daran, das immer die höhste ID dominant ist, wenn mehrere Events auf einem Feld stehen. Und hier hat man schon die Abfrage.
In einer Schleife wird ständig die ID von dem Feld des Schalter in einer Variable eingespeichert. Enthält nun diese Variable den ID-Wert von dem NPC, steht der NPC auf dem Schalter.
Im Endeffekt ist diese Methode ein ganzes Stück weniger Arbeit, als die Methode mit X und Y Coordinaten.
Ich hoffe ich konnte damit helfen.
C ya
Lachsen
das hättest du dir gedacht! aber ich blick da voll durch! tia, manchmal bin in nähmlich nich so dumm wie sonst!Zitat
also danke an alle die einen sinvollen beitrag geschrieben haben,
ausnahme melior §spam
Mensch... also der Lachsen... der kann... also ich will auch mal so werden wie der... irgendwie hat der es aufm Kasten... (oder is Lachsen weiblich??? weis das jemand???)
@Lachsen: Hast du Zufaellig mal mit C++ oder so gearbeitet???
Nur zum Beitrag... klingt zwar nach weniger... aber irgendwie dann doch wieder komplizierter (naja eigentlich will ich nur meine Stellungnahme verteidigen) ... zumindest haste mehr geschrieben!!!
Aber das mit deiner Version muss ich mir mal merken