PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zufallstruhe schnell gemacht =)



Multi-Master1988
21.10.2012, 01:33
Diese kleine Toturial widme ich allen die Spaß am Makern haben und die gerne etwas dazu lernen wollen. ;)

Was brauchen wir?

Ein wenig Grundwissen setzte ich für diese kleine Tut vorraus da ich nicht auf jeden einzelnen Befehl eingehen werde.
Ihr solltet Wissen wie man mit Schaltern, Bedingungen und Variabeln umgeht.
Zum zweiten brauchen wir ein Charaset bspw. eine Kiste,Truhe,Krug u.ä.

Der Code im groben:

Wir benutzen bei dieser wahl der Zufalltruhe die funktion der Zufallsvariabel diese soll durch eine von uns gewählte Zahl (in diesem Bsp. 1-5) ein Item aus einer von uns erstellten Liste zufällig herauswählen. Danach soll jeweils für jede einzelne Ziffer (1-5) eine Bedingung abfragen welche Ziffer nun in der Zufallsvariabel gespeichert ist und ebend im positiven verlauf des Zufalls ein Item zuweisen im negtiven Fall soll dies uns eine kurze Textnachricht anzeigen das die Kiste leer ist. Nach dem uns nun ein Item zugewiesen worden ist oder auch ebend nicht kommt ganz am Ende ein Schalter (in diesem Beispiel "Kiste Offen") der ist wichtig damit wir die Kiste nicht unendlich öffnen können wir sind auch nicht zwangsweise auf 2 Ereignissseiten angewiesen.

In Drei Schritten zur Zufallstruhe:

1. Schritt

Nun haben wir im groben was wir alles dafür benötigen jetzt gehts an den Code an sich für den Grundaufbau benötigen wir zuerst eine Bedingung die abfragt ob der Schalter der Truhe (Truhe Offen) schon auf AN gestellt ist dem so so geben wir dem Spieler mit einer kurzen Textmittleiung einen Hinweis das die Truhe bereits leer ist.

Der Code sieht hiefür so aus:



- SCRIPT -
<> Fork Condition: If Switch [23] == ON then ...
. <> Select Face: Chara1 #0, Left
. <> Show Message: Nur noch Spinnennetze zu finden......
. <>
: Else ...
. <> Change Variable: [25] = Random [1-5]
. <>
: End of fork


2.Schritt

Nun was soll passieren wenn die Kiste aber nicht schon geplündert worden ist? Ganz klar der Held soll was bekommen oder auch ebend nicht wie es der Zufall ebend will. Beginnen tut alles mit einer Zufallsvariabel ihr erinnert euch wir haben eine Ziffer von 1-5 gewählt diese soll nun als erstes gespeichert werden danach folgen 5 Bedingungen bei 4 von den Bedingungen lassen wir das Häckchen Ansonstenfall an bei dem letzten unseren 5 können wir es weglassen.Nach dem wir nun diese Bedingungen abfragen Schalten wir bei jeder einzelnen Bedingung dern Schalter "Truhe Offen" auf an.

Der Code im Maker:


- SCRIPT -
<> Fork Condition: If Switch [23] == ON then ...
. <> Show Message: Nur noch Spinnennetze zu finden......
. <>
: Else ...
. <> Change Variable: [25] = Random [1-5]
. <> Fork Condition: If Variable [25] == 1 then ...
. . <> Change Switch: [23] = ON
. . <>
. : Else ...
. . <> Fork Condition: If Variable [25] == 2 then ...
. . . <> Change Switch: [23] = ON
. . . <>
. . : Else ...
. . . <> Fork Condition: If Variable [25] == 3 then ...
. . . . <> Change Switch: [23] = ON
. . . . <>
. . . : Else ...
. . . . <> Fork Condition: If Variable [25] == 4 then ...
. . . . . <> Change Switch: [23] = ON
. . . . . <>
. . . . : Else ...
. . . . . <> Fork Condition: If Variable [25] == 5 then ...
. . . . . . <> Change Switch: [23] = ON
. . . . . . <>
. . . . . : End of fork
. . . . . <>
. . . . : End of fork
. . . . <>
. . . : End of fork
. . . <>
. . : End of fork
. . <>
. : End of fork
. <>
: End of fork





3. Schritt

In Schritt Drei können wir nun Bewegungsanimation der Kisten, Truhen ect. durch Moveevents anzeigen lassen gleichzeitig aber auch Soundgeräusche abspielen der letzte Teil lässt eurer Phantasie freien lass, aber das allerwichtigste was ihr im dritten Schritt machen solltet ist das zuteilen der Items an die Heldentruppe.

