PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problemee mit AKS (Schuss-AKS)



Theison
05.07.2009, 16:54
Hallo, sorry für den Titel, aber mein Problem lässt sich nicht so schnell in einer Zeile beschreiben. ;)

Also die Situation ist folgendes:
Ich will für mein kleines Fungame (mit dem Rpg Maker 2000 erstellt) ein Schuss-AKS einbauen. Wenn man den Gegner anrennt wird man auf eine Kampfmap teleportiert; Dort trifft man auf 3 Gegner die nur rumrennen und bei On Touch with Hero Schdaen machen. Die Zweite des Gegners ist einfach nur ein leeres Event wenn die Variable Gegner LP den Wert xx hat. Bis jetzt ja noch ganz simpel.

Damit man nicht nur ein Geschoss hat, gibt es 5 Geschosstypen, je nachdem was für eine Waffe der Held trägt:
1. Normales Geschoss, fliegt x Felder
2. Normales Geschoss, fliegt x Felder
3. 2 Frösche werden vom Hero weggeschmissen, einen nach vorne, und einen nach hinen
4. 3 Feuerbälle, einer fliegt geradeaus, die anderen Diagonal
5. 3 Geister, einer fliegt geradeaus, die anderen Fliegen paar Felder mit Random Movement um die Map.

Es gibt also maximal 3 Geschosse die der Held gleichzeitig abschießen kann.
Damit das ganze auch startet hab ich ein Common Event namens "Tasten" erstellt das Paralel läuft:


Wenn Switch Geschoss 1 off ist;
Wenn Switch Geschoss 2 off ist;
Wenn Switch Geschoss 3 off ist;
Enter Passwort in Tasten
Wenn Variable Tasten 5 ist:
Call Event Schuss

Dann kommt das CE "Schuss", dass nur durch Call Event ausgelöst wird.


2 Variablen die X / Y des Helden speichern

Wenn Waffe 1 ausgerüstet ist:
Variable Waffe Set 1
Variable Schaden Set bla
Teleport Event Geschoss 1 auf X / Y Hero
Switch Geschoss 1 On
Soundeffekt und fertig

Else Case

genau das gleiche nur mit Waffe 2. Ab Waffe 3 wird dann auch noch das Event Geschoss 2 auf den Hero teleportiert und der Switch Geschoss 2 On gestellt. Ab Waffe 4 gibts dann auch das dritte Geschoss und den Switch Geschoss 3

Und zum Schluss: Wait 0.0

Die Events der Geschoss sehen so aus:


Zuerst mal brauchen das Geschoss 1 den Switch Geschoss 1 damit es überhaupt an ist.
Geschoss 1 hat 5 Eventseiten, für jedes Geschoss eine.
Die Startbedingung ist: Paralel Process:

Wenn Hero Up Direction: Move Event: Start Slio Through Up Up....End Slip Throug (Kreuzchen bei ignore if can't be move ist gesetzt)
Else Case: Wenn hero Down Direction ect... wird für alle Richtungen gemacht
dann End Case:
Move All
Change Switch Geschoss 1 Off
Wait 0.0
Wait 0.1
ect.

Das gleiche hab ich dann auch für die anderen Geschosse gemacht, nur mit anderen Felderzahlen die "gemoved" werden ect. ISt aber alles nach dem gleichen System aufgebaut.

Nachdem ja durch das CE Schuss der Switch Geschoss 1 / 2 / 3 je nachdem angeschlatet wurde hab ich auch ein CE erstellt namens "Treffer 1", das Paralel läuft, das sieht so aus:


2 Variablen die Geschoss 1 X / Y Werte speichert
Get Terrain ID von Geschoss 1 in Variable Terrain 1
Wenn Terrain 1 2 (Steht bei mir für ne Wand ;)) ist:
Change Switch Geschoss 1 off

Else Case:
Wenn Switch Geschoss 1 On ist
Wenn Geschoss 1 X und Gegner 1 X gleich ist
Wenn Geschoss 1 Y und Gegner 1 Y gleich ist
Soundeffekt
Flash Event
Gegner 1 LP + Variable Schaden
Change Switch Geschoss 1 Off
End Case
End Case

Wenn Geschoss 1 x und Gegner 2 X gleich ist... ect.
Gleiche auch für den Gegner 3

End Case
Wait 0.1 sec
Es gibt auch jeweils ein CE "Treffer 2" für das gleiche mit Geschoss 2, nur mit anderen Switches, anderer Terrain Variable. Und CE "Treffer 3" gibt es natürlich auch.

Paralel läuft auch die ganze Zeit das CE "Koordinaten":

Variable Gegner 1 X set gegner 1 X Pos..
Gleiche für Y und für die anderen 2 Gegner
Wait 0.1sec

Jetzt die Probleme:
Also der wenn nur ein Geschoss aktiv sein soll klappt der Schuss wunderbar.
Nur der "Treffer" klappt nur bei jedem 2-3 Versuch. Das Geschoss fliegt zwar durch den Gegner hindurch, aber es gibt keine Trefferanimation (bzw. Sound Effekt oder das Flash Event)

Bei der Waffe 2 (Ist ein Stärkeres Geschoss, fliegt aber langsamer als das von Waffe 1) wird die Trefferanimation manchmal schon ausgelöst obwohl das Geschoss 3 Felder weit weg vom Gegner noch ist.

Bei Waffe 3 (2 Frösche, jeweils in entgegengesetzter Richtung): Der eine Frosch hüpft ganz normal, der zweite springt aber nicht und geht normal weiter, oder bleibt einfach stecken (Obwohl da gar kein Hindernis ist)

Bei Waffe 4 (3 Feuerbälle, einer geradeaus, 2 diagonal): Die 2 Diagonalen fliegen wie geplant, nur der mittlere bewegt sich manchmal gar nicht vom Fleck oder bleibt stehen. die Diagonalen bleiben manchmal auch in einem Baum hängen obwohl Slip Through eingestellt ist.

Bei Waffe 5 (3 Geister, einer fliegt geradeaus, die anderen 2 bewegen sich zufällig): Der "normale" Geist fliegt wie geplant. Bei den 2 die sich zufällig bewegen sollen bleibt immer mindestens einer aufm Hero stecken, manchmal auch alle 2.

-------

So das wars schon. Ist bischen viel Text, aber ich wollte mein Problem ausführlich schildern. Ich hab auch bei allen Events mal "Allow Event Overlap" eingestellt, aber da gabs keine großartige Veränderung.

Ich hoffe ihr könnt mir helfen. Vielen Dank schon mal im vorraus http://www.multimediaxis.de/images/smilies/old/sm_12.gif

:)


EDIT:
Hier kann man sich das alles downloaden und ansehen, falls ich es zu unübersichtlich beschrieben hab (was ja der Fall ist, höhö ;D)
http://rapidshare.com/files/252310547/AKSprob.zip.html
oder http://www.npshare.de/files/bd6b6e3a/AKSprob.zip
Übrigens: Die Datei ist 2,6 mb groß, hatte nämlich schon paar Ressis reinimportiert, sorry ;)

elsen
08.07.2009, 14:52
Ich schau mir das gerade an und verstehe schon von Anfang an eine Sache nicht:

--> Auf der Map ist ein Auto-Start Event, dass nichts tut?! (Nach dem Switch "TEST")
Was hat das für Sinn und Zweck, oder was sollte es zumindest für einen haben?

Dann hab ich natürlich etwas Schwierigkeiten mich in deinen Code einzulesen, aber das ist nicht so wild. Folgende Tipps kann ich dir auf alle Fälle geben:

- Die LP-Anzeige ist ein PP-Event. Besser wäre es, das einfach nur dann zu callen, wenn es irgendeine Änderung an den Lebenspunkten gibt.
- Genau wie Trefferabfrage1-3, die ebenfalls PP-Events sind. Allerdings würde ich das ganze noch ein wenig anders machen. Und zwar ohne, dass du ständig per PP-Event die Koordinaten der Gegner und des Geschosses bestimmst: (da übrigens auch was mit der Kollisionsrechnung nicht in Ordnung ist, bei den Treffer1-3 Events hast du die Variablen sehr oft verwechselt)

