Archiv verlassen und diese Seite im Standarddesign anzeigen : Menü Hilfe
Juten Tach!!!!
Ich habe in den letzten Wochen und Monaten und Jahren oft Versucht zu "checken" wie ein KS funzt.
Ich habe unzählige Tuts und Kurse und so etwas ausprobiert.
Aber entweder habe ich es nicht verstanden oder es hat mir nciht gefallen.
Und da mir auch nie jemadn eines machen wollte, mir wurde immer "nur" geholfen was den Code anging (was ich natürlich auch zu schätzen weiß, so ist es nicht), und ich absolut keinen Bock mehr habe mir das nochmal alles anzutuhen, kommt Dracula jetzt ohne KS aus!!!! :eek:
Also dachte ich mir das das ganze Standard Menü logischerweise zum Größten Teil sinnlos ist, da ich die keinen Ausrüst-Bildschrim brauche und auch keine Techniken.
Als Techniken werden nur solche Dinge wie Schlösserknacken benötigt.
Also werde ich dieses Menü komplett ersetzten.
Nur mein Problem dabei ist bei den Items. Ich will die Anzeige so machen wie bei Deseret Nightmare. (oder wie im Trailer von London Gothic)
Ich finde das das eine gute aussehende und übersichtliche Methode ist.
Jetzt kommt das eigentliche Problem.
Wie mache ich es, das wenn ich ein Item finde, es am ersten Platz auftaucht, und wenn ich noch eins finde dieses am zweiten Platz auftaucht, und wenn ich jedoch das zweite zuerst finde, soll das natürlich an erster Stelle stehen(und so weiter....).
Wäre nett wenn es mir jemand erklären könnte.
Und damit meine ich nicht nur einfach den Code hinklatschen, sondern wenigstens ein bissl erklären, denn ich will es verstehen und nicht einfach nachbauen.
Vielen Dank schoneinmal im Vorraus.
Gruß
Terror
Ich werd's mal probieren:
Also, du überprüfst per "Fork Condition" ob du ein Item gefunden hast, am besten mit Switches. z.B.: if Switch[0001:Zahn]=ON
.......
So, und jetzt überprüfst du per "Fork Conditions", der wievielte Gegenstand das jetzt ist. Mit Variablen: if Variable[0001: Gegenstand] set (z.B.) 2
>Show Picture 1 "Dracula" [142,110]
Damit hast du jetzt bewirkt, dass wenn der Switch Zahn an ist, (also ein Zahn gefunden wurde) der Maker mit einer weiteren Fork überprüft, ob die Variable Gegenstand den Wert 2 hat, (also bisher 2 Gegenstände gefunden wurden), und falls dem so ist wird das Bild vom Gegenstand an der dritten Stelle gezeigt.
Dann musst du noch die Variable Gegenstand um 1 erhöhen, damit der Maker weiß, dass jetzt drei Gegenstände gefunden wurden.
Ich hoffe mal, das war richtig, hilfreich und verständlich. Falls nicht, bitte korrigieren.
P.S.: Warum guckst du dir nicht einfach Desert Nightmare im Maker an?^^
Ja gut, aber ich habe Platz für Maximal 15 Gagenstände, wie soll das dann gehen?
Ich kann ja nicht einstellen das das Bild angezeigt wird, weil die Variable so ist und die Variable dann für das andere bild umstellen, dan wird das erste ja wieder umgestellt.:confused:
Ich habe Desert Nigthmare, aber
1. weiß ich nciht ob ich den Code benutzen dürfte und
2. habe ich es zwar irgendwo auf dem rechner, finde es aber nit mehr!!!
und nochmla runterladen will ich es nciht, ich will nciht alles zweimal auf dem rechner umherschwirren haben.^^
Phönix Tear
02.05.2006, 17:33
Ich glaube nur diese Methode hat den Nachteil das man, sobald ein Item verbraucht oder generell aus dem Inventar entfernt wird, nichts mehr damit anfangen kann ^^°.
Normalerweise ist ein Item-Menü ja nach einer speziellen Vorgabe sortiert, soll heißen findet man den Gegenstand 2 wird er an erster Stelle angezeigt, findet man dann Gegenstand 1 rückt 2 ein Stück zur Seite und Gegenstand 1 ist dann auch wirklich auf Position 1. Das wolltest du aber nicht so haben, oder etwa doch? Ich würde es dir empfehlen, jedoch ist deine Möglichkeit auch umsetzbar. Leider ist das etwas komplizierter. Momentan hab ich auch nicht die Zeit alles zu abstrahieren, weshalb es an einigen Stellen wohl länger als nötig ist...
Ich werde jetzt die einzelnen Events der Reihe nach erklären.
Item gefunden (in diesem fall ein "Zahn") - Beliebiges Event
<>Fork Switch "Hab Zahn" OFF
<><>Change Variable = 001001
<><>Change Switch "Hab Zahn" -> ON
<><>Call Event: "Itemmenü Update"
<>Else:
<><>Change Variable "Gesuchte Item ID" = 1
<><>Call Event: "Item Variablennummer Suche"
<><>Change Variable [Item Variablennummer] + 1
<><>Call Event: "Letzte Verbrauchte Variable"
<>End:
Die ganze Erklärung kommt zum Schluss, jetzt erstmal die Kurzbeschreibung:
Sobald der Held den Gegenstand "Zahn" findet wird mit der Fork geprüft ob er den Gegenstand bereits besitzt. Hat er ihn nicht wird eine für das Menü reservierte Variable auf 001001 gesetzt. Was das bedeutet erkläre ich später. Darunter wird besagter Switch auf An gesetzt und das Event gecallt welches die Menüanzeige aktualisiert. (Anmerkung hier: Ich habe keine Ahnung wie das Menü aussieht welches du meinst, daher stelle ich einfach Vermutungen an ^^). In der Else-case weiß ich, dass ich das Item bereits habe, aber noch nicht welche Variable ich dafür verwendet habe (da es ja über Variablenummern läuft). Also gebe ich eine ID ein die ich suche (dazu später) und calle das Event "Item Variablennummer Suche". Darunter wird dann die gefundene Variable +1 gesetzt (also die Anzahl des Items erhöht) und zu guter letzt noch das Event "Letzte Verbrauchte Variable" gecallt (das hat rein praktische Gründe).
Item Variablennummer Suche - Call Event
<>Change Variable "Item Variablennummer" = Erste für Menü reservierte Variable
<>Label 1
<>Change Variable "Item Variablennummer Kontrolle" = Var. Nr[Item Variablennummer]
<>Change Variable "Item Variablennummer Kontrolle" / 1000
<>Fork Varible "Item Variablennummer Kontrolle" = "Gesuchte Item ID"
<><>
<>Else:
<>Fork Variable "Item Variablennummer Kontrolle" = 0
<><> Wenn es so weit kommt hast du irgendwo vergessen den Switch für das entsprechende Item wieder auszustellen (oder er wurde fälschlicherweise angestellt...)
<>Else:
<><>Change Variable "Item Variablennummer" + 1
<><>Goto Label 1
<>End:
<>
Dieses Event läuft einfach alle bereits für das Menü vergebene Variablen durch und sucht die Variable in der dein Item "Zahn" gespeichert ist. Jetzt komme ich auch zu 001001. Das ganze dient nur dazu Variablen zu sparen. Um es zu verstehen musst du die Variable in zwei Teile teilen. Einmal 001 und noch mal 001 (hier sind beide Teile nur durch Zufall gleich). Das erste 001 bedeutet das ich hier das Item mit der ID 001 gefunden habe (diese ID musst du selbst für alle deine Items vergeben, dein Zweites Item, z.B. eine "Klaue", könnte dann die ID 002 haben). Das zweite mal 001 sagt mir, dass ich dieses Item erst 001 mal besitze. Somit ist also vorgegeben das du ein Item maximal 999 mal besitzen kannst und es auch maximal 999 verschiedene Items geben kann. Du kannst es natürlich auch so lösen das du maximal 9999 verschiedene Items hast, dafür aber jedes nur 99 mal tragen kannst, ganz wie du willst...
So, damit erklärt sich der Code fast schon von selbst. Bevor ich das Event calle lege ich eine ID fest (in der Variable "Gesuchte Item ID") welche gesucht werden soll. Das Event beginnt dann bei der ersten für die Items angelegten Variable, nimmt deren Wert, teil ihn durch 1000 (damit am Ende nur die 001 der ID übrig bleibt (die Anzahl wie oft ich das Item habe fällt also weg) und überprüft dann ob die damit erhaltene ID mit der übereinstimmt die ich suche. Ist es die gesuchte ID bricht das Event einfach ab und mein "Item gefunden" Event beendet dann den Code indem es die entsprechende Variable +1 rechnet. Für das +1 könnte alles beliebige stehen, dadurch erhöhe ich ja schließlich die Anzahl des angegebenen Items welche ich dabei hab.
Letzte Verbrauchte Variable - Call Event
<>Label 1
<>Change Variable "Item Variablennummer Kontrolle" = Var. Nr[Item Variablennummer]
<>Fork Variable "Item Variablennummer Kontrolle" [i]ungleich 0
<><>Change Variable "Item Variablennummer" + 1
<><>Goto Lable 1
<>End:
Dieses Event macht nichts weiter als meine Variable "Item Variablennummer" zur ersten freien Stelle der fürs Menü reservierten Variablen zu "spulen". Dafür kontrolliere ich einfach immer ob die Variable mit der momentanen Nummer = 0 ist. Wenn ja ist diese Variable noch nicht belegt, wenn nein muss ich bei der nächsten Variable gucken. Warum ich das mache? Die Antwort liegt im "Item gefunden" Event. Würde ich nicht jedes mal wieder ans Ende meiner belegten Variablen gehen würde dort (solange ich ein neues Event finde) die Variable überschrieben welche ich als letztes benutzt habe. Du kannst dieses Event natürlich auch immer dann callen wenn du ein neues Item hinzufügen willst. Das kommt im Endeffekt aufs selbe heraus, ist vielleicht sogar besser...
Bei diesem Event gehe ich davon aus das alle Events auf den Bildschirm passen und du keine Scroll-Funktion brauchst. Wenn doch kann ich die wohl später noch hinzufügen...
Itemmenü Update - Call Event
<>Change Variable "Item Variablennummer" = Erste für Menü reservierte Variable
<>Change Variable "Menüposition" = 1
<>Label 1
<> //Ich kennzeichne im Folgenden immer durch Fett was sich von der ersten zur nächsten Fork geändert hat
<>Change Variable "Aktuelles Item" = Var. Nr
<>Change Variable "Aktuelles Item" / 1000
<>Fork Variable "Aktuelles Item" [i]ungleich 0
<><>Fork Variable "Menüposition" = 1
<><><>Fork Variable "Aktuelles Item" = 1
<><><><>Show Picture: 'Nr 2' "Item Zahn" at [110|210]
<><><>Else:
<><><>Fork Variable "Aktuelles Item" = 2
<><><><>Show Picture: 'Nr 2' "Item Klaue" at [110|210]
<><><>Else:
<><><>Diese Fork musst du für ALLE deine Items zu Ende führen!
<><><>End:
<><><>Change Variable "Menüposition" +1
<><><>Change Variable "Item Variablennummer" +1
<><><>Goto Label 1
<><>Else:
<><>Fork Variable "Menüposition" = 2
<><><>Fork Variable "Aktuelles Item" = 1
<><><><>Show Picture: 'Nr 3' "Item Zahn" at [120|210]
<><><>Else:
<><><>Fork Variable "Aktuelles Item" = 2
<><><><>Show Picture: 'Nr 3' "Item Klaue" at [120|210]
<><><>Else:
<><><>Diese Fork musst du für ALLE deine Items zu Ende führen!
<><><>End:
<><><>Change Variable "Menüposition" +1
<><><>Change Variable "Item Variablennummer" +1
<><><>Goto Label 1
<><>Else:
<><>Auch diese ganze Fork-Konstruktion musst du für alle möglichen Item-Positionen auf dem Bildschirm zu Ende führen...
<>Else:
<>Hier ist die Aktuallisierung zu Ende weil eine Variable mit dem Wert 0 erreicht wurde (also eine wo noch kein Item drin gespeichert ist).
Tjaaa... Hier setze ich erstmal wieder die "Item Variablennummer" auf die erste für das Menü reservierte Variable (bzw. deren Nummer). Dann noch schnell die "Menüposition" auf 1 (also auf die erste Stelle). Danach kommt eine wichtige Fork. Ich mache erst die selbe Berechnung wie im Event "Letzte Verbrauchte Variable" und prüfe dann ob diese besagte letzte verbrauchte Variable bereits passiert wurde (also der Wert der in der Variable gespeichert ist 0 ist). Das bedeutet für mich das ich alle Items durchlaufen habe die du besitzt, also kann man sich den ganzen Rest sparen...
Dieser ganze Rest beschäftigt sich dann nur mit der Anzeige. Erst frage ich ab auf welcher Menüposition du dich gerade befindest (also welches Feld in deinem Menü zu belegen ist) und danach welche ID ich aus der Variable zuvor entnommen habe. Dementsprechend lasse ich dann das Bild für das Item auf der entsprechenden Position anzeigen. Leider musst du das für alle Positionen mit allen Events machen. Ich habe auch noch keine Möglichkeit gefunden das zu umgehen...
Na ja, am Ende wird dann die Menüposition um eins erhöht (das nächste Item soll ja auch auf dem nächsten Menüpunkt angezeigt werden), sowie auch die Variable "Item Variablennummer" (es soll dann natürlich auch das nächste Item angezeigt werden das ich besitze und nicht wieder das gleiche).
Kommen wir dann zum vorletzten Event.
Item ablegen / verbrauchen - Beliebiges Event
<>Change Variable "Gesuchte Item ID" = 1 // Ich will das Item mit der ID 1 ablegen (Item "Zahn")
<>Call Event: "Item Variablennummer Suche"
<>Change Variable - 1 // Wie viele abgelegt / verbraucht werden sollen
<>Change Variable "Item Kontrolle" = Var. Nr[Item Variablennummer]
<>Change Variable "Item Kontrolle" [i]mod 1000 // Ich will nur die Anzahl, nicht die ID des Items haben
<>Fork Variable "Item Kontrolle" >= 0
<><>Change Switch "Hab Zahn" -> OFF
<><>Call Event "Items aufrücken"
<>Else:
<>Call Event: "Letzte Verbrauchte Variable"
<>End:
Hier läuft es alles sehr ähnlich wie im ersten Event. Ich suche erst die Variablennummer für das Event was ich ablegen oder verbrauchen will und subtrahiere dann den gewünschten Wert von meiner Item-Anzahl. Sinkt diese unter 1 weiß ich das ich keins von diesen Items mehr habe, also muss ich den entsprechenden Switch wieder ausschalten und alle anderen Items nach vorne rücken. Dazu brauche ich dann noch das letzte Event.
Items aufrücken - Call Event
<>Change Variable "Item Variabelnnummer" -1
<>Lable 1
<>Change Variable "Item Variablennummer" +2
<>Change Variable "Item Verschieber" = Var. Nr
<>Fork Variable "Item Verschieber" [i]ungleich 0
<><>Change Variable "Item Variablennummer" -1
<><>Change Variable [Item Variablennummer] = "Item Verschieber"
<><>Goto Label 1
<>Else:
<><>Change Variable "Item Variablennummer" -1
<><>Change Variable [Item Variablennummer] = 0
<>End:
Dieses Event beginnt an der Stelle wo ich das Event "gelöscht habe". Es geht immer zwei Schritte nach vorne, holt sich dort die Variable und setzt sie einen Schritt weiter hinten ein, geht dann wieder zwei Schritte nach vorne, etc. Das "Item Variablennummer -1" ganz am Anfang dient nur dazu das ich keinen Ausnahmeregelung bei den zwei Schritten brauche. Warum überhaupt zwei Schritte? Mit dem ersten Schritt komme ich wieder bei der Variable an die ich mir zuvor genommen und einen Schritt nach hinten verschoben habe, mit dem zweiten Schritt bei der die ich haben will. Da ich ganz am Anfang der Verschieberei aber nur einen Schritt gehen muss um zur neuen Variable zu kommen gehe ich erst noch einen zurück, dann passt es wieder ;)
Die Else-Case wird dann ausgeführt sobald ich wieder einen Variable habe die 0 als Wert hat (also einen noch nicht belegte). Dann gehe ich einen Schritt zurück und lösche die letzte (welche ich ja zuvor schon einen Schritt nach hinten geschoben habe, es gibt sie nun also doppelt).
Sooo, das sollte es dann eigentlich sein, ich hoffe es war so einigermaßen verständlich...
mfg
Phönix Tear
<><>Change Variable [Item Variablennummer] = 001001
Heißt das eine extra Variable für jedes Item?
Oder was heißt diese in den eckigen Klammern?
EDIT:
Gibt es nciht eine Bildesparende Methode, mit enm kürzeren Code.
Ich verstehe diesen ja glaube ich.
Aber ihn ihn mein Menü einzubauen ist scheiße.
Ich habe schon 2 Pics für den eigentlichen teil des Menüs.
Jez habe ich 15 Pläatze für gegenstände, und brauche für jedes 1 bild, dann noch nen auswahlcursor und noch n bissl was an bildern.
und den picture patch will ich nicht.
und überhaupt ist es total blöd, den code ins das prinzip meines menüs einzubauen.
ist es zu not auch möglich, das mir jemand so einen code macht, und mir das spiel schcikt, sodass ich nur noch erweitern muss?!
ich kann jemandem auch mein spiel schicken....
Phönix Tear
03.05.2006, 18:39
Mit allen Variablenbezeichnungen in [] meine ich die Variablennummer. Du hast eine Variable ("Item Variablennummer") die ich so ändern kann das ich eine beliebige Variable belegen kann. Darauf basiert dieser Code, sonst bräuchtest du für jedes Item eine eigene Variable...
Bei 15 Bildern insgesammt gibt es (soweit ich weiß) keine andere Möglichkeit als die die ich dir angegeben habe (außer du willst Leerstellen dazwischen haben).
Wenn tatsächlich jedes Bild an jeder Position anzeigbar sein soll. Allerdings gibt es eine gute Möglichkeit das ganze zu vereinfachen, bin nur gestern nicht drauf gekommen.
Hier der editierte Code (das ganze "Itemmenü Update"):
<>Change Variable "Item Variablennummer" = Erste für Menü reservierte Variable
<>Change Variable "Menüposition" = 1
<>Label 1
<> //Ich kennzeichne im Folgenden immer durch Fett was sich von der ersten zur nächsten Fork geändert hat
<>Change Variable "Aktuelles Item" = Var. Nr[Item Variablennummer]
<>Change Variable "Aktuelles Item" / 1000
<>Fork Variable "Aktuelles Item" ungleich 0
<><>Fork Variable "Menüposition" = 1
<><><>Change Variable "Menüpic X Koord" = 110
<><><>Change Variable "Menüpic Y Koord" = 210
<><>Else:
<><>Fork Variable "Menüposition" = 2
<><><>Change Variable "Menüpic X Koord" = 120
<><><>Change Variable "Menüpic Y Koord" = 210
<><>Else:
<><>Diesmal diese Fork für alle Menüpositionen zuende machen
<><>Fork Variable "Aktuelles Item" = 1
<><><>Show Picture: 'Nr 2' "Item Zahn" at ["Menüpic X Koord"|"Menüpic Y Koord"]
<><>Else:
<><>Fork Variable "Aktuelles Item" = 2
<><><>Show Picture: 'Nr 2' "Item Klaue" at ["Menüpic X Koord"|"Menüpic Y Koord"]
<><>Else:
<><>Diese Fork musst du für ALLE deine Items zu Ende führen!
<><>End:
<><>Change Variable "Menüposition" +1
<><>Change Variable "Item Variablennummer" +1
<><>Goto Label 1
<>Else:
<>Hier ist die Aktuallisierung zu Ende weil eine Variable mit dem Wert 0 erreicht wurde (also eine wo noch kein Item drin gespeichert ist).
Damit hast du eine sehr viel einfachere Methode und braucht bei der ersten Fork nur die 15 Möglichkeiten, bei der zweiten eben eine pro Item. Das sollte wohl noch zu schaffen sein ;)
mfg
Phönix Tear
Ja, das ist easy!
Denoch habe ich no Ahnung wie ich es in mein Menü einbauen soll.
Kann ich dir das mal schicken, und du schaust es dir an?
Phönix Tear
04.05.2006, 12:35
Schreib mir ne PN mit den wichtigen Angaben über dein Spiel, etc. Was in das Menü rein soll, wie man wählen kann, etc. Ich kann aber nicht garantieren das ich das wirklich mache, hängt ganz davon ab wie viel ich dann zu tun hab...
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.