PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Monster tot, erscheint später aber wieder



Sammy
28.09.2006, 22:12
Hi!
Also, ich weiß net ob das Thema hierhin gehört, aber egal :D
Meine Frage ist folgende:
Wie das geht, dass ich ein Monster auf eine Map setze, das bei Berührung ein Kampf losgeht und nach dem Sieg das Monster verschwindet, das weiß ich bereits:p (Unglaublicherweise XD) Aber wie krieg ich das hin, dass wenn das Monster halt besiegt wurde, ich auf die nächste Map gehe, und später wieder auf die Map komme, wo das Monster besiegt wurde, und dann das Monster wieder da ist?

Noshire
28.09.2006, 22:16
Da gibts nen praktischen Befehl, der heisst "Delete Event" (oder "Clear Timer" in der ursprünglichen DonMiguel-2k-Version). Ist auf der dritten Befehlsseite unten rechts. Damit wird das Event temporär gelöscht, bis zum erneuten Betreten der Map. dürfte sich für dein Vorhaben doch prima eignen^^

Sammy
28.09.2006, 22:21
Bei mir steht da nur Erase Event, aber das ist das gleich denk ich mal oder?
Hab den RPG Maker 2003.. ;)

Noshire
28.09.2006, 22:33
Achso, ja klar, ist das gleiche^^ hab den 2k3er auch, bin aus nostalgischen Gründen aber wieder auf meinem 2k-Liebling umgestiegen^^

Frozen Bambi
29.09.2006, 10:00
Wow da lernt man ja immer was dazu den Befehl kannet ich ja garnicht :D

Du kannst es btw. auch so machen,wenn du willst,dass ein Monster tatsächlich "respawnt" würde man in einem Onlinegame sagen *g*

Wenn dein Monster kaputtgeht machst du ja nen Switch an,der dafür sorgt,dass Seite 2 des Monsters aktiv ist,die leer und ohne Grafik ist.

Wenn ja kannste einfach nen Allg. Ereignis machen dass permanent läuft (Parallel Process) .Da steckste dann ein dickes Wait rein. Paar Minuten oder so und nach dieser Zeit lässte alles Switchs wieder ausgehn,die dafür sorgen dass deine Monster "kaputt" sind.
(Wow ich hoffe das war jetzt verständlich ^^)

Kannst das dann noch verbessern indem du einfach drei solche Teile machst mit unterchiedlichen Wartezeiten.
Weil ja stärkere Monster bestimmt nicht so schnell wie schwache "wiederkommen" sollen.


Naja aber wenn die Lösung von Noshire funzt,die hört sich auch gut an ^^

Phönix Tear
29.09.2006, 14:09
Wenn wir jetzt sowieso schon beim Respawnen auf der Map sind würde ich dir allerdings Variablen empfehlen. Die haben nämlich 2 Vorteile:

1)
Du kannst ganz einfach ein PP CE machen, dass die gesamte Spielzeit läuft. In diesem CE werden pro Sekunde alle Gegner-Variablen -1 gerechnet. Man kann auch noch eine Fork einbauen ob die besagte Variable ungleich 0 ist und nur dann rechnen, ich weiß allerdings nicht was Ressourcentechnisch besser ist.
Diese Variante hat sogar noch einen Vorteil: Man kann sie ganz einfach mit einer Spielzeit-Uhr verbinden, da diese meistens ja auch im 1Sekundentak laufen ^^

2)
Du kannst die Gegner langsam erscheinen lassen, ohne das es einfach *plop* macht und sie vor einem stehen. Dazu erstellst du ein Event mit 3 Seiten. Die erste Seite steht auf "Touch (Hero/Event)" und "Same Level As Hero". Die Graphik ist die deines Monsters. Der Code ist beliebig, nur sollte am Ende der Kampf starten ;). Nach dem Kampfstart kommt der Sterb-Effekt des Monsters und die Monster-Variable (nennen wir sie hier einfach mal "Monster 1") wird auf einen beliebigen Wert gesetzt. Der Wert in der Variable entspricht der Zeit in Sekunden die das Monster braucht um zu respawnen. Auf der dritten Seite gilt als Bedingung "Monster 1" > 2, und das Monster hat nun keine Graphik mehr (durchsichtig). Außerdem noch "Below Hero" und "Push Key". Code hat es keinen. Nun zählt das CE langsam die Variable rückwärts, bis sie < 2 wird. Nun kommt die zweite Seite ins Spiel. Dort hat das Monster immer noch keine Graphik, steht ebenfalls auf "Below Hero" aber nicht auf "Push Key" sondern auf "Parallel Process". Der Code ist dein "Respawn Code". Das kann eine Battle-Animation sein, aber auch einfach ein Move-Event das erst die Transparenz des Gegners auf Maximum setzt, dann seine Graphik auf die Monstergraphik ändert und zu guter letzt in kurzen Abständen die Transparenz wieder abschaltet. Mit genügend Waits versehen wird diese Seite erst komplett ausgeführt. In der Zeit hat das CE die Variable "Monster 1" auf 0 zurückgesetzt und du hast dein altes, und nun respawntes Monster wieder. So was lässt sich natürlich auch gut mit Zählern verknüpfen, sodass ein spezielles Monster nach einigen "Tötungen" nicht mehr so schnell respawnt (um Dauercreepen zu vermeiden). Dies lässt sich durch eine Doppelverwendung deiner Gegnervariable leicht ermöglichen. Und zwar so (sollte das für dich gar nicht von Interesse sein kannst du gleich bis zum Ende springen, hier kommt nix anderes mehr ;)):

Gegner stirbt

<>Change Varibale "Monster 1" + 1
<>Change Variable "Monster 1" + ( deine Respawnzeit * 1.000 )
Was genau passiert hier jetzt?
Dazu muss ich noch kurz das System des Mehrfachverwendens von Variablen erläutern (soweit du das noch nicht kennst ;)).
Das System ist ganz einfach. Das einzige was man braucht ist eine einzelne Variable und mehrere "Aktionen" die Variablen benötigen, aber nicht alle Stellen ausschöpfen. Mit "Stellen" meine ich die Ziffern. Jede Variable im Maker hat als Maximalwert 999.999 und als Minimalwert -999.999. Also hat jede Variable 6 stellen. In unserem Beispiel gehe ich jetzt mal nicht davon aus das eins deiner Monster erst nach 17 Minuten wieder spawnen soll (~1000 Sekunden), daher sollten auch 999 reichen (16 Minuten).
Legen wir nun also für die Respawnzeit ein Maximum von 999 Sekunden fest bleiben noch 3 der 6 Ziffern der Variable übrig. In diese 3 Ziffern können wir nun einen Zähler einbauen. (Ich benutze dafür die letzten 3 Ziffern. Das muss auch so, da sonst die Abfrage im Monster-Event nicht klappen würde. Stände mein Zähler auf 2 und meine Respawnzeit auf 1 (also sollte der Gegner respawnen) und ich würde den Zähler in die ersten drei Ziffern packen, wäre das für den Maker die Zahl 2.001, also weitaus größer als 1. Also respawnt der Gegner erst nach 2000 Sekunden wieder. Um das zu vermeiden benutze ich gleich die ersten drei Ziffern, also YYYxxx. Die Abfrage im Gegner-Event wird nun so angepasst das dort nicht mehr 1 Sekunde erreicht werden muss, sondern 1000. Sobald der Zähler unter 1000 geht, respawnt das Monster wieder. Damit der Zähler nicht von unserem CE beeinflusst wird ist es nun notwendig im CE eine Fork einzubauen die erst kontrolliert ob die besagte Variable größer gleich 1000 ist, bevor diese -1000 gerechnet wird!))
Also zurück zum Zähler. Die ersten drei Ziffern sind belegt, bleiben, wie gesagt, noch weitere 3 (xxxYYY). Nach jedem Kampf wird die Gegnervariable nun um 1 erhöht, also der Zähler +1 gerechnet. Nun kommt die "Berechnung" der Respawnzeit dran. Dafür benutze ich noch eine Allgemeine Rechnervariable (Ich nenn sie einfach mal "Rechner"). Dieser Rechner wird = der Monstervariable gesetzt. Danach nimmt man ihn mod 1000. Das Ergebnis sind die letzten 3 Ziffern der Variable (die ersten drei fallen komplett weg). Damit kann ich nun ganz einfach eine Verschachtelung von Forks anschließen. Also z.B: "Wenn Rechner > 10: Respawnzeit = 10.000" else "Wenn Rechner > 30: Respawnzeit = 20.000" end.
Damit kannst du für jeden Gegner auf die Sekunde genau bestimmen wann er respawnen soll.
Hier noch mal der Gegnercode:

Held berührt Gegner

<>Beliebige Handlung (Massage, Sequenz, etc.)
<>
<>Start Battle
<>
<>Change Variable "Monster X" + 1
<>Change Variable "Rechner" = "Monster X"
<>Change Variable "Rechner" mod 1.000
<>
<>Fork Variable "Rechner" < 10
<><>Change Variable "Monster X" + 10.000
<>Else:
<>Fork Variable "Rechner" < 20
<><>Change Variable "Monster X" + 20.000
<>Else:
<>Fork Variable "Rechner" < 30
<><>Change Variable "Monster X" + 40.000
<>Else:
<>etc.
<>End:
<>
Damit hast du einen Gegner geschaffen der seine Respawnzeit seinen "Tötungen" anpasst ;)

Hoffe es hilft dir, falls du die Gegner doch noch auf der Map respawnen lassen willst ;)

mfg
Phönix Tear