RPG-Maker Quartier http://forum.rpg2000.4players.de/phpBB3/ |
|
Makerwissen für Fortgeschrittene. http://forum.rpg2000.4players.de/phpBB3/viewtopic.php?f=15&t=61897 |
Seite 1 von 3 |
Autor: | Makenshi [ Fr Apr 29, 2005 22:51 ] |
Betreff des Beitrags: | Makerwissen für Fortgeschrittene. |
Habt ihr Makerwissen welches ihr herausgefunden habt? Wollt ihr es zum besten geben? Dann hier herein damit. Ich erlaube mir mal anzufangen : Wusstet ihr das der Maker Pointer vor einem versteckt? Die Zahlen vor den Variablen dienen als Pointer Punkte. Über die Funktion "Referece" kann man nun die Variablen über diese Zahlen ansprechen. Was das bringt? Sagen wir einmal wir wollen die Variablen 0010 - 0020 überprüfen. Eben dieses können wir jetzt in einer Schleife tun. Anstatt das wir jetzt 20 Forks machen , zählen wir in einer Schleife den Variablen Referece immer +1 hoch. Sprich : Code: Set "Variablen Referece" = 10
Loop ------ Set "Temp Variable" equal to "Variablen Referece" ( Hierbei wird jetzt nicht equal dem Wert der Variablen Referece geschrieben sondern mit dem Wert der Variable auf den die Referenz verweist! Bei uns wäre das die Variable 0010!) IF Temp Variable is equal to 1 Message "Ya sie ist auf 1!" Else Message "Nicht auf 1...." Endif If Variable Referece is not equal to 20 Change Variable "Variable Referece" + 1 Else Break Loop Endif ---------- End Loop Dieses Konzept ist vielfältig nutzbar und eröffnet neue Dimensionen am Maker denke ich. Der Komfort bei der Benutzung dieser Technik ist ebenfalls groß da man nicht mehr 100 Forks stapeln muss. PS : Beim 2k müsste dieser Befehl Variable No. heissen. Ist bei Choose Variable die dritte Auswahl. Beim Operand genauso. Beim 2k3 hieß dieser Befehl Variable Referece. Die Positionen sind identisch mit denen des 2k. |
Autor: | Ryo Saeba [ Sa Apr 30, 2005 8:13 ] |
Betreff des Beitrags: | |
Ich kopiere einfach mal, aus dem Thread im ???-Forum^^ Kommazahlen speichern Der Maker speichert ja keine Kommastellen sondern nur Integer-Werte. Um Dennoch Kommazahlen zu speichern, benötigt man nun zwei statt einer Variable. Bsp: 3,6138 = 36138 * 10^-4 (mal 10 hoch Minus vier) Man muss also die Zahl "36138" in eine Variable speichern und die Potenz "10^-4" in die zweite Variable. Wurzel ziehen Der RPGMaker 2k/2k3 hat leider keine eingebaute Funktion mit der man die Wurzel ziehen kann. Um die Quadratwurzel einer Zahl zu ermitteln, kann man folgendermaßen vorgehen: Man lässt den Maker einfach nacheinander ausprobieren, welche Zahl mit sich selbst multipliziert, der Zahl unter der Wurzel am nächsten kommt. Wir arbeiten also mit einer Intervallschachtelung. Bsp: wir suchen die Wurzel aus 388 (Ergebnis: 19,6977...) Wir könnten jetzt mit "1" anfangen, was aber ziemlich unpraktisch wäre, da ja die Wurzel der kleinsten dreistelligen Zahl "100" ja auch schon zweistellig ist. Bei größeren Zahlen (im Hundertausenderbereich zB.) empfiehlt es sich dann aber die Anzahl der Abfragen noch weiter einzugrenzen, indem man noch differenzierter abfragt (gibt sicher noch bessere Methoden die Anzahl der Abfragen zu minimieren)... aber bei unserem Bsp. ist das nicht nötig. Wir beginnen unsere Abfrage nun also mit "10" (zur Erinnerung, wir suchen die Wurzel aus 388) 10*10=100 11*11=121 ... 18*18=324 19*19=361 20*20=400-> wir sind zu hoch, wenn wir nun noch ein genaueres Ergebnis haben wollen, können wir mit Kommazahlen rechnen. Dazu rechnen wir jetzt einfach mit 19,5 indem wir diesen Wert im Maker wie oben erwähnt speichern. -> 195*10^-1 Wir rechnen jetzt 195*195=38025 -> wenn wir das umrechnen (durch "100" teilen) kommen wir auf 380,25 was 388 eigentlich relativ ausreichend nahekommt. Und unser Taschenrechner spuckte ja 19,6977... aus, womit wir mit 19,5 schon nah dran sind. Wenn jemand noch Möglichkeiten kennt, Wurzeln auch mit Nachkommastellen genauer zu berechnen pls melden^^ Aus einer Variable 20 Switches machen Praktisch, wenn man Switches sparen möchte^^ aber auch sonst ganz interessant. Man speichert die Daten binär. Bsp: Zitat: Binäre Zahl:
Wenn man Switch 2 4 und 5 auf "On" schalten will wäre sie beispielsweise 11010 (x5,x4,x3,x2,x1) um sie ins Dezimale zu übertragen rechnet man einfach 16*1 + 8*1 + 4*0 + 2*1 + 1*1 was 26 ergäbe. Um aus dieser Zahl später zu den Gegenständen zu kommen: Var1 = Schlüsselzahl Fork Var1 >= 16 { Switch 5 "On" Var1 = Var1 - 16 } Fork Var1 >= 8 { Switch 4 "On" Var1 = Var1 - 8 } Fork Var1 >= 4 { Switch 3 "On" Var1 = Var1 - 4 } Fork Var1 >= 2 { Switch 2 "On" Var1 = Var1 - 2 } Fork Var1 >= 1 { Switch 1 "On" } Dank übrigens an Dhan aus dem Ring, von dem ich mir das hier gepostete eigentlich abgeschaut hab.. das Zitat ist eigentlich fast 1zu1 aus einem seiner Posts übernommen^^ |
Autor: | Benni [ Sa Apr 30, 2005 13:19 ] |
Betreff des Beitrags: | |
Ein kleiner Trick zu transparenten Textboxen: Anstatt für Anzeigen und Löschen der Textboxen zwei Common Events zu benutzen, kann man das auch mit einem CE abwickeln. So muss man nicht immer zwischen den beiden Events hin und her wechseln und so kann man imo die Textboxen leichter einbauen, da man jetzt ja nur noch einen Event hat. Alles was man dafür braucht ist ein Schalter, der Anzeigt, ob eine Textbox angezeigt wird oder nicht. |
Autor: | Andrej [ Mo Mai 02, 2005 22:24 ] |
Betreff des Beitrags: | |
Zeph hat geschrieben: naja, dann will ich auchmal was schreiben:
ehm, ein durch Label oder Cycel erzeugtes PP-Event, welches in einer Schlaufe läuft, verhält sich genauso wie ein Autostart Event, mit allen seinen Eigenschaften, z.B.:
so, mehr fällt mir grad net ein, werde hier aber regelmäßig posten, für alle die das auch machen wollen habe ich den Topic in der Linkliste vermerkt. Da muss ich dir wiedersprechen, Zeph, denn mit Labels und Cycles werden PP's nicht wie AutoStarts, es können weiterhin PP's laufen. Im Gegensatz zum echten AutoStart. Klar, der Held kann sich nicht bewegen aber nya. Wenn ich irren sollte, schlagt mich. Desweiteren kann ich höchstens noch schreiben, dass man bei mehreren Events nur 2 Variablen braucht, um z.B. Koordinatenkollisionen abzufragen, indem man im Event selbst die Koordinaten bestimmt und sie per "This Event X & Y" festlegt. Danach kann man sie sogar per Copy&Paste-Verfahren einfügen... Siehe dazu auch dieses Topic... |
Autor: | JellyFish-Germany [ Di Mai 03, 2005 16:06 ] |
Betreff des Beitrags: | |
dumme Frage: Was ist ein "PP-Event"? ![]() (jetzt net auf die Palme gehen, please...) |
Autor: | Zeph [ Di Mai 03, 2005 16:08 ] |
Betreff des Beitrags: | |
mit PP-Event, kürze ich wie viele andere auch, Parallel Prozess Events ab, imo logisch |
Autor: | JellyFish-Germany [ Di Mai 03, 2005 16:10 ] |
Betreff des Beitrags: | |
danke Zeph ![]() |
Autor: | Nobody [ Di Mai 03, 2005 17:35 ] |
Betreff des Beitrags: | |
Zeph hat geschrieben: das man das Game zum absturz bringt, wenn man in einem Call Event den Befehl Call Event packt, und das Call Event aufruft,
Das heißt btw. Rekursive Funktion und ist ziemlich nützlich wenn man verschachtelte Schleifen machen will. Nützlich um Bruteforce und ähnliches zu machen. Überlege gerade ob man auch einen Nutzen davon im Maker hat ._. |
Autor: | torteloni [ Di Mai 03, 2005 17:43 ] |
Betreff des Beitrags: | |
Nobody hat geschrieben: Zeph hat geschrieben: das man das Game zum absturz bringt, wenn man in einem Call Event den Befehl Call Event packt, und das Call Event aufruft, Das heißt btw. Rekursive Funktion und ist ziemlich nützlich wenn man verschachtelte Schleifen machen will. Nützlich um Bruteforce und ähnliches zu machen. Überlege gerade ob man auch einen Nutzen davon im Maker hat ._. hat man, man hat damit zB komfortabel die möglichkeiten differenzen auszurechnen und außerdem iss das, soweit mein wissen reicht, aus nem pp cc nen autostart ev zu machen... es gibt zwar bestimmt noch andere lösungen, aber ich machs so. |
Autor: | Zeph [ Sa Mai 28, 2005 18:03 ] |
Betreff des Beitrags: | |
hiho, ich bin es mal wiedern, und es gibt was neues, habt ihr gewußt, das ihr ein event ohne jeglichen wait befehl in seiner durchlaufzeit negativ beeinflussen könnt, macht dafür einfach einige viele forks in ein autostart event herein, siehe hier: http://jpg.250kb.de/cce5f46befc92f9cd2b ... 007b98.jpg dieser code begrenzt das event auf 4500 durchläufe in 0,1 sek, je nach anzahl der forks läuft das event schneller, bzw. langsamer, dabei kann es aber zu einer großen rechenbelastung kommen, daher ist es zu empfehlen diesem event noch eins parallel zu schalten, was so aussieht, http://jpg.250kb.de/ffc9a8f78850c4760bd ... 0ca33c.jpg würde man dies auch in nem autostart event machen, würde es um eine kleinigkeit schneller laufen, was man aber weniger relevant ist, hoffe, ihr könnt das irgendwie gebrauchen, z.b. bei einer ATB Leiste ist das ganze sehr gut einzusetzen, |
Autor: | Donkey [ Fr Jul 01, 2005 15:09 ] |
Betreff des Beitrags: | |
EDIT: Hab nicht drauf geachtet, dachte aber der Thread wäre gepinnt oO Sollte man nachholen. Hier wird eh nicht so viel gepostet, da hab ich mir gedacht, ich präsentiere mein Heldenauswahl"skript". Ob man das so braucht, ka, aber immer besser eine vollständige Sammlung zu haben ;D Vorwissen: __________________
Die Variable 162 ist mit Allzweckvariable benannt, weil ich die in meinem Projekt noch für weitaus mehr Dinge verwende, für die ich mir zu schön war immer eine Neue zu machen. Sie dient eigentlich als nur als eine Art Pointer. __________________
Die Variablen 163; 164; 165; 166 enthalten jeweils einen Wert zwischen 0 und 8. Das Projekt beinhaltet 8 spielbare Helden, von denen ja leider nur 4 gleichzeitig spielbar sind. Es wird also gespeichert welcher Held nun in der Party ist. Bsp.: In der Party sind Held 1, Held 2, Held 3 und Held 6. Dann sehen die Variablen wie folgt aus: [mono]Var 163 - 1 Var 164 - 2 Var 165 - 3 Var 166 - 6[/mono] Bei Bedarf poste ich auch noch, wie man die entsprechenden Heldenziffern an Ort und Stelle bekommt. Beinhaltet die Party weniger als 4 Helden bleiben die entsprechenden Variablen auf 0. Die Variablennummer sind zufällig, man kann also beliebige 4 Variablen nehmen. Sie müssen nur direkt untereinanderstehen und einige stellen im Code müssen angepasst werden. __________________
Die Variable 188, mit Prüfer benannt, wird für zusätzliche Kleinigkeiten verwendet, meist zum...erm...prüfen. xD __________________
Nun zum Code an sich. (ein simples Call Event) Erläuterung im Detail: -die Allzweckvariable bekommt den Wert 163, also die Nummer der Variable, in der der Wert für den ersten Helden gespeichert wird. -(optional) hier werden Koordinaten für ein Auswahlbild gespeichert und Bilder angzeigt -ein Schleife wird gestartet -Passwortabfrage wird gestartet. -sollte man die Pfeiltaste Links drücken (also Wert 2): -die Allzweckvariable wird um 1 verringert, um in der Reihenfolge um einen nach Links zu gehen (die Reihenfolge ist in Leserichtung zu betrachten, also 1234) -es wird geprüft ob die Allzweckvariable 162 ist, also bei Held 1 nach links gehen wollte. -die ist nicht möglich, also wird der Allzweckvariable der Wert 166 zugewiesen, was dem Held 4 entspricht. ( es wird also gesprungen. Will man dies vermeiden nimmt man 163, also bleibt die Auswahl wo sie ist.) -nun wird mit Hilfe der Variable Prüfer geprüft, ob überhaupt ein Held 4 vorhanden ist. Besitzt die Variable den Wert 0 ist dies nicht der Fall und die Allzweckvariable wird durch den Start eines weiteren Cycles weiter um 1 nach links verschoben. Das Prinzip der Prüfung ist dabei wieder dasselbe. Es wird solange aufgrückt, bis ein Held aufgefunden wird, also der Prüfer ungleich 0 ist. Dadurch wird die Schleife (in der Schleife) durchbrochen. -sollte man die Pfeiltaste Rechts drücken (also Wert 3), passiert dasselbe wie bei Links, nur das hier nicht nach links, sonder nach rechts verschoben wird. (also +1) -individuell unterschiedliche Präsentation (ab dem roten Strich): -die Prüfervariable wird missbraucht und erhält nun einen Wert, damit sie selber später durch Forks geprüft werden kann. Bei dem Wert handelt es sich um den in der Allzweckvariable gespeicherten Wert, also die momentane Position des Zeigers. Ist der Wert 163 ist Held 1 angewählt. -es wird ein wenig mit einem Picture rumgespielt. In diesem Fall wird es auf 0% verkleinert. Unwichtig. -Nun wird geprüft welcher Held angewählt wurde und das Bild an der entsprechenden Position wieder angezeigt. In den Forks werden nur die Koordinaten gespeichert, in den das Bild angezeigt werden soll. -wieder eine Bildspielerei. Unwichtig. Was noch fehlt ist ein Druck auf Enter, den hab ich hier noch nicht mit drin. Man sollte dabei nur nicht vergessen die Schleife zu knacken. Dürfte für jemanden, der den Code versteht sicher kein Problem sein. Was ich an dieser Methode gut finde: -sehr kurzer Code, wenn man bedenkt, wie lang man das Ganze auch machen kann. -sehr flexibel. Die Heldenanzahl kann beliebig hochgeschraubt werden. Die Bildkoordinaten müssen nicht verändert werden, da Eventabhängig. Man kann also die Positionen im KS gerne wechseln. (für detailgenaue Anzeige des Bildes kann man immernoch Korrekturen per Addition bzw. Subtraktion vornehmen. Es bleibt allgemeingültig.) |
Autor: | Sam Gav [ Fr Aug 12, 2005 20:21 ] |
Betreff des Beitrags: | |
Script zum 8-Richtungen-Laufen für den rm2k3! man nehme: 1xCommon Event, 4xVariablen und 5 Minuten Zeit! Common Event: Schraeglaufen Trigger: Parallel Process ------------------------------------------------------------------------------------ -----------------------------------#Code#--------------------------------------- ------------------------------------------------------------------------------------ Key input proc: [var.1- Links] (Ohne "Wait until key pressed" reagiert NUR knopf "Links") Key input proc: [var.2- unten] (Ohne "Wait until key pressed" reagiert NUR knopf "Unten") Key input proc: [var.3- rechts] (Ohne "Wait until key pressed" reagiert NUR knopf "Rechts") Key input proc: [var.4- oben] (Ohne "Wait until key pressed" reagiert NUR knopf "Oben") Fork "If Var.2[Unten] = 1" ......Fork "If Var.1[Links] = 2" ............Move Event:[Hero, move Down/Left] (Häkchen bei "Ignore impossible move") ......End ......Fork "If Var.3[Rechts] = 3" ............Move Event:[Hero, move Down/Right] (Häkchen bei "Ignore impossible move") ......End End Fork "If Var.4[Oben] = 4" ......Fork "If Var.1[Links] = 2" ............Move Event:[Hero, move Up/Left] (Häkchen bei "Ignore impossible move") ......End ......Fork "If Var.3[Rechts] = 3" ............Move Event:[Hero, move Up/Right] (Häkchen bei "Ignore impossible move") ......End End ----------------------------------------------------------------------------------- ---------------------------------#/Code#---------------------------------------- ----------------------------------------------------------------------------------- |
Autor: | Bai [ Sa Aug 13, 2005 16:53 ] |
Betreff des Beitrags: | |
Zeph hat geschrieben: das man ein Call Event mit dem Befehl call event vorzeitig beenden kann, wenn man ein anderes event aufruft,
das stimmt nicht wirklich, denn ich benutze oft call events die hintereinander mehrere andere events aufrufen (also die call-event befehle sind alle hintereinander im gleichen event) und es werden immer alle aufgerufen, weil man wenn das aufgerufene event beendet ist wieder ins ursprüngliche event zurückkommt und an der stelle weitermacht an der man aufgehört hat... zum glück funktioniert das, sonst wäre vieles viel umständlicher... der einzige tipp der mir jetzt noch einfällt ist vor allem für ein rennscript nützlich: wenn man ein renn-script benutzt (wenn der held also rennen kann (zB. durch gedrückt halten von enter)) dann kommt es oft zu dem problem das der held ab und zu zu schnell oder zu langsam wird und man das nicht rückgängig machen kann.. deshalb sollte man in den move events statt einem "move speed up" bzw. "move speed down"-befehl folgendes machen: mehrere move speed down (sagen wir mal 6 stück) und dann 4 move speed up gleich dahinter (dann rennt der held) oder 3 move speed up gleich dahinter (dann läuft er normal) bei den zahlen bin ich mir jetzt nicht ganz sicher, aber ich glaube 4 ist die normale geschwindigkeit (oder?) das ganze ist eigentlich ganz logisch: ein event hat eine minimale bewegungsgeschwindigkeit die nicht unterschritten werden kann. man setzt das ganze also auf die minimale geschwindigkeit und geht sozusagen vom minimum nach oben, so kommt es nicht zu geschwindigkeitsfehlern... keine ahnung ob euch das jetzt was gebracht hat oder nicht, aber der ein oder andere kanns sicher gebrauchen |
Autor: | Zeph [ Sa Aug 13, 2005 17:33 ] |
Betreff des Beitrags: | |
ja, vieles von dem was ich das Geschrieben hab, war imo net richtig durchdacht, und ich werd das ganze mal löschen^^ edit: So, sollten weg sein =0 |
Autor: | Golden Boy [ So Aug 14, 2005 11:43 ] |
Betreff des Beitrags: | |
Mal ne Frage wegen dem 8-Richtungen-Laufen-Script! Im 2k3 gibts bei der Passwortabfrage ja auch die Number Keys! Gelten die auch für das Num Pad? Wenn ja, kann man das doch auch mit diesen machen, oder? Gruß, Kintaro |
Seite 1 von 3 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |