PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Der Actionkampf



Prodegy
30.05.2004, 02:19
Hier mal eine Frage für all die Profis unter euch!

Ich möchte einen Actionkampf machen, aber ich weiß nicht wie!

D.h. der Held und ein Event stehen sich gegenüber, und immer wenn der Held das Event (es läuft ihm hinterher!) berührt, dann sieht man eine BA und der Held verliert Lebenspunkte!
Das wäre ja an sich kein Problem aber der Spieler muss in der Lage sein, durch "Button-smashing" dem Event auch "Schaden zuzufügen", damit es nach einer Weile zusammenbricht! (Ich nehme an, das geht unter Zuhilfenahme von Variablen)
Das eigentlich Problem, liegt eigentlich darin, das ich ein "On Hero Touch" und ein "On push key"-Event nicht in einem vereinen kann!

Wie mache ich einen Actionkampf!?

Tiny
30.05.2004, 04:01
Erst mal irgendwo aber nicht im gegner event musst du "Change Variabel" eine Freie Variabel aussuchen die du "Gegner-Lp" oder so nenn´st und "set" z.B. 5 (soviel wie der gegner Energie haben soll...). das darf nur einmal am anfang passieren sonst stirbt der gegner nie...

Du machst einfach den Gegner auf "on hero touch"...
Dann das mit der BA und Lebenspunkte verminderung.
Darunter machst du ein "Enter Password" und suchst eine freie Variabel aus. Dann machst du nur ein Häckchen bei 5.
Als nächstes eine "Fork condition" (dritte Seite der Befehle)
und wählst bei "Variabel" die Variabel aus die du schon vorher verwendet hast. Dann wählst du "5" und "same". Das Häckchen
bei "Else case" kommt noch raus. In die Fork über den
Worten "End case" machst du eine BA auf dem Gegner und "Change Variabel" wählst "Gegner-Lp" und "-" 1. Unter den Worten "End Case2 machst du noch eine "Fork Condition" wählst bei "Variabel" die
"gegner-Lp" aus und "0" und dann noch "same". das Häckchen bei "Else Case" raus. In die fork, über "End Case" machst du "Change switch" und stellst den Switch "Gegner-tot" auf "on". Dann noch eine Zweite
seite ohne Grafik, die erst aktiviert wird wenn der Switch "Gegner-tot" on ist.

So, das ist zwar nichts für Profis...

Hoffe du konntest mir folgen...
Tiny

Manni
30.05.2004, 14:43
Man könnte es auch so machen, dass man eine Fork mit ELSE Case macht, die abfragt, ob der Event durch die Aktionstaste ausgelöst wurde. Dann macht man in den einen Teil den Angriff des Gegners und in den Anderen den Angriff des Spielers rein. Ich hoffe du hast das verstanden :D

Manni

Dhan
30.05.2004, 16:54
Wenn mans auf so einer Methode macht, wird das KS nervig weil man manchmal die Gegner nicht trifft, wenn man sie treffen können müsste und manchmal trifft, wenn man das nicht können müsste (das kommt daher, dass die Koordinaten gerastert sind und keine Kommazahlen haben)

ich empfehle, wenn der Schlag an ist, wird ein Switch aktiviert, anschließend werden vom Hero die Scene Werte genommen (ja, SCENE, nicht Koordinaten!) und ein bißchen verändert in Richtung seines Blickes
dann überprüft jeder Gegner, ob er in einem gewissen rechteckigen Bereich um diese Werte ist (also seine eigenen Werte nicht allzu unterschiedlich sind), wenn ja, macht er Aua

Viiiiel präziser und für den Spieler viiiiel angenehmer

Rayman
30.05.2004, 22:43
woow, cool jetzt habe ich es hingekriegt das der gegner angreift...*lach*
aber wie mache ich es das auch mein Chara angreifen kann?

Greetz8)

Dhan
31.05.2004, 02:58
Na kann man dir schlecht sagen wenn man net weiß, auf welche Weise deine Gegner angreifen

Rayman
31.05.2004, 03:15
Sie greifen so an wie Tiny es beschrieben hat!
D.h. sie fügen mir bei Kontakt schaden zu!

Manuel
31.05.2004, 03:37
Das ist doch einfacher als man denkt, aber seltsamerweise weiß es doch so gut wie keiner ^^. Auf Eventseite 3 wählt man "Fork Conditions..." und im neuen Fenster wählt man die 2. Registerreihe. Dann wählt man mit der Maus "Started by Decision Key" und klickt bei Bedarf ein Häckchen auf "Add ELSE Case". Dann auf "Ok" klicken.

Alle Befehle, die nach dem "IF[...]" drankommen, passieren, wenn man die Leer- oder Returntaste gedrückt hat (also z.B. BA beim Gegner und tot ist er ^^). Alles, was nach ":Else Case" kommt, passiert, wenn der Gegner den Helden angreifen kann (also z.B. BA beim Helden und der Held gibt den Löffel ab ^^).

EDIT: Beim "Event Start Condition" muss natürlich die Funktion "On Touch (Event,Hero)" ausgewählt sein.

