Kamikaze Board



Zurück   Kamikaze Board > RPG Maker > RPG Maker Technik (2K/2K3) > Tutorials

Antwort
 
Themen-Optionen
Alt 03.05.2009, 22:53   #1
NeptunVII Männlich
Goblin
 
Benutzerbild von NeptunVII
 
Registriert seit: 12.04.2008
Ort: KÖLN
Beiträge: 139
Standard [Kniffe mit Variablen] Variable 'Zerlegen' und anwenden.

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.
Jetzt müssen nur noch die entsprechenden Stellen der Variablen rausgerechnet werden:
Code:
<> Ch Variable:[0001: Level] /, 100000
<> Ch Variable:[0002: Heilung] /, 1000
<> Ch Variable:[0002: Heilung] Mod, 100
<> Ch Variable:[0003: Schritte] Mod, 100
um es zu erklären:
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)
so haben wir die Variable jetzt wieder von vorne angefangen aufzubauen...


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.
(also den wert der variable mit der ID welche in Variable YY steht) kann man mit einer winzigen Werteveränderung (in V[YY]) durch Eingabe ganze zauber- oder Gegnermassen ohne weiteres über ein einziges Eevent managen.



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.
NeptunVII ist offline   Mit Zitat antworten
Alt 04.05.2009, 10:59   #2
Veyrne Männlich
Administrator
 
Benutzerbild von Veyrne
 
Registriert seit: 24.04.2004
Ort: Blewth Castle
Alter: 30
Beiträge: 13.441
Blog-Einträge: 11
Standard

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.
__________________

Filehost - Regeln - EBook - Raccu - YouTube - RPGA.info
Secret of Monkey Island (PSP)
Veyrne ist offline   Mit Zitat antworten
Alt 04.05.2009, 23:46   #3
NeptunVII Männlich
Goblin
 
Benutzerbild von NeptunVII
 
Registriert seit: 12.04.2008
Ort: KÖLN
Beiträge: 139
Standard

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.
NeptunVII ist offline   Mit Zitat antworten
Alt 05.05.2009, 15:45   #4
Cherry Männlich
Kirscherator
 
Benutzerbild von Cherry
 
Registriert seit: 04.10.2007
Ort: Österreich/Salzburg/Pongau
Alter: 23
Beiträge: 1.183
Blog-Einträge: 1
Standard

Zitat:
Zitat von NeptunVII Beitrag anzeigen
ps 1. Sry für Rapidshare ^^
Habs auf CherryShare transferiert ^^
http://share.cherrytree.at/showfile-..._zerlegen_.rar
__________________
Cherry ist offline   Mit Zitat antworten
Alt 06.05.2009, 21:22   #5
Tyraxx
Krieger
 
Benutzerbild von Tyraxx
 
Registriert seit: 13.06.2006
Beiträge: 337
Standard

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 ]"
Tyraxx ist offline   Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:44 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
RPGA.info