PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Baum pflanzen und nochwas



Engel der Furcht
20.07.2007, 11:39
Hallo Leute!

Also,
ich möchte bei mir sowas haben,wie bei "The Legend of Zelda Oracle of Ages/Seasons" mit den Gasha-Kernen,
man pflanzt sie in Beete und nach einer Zeit sind daraus Bäume geworden,die dann Nüsse targen,wo was drin ist.
So,wie setze ich das in den Maker um?

Ausserdem noch die Glutkerne,womit man was abfackeln kann.
wie mache ich das?

Phönix Tear
20.07.2007, 12:31
Zum Thema Baum:
Dazu packst du deinen "Baum" in den verschiedenen Entwicklungsstufen in ein Charset. Nun musst du auf der Map (an der Stelle wo dein Beet ist) einzelne Events erstellen, welche alle so viele Seiten haben, wie dein Baum Entwicklungsstufen hat. Jede Seite wird durch eine Variable ausgelöst, z.B. "Baum 1 Fortschritt". Die erste Seite hat die Bedinung, dass diese Variable auf 1 steht, und die Graphik der ersten Entwicklungsstufe. (Natürlich die Graphik für die Stelle an der das Event in Relation zur Baumwurzel steht.)
Die zweite Seite braucht dann diese Variable auf 2 und hat dementsprechend die zweite Entwicklungsstufe als Graphik. Zu beachten ist dabei auch die Einstellung als "Same Level As Hero" und "Over Hero".
Das der Baum dann wächst kannst du auf zwei Arten machen.

Art 1:
Du benutzt ein Common-Event und einen Switch. Zum sparen von Common-Events lässt du hier gleich alle Bäume die im Spiel vorkommen wachsen. Pflanzt man einen Baum wird sein Switch (z.B. "Baum 1") auf "ON" gesetzt. Das CE sähe dann in etwa so aus:

<>Fork Switch "Baum 1" - ON
<><>Change Variabel "Baum 1 Fortschritt" + 1
<>End:
<>Fork Switch "Baum 2" - ON
<><>Change Variable "Baum 2 Fortschritt" + 1
<>End:
<>...
<>Wait 120,0 secs
<>
Die 120 Sekunden sind dabei die Zeit, die ein Baum von Entwicklungsstufe zu Entwicklungsstufe braucht. Dabei würde ich allerdings empfehlen, dass Entwicklugnsstufe 0 und 1 der Sätzling sind, da es sein kann, dass diese 120 Sekunden genau in dem Moment um sind, in dem man den Baum gepflanzt hat. Er würde in diesem Fall also sofort wachsen. (Dies ist der Nachteil an dieser recht einfachen Methode.)

Art 2:
Hierbei verwendest du einen "Zeitstempel". Dies setzt jedoch vorraus, dass dein Spiel eine Uhr hat. Eine Uhr könnte man so aufbaun:

<>Change Variable "Sekunden" + 1
<>Fork Variable "Sekunden" >= 60
<><>Change Variable "Minuten" + 1
<><>Change Variable "Sekunden", set 0
<><>Fork Variable "Minuten" >= 60
<><><>Change Variable "Stunden" + 1
<><><>Change Variable "Minuten", set 0
<><>End:
<>End:
<>Wait 1,0 secs
<>
Dein Baum speichert jetzt einfach die Zeit zu der er gepflanzt wurde:

<>Change Variable "Baum 1 Sekunden", set "Sekunden"
<>Change Varibale "Baum 1 Minuten", set "Minuten"
<>Change Variable "Baum 1 Stunden", set "Stunden"
<>
Da wir aber nicht die Zeit wissen wollen, zu der der Baum gepflanzt wurde, sondern die bei der er wächst, müssen wir noch ein bisschen rechnen:

<>Change Variable "Baum 1 Minuten" + 2
<>Fork Variable "Baum 1 Minuten" >= 60
<><>Change Variable "Baum 1 Stunden" + 1
<><>Change Variable "Baum 1 Minuten" mod 60
<>End:
<>
Jedes mal wenn man die Map betritt führ ein zum Baum gehörendes auf Parallel-Process stehendes Event folgenden Code aus:

<>Fork Variable "Stunden" > "Baum 1 Stunden"
<><>Goto !Lable 1!
<>Else:
<><>Fork Variable "Stunden" = "Baum 1 Stunden"
<><><>Fork Variable "Minuten" > "Baum 1 Minuten"
<><><><>Goto !Lable 1!
<><><>Else:
<><><><>Fork Variable "Minuten" = "Baum 1 Minuten"
<><><><><>Fork Variable "Sekunden" >= "Baum 1 Sekunden"
<><><><><><>Goto !Lable 1!
<><><><><>End:
<><><><>End:
<><><>End:
<><>End:
<>End:
<>
<>Goto !Lable 99!
<>
<>!Lable 1!
<>Change Variable "Baum 1 Fortschritt" + 1
<>Change Variable "Baum 1 Minuten" + 1
<>Fork Variable "Baum 1 Minuten" >= 60
<><>Change Variable "Baum 1 Stunden" + 1
<><>Change Variable "Baum 1 Minuten" mod 60
<>End:
<>
<>!Lable 99!
<>
Hinweis: Diese Lable Verschachtelung dient nur zum Verhindern von mehrfachem Auftreten des gleichen Codes. Stellt sich heraus, dass keine der Fork-Bedingungen wahr sind, wird "Goto !Lable 99!" ausgeführt, man springt also zum Ende des Codes. Wird jedoch festgestellt, dass eine Bedinung wahr ist, springt man zu Lable 1 und der Code wird ausgeführt. Ich hätte dafür auch ein weiteres Event machen können, dass mann dann anstatt des "Goto !Lable 1!" called, so fand ich das allerdings praktikabler.
Ganz am Ende des Codes sollte dann noch ein "Wait 10,0 secs" hin. Man könnte auch ein "Clear Timer", bzw "Delete Event" anfügen, jedoch kann es ja auch sein, dass der Spieler einfach die Wachstumszeit auf der Map wartet (und wärend dessen den PC so lange alleine lässt) um dann gleich zu ernten. Für diesen Fall sollte das Event also weiterhin überprüfen.

Joa, hoffe das dir das irgendwie weiterhilft, auch wenns teilweise sicherlich ein bisschen komischer erklärt ist...


Zum Thema Glutkerne:
Da würde ich dir ein beliebiges AKS mit Schusswaffen empfehlen, nur das deine Gegner (sollten die Kerne wirklich nur gegen Gegenstände verwendet werden) statisch sind, was die Sache nicht schwerer macht.

mfg
Phönix Tear

Sir Wolfsword
20.07.2007, 13:46
@Engel der Furcht:
Wieso machts du eigentlich den Thread hier im Entwicklerforum auf, wenn es dafür extra einen Technicker-Forum gibt?
Da findest du bestimmt mehr die dir helfen können...

Phönix Tear
20.07.2007, 16:50
So, ich hab jetzt mal die zweite Art in einem kleinen Skript umgesetzt. Ich habe nichts im Code erklärt, da er Größtenteils mit dem oben übereinstimmt. Allerdings ist es häufig leichter, die Dinge direkt im Maker zu verstehen, da man dort auch leicht etwas ändern kann, um zu sehen was dann passiert ;)

HIER (http://rapidshare.com/files/44010735/Baum_pflanzen.rar.html) der DL-Link (320 KB)

Hoffe es hilft dir weiter.

mfg
Phönix Tear

P.S:
Bein nächsten mal solltest du so ein Thema allerdings - wie Sir Wolfsword sagte - besser im Technik-Forum aufmachen ;)

Edit:
Was ich vielleicht noch erwähnen sollte ist, dass ein Baum zwei Minuten braucht um auszuwachsen. D.h. nachdem du ihn gepflanzt hast musst du auch eine Minute warten, bis er zumindest die erste Entwicklugnsstufe (von zweien) erreicht hat. Wärend dessen kannst du die Map beliebig verlassen und wieder betreten.
Um das ganze ein bisschen zu beschleunigen kannst du über F9 die Systemzeit (Die Variablen Sekunden, Minuten, Stunden) hochstellen. Dann sind die Bäume sofort ausgewachsen (erhöhe es am besten immer um eine Minute um jeden Schritt mitverfolgen zu können)...