Der Code:


- SCRIPT -
<> Fork Condition: If Switch [23] == ON then ...
. <> Show Message: Nur noch Spinnennetze zu finden......
. <>
: Else ...
. <> Change Variable: [25] = Random [1-5]
. <> Fork Condition: If Variable [25] == 1 then ...
. . <> Move Event: This event, Frq 8, Pattern: Fc right, Fc up, Fc left
. . <> Wait Until Moved
. . <> Play Sound Effect: Item1, Volume 100%, Speed 100%, Pan Center
. . <> Change Items: Add 1 piece of item #1
. . <> Change Switch: [23] = ON
. . <>
. : Else ...
. . <> Fork Condition: If Variable [25] == 2 then ...
. . . <> Move Event: This event, Frq 8, Pattern: Fc right, Fc up, Fc left
. . . <> Wait Until Moved
. . . <> Play Sound Effect: Item1, Volume 100%, Speed 100%, Pan Center
. . . <> Change Switch: [23] = ON
. . . <>
. . : Else ...
. . . <> Fork Condition: If Variable [25] == 3 then ...
. . . . <> Move Event: This event, Frq 8, Pattern: Fc right, Fc up, Fc left
. . . . <> Wait Until Moved
. . . . <> Play Sound Effect: Item1, Volume 100%, Speed 100%, Pan Center
. . . . <> Change Items: Add 1 piece of item #1
. . . . <> Change Switch: [23] = ON
. . . . <>
. . . : Else ...
. . . . <> Fork Condition: If Variable [25] == 4 then ...
. . . . . <> Move Event: This event, Frq 8, Pattern: Fc right, Fc up, Fc left
. . . . . <> Wait Until Moved
. . . . . <> Play Sound Effect: Item1, Volume 100%, Speed 100%, Pan Center
. . . . . <> Change Switch: [23] = ON
. . . . . <>
. . . . : Else ...
. . . . . <> Fork Condition: If Variable [25] == 5 then ...
. . . . . . <> Move Event: This event, Frq 8, Pattern: Fc right, Fc up, Fc left
. . . . . . <> Wait Until Moved
. . . . . . <> Play Sound Effect: Failure2, Volume 100%, Speed 100%, Pan Center
. . . . . . <> Change Switch: [23] = ON
. . . . . . <>
. . . . . : End of fork
. . . . . <>
. . . . : End of fork
. . . . <>
. . . : End of fork
. . . <>
. . : End of fork
. . <>
. : End of fork
. <>
: End of fork





Ich hoffe euch hat das basteln Spaß gemacht ich freue Mich nartürlich über jede konstruktive Kritik und Verbesserungsvörschlägen für dieses kleine Tut und auf eure Erfahrungsberichte mit der Zufallstruhe. =)

Lg
Multi-Master1988

Ringlord
21.10.2012, 01:37
Wer ganz schlau ist und sich Arbeit sparen will, setzt die Move Events vor die Forks ;)
Damit wirds dann auch nochmal etwas kürzer und übersichtlicher

Engel der Furcht
21.10.2012, 08:39
Frequenz 8 bei Moveevents bedeutet, dass die Truhe sofort ohne Animation offen ist :P
Moveevents+Wait until moved sollte VOR die Abfrage und Switch 23 = ON nach der Abfrage.
Code gespart :D

Kelven
21.10.2012, 09:43
Bezieht sich "Wait until moved" nicht auf alle Events auf der Map? Ich traue der Methode schon seit 2K-Zeiten nicht mehr. Ein Wait geht ja auch. Du könntest den Code in der Hinsicht optimieren, dass du:

- die If-Abfragen nicht schachtelst
- alle Operationen, die immer ausgeführt werden, an den Anfang bzw. ans Ende setzt. Sprich:

Animation
Wait
Alle If-Abfragen
Switch anschalten

Multi-Master1988
21.10.2012, 22:14
@ All

Gut der Code lässt sich so nartürlich übersichtlich machen dran hatte ich beim erstellen des Tuts nicht gedacht in allgemeinen lässt sich der Code nartürlich induviduell an die Bedürfnisse der Einzelnen immer anpassen.

@ Kelven

Bezügglich des ""Wait until moved" hatte ich eigentlich noch keine Propleme ich schau es mir aber nochmal an.

Lg
Multi-Master1988

Bex
21.10.2012, 23:17
@Multi Master
Wie soll ein Anfänger den Code vereinfachen, wenn er nichtmal so ein System selber bauen kann?
Ein Tutorial sollte einfach und verständlich gehalten sein.Schaue bitte nochmal über deinen Code, denn der ist teilweise mehr als unsauber und es sind sachen zuviel drin.
1. Spoiler1 scheint ok zu sein.
2. Spoiler2 ist sinnlos und erfüllt keinen Zweck! Kann einfach gelöscht werden.
3. Spoiler3 kann deutlich von doppelt gemopelten Code in den Forks befreit werden, auch diese ganzen Else Cases wirken recht unübersichtlich.
Freue mich auf eine überarbeitete Version.
Edit: Gibt es bei diesem Maker Self Switches wie beim VX ?

Gruß Bex

Davy Jones
22.10.2012, 00:05
Meine Gedanken dazu:

Variable "Zufall" Random Number between ... and ...

If Variable "Zufall" is ... then
*inhalt*

If Variable "Zufall" is ... then
*inhalt*

If Variable "Zufall" is ... then
*inhalt*
---------------------------------------------
Edit:

Edit: Gibt es bei diesem Maker Self Switches wie beim VX ?
Nicht dass ich wüsste.

Edit2:
Die Soundeffekte würde ich in Common Events packen, nachher willst du was verbessern und darfst erstmal jedes einzelne Event abklappern xD

DNKpp
22.10.2012, 10:46
jetzt weiß ich, warum ich den maker so beschissen finde.
nichtmal item namen per msg command ansprechbar.... echt schwach sowas.
nunja, wenn man nicht unbedingt ausgeben muss, was in der truhe drin ist, dann ist das ein 3 zeiler ;) (zumal ich tatsächlich bei euch auch dazu tendieren würde, Add Item with ID zu nehmen, und nicht jedes einzeln zu bestimmen...)

Engel der Furcht
22.10.2012, 11:41
(zumal ich tatsächlich bei euch auch dazu tendieren würde, Add Item with ID zu nehmen, und nicht jedes einzeln zu bestimmen...)

Macht wenig bis garkeinen Sinn. Was willst du mit ner Zufallsvariable die dann für die Datenbank ist?
Man sollte bedenken dass zwischen Item 1 und 5 ein legendäres Schwert oder einfach nur eine leere Zeile sein kann.

Multi-Master1988
22.10.2012, 12:58
@ Davy Jones

Nicht nur die Soundeffekte Mittlerweile halte ich es so das ich den gesamten Code über ein Communevent aufrufen lasse so erspar ich mir änderungen in jedem einzelnen Event zu machen.

@ anti-freak

Wie kommst du auf diesen Gedankengang? Also ich sehe da kaum Sinn drin Add Item with ID zu nehmen für mich ist es so im Moment einfacher gewesen und ich denke mal für eine die sich schon ein wenig mit dem Maker beschäftigt haben ebendso.

Lg
Multi-Master1988

DNKpp
22.10.2012, 16:45
Weil ich programmieren kann.

Ich habe ein Array, warum also nicht nutzen wie eins? Ich persönlich habe keine Lust 200 oder mehr add item Befehle per Hand zu ändern. Das unzweckmäßig und kostet nur Zeit, und am Ende sind doch wieder 10 Fehler drin. Wenn das mit deiner momentanen item Struktur nich möglich Ist, machst du was falsch. Ein ziel welches man haben sollte, Ist möglichst wartbaren und wiederverwertbaren code zu schreiben, das Ist das da oben sicherlicht nicht. Ich gebe zu, der Maler Ist beschränkt, aber man kann sich dennoch die Funktionen, die er bietet zu nutze machen. Ich mein... Ihr macht euch Gedanken über ne Zeile mit soundeffekt, wollt mir aber erklären, das es sinnvoll Ist 200 add item Befehle per Hand zu setzen, sure...?

Bex
22.10.2012, 17:39
@anti-freak
Was du zum Code erstellen sagst, da kann ich nur zustimmen.
Hier geht es aber lediglich um 5 zufällige Werte = 1von5 Items. So das man die Truhe nur kopieren brauch und immer 5andere Items einstellen kann.
Hier auf eine Itemreihenfolge in der Database zu achten ist in diesem Fall nicht vorteilhaft.
@Multi-Master1988
Kannst du versuchen den Eventcode bezüglich der weiter oben im Thread genannten Punkte zu verbessern?

