![]() |
![]() |
#1 |
Goblin
![]() Registriert seit: 12.04.2008
Ort: KÖLN
Beiträge: 139
|
![]() Hi zusammen,
dieses kleine Tutorial wollte ich jetzt mal aufgrund dessen schreiben da ich lange einen weg gesucht habe die benutzte Anzahl an Variablen ein wenig zu verkleinern als ich mich testweise an Kampfsystemen oder Menüs versucht habe und gleichzeitig bei weniger Aufwand mehr verarbeiten kann. Ich hatte meist das Problem viele Informationen nahezu wie in ner kleinen Datenbank abzulegen die der Maker von haus aus nicht hergibt. ach ja: dieses Tutorial ist eher für Leute gedacht die sich ein wenig mit variablen hantieren können, da der sinnvolle Einsatz dieser Technik ein gutes fortgeschrittenes wissen benötigt. Ich werde mal ein konkretes Beispiel in Angriff nehmen: Es soll Items im Spiel geben die mit der zeit Heilen, und die Items auch noch Level haben sollen... Wenn man mehrere solcher Items hat die der Maker von haus aus normal nicht realisieren kann, kann man diese sehr gut und platzsparend in Variablen unterbringen. aber von Anfang: 1. Aufbau und jetziege verwendung einer Variablen: Wie viele schon wissen besteht eine Variable im Maker aus einer 7 stelligen Zahl und kann mit +,-,*,/,MOD verändert werden. Wir werden hauptsächlich '/' und 'MOD' (%) benötigen, da wir nicht auf den eigendlichen Wert der Variable eingehen wollen sondern auf die entsprechende Stelle einer Variable. 2. Aufteilung: So als erstes wird jetzt überlegt wie man die sieben stellen der Variable einteilen kann: 1 2 3 4 5 6 7 Ich habe jetzt also mal die >Stellen< der variable eine Funktion zugeordnet: 1+2 [Also die stelle: Mio. und Hundert Tausend] = Level des Items 3+4 [Zehn Tausend und Tausend] = Verursachte Heilung/sek.(oder schritt) 5+6 [Hunderter und Zehner] = Dauer der Heilung in Sekunden(oder schritten) 7 [einer stelle] = frei belegbar mit z.b. einer weiteren Effekt ID Somit hätten wir alle Informationen in EINER Variablen untergebracht. 3. Zerlegung: Haben wir jetzt also einen Variablenwert von 1253100 bedeutet das das Item hat das Level 12, heilt auf Level 1 53 schaden in 10 schritten. es klingt jetzt zwar etwas hirnrissig, da ich gesagt habe wir wollen Variablen einsparen, aber wir brauchen hier jetzt 3 weitere Variable: V0001: Level V0002: Heilung V0003: Schritte V000X ist unser Item nun wird erstmal die Variable V000X in die 3 anderen Variablen kopiert: Code:
<> Ch Variable:[0001: Level] Set, Var.[000X]val. <> Ch Variable:[0002: Heilung] Set, Var.[000X]val. <> Ch Variable:[0003: Schritte] Set, Var.[000X]val. Code:
<> Ch Variable:[0001: Level] /, 100000 <> Ch Variable:[0002: Heilung] /, 1000 <> Ch Variable:[0002: Heilung] Mod, 100 <> Ch Variable:[0003: Schritte] Mod, 100 mit "geteilt durch" einer Potenz von 10 kann das Komma bildlich gesprochen nach links verschoben werden. da der Maker weder Kommata noch rundungsrechnung beherrscht kommt somit nur noch der entsprechende ganze Zahlenwert heraus. Mod geht das ganze von der anderen Seite an. man kann in diesem falle (und nur in diesem das ebenfalls mit einer Potenz von 10 berechnet wird) es bildlich so beschreiben das es das selbe macht wie / nur von der anderen Seite der variablen anfangend. also: bei / werden die stellen wo Nullen in der Rechnung stehen die stellen weggenommen und bei Mod bleiben die stellen wo Nullen sind stehen. somit haben die variablen nun folgende werte: V0001 = 12 V0002 = 53 V0003 = 10 4. Zusammensetzen: soll nun das Item definiert werden und die werte sind in den 3 variablen V0001 bis V0003 Gespeichert kann man es wieder in eine Variable auf die entsprechenden stelle setzen: Code:
<> Ch Variable:[000X: Item]Set, Var.[0001]val. (neuer Wert: 12) <> Ch Variable:[000X: Item]*, 100 (neuer Wert: 1200) <> Ch Variable:[000X: Item]+, Var.[0002]val. (neuer Wert: 1253) <> Ch Variable:[000X: Item]*, 100 (neuer Wert: 125300) <> Ch Variable:[000X: Item]+, Var.[0003]val. (neuer Wert: 125310) <> Ch Variable:[000X: Item]*, 10 (neuer Wert: 1253100) 5. Anwendungszwecke: Ich persönlich benutze diese weise um in einem Kampfsystem die Zauber zu speichern und Items in einem schnelltastensystem (von 1-9) zu koordinieren ebenso können beispielsweise alle Gegner abgelegt werden, incl. Level, HP, MP und je nachdem wenn man für einen Gegner 2 variablen verwendet auch alles andere an werten oder an zaubern die die Gegner einsetzen... dadurch das alles dann über eine Formel geregelt werden kann ist das in meinen Augen auch eine recht schöne Möglichkeit die Dinge abzulegen und über die Rechnungsweise Code:
<> Ch Variable:[XX]Set, Var.[V[YY]]val. Schlusswort: Danke an die, die es sich tatsächlich angetan haben das durchzulesen und bei genau denen möchte ich mich auch für die Rechtschreibung entschuldiegen *g*. Diese Technick werde ich in (hoffendlich) näherer Zukunft praktisch in einem mortzmäßiegen (und vollkommen inovativem ^^) SKS als Script (mit Doku) veröffendlichen und behaupten, dass man es mit der hier beschriebenen art endlos erweitern kann. mfg. NeptunVII
__________________
Posting © NeptunVII 2008-2028. (Fast) Alle Rechte vorbehalten. Kein Kritisieren ohne Erlaubniss. Tipp- und Rechtschreibfehler sind absichtlich eingebaut und dienen der Belustigung des Lesers. Alles was in diversesten Postings als Lüge ausgelegt werde könnte, ist nicht als Lüge sondern als sachzwangreduzierte Ehrlichkeit anzusehen. Die Grammatik der Beiträge ist frei erfunden, eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt. |
![]() |
![]() |
![]() |
#2 |
Administrator
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Hui, gar nicht so übel. Die Technik mit der Speicherung in einer einzigen Variable kann man gut brauchen. Auf diese Weise spart man sich den Aufwand des Abfragens von mehreren Variablen und kommt auch weniger schnell durcheinander. (Wenn man durch die einzelnen Positionen durchsteigt.)
Eine Demonstration für weniger technikerfahrene Benutzer wäre natürlich noch schön. ![]() |
![]() |
![]() |
![]() |
#3 |
Goblin
![]() Registriert seit: 12.04.2008
Ort: KÖLN
Beiträge: 139
|
![]() Hab mal was größeres geschrieben...
zum einen eine recht einfache berechnung wo man sagen kann welche stelle einer variable berecnet werden soll und anbei dierekt noch einen praktischen anwendungszweck wür die Fortgeschrittenen (ich denke mal da werden auch die pros. nochmal was nachschlagen können ![]() Das praktische Beispiel ist ein Dynamisches Questlog (beinhaltet: 3 Quests in 7 Bariablen und nahezu unzähliehen möglichkeiten). ist alles OpenSource (RM2k3 v.1.08) und benötigt KEIN installiertes RTP. (fals man es aber 1:1 verwendet oder weitergibt währe ich froh meinen Nick doch lesen zu können.) viel Spass damit: Tutorial + 'Dynamisches Questlog' Script (429KB Gepackt. 1,09MB Entpackt.) MfG. NeptunVII ps 1. Sry für Rapidshare ^^ ps 2. die ein oder andere nachricht wird nicht ganz angezeigt... hatte keine lust das alles nochmal nachzugehen ![]() ps 3. freue mich über jede art von rückmeldung ![]()
__________________
Posting © NeptunVII 2008-2028. (Fast) Alle Rechte vorbehalten. Kein Kritisieren ohne Erlaubniss. Tipp- und Rechtschreibfehler sind absichtlich eingebaut und dienen der Belustigung des Lesers. Alles was in diversesten Postings als Lüge ausgelegt werde könnte, ist nicht als Lüge sondern als sachzwangreduzierte Ehrlichkeit anzusehen. Die Grammatik der Beiträge ist frei erfunden, eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt. |
![]() |
![]() |
![]() |
#4 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Registriert seit: 04.10.2007
Ort: Österreich/Salzburg/Pongau
Alter: 23
Beiträge: 1.183
Blog-Einträge: 1
|
![]() Habs auf CherryShare transferiert ^^
http://share.cherrytree.at/showfile-..._zerlegen_.rar
__________________
|
![]() |
![]() |
![]() |
#5 |
Krieger
![]() Registriert seit: 13.06.2006
Beiträge: 337
|
![]() naja, es ist schon bisschen umständlicher es so zu machen aber sparsamer, aber bei so vielen Var die man benutzen kann braucht man doch eig gar net sparen, außerdem kann man die Var wieder auf 0 setten und mehr fach benutzen.
Aber trotzdem gut das du dir die Mühe gemacht hast
__________________
Dieser Platz ist für eine Signatur gedacht. Da sich Tyraxx aber nichts tolles einfallen lassen konnte, steht hier nicht mehr als nur diese Nachricht hier: "[ Hier bitte Nachricht einfügen ]" |
![]() |
![]() |
![]() |
Lesezeichen |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
|
|