PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Habt ihr eine bessere idee?



Biffi
05.07.2006, 18:56
Moin ^^

http://s2.bilder-hosting.de/img/NPXSY.jpg (http://www.bilder-hosting.de/show/NPXSY.html)

Da im Busch ist das Zufallsscript was ich durch die Hilfe paar threads unter diesen erstellt habe.
Das wertet aus welche rupie oder Herz rechts neben den Busch erscheint.

Ich hab auch keine Ahnung wie man das anders herstellen kann damit das Bild genau auf den Busch landet wenn er zerstückelt wurde ^^

Also wenn ihr eine Idee habt ^^ ich nehmse gerne an ^^

mfg
Biffi

Phönix Tear
05.07.2006, 19:01
Jaaaaaa!! Eine schöne Frage ^^

Sooo, also das sieht mir vom Boden-Tile wie auch Busch sehr nach Zelda aus ^^. Dazu hab ich auch mal selber was gemacht was auch funktioniert hat, allerdings ist das etwas veraltet. Ich versuchst jetzt mal auf eine neue Art.
Ich schätze du willst das der Busch genau wie in Zelda zerschlagen werden kann und evtl. ein nützliches Item drunter liegt, oder?
Gut, dazu gibt es nun 2 Möglichkeiten, eine ist etwas einfacher und benutzt ein einzelnes Event das für alle Büsche gilt und nach dem Zerschlagen auf diese Position gelegt wird, das andere benutzt den Busch selbst als Item und funktioniert über eine "Liste".
Ersteres hat den Vorteil das es einfacher geht, dafür kann dann aber auch immer nur ein Item sichtbar sein.
Das erste werde ich dir hier im Forum erklären, das zweite aber eher nur anschneiden und ein Projekt hochladen...

Also, wie funktioniert das mit dem Event?

Was du brauchst:
-1 Event für jeden Busch (der Busch selbst)
-1 Event für die Darstellung der Items

Konfiguration des "Busch"-Events:

Push Key - Same Level As Hero - Fixed Graphic - Stay Still