Gruß Bex

DNKpp
22.10.2012, 19:01
@anti-freak
Was du zum Code erstellen sagst, da kann ich nur zustimmen.
Hier geht es aber lediglich um 5 zufällige Werte = 1von5 Items. So das man die Truhe nur kopieren brauch und immer 5andere Items einstellen kann.
Hier auf eine Itemreihenfolge in der Database zu achten ist in diesem Fall nicht vorteilhaft.
Gruß Bex

stimme ich dir zu, das es bei diesem beispiel ein wenig überzogen wäre. allerdings kann ich mir nicht vorstellen, das es im ganzen spiel nur 5 items gibt, die in jeder zufallstruhe auftauchen können. deswegen mein einwand. das da oben soll ja lediglich ein tutorial sein, und da fande ich es angebracht das zu erwähnen. wie das dann letzendlich jeder für sich alleine löst ist mir ja persönlich egal. ich nutze den maker nun schon sehr lange nicht mehr (und vermissen tu ich ihn nicht wirklich) aber ich habe damals jede funktion lieben gelernt, die es mir erlaubt hat, dinge indirekt anzusprechen. deswegen fand ich auch den destiny patch so schön, weil er sowas einfach gefördert hat.

Mr.Räbbit
23.10.2012, 13:46
Man könnte es auch noch eleganter machen und ein / oder mehrere Common-Event(s) erstellen, welche einen Zufallswurf starten, der aus allen existierenden Gegenständen eines auswürfelt. (alá Diablo Itemdrop)
In den Truhen müsste man so, wenn diese noch nicht geplündert wurde, lediglich den Switch für das Zufallsitem-Common Event auf AN stellen. Heißt = weniger Code in den einzelnen Truhen und übersichtlichere Code-Ansicht / Fehlerbehebung.
Die Variante habe ich in "Von Händlern und Helden" eingebaut und in fünf Item-Kategorien geteilt.
Auf die Weise kann ich von jedem Punkt im Spiel, mit einem einfachen Switch, einen Zufalls-Item-Wurf auslösen, ohne viel Code kopieren zu müssen

Multi-Master1988
30.10.2012, 17:46
- SCRIPT -
<> Move Event: Event #0, Frq 4, Pattern: Play SE Open1 V100 T100 B50, Fc right, Fc up, Fc left
<> Wait Until Moved
<> Fork Condition: If Switch [23] == ON then ...
. <> Show Message: Nur noch Spinnennetze zu finden......
. <>
: Else ...
. <> Change Variable: [25] = Random [1-5]
. <> Fork Condition: If Variable [25] == 1 then ...
. . <> Show Picture: #20, Kleiner Heilttrank, (160, 120), Mgn 100%, Tsp 0%
. . <> Play Sound Effect: Item1, Volume 100%, Speed 100%, Pan Center
. . <> Change Items: Add 1 piece of item #1
. . <> Change Switch: [23] = ON
. . <>
. : End of fork
. <>
: End of fork
<> Fork Condition: If Variable [25] == 2 then ...
. <> Play Sound Effect: Failure2, Volume 100%, Speed 100%, Pan Center
. <> Change Switch: [23] = ON
. <>
: End of fork
<> Fork Condition: If Variable [25] == 3 then ...
. <> Play Sound Effect: Item1, Volume 100%, Speed 100%, Pan Center
. <> Change Items: Add 1 piece of item #1
. <> Change Switch: [23] = ON
. <>
: End of fork
<> Fork Condition: If Variable [25] == 4 then ...
. <> Play Sound Effect: Item1, Volume 100%, Speed 100%, Pan Center
. <> Change Items: Add 1 piece of item #2
. <> Change Switch: [23] = ON
. <>
: End of fork
<> Fork Condition: If Variable [25] == 5 then ...
. <> Play Sound Effect: Failure2, Volume 100%, Speed 100%, Pan Center
. <> Change Switch: [23] = ON
. <>
: End of fork
<> Move Event: Event #0, Frq 4, Pattern: Fc up, Fc right, Fc down
<> Wait Until Moved
<> Erase Picture: #20



So sieht der aktuelle Code aus und wird über Commun Events aufgerufen bei jeder einzelnen Truhe Kiste ect.

Lg
Multi-Master1988

Engel der Furcht
30.10.2012, 18:26
Wieso sind die Variablen Abfragen außerhalb des Else-Cases der anderen?
Ergibt doch keinen Sinn^^
Wieso wird die Variable abgefragt, wenn die Truhe schon offen ist?

Was für ne Zufallstruhe vielleicht in Ordnung wäre, es Level-bedingt zu machen.
Level 1-10: Heilkraut, kleiner heiltrank, kleiner Manatrank
Level 11-25: mittlerer Heiltrank, mittlerer Manatrank, Phönixfeder
Level 26:XY: großer Manatrank, großer Heiltrank, irgendein-Item-Das-Party-wiederbelebt

goldenroy
30.10.2012, 19:25
Wo ist das Problem bei nem einfachen Kistenevent? oO


Random Variable zwischen 1-5: V1337
Chestanimation + Sound
Wenn Switch XYZ an ist...
..omg die Truhe ist leider leer! D:
Wenn nicht, dann...
Wenn V1337 = 1, dann
Item A
Ende
Wenn V1337 = 2, dann
Item B
Ende
Wenn V1337 = 3, dann
Item C
Ende
Wenn V1337 = 4, dann
Item D
Ende
Wenn V1337 = 5, dann
Item E
Ende
Mach Switch XYZ an
Ende
Chestanimation zu + Sound


You get it?
Ausserdem kann man sowas nicht in ein CE packen (ausser du meintest Maister-Räbbits Methode, das ist aber noch was anderes), da man den Switch pro Truhe ja ändern muss. Außer man spielt da irgendwie mit dem Modulus rum, aber keine Ahnung wie das klappt.

Quetschi
31.10.2012, 19:21
Naja man kann so etwas schon in ein CE packen. Das mach ich auch so^^ Wenn dann ein Item ausgegeben wird, setze ich im CE einen Switch auf ON. Danach frage ich im Event der Truhe ab ob dieser Switch auf ON steht und wenn ja dann wird der Switch für diese Truhe aktiviert und der Switch aus dem CE wieder ausgeschaltet. Ich hab das so gemacht weil ich mir gerade ein eigenes Inventar bastele, und wenn man keinen Platz mehr hat, dann kann man sich das Item später noch abholen. (Ich weiß grade nicht wie das bei dem Inventar vom RPGmaker ist...wird das überhaupt jemals voll ?^^ Und wenn ja bei wievielen Items und eine noch bessere Frage, was passiert dann mit den Items die man eigentlich erhalten sollte ?) Wenn man dieses Prinzip mit dem Prinzip einer Zufallstruhe kombiniert, müsste man sich ggf. das Item was sich in genau dieser Truhe ist merken oder man lässt einfach erneut den Zufall entscheiden, je nachdem wie man lustig ist.

Ansonsten denk ich aber eher auch das so ein einfaches Kistenevent, nicht sonderlich Schwierigkeiten machen sollte und man eig nicht soviel falsch machen kann UND das das ganze sehr schnell und übersichtlich geht. goldenroy hat ja schon geschrieben wie es geht. Und wenn man halt noch 'nen Sound für das Erhalten des Items will, fügt man diesen eben hinzu (auch hier: ggf. per Switch abfragen ob ein Item erhalten wurde, falls der Zufall manchmal will das man kein Item erhält.)

LG Quetschi

goldenroy
31.10.2012, 23:54
wird das überhaupt jemals voll ?^^

Nicht das ich wüsste. 0:

Mr.Räbbit
01.11.2012, 10:48
Items nur bis 99 Stapelbar soweit ich weiß. (Zumindest 2000/2003er)

Quetschi
01.11.2012, 12:59
Das ist schon klar. Ich meinte eher wieviele verschiedene Item-Typen man mit sich tragen kann. Also wenn man z.B. in der Database alle 5000 Items "Heiltrank1" bis "Heiltrank5000" nennt und nacheinander ausgibt, ob dann beispielsweise bei "Heiltrank2000" schluss ist und einem die restlichen nicht gegeben werden, oder ob sich die Größe des Inventars der maximalen Möglichkeit der Items anpasst. Heißt soviel wie "wenn ich 10 mögliche Items habe ist mein Inventar 10 Plätze groß wenn ich 5000 mögliche Items habe ist es 5000 Plätze groß."

Multi-Master1988
01.11.2012, 21:02
@ Quetschi

Lässt sich doch Testen. ;) Und wie du das dann machst hast du dir schon selbst beantwortet ^^ (Ist nartürlich sehr aufwendig)
Aber meiner Erfahrung nach sollte man da keine Propleme bei haben.

Edit:
Also jedes einzelnen Item kannst du bis zu 99 mal besitzen und bei Maximal 5000 Plätze die man für Items benutzen kann man also 99*5000 Items besitzen das wären dann 495000 Items die du in den Rucksack deiner Party packen kannst.

Lg
Multi-Master1988

Quetschi
01.11.2012, 22:09
Danke für's Ausprobieren Multi-Master :) Jetzt weiß man Bescheid wie das läuft...aber soviele Items wird man wahrscheinlich nicht brauchen (Wer lässt in seinem Spiel die Party mit 495.000 Items rumlaufen ?). Naja zum eigentlichem Erstellen einer Zufallstruhe wurde ja schon alles gesagt oder ?

Ja, meine Methode setzt vllt ein bisschen Aufwand vorraus, aber ich bin heute fertig damit geworden. Bzw. es läuft alles automatisiert ab und ich muss nurnoch die Anzeige erstellen und dann jeweils ergänzen wenn ich ein neues Item einfüge, für die ich übrigens auch nicht die Makereigene Itemdatabase benutze. Das macht das ganze vllt wieder etwas umständlicher, aber ich habe soviel Freiraum wie ich möchte (z.B. unnötige 999.999 mögliche Items oder dass ich ItemIDs nach einem System vergeben kann und mit der Modulusfunktion bestimme welches Item ich gerade habe oder das sich Items mehr/weniger als 99 mal stappeln lassen uvm.)...bzw soviel bis der Maker mich einschränkt, was aber nicht allzu schnell passieren sollte/wird und solange man alles ausreichend kommentiert, findet man sich in seinem Code auch zurecht (normalerweise). Wobei das eigentliche sortieren der Items nicht das schwierigste ist, sondern das "Nachrücken", da die Itemslots die eine ID von 0 haben mitsortiert werden (zumindest bei meinem System :D) Zumindest hat das bei mir die meiste Zeit in Anspruch genommen, weil ich da irgendwo einen Fehler hatte^^

Ich denke ich stell dafür mal ein Tutorial ins Technikforum wenn ich Zeit habe. Vielleicht dieses oder nächstes Wochenende...mal gucken.

LG Quetschi

Multi-Master1988
01.11.2012, 22:31
Danke für's Ausprobieren Multi-Master :) Jetzt weiß man Bescheid wie das läuft...aber soviele Items wird man wahrscheinlich nicht brauchen (Wer lässt in seinem Spiel die Party mit 495.000 Items rumlaufen ?).

Ausprobiert hab ich eig. gar nichts viel mehr simpel gerechnet (ich lass mich nartürlich gerne verbessern falls das nicht stimmen sollte) und mit wie vielen Items ein Entwickler seine Spieler fütter ist jedem selbst überlassen wobei 495.000 Items nartürlich schon extrem übertrieben sind.


Ich denke ich stell dafür mal ein Tutorial ins Technikforum wenn ich Zeit habe

Ich bin gespannt darauf denn der eig. Inhalt deines Posts macht neugierig ;)

Lg
Multi-Master1988

Quetschi
01.11.2012, 22:45
Ausprobiert hab ich eig. gar nichts

Achso, ich dachte du hättest das mal eben schnell im Maker ausprobiert^^ Ich würde es ja selber machen aber dazu bin ich zu faul^^ Das Rechnen ist ja nicht schwer^^


Ich bin gespannt darauf denn der eig. Inhalt deines Posts macht neugierig

Danke, ich hoffe nur mein Internet spielt auch mit, damit ich das Tutorial schnell hier posten/veröffentlichen kann, da das in letzter Zeit ein wenig spinnt.

LG Quetschi

Multi-Master1988
16.06.2013, 00:21
So nachdem ich ein wenig weiter an einer neuen Version eines Truhenöffnungssystem getüftelt
habe, hab ich mich gefragt ob es eine Möglichkeit gibt die Itemnamen über Variabeln in eine Textbox zu packen quasi so das ich die Namen des jeweiligen Items nicht mehr Namentlich Eintragen gibt es dafür eine Lösung?

Lg
Multi-Master1988

djeurissen
16.06.2013, 10:06
Mit dem Rpg Maker 2003 könnte man ein Plugin schreiben...
Da wäre dann aber die Frage ob man die Itemnamen einfach so aus der Datebbank holen kann oder ob man dafür eine kleine Textdatei erstellen muss die alle Itemnamen beinhalten...

