Archiv verlassen und diese Seite im Standarddesign anzeigen : Item Scroll System...
Multi-Master1988
29.08.2010, 14:31
Hai ich bastel mal wieder an meinem Menü rum und Wollte
eine Scrool funktion einbauen Anfangs hatte ich ein Bild mit einer Auflistung aller Item's das nach oben bzw. nach unten geschoben wird nun zumal das Bild doch schon recht groß geworden ist gefällt mir die Sache aber nicht mehr gibt es eine Alternative?:confused:
Ich dachte da an eine Scroolfunktion wie in Lufia in dem ich einfach einen Teil der Items anzeige und diese dann nach dem Scroolen immer eine andere Itemliste anzeigt.
So ich habe mir mal eine Technik von Goblindieb angeschaut leider makert er zur Zeit nicht selbst aber nach absprache mit ihm stelle ich diese mal öffentlich:
- SCRIPT -
<> Fork Condition: If Variable [33] <= 6 then ...
<> Erase Picture: #18
<> Erase Picture: #17
<> Erase Picture: #16
<> Erase Picture: #15
<> Erase Picture: #14
<> Erase Picture: #13
<> Show Picture: #1, Itembox, (192, 176), Mgn 100%, Tsp 0%, No trans. color
<> Fork Condition: If Variable [1001] == 1 then ...
<> Fork Condition: If Item #1 owning then ...
<> Change Variable: [999] = Amount of item #1 owned
<> Call Event: Common Event #4
<> Show Picture: #18, ITEM Apfelsaft, (168, 160), Mgn 100%, Tsp 0%
<>
: Else ...
<> Change Variable: [1001] += 1
<>
: End of fork
<>
: End of fork
<> Fork Condition: If Variable [1001] == 2 then ...
<> Fork Condition: If Item #2 owning then ...
<> Change Variable: [999] = Amount of item #2 owned
<> Call Event: Common Event #4
<> Show Picture: #18, ITEM Birnensaft, (168, 160), Mgn 100%, Tsp 0%
<>
: Else ...
<> Change Variable: [1001] += 1
<>
: End of fork
<>
: End of fork
<> Fork Condition: If Variable [1001] == 7 then ...
<> Fork Condition: If Item #7 owning then ...
<> Change Variable: [999] = Amount of item #7 owned
<> Call Event: Common Event #4
<> Show Picture: #18, ITEM Kraftwasser, (168, 160), Mgn 100%, Tsp 0%
<>
: Else ...
<> Change Variable: [1001] += 1
<>
: End of fork
<>
: End of fork
<>
: End of fork
- SCRIPT -
<> Fork Condition: If Variable [33] <= 6 then ...
. <> Erase Picture: #18
. <> Erase Picture: #17
. <> Erase Picture: #16
. <> Erase Picture: #15
. <> Erase Picture: #14
. <> Erase Picture: #13
. <> Show Picture: #1, Itembox, (192, 176), Mgn 100%, Tsp 0%, No trans. color
. <> Fork Condition: If Variable [1001] == 1 then ...
. . <> Fork Condition: If Item #1 owning then ...
. . . <> Change Variable: [999] = Amount of item #1 owned
. . . <> Call Event: Common Event #4
. . . <> Show Picture: #18, ITEM Apfelsaft, (168, 160), Mgn 100%, Tsp 0%
. . . <>
. . : Else ...
. . . <> Change Variable: [1001] += 1
. . . <>
. . : End of fork
. . <>
. : End of fork
. <> Fork Condition: If Variable [1001] == 2 then ...
. . <> Fork Condition: If Item #2 owning then ...
. . . <> Change Variable: [999] = Amount of item #2 owned
. . . <> Call Event: Common Event #4
. . . <> Show Picture: #18, ITEM Birnensaft, (168, 160), Mgn 100%, Tsp 0%
. . . <>
. . : Else ...
. . . <> Change Variable: [1001] += 1
. . . <>
. . : End of fork
. . <>
. : End of fork
. <> Fork Condition: If Variable [1001] == 7 then ...
. . <> Fork Condition: If Item #7 owning then ...
. . . <> Change Variable: [999] = Amount of item #7 owned
. . . <> Call Event: Common Event #4
. . . <> Show Picture: #18, ITEM Kraftwasser, (168, 160), Mgn 100%, Tsp 0%
. . . <>
. . : Else ...
. . . <> Change Variable: [1001] += 1
. . . <>
. . : End of fork
. . <>
. : End of fork
. <>
: End of fork
Sieht leider noch verwirrender aus...:rolleyes:
Hier werden ja immer 6 Items angezeigt diese werden dann als Pic anzeiget und dann die Variabel Itemcounter + 1 gesetzt also nächste Liste danach folgen die anderen Items in alphabetischer Rheienfolge.
Hier muss ich dann nur darauf achten das ich alle Items Abfrage (recht aufwendig) bsp. wenn es 1000 Items' gibt müsste ich alle Item's von 1-1000 abfragen.
So nun wollte ich euch fragen wie ihr dies noch einfacher gestalten würdet?:confused:
Da ich leider mit meinem latein am Ende bin Bitte ich um Hilfe!:(
EDIT:
Goblindieb ist Bereit mir später ein Tut zu seiner Technik zu schicken dies werde ich dann hier Posten!
Lg
Multi-Master1988
Der Code sieht so im Forum nicht gut aus.
Bitte klicke im EasyEventExporter beim Importieren auf "Ja" und wähle die Datei "vbcode_lightbg.eft" im Ordner "ftemplates", dann wird der Code im Forum ordentlich dargestellt und farblich gehighlighted.
Multi-Master1988
30.08.2010, 19:09
@ Cherry
Hab jetzt einfach beide Varianten gepostet...;)
Ausserdem möchte ich euch das Scroolmenü noch ein wenig näher
erläutern es sollen insgesamt ca. 80 Items dort intregiert werden.:)
Leider klingt das ziemlich viel für mich da ich hier eine Bedingung für das an ersterstelle liegende aktuelle Item benötige und dann alle anderen.
Ich habe mal nachgrerechnet wenn ich den Code von
Goblindieb so übernehmen würde müsste ich:
80 * 80 = 6400
Bedingungen einbauen!
Und 80 Items klingt doch noch recht wenig...
Gibt es eine Alternative?
(Hoffe ihr versteht worauf ich hinaus will :confused:)
Du hast in deinem Code 2 Probleme,
1. Du benutzt die Items aus der Datenbank. Lass das, mach deine Items gleich als Variablen, dann kannst du Zeiger verwenden (Variable No.) und Code automatisieren
2. Du musst im Moment jedes Bild einzeln anzeigen lassen. Setz dich mal mit dem Picture Pointer Patch von Cherry auseinander, denn genau für solche Probleme ist der gut
Wenn die zwei Punkte beseitigt sind, müsstest du den Code nur einmal schreiben während ein Zeiger hochläuft (wenn dir "Zeiger" oder "Variable No." nichts sagt, probier mal aus, was Variable No. in Change Variable so macht ;))
Multi-Master1988
30.08.2010, 20:28
@ Dhan
Vergiss bitte nicht die Technik ist nicht von Mir...;)
Sondern von Goblindieb (chatte grad mit ICQ mit ihm).
Und ich weiß was du mit Variablenummer meinst
trotzdem hätte ich gerne Intresse an einem Bsp.
als Script. bzw. Goblindieb...
Lg
Multi-Master
Vergiss bitte nicht die Technik ist nicht von Mir...;)
Wichtig: Auch übernommene Skripte musst du 100%ig verstehen, sonst sind sie wertlos sobald du modifizieren willst
Und ich weiß was du mit Variablenummer meinst
http://dhan.de/variableno.png
Hier isses ausgewählt, das sind das, was man in der Informatik "Zeiger" (http://de.wikipedia.org/wiki/Zeiger_%28Informatik%29) nennt, eine Variable, die die Nummer (bzw Adresse) einer anderen Variable speichert.
Ein Beispiel:
Du hast deine Items in Variablen gespeichert, nämlich in den Variablen Nummer 1000 bis 1999 und willst jetzt rausfinden, ob der Held irgendein beliebiges Item besitzt.
Eine Möglichkeit wäre:
fork (Variable #1000 ungleich 0?) {Change Switch Ja ON}
fork (Variable #1001 ungleich 0?) {Change Switch Ja ON}
fork (Variable #1002 ungleich 0?) {Change Switch Ja ON}
fork (Variable #1003 ungleich 0?) {Change Switch Ja ON}
...
aber ich bezweifle einfach mal, dass du wirklich 1000 Abfragen schreiben willst.
Informatik dreht sich darum, sogenannte "Redundanzen" zu vermeiden, das heißt Unnötiges, Code, bei dem es sich vermeiden ließe, ihn zu schreiben
Hierfür wäre die Lösung mit einem Zeiger folgende:
Variable #1 = 1000
Cycle {
__fork (Variable #1 = 2000) { Break Cycle }
__fork (Variable No #1 ungleich 0?) {
____Change Switch Ja ON
____Break Cycle
__}
__Variable #1 += 1
}
Was du hier machst, ist den Zeiger, Variable #1, erst auf 1000 zu setzen (die Nummer der ersten zu prüfenden Variable) und dann immer zu schauen:
"Hat die Variable mit der in Variable #1 gespeicherten Nummer einen Wert ungleich 0?" und solange das nicht der Fall ist, erhöhst du Variable #1 immer um 1 und fragst so eben alle 1000 Variablen ab
(in Java isses witzig, da gibts nämlich ausschließlich Zeiger, sprich alle Variablen sind Zeiger ^^)
Multi-Master1988
30.08.2010, 21:41
@ Dahn
Wichtig: Auch übernommene Skripte musst du 100%ig verstehen, sonst sind sie wertlos sobald du modifizieren willstIch verstehe den Code 100% schließlich habe ich mindestens 3 Jahre mit ihm gamakert...;)
Ist Schließlich in Real mein Cousi/Bester Kumpel...:D
Edit:
Und dein Script werde ich mir nochmal genauer anschauen Nice ;-)
Lg
Multi-Master1988
@Dhan
Seh ich das richtig, das bei dir im Extremfall 1000 mal wiederholt wird? das ist ein bisschen Overhead für ein Scrollmenü.
Es geht viel leichter, wenn du den PicPointer von Cherry hast imho, dadurch hast du die Möglichkeit so ein "scrollen" (eigentlich ist es eher mit Karteikarten zu vergleichen, scrollen kann man aber genau so realisieren, da es nur eine anderen Tastenabfrage ist).
Schau dir als Vergleich doch mal das System von Velsabor oder Phönix Memories of Shadows an. Dort wurde es ohne Patches gemacht. Mit dem PicPointer-Patch, hast du den Vorteil alles in einem relativ kleinem Event zu machen. Ich hab dazu hier irgendwo im Forum mal eine Erklärung gemacht aber Gott weiß wo D:
Edit:
Okay, habs gefunden xD da : Erklärung mit PicPointer (http://new.multimediaxis.de/showpost.php?p=2560913&postcount=10)
Multi-Master1988
31.08.2010, 10:46
@ R.D.
Guter Leserlicher Code werd mich mal tiefer mit beschaffen...
Danke...:D
@ An alle:
Das is bei allen Codevarianten nicht einfach wird ist klar...;)
Nur was mich stuzig macht wieso ruft ihr die Items über Variabeln ab?:confused:
Obwohl es genau so gut über die Database geht...
Odr legt ihr diese so fest damit ihr überhaupt das mit dem Patch vereinen könnt?
EDIT.
Hab jetzt doch den Sinn dahinter verstanden...Sorry...!
1. Ich heiße R.D. :D
2. Ich rufe nur die Anzahl eines Items über Variablen ab, bei mir kannst du immer nicht fröhlich in der Datenbank deine Items machen ,was VIEL besser ist da du dort viele Einstellungen hast, die du mit einer Vari pro Item nicht lösen kannst.
@Dhan
Seh ich das richtig, das bei dir im Extremfall 1000 mal wiederholt wird? das ist ein bisschen Overhead für ein Scrollmenü.
Jung, das is kein Skript, das is eine Erklärung.
Und ja, für die Aufgabe, die der Code in der Erklärung arbeitet, gibt es keinen schnelleren Code, abgesehen von für den isolierten Fall nicht anwendbares Preprocessing.
Was der Picture Pointer Patch in einem Beispiel soll, das mit Pictures überhaupt nix zu tun hat, musst du mir mal erklären.
Zu deinem Tuto, ich würd dir empfehlen, da vorher erstmal reinzustellen, wie das Ding generell arbeitet (prosaisch) bevor du mit Code oder der Benennung von Variablen anfängst. N Flussdiagramm wär z.B. sinnvoll.
Technische Frage, wozu machst du das mim Modulo statt einfach 2 Varis pro Einheit anzulegen? Im Thread isses eine Erklärung mehr die vom eigentlichen Skript ablenkt
Ich hab nicht behauptet das es ein Script ist ;) Ich hab dir nur eine Frage gestellt.
Zu deinem Tuto, ich würd dir empfehlen, da vorher erstmal reinzustellen, wie das Ding generell arbeitet (prosaisch) bevor du mit Code oder der Benennung von Variablen anfängst. N Flussdiagramm wär z.B. sinnvoll.
Das ist kein Tutorial, sonder eine Erklärung die im passenden Thread gebraucht wurde.
In eben jenen ging es um ein Menü bei dem man pro Seite eine Anzahl X Items anzeigt und Items die eine höhre ID haben werden rangerückt. Beim nächsten Mal poste ich den ganzen Thread.
Was der Picture Pointer Patch in einem Beispiel soll, das mit Pictures überhaupt nix zu tun hat, musst du mir mal erklären.
Was du da geschrieben hast, hab ich mir gar nicht durchgelesen :D Hab nur unten das mit dem viele Schleifen gesehen.
Ich wollte nur eine Hilfe für den jungen Padawan geben, genau wie du :)
Schaus dir mal genau an, dann siehst du das man ohne diesen Patch die Ordner IDs, die die Position setzt und somit auch die Bild ID , nicht pointen kann sondern jedes mal mit Forks arbeiten muss, ich hatte keine Lust für 500 Items bei einem Menü mit jemals 8 Items pro Seite, 8 Abfragen pro Item zu machen (das müsste ich, weil ich ja die Items ja rangerückt werden sollen).
Technische Frage, wozu machst du das mim Modulo statt einfach 2 Varis pro Einheit anzulegen? Im Thread isses eine Erklärung mehr die vom eigentlichen Skript ablenkt.
Gegenfrage, warum nicht? Warum 16 Variablen wenn 8 reichen? Das ist doch Verschwendung und als Programmierer hab ich gelernt, das man das unterlassen sollte (Ist ja nicht so, das ultra komplex is gel?). Und ich sehe nicht wie ein Exkurs ablenkt... hab ich in der Schule auch oft gehabt und hat nicht sonderlich abgelenkt.
Ein Scollleiste kann man bei diesem System einfach hinzufügen, ich nutze es in jedem meiner Spiele wenn ich ein Ordnersystem brauch.
P.S. Ich bin nicht gut im Erklären, habs auch nie behauptet daher kann es schon sein das vieles kompliziert klingt.
Ich hab nicht behauptet das es ein Script ist ;) Ich hab dir nur eine Frage gestellt.
Jä, aber eine Frage, deren Sinn ich nicht verstehe. Wenn man prüfen will, ob in 1000 Varis eine nicht 0 ist muss man im worst case alle Varis durchtesten. Schneller als O(n) benötigt Preprocessing.
Was du da geschrieben hast, hab ich mir gar nicht durchgelesen
o.O
Schaus dir mal genau an, dann siehst du das man ohne diesen Patch die Ordner IDs, die die Position setzt und somit auch die Bild ID , nicht pointen kann sondern jedes mal mit Forks arbeiten muss, ich hatte keine Lust für 500 Items bei einem Menü mit jemals 8 Items pro Seite, 8 Abfragen pro Item zu machen (das müsste ich, weil ich ja die Items ja rangerückt werden sollen).
Jo, aber wie ich bereits sagte, in meinem Code kommen keine Pictures vor.
Gegenfrage, warum nicht? Warum 16 Variablen wenn 8 reichen? Das ist doch Verschwendung und als Programmierer hab ich gelernt, das man das unterlassen sollte
Ne, als Programmierer geht man davon aus, dass Speicherplatz im Rahmen solcher kleiner Skripte praktisch unbegrenzt vorhanden ist und achtet auf Geschwindigkeit und Übersicht
(Ist ja nicht so, das ultra komplex is gel?). Und ich sehe nicht wie ein Exkurs ablenkt... hab ich in der Schule auch oft gehabt und hat nicht sonderlich abgelenkt.
Er lenkt ganz einfach dadurch ab, dass du noch erklären musst, was der Modulo-Operator tut. Wissen serviert man in kleinen Häppchen.
Jä, aber eine Frage, deren Sinn ich nicht verstehe. Wenn man prüfen will, ob in 1000 Varis eine nicht 0 ist muss man im worst case alle Varis durchtesten. Schneller als O(n) benötigt Preprocessing.
Jo, aber wie ich bereits sagte, in meinem Code kommen keine Pictures vor.
Wie gesagt, ich wollte gar nicht irgendwas mit deinem Post machen oder kritisieren, nur wissen ob das nicht Overhead ist (als Erklärung eben).
Hab extra ne Zeiel freigelassen zwischen dieser Frage und meinen Gedanken zum Problem.
Ne, als Programmierer geht man davon aus, dass Speicherplatz im Rahmen solcher kleiner Skripte praktisch unbegrenzt vorhanden ist und achtet auf Geschwindigkeit und Übersicht.
Ich nehm an das ist lieht im ermessen das Programmierers. ICH für meine Teil, achte auf so was ob kleines Programm/script oder Großes. Du nicht, cool :A
Er lenkt ganz einfach dadurch ab, dass du noch erklären musst, was der Modulo-Operator tut. Wissen serviert man in kleinen Häppchen.
... is okay.
Multi-Master1988
31.08.2010, 18:21
So ich misch mich jetzt mal mit ein und schmeiß mal
ein thread mit rein in dem der Modolopperator erklärt wird:
http://multimediaxis.net/showthread.php?t=128306
Ich glaube makenshi hat es sehr schön erklärt (ist auf jedenfall für mich verständlicher geworden!);)
Zudem habe ich eine Frage gibt es den PicPictureEventer auch auf Deutsch mein Englisch ist nämlich Mist!:rolleyes:
Englisch wirst du brauchen - und da es Fachterme sind, dürfte es hier nicht sehr problematisch sein.
Aber trotzdem, lern englisch, und zwar bevorzugt aus Medien (Bücher, Serien - is doch recht praktisch, dass z.B. South Park 100% legal im Netz in englisch anschaubar ist)
Zudem habe ich eine Frage gibt es den PicPictureEventer auch auf Deutsch mein Englisch ist nämlich Mist!:rolleyes:
Äh, der PicPointerPatch hat sowohl eine deutsche als auch eine englische Erklärung dabei...!
Multi-Master1988
31.08.2010, 20:11
Äh, der PicPointerPatch hat sowohl eine deutsche als auch eine englische Erklärung dabei...!
Ha...!
Hab sie jetzt erst gefunden trotzdem Danke für den Hinweis...;)
Sollte nicht gleich alles sofort in einen anderen Ordner verschieben xD
Edit:
So habe hier mal die Lufia (Menü) Version von Goblindieb
Vielleicht könnt ihr ja was daran verändern und mir dann noch einmal eure Codes verständlicher machen...
http://www.npshare.de/files/c912907e/Lufia.rar
Zudem beinhaltet es die Original Tasten des Snes-Emulator (siehe Lufia 2)...
Also mann kann sich auf einer Stelle bewegen...
Ausserdem befindet sich auch der Anfang eines SKS dort soweit ich weiß...
Nutze den Unterbau hier (http://multimediaxis.de/showthread.php?t=127955) (Komplettes Teil bei I.), damit lässt sich die Anzahl der Fork-Conditions auf genau die Anzahl der abgefragten Items verringern (also 80 statt 6400).
PS: Ich hatte das Problem auch, aber nur bei 20 Items, heißt also ich bräuchte 1540 Fork-Conditions dafür. Das ist die Summe von (maximale Anzahl der Items + 1 - n) mal n, wobei n von 1 bis die maximale Anzahl geht.
Einige werden das als sum((nmax+1-n)*n,n,1,nmax) besser verstehen.
Für 80 Items braucht man schon 88560 Fork-Conditions, statt 6400.
Multi-Master1988
31.08.2010, 21:41
So werd mich später damit tiefer befassen aber wie bist
du auf diese Zahl gekommen (88560) jedesmal wenn ich das
durchrechne bekomme ich weitaus weniger raus...:confused:
Kannst du deine Rechnung mal Ohne Klammern aufführen??
Lg
Multi-Master1988
niR-kun meint:
http://share.cherrytree.at/showfile-1594/screenshot_222_dokument___wordpad.png
Hab ich aber nicht überüprüft.
EDIT: Es gibt übrigens auch den Item&EventPointerPatch, aber nur für den 2k.
Nutze den Unterbau hier (http://multimediaxis.de/showthread.php?t=127955) (Komplettes Teil bei I.), damit lässt sich die Anzahl der Fork-Conditions auf genau die Anzahl der abgefragten Items verringern (also 80 statt 6400).
PS: Ich hatte das Problem auch, aber nur bei 20 Items, heißt also ich bräuchte 1540 Fork-Conditions dafür. Das ist die Summe von (maximale Anzahl der Items + 1 - n) mal n, wobei n von 1 bis die maximale Anzahl geht.
Einige werden das als sum((nmax+1-n)*n,n,1,nmax) besser verstehen.
Für 80 Items braucht man schon 88560 Fork-Conditions, statt 6400.
Was? Wozu?
These: Man braucht gar keine. Die Entsprechende Verwendung von PicPointPatch und ein klein wenig Verstand ermöglicht eine Lösung in der es egal ist ob man 1 x 1 Item oder 99 x 9000 verschiedene hat.
@Multi-Master1988 :
Ignorier sowas, nein, du brauchst nicht tausende an Forks.
Geht es nur um das Anzeigen der Bilder (da wäre der PPP gut geeignet), oder auch um das Feststellen der Items (und das in Variablen zu packen)?
PS: Danke Cherry, ich war zu faul die Grafik zu erstellen. Ausgerechnet habe ich das mit einem CAS, was ich noch installiert habe.
http://share.cherrytree.at/showfile-1594/screenshot_222_dokument___wordpad.png für nMax = 20
ist gleich bedeutend mit (1 * 20) + (2 * 19) + (3 * 18) + ... + (19 * 2) + (20 * 1).
Zumindest wenn du die Items per Fork-Condition feststellen willst. Man muss ja feststellen, ob die Variablen 0 sind oder schon mit der ID von einem Item belegt sind. Ich habe damals bei meinem Itemmenü nach gezählt, ich kam mit meinen 20 Items auf genau 1540 Fork-Conditions, die Fork-Conditions für das Anzeigen der Bilder noch nicht mitgezählt (sind bei meinem 5-Item-Per-Seite-Menü noch mal 260 Fork-Conditions).
UPDATE: Die 1540 Fork-Conditions sind komplett ohne POINTER gemeint. Wenn man das mit Pointer nutzt sind das bei mir 20 Fork Conditions für die Items + 3 für den Überprüfen-Setzen-Skript. Bei der Anzeige der Bilder habe ich es ohne PPP noch nicht geschafft die Anzahl der Fork-Conditions zu minimieren (also weniger als 260).
Man brauch eigentlich NUR für das Anzeigen der Bilder die vielen Forks, für das festlegen ob ein Platz besetzt ist brauch man eine Fork. Vorher pointet man das einfach.
niR-kun, ich werde nicht schlau aus dir. Zum einen scheinst du diese Anzahl an Forks wirklich für eine Art Option zu halten, zum anderen...
Ich habe damals bei meinem Itemmenü nach gezählt, ich kam mit meinen 20 Items auf genau 1540 Fork-Conditions
...hast du das wirklich mal so gemacht. O_O
To be honest, ich checks nicht, du wirkst alles in allem nicht dumm genug um so eine derart dumme Lösung in Betracht zu ziehen.
Multi-Master1988
01.09.2010, 17:44
Ich denke mit der Klammerrechnung kann ich was Anfangen...;)
Zudem werde ich die Bilder mit Cherrys Patch anzeigen lassen!
Und vlt lässt sich ja was kombinieren mit euren gezeigten Codes...:)
Lg
Multi-Master
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.