Probier es doch mal so, die Geschoss-Events über das CE "Schuss" zu steuern und bei jeder Vorwärtsbewegung prüfst du, ob das Geschoss mit einem der Gegner-Koordinaten übereinstimmt. Also nach jedem "Schritt" des Geschosses -> Treffer1-3 callen, dort die Koord.Varis aktualisieren und prüfen ob TG1X-TG3X (je nach Verwendung) == G1X-G3X ist und dasselbe mit den Y-Werten, dann erst der nächste "Schritt".

So weit so gut... Versuch einfach erstmal nachzuvollziehen, was ich gesagt habe, vllt kommst du dann von ganz allein auf bessere Lösungen. Ach ja und das "Move all" ist dabei ziemlich böse, das lässt das ganze einfrieren. Da gibts nen tollen Thread *Ich bin ein gepinnter Thread* (http://www.multimediaxis.de/showthread.php?t=71) da stehen total nützliche Sachen drin. Zum Beispiel wie lange ein Schritt bei welcher Geschwindigkeit dauert etc., das kannst du da gut gebrauchen.

Vllt konnte ich dir ja schon ein bisschen helfen...

Theison
08.07.2009, 15:04
Ich schau mir das gerade an und verstehe schon von Anfang an eine Sache nicht:

--> Auf der Map ist ein Auto-Start Event, dass nichts tut?! (Nach dem Switch "TEST")
Was hat das für Sinn und Zweck, oder was sollte es zumindest für einen haben?

Dann hab ich natürlich etwas Schwierigkeiten mich in deinen Code einzulesen, aber das ist nicht so wild. Folgende Tipps kann ich dir auf alle Fälle geben:

- Die LP-Anzeige ist ein PP-Event. Besser wäre es, das einfach nur dann zu callen, wenn es irgendeine Änderung an den Lebenspunkten gibt.
- Genau wie Trefferabfrage1-3, die ebenfalls PP-Events sind. Allerdings würde ich das ganze noch ein wenig anders machen. Und zwar ohne, dass du ständig per PP-Event die Koordinaten der Gegner und des Geschosses bestimmst: (da übrigens auch was mit der Kollisionsrechnung nicht in Ordnung ist, bei den Treffer1-3 Events hast du die Variablen sehr oft verwechselt)

Probier es doch mal so, die Geschoss-Events über das CE "Schuss" zu steuern und bei jeder Vorwärtsbewegung prüfst du, ob das Geschoss mit einem der Gegner-Koordinaten übereinstimmt. Also nach jedem "Schritt" des Geschosses -> Treffer1-3 callen, dort die Koord.Varis aktualisieren und prüfen ob TG1X-TG3X (je nach Verwendung) == G1X-G3X ist und dasselbe mit den Y-Werten, dann erst der nächste "Schritt".

So weit so gut... Versuch einfach erstmal nachzuvollziehen, was ich gesagt habe, vllt kommst du dann von ganz allein auf bessere Lösungen. Ach ja und das "Move all" ist dabei ziemlich böse, das lässt das ganze einfrieren. Da gibts nen tollen Thread *Ich bin ein gepinnter Thread* (http://www.multimediaxis.de/showthread.php?t=71) da stehen total nützliche Sachen drin. Zum Beispiel wie lange ein Schritt bei welcher Geschwindigkeit dauert etc., das kannst du da gut gebrauchen.

Vllt konnte ich dir ja schon ein bisschen helfen...

Hey, Vielen Dank für deine Antwort.
Also, dieses Autostart Event war noch übrig geblieben. Das hat einem einfach nur die ganzen Waffen übergeben, hatte es aber dann in ein CE gemacht, weil ich es beim testen wohl noch öfters braucehn würde, als auf dieser Start-Map. ;)

Ich werde mal deine Tipps ausprobieren, wenn es was hilft, dann schreib ich dir ne PN oder editier es hier rein.

An die Waits hab ich auch schon gedacht, ich werde es mal versuchen, ich hatte nur etwas Bange, das es dann zu Problemen kommt, wegen einer Mikro-Sekunde Verzögerung keine ahnung. Ich werde es mal probieren. ;)

Vielen Dank für deine TIpps