Wenn ich heute abend zurück bin und keiner schneller war als ich, werd ich mal versuchen so ein Plugin zu erstellen...

Morden
16.06.2013, 10:52
Kann man mit DynRPG ganz einfach machen. Cherry hat zwar die Skill und Item-Klassen noch nicht implementiert, aber es gibt Funktionen, um sowohl die Item-Namen, als auch die Item-Beschreibungen (gleiches gilt für Skills), zu ermitteln.

@Multi-Master
Wenn du RM2k3 verwendest und ein kleines Plugin dafür brauchst, könnte ich dir heute Abend fix eins basteln. Ist dann eigentlich eher nur fix zusammenkopieren, weil ich den Code dafür eh schon habe^^

EDIT:
Sollte beim 2k auch mit dem DestinyPatch möglich sein, soweit ich weiß.

PeAcE
MorDen

Multi-Master1988
16.06.2013, 16:18
@ djeurissen & Mordan

Ich arbeite eigentlich Grundsätzlich mit dem Rm2k solltet sich allerdings einer von euch dazu bereit erklären ein Plugin dafür zu schreiben werd ich mich wohl zum ersten mal mit dem DynRPG oder ebend den DestinyPatch intensiv beschäftigen.

Lg
Multi-Master1988

Morden
17.06.2013, 09:04
@ djeurissen & Mordan

Ich arbeite eigentlich Grundsätzlich mit dem Rm2k solltet sich allerdings einer von euch dazu bereit erklären ein Plugin dafür zu schreiben werd ich mich wohl zum ersten mal mit dem DynRPG oder ebend den DestinyPatch intensiv beschäftigen.

Lg
Multi-Master1988

DestinyPatch hat das von vornherein eingebaut. Man muss nur seine RPG_RT.exe mit dem DestinyPatcher patchen und dabei MessageLink aktivieren. Dann stehen dir TextMakros zur Verfügung, womit du halt noch weitere Möglichkeiten bei Messages hast. Ist auch in der Destiny-Hilfe sehr gut beschrieben (auf Deutsch). Btw verwendet DestinyPatch keine PlugIns, sondern wird direkt im MakerSkript per Kommentar-Command eingegeben^^

PeAcE
MorDen

Multi-Master1988
17.06.2013, 09:15
Das Proplem welches ich im Moment habe ist das Mir der DesinyPatcher 2.0 die RPG_RT.exe nicht öffnen will eine Maker neuinstallation Rm2k Version 1.05b hat nicht gebracht kann Mir da jemand weiterhelfen?

Lg
Multi-Master1988

Morden
17.06.2013, 09:41
Ich denke, dass deine RPG_RT.exe nicht in der richtigen Version vorliegt.

Hab dir mal ne PN geschrieben.

PeAcE
MorDen

goldenroy
17.06.2013, 17:23
Wenn ich heute abend zurück bin und keiner schneller war als ich, werd ich mal versuchen so ein Plugin zu erstellen...

Ui, ein Pointer für Itemnamen per DynRPG klingt doch interessant. Allerdings ist die Frage der Umsetzung schwierig, außer man kann man mit DynRPG einen Befehl wie \n[0001] (also quasi ein \i[XX]) erstellen. Ansonsten müsste man die Message mit dem Namen komplett als Comment erstellen, oder? o:
Keine Ahnung wie DynRPG funktioniert. 8D

Cherry
17.06.2013, 17:33
Man könnte doch einfach das Plugin den Itemnamen in einen Heroname schreiben lassen (die Längenbegrenzung ist nur im Eingabefeld im Maker vorhanden, nicht intern, also ist das egal).

Morden
17.06.2013, 17:43
Ui, ein Pointer für Itemnamen per DynRPG klingt doch interessant. Allerdings ist die Frage der Umsetzung schwierig, außer man kann man mit DynRPG einen Befehl wie \n[0001] (also quasi ein \i[XX]) erstellen. Ansonsten müsste man die Message mit dem Namen komplett als Comment erstellen, oder? o:
Keine Ahnung wie DynRPG funktioniert. 8D

Wenn also Interesse besteht, dann mache ich das fertig. Meine Implementierung parst den ganz normal eingegebenen MessageText. Stellt also weitere Makros, wie \i[] zur Verfügung, welche auch unendlich tief verschachtelt werden können. Also auch sowas: \i[\v[50]]
.

Man könnte doch einfach das Plugin den Itemnamen in einen Heroname schreiben lassen (die Längenbegrenzung ist nur im Eingabefeld im Maker vorhanden, nicht intern, also ist das egal).

