Ganz zu Anfang:
Falls die Häufigkeit dieser Frage die 200ter Marke sprengt, bitte ich darum, nur freundlichst darauf hingewiesen zu werden, und nicht als gottverdammter Newbie verspottet zu werden (bin ich nämlich gar nicht).
Also... Wir haben folgende Situation:
Ich baue ein Item Menü, mit dem 2000er. Dort habe ich 20 Bilder insgesammt zur Verfügung, und habe deshalb mein Item Menü in paar 5er Seiten geteilt (ein Untergrund-, ein Item- und ein Anzahlbild) um Bildermangel zu verhindern.
Wie bekomme ich es hin, dass die Items in chronologischer Reihenfolge aufgeführt werden.
Ich dachte mir etwas im Sinne von:
Mein Inventar ist leer und ich finde eine Apfelsine. Dann wir die Variable APFELSINE ID auf 1 gestellt, da bei vorriger Überprüfung herauskam, das es das erste Item ist. Finde ich jetzt eine grüne Weintraubenstaude, so sieht der Maker: "Ahh, die höchste ID (von den 100 Stück) ist 1, also wird die Variable GRÜNEWEINTRAUBENSTAUDE ID auf 2 gesetzt, und dort positioniert.
Verkaufe ich jetzt die Apfelsine, so werden alle ITEM IDs, die höher als die ID der Apfelsine (also 1) sind, -1 gerechnet, da sie ja einen Platz nach oben rutschen müssen.
Leider ist das alles so der Maßen verwirrend, dass ich wissen muss, ob es sich lohnt diese Idee auszuformulieren, oder ob ich mir lieber was anderes ausdenken soll...
Args E=mc2² geteilt durch die Koeffizienz der derbei liegenden ...
Du solltest neben der Item ID noch eine Variable anlegen, die die Anzahl der Items zählt. (ich nenn sie mal [Items]
Also immer wenn du ein Item dazu bekommst, wird diese Variable um 1 erhöht.
Demnach ist die Item ID = [Items]
Verkaufen ist etwas schwieriger, da brauchst du eine Temporäre ID ( ich nenn sie [TID] und musst eine Schleife machen.
Ich hoffe das war halbwegsverständlich ausgedrückt. Du musst Ab der ID des verkauften Gegenstandes immer eine ID höher gehen und die um 1 senken.
Bis auf die temporäre ID war ich auch noch aufs selbe Ergebnis gekommen, habe das nur noch nich so ausformuliert gehabt... Danke schonma!!!
Gibt nur ein Problem... Wenn ich noch einen Apfel kriege was passiert denn dann???
Inventar
1 Birne
2 Äpfel
Zusammenfassend:
Bernd findet einen Apfel. Items+1, Apfel+1, Apfel ID = Items
Bernd findet eine Birne. Items+1, Birne+1, Birnen ID = Items
Bernd findet noch einen Apfel.
Dann Fork ich das einfach
If Apfel > 0 (Geht dann nich auch If Apfel equiped? Slbsvstnd. Wenn ich Add Item mache)
Apfel +1
Else
Items +1, Apfel+1, Apfel ID = Items
End
Bernd isst/verkauft einen Apfel
If Apfel > 0
Apfel -1
Else
Items -1, Apfel-1, Apfel ID = 0
End
Nur jetzt muss man gucken wie man das im Menü realisiert...
(Riesige Fork die abfragt welches Item ID 1 hat)
(Riesige Fork die abfragt welches Item ID 2 hat)
(Riesige Fork die abfragt welches Item ID 3 hat)
(Riesige Fork die abfragt welches Item ID 4 hat)
(Riesige Fork die abfragt welches Item ID 5 hat) (Ich danke Strg+C/V )
Und es muss ja immer geguckt werden wie hoch die Menge ist.
Dann der Seitenwechsel und so
Doch nicht soo einfach
Ich werde allerdings erst einmal selber bischen versuchen, und in der Not auf den Skript zurückgreifen!!!
Wenn ich irgendwas zu Stande gebracht habe (Nächstes Wochenende werde ich wohl intensiv dran arbeiten) sage ich bescheid!!!
Irgendetwas lässt mich grübeln:
@üH Warum nennst du ihn Freak??? Ist diese Idee so bescheuert oder nur übertrieben. Oder gibts ne einfachere Lösung.
Hm...
in meinen Augen ist die technische Idee kein Problem...
aber glaubst du nicht, dass es vielleicht hübscher ist, wenn meinthalben zwei energiefüllende Gegenstände nebeneinander stehen.
Ich meine, es könnte nervtötend sein, wenn Apfel auf Position 1 steht, und Großer Apfel auf Position 9.192.631.770...
Wenn das sortiert wäre, wäre es vielleicht technisch nicht ganz so beeindruckend, aber vielleicht angenehmer.
An den Kopp persönlich, zu seiner Signatur:
Was, bitte, ist ein Krummzustand?
Künstlerische Freiheit?
Eine Sekunde ist höchstens das 9.192.631.770fache der Periodendauer der Strahlung eines Caesium-133-Isotops, das dem Übergang zwischen den beiden Hyperfeinstrukturniveaus des >>Grundzustands<< entspricht...
hehe...
Ich bin versucht, allein durch Schreiben die Augenbrauen hochzuziehen und meine Nägel zu feilen...
Wenn ich dich richtig verstanden habe, dann willst du es so machen, dass du abfragst, welches Item Inventarplatz 1, 2, 3... hat. Aber das ist zu schwierig und langwierig!
Mein Vorschlag: Mache für jeden belegbaren Platz (Beispiel: man hat 100 Slots für verschiedene Gegenstände, kann also 100 versch. Items maximal bei sich haben) eine Variable, die abspeichert, welche Item(-ID) auf diesem Platz liegt!
Mal ein Beispiel: du hast in deinem Inventar in der Reihenfolge diese Items:
Jetzt wird Item 1 verwendet, und weil du nur 1. Apfel hast, verschwindet das Item damit aus dem Slot.
Statt nun die Items abzufragen, musst du nur noch machen, dass die Item-ID aus dem nächsten Slot auf den momentanen übertragen wird.
Das bedeutet:
Zuerst wird also beim IF abgefragt, ob die Anzahl im Slot 1 gleich 0 ist. Sprich, ob von den Items, die in Slot 1 abgelegt sind, nur noch 0 übrig sind.
Und danach wird die Variable "Slot1-Item", in welcher abgespeichert wird, welches Item (sprich: welche Item-ID) in Slot 1 liegt, mit der entsprechenden Variable für Slot 2 gleichgesetzt! Das heißt, dass die Item-ID für Slot 2 in Slot 1 übertragen wird. Danach kommt das Item aus Slot 3 in Slot 2, und so weiter.
Die Anzahl der Items muss ebenfalls in einer Variable gespeichert sein und genauso abgeglichen werden. Mit Hilfe eines kleinen Tricks und ein wenig Rumspielerei kannst du allerdings auch Item-ID und -Anzahl in einer Variable abspeichern, aber das zu erklären, wird hier wohl jetzt ein wenig zu kompliziert.
---
Das ist einmal die Basis. Du kannst das Ganze noch furchtbar stark automatisieren, allerdings wird das Ganze etwas komplizierter dadurch! Spart dir aber einiges an Arbeit, wenn du den Überblick nicht verlierst.
Du kannst zB abfragen, wie viele von, sagen wir mal, max. 100 verschiedenen Items du gerade bei dir hast. Heraus kommt 24: du hast 24 Slots mit unterschiedlichen Items belegt.
Dann wird ein Item verwendet und ein Slot damit leer. Nun machst du Folgendes: du fragst ab, welcher Slot geleert wurde. Beispiel: Slot 3 wurde geleert. Das bedeutet, dass alle Slots ab Slot 3 angepasst werden müssen, sprich: alle Slots außer 1 und 2.
In einer Variable hast du also 24 gespeichert, die Anzahl der (vorher) belegten Slots; in einer anderen Variable hast du 3 gespeichert, also die ID von dem Slot, der geleert wurde.
Nun ziehst du Variable B [3] von Variable A [24] ab und fügst dem Ergebnis [21] 1 hinzu, damit du auf Variable C [22] kommst. Denn wenn von 24 Slots alle angepasst werden müssen außer 1 und 2, müssen 22 Slots angeglichen werden.
Nun arbeitest du mit einem Cycle-Befehl. Zuerst wird die Variable C abgefragt; wenn sie gleich 0 ist, dann wird der Cycle unterbrochen. Wenn sie 1 und höher ist, wird der Slot mit der ID aus Variable B [3] mit den Daten aus dem nächsten Slot [B + 1 = 4] abgeglichen; danach ziehst du von Variable C 1 ab und erhöhst dafür Variable B um 1. Nun beginnt der Cycle wieder von vorne!
Dadurch, dass Variable C allerdings immer um 1 gesenkt wird, weiß der Maker, wie viele Runden zu Slotabgleichung er noch durchlaufen muss. Zuerst 22, dann nur noch 21, dann 20, ... dann nur noch 1 und bei 0 hört er schließlich auf.
Und weil Variable B jedes Mal um 1 erhöht wird, gleicht er immer den nächsten Slot ab. In Runde 22 wird Slot 3 mit Slot 4 abgeglichen, in Runde 21 wird Slot 4 mit 5 abgeglichen, in Runde 20 5 mit 6, in Runde 19 6 mit 7, ... und in Runde 1 wird Slot 24 mit Slot 25 abgeglichen; da Slot 25 aber keine Item-Daten mehr enthält, wird damit Slot 24 geleert und damit hat alles wieder seine Richtigkeit, denn nun sind statt 24 Slots nur noch 23 belegt.
---
Ich hoffe, das war nicht zu kompliziert. Ich bin nicht so gut darin, die Theorie zu erklären, fürchte ich.
Wenn es allzu verwirrend ist, kann ich dir dazu vielleicht ein kleines Demoscript machen, dass du dir ansehen kannst.
Kaat hat genau DAS geschrieben, wie ich mir das vorgestellt hatte.
Ich habe eben noch mal durchgelesen, was du geschrieben hast, und da ist mir aufgefallen, dass du ein System vorgestellt hast, das ich dir versucht hatte auszureden.
Kaats Idee ist viel besser als deine und exakt DIE, die ich dir erklären wollte...
Ich Narr habe nur versehentlich deinen Text zu schlampig gelesen!
Danke, Kaat, ohne dich hätten Gray und ich wohl weiter aneinander vorbeigeredet...
Meine Anerkennung, dass du das begriffen hast...
ich kann mir zwar Technik ausdenken, bin aber nicht klug genug, sie zu verstehen, wenn jemand anderes sie mir versucht zu erklären.
@NerqY: Sachma hast du ne Ahnung, wie viel Bock ich hätte dich mit Moos zu bewerfen!!! Du darfst unsere Zusammenarbeit noch nicht bekannt geben, unser Projekt ist Top Secret!!!!
Mir fällt gerade noch ma auf:
Es ist verdammt noch mal verwirrend, aber nur, weil ich im Moment keine Ahnung habe, wie ich das mit Pictures im Menü anstellen soll.
Mach ich dann:
?????????????????????????????????????
Und wenn man dann die Pictures auch bewegend macht (bspw.
nach oben rücken lässt)
Bräuchte man doch für jeden Slot ne Variable..
Um genau zu sagen 2 (x/y)
Uargs GrayQ
@Topp psst nich so laut (nein ich hab deinen Decknamen verraten)
Am besten wäre es, wenn du dieses Menü auf einer neuen Karte hast und die Items als Events platzierst (kannst ja ganz leicht das Aussehen des Items von der Item-ID als Variable abhängig machen).
Dann lässt du das mit dem Nachrücken sein, sondern sorgst nur dafür, dass optisch "aktualisiert" wird. Sieht zwar nicht so schön aus, wenn die Items einfach von einem Augenblick auf den anderen den Platz wechseln statt herumzurücken, aber das ist sowieso nur ein kurzer, kosmetischer Effekt... bei dem IMO das Resultat den Aufwand nicht unbedingt rechtfertigt.
Wenn du das mit dem Nachrücken trotzdem willst und mit Pictures arbeitest... musst du nicht mal Variablen verwenden, wenn du dir einfach die Positionen der Slots merkst (ist gar nicht so schwer, wenn du zB weißt, dass jedes Item dann 40 Pixel raufrücken muss oder sowas).
Aber wie gesagt, würde ich das mit dem Nachrücken weglassen. Sieht wahrscheinlich auch nicht so gut aus, wenn die Items über den Rand ihres Slots hinweg in einen anderen Slot hineinrutschen..
Na aus dem ganzen kann man schon fast ein richtiges Feature machen. Der Spieler könnte dann seine Items ordnen lassen. Nach:
-Alphabet
-Zuordnung (Apfel/Großer Apfel)
-Anzahl
Dann hätte jedes Item quasi 3 IDs pro Liste eine ID. Das mit den IDs finde ich überhaupt wichtig, dass man sowas hat. Bei meinem KS habe ich auch die IDs jeder Waffe zugeordnet, damit ich mich noch auskenne. Alles in eine Textdatei geschrieben und fertig. So findet man unter den vielen Fork Conditions schnell wieder die gewünschte Waffe mit den Elementarwerten usw...
Die Grundidee war ja schnell entdeckt, mit Ids und so, doch brauchte ich jetzt noch bissel Hilfe bei der Realisierung. Das mit dem Ordnen hatten wie uns sowieso gedacht. Das sollte ja nich nur funktionieren, sondern auch übersichtlich sein, wie du sagtest.