2. EDIT: Diese Methode würde ich allerdings nur dann empfehlen, wenn "Frequency" einen anderen Wert als 8 hat, da ansonsten der Gegner einen Dauerangriff bei Berührung macht ^^.

Rayman
31.05.2004, 03:42
Thx... das hilft mir echt weiter!!!!! :-))

Prodegy
08.06.2004, 19:05
HA! Hab ich den Thread doch noch gefunden!
Hätte nämlich doch noch eine Frage:
Also das mit dem Kampf an sich geht wie geschmiert, wenn ich gewinne, aber wenn verliere heißt's dann immer Game Over!
Jetzt denkt ihr euch zwar sicher, "Was will der von uns?" aber mein Held soll nicht sterben, wenn er verliert!
Sicher, ich könnte eine Variable erstellen, die dann als "Helden LP" dient, aber das erfüllt meinen Zweck nicht!

Es ist für die Situation essentiell, das der Held Lp verliert!
Wenn er aber verliert soll es nicht Game over heißen, sondern er wird wieder, sagen wir der Einfachkeit halber, an den Anfang eines Dungeons zurück teleportiert!

Geht das überhaupt??

Manni
08.06.2004, 20:16
Du kannst, wenn du diese Option "Begin Battle" oder so ähnlichn auswählst so ein Häkchen makieren. Dann wird so eine Art ELSE Case hizugefügt, dass heißt, wenn der Held den Kampf verliert, wird dieser Teil aufgerrufen. Ich hab die einzelnen Begriffe nicht so im Kopf ^^ Musst du einfach mal testen...

Manni

Prodegy
10.06.2004, 02:52
http://www.multimediaxis.de/images/smilies/old/s_010.gif
Ja, schön und gut, aber...(siehe rest vom Thread!)
das ganze soll ein AKTION-kampf werden!
Also einer von diesen Buttonsmashing-Kämpfen!
Kein normaler Kampf!
Und da weiß ich eben nicht, wie man es fertigstellt, den Helden zwar Lebenspunkte verlieren zu lassen, aber ihn nicht sterben zu lassen!

Manni
10.06.2004, 04:18
Wenn du die LP veränderst (Nicht irgendeine Variable) kannst du auch dort so ein Häkchen machen, bzw. weglassen. Beim Deutschpatch heißt es "Tod ermöglichen" ka wie es in der engl. version heißt. Wenn da kein Häkchen ist, verliert der Held zwar HP, stirbt aber nicht...

Manni

Manuel
10.06.2004, 19:50
Du wählst beim Gegner auf Eventseite 1 den Befehl "Change HP..." aus. Unter "Target" stellst du dann ein, wem was abgezogen werden soll ("Fix" = einen bestimmten Helden, "All Party Members" = Die ganze Party). Bei "Set" stellst du "Decrease HP" ein, bei "Operand" gibst du neben dem "Set"-Feld den Wert ein, der abgezogen werden soll, wenn der Gegner angreift.

Wenn du willst, das dein Held NICHT stirbt, musst du zusätzlich das Häckchen vor "Impossibile Death" deaktivieren. Dadurch hat der Held immer mindestens 1 HP übrig. Und das kannst du in einer Fork Condition abfragen. Wenn der Held nur noch 1 HP übrig hat, wird er z.B. irgendwohin teleportiert. Das kannst du dann einstellen ^^.

Prodegy
10.06.2004, 20:02
Ja, so ähnlich hatte ich mir das schon gedacht, aber die Sache mit der "Fork condition" ist die, dass es die Möglichkeit gar nicht gibt, das das Ereignis auszulösen, wenn der Held nur noch ein LP hat!
Wenn man als Bedingung "Hero" wählt und dann "LP" dann erscheint dort nur "above"!
D.h. Wenn ich einstelle "1 Lp-above", dann wird das ereignis gleich nach dem ersten Schaden ausgeführt!

Ich hoffe ihr versteht das Problem!

Manni
10.06.2004, 20:11
Dann musst du das Teil halt mit zwie Seiten machen. Auf der ersten machste garkeine Bedingung und auf der zweiten "1 Lp-above". Auf die erste machst du dann das Ereigniss hin, was beim "Tod" des Helden ausgeführt werden soll. Der Maker geht nämlich so lange auf die 2. Seite, bis die LP gleich 1 sind (oder weniger)

Manni

Manuel
10.06.2004, 20:17
Ups, stimmt ja! ^^
Da musst du davor die Helden-HP in einer Variable speichern. Du wählst auf Eventseite 1 den Befehl "Change Variable" und füllst die Felder aus ("Hero" => "[Heldenname eingeben]" => "HP"). Dann kannst du mittels Fork Condition die Variable selbst abfragen, du musst halt noch darauf achten, dass der Punkt unter "Variable" das Wort "Same" ausgewählt ist. Außerdem muss der Wert "Set" auf "1" gestellt sein.

EDIT:
@Manni_the_Dark: Stimmt, deine Methode funktioniert so auch ^^.