Siehe oben, ich würde das per Parser lösen - weil komfortabler zu benutzen.

PeAcE
MorDen

Cherry
17.06.2013, 18:45
Da dürfte es ein kleines Problem geben:

Für die erste Zeile sollte das wunderbar gehen, weil "You may change the scriptLine object if you want, so that it is executed with different parameters. After the line was executed, all changes will be undone automatically."
Für die zweite bis vierte Zeile, die ja eigene RPG::EventScriptLine's sind, kriegst du ein Problem: Die zweite bis vierte Zeile wird von dem Handler der ersten Zeile abgefragt und nicht als eigener Eventbefehl (mit onEventCommand-Callback) ausgeführt. Du kannst zwar im onEventCommand der ersten Zeile z.B. mit scriptData[lineId + 1] auf die zweite Zeile zugreifen (musst halt überprüfen ob es auch wirklich eine RPG::EVCMD_ADD_LINE_TO_MESSAGE-Zeile ist), wenn du diese aber veränderst, wird das von DynRPG nicht automatisch zurückgeändert! Wenn sich die Message also in einem Loop befindet, funktioniert das Ersetzen nur einmal, nachher wird der bereits ersetzte Text verwendet!

Aus diesem Grund habe ich vor, ein Callback für Backslashbefehle in Messages einzufügen. Außerdem brauche ich das um die Länge von Messages feststellen zu können (auch solche mit Plugin-eigenen Sachen drin), weil das dann später dazu verwendet werden kann, Fenster (oder Sprechblasen) zu verwenden die sich der Messagelänge von der Größe her anpassen.

Morden
17.06.2013, 18:51
Ja, ich weiß Cherry. Ich bin auch noch am überlegen, wie man die "Loop-Problematik" am besten behebt. Das andere habe ich alles schon alleine herausgefunden xDDD Meine Idee wäre da, dass man alle Text bis zum "End of Event" zwischenspeichert und dann bei einem MessageCommand überprüft, ob diese bereits zwischengespeichert wurde, und dann halt das Zwischengespeicherte verwendet und dann neu parst. Beim EndOfEvent könnte man dann den "Cache" ja wieder rausschmeißen, oder nicht?

Das, was du als letztes ansprichst: An sowas in der Art bastle ich auch gerade rum^^ Also an dynamischen MessageBoxen usw.
Wobei ich aber sicher bin, dass eine direkte Implementierung in DynRPG wesentlich besser ist ^^'''

PeAcE
MorDen

Cherry
17.06.2013, 18:59
Es gibt einen Weg der zwar eine Art Hack ist, aber funktionieren könnte:

Du speicherst die zweite bis vierte Zeile, wenn es eine gibt, zwischen, und zwar als String in irgendeinem Format, z.B. durch \x01 Bytes getrennt, und am Anfang und Ende auch je ein \x01 Byte. Dann schaust du immer nach, ob der Text der ersten Zeile mit \x01 endet - wenn nicht, hängst du an den bestehenden Text "\>", 50 Leerzeichen, "\<" und dann deinen Spezialstring, also etwa "\x01Dies ist die zweite Zeile\x01die dritte\x01und die vierte\x01" (hier sind die Backslashes im C-Stil gemeint). Endet die erste Zeile bereits mit \x01, dann liest du deinen Spezialstring aus und stellst damit die 2. bis 4. Zeile wieder her. Das mit \>...\< dient dazu dass dein String nicht vom Maker angezeigt wird, weil du vorher 50 Leerzeichen einfügst (die dank \>...\< instant angezeigt werden und nicht "hereinlaufen" und Zeit verbrauchen).

EDIT: Vielleicht war es auch \<...\>, ich weiß nicht mehr. Musst probieren.

Morden
17.06.2013, 23:14
Ich glaube eine andere Möglichkeit gefunden zu haben, die super funktioniert. Die ist nicht so »hacky«, wie deine Lösung Cherry.

ich möchte aber erst noch ein paar Tests durchführen, bevor ich wirklich sage, dass es in allen Situationen funktioniert^^

EDIT:
Ich hab mich entschlossen, dass ihr das auch eigentlich gleich testen könnt xD Bei mir hat es soweit funktioniert.
In dem Thread hier: KLICK (http://www.multimediaxis.de/threads/138637-DynRPG-Plugin-RM2k3-MessageExtender-BETA)

PeAcE
MorDen