<>Show Battle Animation "Sword A" -> (This Event) //z.B
<>Move Event 'This Event': "Change Graphic->Chubby 2,4"
<>Wait 0,1 secs
<>
<>Change Variable "Random" - Rand(1-15)
<>Fork Variable "Random" <= 3
<><>Change Variable "Itemdrop", set "Random"
<><>Change Variable "BuschX", set [(This Event) X-Coordinate]
<><>Change Variable "BuschY", set [(This Event) Y-Coordinate]
<><>Set Event Place 'Itemdrop' - ["BuschX"|"BuschY"]
<>End:
<>
<>Set Event Place 'This Event' - [0|0]
Das war’s auch schon. HIER (http://www.directupload.net/show/d/749/7pzuVDZF.png) noch mal als Screen aus dem Maker.

So, nun zum Item-Event. Ich verwende als Beispiel einfach mal Rubine die hinterlassen werden können. Dabei gibt es Grüne (1 Rubin wert), Blaue (5 Rubine wert) und Rote (10 Rubine wert). So sieht der Code dazu aus:

Page 1
Variable "Itemdrop" >= 1
On Hero Touch - Below Hero - Fixed Direction - Stay Still

<>Play Sound Effect "Success2" //z.B
<>Change Gold Held: Money + 1
<>Change Variable "Itemdrop", set 0

Page 2
Variable "Itemdrop" >= 2
On Hero Touch - Below Hero - Fixed Direction - Stay Still

<>Play Sound Effect "Success2" //z.B
<>Change Gold Held: Money + 5
<>Change Variable "Itemdrop", set 0

Page 3
Variable "Itemdrop" >= 3
On Hero Touch - Below Hero - Fixed Direction - Stay Still

<>Play Sound Effect "Success2" //z.B
<>Change Gold Held: Money + 10
<>Change Variable "Itemdrop", set 0
Damit wäre auch dieses Event fertig. Was genau in den beiden Events gemacht wird ist recht einfach. Der Busch zeigt eine Battle Animation auf sich an und verschwindet danach. Dann teleportiert er sich selbst nach oben links in die Ecke der Map ("Clear Timer" ginge auch). Daraufhin wird randomiert ob ein Item erscheinen soll oder nicht. Dazu wird eine zufällige Zahl zwischen 1 und 15 genommen. Ist sie 1 erscheint ein grüner, ist sie 2 erscheint ein blauer und ist sie 3 ein roter. Damit bist du auch eigentlich schon fertig, aber zur Sicherheit HIER (http://www.directupload.net/show/d/749/msfHoHkv.png) noch mal ein Screen von der ersten Seite des "Itemdrop"-Events.

So, nun zur zweiten Variante. Diese ist um einiges komplexer als die erste, dafür aber besser da jeder Busch für sich ein Item darstellen kann. Leider benötigt man dafür auch noch ein Common-Event.
Von Prinzip her läuft das ganze so:
Der Busch wird zerstört per Battle-Animation. Danach wird randomiert ob ein Item erscheinen soll oder nicht. Wenn nicht wird das Event per "Clear Timer" gelöscht, wenn doch ändere ich einfach die Graphik des Busches in die des entsprechenden Items (bei mir die Rubine). Damit ich damit auch noch was anfangen kann speichere ich auch noch die ID des Items in einer "Liste". Diese Liste läuft über Variablennummern.
Wie die Variablennummern funktionieren sollte man aus diesem Bild entnehmen können. Anstatt direkt auf eine Variable zuzugreifen nehme ich mir einfach ihre Nummer und lese dadurch den Wert ein.
http://www.directupload.net/images/060705/temp/BQYS6ULX.png (http://www.directupload.net/show/d/749/BQYS6ULX.png)
Dieses Beispiel kommt konkret auch in diesem Buschskript vor.
Dabei werden die Variablennummern nach der ID des Busch-Events vergeben. Ich schätze dir ist mal aufgefallen das bei jedem Event das du erstellt hast ganz oben links eine Zahl steht. Das ist die ID. Diese kann ich einlesen. Genau das mache ich auch, addiere noch mal 5000 drauf und speichere dann den Wert für das Item in der Variable mit der entsprechenden Nummer (+5000 damit keine Variablen verbraucht werden auf die du auch noch so zugreifen könntest (5000 ist das Maximum an standardmäßig verwendbaren Variablen wie Switches)). Danach ist es im Common-Event recht einfach zu überprüfen ob der Held auf einem Item steht oder nicht. Da der Busch ja noch an seiner ursprünglichen Position ist (man kann nun durch ihn durchlaufen was durch ein "Start Slip Through" des Busches erreicht wird) speichere ich einfach die Event-ID des Events auf dem der Held gerade steht. Ist in meiner Liste an der entsprechenden Stelle ein Wert vermerkt weiß ich das dort ein Item liegt. Der entsprechende Effekt wird ausgeführt und das Busch-Event sowie dessen Eintrag in der Liste gelöscht.
Tja, das war’s auch schon. Wohl etwas schwer zu verstehen, aber HIER (http://rapidshare.de/files/25033776/Items_unter_Bueschen.rar.html) ist das Projekt. Wenn du es dir lange genug anschaust siehst du vielleicht einen Sinn drinn ;) (sry for Rapid-Share XD)

mfg
Phönix Tear

P.S:
Da ich diesen Beitrag in mehreren Etappen mit mehreren Unterbrechungen getippt habe bitte ich darum eventuelle Sprünge im Text zu ignorieren ^^°

Biffi
05.07.2006, 22:43
bawahahaha ^^

wie geil das ist wirklich zelda style ^^

Hätte ich nicht gedacht das sowas geht ^^

jetzt wusel ich mich mal dadurch ^^ weil ich check das noch nicht so ganz ^^

aber hammer ^^

danke

mfg
Biffi

Biffi
06.07.2006, 12:37
Gleiches Thema andere Frage ^^

Ich habe bis jetzt eine Map mit 35x 50x50px

Also sieht des so aus

1-1 / 1-2 / 1-3 / 1-4 / 1-5 / 1-6 / 1-7
2-1 / 2-2 / 2-3 / 2-4 / 2-5 / 2-6 / 2-7
3-1 / 3-2 / 3-3 / 3-4 / 3-5 / 3-6 / 3-7
4-1 / 4-2 / 4-3 / 4-4 / 4-5 / 4-6 / 4-7
5-1 / 5-2 / 5-3 / 5-4 / 5-5 / 5-6 / 5-7

Sie das sind pro Map minimal 98Teleportereignisse (ecken)
maximal 192 Teleportereinisse (die mittleren Maps)

insgesamt sind das 5608 Teleportereignisse auf der gesamten map

Kann man irgendwie ein Script erstellen der die automatisch setzt?

mfg
Biffi

Phönix Tear
06.07.2006, 13:28
Sry, aber kannst du bitte etwas genauer erklären was du machen willst? Was für Teleportereignisse (von wo nach wo) und was für eine Map mit 35x50x50?
Welchen Sinn haben die Teleporter, etc...

Biffi
06.07.2006, 13:56
Hallo ^^

Ich habe eine Map in 35Teile

Jedes Teil der Map ist 50x50 gross
damit die Map nicht eintönig wird und ich noch das Chipset abändern kann ;)

z.B.
von Map 1-1 nach 1-2 soll man an jeder Stelle in die andere Map reinkommen
Also da die Map ja 50x50px gross ist muss ich ja 49Teleportereignisse machen.

und das wird wenn ich alle Maps verbunden habe

ca.5608 teleportereignisse sein
und ich wollte wissen ob es irgendwie geht automatisch zu generieren ^^

Ich erstelle jetzt ein Bild damit man das besser versteht ^^

http://s2.bilder-hosting.de/img/256OE.jpg (http://www.bilder-hosting.de/show/256OE.html)
http://s2.bilder-hosting.de/img/25DFT.jpg (http://www.bilder-hosting.de/show/25DFT.html)

mfg
Biffi

Phönix Tear
06.07.2006, 17:19
Joa, das geht automatisch, und zwar über die Heldenposition, Map ID und "Go to Memorized Place". Pass auf, so läuft das ganze:

<>Change Variable "Held X", set [(Hero) X-Coordinate]
<>Change Variable "Held Y", set [(Hero) Y-Coordinate]
<>Change Variable "Held Map ID", set [(Hero) MapID]
<>
<>Fork Variable "Held X" = 0
<><>Change Variable "Kontroll Map ID" = "Held Map ID"
<><>Change Variable "Kontroll Map ID" - "Map ID Verschiebung"
<><>Change Variable "Kontroll Map ID" / 5
<><>Fork Variable "Kontroll Map ID" ungleich 1
<><><>Change Variable "Held X" + 49
<><><>Change Variable "Held Map ID" - 1
<><><>Goto Memorized Place ["Held X"|"Held Y"|"Held Map ID"]
<><>End:
<>Else:
<>Fork Variable "Held X" = 50
<><>Change Variable "Kontroll Map ID" = "Held Map ID"
<><>Change Variable "Kontroll Map ID" - "Map ID Verschiebung"
<><>Change Variable "Kontroll Map ID" / 5
<><>Fork Variable "Kontroll Map ID" ungleich 5
<><><>Change Variable "Held X" - 49
<><><>Change Variable "Held Map ID" + 1
<><><>Goto Memorized Place ["Held X"|"Held Y"|"Held Map ID"]
<><>End:
<>Else:
<>
<>Fork Variable "Held Y" = 0
<><>Change Variable "Kontroll Map ID" = "Held Map ID"
<><>Change Variable "Kontroll Map ID" - "Map ID Verschiebung"
<><>Fork Variable "Kontroll Map ID" ungleich 1
<><><>Change Variable "Held Y" + 49
<><><>Change Variable "Held Map ID" - 5
<><><>Goto Memorized Place ["Held X"|"Held Y"|"Held Map ID"]
<><>End:
<>Else:
<>Fork Variable "Held Y" = 50
<><>Change Variable "Kontroll Map ID" = "Held Map ID"
<><>Change Variable "Kontroll Map ID" - "Map ID Verschiebung"
<><>Fork Variable "Kontroll Map ID" ungleich 7
<><><>Change Variable "Held Y" - 49
<><><>Change Variable "Held Map ID" + 5
<><><>Goto Memorized Place ["Held X"|"Held Y"|"Held Map ID"]
<><>End:
<>End:
Na ja, das wäre nun eine generelle Variante. Was sie macht ist recht einfach:
Zuerst nehme ich die Heldenposition auf der Map und speichere sie in "Held X" und "Held Y". Danach nehme ich noch die "Map ID" (die Nummer der Karte auf der man sich gerade befindet). Da ich nun davon ausgehe das du alle Maps der Reihe nach erstellst (Von links nach rechts und von oben nach unten) funktioniert auch der folgende Teil. Dort prüfe ich ob sich der Held an einem der 4 Ränder befindet, also bei der X Koordinate 0 oder 50, oder der Y Koordinate 0 oder 50. Befindet er sich dort kommt eine etwas dämlich gemacht (^^°) Abfrage ob diese Map eine "Randmap" deiner großen Map ist. Ist sie das wird nicht teleportiert, wenn doch wird der Held auf die entsprechende Map teleportiert. Das Schema ist ja schon in deiner Zeichnung zu sehen. Ist er auf Map 1 (ganz oben links) und tritt an den X = 50 Rand (also rechts) berechnet das Programm das es die Map ID um 1 erhöhen soll und den Helden auf X - 49 (also X = 1) auf die Map MapID + 1 (also 2) teleportieren soll (also eine weiter rechts). Tritt der Held nun an den Y = 50 Rand soll das Programm die MapID um 5 erhöhen. Warum das? Da jede Reihe 5 kleine Maps beinhaltet ist damit die MapID der Map darunter genau um 5 größer. Hier nochmal zum verdeutlichen ein Ausschnitt:
http://www.directupload.net/images/060706/temp/22B429KE.png (http://www.directupload.net/show/d/750/22B429KE.png)

Nun solltest du das ganze aber besser per Event auf jeder Map machen, dass sähe dann so aus (für die Map 7 z.B.):

<>Change Variable "Held X", set [(Hero) X-Coordinate]
<>Change Variable "Held Y", set [(Hero) Y-Coordinate]
<>Change Variable "Held Map ID", set [(Hero) MapID]
<>
<>Fork Variable "Held X" = 0
<><>Change Variable "Held X" + 49
<><>Change Variable "Held Map ID" = Der entsprechende Wert der Map daneben (manuelle Einstellung um Abfragen zu vermeiden ^^)
<><>Goto Memorized Place ["Held X"|"Held Y"|"Held Map ID"]
<>Else:
<>Fork Variable "Held X" = 50
<><>Change Variable "Held X" - 49
<><>Change Variable "Held Map ID" = Der Wert
<><>Goto Memorized Place ["Held X"|"Held Y"|"Held Map ID"]
<>Else:
<>Fork Variable "Held Y" = 0
<><>Change Variable "Held Y" + 49
<><>Change Variable "Held Map ID" = Der Wert
<><>Goto Memorized Place ["Held X"|"Held Y"|"Held Map ID"]
<>Else:
<>Fork Variable "Held Y" = 50
<><>Change Variable "Held Y" - 49
<><>Change Variable "Held Map ID" = Der Wert
<><>Goto Memorized Place ["Held X"|"Held Y"|"Held Map ID"]
<>End:
Hier ist es wieder das gleiche Schema wie oben. Erst wird geschaut ob der Held an einem der Ränder steht, dann wird die X, bzw. Y Koordinate angepasst sowie auch die Map ID. Hierbei musst du nun aber die Map ID manuell einstellen und das auch bei jeder Teilmap. Das hat den Vorteil das du keine dummen Abfragen machen musst bei denen auch Fehler auftreten können, dafür aber den Nachteil das es viel Arbeit macht. Wenn ich das mal in ein Projekt als Beispiel einbaun soll sag bescheid ;)

mfg
Phönix Tear

Biffi
06.07.2006, 17:26
werde ich heute Abend ausprobieren ^^

zur Zeit bin ich nämlich dran ein Ring Menu zu erstellen ^^
aber danke schonmal :)

mfg
Biffi