PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Peinliche Frage!



dreamboy14
21.06.2003, 14:50
Sorry das ich diese Frage stelle: Wie kann ich Variablen einfügen? Ich begreiffe dieses Thema einfach nicht es will mir nicht in den Kopf. Könnte das mir jemand erklären oder weiss jemand gerade zufällig ob es irgendwo ein Tutorial über das gibt?

Danke für die Hilfehttp://www.multimediaxis.de/images/smilies/old/sm_12.gif

darken
21.06.2003, 14:55
öhm, wie wäre es mit dem Forgotten E-bokk das es

hier gibt (http://www.rpg2000.de)

dreamboy14
21.06.2003, 15:19
Ok vielen Dank ich schau mal dort nach grusshttp://www.multimediaxis.de/images/smilies/old/s_065.gif

Blackadder
21.06.2003, 18:57
mit dem befehl [change variable] kannst du beliebig variablen setzen und verändern.

hier eine erklärung aus dem rpg-maker kurs:


Variablen

A - was'n das?
Zu aller erst: Dieses Kapitel wird vom Aufbau sicherlich etwas an Seijuros geniales Tutorial zum gleichen Thema erinnern.

(Nach Drängen von Seijuro:) ZIEHT ES EUCH IM TUTORIAL BEREICH!!! (Steht aber nix drin, was nicht auch jetzt erklärt würde ^^)

Allerdings ist der komplette Text hier von mir selbst geschrieben, also trotzdem lesen! ^^

Mit Variablen hatte höchstwahrscheinlich jeder von euch schon einmal (z.B. in der Schule) zu tun. Meistens werden Variablen in Zusammenhang mit der Mathematik gebraucht (Löse nach x auf, x², etc.). Daher sollten die meisten das schon wissen: Jede Variable steht für einen Wert. So kann man zum Beispiel sagen, dass X für die Zahl 5 steht.
So könnte man zum Beispiel jemanden im Maker sagen lassen: "Du hast X Äpfel gesammelt!". Das praktische daran ist, dass man nicht für jede Apfelzahl eine einzelne Message schreiben muss, sondern direkt einen allgemeingültigen Text für jeden X Wet hat.
Variablen sind auch für andere Dinge im Zusammenhang mit einem Kampfsystem etc. wichtig. So lassen sich die HP des Helden in einer Variable speichern und so weiter..

B - und wozu das alles??
Für einfach ALLES: Kampfsystem, (Zusatz)menüs, Minigames, Rätsel, Anzeigen von Pictures, ...
So gut wie jedes Script oder Tutorial verwendet Variablen, unter anderem auch das "professionelle" Tag/Nacht-System, das am Ende dieses Kursteils erklärt werden wird.

C - gehts hier mal los?
Ja.

C - Die einzelnen Funktionen
Da wir gerade die stinklangweiligen "Was bewirkt Feld XYZ"-Textmassen der Database hinter uns haben...
..machen wir genau das gleiche bei den Variablen! Juhuuuuu! Nun gut, vielleicht kann ichs ja etwas informativer gestalten..

One: Läuft genau wie bei den Switches. Hier wählt man die eine Variable aus, deren Wert verändert werden soll. Aus der altbekannten Auswahlliste lässt sich hier die gewünschte Variable auswählen, die maximale Anzahl an Variablen lässt sich durch "Max. Field Nr." verändern.

Range: Auch das kennt ihr vielleicht noch von den Switches. Hiermit lässt sich gleich ein ganzer Bereich von Variablen (dieser geht von der Variable aus dem ersten bis zu der aus dem zweiten Feld) verändern. So lassen sich nach einem Minigame zum Beispiel alle zugehörigen Variablen wieder auf 0 zurücksetzen.

Variab: Diese Funktion ist für Anfänger vielleicht nicht so interessant, aber für anspruchsvollere Funktionen (gibt bestimmt auch einfache Anwendungsmöglichkeiten) sehr nützlich. Hier wird nicht die Variable verändert, die man auswählt, sondern die Variable mit der Nummer, die dem Wert der Variable entspricht. Zu kompliziert?
Beispiel: Ihr wählt in diesem Feld Variable Nr. 10 aus. Der Wert dieser Variable wurde vorher auf 15 gesetzt. Nun wird Dank dieser Funktion Variable Nr. 15 verändert.

Das sind die drei Möglichkeiten zur Bestimmung der zu verändernden Variable(n). Als nächstes kann man die Rechenart auswählen.

Set: Die Variable wird auf einen bestimmten Wert gesetzt. Es ist völlig egal, ob ihr voriger Wert 0, 22, 3467 oder -12 war.

+: No Comment (Falls ihr das nicht versteht: Wir empfehlen den Maker grundsätzlich nicht für Kinder unterhalb des Grundschulalters.)

-, *, /: s.o.

Mod: Jaaa, das ist spannend, das ist nicht mal Grundwissen (außer wenn ihr Mathe/Informatik habt). Mit Mod wird der Rest der Ganzzahldivision ausgegeben, soll heißen: 43 Mod 7 = 1! Nicht verstanden?
Bei der Division von 43 mit 7 kommt 6 heraus mit dem Rest 1. Dieser Rest wird durch die Mod-Funktion ausgegeben.
Diese Funktion ist besonders praktisch um an einzelne Stellen einer Zahl heranzukommen. So wird bei 1234 Mod 10 die Zahl 4 ausgegeben. Teilen wir 1234 durch 10 erhalten wir beim Maker 123. 123 Mod 10 ist 3. 12 Mod 10 ist 2. So kann man zum Beispiel eine Zahl in die einzelnen Stellen zerlegen. (Was ihr wiederrum sehr praktisch finden werdet, solltet ihr euch jemals an ein eigenes Kampfsystem heranwagen.)

Die einzelnen Rechenarten haben wir nun schnell hinter uns gebracht, kommen wir zum Hauptteil. Hier wird festgelegt, auf welchen Wert die Variable gesetzt, bzw. welcher Wert hinzugefügt oder abgezogen werden soll.

Set: Hier wird die Variable auf den Wert gesetzt, den ihr auswählt (bzw. mit diesem Wert multipliziert, addiert,...). Diese Funktion ist eigentlich die Standartfunktion von Variablen, bzw. die am häufigsten verwendete.

Variable: Hier wird die Variable auf den Wert einer anderen Variablen gesetzt nämlich auf den Wert derer, die ihr auswählt.
Beispiel: Ihr habt die Variable "Held-HP", und die Variable "Held-Max-HP". Nun geht ihr zu irgendeinem Event bei dem Ihr voll geheilt werdet. Da macht ihr dann im Event die Funktion: Variable 0001: Held-HP, Set, Variable 0002: Held-Max-HP. Dadurch wird die aktuelle HP auf die maximale HP gesetzt.

Variable (No.): Diese Funktion ist ähnlich der oberen, wo man die Variable auswählte. Denn dieses Mal wird die aktuelle Variable nicht auf den Wert der hier gewählten gesetzt, sondern auf den Wert der Variable deren Nummer der hier gewählten entspricht.
Bsp: Ihr wählt hier Variable 5. Diese Variable hat den Wert 27. Und Variable Nummer 27 hat den Wert 321. Dann wird die oben gewählte Variable auf 321 gesetzt (bzw. dazu addiert, multipliziert, ...)

Rand.: Dieses Mal geht es um eine Zufallszahl, die zwischen der ersten und der zweiten eingabe liegt.
Beispiel: Wenn ihr ins erste Feld 7 und ins zweite Feld 15 eingebt, dann kann eure Variable auf 7, 8, 9, 10, 11, 12, 13, 14 und 15 gesetzt werden.

Item: Eine sehr praktische Funktion. In der erste Spalte wählt man ein beliebiges Objekt aus, in der zweiten Spalte kann man zwischen "Owned No." und "Equipped No." unterscheiden. Hierbei wird die Variable entweder auf die Zahl gesetzt, die der Anzahl der jeweiligen Items, die der Held mit sich rumträgt, entspricht (Owned), oder auf die Anzahl der jeweiligen Items, die die Gruppenmitglieder ausgerüstet haben. So kann man dann in einer Message anzeigen lassen: "Ahh, wie ich sehe habt ihr nur (Variable) Tränke!"

Hero: In der ersten Spalte wählt man einen Helden aus, in der zweiten einen bestimmten (Status)Wert, der mit diesem Helden zusammenängt. Auf diesen Wert wird dann jeweils die Variable gesetzt.

Level: Die Stufe des Helden
Exp.: Die Erfahrungspunkte
HP: Die aktuellen Lebenspunkte
MP: Die aktuellen Magiepunkte
Max. HP: Die maximale Lebensenergie
Max. MP: Das maximale Mana
Attack: Die Angriffsstärke
Defense: die Verteidigungskraft
Mind: Die Geistesstärke
Agility: Die Schnelligkeit
Arms No.: Die Nummer des ausgerüsteten Waffen-Objektes
Shield No.: Die Nummer des ausgerüsteten Schildes
Armor No.: Die Nummer der ausgerüsteten Rüstung
Helmet No.: Die Nummer des ausgerüsteten Helmes
Other No.: Die Nummer des ausgerüsteten Spezial-Objektes

All diese Werte sind später einmal sehr wichtig, wenn ihr euch an ein eigenes Menü oder Kampfsystem heranwagt.

Event: In der linken Spalte wählt man ein bestimmtes Ereignis aus, wozu aber auch Personen auf der Karte oder der Held gehören können. Rechts wählt man dann wieder einen bestimmten Wert aus, der mit dem Event zusammenhängt.

Map ID: Die Nummer der Karte, auf der das Event ist
X coordinate: Das xte Feld, auf dem sich das Event von links aus gesehen befindet
Y coordinate: Das xte Feld, auf dem sich das Event von oben aus gesehen befindet
Beyond Facing: Die Blickrichtung des Events: Unten = 2, Links = 4, Rechts = 6, Oben = 8
Scene X: Die Pixel X - Koordinate, wo sich das Event befindet. (ca. X coord. * 16)
Scene Y: Die Pixel Y - Koordinate, wo sich das Event befindet. (ca. Y coord. * 16)

Diese Funktionen werden in vielen Scripts verwendet, Funktionen wie die "Scene"-Befehle sind nützlich um Pictures bei/über dem Helden anzeigen zu lassen.

Other: Noch einige andere Werte, die nicht mit einem Ereignis, einem Helden oder Objekt zusammenhängen.

Money: Das Geld, das die Gruppe dabeihat
Timer Sceonds Left: Anzahl der restlichen Sekunden bei einer Timer-Funktion
Party Size: Anzahl der aktuellen Gruppenmitglieder
Number of Saves: Anzahl der bisherigen Speicherungen
Number of Battles: Anzahl der bisherigen Kämpfe
Number of Victories: Anzahl der Siege in diesen
Number of Defeats: Anzahl der Niederlagen
Number of Escapes: Anzahl der Fluchten
MIDI Play Pos.: Zeitliche Position innerhalb der aktuellen Musik (in Ticks (ca.1000/s)

Die meisten dieser Funktionen sind praktisch, wenn man ein eigenes Menü mit zusätlicher "Statistik-Funktion" einbaut.

Damit hätten wir das geregelt. Es ist wichtig, dass ihr hier alles versteht, da Variablen immer und immer wieder gebraucht werden (und je komplizierter es wird, desto öfter). Falls ihr also noch nicht ganz durchblickt, dann lest es euch noch ein zweites mal durch.

D - Die Anwendung

Gut, dann wollen wir nun mal einen kleinen Teil unseres neuen Wissens anwenden (noch mehr dann später im letzten Abschnitt).
Als Ansatz nehmen wir eine schlechte Idee, die mir gerade gekommen ist. Am Rande des Sees (oder irgendwo sonst) steht ein Künstler, dem leider die Blätter zu zeichenen ausgegangen sind. Deshalb bittet er den Helden, die Blätter für ihn zu suchen.

Seite 1 des KünstlerEvents:
<> SelectFace xyz
<> Messg:"Holla, kannst du mir vielleicht helfen? Ich brauche neue Blätter für meine Zeichnungen!"
<> ChangeSwitch [21] Blättersuche - ON

So, damit wäre der Auftrag erteilt. Nun brauchen wir einen Ort, an dem der Held die Blätter bekommt. Dazu ist am besten das Haus des Helden geeignet. Falls ihr so etwas noch nicht habt, dann stellt irgendwo in das Haus des Helden einen Tisch mit einem Buch, oder nehmt ein Regal. Dieses Buch markiert ihr dann als Event. (Wichtig: Same Level as hero, man soll ja nicht drüberweglaufen können)

Seite 1 des TagebuchEvents:
Startbedingungen: Switch: Blättersuche -ON UND: Variable 1: Blätter 0 above
<> SelectFace zyx
<> Messg:"(Held): Hmm.. mein (leeres) Tagebuch. Ich reiße mal eine Seite raus." <> VariableChange: 1: Blätter +1
<> VariableChange: 2: Blätterdabei +1
<> Messg:"(Held): Jetzt habe ich schon ein Blatt, und keines abgegeben."

Okay, was bewirkt diese Seite: Zuerst komtm die normale Message, in dem der Held seine Aktion beschreibt. Danach werden die Variabeln Blätter und Blätterdabei je um 1 erhöht.
Warum zwei Variablen: Ganz einfach. Ich möchte es so machen, dass nachher Messages wie: "Ich habe jetzt 3, und schon 5 abgegeben" angezeigt werden können. Deshalb mehrere Variablen. Der letzte Text ist übrigens so wie er ist und wird nur beim allerersten Aufruf dieses Events angezeigt, da ja als Startbedingung eingestellt ist, dass die Variable Blätter noch auf 0 stehen muss.
Bleiben wir noch bei diesem Event, fangen aber eine neue Seite an.

Seite 2 des TagebuchEvents:
Startbedingungen: Switch: Blättersuche - ON und Variable 1: Blätter 1 above
<> Select Face xyz
<> Messg:"(Held): Hmm, ..[...]"
<> VariableChange: 1: Blätter +1
<> VariableChange: 2: Blätter dabei +1
<> VariableChange: 3: Blätter abgegeben Set Variable 1
<> VariableChange: 3: Blätter abgegeben - Variable 2
<> Messg:"(Held): So jetzt habe ich \V[2] dabei und schon \V[3] dem Künstler gegeben.

So, was bewirkt nun diese Seite? Zuallererst schauen wir uns die Startbedingungen an. Diese Seite wird aufgerufen, wenn der Switch: Blättersuche angeschaltet ist, und die Anzahl der bisherigen Blätter (also die Variable: Blätter) größer oder gleich 1 ist. (Das bedeutet das above hinter dem Wert der Variable).
Das heißt, diese Seite wird aufgerufen, wenn man das Tagebuch ein zweites, drittes, viertes, ... Mal betrachtet.
Danach wird wie immer das FaceSet des Helden ausgewählt, der Held gibt den Standartspruch von sich, die Gesamt und die aktuelle Blätterzahl wird um je eine Einheit größer, doch DANN:
Die Variable 3: Blätter abgegeben wird auf den Wert der Variable 1: Blätter gesetzt. Jetzt könnte man sich denken, dass das ziemlich unssinig ist. Schließlich bedeutet diese Zeile ja, dass dem Maker erzählt wird, die Anzahl der Blätter, die man abgegeben hat, wäre gleich der Anzahl der Blätter, die man insgesamt aufgenommen hat. Das ist natürlich falsch.
Doch deshalb folgt auch die nächste Zeile, wo von diesem neuen Wert der Variable 3, der Wert der Variable 2: Blätter dabei abgezogen wird. Das heißt: Hat man insgesamt 5 Blätter aufgenommen, und schon 2 abgegebenm folgt folgende Operation:

Blätter = 5
Blätter dabei = 2
Blätter abgegeben = Blätter (also 5)
Blätter abgegeben = Blätterabgegeben - Blätter dabei (also 5 -2)
Blätter abgegeben = 3

Ihr seht, so wird aus den beiden anderen Variablen die dritte berechnet.
Danach folgt die Message, in der erstmal Platzhalter wie "\V[2]" verwendet werden. Mehr zu diesen und anderen Messageffekten vorraussichtlich im nächsten Kurs.
Hier soll nur gesagt werden: Gibt man in einer Message \V[xyz], dann wird im Spiel an dieser Stelle der Wert der Variable mit der Nummer xyz zu sehen sein.
In unserem Beispiel würde die Message also derart aussehen: "So, jetzt habe ich 2 dabei, und schon 3 abgegeben."

Vielleicht ist jetzt einigen von euch ein Problem aufgefallen: Wie sollen sich denn die Werte von "Blätter" und "Blätter dabei" unterscheiden, wenn diese immer parallel erhöft werden?
Um dieses Problem zu lösen, müssen wir uns wieder auf die Stadtmap begeben, wo ja bekanntlich unser Künstlerevent steht. Da machen wir auf Seite 3 weiter. Genau, mit Seite 3, Seite 2 lassen wir erst einmal frei (bis auf die Startbedingung, dass die Variable Blätter größer/gleich 10 sein muss.

Seite 3 des Künstlerevents:
Startbedingung: Switch Blättersuche - ON, Variable Blätter 0 above.
<> SelectFace xyz
<> Messg: "Künstler: Bitte, du MUSST mir welche bringen."

Diese Seite wird also angezeigt, wenn die Blättersuche begonnen hat, der Spieler aber noch keins dabei hat. Aber Moment: Haben wir nicht vorhin glernt, dass bei Variablen immer größer/gleich gilt, wenn man sie als Startbedingung einsetzt? Das stimmt auch weiterhin, dass heißt, wer jetzt testet und fünf Blätter einsammelt, wird trotzdem diese Message zu sehen bekommen. Deshalb müssen wir auch direkt mit Seite 4 weitermachen.

Seite 4 des KünstlerEvents:
Starbedingung: Switch Blättersuche - ON, Variable Blätter 1 above.
<> SelectFace xyz
<> Messg: "Künstler: Hmm..ein Blatt ist kein Blatt. bring mir bitte mehr!"
<> VariableChange: 2: Blätter dabei Set 0

Zuerst: Warum wird im Spiel jetzt diese Seite aufgerufen, wenn ich ein oder mehr Blätter habe, und nicht Seite 3? Schließlich erfüllen beide die Bedingungen.
Das liegt am System des Makers und ist eine der wichtigsten Regeln die es zu beachten gilt, wenn man sich im Maker vertieft (und Fehler behebn muss, die man einfach nicht findet): Der Maker führt die seite des events aus, die alle Bedingungen erfüllt, und die hhöchste Nummer hat. Macht man zwei Seiten ohne Startbedingungen, wird der Maker die zweite Seite ausführen, macht man 3, die dritte. Dies ist sehr wichtig, da durch vertauschen oder falsches Anordnen von Seiten oft Fehler entstehen.

Nun zurück zur Seite: Da diese Seite wieder nur für einen Einzelfall zur Verfügung stehen wird (wenn der Held ein Blatt dabei hat), gibt es auch hier eine vorgefertigte Message. Danach kommt der Teil, nachdem wir uns vorher gefragt haben: Die Variable Numero 2 wird auf 0 gesetzt, und ab diesem Zeitpunkt unterscheiden sich so Variable 1 und 2!
Da wir noch immer keine (teilweise) allgemeingültige Message verwendet haben, ist es nun an der Reihe für Seite 5:

Seite 5 des KünstlerEvents:
Starbedingung: Switch Blättersuche - ON, Variable Blätter 2 above
<> SelectFace xyz
<> Messg: "Künstler: Danke sehr, immerhin schon \V[1] Blätter. Sucht mehr.
<> VariableChange: 2: Blätter dabei Set 0

Diese Seite wird aufgerufen, wenn man nun 2 oder mehr Blääter gesammelt hat. Wie euch bestimmt aufgefallen ist, wird nun auch eine allgemeingültige Message verwendet, dass heißt, wir müssen auf der nächsten Seite nicht beim Falle von drei Blättern weitermachen. Die nächste Seite ist jetzt sowieso nur optional, sie trägt halt mehr zur Logik bei, schließlich soll der Mann ja nicht die ganze Zeit sagen "Immerhin schon XXX Blätter,.." und dann plötzlich: "Super, danke, das reicht!". Deshalb bauen wir noch eine kleine Zwischenstufe ein:

Seite 6 des des KünstlerEvents:
Startbedingung: Switch [...], Variable Blätter 5 above
<> SelectFace xyz
<> Messg "Jo, vielen herzlichen Dank. Mit \V[1] Blättern kann ich schon viel anfangen.
<> VariableChange: 2: Blätter dabei Set 0

Hiermit wird eine neue (trotzdem allgemeingültige) Message eingeführ/angezeigt, sobald der Spieler mehr als 5 Blätter abgegeben hat. Der nächste Schritt ist dann die Maximalanzahl festzulegen, zum Beispiel 10 Blätter, mit denen der Künstler dann erstmal genug haben sollte. Und natürlich darf dann auch eine kleine Belohnung nicht fehlen ^^

Seite 7 des KünstlerEvents:
<> SelectFace xyz
<> Messg: "Künstler: Wow! Ihr habt euch ja richtig ins Zeug gelegt, jetzt habe ich genug. Hier, nehmt das!"
<> Chance Money: Money 100 Incr.
<> SelctFace: Erase
<> Messg: "-100 Creds erhalten-"
<> VariableChange Blätterdabei = 0
<> Change Switch: Blättersuche - OFF

Dies ist die abschließende Seite des Künstler - Ereignisses, auf der man 100 Creds (oder wie auch immer ihr eure Währung nennt) vom Künstler für da fleißige Seitenbringen bekommt. Die Funktion, der Gruppe Geld zu geben oder abzuziehen befindet sich auch auf Seite 1 im Event Dialog, sie heißt "Change Gold Held...", dass man dort mit Increase steigern, oder mit Decrease verringern kann.
Das Select Face: Eras bewirkt, dass vor der zweiten Message nicht das Gesicht des Künstlers angezeigt wird.
Nun tut sich aber mal wieder ein Problem auf. Was passiert wenn man den Künstler jetzt anredet? Seite 3, 4, 5, 6 und 7 können nicht aktiviert werden, weil sie ja als Starbedingung haben, dass der Switch "Blättersuche" an ist. Lassen wir die vorher erstellte Seite 2 außer acht, würde nun die erste Seite aufgerufen, und der Spaß beginne von vorne, was natürlich nicht so sein soll. Hätten wir Seite 2 weggelassen, und ans ende gesetzt, dann wäre niemals Seite 7 aufgerufen (Switch UND Blätter auf 10) worden, da ja schon die Bedingungen der Seite 2 (die man sich jetzt als seite 8 vorstellen muss) erfüllt werden. (Rechts vor links)
Deshalb muss Seite 2 auch genau an dieer Position bleiben, damit sie nur aufgerufen wird, wenn der Held alle Blätter gesammelt hat, und sie auch schon dem Künstler übergab.

Seite 2 des KünstlerEvents:
Startbedingung: Blätter 10 above
<> SelectFace xyz
<> Messg: "Künstler: Danke, ihr habt mich gerettet!!"

Diese Message wird nun jedes Mal angezeigt, wenn man mit dem Künstler redet.
Und auch am Tagebuch müssen wir noch eine Seite hinzufügen, damit der Spieler nicht tausende von Blättern ausreißen kann.

Seite 3 des TagebuchEvents:
Startbedingung: Switch Blättersuche - ON, Blätter 10 above
<> SelectFace zyx
<> Messg: "(Held): So, das sollte aber mal reichen..."

Diese Message wird nun angezeigt, wenn man dem Künstler noch nicht alle Blätter übergeben hat, aber versucht, ein elftes hinauszureißen.


Abschließend ist zu sagen, dass dies meiner Meinung nach ein recht gutes Beispiel für die Funktionen und den sinnvollen Einsatz von Variablen war. Ich hoffe, ich habe alles verständlich genug erklärt, aber wem dies alles zu kompliziert zum Selbermachen ist, der läd sich dann eifach mein Kursprojekt herunter, und schaut sich dort noch einmal alles genau an!



Rm2k Kurs (http://www.rpg2000.4players.de:1061/index.php?inhalt=kurs)

dreamboy14
22.06.2003, 01:04
Vielen Dank das du mir weitergeholfen hast grusshttp://www.multimediaxis.de/images/smilies/old/sm_12.gif

Seph
22.06.2003, 17:26
Da ich etwas zu spät bin sag ich mal nur das:
Anfängern muss nichts peinlich sein, da sie ja noch nichts über den Maker wissen.
Und http://www.multimediaxis.de/images/smilies/old/sm_06.gif im Forum.