PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Detail-Wissen und Geheimnise des RPG-Makers -vorallem für Erfahrene/Profis lehrreich



Seiten : [1] 2

Wonderwanda
23.01.2003, 23:04
Vorwort:

Ich habe mich mal dazu entschieden einen etwas anderen Hilfe-Thread zu machen, der weniger die Funktionen des Makers beschreibt, sondern auf ein paar Kleinigkeiten aufmerksam macht, die einem vielleicht nicht so schnell auffallen würden...

Deswegen gilt:
Dieser Thread ist NICHT für Neulinge gedacht, sondern sollte nur für die interessant sein, die sich wirklich intensiv mit dem Maker beschäftigen (und das seit längerer Zeit)
Mit den meisten Infos werden die Neuen sowieso wenig anfangen können ^^°

also...

Viele Sachen hier dürften einigen hier schon recht klar sein. Aber wenn hier nicht auch nur EINE Sache ist, die euch NEU ist, seit ihr WIRKLICH gut mit dem RPG-Maker! Also lest euch das ganze mal durch...

Hier geht's los:

Als erstes habe ich mal nachgestest wie "Lange" eigentlich dies und jenes in "Wait"-Zeit (die Zeit, die mit der Funktion "Wait" totgeschlagen wird) dauert. Ich bin so auf folgende Ergebnisse gekommen:

Erstmal für alle die, die es nicht wissen: Wenn man mit der Funktion "Wait" einen Wert von 0,0 tangibt, ist das sehr wohl eine warte Zeit... eine SEHR Kurze..
Man hat mir zwar gesagt, dass die Länge dieser Wartezeit von der Leistung des Rechners abhängt, allerdings hab ich es sehr ausgiebig getestet, auch mit umständen, wo das gesamte Spiel geruckelt hat. Ich habe zwei parallele Events nach einer Warte-Zeit einen Ton-Abspielen lassen (natürlich zwei verschiedene)
Das eine hat nach 0,1 Sekunden Wartezeit den Ton abgespielt... das andere nach 6x 0,0 Sek Wartezeit... Und egal, wie viele Parallel-Events ich hinzugefügt habe, selbst als das Spiel schon stark geruckelt hat:
Die Töne kamen IMMER gleichzeitig...
Daraus folge ich mal:


Ein Wait mit 0,1 Sekunden ist = 6 Waits mit 0,0 Sekunden


Des Weiteren hab ich versucht herauszufinden, wie lange ein "Schritt" in einem Move-Event je nach Geschwindigkeit in "Wait"-Zeit dauert...
Ich kam zu folgendem Ergebnis:


Ein Schritt mit der Geschwindigkeit "Normal" dauert In "Wait": "0,1 Sek" + 2x "0,0 Sek" (also 8x 0,0 Sek)
Ein Schritt mit der Geschwindigkeit "2xSlower" dauert In "Wait": "0,2 Sek" + 4x "0,0 Sek" (also 16x 0,0 Sek)
Ein Schritt mit der Geschwindigkeit "4xSlower" dauert In "Wait": "0,4 Sek" +8x "0,0 Sek" (also 32x 0,0 Sek)
Ein Schritt mit der Geschwindigkeit "8xSlower" dauert In "Wait": "0,8 Sek" +16x "0,0 Sek" (also 64x 0,0 Sek)
Ein Schritt mit der Geschwindigkeit "2xFaster" dauert In "Wait": 4x "0,0 Sek"
Ein Schritt mit der Geschwindigkeit "4xFaster" dauert In "Wait": 2x "0,0 Sek"


Was ich eigentlich schon seit längerer Zeit weiß, was ich aber hier noch mal passend erwähnen will ist das Verhältnis von Battle-Animation-Frames zur Wait-Zeit

Es ist (so ziemlich GENAU):
3 Frames pro 0,1 Sekunde "Wait"-Zeit
(eine Battle-Animation kann so maximal 3,3 Sekunden lang sein...)

Speziell wegen meinem neuen KS musste ich zudem das Verhältnis von "Move-Event-Speed" zu Parallax-Scrolling wissen.... Und so war mein Ergebnis:


Parallax-BG-Scolling mit der Geschwindigkeit +3 oder -3 ist = Move-Events-Speed: 8xSlower
Parallax-BG-Scolling mit der Geschwindigkeit +4 oder -4 ist = Move-Events-Speed: 4xSlower
Parallax-BG-Scolling mit der Geschwindigkeit +5 oder -5 ist = Move-Events-Speed: 2xSlower
Parallax-BG-Scolling mit der Geschwindigkeit +6 oder -6 ist = Move-Events-Speed: Normal
Parallax-BG-Scolling mit der Geschwindigkeit +7 oder -7 ist = Move-Events-Speed: 2xFaster
Parallax-BG-Scolling mit der Geschwindigkeit +8 oder -8 ist = Move-Events-Speed: 4xFaster


Soviel zu den Zeit-Verhältnissen des Makers. Speziell bei Wait 0,0 könnte es tatsächlich schon so sein, dass vor allem bei Schwächeren PCs das ganze etwas anders ist... Ich konnte das nicht testen. Aber als das Geschehen auf einem 600 Mhz-PC mit TNT2-Grafik-Kart (32 MB) und 128 MB-RAM geruckelt hat, lief es immer noch so, wie ich es berechnet habe...

Wie dem auch sei....

Zusätzlich zu dieser Sache habe ich noch ein paar (mehr oder weniger unbekannte) Kleinigkeiten und Eigenarten des RPG-Makers aus meinem Gedächtnis gekramt.. Und hab sie hier zusammengefasst:

Wusstet ihr,....

... dass Autostart Map-Events weiterlaufen", obwohl man die Map verlassen hat, wenn sie sich in einem Cycle befinden (welcher auch mit Labels gestaltet werden kann)

... dass Parralel-Events ohne irgendein "Wait"" das ganze Spiel einfrieren können, wenn der Rechner schwächer ist?

... dass ein Auto-Start Event nicht starten kann, während ein "Push-Key", "OnHeroTouch" , "OnEventTouch" oder ein andere Auto-Start Event am laufen ist? (es wird dann erst danach ausgeführt)

... dass Move-All auf ALLE Move-Events (außer natürlich die im Movement-Typ) reagiert?
Heißt: Wenn in einem Events ein Move-Event ausgeführt wird, welches nur kurz ist und parallel dazu läuft ein Move-Event, das länger ist, geht es bei einem gesetzten Move-All nur DANN weiter, wenn beide Move-Events fertig sind. Also erst, nachdem das lange Move-Event zuende ist.

... dass, wenn ein Paralleles Common-Event unterbrochen wird, es beim wieder aktivieren genau DORT anfängt, wo es unterbrochen wurde?

... dass sich ein Move-Event, das auf "this Event" steht und in einem Call-Event zu finden ist, sich auf das Event bezieht, das gecallt wird? (also macht NIE Move-Event "this Event" in einem Common-.Event ^^)

... dass, wenn der Held durch kurze Move-Events (Change Grafik, Move-Speed), welche recht oft auf ihn benutzt werden, Event mit "OnHeroTouch" ignorieren kann? (in diesem Fall können "OnEventTouch"-Events helfen)

... dass die Move-Frequenz bei einem Move-Event nur nach Schritten oder Face-änderungen ( "Face up,Face right, Face down,Face left, Turn Right 90° usw.) ihre Wirkung zeigt?

... dass man ein flüssiges Auflösen eines Events per Move-Event und "Transp.Up" am besten dann hinbekommt, wenn man zwischen den "Trans.up" eine "Face-änderung" mit der Move-Frequenz von 6 (oder 7 oder 5) einfügt?

... dass sich 2 Event im Status "Below Hero" oder "Over Hero" im weg stehen können? (also nicht aneinander vorbei können)

... dass, wenn man bei einem Event (außer eines, das Parralel ist) während seiner Funktion (in der Mitte) per Switch die 2. Seite aktiviert, es sofort die Grafik der 2. Seite erhält und ALLE Move-Events usw. , die sich auf dieses Events beziehen und nach der Aktivierung des besagten Switches kommen mit den Einstellungen der 2. Seite durchgeführt werden? (z.B. MoveSpeed/Animation-Typ/Position[Over Hero, Below Hero usw.])
Zustatz: Auch Move-Events die bei der Aktivierung der 2. Seite noch am laufen sind, werden von diesem Zeitpunkt an, mit den Einstellungen der 2. Seite weiter geführt...

... dass, wenn ein Event mit 2 Seiten bei beiden EXAKT die gleiche "Route" im Movement Type "By its route" hat, nur das die 2. Seite trotzdem auf "Stay Still steht, es beim aktivieren der 2. Seite dementsprechend stehen bleibt, aber bei Deaktivierung der 2. Seite dann wieder bei der 1. Seite mit der Route EXAKT dort anfängt, wo es unterbrochen wurde? (das passiert NUR wenn beide Seiten die gleiche Route gespeichert haben und nur solange man auf der aktuellen Map bleibt ^^)

... dass man mit der Funktion "Set Terrain ID" die Terrain-ID des Feldes unter dem Helden nehmen kann (was verdammt Praktisch ist, wenn man z.B. es so machen will, das der Held NUR auf Schneebelegten Untergrund Fußstampfen hinterlässt - Man gibt den Feldern mit Schnee einfach eine bestimmte Terrain-ID, die dann mit besagter Funktion genommen wird...dann eben Forks usw.)

...Mehr fällt mir dazu erstmal nicht ein...

Ich hoffe, ich konnte das ganze Weitgehend verständlich formulieren. ^^°

Wenn mir noch was Wichtiges dazu einfallen sollte, werd ich es wohl hinzu editieren....

Und zum Schluss:
Das Meiste von dem, was hier geschrieben steht, hab ich noch mal genau nachgestestet (vor allem, was die Zeitverhältnisse angeht...).
Es könnte trotzdem sein, das mir Fehler unterlaufen sind... Korrigiert mich in diesem Fall (aber bitte NICHT wenn es um die Länge von 0,0 Wait geht... Ich hab das wirklich sehr genau getestet =| )

Ich bedanke mich fürs durchlesen! (als ob das wer tun würde)
Ich hoffe ich konnte Einigen mit diesen Infos helfen.

lachsen


Zitat von Gekiganger
@ Lachsen
Find ich wirklich super dass jetzt mal die Eigenheiten des Makers genau analysiert werden. Leider kommt der Thread für mich um c.a. zwei Wochen zu spät, da ich da mit einem ernsthaften A-KS angefangen habe, wo ich fast alle von Dir aufgeführten Punkte selbst zu spüren bekam und bewältigen musste.
Naja, hier mal ein paar bescheidene Punkte, die nochnicht erwähnt wurden:


Wenn man den Helden in einem Autostart Event mit Move Events und Move All/Wait bewegt, werden die Bewegungen aller anderer Events, egal obs sie jetzt per Move Events im Parallel Process oder per Movement Type gesteuert werden, blockiert.
Man könnte im Autostart das Move All/Wait weglassen, allerdings bewegt sich der Hero dann immer noch ein Feld weiter als eigentlich gewollt. (z.B. bei einer Enter Password Steuerung bewegt er sich um zwei Felder statt nur um eines).
Man kann das Move All/Wait aber lassen, wenn man vorher das andere Event, das jetzt auf Push Key steht, beim Betreten der Map einmal callt. Im Move Event dieses Events muss Repeat Action aktivert sein.
Jetzt muss man noch einmal warten, bis das Event einmal durchgeloffen ist, und kann sich dann selbst bewegen und die Move Events blocken sich nichtmehr gegenseitig.
Der Nachteil an dieser Sache ist allerdings, dass die andern Events immernur die selbe Strecke ablaufen können.
Bei z.B. einem Jump ´n Run muss man dann selbst abwählen, ob man ne genaue Steuerung und dumme Gegner oder eine ungenaue Steuerung und eine gute Gegner KI haben will. Doch spätestens beim Sprung braucht man Move Alls und dann werden die Gegner blokiert...
Arghhh, ich hoffe ich konnte es einigermaßen verständlich rüberbringen.:c


Befinden sich mehr als 1000 Events "in einer Reihe" im Call Status, z.B. wenn sich ein Event immer wieder selbst callt oder ein Event ein anderes callt, dieses wiederum ein weiteres und dieses wieder ein neues... bis eben 1000 Events aktiv sind, führt dies zum Absturz des Makers. ("Event Call Limit Exceeded")
Geht diese "Callschlange" von 2 (oder mehr) unterschiedlichen Events aus, können beide (alle) 1000 Calls parallel erreichen, dann befinden sich jedoch gleich 2000 (oder mehr) Events im Arbeitsspeicher!

Events mit einer niedrigen Event-ID werden immer Events mit einer höheren vorgezogen. Sollten z.B. zwei Events mit einer Berechnung haargenau zur selben Zeit fertig werden, so wird erst die des Events mit der niedrigeren ID verarbeitet.


Verlässt man zu der Zeit einen Raum, zu der die Musik zuende ist, so kommt im nächsten Raum keine Musik, wenn dort eine andere eingestellt ist.


Macht man schnell hintereinander Jumps in eine bestimmte Richtung, so nähert sich der Hero immer weiter dem Rand des Screens.
Es müssen aber wirklich sehr viele Jumps fast ohne Unterbrechung sein.


Beim Jump in eine bestimmte Richtung fragt der Maker automatisch ab, ob das Chip, auf dem der Hero landen würde, begehbar ist oder nicht. Ist es nicht begehbar, so führt er alle Befehe im Move Event aus, außer den Jumpbefehl. Wurden die Bewegungen direkt im Movement Type Fenster des Events eingegeben , so wartet das Event an der Stelle, an der es sich gerade befindet.


Macht niemals ein Show Picture ohne Wait in einen Cycle/Labelschleife. Sonst bleibt der Maker hängen.


Die Koordinaten festzulegen braucht ziemlich viel Ressourcen des Makers. Vor allem wenn man viele Koordinaten in einem PP Event festlegt, sollte man einen Wait von 0,1 Sekunden machen.
Mir hat solch ein Event, in dem ich sehr viele Koordinaten festlegte, mal das ganze Spiel lahmgelegt, aber als ich nen Wait reingemacht hatte, gings wieder problemlos.


Es dauert Euch zu lange bis der Text vollständig in der Messagebox angezeigt wird? Dann drückt doch einfach mal die SHIFT Taste. (funktioniert nur im Testplay)


Zu den Waits:

KA obs jemandem interessiert, aber die Zeitdauer, wenn ein Parallel Process Event aufhört und von neuem beginnt entspricht einem Wait von 0,0 Sekunden. Beim Autostart gibt es hingegen garkeinen "Wait".


Man kann sich auch während einem Show Message Befehl bewegen, wenn man in einem externen Parallel Proccess den Hero mit Hilfe von Enter Password und Move Events steuert. Allerdings funktionieren dann weder On Touch noch On Hero Touch Events.(da der Held ja durch Move Events gesteuert wird)
Parallel Process Events, die die Possition des Heros abfragen und dann ein Ereignis auslösen, wenn er auf einer gewissen Stelle steht, werden dabei registriert, jedoch ersteinmal auf Halde gelegt, bis die Messagebox verschwindet. Dann werden sie, unabhänig von der derzeitigen Possition des Heros, ausgeführt.

Ete
28.01.2003, 22:21
Ich fand den thread auch schon im alten Forum extrem geil,
das mit den waits hat mir echt geholfen.

Lachsen, du bist der beste http://www.multimediaxis.de/images/smilies/old/sm_12.gif ^^

Makermaster
07.02.2003, 04:09
Du hast dich wohl von den Rpg2kforen inspiriert!Dort is einund der selbe Thread,und der is älter als der hier!:confused:

Gruz
07.02.2003, 05:07
@ Makermaster: lol, das liegt wohl auch daran das unfi. den thread kopiert hat :p

Makermaster
08.02.2003, 00:30
Ich mein es so das sie net geschrieben hat (oder hat sie ??? keine ahnung^^) das lachsen es gemacht hat

Dingsi
08.02.2003, 00:45
@makermaster:
Öhm... die ganzen alten Threads wurden von unfixable.und anderen gerettet (kopiert).

Sie haben sie nicht kopiert um hier Lob einzusacken!

N.2
16.02.2003, 02:23
Der 1. Thread wurde von Lachsen im alten Forum gemacht, dann hat rpg2000 den Thread kopiert, dieser Thread ist neu im neuen Forum, deshalb ist er jünger.

Soweit ich weiss gab es dort aber mehr 'Tipps', hat man die übersehen?

chorus
18.02.2003, 19:12
Die Koordinaten festzulegen braucht ziemlich viel Ressourcen des Makers. Vor allem wenn man viele Koordinaten in einem PP Event festlegt, sollte man einen Wait von 0,1 Sekunden machen.
Mir hat solch ein Event, in dem ich sehr viele Koordinaten festlegte, mal das ganze Spiel lahmgelegt, aber als ich nen Wait reingemacht hatte, gings wieder problemlos.

Normalerweise dauert das festlegen von Kordis (...) 0,3 sec als wait Befehl, deswegen sind Waits unter 0,3 sinnlos! (Und Ressourcen fressend!)

Gekiganger
18.02.2003, 23:56
Mich würde mal interessieren wie Du auf dieses Ergebnis kommst.

Die Koordinaten festzulegen braucht fast gar keine Zeit, nur viel Rechenaufwand seitens der RPG Maker Engine, die wiederum von der PC Hardware abhängig ist.

Was das Ruckeln ausmacht sind die vielen Wiederholungen, die dann in kurzer Zeit ohne eine Pause enorm viele Ressourcen beanspruchen und so den anderen Processes nichts mehr überlassen und diese auf Halde gestellt werden müssen.
Macht man jetzt einen Wait von 0,1 Sekunden, so wird für einen winzigen Bruchteil einer Sekunde der Maker enorm beansprucht und hat dann 0,1 Sekunden Zeit, sich anderen Prozessen zuzuwenden. Natürlich müssen diese anderen Prozesse ähnlich aufgebaut sein und dürfen den Maker nicht mit Cycles, Labels, etc. ohne Waits genauso stark beanspruchen.

Ich habe in meinem KS in einem Event 50 Koordinatenzuweisungen. Ohne den Wait von 0,1 Sekunden legt es meinen alten Rechner lahm, mit Wait läuft es problemlos.
Diese Koordinaten werden auch gleich geändert, es dauert, nach Deiner Behauptung, keine 15 Sekunden bis alle abgearbeitet wurden und der Code den Wait erreicht, wäre ja noch schöner. :D
Die Koordinaten werden bei mir alle 0,1 Sekunden aktualisiert und haben sofort ihre neuen Werte. Ohne Wait würden sie natürlich "ohne Zeitverlust" aktualisiert werden.

Als Beispiel wie man es testen kann schlage ich hier mal ein Picture vor, das in einem Parallel Process immer auf einem Event angezeigt wird.
Beträgt der Wait nach den Koordinaten und dem Show Picture, 0,1 Sekunden, hinkt das Bild dem Event, wenn dieses sich fortbewegt, etwas hinterher. Bei 0,0 Sekunden hinkt es ihm einen Pixel hinterher, ohne Wait wird es immer an der Position des Events angezeigt, ohne erkennbare Verzögerung.
Bei 0,3 Sekunden hinkt es aber sehr weit dem Event hinterher.
Wie Du siehst gibt es also "keinerlei Zeitverlust" bei der Festlegung der Koordinaten. Es ist deswegen in Anführungszeichen geschreieben da es natürlich einen Zeitverlust gibt, dieser allerdings so gering ist, dass er gegen Null tangiert und somit vernachlässigbar ist.

dragon_systems
24.02.2003, 00:23
Hier will ich auch mal einen weit verbreiteten Irrtum berichtigen:
Wenn man will, dass ein Event nur dann erscheint, wenn ein Switch ON ist, braucht man nur EINE Page! Man muss also nicht die erste Seite leer lassen (was die meisten glauben).

X-Site
15.03.2003, 21:17
Original geschrieben von dragon_systems
Hier will ich auch mal einen weit verbreiteten Irrtum berichtigen:
Wenn man will, dass ein Event nur dann erscheint, wenn ein Switch ON ist, braucht man nur EINE Page! Man muss also nicht die erste Seite leer lassen (was die meisten glauben).

wer hat den blos son unsinn in die welt gesetzt...
nagut ich wollte eigendlich nur fragen ob ihr wosstet das man einen terran auch über und auf einer höhe einstellen kann einfach als * einstellen und dann alle Pfeile blocken ;) .
vleicht interesirt es ja einen von euch ;) .

Cygnus
16.03.2003, 17:55
Sowas hab ich auch schon oft gesehen.

Original geschrieben von X-Site
wer hat den blos son unsinn in die welt gesetzt...
Och, zum Beispiel Serge:

Aus Serge's Kampfsystem Kurs
Die erste Seite soll leer bleiben, bei der zweiten macht ihr bei Conditions Switch 113 „Menü“ muss an sein.

Gruz
28.03.2003, 01:29
Original geschrieben von X-Site
wer hat den blos son unsinn in die welt gesetzt...

Hm, also das geht sehr einfach mit einer Fork... ich allerdings benutze meistens ne 2te page da es übersichtlicher ist und wegen n paar pages wird das spiel wohl kaum grösser..

Squall83
30.03.2003, 06:36
Hallo Leute!
Ich habe die Formel gefunden, nach der "Hit Chance" und "Mind Chance" den Effekt eines Skills beeinflussen. Hier ist sie:

Basis Effect = B
Hit Chance = H
Mind Chance = M
Angriffswert des Helden = A
Verteidigung des Monsters = V
Intelligenz des Helden = I
Intelligenz des Monsters = J
E = Ergebnis

E = B + (A-V/2) * H/20 + (I-J/2) * M/40

Das sieht am Anfang etwas kompliziert aus. Daher erkläre ich sie noch mal:
Die Formel besteht aus 3 Summanden:
1)Der Basis Effect
Das ist einfach die Zahl, die man unter "Basis Effect" eingeben kann.

2)Der zweite Summand
Von der Stärke des Helden wird die Hälfte der Verteidigung des Monsters abgezogen. Das Ganze wird mit dem Hit Chance Wert multipliziert (also der Wert, den man auf dem Balken einstellen kann) und durch 20 geteilt.
Wenn das Monster eine Defensive besitzt, die mehr als doppelt so hoch ist, wie die Stärke des Helden, so wird die Klammer negativ und das Ergebnis wird immer geringer, je höher der Hit Chance Wert wird.

3)Der dritte Summand
Das gleiche wie beim zweiten Summand, nur das hier statt der Stärke des Helden und der Verteidigung des Monsters die Intelligenzwerte von Beiden genommen werden, man mit dem Mind Chance Wert multipliziert und durch 40 teilt. Auch hier kann die Klammer negativ werden und das Ergebnis senken.

Bei Heilzaubern sieht die Formel nur etwas anders aus: Es wird vom Stärke- und/oder Intelligenzwert des Benutzers nichts abgezogen. Dann sieht das Ganze so aus:

E = B + A * H/20 + I * M/40

Probiert die Formeln ruhig aus. Bis auf +/- 1 (Rundungsfehler des Rpg Makers) stimmt das Ergebnis garantiert immer. Wenn nicht, dann nennt mir bitte die Werte.
Für Fragen mailt an Newcomer83@web.de

Hier noch die Formel für konventionelle Angriffe:

E= (A - V/2)/2 +/-(0-20%)
Auf Deutsch heißt das:
Schaden = Angriff des Helden - Verteidigung des Monsters/2, das Ergebnis durch 2 teilen und der Wert variiert maximal um 20%.
Bei dieser Formel hat mir Lachsen gesagt, dass man den Term A-V/2 noch durch 2 teilen muss (hatte ich aus Flüchtigkeit übersehen).

Ich erklär auch noch gerne allen, die es wissen und nicht wissen wollen, wie ich das herausgefunden habe. :D Aber es ist mir nicht gelungen, eine einfache Erkärung zu schreiben:

Zuerst habe ich durch testen herausgefunden, dass zum Basiswert etwas addiert und nicht multipliziert wird. Das war insofern wichtig, weil dann eine bestimmte Einstellung von Hit und Mind Chance den Effekt eines Skills gegen einen Gegner nicht Verfielfachen (z.B. verdoppeln). Es ist immer die gleiche Zahl, die dazuaddiert wird, egal ob der Basisschaden 10 oder 500 beträgt.
Ich habe die Tests mit Mind Chance angefangen.
Dann habe ich in meinem Rpg, das ausschließlich für Tests angelegt wurde, 11 Skills eingegeben, jeder den gleichen Basis Effekt und bei jedem einen anderen Wert der Mind Chance Skala. Der mit Mind Chance=0 war nur zur Kontrolle. Man weiß ja nie, was für Überaschungen der Rpg Maker bereit hält. Ich hab die Skills Feuer0 bis Feuer10 genannt.

Als nächstes habe ich die Schleimx2-Party auf einen gekürzt und dem Schleimmonster die Werte folgendermaßen verändert:
HP=9999, damit ich ordentlich Testreihen durchführen kann
Die anderen Werte hab ich so weit wie möglich runter geschraubt, damit die keinen "schädlichen" Einfluss auf meinen Skill haben.
Bei den Werten des Helden genauso. Dann habe getestet, Werte verändert und zuerst mal nur geschaut, wann sich der Effekt verändert.
Bei Mind Chance waren das die Intelligenzwerte von Beiden, bei Hit Chance die Stärke des Helden und die Verteidigung des Monsters.

Soviel zur Vorbereitung. Bis hierhin sollte jeder mitgekommen sein.
Jetzt kommt der interessante Teil:
1. Ich habe Excel zu Hilfe genommen und eine Tabelle aufgestellt, bei der links verschiedene Mind-Werte für den Helden stehen (100,110,120,....,200) und oben stehen die Mind Chance-Werte (0,1,2,.....,10). In die Mitte kam dann die Schadensveränderung (also Gesamtschaden minus Basisschaden).

Das ist auch noch nicht so schwer, aber jetzt kommts knüppeldick. Lest den folgenden Abschnitt lieber sehr langesam durch, ich habe auch eine Weile gebraucht, bis ich verstanden habe, was ich da eigentlich hingeschrieben habe.

2. Ich habe den Mittelwert aller Differenzen zwischen zwei benachbarten Feldern gebiltet. Erklärung: Bei 2 Feldern gibt es eine Differenz, die man bilden kann, bei 5 Feldern 4 und bei 11 Feldern (wie bei mir) 10 Differenzen. Das klingt viel komplizierter, als es ist, denn man muss nur den Wert aus dem 11.Feld (mit Mind Chance 10 drüber) durch 10 teilen, dann hat man den Mittelwert der Schadenszunahme. Erfreulich war: Die Schadenszunahme war von Feld zu Feld konstant (bis auf die Rundung des Rpg Makers).

3. Nachdem ich für 100,110,150 und 200 Mittelwerte gebildet hatte, ist mir ein System aufgefallen. Die Mittelwerte nahmen immer abwechselnd um 0,2 und 0,3 zu. Das hab ich auf 0,25 gemittelt und korrigierte Mittelwerte hinten dran geschrieben.
(Der Mittelwert der Zunahme der Mittelwerte der Differenzen der Schadenszunahmen. Lasst euch das mal auf der Zunge zergehen. )
Also: Wenn man die korrigierten Mittelwerte durch die dazugehörigen Intelligenzwerte des Helden teilt, kommt man immer auf 0,025 (das sind die 1/40 aus der Formel).
Anmerkung:
Der Mittelwert für Intelligenz=100 war 2,5.
Der Mittelwert für Intelligenz=110 war 2,7 (was ich auf 2,75 korrigiert hatte)
Der Mittelwert für Intelligenz=120 war 3,0 (hier war keine Korrektur nötig)
==> Es kommt immer 0,025 raus.
Wenn du jetzt bist, dann kann ich das gut verstehen, aber das Beste kommt erst noch.

4. Man muss sich darüber klar werden, was das eigentlich für ein Mittelwert ist. Ich habe diesen Mittelwert aus 10 Differenzen gebiltet. D.h. wenn man ihn z.B. 5mal zum Basisschaden addiert, muss der gleiche Gesamtschaden herauskommen, wie bei Mind Chance = 5 etc.
Also muss man den Mittelwert genau so oft zum Basisschaden addieren, wie es der Mind Chance-Wert vorschreibt (bei 7 7-mal, bei 3 3-mal etc.)
Also ist der Effekt = "Basis" + "Mind Chance" x "Mittelwert"

Aber kann man den Mittelwert einfach so in die Formel nehmen?
NEIN!! Denn er variiert ja je nach Intelligenzwert des Helden (der Intelligenzwert des Monsters ist immernoch vernachlässigbar, weil er 1 ist). Und zwar ist der Mittelwert immer der vierzigste Teil des Intelligenzwertes des Helden.
==> Effekt = "Basis" + "Mind Chance" x "Intelligenzwert"/40

Ab jetzt wird es wieder einfacher.
5. Als nächstes habe ich vermutet, dass der Intelligenzwert des Monsters von dem des Helden abgezogen wird.
Der Test, bei dem die Intelligenzwerte von beiden 100 war, zeigte mir nicht nur, dass die Vermutung falsch war, sondern auch, dass der zusätzliche Schaden (nicht der Gesamtschaden) auf genau die Hälfte zurück ging. Ich habe die Intelligenz des Monsters auf das Doppelte des Wertes des Helden gesetzt und gesehen, dass immer genau der Basisschaden herauskam, egal, wie Mind Chance eingestellt war. Als ich die Intelligenz des Monsters noch höher schraubte, ging der Schaden sogar unter den Basisschaden drunter.

Damit hatte ich alles für den Mind Chance-Teil der Formel. Ich habe sie getestet, in dem ich im Excel Willkürliche Werte für Mind Chance, Intelligenzwerte von Beiden und für den Basisschaden eingesetzt habe, in einem anderen Feld nach meiner Formel das Ergebnis ausrechnen lassen habe. Dann habe ich die gleichen Werte im Rpg Maker eingesetzt und im Kampf gegen ein Monster den Schaden ausgetestet.
Was erwartet ihr?
Genau! Es war immer der Schaden, den meine Formel anzeigte (+/-1, denn der Rpg Maker hat einen kleinen Rundungsfehler).

Als nächstes habe ich mich erstmal sehr gefreut.

Dann habe ich mich an die Hit Chance gemacht. Ich habe gleich richtig vermutet, dass die Hit Chance vom Stärke-Wert des Helden und dem Verteidigungswert des Monsters zusammenhängt.
Dieses Mal ging es schneller. Ich habe wieder eine Tabelle gemacht, Mittelwerte gebilet und gesehen, dass der Quotient dieses Mal 1/20 war. Dass der Verteidigungswert des Monsters nur zur Hälfte eingeht und vom Stärke-Wert des Helden abgezogen wird, ließ sich leicht und richtig vermuten.
Daraus folgte die Formel für Hit Chance:
Effekt = Basis + "Hit Chance" x Stärke/20, wobei von der Stärke natürlich noch die Hälfte des Verteidigungswertes des Monsters abgezogen werden muss.

Schließlich habe ich einfach mal ausprobiert, ob man beide Formeln zu der Formel kombinieren kann, die ich euch am Anfang dieses Threads kombinieren kann. Ratet mal, ob ich damit Erfolg hatte.

Ich muss in aller Bescheidenheit sagen, dass ich in der 13. Klasse bin und in wenigen Monaten Abitur in meinen LKs Mathe und Physik mache.
Aber trotzdem habe ich die Formel nicht einfach aus dem Ärmel geschüttelt. Ich war nur genervt, dass mir niemand genau sagen konnte, was Hit Chance und Mind Chance bewirkt. Und da habe ich mich mal einen Tag lang dran gesetzt.

Ich hoffe, alle, die sich durch dieses Monster von Text gekämpft haben, konnten wenigstens im Groben verstehen, was ich gemacht habe und sind jetzt nicht gefrustet.

Was man aus der Formel wichtiges herauslesen kann:
1)Man weiß, dass zum Basiswert etwas addiert und nicht multipliziert wird. D.h. ein Skill mit Basis 10, bei dem Hit Chance und Mind Chance 20 ergeben, ist der Schaden 30 (also das Dreifache), während ein Skill mit 100 Basiseffekt und den gleichen Einstellungen bei Hit und Mind Chance ergibt einen Schaden von 120 (also lange nicht das Dreifache)

2)Wenn man sie im Excel eingibt, dann kann man genau bestimmen, wie viel Schaden ein Skill einem Monster macht und um wie viel er maximal variiert, wenn man Hit und Mind Chance des Helden ändert.
Außerdem kann man dadurch die Verteidigung, Intelligenz, Stärke etc. des Monsters besser anpassen.

3)Wer von euch wusste bereits, dass Hit und Mind Chance den Effekt eines Skills auch negativ beeinflussen können? Bestimmt bei Weitem nicht alle.

So, ich habe fertig. :D Squall83

Cygnus
01.04.2003, 03:38
@Squall83
Steht alles auch in der Hilfe-Datei.:D

Squall83
02.04.2003, 00:28
Ich hab in der Rpg Maker Hilfe geschaut, auf der Anleitung auf www.rpg2000.de und im Forgotten E-Book und NICHTS steht da drin. In welcher Anleitung hast du es denn gefunden?

Cygnus
02.04.2003, 01:08
Original geschrieben von Squall83
Ich hab in der Rpg Maker Hilfe geschaut, auf der Anleitung auf www.rpg2000.de und im Forgotten E-Book und NICHTS steht da drin. In welcher Anleitung hast du es denn gefunden?
In der aus dem Japanischen übersetzten Hilfe-Datei. (übersetzt von Gemin-eye)


A = Angreifer; B = Verteidiger

Damage of attack normally:
Damage (HP decrease value)(attack power ÷= 2 of A)-(defense power ÷4 of B)

Actual damage changes at random within the range of 80-120% of the above-mentioned value.
Three values are multiplied for "Kill without fail" and "Critical Hit".

Hit rate of attack is usually (%) =100-hit rate -(rate (%) of hit of equipment arms of 100-A)×+ (quickness -1 of quickness ÷ A of B)1÷2

When the option of "Ignore Monster Evasion" is given to arms, the basic hit rate becomes a hit rate as it is.
Hit rate change value (%) is multiplied by present "Condition".

When B is equipped with the protector of "Rise Avoid of Physical Attack", 25% is subtracted from the hit rate. The hit rate is unconditionally assumed to be 100% when under the "Condition" that B cannot act.

Squall83
02.04.2003, 01:37
Zwei Dinge:
1. Diese Datei würde mich sehr interessieren. Hast du einen Link, wo es die gibt?
2. Da da bin ich aber beruhigt, dass du dich nur auf die konventionellen Angriffe bezogen hast und nicht auf die Hit und Mind Chance Formel. :D Oder gibts die auch irgendwo schon? :confused:

Cygnus
02.04.2003, 19:43
Original geschrieben von Squall83
Diese Datei würde mich sehr interessieren. Hast du einen Link, wo es die gibt?
War bei irgendeiner exe dabei - sag mir deine mail, ich schick's dir.

Squall83
03.04.2003, 01:37
Newcomer83@web.de

Cygnus
03.04.2003, 03:26
Original geschrieben von Squall83
Newcomer83@web.de
Sorry, kann's dir nicht schicken (zu groß).
Hier ist der ganze "Combat Calculation" Text:


· The attacking character is 'A' and the attacked character is 'B'. The success or failure of the action decided at the probability is separately decided based on random numbers. The effect amount regulation is separately reflected in damage and the amount of the effect at the attack with an attribute.

Damage of attack normally:

Damage (HP decrease value)(attack power ÷= 2 of A)-(defense power ÷4 of B)

·Actual damage changes at random within the range of 80-120% of the above-mentioned value. ·Three values are multiplied for "Kill without fail" and "Critical Hit".

·Hit rate of attack is usually (%) =100-hit rate -(rate (%) of hit of equipment arms of 100-A)×+ (quickness -1 of quickness ÷ A of B)1÷2

·When the option of "Ignore Monster Evasion" is given to arms, the basic hit rate becomes a hit rate as it is. ·Hit rate change value (%) is multiplied by present "Condition".

·When B is equipped with the protector of "Rise Avoid of Physical Attack", 25% is subtracted from the hit rate. The hit rate is unconditionally assumed to be 100% when under the "Condition" that B cannot act.

·Amount of effect of special skill:

Amount of basic effect (attack power × mind implication level ÷+ 20 of A) effect amount = +(soul power × soul implication level ÷40 of A)

·It changes within the range of 5% of ± for each numeric, decentralized level 1(maximum +50--50%).

·When a special skill of the attack and setting [ the defense ignore ] is invalid, the following values are pulled from the amount of the effect. (defense power × shock implication level ÷40 of B)-(soul power × soul implication level ÷80 of B)

·The value of the amount of the effect is treated as it is as recovery rate (%) of HP for a special skill by which only the condition that it is not possible to combat is recovered (HP is not recovered)(all recoveries when the value is 100 or more).

Success rate of special skill Success rate basis (%) = success rate

·As for a special skill with two or more effects, the success rate of each effect is calculated and the success or failure is judged.

·The abnormal generation rate based on the effective condition degree of the character is crossed for a special skill by which the state is changed (The probability to which the state change actually takes place is 25%(50% and 50% at the abnormal generation rate in the state at the success rate of a special skill)).

·When the message when failing is "Etc. The attack was exchanged", the judgment type of "Hit rate of the attack normally" is applied with a special skill of a physical attack.

·When the attack by a special skill by which HP or MP is decreased fails, the attack to other ability values and states is assumed to be invalid (All are considered to be a failure).

·Escape success rate Escape success rate (%) = 1.5-(average quickness of all average quickness ÷ heroes of the entire enemy Chara)×100 (example)The escape success rate is 50% at the same both. enemy Chara and hero's average quickness rates

·The escape success rate is added by 10% every one time of the escape failure.

·It is assumed the one that it is possible to run away unconditionally for the preemptive strike inside.

Gemin-note: I had a very difficult time translating this section. I apologize that some of it may not be accurate. I believe most of it is, although you may need a good background in math to make any sense of it. I found some damage calculations from the World of Rm2k forum and I offer them to you now, maybe they will help you make more sense of it all.

Squall83
19.04.2003, 06:26
Tja, jetzt hab ich in der Rpg Maker 2000 Hilfe im Index mal "Combat Calculation" eingegeben und tatsächlich diese Formeln gefunden. Naja, wenigstens sind die dort (im Gegensatz zu meinen) ziemlich unverständlich (vor allem, was die Rechenzeichen angeht).:D Also war meine Arbeit doch nicht umsonst.

Schattenläufer
28.06.2003, 18:43
So, ich muss dann noch was fragen, was mich gerade bei meinem Projekt beschäftigt:

Hat jemand eine Ahnung, wie lange ein "Jump"-Befehl dauert? Also, ich hab einen "Move Event"-Befehl mit


Start Jump
Up
Up
Up
End Jump

drin, wie lang braucht der Maker für sowas?

melior
28.06.2003, 19:01
Original geschrieben von Schattenläufer
So, ich muss dann noch was fragen, was mich gerade bei meinem Projekt beschäftigt:

Hat jemand eine Ahnung, wie lange ein "Jump"-Befehl dauert? Also, ich hab einen "Move Event"-Befehl mit


Start Jump
Up
Up
Up
End Jump

drin, wie lang braucht der Maker für sowas?
Vielleicht kannst du dir das mit hilfe von Lachsens Waits ausrechnen. Du machst nach dem Jump ein Play Sound Effekt und in nem PP Event machst du verschiedene Waits mit dem selben sound am ende.
Wenn dann die sound effekte genau gleichzeitug abgespielt werden, hast du die zeit, der der sprung braucht.

Lachsen
07.07.2003, 05:07
Original geschrieben von Schattenläufer
So, ich muss dann noch was fragen, was mich gerade bei meinem Projekt beschäftigt:

Hat jemand eine Ahnung, wie lange ein "Jump"-Befehl dauert? Also, ich hab einen "Move Event"-Befehl mit


Start Jump
Up
Up
Up
End Jump

drin, wie lang braucht der Maker für sowas?

Edit: Damit die Verwirrung nicht so groß ist: Ich habe anfangs ungerade Ergebniss gemessen, was jedoch an einer dummen neuen Messungs-Methode lag. Letztendlich sind also DOCH alle Ergebnise gerade! Glaubt einfach dem, was in "Edit" steht. Das, was fett makeirt ist, ist natürlich immer richtig ^^° (wurde aktualisiert)

Damit hab ich mich noch nicht so genau beschäftigt.
Das liegt daran, da es hierzu leider keine so schön genauen Ergebnisse gibt, wie bei normalen Schritten (Edit: Jetzt wo ich herausgefunden habe, dass es doch gerade Ergebnisse gibt, wahr es wohl doch nur meine Faulheit ^^°) ...
Aber eines steht fest:

EGAL wie weit der Sprung geht: Er dauert IMMER gleich lang.

Also dauert:

Start Jump
up
End Jump

genauso lange wie:

Start Jump
up
up
up
up
End Jump

Was die länge der Dauer des Sprunges bestimmt ist nur die Geschwindigkeit des Events.

Hier hab ich nun ein paar Abmessungen gemacht, aber wie gesagt: Die Zeiten sind diemal nicht so gerade (Edit: Doch sind sie, ich hab mich nur vermessen o_o°):

EDIT²: *PATCH* ... Bezüglich der ungeraden Messungsergebnisse lage ich KOMPLETT falsch. Das einzige, was das ganze ungerade gemacht hat war eine etwas neue Messungs-Methode, die, wie es scheint, etwas ungenau gewesen war. Nachdem ich es dann mit der Klassischen Methode probiert habe kam ich auf recht glatte Ergebnisse:


8x Slower -- 32x 0.0 Sec = ca. 0.5 Sec + 2x 0.0 Sec
4x Slower -- 22x 0.0 Sec = ca. 0.3 Sec + 4x 0.0 Sec
2x Slower -- 16x 0.0 Sec = ca. 0.2 Sec + 4x 0.0 Sec
Normal ----- 11x 0.0 Sec = ca. 0.1 Sec + 5x 0.0 Sec
2x Faster -- 8x 0.0 Sec = ca. 0.1 Sec + 2x 0.0 Sec
4x Faster -- 4x 0.0 Sec

Ich hoffe ich konnte Helfen.

C ya

Lachsen

TheBiber
27.07.2003, 22:10
Original geschrieben von Squall83
Tja, jetzt hab ich in der Rpg Maker 2000 Hilfe im Index mal "Combat Calculation" eingegeben und tatsächlich diese Formeln gefunden. Naja, wenigstens sind die dort (im Gegensatz zu meinen) ziemlich unverständlich (vor allem, was die Rechenzeichen angeht).:D Also war meine Arbeit doch nicht umsonst.

Eigentlich schon, da ich schon lange vor dir herausgefunden habe, wie die Formeln funktionieren. :rolleyes:
BTW, der Text in der Hilfe-Datei hat ein wenig geholfen, aber der Grossteil dort drin ist unleserlich geschrieben.

da! (http://mitglied.lycos.de/thebiber/RPG%20Maker%202000%20Combat%20Calculation.txt)

Finde mal lieber heraus, wie die Trefferquote oder Erfahrungskurve funzt. :D

Squall83
03.08.2003, 16:50
Original geschrieben von TheBiber
Eigentlich schon, da ich schon lange vor dir herausgefunden habe, wie die Formeln funktionieren. :rolleyes:
Tja, Pech, dass ich sie vor dir hier veröffentlicht habe. Daher geht der Ruhm an mich. :D Wie sich nämlich herausstellte, kannte die Formel vor meiner Veröffentlichung kaum einer (ich hatte auch nen Thread dazu aufgemacht, aber der ist inzwischen irgendwo auf Seite 953 oder so ;)).
Also war meine Arbeit definitiv nicht umsonst!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>:( :o ;)

BTW, der Text in der Hilfe-Datei hat ein wenig geholfen, aber der Grossteil dort drin ist unleserlich geschrieben.
Ich habs ganz ohne diesen Text gemacht. Man braucht nur Excel und ein wenig Motivation, dann geht das ganz fix.

da! (http://mitglied.lycos.de/thebiber/RPG%20Maker%202000%20Combat%20Calculation.txt)
Finde mal lieber heraus, wie die Trefferquote oder Erfahrungskurve funzt. :D
Zitat von diesem Link:
Trefferquote in % = (Hit Chance der Waffe von A)+(Speed von A)-(Speed von B)(?)
Ja, diese Formel sieht auch nicht besonders richtig aus (vom Gefühl her), denn die Zahl wird imo viel zu einfach größer als 100, aber wenn die Waffe z.B. 100 hat und beide gleich schnell sind, dann trifft man definitiv nicht immer. Momentan bin ich aber unter der Woche beim Bund und hab nicht besonders viel Zeit für sowas. Ich schätze, im Oktober werd ich wieder mehr Zeit haben, weil da die AGA (allgemeine Grundausbildung (3 Monate lang)) vorbei ist und ich in eine heimatnähere Kaserne versetzt werde.

Die Formel für die Exp ist extrem knackig. Schreib dir mal ein paar der angegebenen Werte für "Next Level" auf und daneben dann die Differenz zweier solcher Werte (am besten setzt du alle Werte so niedrig, wie möglich). Dann siehst du, dass:
1. Die Werte für "Next Level" sehr unregelmäßig zunehmen und
2. Die o.g. Differenzen nicht permanent größer werden.
Da spielt also auch noch der dem rm2k innewohnende Rundungsfehler eine Rolle. Daher hab ich nach einer Weile aufgegeben. Es gibt viel einfachere Formeln, die man verwenden kann, wenn man ein eigenes KS machen will.

TheBiber
03.08.2003, 18:55
Original geschrieben von Squall83
Tja, Pech, dass ich sie vor dir hier veröffentlicht habe. Daher geht der Ruhm an mich. :D Wie sich nämlich herausstellte, kannte die Formel vor meiner Veröffentlichung kaum einer (ich hatte auch nen Thread dazu aufgemacht, aber der ist inzwischen irgendwo auf Seite 953 oder so ;)).
Also war meine Arbeit definitiv nicht umsonst!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>:( :o ;)

Ähm ja, eigentlich hab ich das Ding schon vor dir veröffentlicht. Aber wir sind hier ja im RPG-Maker Forum, alles was älter als 3 Monate ist, geht da in die ewigen Jagdgründe ein, da die ganze Community immer wieder grunderneuert wird (Stichwort Newbies). :D
BTW, auf den Ruhm kann ich hier getrost verzichten. ;)


Ich habs ganz ohne diesen Text gemacht. Man braucht nur Excel und ein wenig Motivation, dann geht das ganz fix.

Bei den offensichtlichen Formeln wie der Angriffs-Befehl oder die Skills schon, aber wenn es dann um interne Dinge geht, geht das nicht mehr so einfach.


Ja, diese Formel sieht auch nicht besonders richtig aus (vom Gefühl her), denn die Zahl wird imo viel zu einfach größer als 100, aber wenn die Waffe z.B. 100 hat und beide gleich schnell sind, dann trifft man definitiv nicht immer.

Deshalb auch das Fragezeichen. Wenn der Don seine Hilfe-Datei bloss verständlicher geschrieben hätte (wo hat der Typ Mathe gelernt?), hätten wir einige Probleme weniger.

Jinjukei
25.08.2003, 01:20
Keine Ahnung ob ihrs schon wisst (einige von euch sicher), jedenfalls hab ich es heute gebraucht!

...wusstet ihr schon, dass sich ein "Parallel Prozess" jede Millisekunde wiederhohlt, also 60 mal in einer Sekunde....

melior
25.08.2003, 01:32
Original geschrieben von Jinjukei
Keine Ahnung ob ihrs schon wisst (einige von euch sicher), jedenfalls hab ich es heute gebraucht!

...wusstet ihr schon, dass sich ein "Parallel Prozess" jede Millisekunde wiederhohlt, also 60 mal in einer Sekunde....
*räusper*

Zu den Waits:

KA obs jemandem interessiert, aber die Zeitdauer, wenn ein Parallel Process Event aufhört und von neuem beginnt entspricht einem Wait von 0,0 Sekunden. Beim Autostart gibt es hingegen garkeinen "Wait".
(erster beitrag) ;)

Manuel
25.08.2003, 03:25
Darf man hier einfach so was reinposten, falls man
eine Eigenart des Makers herausgefunden hat? Dann
will ich mich der Kette auch anschließen :D

- Wusstet ihr, dass ein Paralleler Prozess (Deutschpatchbesitzer ;) ),
dass als Startposition einen Schalter braucht, aber als erstes
Eventkommando der Schalter deaktiviert wird, sich automatisch
erst ausschaltet, wenn man ein WAIT- oder ein SHOW MESSAGE-Befehl
ausführt? Das war jetzt wohl kompliziert erklärt, deshalb ein
Beispiel: Angenommen, ein Event benötigt den Schalter
"0008:testtab", um es auszuführen. Jetzt wird dieser Code
eingesetzt:

<>TAB ändern :[0008]testtab-TAB AUS
<>Var ändern :[0009]testvariable + ,1
<>Var ändern :[0009]testvariable + ,1
<>Var ändern :[0009]testvariable + ,1
<>Wrtn: 0.0s
<>Var ändern :[0009]testvariable + ,1
<>Var ändern :[0009]testvariable + ,1
<>Var ändern :[0009]testvariable + ,1

Würde man den Schalter "testtab" aktivieren, wird die Variable
"testvariable" nur den Wert 3 betragen, da sich ab der Stelle ein
WAIT befindet (auch ein Wait 0.0 hält das Event an). ABER wird
im Event anstatt "Paralleler Prozess" der Punkt "Autostart" eingestellt, beträgt die Variable den Wert 6, da das Event
weiterführt wird. Übrigens: Das gilt auch bei "by its Route"-
Befehle, wenn dabei der Schalter ausgeschaltet und sich danach
noch ein WAIT befindet.

- Ein als "Autostart" eingestelltes Event lässt das Spiel solange
einfrieren, bis es durch z.B. einen Schalter deaktiviert wird.
Ein "Paralleler Prozess" läuft hingegen parallel ab, wie schon der
Name sagt. (ist zwar ein alter Hut, aber...)

Lachsen
25.08.2003, 17:07
Original geschrieben von Manuel
- Wusstet ihr, dass ein Paralleler Prozess (Deutschpatchbesitzer ;) ),
dass als Startposition einen Schalter braucht, aber als erstes
Eventkommando der Schalter deaktiviert wird, sich automatisch
erst ausschaltet, wenn man ein WAIT- oder ein SHOW MESSAGE-Befehl
ausführt? Das war jetzt wohl kompliziert erklärt, deshalb ein
Beispiel: Angenommen, ein Event benötigt den Schalter
"0008:testtab", um es auszuführen. Jetzt wird dieser Code
eingesetzt:

<>TAB ändern :[0008]testtab-TAB AUS
<>Var ändern :[0009]testvariable + ,1
<>Var ändern :[0009]testvariable + ,1
<>Var ändern :[0009]testvariable + ,1
<>Wrtn: 0.0s
<>Var ändern :[0009]testvariable + ,1
<>Var ändern :[0009]testvariable + ,1
<>Var ändern :[0009]testvariable + ,1

Würde man den Schalter "testtab" aktivieren, wird die Variable
"testvariable" nur den Wert 3 betragen, da sich ab der Stelle ein
WAIT befindet (auch ein Wait 0.0 hält das Event an). ABER wird
im Event anstatt "Paralleler Prozess" der Punkt "Autostart" eingestellt, beträgt die Variable den Wert 6, da das Event
weiterführt wird. Übrigens: Das gilt auch bei "by its Route"-
Befehle, wenn dabei der Schalter ausgeschaltet und sich danach
noch ein WAIT befindet.
Das ist recht interessant.
Mir ist zwar schon klar, das mein Parallel Event (mit dem austellen oder aktivieren eines Switches zwischen durch) deaktivieren kann, obwohl es noch nicht durchgelaufen ist, aber das die Deaktivierung tatsächlich erst dann stattfindet, wenn im parallel-Event eine Waitzeit kommt, ist mir noch nicht so genau bewusst gewesen. Es gibt auch bestimmt andere Befehle, die die Unterbrechung erlauben, aber Change-variable-Befehle werden ja allen anschein nach noch angenommen, bevor das Event unterbrochen wird.
Das müsste ich auch nochmal genauer testen.

Lachsen
25.08.2003, 17:26
Ist etwas dumm, das ich den ersten beitrag nichtmehr editieren kann, da Unfixable ihn beim Server.Umzug gepostet hat, deswegen muss der beitrag hier erstmal reichen.

Was habe schon wieder etwas bezüglich Event-Animationen herausgefunden.

Es geht um die Frequenz mit der die Events ihre Grafiken beim laufen ändern (oder auch beim stehen, wenn man beispielweise den Animations-Typ "Fix Direktion" wählt, wo sich die Events halt beim stehen bewegen).
Genau diese Frequenz kann man auch mit einem Move-Event erreichen. Hierbei muss man ein gewisse Move-Frequenz auswählen und das Event mit Change-face-Befehlen animieren.

Folgendes hab ich nun genau herausgefunden.

Die Grafikänderungsfrequenz die ein Event bei Lauf-bewegung und bei einer Geschwindigkeit von 8x Slower hat, kann man mit einem Move-Event mit der Move-Frequenz von 4 und Change-face-befehlen ebenfalls erreichen.
Das gleiche gilt mit einem Event der Geschwindigkeit Normal, hier mit einer Move-Frequenz von 5

Interessant, für die die damit etwas anfangen können XD... ich konnte es.

Undzwar hab ich ein Event, das eine Grafik eines stehenden Tieres anzeigt.
Schaut das Event nach rechts, steht das Tier dort, ohne bewegung, schaut das Event nach oben, wird das Tier animiert (in der Lauf-Animation, demnach hat dieses Event die Lauf-Animation auch im stehen). Da ich nicht wollte, das die Animation des Tieres permanent stattfindet, hab ich diesem Event beim Movement-Typ eine Route gegeben, wo es ab und zu die Facerichtung ändert, wodurch es aml stillstehen soll und mal animiert sein soll. Das ganze sieht allerdings recht dumm aus, wenn die Gesichtsänderfung nach einer beliebigen zeit einfach mal geändert wird. Die Stehanimation kann so ganz unpassend unterbrochen werden. Deswegen habe ich mit dieser erkenntnis oben die Change-face-Befehle mit der richtigen Move-Frequenz geändert, das die Blickrichtung immer in Harmonie zur Steh-Animation geändert wird, so das der ein plötzliches Abbrechen der Steh-Animation verhindert wird. Wie genau die Change-Face Befehle waren, weiß ich nichtmehr genau, das hängt auch etwas von der Grafik des Events ab. Da muss man ausprobieren. Ausserdem ist dieses System sehr sensibel und man kann das Event so nicht ansprechen (deswegen muss man ein "Below Hero" Event davor setzten)

Btw: ich weiß das man den gleichen Fall viel einfacher Lösen, aber das kostet wiederum mehr Platz in der Charset-Grafik und gerade den wollte ich ja gerne sparen. Ausserdem könnte diese Methode es mir ermöglichen, etwas abwechselungsreichere Steh-Animationen in mein KS einzubaunen, aber das muss ich noch ausprobieren

Soviel von meiner Seite

C ya

Lachsen

Manuel
26.08.2003, 04:01
Ich habe mit dem Parallel Event etwas genauer hantiert
und es auch mit Bildern probiert. Ich habe das von mir
oben beschriebene Programm weiter bearbeitet:


<>TAB ändern :[0008]testtab-TAB AUS
<>Var ändern :[0009]testvariable + ,1
<>Var ändern :[0009]testvariable + ,1
<>Var ändern :[0009]testvariable + ,1
<>Bild anzeigen: 1, Cloud [160, 120]
<>Bild anzeigen: 2, Cloud [180, 120]
<>Bild bewegen: 2, [180, 140],1.0sec
<>Bild bewegen: 1, [160, 140],1.0sec(w)

<>Bild bewegen: 2, [180, 140],1.0sec(w)
<>Var ändern :[0009]testvariable + ,1
<>Var ändern :[0009]testvariable + ,1
<>Var ändern :[0009]testvariable + ,1


Das Event benötigt den Schalter "0008:testtab", um abzulaufen,
als Startvoraussetzung ist Parallel Event gegeben. Dabei wird
das Event solange ausgeführt, bis sich auch ein Bild bewegt und
auf "Wait until done" eingestellt ist. Danach wird ebenfalls
nichts mehr ausgeführt (ich habe der Verständlichkeit halber
die Code, der noch abläuft, grün markiert, den Rest rot)

Ich habe es auch mit Teleports probiert und festgestellt, dass
auch nach einem Teleport nichts mehr ausgeführt wird.

Daraus schließe ich (meinen vorigen Post miteinbezogen):
- Parallel Events werden erst nach einem WAIT, einem SHOW MESSAGE,
einem MOVE PICTURE oder einem TELEPORT unterbrochen.

Gekiganger
27.08.2003, 06:30
Original geschrieben von Manuel
Daraus schließe ich (meinen vorigen Post miteinbezogen):
- Parallel Events werden erst nach einem WAIT, einem SHOW MESSAGE,
einem MOVE PICTURE oder einem TELEPORT unterbrochen...
... sofern diese Unterbrechung innerhalb des Events statt findet und nicht außerhalb, durch andere Events geschieht.
Dann werden sie nämlich exakt zu dem Zeitpunkt geschlossen, an dem ihre Startbedingung nichtmehr erfüllt ist.

Ich habe es getestet indem ich durch ein externes Event ein anderes (Parallel Process) gestartet und gleich wieder beendet habe. Dieses Event tat nichts anderes als durch viele Change Variable Befehle einen Wert kontinuierlich um 1 zu erhöhen und sich zum Schluss selbst auszuschalten.
In dem Event befanden sich 70.000 Change Variable Befehle. Wäre es ganz durchgeloffen, hätte die Variable am Ende also den Wert 70.000 haben müssen.
Als ich in dem externen Event zwischen Aktivierung und Deaktivierung keine Zeitverzögerung eingebaut hatte, lag dieser Wert allerdings bei 0.
Als ich als Zeitverzögerung 0,0 Sekunden gewählt hatte, lag der Wert bei 10.000.
Bei 2x 0,0s waren es 20.000, bei 3x 0,0s waren es 30.000, usw...
(Dieser Wert stieg pro 0,0s Wait um 10.000)
Wie man sieht, wurde das PP Event also immer sofort deaktiviert.
Aus diesem Grund würde ich empfehlen, Parallel Process Events, die zu einem bestimmten, aber variablen Zeitpunkt beendet werden sollen, durch ein externes Event zu beenden und nicht innerhalb des selbigen.

Als Nebeneffekt habe ich noch 2 Dinge festgestellt:

1. In der Zeitspanne von 0,0 Sekunden kann der Maker genau 10.000 Eventbefehle (zumindest Change Variable, das andere muss noch ausgetestet werden) am Stück ausführen.

2. Bei c.a. 40.000 - 50.000 Commands sind die Event Commands zumindest auf einem P4 2 GHz mit 512 MB DDR-SDRAM nicht mehr editierbar.^^"
(Scrollbar lässt sich nichtmehr auf eine Stelle setzen sondern wandert zum Ausgangspunkt zurück)

Jinjukei
27.08.2003, 07:10
Original geschrieben von melior
*räusper*


Joa keine Ahnung, naja nächstes Mal behalte ich es für mich, wenn ich mal wieder was rausfinde, was alle schon wissen. Ne ich dachte ja nur...

Lachsen
27.08.2003, 16:02
Original geschrieben von Gekiganger
Als Nebeneffekt habe ich noch 2 Dinge festgestellt:

1. In der Zeitspanne von 0,0 Sekunden kann der Maker genau 10.000 Eventbefehle (zumindest Change Variable, das andere muss noch ausgetestet werden) am Stück ausführen.

2. Bei c.a. 40.000 - 50.000 Commands sind die Event Commands zumindest auf einem P4 2 GHz mit 512 MB DDR-SDRAM nicht mehr editierbar.^^"
(Scrollbar lässt sich nichtmehr auf eine Stelle setzen sondern wandert zum Ausgangspunkt zurück)
Das ist wirklich interessant, mit den 10000 Event-Befehlen pro 0.0 Sekunde, hätte nicht gedacht, das es da neine Begrenzung gibt... naja, jetzt weiß ich mehr.
Ohje, maximal 40.000-50.000 Commands pro Events-Seite und dann geht nicht mehr? Nagut, man kann es ja mir Call-Events aufteilen. ^^° ... Edit: Achso, nur nichtmehr editierbar... verstehe. Hab mich schin gewundert wie du sonst 70.000 Change variable Befehle eingebaut haben sollst Oo
Aber gut das zu wissen.
Vielleicht liegt es ja auch an dem Betriebssystem oder an dem RPG-Maker, also an der Bedienungsoberfläche vom RPG-Maker... da kenn ich mich weniger aus.

naja, mehr hab ich nicht zu schreiben... Eigentlich schon fast überflüssig der Thread, naja ne kleinigkeit noch die für Leute mit schwächeren PCs interessant sein sollte: (sehr neu ist es wahrscheinlich nicht)

Wenn man eine Event-Seite mit viel Skript-Inhalt mit einer Fork-Condition beginnt brauch sie viel länger um sich aufzubauen.
Das könnte aber auch vom Betriebs-System abhängen....

naja, mehr hab ich nicht zu sagen... ^^°

Schattenläufer
10.09.2003, 02:11
Erstmal: Danke, Lachsen, dass du mir das mit der Jump-Länge gesagt hast. Wird das Spiel "Duckworld 3", das hoffentlich bald fertig wird, um einiges bereichern - nämlich das, genau diesen Befehl und einige damit verknüpfte nicht einzubauen. ;)


So, jetzt aber der eigentliche Grund, warum ich hier reinschreibe:
Ich habe ein Common Event, welches relativ lang ist. Um das komplette Event herum ist allerdings eine Fork, die fragt, ob ein Switch OFF ist. Da ich nun das Spiel nicht unnötig verlangsamen möchte (falls der Switch ON ist, ist es immerhin ein PP-Event, dass nur aus einem Wait besteht), muss ich folgendes wissen:
Wie verhält es sich mit dem Befehl "Clear Timer", wenn er in einem Parallel Process Common Event vorkommt? Wann wird das Event wieder neu gestartet, oder wird es womöglich nie wieder gestartet?

Ich habe den Thread hier durchsucht, und nichts darüber gefunden, aber sollte ich was überlesen haben, tuts mir leid.

Lachsen
14.09.2003, 17:26
Original geschrieben von Schattenläufer
So, jetzt aber der eigentliche Grund, warum ich hier reinschreibe:
Ich habe ein Common Event, welches relativ lang ist. Um das komplette Event herum ist allerdings eine Fork, die fragt, ob ein Switch OFF ist. Da ich nun das Spiel nicht unnötig verlangsamen möchte (falls der Switch ON ist, ist es immerhin ein PP-Event, dass nur aus einem Wait besteht), muss ich folgendes wissen:
Wie verhält es sich mit dem Befehl "Clear Timer", wenn er in einem Parallel Process Common Event vorkommt? Wann wird das Event wieder neu gestartet, oder wird es womöglich nie wieder gestartet?

Ich habe den Thread hier durchsucht, und nichts darüber gefunden, aber sollte ich was überlesen haben, tuts mir leid.
Ich hab das ganze eben mal getestet.
Anscheinend zeigt der "Clear Timer" Befehl bei Common-Events keine Wirkung.
Eigentlich schade. Dass Common-Events für die aktuelle Map deaktiviert werden können, wäre eventuel schon ganz praktisch.
Naja, Clear Timer scheint hier jedenfalls nicht zu helfen.
Bei deinem Problem solltest du vielleicht einfach versuchen, den Inhalt ausfallen zu lassen, wenn der dazugehörige Switch off ist (und nicht on). Dann könntest du diesen Switch ja ganz einfach oben als Common-Event Bedingung angeben.
Wenn du den Switch jedoch auch in anderen Angelegenheiten verwendest ist das sicherlich nicht so einfach zu arrangieren.
Naja, ansonsten hab ich hier keinen direkten Tipp auf lager. ^^°

Hoffe ich konnte trotzdem helfen

C ya

Lachsen

sajzev
16.09.2003, 07:32
hmmm....
zimlich fiel
das meiste habe ich auch schon gesehen (getesstet)
aber sonst....danke für die tipps!!

Göfla
16.09.2003, 09:31
@sajzev: Ach... Du scheinst ja der grosse Profi zu sein, dann frage ich mich doch wie das hier zusammengekommen ist... http://www.multimediaxis.de/images/smilies/old/s_010.gif


-> http://forum.rpg-ring.com/forum/showthread.php?s=&threadid=15217

Original geschrieben von sajzev
ne dumme frage aber......
WIE kan ich mein spiel hochladen!!!

-> http://forum.rpg-ring.com/forum/showthread.php?s=&postid=259167#post259167

Original geschrieben von sajzev
der mp3 patch ist scheisse!!!
nichts funktioniert!!!
lass es eifach sein!
es bringt nur probleme!!

-> http://forum.rpg-ring.com/forum/showthread.php?s=&postid=259154#post259154

Original geschrieben von sajzev
An alle die probleme mit switches haben
es geht ganz eifach!!!!

wen man ein event gemacht hatt....dann
geht man auf copy page und dann geht mann zur ersten page
zurück und dan geht man bei switches dann schreibt man zumbeispiel
rein man nacher und dann nimt man das switches wider weg
dann geht man beim menu zu change switch und dann (beim ersten page)
geht man eben zu man nacher dann geht man zum 2
und geht bei switches dort stellt man ein man nacher (nur beim 2)
und fertig dann schreibt man beim eins hin bla bla
und beim 2 lala und dann brobierts aus
schaut wenn ihr change switch macht das alles auf on ist
(sonst funktioniert das ganze nicht)!!!;)

-> http://forum.rpg-ring.com/forum/showthread.php?s=&threadid=15193

Original geschrieben von sajzev
es erhöt sich automatisch wen du ein
level gestiegen bist wen du dein level schon vorher erhöhen
willst dann geh einfach beim menu und dort zu
hero dort steht level und dort machst du zb.level 5

kapisch??!!

-> http://forum.rpg-ring.com/forum/showthread.php?s=&postid=259175#post259175

Original geschrieben von sajzev
wenn der neue rpg-maker auch so ein flopp!!
wird wie der 2003!!
dann...hahahaha!!
aber wenn nicht http://www.multimediaxis.de/images/smilies/old/1/party.gif
hahaha dann schnell an den pc und
runterladen!!!

Sorry 4 Spam, aber das musste ich jetzt loswerden... -_-

Brainstorm
16.10.2003, 22:45
Krass, was unfixable bzw. die leute die es ursprünglich gepostet haben da so rausgefunden haben!

Hammer Daten! Ich hätte mir da gar net so ne Mühe gemacht!
Respekt!

Grüße an alle !

Gekiganger
18.10.2003, 01:21
Schande über mich, dass ich das erst jetzt herausgefunden habe:


Der Maker sieht sämtliche Events als Cycles an.
Durch ein Break Cycle kann eine Eventseite schlagartig abgebrochen werden, alles was nach dem Break Cycle im Code steht wird einfach überlesen (PP und Autostart beginnen nun von neuem). Es sei denn, es kommt danach irgendwo ein Cycle vor, denn dann kommt es zum bereits bekannten Cycle Bug, der in einem Beitrag des alten Forums schonmal näher erläutert wurde, es jedoch nicht hier rein geschafft hat. Das heißt, bis zum Cycle hin wird der Code ignoriert, der Cycle wird bearbeitet, jedoch sofort wieder abgebrochen und alles was nach dem Cycle kommt wird wieder bearbeitet.

Maisaffe
19.10.2003, 16:11
boah, goil...
sowas wollt ich auch mal machen...
war aber dann doch zufaul...

Was war der lamsangste (wie schreibt man des???) Test-PC?
Mein alter PII 300MHz, 32MB Ram, ATI RAGE 2 ENGLISH G ?MB hatte schon geruckelt...

Was sind eigentlich die mindestvoraussetzung fürn ein maker spiel?

Gekiganger
19.10.2003, 21:44
Pentium 166 Mhz, 16 MB RAM... XD

Die Anforderungen sind ganz verschieden. Für klassische RPGs unter 1Ghz, so um die 700 rum würdich sagen. Dann aber vor allem wegen Effekten wie Spielereien mit Bildern.
Für Projekte mit Kampfsystemen sind sie jedoch ungleich höher, vor allem bei Action Kampfsystemen, schon alleine aus dem Grund, dass die KI der Gegner ständig berechnet werden muss.


Ich habe z.B. ein sehr aufwändiges AKS, welches nicht under 2GHz und 512 MB RAM ordentlich zu spielen ist.
Aber keine angst, dass werdet ihr eh nie zu gesicht bekommen. :P

Schattenläufer
27.01.2004, 19:52
Hmm, ich hab grad was rausgefunden, das so simpel ist, dass dieser Post hier wahrscheinlich als Spam angesehen wird... ¬_¬"

Keine Ahnung, ob ihrs schon wusstet, aber wenn man seinen Variablen längere Namen geben will, als eigentlich möglich ist, schreibt man sich den Namen einfach irgendwo in ein Programm wie den Texteditor oder Word. Dann kopiert man das und fügt es ein.

Jo, so wie ich das sehe klappt das ganz prima, ob dadurch allerdings Fehler auftauchen oder so weiß ich nicht, habs nicht getestet.

Gekiganger
27.01.2004, 21:52
Bist du sicher, dass du die Strings nicht mit Resource Hacker verlängert bzw. eine veränderte Version hast?
Ich habe das mal ausprobiert, doch bei mir wird alles nach der Maximallänge abgeschnitten, es sei denn, ich verlängere mir die Strings eben mit dem Resource Hacker, aber dann wäre das Copy & Paste unsinnig, da ich es auch auf normale Weise eingeben könnte.

Schattenläufer
29.01.2004, 22:23
Ich hab den ganz normalen Maker, ohne irgendwelche Patches... und den Ressource Hacker hab ich auch nicht. Ich hab nichtmal den Tastenpatch von Ineluki installiert ^^"

Tja, keine Ahnung, bei mir klappt das. Vielleicht hast DU ja eine alte Version vom Maker? Bei der einen Seite die ich nich nennen werde gibts ja so Updates vom Maker, da hab ich das neueste o.o"

666Freak666
01.03.2004, 14:58
Ich habe auch noch etwas, werden wahrscheinlich viele von euch wissen aber egal, es könnte hilfreich sein:

Wenn man das ein Spiel über den RPG-Maker startet und während dem Spiel auf die Taste F9 drückt, kann man alle Switches und Variablen umstellen. So kann man ein Spiel testen, ohne alle lästigen Aufgaben machen.

V-Soul
07.03.2004, 23:29
Original geschrieben von 666Freak666
Ich habe auch noch etwas, werden wahrscheinlich viele von euch wissen aber egal, es könnte hilfreich sein:

Wenn man das ein Spiel über den RPG-Maker startet und während dem Spiel auf die Taste F9 drückt, kann man alle Switches und Variablen umstellen. So kann man ein Spiel testen, ohne alle lästigen Aufgaben machen.

Schon sehr sehr lange bekannt... sehr sehr...

V|RUS
05.04.2004, 02:10
Und gibt es ne Möglichkeit diese Funktion zu sperren ?

Oder eher gesagt das keiner mehr cheaten kann und auch nicht Cracken !

PS:Ich mache nu schon 4 Nächte am Stück Lan-Party und meine Laune wird besser anstat schlechter zu werden O.o hmm liegt wohl am VanilleKaffee ^^

melior
05.04.2004, 02:25
Original geschrieben von V|RUS
Und gibt es ne Möglichkeit diese Funktion zu sperren ?

Oder eher gesagt das keiner mehr cheaten kann und auch nicht Cracken !
jop, du musst nur verhindern, dass man dein projekt im maker öffnen kann. dafür gibts n spezielles tool, rm2k utility oder so... musst du mal mit google suchen.
wenn man das spiel nicht per testspiel im maker startet, funzt auch F9 nicht mehr


Edit: hab selbst gesucht, das tool gibts >>hier<< (http://www.rm2k-ccc.de/dloads_tools.htm)

CeKa
12.06.2004, 02:55
Seeeeeeeeeehr Wissenswert, vieles davon wusste ich bisher
noch nicht!

Das wird mir nochmal gewaltig helfen, thx!
Woher weißt du das eigentlich?

Sievel
15.06.2004, 04:03
@melinor
gut das es diese Tools giebt! obwohl ich froh bin das man hammerspiele wie VD oder UiD mit dem maker öffnen kann! So hab ich mir eigentlich mein grundwissen angeeignet

übrigens kann man bein testplay mit gedrückter STRG. taste über alles laufen ^^

Dhan
16.06.2004, 02:24
Leutz, bleiben wir bei Profi-Wissen, ein Anfänger weiß sowas vielleicht noch net aber wer sich ernsthaft mim Maker beschäftigt und STRG nicht kennt... was hier gefragt ist, ist wirklich tiefe Materie bei der ein Anfänger gar nicht wüsste, was er damit anfangen kann

Knumonmaster
16.06.2004, 05:28
Original geschrieben von V|RUS
Und gibt es ne Möglichkeit diese Funktion zu sperren ?

Oder eher gesagt das keiner mehr cheaten kann und auch nicht Cracken !
Ja,
das Spiel muss nur ohne den Parameter 'TestPlay' gestartet werden^^
Dies ginge a) durch verändern der RPG_RT, was aber meines Wissens nach ncih einfach is, b) durch ein jeweiliges Tool, das aber leicht zu umgehen ist, c) den Maker verändern, was schwachsinn ist oder d) die RPG_R umwandeln und stattdessen ein Tool starten lassen, dies ist nicht allzu leicht zu umgehen, zumindest nicht für Anfänger:D

KNM

PS: Dann funktioniert Strg auc hncih mehr^^

Feenstaub
22.06.2004, 08:30
Guten Morgen, liebe Maker.

Ich bin nun seit ein paar Tagen dabei, mich in dieses wundervolle Programm einzuarbeiten. Und die Zusammenhänge zwischen den Ressourcen und ihrer Nutzung im Maker zu verstehen.

Dabei hatte ich ein Problem. Bestimmte Tiles, die auf der Map erscheinen, befinden sich gar nicht auf dem Chipset. :eek: Ich will euch mal ein Beispiel geben:

http://cylogic.de/img/cs01.jpg

Links ist das erstellte Stück Land. Rechts oben sind die Tiles aus der png-Datei. Links unten sind drei ausgewählte Tiles aus der Map. Die gibts aber gar nit! :confused:

Nach vielen (verzweifelten) Überlegungen, rauchenden Köpfen (>:()und durchgezeichneten Nächten hatte ich dann endlich des Rätsels Lösung. Der Maker baut die Tiles aus 8x8 zusammen. Er teilt die grossen Tiles noch einmal in vier Stück und erstellt dann damit die Map. Hier ist der Beweis: :D

http://cylogic.de/img/cs02.jpg

Wahnsinn, was?

Wahrscheinlich war das hier schon allen bekannt. *duck* Dann hoffe ich mal, dass dieser Thread nicht als Spam durchgeht.

Für mich war das sehr wichtig, weiss ich doch nun, dass nicht nur nebeneinanderliegende Tiles weiche Übergänge haben müssen, sondern auch andere - daher nimmt man auch für alle Tiles dieselbe Basis.

Küsschen, Feenstaub.

Ineluki
22.06.2004, 08:54
Also ich finds sehr gut, dass du dir die Muehe gemacht hast, das herauszufinden und uns so detailiert zu erlaeutern ... Es gibt sicherlich sehr Viele, denen das noch nicht bewusst war, z.B. mich .. wobei ich zu meiner entschuldigung sagen muss, dass ich ja mit dem Maker selber nix mache, sondern nur dafuer Patches entwickle ;)

Nichts desto trotz denke ich, dass dieser schoene Beitrag im Technikforum besser aufgehoben waere

this->move(*Forum.Technik);

TheByteRaper
22.06.2004, 09:03
o_O

Also ich wusste das nicht, und hab mir auch nie darüber Gedanken gemacht ^^ Aber nun bin ich wieder ein Stückchen schlauer :D

Aber ich glaube, eine Verschiebung reicht nicht :D Wenns recht ist, hänge ich diesen feinen Thread an den " Detail-Wissen und Geheimnise des RPG-Makers" dran, denn ich glaube ganz subjektiv, dass das schon ein Stückchen Wissen und Erfahrungswert ist.

Jops.

Bettpause -_-zZzZzZ

Jamahl
23.06.2004, 03:17
Wusste das zwar schon, hab aber genau dieses wissen bei bestimmten chipsets vermisst.
Gut, dass dus gepostet hast.

Was ich eigentlich fragen wollte:
Gibts vielleicht auch einen patch, damit man auch andere teile eines chipsets so zeichnen kann?
Danke

Ineluki
23.06.2004, 05:14
Zitat von JamahlOmega
Wusste das zwar schon, hab aber genau dieses wissen bei bestimmten chipsets vermisst.
Gut, dass dus gepostet hast.

Was ich eigentlich fragen wollte:
Gibts vielleicht auch einen patch, damit man auch andere teile eines chipsets so zeichnen kann?
DankeAlso ich kapier deinen ersten Satz einfach nicht .. endweder du hast es schon gewusst, oder du hast es nicht gewusst ...

Was deine Frage angeht .. nein dafuer gabs nie einen Patch, gibt es keinen Patch und wird es auch nie einen Patch geben. Das ist einfach nicht realisierbar .. an der Verarbeitung der Graphik und somit auch der Chipsets kann man nichts veraendern .. wie oft soll ich mir denn noch den Mund fusslig reden -___-

catcone
30.06.2004, 15:10
ich habe einen PP, der etwas feststellen soll (z.b. welche waffe der held hat)und dann in abhängegkeit dazu eine variable ändert. wofür braucht der maker mehr resourcen, wenn ich...
-die forks, die die heldenwaffe bestimmen nacheinander abfolgend mache:
<> if hero =>waffe1 is equipped
<> change var [001]- (set) 1
<>end case
<> if hero =>waffe2 is equipped
<> change var [001]- (set) 2
<>end case
<> if hero =>waffe3 is equipped
<> change var [001]- (set) 3
<>end case
-die forks die die heldenwaffe bestimmen per else case verbinde:
<>if hero =>waffe1 is equipped
<> change var [001]- (set) 1
<>else case
<> if hero =>waffe2 is equipped
<> change var [001]- (set) 2
<> else case
<> if hero =>waffe3 is equipped
<> change var [001]- (set) 3
<> end case
<> end case
<>end case

Dhan
30.06.2004, 21:04
Das ist Text, da geht der Unterschied gegen Null, ich denk aber, das mit Else belastet weniger (ist aber unübersichtlich, da man den Unterschied net merkt empfehl ich Nacheinander)

catcone
01.07.2004, 17:38
hab ich mir fast schon gedacht, wollte aber noch gewissheit haben ^^

Kyuu
01.07.2004, 19:14
Weil mir dermaßen langweilig ist:

Damit man auch versteht, warum...

Nacheinander folgende Forks:


<> if hero =>waffe1 is equipped
<> change var [001]- (set) 1
<>end case
<> if hero =>waffe2 is equipped
<> change var [001]- (set) 2
<>end case
<> if hero =>waffe3 is equipped
<> change var [001]- (set) 3
<>end case

Hier wird jede einzelne Fork, unabhängig von den anderen durchgenommen.

Verschachtelte Forks:


<>if hero =>waffe1 is equipped
<> change var [001]- (set) 1
<>else case
<> if hero =>waffe2 is equipped
<> change var [001]- (set) 2
<> else case
<> if hero =>waffe3 is equipped
<> change var [001]- (set) 3
<> end case
<> end case
<>end case

Sollte die Bedingung aller Forks nicht zutreffen, werden zwar auch hier alle Forks durchgenommen, aber...
Bei Erfüllen der Bedingung einer der ersten Forks, würden alle darauffolgenden (alle "Else"-Fälle dieser Fork-Verschachtelung) übersprungen werden.

Das ist bei diesem Beispiel zwar egal, da der Unterschied nicht bemerkbar wäre, bei langen, komplexen Forksystemen aber, die z.B. (ressourcenfressende) "Show Picture"s drin haben, wäre eine Verschachtelung sehr ratsam.

melior
01.07.2004, 21:24
wenns nur ums change variable geht würde ich das eh eher so machen:

Change Variable:[0001] ->Set ->Hero ->held auswählen ->Arms No.

so wird die variable einfach auf die ID der waffe aus der database gesetzt, ganz ohne forks. also würds auch keine belastung geben (und vorallem kann man sich das pp sparen)

Heaven
03.07.2004, 17:03
Was natürlich in eigenen Kampfsystemen eher selten funktionieren wird,weil die meisten Leute in diesem Fall ein eigenes Menü dem Standart vorziehen.

melior
04.07.2004, 18:13
Original geschrieben von [_Heaven_]
Was natürlich in eigenen Kampfsystemen eher selten funktionieren wird,weil die meisten Leute in diesem Fall ein eigenes Menü dem Standart vorziehen.
der beitrag war schon auf mich bezogen, oder?

warum sollte man das nicht in eigenen menüs nutzen können? ich finde das sogar recht praktisch, mit den IDs der database zu arbeiten. das erspart viele forks.
ich weiß zwar nich, was catcone mit der variable macht, aber man kann mit den IDs leicht ein komplettes ausrüstungsmenü ohne große umstände scripten. man macht einfach nen ordner, der die items anzeigt (mit pictures z.B.) und setzt in diesem gleich die variable auf die nummer aus der database. wenn du dann später die rüstung anziehen willst, machst du einfach change equipment und wählst unten die variable aus. so wird dann gleich das item angezogen, komplett ohne zustäzlichen forks.

also imho kann man die IDs der database sehr gut in eigene menüs einbaun, das da oben war nur ein beispiel.

Manuel
03.08.2004, 23:13
Weil mir dermaßen langweilig ist:

Damit man auch versteht, warum...

Nacheinander folgende Forks:



<> if hero =>waffe1 is equipped
<> change var [001]- (set) 1
<>end case
<> if hero =>waffe2 is equipped
<> change var [001]- (set) 2
<>end case
<> if hero =>waffe3 is equipped
<> change var [001]- (set) 3
<>end case


Hier wird jede einzelne Fork, unabhängig von den anderen durchgenommen.

Verschachtelte Forks:



<>if hero =>waffe1 is equipped
<> change var [001]- (set) 1
<>else case
<> if hero =>waffe2 is equipped
<> change var [001]- (set) 2
<> else case
<> if hero =>waffe3 is equipped
<> change var [001]- (set) 3
<> end case
<> end case
<>end case


Sollte die Bedingung aller Forks nicht zutreffen, werden zwar auch hier alle Forks durchgenommen, aber...
Bei Erfüllen der Bedingung einer der ersten Forks, würden alle darauffolgenden (alle "Else"-Fälle dieser Fork-Verschachtelung) übersprungen werden.

Das ist bei diesem Beispiel zwar egal, da der Unterschied nicht bemerkbar wäre, bei langen, komplexen Forksystemen aber, die z.B. (ressourcenfressende) "Show Picture"s drin haben, wäre eine Verschachtelung sehr ratsam.

Dem muss ich zumindest teilweise widersprechen, aus eigener Erfahrung. Ich verdeutliche mal das in einem Beispiel:
Der eine oder andere kennt mein 4Gewinnt-Spiel. Als Feature habe ich eine Kontrolle eingebaut, die überprüft, ob ein Spieler gewonnen hat. Die Event-Seite sah ursprünglich so aus:



<> If Switch(0001:Rot 1x1) is ON
<> If Switch(0002:Rot 2x1) is ON
<> If Switch(0003:Rot 3x1) is ON
<> If Switch(0004:Rot 3x1) is ON
<> Switch (gewonnen) = ON
<>
:End Case
<>
:End Case
<>
:End Case
<>
:Else Case
<> If Switch(0005:Rot 1x2) is ON
[...]


Ich habe jede einzelne Switch überprüft, falls die erste IF-Klausel nicht zutrifft, wird automatisch das Nächste untersucht (Der Eventcode ist in Wirklichkeit mehrere hundert Zeilen lang, ich habe es nur ein wenig übersichtlicher gestaltet). Obwohl theoretisch alle Forks übersrpungen werden, wenn auch nur ein einziges Mal vier genannte Switches auf ON sind, brauchte der Maker doch zwischen 5 und 6 Sekunden, um die Eventseite zeigen zu können. Selbst beim Editieren brauchte der Maker abermals ein paar Sekunden, um die komplette Seite neu laden zu können.

Da mich das ziemlich genervt hat, habe ich dann die andere Möglichkeit benutzt, in dem nicht alles in einer Fork mit ELSE zusammenhängt:



<> If Switch(0001:Rot 1x1) is ON
<> If Switch(0002:Rot 2x1) is ON
<> If Switch(0003:Rot 3x1) is ON
<> If Switch(0004:Rot 3x1) is ON
<> Switch (gewonnen) = ON
<>
:End Case
<>
:End Case
<>
:End Case
<>
:End Case
<> If Switch(0005:Rot 1x2) is ON
[...]


Und so weiter. Ich habe also nicht alle Überprüfungen knallhart in einer einzigen Fork gebracht und diese dann mit ELSE fortgesetzt, sondern erst nach und nach. Wären jetzt vier genannte Switches alle auf ON gesetzt, werden immer noch die restlichen Switches geprüft, obwohl das gar nicht mehr nötig wäre. Aber - und das ist ja das Seltsame dabei - kurioserweise braucht der Maker nun nimmer 5 bis 6 Sekunden, um die Eventseite anzeigen zu können.

Deshalb sage ich als Fazit: Die erstere Methode KANN(!) im Spiel schneller verarbeitet werden als die zweite, allerdings ist die zweite Methode IM MAKER(!) schneller als die erste.

Wer mir nicht glaubt und einen etwas älteren Rechner hat, kann das gerne nachprüfen, wenn er will: Download in meiner Signatur, nach jeder ersten Fork ein "ELSE" reintun und alles ins "ELSE"-Teil stopfen usw. Dann wird der Maker wieder langsamer.

Helli
06.08.2004, 15:13
Original geschrieben von Jinjukei
...wusstet ihr schon, dass sich ein "Parallel Prozess" jede Millisekunde wiederhohlt, also 60 mal in einer Sekunde....

Das ist zum Beispiel sehr nützlich, um die Spielzeit zu speichern, ohne einen Timer zu benutzen.

Und zwar so:
(Common Event - Parallel Process)



<>If Switch(0065:Spielzeit annhalten) is OFF
<>Change Var: Var[0058:SZTick] (+)- 1
<>If Var(0058:SZTick) 60
<>Change Var: Var[0059:SZSekunden] (+)- 1
<>Change Var: Var[0058:SZTick] (Set)- 0
<>If Var(0059:SZSekunden) 60
<>Change Var: Var[0060:SZMinuten] (+)- 1
<>Change Var: Var[0059:SZSekunden] (Set)- 0
<>If Var(0060:SZMinuten) 60
<>Change Var: Var[0061:SZStunden] (+)- 1
<>Change Var: Var[0060:SZMinuten] (Set)- 0
<>
:End Case
<>
:End Case
<>
:End Case
<>
:End Case
<>


Wenn Schalter 0065 (Spielzeit anhalten) AN ist, wird die Spielzeit nicht gestoppt. Ist er hingegen AUS, wird dieser Parallel Process 60 Mal in der Sekunde wiederholt - Jedesmal wird der Wert der Variable 0058 (SZTick) um 1 erhöht. Ist der Wert 60, wird er auf 0 zurückgesetzt, die Variable 0059(SZSekunden) wird aber um 1 erhöht. Das geschieht so oft, bis der Wert von SZSekunden 60 ist. Dann wird der Wert wieder auf 0 gesetzt und es wird 1 zur Variable 0060(SZMinuten) hinzugefügt. Nach einer Stunde ist dann der Wert von SZMinuten auf 60 gestiegen - Es wird der Variable 0061 (SZStunden) 1 hinzugefügt, SZMinuten wird wieder auf Null gesetzt. Zur Abfrage der Spielzeit eignet sich am besten eine normale Message mit \V[xxxx]. Wenn die Spielzeit im Format hh:mm:ss dargestellt wird, sollte man aber mit Fork Conditions verhindern, dass Zeiten wie '2:0:34' ausgegeben werden (z.B.: Wenn SZMinuten < 10, führende 0 im Text der Message anzeigen).
Es ist unmöglich, so lange zu spielen, wie dieses Skript stoppen kann, also ist es in jeder Situation zuverlässig (immerhin, dieses Skript müsste 114 Jahre, 56 Tage und 15 Stunden laufen, bevor die Variablen überfüllt sind)

PS: Ich hab' keine Probleme mit diesem Skript, aber es könnte sein, dass es auf langsamen PC's nicht läuft (bei so etwas kann man ja keinen Wait einfügen, wenn man genau messen will und das Skript so einfach wie möglich halten möchte.

Dhan
06.08.2004, 17:32
Öhm... eine Zeitzählung würd ich jetzt einfach mit Wait 10 machen, wozu genauer als Sekunden?

Außerdem, eine solche Anzeige wäre alles andere als genau, wenn ich mich recht entsinne, müsste die Wiederhohlrate der PPs von der Framerate abhängig sein, d.h., wenn man einen langsamen Prozessor hat, verginge die Spielzeit langsamer (habs aber net getestet ^^)

Helli
06.08.2004, 19:34
Original geschrieben von Dhan
Öhm... eine Zeitzählung würd ich jetzt einfach mit Wait 10 machen, wozu genauer als Sekunden?

ähm... da bin ich auch erst jetzt draufgekommen... :D
Aber die PPs werden auf jedem Prozessor gleich oft pro Sekunde (nämlich genau 60 Mal) wiederholt.

Wieder mal typisch, ich mach's aber auch IMMER kompliziert, wo's auch einfacher geht. >:(

Aber trotzdem, manchmal kann eine genaue Zeitzählung von Vorteil sein, z.B. für Minigames, in denen es um Geschwindigkeit oder Geschicklichkeit geht...

Mit dieser Funktion lässt sich auch eine eigene 'Wait'-Funktion bauen, durch die auch variable Wait-Zeiten mögich sind (auch im 0.0-Wait-Bereich).
Über deren Nutzen muss man aber erst nachdenken...

Dhan
08.08.2004, 07:54
Soa, hab was durch Zufall rausgefunden:

ich war gerade dabei, jemandem zu helfen, der ein Sichtlinien Script braucht (Sichtlinie: wenn man in vertikaler oder horizontaler Linie zu einem Event steht, passiert was) und hab, weil dat bei ihm net geklappt hatte, det mal selbst mit meinem Script versucht (da hats natürlich geklappt ^^) und als passierende Sache hab ich gemacht, dass das Event 0.1s lang einen Flash abbekommt (in einem PP sich wiederholend, mit 0,0s wait Verzögerung)

steht man jetzt neben dem PP, so flasht er regelmäßig, ganz klar
wenn man nun aber gegen das Event läuft und die Lauftaste gedrückt hält... verdoppelt er die Flashrate! Die anderen Events laufen in der Zeit genauso schnell wie zuvor, nur dieser eine Event scheint beeinflusst
morgen probier ich dasselbe mal mit einem Timer aus...
weiß net, obs nützlich ist, aber kurios isses auf alle Fälle ^^

Kyuu
08.08.2004, 13:17
Original geschrieben von Manuel
Dem muss ich zumindest teilweise widersprechen, aus eigener Erfahrung. Ich verdeutliche mal das in einem Beispiel:
Der eine oder andere kennt mein 4Gewinnt-Spiel. Als Feature habe ich eine Kontrolle eingebaut, die überprüft, ob ein Spieler gewonnen hat. Die Event-Seite sah ursprünglich so aus:



<> If Switch(0001:Rot 1x1) is ON
<> If Switch(0002:Rot 2x1) is ON
<> If Switch(0003:Rot 3x1) is ON
<> If Switch(0004:Rot 3x1) is ON
<> Switch (gewonnen) = ON
<>
:End Case
<>
:End Case
<>
:End Case
<>
:Else Case
<> If Switch(0005:Rot 1x2) is ON
[...]


Ich habe jede einzelne Switch überprüft, falls die erste IF-Klausel nicht zutrifft, wird automatisch das Nächste untersucht (Der Eventcode ist in Wirklichkeit mehrere hundert Zeilen lang, ich habe es nur ein wenig übersichtlicher gestaltet). Obwohl theoretisch alle Forks übersrpungen werden, wenn auch nur ein einziges Mal vier genannte Switches auf ON sind, brauchte der Maker doch zwischen 5 und 6 Sekunden, um die Eventseite zeigen zu können. Selbst beim Editieren brauchte der Maker abermals ein paar Sekunden, um die komplette Seite neu laden zu können.

Da mich das ziemlich genervt hat, habe ich dann die andere Möglichkeit benutzt, in dem nicht alles in einer Fork mit ELSE zusammenhängt:



<> If Switch(0001:Rot 1x1) is ON
<> If Switch(0002:Rot 2x1) is ON
<> If Switch(0003:Rot 3x1) is ON
<> If Switch(0004:Rot 3x1) is ON
<> Switch (gewonnen) = ON
<>
:End Case
<>
:End Case
<>
:End Case
<>
:End Case
<> If Switch(0005:Rot 1x2) is ON
[...]


Und so weiter. Ich habe also nicht alle Überprüfungen knallhart in einer einzigen Fork gebracht und diese dann mit ELSE fortgesetzt, sondern erst nach und nach. Wären jetzt vier genannte Switches alle auf ON gesetzt, werden immer noch die restlichen Switches geprüft, obwohl das gar nicht mehr nötig wäre. Aber - und das ist ja das Seltsame dabei - kurioserweise braucht der Maker nun nimmer 5 bis 6 Sekunden, um die Eventseite anzeigen zu können.

Deshalb sage ich als Fazit: Die erstere Methode KANN(!) im Spiel schneller verarbeitet werden als die zweite, allerdings ist die zweite Methode IM MAKER(!) schneller als die erste.

Wer mir nicht glaubt und einen etwas älteren Rechner hat, kann das gerne nachprüfen, wenn er will: Download in meiner Signatur, nach jeder ersten Fork ein "ELSE" reintun und alles ins "ELSE"-Teil stopfen usw. Dann wird der Maker wieder langsamer.

Öh? O_o

Imo hat die Dauer für das Anzeigen der Eventseite nichts mit der eigentlichen Verarbeitung des Eventcodes im Spiel zu tun...

Man kann die unerwünscht lange Ladezeit aber durchaus umgehen, indem man ganz am Anfang der Eventseite z.B. einen kurzen Comment eingibt.

Manuel
09.08.2004, 18:20
Original geschrieben von Chingachgook
Öh? O_o

Imo hat die Dauer für das Anzeigen der Eventseite nichts mit der eigentlichen Verarbeitung des Eventcodes im Spiel zu tun...

Man kann die unerwünscht lange Ladezeit aber durchaus umgehen, indem man ganz am Anfang der Eventseite z.B. einen kurzen Comment eingibt. Ich sagte ja, dass die Methode im Maker langsamer ist, ob sie das im Spiel ist, weiß ich selber nicht, das müsste ich mal ausprobieren...

Wegen Comments: Huh O_O! Muss ich mal ausprobieren, das wär' mir neu...

Blackadder
03.09.2004, 14:25
setzt man die position eines "vehicle" fest, beginnt das spiel und speichert es ab, sollte man eines bedenken:
wenn man im maker die position des vehicles nun verändert, aber das spiel nicht von neuem beginnt, sondern das alte lädt, dann ich das vehicle verschwunden. weder auf der alten noch auf der neuen position zu orten.

Gekiganger
01.01.2005, 03:37
Division by the zero / Division durch 0

Lange war es für mich ein Mysterium, doch nun ist mir endlich ein einfach gestricktes Projekt in die Finger gekommen, welches diesen Fehler verursachte. In einem eigens erstellten Projekt konnte ich diesen Fehler erstmals absichtlich und unendlich oft reproduzieren.
Die Ursache des Problems liegt, wie ich schon einige Zeit vermutet habe, an einem internen Fehler des Makers bei der Pictureverarbeitung.

Folgende Bedingungen rufen diesen hervor:

Die erste generelle Screenbewegung (sprich normales Movement oder Pan Screen) nach links oder nach oben, wenn zuvor ein Show Picture oder Move Picture stattgefunden hat, bei dem die Magnification (Bildgröße) auf 0% gestellt wurde.
.
Die erste generelle Screenbewegung nach links, wenn zuvor ein Show Picture oder Move Picture stattgefunden hat, bei dem die Magnification auf 1% gestellt wurde.


Screenbewegungen in eine andere, den beiden genannten Punkten entgegengesetzte Richtung, heben dieses Phänomen auf, und zwar solange, bis man die selbe Anzahl an Feldern, die man in die entgegengesetzte Richtung gelaufen ist, wieder zurück läuft und ein zusätzliches Feld weiter geht, dann kommt es erneut zu dem Fehler.
Teleports auf eine andere Map heben es ebenfalls auf.
Vorsicht, das Phänomen wird auch beim speichern übernommen!


Es könnte natürlich noch andere Situationen geben, die diesen Fehler hervorrufen, doch zumindest ein erster Anhaltspunkt wurde gesetzt.

Janos_Audr0n
17.01.2005, 15:49
:confused: :confused: :confused: :confused: :confused:

kann mir einer vobn euch sagen wie das KS des Makers 2000 berechnet wird? ich werd aus den Infos der Hilfe-Datei nich schlau... :(

:confused: :confused: :confused: :confused: :confused:

Sirius
17.01.2005, 16:04
Vielleicht wurde es schon gepostet,aber jene Paralell Process,die als erstes erstellt werden,laufen auch von allen als erstes ab.
Zum ausprobieren: 10Events erstellen,alle Paralell Process definieren und jeweils die Zahlen 1-10 in einer Message durchnummerieren.Es wird zuerst
Message: 1,dann 2,dann 3,... erscheinen.Die Namen der Events spielen an dieser stelle keine Rolle.

Gekiganger
17.01.2005, 18:46
Ich glaube nicht dass dies in einem Q&A Thread enden sollte..

@ Janos_Audr0n
Falls du die Formeln meinst, die stehn doch auf der ersten Seite hier, ausserdem kannste hier (http://forum.rpg-ring.com/forum/showthread.php?t=2139&page=1&pp=20) noch ein paar finden.

@ Sirius
Jop, auch auf der ersten Seite.
Eigentlich ja logisch, wär ja auch strange wenn der Maker sie per Zufallsgenerator in den RAM laden würde. :D

Mayaki
17.01.2005, 18:59
Was ich komischerweise noch nie (oder fast nie) gesehen habe ist das man Sounds mischt! Also man Spielt zwei Sounds gleichzeitig ab und das ergibt meisst einen gewissen ... Sound xD
Naja nun zu dem was ich eigentlich sagen wollte:

Wusstet ihr das man maximal 2 Tasten aufeinmal drücken kann um diese dann abzufragen?

Wusstet ihr das der Maker in Parrallelen Prozessen ohne wait 0.0 sec (o.ä.)
alles auf einmal berrechnet und deswegen das Spiel lahmlegt?

Wusstet ihr das man mit "Clear Timer" nicht nur Timer Cleart sondern auch Events löscht (solange man auf der Map ist)!

Okay das meiste wusstet ihr wahrscheinlich x.x
Mfg
Mayaki

Geiu
17.01.2005, 19:23
Wusstet ihr das der Maker in Parrallelen Prozessen ohne wait 0.0 sec (o.ä.)
alles auf einmal berrechnet und deswegen das Spiel lahmlegt?
Das ist net zwingend, ich hab früher als ich noch n00b war nie ein Wait reingemacht und es hat meistens nicht geruckelt und wenn dann nur minimal.

Wusstet ihr das man mit "Clear Timer" nicht nur Timer Cleart sondern auch Events löscht (solange man auf der Map ist)! Das liegt daran dass Clear Timer ein Übersetzungsfehler ist. In der Hilfedatei wird es als "Temp Delete Event" aufgeführt und in Gnafs Patch heißts auch Delete Event.

Zu Clear Timer weiß ich aber auch noch was: Wenn man Move Events auf einen Event ausführt und ihn während der Ausführung per Clear Timer temporär löscht, wird jedes Wait Until Moved danach (solange man die Map nicht verlässt) für eine unendliche Wartezeit sorgen.
Ob das jemals nützlich sein wird bezweifel ich allerdings XD

Don_Alexandro
23.01.2005, 15:58
Sorry, falls es die Frage schon gab, aber es ist wichtig und passt hier hin:

Wie lange dauern Battle anminatins? Die längste dauert 9.9, aber was ist das in sec ???

Bitte um Antwort!
Don

Geiu
23.01.2005, 16:43
Wie lange dauern Battle anminatins? Die längste dauert 9.9, aber was ist das in sec ???
Steht doch gleich auf der ersten Seite:


Was ich eigentlich schon seit längerer Zeit weiß, was ich aber hier noch mal passend erwähnen will ist das Verhältnis von Battle-Animation-Frames zur Wait-Zeit

Es ist (so ziemlich GENAU):
3 Frames pro 0,1 Sekunde "Wait"-Zeit
(eine Battle-Animation kann so maximal 3,3 Sekunden lang sein...)

Schattenläufer
02.03.2005, 13:46
Tschuldigung, ich bin gerade absolut verwirrt.
Ich wollte ein Event erstellen, das genau so schnell läuft wie mein Held... also habe ich nach dem Move Event 1x 0.1 und 2x 0.0 sec Wait eingesetzt.

Dabei musste ich feststellen, dass das Event viel langsamer als der Held war. Ich hab jetzt mal die Wait-Zeit halbiert, also 4x 0.0 Wait... dann hat es gestimmt.

Stimmt die Tabelle auf der ersten Seite nicht mehr? Mit der hab ich viele Jahre lang gut gearbeitet, und auf einmal...

Gekiganger
03.03.2005, 08:07
Das liegt daran, dass am Ende eines PP ein automatischer 0,0 Sekunden Wait gesetzt wird.
Entweder lässt du also einen 0,0s Wait weg, oder du setzt alles in einen Cycle.

Schattenläufer
03.03.2005, 14:08
Na das kann es ja nicht sein, immerhin ist es wirklich genau die Hälfte, so als sei der Held mit einem Mal doppelt so schnell geworden...
aber gut zu wissen, ein automatisches 0,0 sec Wait am Ende jedes PP? Und ich dachte immer ohne Wait am Ende würde das Ganze fehlerhaft werden.

Mayaki
02.05.2005, 15:30
Ich weis nicht ob ichs hier reinschreiben soll aber ich kann den Post notfalls ja noch löschn...

Ich habe in einem Event (zum aufrufen des Menüs) eine Forkcondition gemacht in der ein Switch abgefragt wird , (KS On)jedoch kann ich so im KS immernoch das MEnü aufrufen und muss erst den Switch abstellen der direkt mit dem Commonevent verbunden ist ausstellen (also bei Commonevten das Häckchen).
Woran liegt das?
Übersieht/springt der maker dieses einfach? Und wie kann ich das ändern?
Mfg
Mayaki

p.S. @Ultimaman:
Ne das passiert grundlegend immer, auch wenn ichs bei einem anderen Projekt versuche und der Code selbst ist zu Simpel als das dort ein bug stecken könnte...

Kyuu
02.05.2005, 20:47
Ich weis nicht ob ichs hier reinschreiben soll aber ich kann den Post notfalls ja noch löschn...

Ich habe in einem Event (zum aufrufen des Menüs) eine Forkcondition gemacht in der ein Switch abgefragt wird , (KS On)jedoch kann ich so im KS immernoch das MEnü aufrufen und muss erst den Switch abstellen der direkt mit dem Commonevent verbunden ist ausstellen (also bei Commonevten das Häckchen).
Woran liegt das?
Übersieht/springt der maker dieses einfach? Und wie kann ich das ändern?
Mfg
Mayaki

Es wird nichts übersprungen/übersehen, zumindest nicht unbeabsichtigt. o.o
Das heißt, du hast in deinem Event/Skript einen Wurm drin. Am besten du überprüfst vor dem Aufrufen des Menüs im und außerhalb des Kampfsystems per F9 ob der besagte Switch aktiviert ist, oder nicht. Eine Fehleranalyse halt. Dann kannst du auch gezielt nach dem fehlerhaften Event/Code suchen, sofern du deine Skriptereien noch überblickst.

Gekiganger
03.05.2005, 17:58
Ich finde in dem Thread sollten auch weiterhin Eigenheiten und Macken des Makers sowie Trix zur Umgehung selbiger gepostet werden, anstatt Fragen zur Richtigkeit seines eigenen Codes zu stellen. :>

DR_Zeph
04.06.2005, 13:28
so, hab mich mal durchgerungen auch mal hier was zu posten



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

man kann sich nicht bewegen


das Event läuft im Gegenzug zu PP schneller, da keine 0,0 sek Waits am Ende des Codes vom Maker automatisch gesetzt werden


ehm, habt ihr gewußt,

das man ein Call Event nicht mit einem Clear Timer vorzeitig beenden kann,
das man ein Call Event mit dem Befehl call event vorzeitig beenden kann, wenn man ein anderes event aufruft,
das man das Game zum absturz bringt, wenn man in einem Call Event den Befehl Call Event packt, und das Call Event aufruft,
wenn man aber ein 0,0 sek wait mit in das ganze reinpackt, undzwar vor dem Call Event, das das Event called, der maker das Call Event als Autostart verarbeitet, mit eben den AutoStart Funktionen


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/cce5f46befc92f9cd2bd05e65b007b98.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/ffc9a8f78850c4760bdd20df4e0ca33c.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,

Gekiganger
04.06.2005, 14:50
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.:

Hm was soll ich dazu sagen, das ist schlicht und ergreifend nicht wahr.
Ein Show Picture in einem Cycle/ einer Labelschleife lässt das Spiel gefrieren aber das wars auch schon mit der "Ähnlichkeit zum Autostart".
Unter welchen Bedingungen hast du das denn getestet?


das man ein Call Event nicht mit einem Clear Timer vorzeitig beenden kann,
Was aber durchaus logisch ist, denn im Gegensatz zu einem normal gestarteten Event besitzt ein Call Event keine "physiche Gestalt", da es sich lediglich um eine Kopie des Codes des Events (auf der gecallten Eventseite) handelt, ohne die eventspezifischen (physischen) Eigenschaften wie Grafik, Start Condition etc.


das man ein Call Event mit dem Befehl call event vorzeitig beenden kann, wenn man ein anderes event aufruft,
Da musst du vorsichtig sein.
Call Event bedeutet nicht, "rufe ein neues Event parallel auf und setze gleichzeitig den Code fort", sondern "rufe ein neues Event auf und warte. bis dieses Event zum Ende gekommen ist".
Es entsteht also der Eindruck, das jetzige Event wäre zuende, dabei wird nur gewartet bis das neue zuende ist. Befinden sich in dem neuen Event ebenfalls Calls, kann es durchaus seine Zeit dauern, bis das erste Event zuende geführt wird, da jedes einzelne Event auf seine "Kindevents" wartet.


das man das Game zum absturz bringt, wenn man in einem Call Event den Befehl Call Event packt, und das Call Event aufruft,
Ganz so tragisch ist es glücklicherweise nicht. Der Maker erlaubt Aufrufketten (bzw. Rekursionen) bis zu einer Anzahl von 1000. Erst beim 1001sten neuen Aufruf in dieser Kette kommt es zum Absturz.
Früher wurde ein Event, welches sich selbst mit Call Event aufruft, als Parallel Process Ersatz missbraucht. Doch das ist es nicht. Bei Call Event wird eine Kopie des aufgerufenen Events im Speicher erzeugt. Das aufrufende Event wartet solange, bis das neue zuende ist. Doch dieses erzeugt selbst immer neue Events.
Bei 1000 Aufrufen stehen also 1000 Events im Speicher, jedes wartet bis sein Kindevent zu ende ist. Von daher hat diese Begrenzung durchaus seinen Sinn.


wenn man aber ein 0,0 sek wait mit in das ganze reinpackt, undzwar vor dem Call Event, das das Event called, der maker das Call Event als Autostart verarbeitet, mit eben den AutoStart Funktionen
Wie gesagt, da Call Events nicht "physikalisch" existieren, sondern nur den virtuellen Code einer Eventseite repräsentieren, besitzen sie auch keine Start Condition. Vermutlich hast du das Event aus einem Push Key, Autostart oder ähnlichen Event heraus gestartet. Da dieses natürlich wartet, bis das gecallte Event zuende ist, gelten auch die ganze Zeit über dessen Conditions, sprich, man kann sich nicht bewegen.
Ohne den 0,0s Wait hast du es wahrscheinlich nur nicht bemerkt, da das Event zu schnell wieder zuende war.


Zu dem letzten Quote kann ich jetzt nichts vernünftiges sagen, ich verstehe nicht genau worauf du damit hinaus willst.
Klar braucht ein Event für einen Durchlauf länger, sobald es mehr Anweisungen verarbeiten muss.
Trotzdem verstehe ich nicht, inwiefern das zweite Event das erste beeinflussen soll, schaltet es doch nur den Switch nach 0,1s wieder aus, nachdem das erste Event bereits 4500 Durchläufe in derselben Zeit hatte.
Zudem verstehe ich nicht, ob das zweite Event nun in einem PP oder AS laufen soll. Ein AS kann es ja nicht sein, denn es können keine 2 gleichzeitig laufen, es wird immer der zuerst behandelte AS ausgeführt (Event mit der niedrigeren ID) und der zweite ignoriert.

DR_Zeph
04.06.2005, 18:49
nya^^, ups, das erste hatte ich mal in meiner pixel lauf engine bemerkt, die wohl irgendwie meine rechnerleistung ausschöpfte, und ich mich deshalb net mehr bewegen konnte, *verneig*
k, die anderen punkte auch net richtig durchdacht, ehm, zum letzen punkt,
benutze das ganze wie gesagt, in einem atb für ein KS, das ganze läuft durch das zweite event bei mir, was ich erst nur für testzwecke, wieviele durchläufe das event hat, gemacht habe, um einiges flüssiger, was wahrscheinlich durch die schaltung der events kommt, das erste, das mit den vielen forks, läuft in einem PP event, welches in einem cycle geschaltet ist, das zweite in einem einfachen pp event, was bekanntlich bei einem durchlauf am ende einen wait von 0,0 setzt

Lachsen
04.06.2005, 20:33
Was aber durchaus logisch ist, denn im Gegensatz zu einem normal gestarteten Event besitzt ein Call Event keine "physiche Gestalt", da es sich lediglich um eine Kopie des Codes des Events (auf der gecallten Eventseite) handelt, ohne die eventspezifischen (physischen) Eigenschaften wie Grafik, Start Condition etc.
Ich denke nicht, dass man das so einfach stehen lassen kann.
Siehe Thread:

... dass sich ein Move-Event, das auf "this Event" steht und in einem Call-Event zu finden ist, sich auf das Event bezieht, das gecallt wird? (also macht NIE Move-Event "this Event" in einem Common-.Event ^^)

Das heisst: Alle Befehle, die sich auf "this Event" Beziehen, gehen (LEIDER >_< und gleichzeitig ZUM GLÜCK XD... wüsste nicht genau was besser wäre) nicht auf das Event, dass das Skript gecallt hat, sondern auf das Event, das gecallt wurde.
Da wären: Move Events, Coordinaten nehmen, Set Event Place... und ALL das zeug.
Das gleiche gilt (eigentlich o_ô) auch für Clear Timer.
Wenn man ein Event callt und in dem Skript dieses Events Clear Timer anwendet, verschwindet das gecallte Event. (ich denke das ganze Skript von diesem Event wir dann auch übersprungen und das Programm geht direkt zum Event zurück, dass gecallt hat)

Von daher kann man leider nicht so direkt davon sprechen, dass das Skript einfach in das Event, dass den Call-Event Befehl verwendet, rein kopiert wird...

Ich glaube was hier das Problem ist, ist der schwamminge Begriff "Call-Event". Ist vielleicht hier an einer oder anderer Stelle ehr "Common Event" gemeint? Denn da hat "Clear Timer" wirklich keine auswirkung (wie ich schon in einem vorherigen Post geschrieben habe)

"Call Event" ist für mich einfach Event, das gecallt wurde. Das kann auch eine Event-Seite sein von einem Map-Event.

Soviel von meiner Seite

C ya

Lachsen

Gekiganger
05.06.2005, 01:59
@ Lachsen
Ja du hast recht. Das habe ich dabei garnicht beachtet, war dumm von mir.
Natürlich löscht sich auch ein aufgerufenes Event durch Clear Timer selbst, allerdings läuft der Code bis zum Ende hin weiter, verhält sich also wie die Switches die auf ne andere Eventseite Schalten.
Da ich es allerdings ohne Eventgrafik getestet hatte dachte ich, das Event wäre noch existent und kam deshalb zu dem falschen Schluss, da der Eventcode auch nach dem Clear Timer ja trotzdem noch erreichbar ist, es wird praktisch nur die physische Form zerstört.
Insofern stimmt es dann wieder was DR_Zeph gesagt hat, man kann das Event nicht vorzeitig beenden, das bezieht sich dann aber auf sämtliche und nicht nur auf gecallte, mit außname der (mal wieder) Paralel Process Events.

Nunja, jedenfalls sollte man, wie ich bemerkt habe, auf ein durch Clear Timer gelöschtes Event kein Move Event mit Move All machen, sonst könnte man sein blaues Wunder erleben.^^'


Ach BTW, ich meinte nicht, dass der Code aufgerufener Events in das aufrufende Event kopiert wird und sich Befehle mit this Zeigern so auf das aufrufende Event beziehen, ich meite damit dass der Code als eigenständige Einheit in den Speicher geladen wird, ohne die "physischen" Eigenschaften (wie ich sie nannte und was ja letztendlich nicht ganz korrekt war) des aufgerufenen Events.

Mike
05.06.2005, 10:57
Wow, ich hab diesen Tread jetzt zum ersten mal gesehen, und bin echt überrascht, dass es noch so manche funktionen gibt, die ich nicht gekannt habe. (Auch wenn ich von vielem schon gewusst habe). Also die Idee für einen solchen Tread ist echt nicht schlecht, und ich werde das ganze weiterverfolgen.

LG Henry

Darktraveler
05.06.2005, 18:37
Falls es für irgendjemanden interessant sein sollte ^^ meine ich zwei Formeln des SKS durch mehrfaches Ausprobieren etwa eingegrenzt zu haben...

1) Trefferwahrscheinlichkeit
Ich habe einige Versuche gemacht... unter anderem den Versuch Angreifer: 100 AGI und Verteidiger: 999 AGI...
Wenn die Trefferwahrscheinlichkeit einfach nur nach dem Verhältnisprinzip gehen würde.... müsste ja der Verteidiger immer treffen... (stimmt... zumindest in 99% der Fälle) und der Angreifer nur 1 von 10 mal....... Zu meiner Überraschung war es jedoch weitaus häufiger :) und ich glaube so viel.... Pech (oder ehe rGlück) habe ich nicht, dass ich soooooo falsch liege......

Da allgemein die Abweichungen nicht allzugroß sind (einer der halb so schnell is wie der gegner trifft aber nicht nur halb so oft) habe ich nach einer Formel gesucht die dies beinhaltet und trotzdem bei gleicher Geschwindigkeit und gleicher Grund-Trefferwahrscheinlichkeit (das habe ich mal als gegeben vorraus gesetzt) beiden auch die selbe Trefferwahrscheinlichkeit gibt.....

Naja lange Rede kurzer Sinn... meine These ist dass die Trefferwahrscheinlichkeitsformel schlicht und ergreifend:

Grundtrefferwahrscheinlichkeit * (Agilität Angreifer / Agilität Verteidiger)^1/2

Sozusagen die Grundtrefferwahrscheinlichkeit mal der Wurzel (falls jemandem nicht geläufig ist was hoch 1/2 zu sagen hat) von der Angreiferagilität durch die Verteidigeragilität......

Grundtrefferwahrscheinlichkeit ist in diesem Fall entweder die von der Waffe in der Item-Database festgelegte Wahrscheinlichkeit bzw. bei Monstern und unbewaffneten Helden 90% meines Wissens....

Ich hoffe IRGENDJEMAND kann mit dem was ich gerade palawert habe etwas anfangen ^^



achja...

2) Zugreihenfolge

Dieses Problem ist mir beim Spielen von Vampires Dawn aufgefallen o_O..... Größte Agilität ist nicht gleich erster Zug.... ^^ Alain war eindeutig die schnellste (also von der reinen Zahl her)... aber Asgar und Valnar kamen dennoch manchmal vor ihr zum Zug (dabei Valnar öfter da er schneller als Asgar war).....

Also habe ich es gleich ausprobiert.... und verschiedene Zufallsfaktoren an die Agilitäten der drei Charaktere in einem gesonderten SPiel gekoppelt und die Testergebnisse dann mit meinen "Alltagserfahrungen" mit den dreien verglichen...... Relativ endgültige Sicherheit bekam ich dann jedoch erst bei einem Test mit Grenzwerten, die dann entschieden ob sich jemals die Zugreihen folge zwischen den charakteren veränderte oder nur sehr selten bzw überhaupt.....

Dabei ist dann folgende "Formel" herumgekommen:

Vor jedem Zug wird folgende Rechnung mit der Agilität eines jeden Kampfteilnehmers vorgenommen:

Agilität * [Eine zufällige Zahl zwischen 0,9 und 1,1]

DANN wird verglichen und dementsprechend die Zugreihenfolge festgelegt... Bei einem Gleichstand würde ich spontan tippen dass eine 50:50 Chance besteht dass dann der eine... oder halt der andere bevorzugt wird.. Da man aber als Großteil der Makerschaft die Makerinternen Zahlen ohnehin nciht zu Gesicht bekommt, wird man dies als Benutzer eh nicht merken o_O


Das wars soweit von mir... probiert es ruhig aus..... berichtigt mich ^^ es hilft ja allen (wer auch immer das gebrauchen kann)

Dhan
05.06.2005, 19:13
Das heisst: Alle Befehle, die sich auf "this Event" Beziehen, gehen (LEIDER >_< und gleichzeitig ZUM GLÜCK XD... wüsste nicht genau was besser wäre)
Irgendwas übersehe ich, warum "zum Glück"? Was spricht den dafür?

@Traveler: Net übel net übel, hat sicher viel Zeit gekostet

Lachsen
06.06.2005, 00:41
Irgendwas übersehe ich, warum "zum Glück"? Was spricht den dafür?
Och, da gibt es EINIGES.
Ehrlich gesagt finde ich es, wenn ich es mir recht überlege, doch um einiges besser, dass es so ist.

In folgenden Fällen ist es nützlich:
1. In einem AKS kann man, um die Coordinaten eines Events zu bekommen einfach eine Event-Seite von diesem Event callen, indem zwei Change Variable Befehle sind die den Variablen Coordinate-X und Coordiante-Y die jeweiligen Coordinaten von "this Event" übergeben.
Wann immer man nun die Coordinaten von diesem Event brauch: man muss es nur diese Seite callen. Das macht das Coordinaten-Nehmen in einiger Hinsicht flexibler.

Denn: Während Change-Variable Befehle, die die Coordinaten von einem Event nehmen, immer ein bestimmtes festes Event gewählt haben müssen, kann man bei Call-Event eine Variable angeben, die bestimmt, welches Event gecallt wird. ^^

2. Auf die Gleiche Methode kann man Event leichter von einem anderen "steuern". Angenommen die BEwegungs-KI von allen Gegnern würd über ein Common-Event geregelt (das hat ja viele Vorteile), spätestens wenn es darum geht, die Events der Gegner zu BEwegen, wird es kompliziert, denn die Gegner-Events können von Map zu Map andere Event-IDs haben.
Hier kann man auch diese Methode anwenden:
Man gibt jedem Gegner-Event eine Event-Seite, die nur zum callen bestimmt ist und die alle Move-Events enthält, die nötig sind, um dieses Event zu Bewegen (natürlich gehen hier alle auf "this Event").
Wenn man nun über das Common-Event ausgerechnet hat, welchen Weg das Event geht, kann man nun das Event callen um es zu bewegen und wie gesagt:
Im Gegensatz zu MoveEvents muss man bei CallEvent keine tausend Forks aufreihen (für alle möglichen Event-IDs), weil man eine Variable angeben kann, die die Event-ID des Gegeners enthält, wodurch dann automatisch das richtige Event gecallt wird. ^^

3. Noch ne Sache, die ich in Velsarbor verwende: Man kann in dem Spiel Büsche zerhacken, die sogar nach einem Map-wechsel (wenn ein Kampf kommt oder man das Menu aufruft) immernoch weg sind.
Und das ganze funktioniert ganz ohne Switches. Das Skript ist so erstellt, das ich nur ein festes Busch-Event kopieren muss, ohne es anzupassen.

Das ganze funktioniert so:
Wenn ein Busch zerstört wird, wird die Event-ID dieses Busches in einer Variablen-Liste eingetragen (ich glaube bis zu 50 Event-IDs können dort eingespeichert werden, also bis zu 50 Büsche können pro Map zerstört werden).
Wenn man nun in einem Kampf kommt oder das Menu aufruft und daraufhin wieder zurück zur Map gelangt, startet automatisch ein Skript, dass die Liste der Event-IDs der Büsche durchgeht. Für jede ID die in dieser Liste gefunden wird, wird folgendes gemacht:
Das Event, dass diese ID hat, wird gecallt, undzwar die erste Seite.
Es handelt sich dabei natürlich um ein Busch Event.
Während die 2. Seite eines Busch-Events das Skript enthält, bei dem der Held es kaputt haut, enthält die erste Seite nur einen einzigen Befehl:
"Clear Timer"
Sprich: Das Event wird gelöscht, wenn diese Seite gecallt wird.
Und somit ist das Event auch weiterhin verschwunden, obwohl die Map durch Kampf/Menu gewechselt wurde. ^^

(Achja: Wenn man die Map verlässt, also zum nächsten Map-Abschnitt wechselt, werden natürlich alle IDs aus der Busch-Zerstört-ID-Liste gelöscht.)

... naja es gibt noch viele andere Sachen, wo ich es verwende.
Beispielweise werden auch alle "Schaden-Einstecken"-Animationen im Vsb-KS per Move-Event geregelt undzwar auch hier, indem man ein Event callt das sich im Gegner-Event selber befindet.

Naja, also mir ist das doch schon ganz lieb so o_ô

Ne, was aber WIRKLICH ultimativ wäre:
Alle Move-Events in COMMON-EVENTs die als Ziel "this Event" haben, gehen auf das letzte Map-Event, das in der Call-Event kette eingebunden ist @_@
Das wäre genial @_@

Aber nya... Wäre alles nicht nötig, könnte man überall Variablen angeben, wo nach Event-IDs oder sonst was gefragt wird, was eine ID oder Zahl hat (Picture Nummer ;___________________;)

@Darktraveler
Trefferwahrscheinlichkeits-Rechnung mit ner Wurzelfunktion? XD Oh weia...
Wieso kann der Maker die Wurzelfunktion anwenden, stellt sie aber nicht in dem Change-Variablen-Operatoren bereit!? XO
Ansonsten nette Untersuchungen zum Standard KS ^^
Es ist leider nur wirklich sehr schwer im Bereich von Zufalls-Berechnungen mit empirischen Messungen was exaktes herauszufinden o_ô

Soviel von meiner Seite

C ya

Lachsen

Darktraveler
06.06.2005, 06:53
Naja :) zumindestens würde es am allerehesten an die aus den Testreihen resultierenden Trefferwahrscheinlichkeiten herankommen.... aber wie gesagt ^^ aus meiner Sicht... vielleicht bin ich ja nen Pechvogel oder Glückspilz oO und bild mir diese Formeln nur ein =) wobei es natürlich sein kann das noch iiiirgendein anderer Faktor mithineinfallen könnte... Dann wäre aber fraglich welcher das noch sein soll.... Ausser Agilität und Grundtrefferwahrscheinlichkeit......

Außerdem schätze ich mal ganz stark dass egal wie hoch die Wahrscheinlichkeit für den schnelleren ist... diese wohl auf 99% oder vielleicht sogar 95% runtergeschraubt wird... denn selbst ein übermächtig schneller Gegner schlägt immer noch EIN oder ZWEI mal in zig dutzend versuchen vorbei....

Daraus lässt sich natürlich der Umkehrschluss ziehen dass auch die untere Grenze auf 1% oder 5% festgelegt ist.... aber wie gesagt ^^ Who knows? Wirklich herausfinden werden wir es ohne Hilfe von Enterbrain wohl nie ^^

Dhan
06.06.2005, 07:16
Na, mit meiner Frage meinte ich, welche Gründe sprechen dafür, dass sich die Call Events NICHT komplett an das Event anbinden, das sie aufruft

Lachsen
07.06.2005, 11:04
@Dhan Genau diese Gründe hab ich doch genannt. Call-Events binden sich nicht an das Event, das sie aufgerufen hat und das sind die Vorteile die daraus folgen...
(das war auch das, was ich mit "Zum Glück" angesprochen habe)

Und Andersrum? Du meinst, wenn Call-Events sich doch an das Event richten, da sie gecallt hat? (was wiederum das war, was ich mit "ist leider nicht so" angesprochen habe)

Man könnte in einem Common-Event alle möglichen Move-Event Befehle einspeichern (die auf "this Event" gehen) die dann von einem existierenden Event gecallt werden, um sich zu bewegen.

Wäre auch wieder für nen AKS sehr praktisch, da man die Bewegungen immernur in dem Common-Event aktualisieren müsste, nicht in jedem einzelnen Gegner Event...
Aber wenn ich es mir recht überlege ist es so wie es ist wohl doch deutlich besser.

C ya

Lachsen

Vannir
18.06.2006, 19:20
lol geil das mit dem wait^^

GFlügel
01.07.2006, 19:47
Noch einmal eine Kleinigkeit zu Standard-KS, die ich schon in einem anderen Thread gepostet habe:

Agility beeinflusst normalerweise auch die Treffsicherheit der Techniken (also senkt oder erhöht die Grundtreffsicherheit, es seidenn sie ist 100% oder 0%).
Wenn allerdings HitChance und/oder MindChance auf 10 steht (Maximum) entfällt dieser Einfluss aus irgendeinem Grund. oO
Ich bin allerdings nicht sicher ob es allgemein einen Zusammenhang zwischen "Höhe von Hit-/MindChance" und "Einfluss von Agility auf Treffsicherheit" gibt, meine Tests sagen dazu eher nein (wobei das auch nur sehr schwer klar zu besitmmen ist imo).
Getestet mit:
- 1 Stufe 1 Helden mit 15Agi
- 2 Gegnern mit 1Agi und 999Agi und 1 in allen anderen werten ausser 9999HP
- 4 Techniken mit 90% "Basic success rate" und 1.HitChance u. MindChance auf 0 2.Mind u. Hit Chance auf 5, 3.HitChance auf 10 u. MindChance auf 0 und 4.HitChance auf 0 u. MindChance auf 10.


Damit wäre wohl auch das Vorurteil aufgehoben, dass Agi allgemein keine Auswirkungen auf die Treffsicherheit von Techniken hat, denn es beeinflusst sehr wohl die "Basic Success rate" die man eingeben kann je nach Differenz zwischen Angreifer und Opfer. Ledigleich bei einer HitChance oder MindChance von 10 hat sie keine Auswirkungen mehr.

Goldenmaumau
29.07.2006, 13:26
Frage:
Was ist schneller: Labels oder Cycles?

Gruß, Maumau

Heaven
30.07.2006, 20:09
Von der Logik her würde ich sagen, es sind Cycles, weil diese darauf ausgelegt sind, sich an einer gespeicherten Stelle zu wiederholen, wobei bei einem Label davon ausgegangen werden kann, das es mehrere gibt. Demnach muss das gewünschte Label erst nochmal im Code gesucht werden, damit von der Position aus wieder begonnen werden kann.

Ist von der Logik her so, denke noch über einen Versuch nach, bei dem man beide wirklich parallel abfragen kann.
Das wirft mir gleich ne neue Frage auf:
Wenn zwei CE als PP durch ein und denselben Switch aktiviert werden, welches CE wird zuerst ausgeführt, bzw beginnt zuerst. Ich tippe auf das vom Zahlenwert niedrigere....

DR_Zeph
30.07.2006, 21:21
Sollte sich doch mittels einer einfachen Variablenzählung möglich sein.

Bei mir kommt nach einem Wait von 0,0 Sekunden folgende Ergebnisse raus:

Cycel 3333 Durchläufe
Label 5000 Durchläufe

Imo sollte damit das Label um ein vielfaches schneller Laufen als wie ein Cycel. Dies könnte vll. daher rühren, das am Ende eines Cycel geprüft werden muss, ob ein Break aufgerufen wurde, erst anschließend wird zum Cycelursprung zurückgesprungen.

Heaven
01.08.2006, 19:32
Was meinst du mit Wait 0.0?
Wie sah den dein Versuch aus.

DR_Zeph
01.08.2006, 21:11
Ein Wait mit 0,0 Sek = 0,01666 Sekunden. Wird vorne im Thread näher erklärt.


Ich habe zwei Events genommen. Das erste hab ich auf PP gestellt. Dortrein kam im Versuch eins, der Cycel aus Labeln, in Versuch 2, der einfache Cycel. In dem jeweiligen "Cycel" hab ich nun noch eine Variablen hochzählen lassen.
Event 2 steht auf Automatisch starten, bekanntlich startet ein solches Event 0,01666 Sekunden später als wie ein Event auf PP. Im Event selber hab ich nun noch meine Zählvariable mittels einer Textbox ausgeben lassen. Rauskamen diese Werte. Kannst es gerne Nachtesten.

Heaven
01.08.2006, 22:55
kann ich nicht weil ich nicht weiß wann und wie es ausgelöst/beendet wird.

DR_Zeph
02.08.2006, 20:54
Hier nochmal abgeändert und bebildert. Eventreihenfolge beachten!


http://img420.imageshack.us/img420/257/event1yv5.png

http://img420.imageshack.us/img420/329/event2sn3.png

Heaven
02.08.2006, 21:15
Ah ok.
Dann isses amtlich xD

Goldenmaumau
05.08.2006, 23:27
Gilt das auch dann, wenn mehrere verschiedene Labels auf ein und derselben
Eventseite vorhanden sind?

@ Zeph: Danke füs Austesten^^


Gruß, Maumau

DR_Zeph
07.08.2006, 22:22
Da ich nicht genau weiß, was du meinst sag ich einfach mal, probier es aus, das Prinzip sollte ja eigentlich leicht verständlich sein.

Neri
14.08.2006, 19:48
Kopiers mal aus dem Quartier heraus, um auch hier einige Meinungen einzufangen ^^"

Neulich hatte ich mich mit dem Gedanken gespielt, ein AKS mithilfe von den Scene X sowie Scene Y-Befehlen zu gestalten, anstatt den eher plumpen X- und Y-Koordinaten. Also hab ich den Maker angeschmissen und etwas herumprobiert.
So fand ich also heraus, dass sich die Scene X beispielsweise beim Stehen auf einem bestimmten Feld zB 48 beträgt, geht man jedoch ein Feld nach rechts, hat die Variable nun den Wert 64. (Ok, nichts besonderes ^^). Nun habe ich jedoch, während des Überschreiten des Helden von einem Feld zum anderen, f9 gedrückt und bemerkt, dass sich die SceneX Variable laufend ändert. Und da dachte ich mir, dass man so ein AKS eventuell etwas flüssiger gestalten könnte.

Mir ist bewusst, dass das oben genannte für die meistennichts neues mehr ist, aber ich kann mich (bis eventuell auf Lachsen's AKS, welches ich aber derzeit nicht mehr habe) an kein wirkliches AKS, dass über Scene X und Y läuft, erinnern. Falls es doch noch weitere Versionen eines solchen AKS' geben sollte, bitte posten ^^

Also, meine Frage. Wäre es nun vorteilhaft, ein solches AKS zu proggen? Ich meine, so kompliziert kann die Trefferabfrage nun auch nicht sein. Eventuell wäre das Ganze ja auch eine (sehr ^^) simple Alternative zum Pixelmovement beim AKS.

Heaven
15.08.2006, 12:07
Machbar, ich denk man gibt einem Gegner seine Scene x/y +/- seiner Charsetbreite, einen Pixel als Schwertspitze nimmt und permanent abfragt ob der Pixel irgendwann im Gegnerscenebereich ist...jo funzt sicher.

Lachsen
15.08.2006, 18:22
Kopiers mal aus dem Quartier heraus, um auch hier einige Meinungen einzufangen ^^"

Neulich hatte ich mich mit dem Gedanken gespielt, ein AKS mithilfe von den Scene X sowie Scene Y-Befehlen zu gestalten, anstatt den eher plumpen X- und Y-Koordinaten. Also hab ich den Maker angeschmissen und etwas herumprobiert.
So fand ich also heraus, dass sich die Scene X beispielsweise beim Stehen auf einem bestimmten Feld zB 48 beträgt, geht man jedoch ein Feld nach rechts, hat die Variable nun den Wert 64. (Ok, nichts besonderes ^^). Nun habe ich jedoch, während des Überschreiten des Helden von einem Feld zum anderen, f9 gedrückt und bemerkt, dass sich die SceneX Variable laufend ändert. Und da dachte ich mir, dass man so ein AKS eventuell etwas flüssiger gestalten könnte.

Mir ist bewusst, dass das oben genannte für die meistennichts neues mehr ist, aber ich kann mich (bis eventuell auf Lachsen's AKS, welches ich aber derzeit nicht mehr habe) an kein wirkliches AKS, dass über Scene X und Y läuft, erinnern. Falls es doch noch weitere Versionen eines solchen AKS' geben sollte, bitte posten ^^

Also, meine Frage. Wäre es nun vorteilhaft, ein solches AKS zu proggen? Ich meine, so kompliziert kann die Trefferabfrage nun auch nicht sein. Eventuell wäre das Ganze ja auch eine (sehr ^^) simple Alternative zum Pixelmovement beim AKS.
Eine solche pixelgenaue Trefferabfrage habe ich bereits vor einigen (3-4) Jahren in meinem AKS für dem RPG-Maker umgesetzt. (zu finden hier auf der Seite unter "Skripten" mit dem Namen "Action-Kampfsystem Deluxe")

Sowas lohnt sich schon, da es um einiges genauer ist als nur eine Abfrage mit Feldcoordinaten. So kann es bei einer Feldcoordinaten-Abfrage zum Beispiel vorkommen, dass eine geschossene Kugel durch den Gegner fliegt ohne ihn zu treffen, da Kugel und Gegner in etwa zum Selben Moment den Platz vertauschten. Sowas kann mit Pixelgenauer Abfrage jedenfalls nicht passieren.

Ein Nachteil so einer Abfrage ist, dass man hier keine Event ID und sonstige Tricks verwenden kann, um Abfrage Rechnungen stark zu vereinfachen.

Was immernoch geht ist eine sehr grobe Treffer Abfrage mit Feldcoordinaten (mittleres Feld und Felder drumherun abfragen) und dann eine Pixelgenaue Abfrage hinter her zur Feinabstimmung. Das ist allerdings recht rechnenaufwändig, denke ich.

Joa, das wars dann an sich auch schon...

C ya

Lachsen

PS: Am simpelsten funktioniert diese Szene-X/Y-Abfrage einfach, indem man die Szene-X und Szene-Y Differenz von Zielbereich-Mitte und potentiellem Opfer nimmt und diese dann quadriert und zusammen addiert. Dann hat man praktisch die Entfernung zum Quadrat, die kleiner als ein bestimmter Wert sein muss, damit es trifft. So kann man gut kreisförmige Trefferbereiche umsetzen...

Krool
18.08.2006, 15:32
Aber wenn ich es mir recht überlege ist es so wie es ist wohl doch deutlich besser.

Warum nicht einfach beides? In dem Call Event ein kästchen mit dem Text Binden an gecalltes Event. dann kann man je nach laune wie mans halt entsprechend braucht umändern. ;)

aber sowas ist wohl ohne eingriffe in die engine nicht möglich.

DR_Zeph
19.08.2006, 23:18
Warum nicht einfach beides? In dem Call Event ein kästchen mit dem Text Binden an gecalltes Event. dann kann man je nach laune wie mans halt entsprechend braucht umändern.
Weil es zum Spielabsturz kommt?


So, wir kennen alle die Sondertasten im Testplay, z.B. Strg oder die Umschalttaste in Messages. Als ich heute in den DebugMode wollte und mich verdrückte, ist mir jedoch eine neue aufgefallen.
Die Taste F10. Sie bricht Events ab, wenn diese laufen, ähnlich dem Befehl "Stop Parallel Events".
Haben wir z.B. folgenden MakerCode,

http://www.250kb.de/u/060819/p/8ceb813e.png


sollte einmalig, die MessageBox angezeigt werden, anschließend sollte der durch Label gestallte Cycel seinen Dienst tun und fortan in einer Schleife das Event quasi "stoppen". Drückt man jedoch nun besagte F10 Taste, erscheint die MessageBox erneut. Das Event wird quasi abgebrochen. Gleiches gilt für einen normalen Cycel. Die F10 Taste muss nach einem Wait aktiviert werden, da der Befehl ansonsten ignoriert wird. MessageBoxen werden übrigens abgebrochen.

Das ganze funktioniert bis auf PP Events bei allen anderen Aktivierungsmöglichkeiten für Events, auch Call Events, sofern der Call in einem Event steht, das nicht mittels PP gestartet wurde.

Inwiefern das nützlich ist, ist fraglich, da ich größtenteils mit einem PP Event und ner menge Call Events arbeite, zum Abbrechen eines Cycels, welcher z.B. Variablen pointert, jedoch definitiv einsetzbar, sofern der Code nicht in bzw. durch ein PP Event ausgeführt wird.

Tiro&Millet
20.08.2006, 00:07
Naja, die F10- Taste ist ja nun nich' wirklich gänzlich unbekannt. das sie laufende Events unterbindet, steht ja sogar in Kurzform in der Hilfedatei:

[F10]: The event processing under execution is ended. Should the game not operate normally because the processing of the event loops infinitely, you should uses this key to free-up the event cycle.
Somit ist die F10-Taste dazu gut, im Testplay Automatische Prozesse zu unterbinden, wenn man z.B. aus Versehen ein sich nicht selbst abschaltendes Zwischenszenen- Event erstellt hat.

Goldenmaumau
24.08.2006, 14:29
Sodele.... hab auch was entdeckt...

Viele dachten es sich vllt. schon, aber ich habs ausgetestet!!!

COMMENTS BREMSEN DEN MAKER AUS!!!

Wie habe ich das herausgefunden?

Mit Zephs Methode...
Ich habe einfach einmal eine sekunde lang immer eine variable + eins laufen
lassen.
Diese Variable hatte am Ende den Wert 305000!
Nun habe ich in das Label noch ein Comment eingebaut und siehe da...
Die Variable gibt mit nur noch einen Wert von 203333 aus!!!

Hoffe, ihr könnt damit was anfangen...
Ich auf jedenfall^^


Gruß, Kintaro

Paladin
25.08.2006, 13:13
Moment mal, das ist eine Veränderung von 60.000 O.o

Bei vorher 300.000 würde das bedeuten, dass ein olles Comment Variablenoperationen um 20 % ausbremst....

Glaube kaum, dass man das so direkt übernehmen kann...

Zaphod
28.08.2006, 20:37
Neulich hab ich was im Maker entdeckt, von dem ich 3 Jahre lang nichts wusste, deshalb zähl ich es jetzt einfach mal als Geheimnis ;).

Also:
Im Lower/Upper Mode, kann man, wenn man die Maus rechts hält einen Bereich markieren (edit: auf der map rechts), der dann automatisch kopiert wird und in die Map durch linksklick eingefügt wird. Ist v.a. im upper mode manchmal ganz praktisch ...

Tiro&Millet
28.08.2006, 20:49
Also:
Im Lower/Upper Mode, kann man, wenn man die Maus rechts hält einen Bereich markieren, der dann automatisch kopiert wird und in die Map durch linksklick eingefügt wird. Ist v.a. im upper mode manchmal ganz praktisch ...
Hmm... Ist da jetzt ein Unterschied zum Markieren durch rechts- oder linksklicken oder was genau meinst du? Also bei mir passiert da (rm2k/rm2k3) nicht mehr als würde ich den Inhalt per linksklick kopieren, natürlich mehrere Tiles.

Wenn du das bisher immer Tile für Tile gemacht hast, hast du doch sicher übelst lange zum Mappen gebraucht Oo...

Zaphod
28.08.2006, 20:56
Ich meinte in der Map rechts, nicht bei den Tiles (Chipset).

Naja, vielleicht bin ich auch der einzigste der das erst jetzt feststellt .. hat mich nur überrascht, weil ich eigentlich schon ewig mit dem Maker arbeite o.O

Tiro&Millet
28.08.2006, 21:01
@ Zaphod
Ach so. Naja, auch das ist nicht wirklich neu. Aber du hast recht, es erleichtert das Arbeiten ungemein.
Naja, falls es noch welche gibt, die das nicht wissen, lest Zaphod.;)

Zer0
07.09.2006, 17:07
Naja, wo ich den hier schonmal so sehe..^^"

.. an der Verarbeitung der Graphik und somit auch der Chipsets kann man nichts veraendern ..
Die Autotiles kann man im gewissen Maße schon abändern.*gg*

Wundert mich, dass das hier noch nicht vorkam...entweder ist es bis jetzt noch niemandem aufgefallen, alle wussten es schon, oder die Leute, die es wissen, haben einfach keinen Bock gehabt, hier reinzuposten..xD

Naja, hier mal ein kleines Beispiel, was man mithilfe des Markieren-Werkzeuges alles tolles machen kann;

http://s2.bilder-hosting.de/img/RWGHQ.jpg

Dingsi
07.09.2006, 17:12
Das ganze geht auch einfacher indem man beim Malen einfach Shift drückt. http://mistburg.de/smilr/out/mkr/poke.png

Zer0
07.09.2006, 17:22
@Fu:
. . .



...und sowas sagt man mir erst jetzt? X_x"
Naja, mit Shift kann man allerdings nicht jede Ecke des Autotiles bekommen..also manchmal doch recht praktisch..^^"

|Edit|..okay, okay...danke für den Tipp..da erspare ich mir einiges an Zeit mit..xP

Dingsi
07.09.2006, 18:04
...und sowas sagt man mir erst jetzt? X_x"
Naja, mit Shift kann man allerdings nicht jede Ecke des Autotiles bekommen..also manchmal doch recht praktisch..^^"Drück mal Shift während du mit Rechtsklick ein beliebiges Autotile auf der Map (Nicht in der TileSet-Auswahl links!) auswählst und male dann mit Shift damit. http://mistburg.de/smilr/out/mkr/poke.png

Unit Nero
29.10.2006, 03:02
Hey nicht schlecht. Daraus kann auch ich noch ein paar Vorteile ziehen. Auch die Sache mit den Waits. Hmhmhm ....:)

Noshire
30.10.2006, 17:49
Sodele.... hab auch was entdeckt...

Viele dachten es sich vllt. schon, aber ich habs ausgetestet!!!

COMMENTS BREMSEN DEN MAKER AUS!!!

Wie habe ich das herausgefunden?

Mit Zephs Methode...
Ich habe einfach einmal eine sekunde lang immer eine variable + eins laufen
lassen.
Diese Variable hatte am Ende den Wert 305000!
Nun habe ich in das Label noch ein Comment eingebaut und siehe da...
Die Variable gibt mit nur noch einen Wert von 203333 aus!!!

Hoffe, ihr könnt damit was anfangen...
Ich auf jedenfall^^


Gruß, Kintaro

Die Sache hier wurde einmal kurz angezweifelt und dann irgendwie zur Seite geschoben. Wäre aber imho noch interessant zu erfahren, ob das nun wirklich stimmt.
Also ich hab das getestet. System: 2000er.
Ich habe zwei PPs erstellt, einen mit "Change Var [001]+1" und eines mit "Change Var [002]+1 , 15 x Comment [-------------------------------------------------------]".

Das eine Event also nur als Zähler, das andere als Zähler mit 15 vollen Comments. Nach 10 Minuten hatten beide den gleichen Wert. Diese 20%ige Abweichung ist also nicht eingetreten, wäre aber irgendwie auch seltsam gewesen. Bei mir ist jedenfalls gar keine Abweichung eingetreten. Falls das bei jemandem anderem nicht so ist, wäre es natürlich gut, die Werte mit benutzter Engine hier zu posten :)

natix
30.10.2006, 19:22
Auto Start und Parallel Process Events beschleunigen


Neulich saß ich an einem wirkoich verzwickten Bug in meinem rm2k Pong Spiel. Immer als ich dir Rechtstaste im Spiel drückte, bewegte sich der Ball im Spiel schneller und ich wusste nicht warum. Es war egal ob ich die Maussteuerung anmachte (Und damit ist bei mir die Tastatur völlig abgestellt) oder mit der Tastatur spielte. Also wälzte ich ersteinmal 2 Tage meine Skripte durch auf der Suche nach dem Bug, erfolgslos.

Nebenbei sollte ich jetzt erzählen, dass ich für meine Charsets in denen die Skripte sitzen verschiedene Farben benutze (Rot für Auto Start, Grün für Parallel Process etc) damit man eine bessere Übersicht hat, demnach stehen die Events auf "Same Level as Hero"

Einfach so, genervt vom Skripte wälzen, hab ich diese dann nebenbei auf "Below Hero" gestellt. Und ZACK ! Da haute alles wieder hin. Warum ?

Der Hero wurde auf die Position links neben dem Event in dem das Ballmovementskript liegt teleportiert, demnach läuft man mit dem Hero wenn man nach rechts drückt in das Event rein, und ruft es dann also erneut auf. Es läuft dann also zweimal und somit auch schneller, somit wurde der Ball dann auch schneller und das ganze Skript ebenfalls.


Mein nicht lohnenswertes Ergebniss nach zwei Tage harter Arbeit:
Wenn man Skripte beschleunigen möchte (Wozu auch immer xD) einfach andauernd erneut aufrufen.

Vielleicht hilfts ja, wenn einer einen ähnlichen Bug hat. ^^

DR_Zeph
30.10.2006, 21:50
nen Cycel sollte auch seinen Dienst tun. Es ist ja nun mehr oder weniger bekannt, das am Ende eines PP events, ein 0,0 Wait sitzt, was das Event verlangsamt...

natix
30.10.2006, 21:56
nen Cycel sollte auch seinen Dienst tun. Es ist ja nun mehr oder weniger bekannt, das am Ende eines PP events, ein 0,0 Wait sitzt, was das Event verlangsamt...

Richtig, nur hab ich keinen einzigen Wait Command im Skript und auch Cycel Events werden beschleunigt.

DR_Zeph
01.11.2006, 18:43
Wird es das, oder laufen einfach mehrere Events parallel, was eine Zählung oder whatever schneller zählen lässt und es nun so aussieht, als ob das besagte Event schneller arbeitet?

natix
02.11.2006, 20:19
Die Events werden dann wohl Parallel laufen, wodurch das Skript dann letztenendes schneller läuft. Aber es geht ja einfach darum, dass Parallel Process/Auto-Start Events auch noch so aufgerufen werden können. Ich wusste das nicht, habs vorher auch nie ausprobiert und vielleicht hat ja einer von euch auch so einen dämlichen Bug. ^^

RPG Hacker
14.11.2006, 18:34
Hi,
ich habe vor kurzem eine (für mich) neue Funktion des Makers herausgefunden. Ich weiß nicht ob ihr sie schon kanntet. Ist auf jeden Fall sehr praktisch, wenn man sein Spiel testen will und das Intro endlos lange dauert. Und zwar geht das so (und jetzt kommt der Grund, warum dieser Tipp wahrscheinlich eher weniger hilfreich sein wird), ihr drückt einfach auf eurem Gamepad die Taste 5. Ja, ich habe das leider nur zufällig herausgefunden. Ich habe die Tastatur nach dieser Taste durchsucht, aber bis jetzt noch nicht gefunden. Nur auf dem Gamepad.

Also hier ist was diese Taste bewirkt: Sie beendet jeden Dialog sofort, und das heißt, auch die, mit endlos vielen \.s und \^s drin. Damit kann man sich die ganzen Dialoge sparen. Ich schätze mal, das geht nur im Maker, kann aber auch sein, das das beim richtig Spiel geht. Für mich sehr praktisch, da mein Intro ein paar komplizierte Moves hat, aber vorher noch tausende von Dialogen drin vorkommen.

Vielleicht weiß ja einer von euch zufällig, ob es diese Taste überhaupt auf der Tastatur gibt und welche vor allen Dingen. Vielleicht wurde das ja auch schon gennant, war mir jetzt leider zu umständlich das alles hier zu lesen :( . Ich bin leider nur Fortgeschrittener im Umgang mit dem RPG Maker und habe bis vor kurzem auch eine lange Zeit nicht mehr gemakert.

Bauzi
14.11.2006, 18:38
Das geht nur im Maker und hat den selben Effekt als würdest du die SHIFT Taste drücken oder gedrückt hallten.
Steht übrigens auch in der Hilfe und im E-Book.

Dass es diese Funktion in Kombination mit einem Gamepad gibt ist mir neu.


Was ich interessant finde ist, dass Autostart Events mit kleiner Verzögerung starten und Parallele Events sofort.
Das habe ich gemerkt, als ich mehrere Bilder gleichzeitig angezeigt habe und einige mit den Autostart gestartet wurden und andere mit einem Parallelenevent. Das war eine Verzögerung von <0.5 Sekunden schätz ich.
Vielleicht weiß man das hier noch nicht.
Das ganze ist sehr nützlich für Lightmaps.

@Zer0:
Jöh! Der alte Ausschneidentrick. Den hab ich schon bei meinem ersten Tag mit dem Maker herausgefunden ^^'

RPG Hacker
14.11.2006, 19:39
Das geht nur im Maker und hat den selben Effekt als würdest du die SHIFT Taste drücken oder gedrückt hallten.
Steht übrigens auch in der Hilfe und im E-Book.

Dass es diese Funktion in Kombination mit einem Gamepad gibt ist mir neu.


Achso, ich dachte SHIFT wäre nur um über Wände/Wasser etc. zu laufen. Ich wusste gar nicht, das man damit über Wände laufen kann. Auf meinem Gamepad hat es zumindest geklappt, bin auch nur zufällig auf die Taste gekommen. Die Taste 5. Also, teoretisch müsste ich mit der Taste dann also auch über Wände laufen können. Das probiere ich dann gleich mal aus. Danke für den Hinweis!

Bauzi
14.11.2006, 20:01
Nein über Wände laufe etc. ist gedrückte STRG-Taste.

RPG Hacker
14.11.2006, 20:04
Uuups, hast Recht! Ist mir auch gerade aufgefallen, ich hab die beiden Tasten verwechselt. Aber wenn es eine "Dialog-taste" auf dem Gamepad gibt, dann muss es da bestimmt auch eine "Fliegen-taste" geben. Ich probiere das gleich mal aus!

EDIT: Also, ich habe jetzt alle 12 meiner Gamepad-tasten ausprobiert und keine davon hat mich duch Wände laufen lassen!

Gekiganger
16.11.2006, 03:58
Es ist leider nicht der Fall, dass die Gamepads einem bestimmten Standard folgen und alle die selben Tasten der Tastatur mappen. Je nach herstellerspezifischem Treiber werden andere Tasten gemappt, oder auch garkeine. Dazu sollte man sich mal die Konfiguration des Gamepads in der Systemsteuerung anschauen.
Eine unabhängige Möglichkeit zum mappen der Tasten der Tastatur auf das Gamepad wäre das Tool Joy2Key.

RPG Hacker
16.11.2006, 08:19
Achso. Ich hab es kappiert! Dann werde ich mir das Tool auch mal irgendwo saugen. Danke für den Hinweis!

EDIT: Hey, ich habe bemerkt das das Tool ziemlich nützlich ist bei Benutzung des Keypatches für den Rm2k. Die Spiele sind so viel leichter zu spielen!

mitaki
20.11.2006, 19:37
Ich glaube dies wurde noch nicht genannt:

Wenn bei zwei oder mehr Seiten eines Events die Startbedingungen erfüllt sind wird automatisch die Seite mit der höheren Seitenzahl verwendet.
D.h. Eventseite 28 hat höhere Priorität als Eventseite 27.

Herausgefunden habe ich das, da ich bei einer typischen Zeitanzeigeeventschar zunächst die letzte Seite so angepasst habe, dass die Null nur angezeigt wird, wenn die Variable nicht höher 10 war. Das resultierte jedoch darin, dass immer 0 angezeigt wurde, selbst wenn eine vorherige Seite die Bedingung Variable größer als 10 hatte und die Variable tatsächlich größer als 10 war.

Ich denke das ist bei komplexeren Ereignissen der Bugverursacher schlechthin.

Bauzi
20.11.2006, 19:41
Das hab ich schonmal bemerkt als im mit mehreren TABs und Variablen in einem Event gearbeitet habe.
Ich finde diese Funktion, aber schon praktisch. :)

...ich glaub das hab ich beim SKS basteln bemerkt.


Ich denke das ist bei komplexeren Ereignissen der Bugverursacher schlechthin.
Ohhhjaaaa :(

makenshi
22.11.2006, 08:21
Ich glaube dies wurde noch nicht genannt:

Wenn bei zwei oder mehr Seiten eines Events die Startbedingungen erfüllt sind wird automatisch die Seite mit der höheren Seitenzahl verwendet.
D.h. Eventseite 28 hat höhere Priorität als Eventseite 27.

Herausgefunden habe ich das, da ich bei einer typischen Zeitanzeigeeventschar zunächst die letzte Seite so angepasst habe, dass die Null nur angezeigt wird, wenn die Variable nicht höher 10 war. Das resultierte jedoch darin, dass immer 0 angezeigt wurde, selbst wenn eine vorherige Seite die Bedingung Variable größer als 10 hatte und die Variable tatsächlich größer als 10 war.

Ich denke das ist bei komplexeren Ereignissen der Bugverursacher schlechthin.

Huch , ich dachte das wäre bekannt?
Der Maker beachtet übrigens bei einem Event immer zuerst die Eventseite mit der höheren Nummer. Wer das testen möchte -> Baut euch mal ein Truhenevent.
Nur stellt ihr bei der ersten Seite den Switch/Selfswitch für die Öffnung ein und auf der darauffolgenden zweiten Seite eben die die geschlossene Truhe mit dem Inhalt von eben dieser.

Schon wird die Truhe unerschöpflich sein. Der Maker liest eben die zweite Seite zuerst und sieht das die Bedingungen von eben dieser erfüllt sind. Also bleibt er auch dort. Das von dir nun neu entdeckte gilt also auch wenn nicht zwei Seiten diesselbe Bedingung erfüllen.


~ Makenshi

CapSeb
22.11.2006, 22:17
\o/ Juhuu! Es gibt neue Posts zu ungelüfteten RPG-Maker Geheimnissen!!! Wie? Was?
Grundkentnisse zu Eventseiten?
Geheimnisse die gar keine sind?

Leute, nehmt den Thread doch bitte etwas ernst! Wenn ihr jede Hürde, über die ihr beim Makern stolpern, hier mitdokumentiert, wird der Thread seinem Namen
Detail-Wissen und Geheimnisse des RPG-Makers -vorallem für Erfahrene/Profis lehrreichnicht so ganz gerecht.

Ich fände es schade, wenn gerade hier die Quantität über die Qualität überhand nimmt.
Nur mal so als Tipp für zukünftige "Geheimnisse". ;)

makenshi
24.11.2006, 17:28
Du bist ja ein ganz kluger, du! Das man mit dem GamePad Textboxen schließen kann WAR mir ein Geheimnis! Und das man mit dem RPG Maker 2003 MP3s abspielen kann, auch. Dann bin ich halt ein Noob, na und? :confused:

Recht hat er dennoch. Der Thread soll ja für Erfahrene/Profis als Austauschplattform dienen. Bzw. auch als Sammelthread. Da sind solche Sachen die selbst im Quartier Kurs erwähnt werden etwas fehl am Platz.

RPG Hacker
25.11.2006, 18:07
Gut, dann lösch ich die Beiträge eben wieder... Wenn es überhaupt geht!

EDIT: Das man auch das Gamepad für Sonderfunktionen nutzen kann hab ich aber nicht in der Anleitung gefunden, deswegen lasse ich es auch stehen!

Beril
25.01.2007, 16:04
Mir sind einige Kleinigkeiten aufgefallen.

zB war mit noch nicht bewusst, dass man im Testmodus mit F10 ans ende des gerade aktiven Events springt...

Ich hate neulich ein Problem, von dem ich allerdings nicht sagen kann, ob es generell auftritt oder wieso es auftritt. Ich hatte ein CE, das ich in ein map-event kopiert habe und musste feststellen, dass, sobald ich einen Loop in diesem Event "verlassen" wollte (durch labels oder breaks) das Spiel abstürzte und die Fehlermeldung "??????? RPG_RT xxxxxx Reading xxxxxxx2D ???????" oder so ähnlich brachte. Als das Event wieder unter den CE's ausgeführt wurde, klappte es wieder.

Wenn man zwei Events auf "Over Hero" stellt, wählt der Maker nicht nach Event ID, sondern scheinbar willkürlich fest welches der beiden Events über dem anderen angezeigt wird.

Clear Timer funktioniert übrigens nicht in CE-Events, die auf Autostart stehen.

Tschau, Ich bin raus
Beril ^^

Caine Luveno
09.02.2007, 15:18
Bezüglich eiens anderen Threads ist mir das gerade nochmal eingefallen:

Bei dem Befehl "MoveEvent" werden zwischen "StartJump" und "EndJump" scheinbar keine anderen Befehle außer Richtungsangaben ausgeführt (MoveUp, MoveDown, MoveLeft, MoveRight).

Hab das ein paar mal getestet und es scheint sowohl für den RM2k als auch für den RM2k3 zu gelten.

Das erste mal ist mir das aufgefallen als ich via "ChangeGraphic" im MoveEvent während des Sprunges eine Animation erstellen wollte, diese aber nie ausgeführt wurde.

Cloud der Ex-Soldat
09.02.2007, 16:37
Mir ist da noch was aufgefallen!
Es gibt anscheinend immer noch Einige die dass nicht wissen:
(obwohl das zum Grundwissen gehört)

Du hast einen Fork erstellt willst ihn aber wieder löschen,
den Inhalt des Forks allerdings kopieren...
Halte Shift gedrückt und geh einfach mit den Pfeiltasten
nach unten, so markiert man sie. Dann kann man diese kopieren^^

natix
14.02.2007, 23:42
Du hast einen Fork erstellt willst ihn aber wieder löschen,
den Inhalt des Forks allerdings kopieren...
Halte Shift gedrückt und geh einfach mit den Pfeiltasten
nach unten, so markiert man sie. Dann kann man diese kopieren^^

Du kannst auch einfach einen Befehl makieren, deine Befehlsliste weiter runter gehen (Den Befehl aber markiert lassen) und mit gedrückter SHIFT Taste auf einen anderen Befehl klicken. Alles was zwischen den beiden Befehlen liegt und die Befehle werden dann markiert.

Ist im Grunde das selbe, ich wollte nur nochmal drauf aufmerksam machen, dass es mit der Maus auch möglich ist, das spart Zeit. ;)

MouseChaser
14.02.2007, 23:51
Das klappt so ziemlich überall unter Windows. ;)

Cloud der Ex-Soldat
15.02.2007, 15:36
Ja natürlich geht das überall^^
Ich sagte ja auch, dass es eine Grundfunktion ist.

@BW-Gamer: Ja gut, hast schon recht. Mit Maus gehts natürlich auch^^

Fleräter
25.02.2007, 14:31
Ich weiß nicht obs schon irgendwo hier steht ( habs nicht gefunden) aber weiß jemand wie lange die Befehle "Face UP", "Face Down" .... dauern?

Nathrael
27.02.2007, 13:36
Wenn du die Zeit für einen Wait brauchst: Gib einfach 0.5 Sekunden ein, das müsste genügen.

Ryo Saeba 1000
01.03.2007, 14:44
Die Verwendung der Show Picture Picture Befehle des RPG Maker 2000 und 2003 kostet sehr viel Systemleistung. Dies hängt zwar auch von der Größe des Bildes ab, aber auch wenn es sich nur um kleine Bilder von 16x16 Pixeln handelt, fängt das Spiel (besonders auf etwas älteren Rechnern) an zu stocken, sobald man mehrere dieser Befehle kurz hintereinander ausführt. Bei größeren Bildern kann es wie gesagt auch schon bei nur einem Show Picture Befehl auf älteren PCs zu einem kurzen, rapiden Einbruch der Framerate kommen.

Dies war übrigens das größte Problem bei einem meiner Kampfsysteme, bei denen ich Gegner und Held durch Bilder anzeigen ließ.

Die Lösung hierzu mag zuerst banal erscheinen. Einfach keine Show Picture Befehle verwenden!
Solange man ein Bild nur bewegen muss, kann man dies ja bequem und ohne Ruckeln, per Move Picture Befehl. Aber was soll man machen, wenn man eine andere Animationsphase anzeigen möchte? Wie kommt man nun um den Show Picture Befehl herum?
Man könnte einfach alle benötigten Animationsphasen einmal zu Beginn des Spiels per Show Picture anzeigen lassen, dadurch würde es einmal am Anfang (vielleicht beim Betreten der Map) zu einem Einbruch der Framerate kommen.
Dann könnte man einfach die benötigte Animationsphase per Move Picture Begfehl anzeigen lassen und nicht benötigte per Move Picture Befehl mit 0.0 Wait auf transparent schalten (oder besser noch außerhalb des Bildschirmausschnittes bewegen), so kann man, allein durch Move Picture Befehle, immer zwischen einzelnen Bildern (Animationsphasen) wechseln, ohne Show Picture Befehle verwenden zu müssen. Diese Idee hab ich btw von ZidanneFFIX ^^'.
Der Schwachpunkt dieser Methode ist aber offensichtlich. Man kann nur maximal 20 (rm2k ohne Patch) bzw. 50 (rm2k3) verschiedene Animationsphasen per Show Picture gleichzeitig zu Beginn anzeigen lassen.
Dies ist natürlich recht wenig, so dass man meist doch gezwungen ist, hier und da mit Show Picture Befehlen zu arbeiten.

Aber auch dafür gibt es eine Lösung! Man könnte einfach ALLE Animationsphasen einer Spielfigur, in bestimmten Abständen, in einer Reihe untereinander auf ein einziges Bild packen. Diese Abstände müssen so groß sein, wie der Bildschirm hoch ist, sodass niemals zwei Animationsphasen gleichzeitig auf dem Bildschirm zu sehen sein können. Diese Zwischenräume müssen dann natürlich auch, dank transparenter Farbe, durchsichtig sein.
Hier ist zB. ein Beispielbild, auf das 4 Animationen (rot gekennzeichnet) mit 16x16Pixel Größe passen würden (Weiß muss hier die transparente Farbe sein):
http://img340.imageshack.us/img340/1856/ani1rm8.png

Will man nun eine andere Animation anzeigen, muss man das Bild einfach nur, per Move Picture Befehl, in Y-Richtung verschieben. Diese Verschiebung soll natürlich abrupt sein, also sollte man hier den schnellstmöglichen Move Picture Befehl mit 0.0 Wait wählen. Zu beachten ist aber, dass man dann nicht unmittelbar danach im Code einen weiteren Move Picture Befehl verwenden kann, da sich Move Picture Befehle ja überschneiden (was ja sicher den meisten bekannt ist). Man müsste also nach diesem Move Picture 0.0 Wait Befehl auch den Code um 0.0 Wait unterbrechen (zb. durch einen entsprechenden Wait Befehl), bevor man weitere Move Picture Befehle, die sich auf dieses Bild beziehen, ausführt.

Neben dem "Performanceboost" ist es auch unglaublich praktisch, alle Animationsphasen auf einem einzigen Bild zu haben. So kann man Animationen per Variable über ein und denselben Move Picture Befehl ansprechen, wo dies vorher nur durch unterschiedliche Show Picture Befehle möglich war und wenn man mal was an seinen Animationen ändert, muss man nur ein Bild neu drüberkopieren, und nicht zig Bilder neu importieren.
Die Idee hab ich übrigens von Zeph (hier afaik unter DR_Zeph registriert, Dank an ihn!).
Hier noch ein paar Anmerkungen dazu, die ich schon im Quartier gepostet habe:


Anzumerken ist aber, dass man die Animationen wirklich nur übereinander auf das Bild packen sollte. Ich habe es mit übereinender und nebeneinander gleichzeitig probiert und hatte dann ein Bild von 1024x768 Pixeln. Dabei kam es dann aber zu heftigen Einbrüchen der Framerate bei mehreren gleichzeitigen Move Picture Befehlen.
Keinerlei Probleme scheint es aber bei besonders hohen aber schmalen Bildern zu geben (wie das, das Zeph gepostet hat).
Ich verwende zur Zeit ein 48x8976 Pixel großes Bild (32 Animationen von 48x48 Pixel Größe), habe es aber schon mit bis zu 65000 Pixel hohen Bildern getestet, es lief ruckelfrei bei 20 gleichzeitigen Move Picture 0.0Wait Befehlen (in einem PP Event mit abschließendem gesetzten 0.0 Wait) auf meinem 750MHz Test PC.
Auf so ein Bild würden dann um die 224 verschiedene 48x48 Pixel große Animationen passen.

Importieren muss man die mit der guten alten Methode, die in einer der Makersmind Ausgaben erläutert wurde. Erst kleines "Dummie Bild" importieren (selbe Farbpalette!, sonst ist die Transparenz beim großen Bild falsch) und dann einfach das große Bild über das "Dummie Bild" im Picture Ordner drüberkopieren.
Da man vorher ein kleines Bild importiert hat, dürfte es eigentlich auch keinen Map Tree Data Break Fehler geben.. hoffe ich zumindest xD

Die Grenze scheint hier also nicht der RPG Maker zu sein.. sondern meine Bildbearbeitungsprogramme ^^'
IDraw macht bei einer Größe von 10000 Pixeln schlapp, das gute alte Paint bei 65535 Pixeln. An "professionelleren Programmen" hab ich nur Gimp getestet, das kommt zwar auch mit größeren Bilder klar, wenn ich da das Bild allerdings als PDF speichere, ist die entstehende Datei WESENTLICH größer als die mit IDraw oder Paint gespeicherten Bilder.
Mein 48x8976 Bild ist nicht mal 4KB groß^^ mit Gimp werden die Bilder aber zigmal größer oO
Gimp scheint also noch irgendwelche anderen Dinge mitzuspeichern.. vielleicht gibt es da noch irgendeine Option im Speicherdialog, die ich übersehen hab kA.
Aber naja, 65000 Pixel reichen sicher aus, ist nur leider etwas unkomfortabel mit dem alten Paint auf so großen Bildern rumzuscrollen und diese zu bearbeiten ^^'

Nebenbei habe ich übrigens auch noch herausgefunden, dass angezeigte Bilder an der Systemleistung zehren, auch wenn sie auf transparent geschaltet sind, oder sich nur ein transparenter Teil des Bildes auf dem Bildschirmausschnitt befindet.
Man sollte also nicht verwendete Bilder nicht auf transparent schalten, sondern per Move Picture Befehl, zu einem Punkt außerhalb des Beildschirmausschnittes bewegen, da kosten sie keine Systemleistung.

Greyce
13.04.2007, 11:16
Importieren muss man die mit der guten alten Methode, die in einer der Makersmind Ausgaben erläutert wurde. Erst kleines "Dummie Bild" importieren (selbe Farbpalette!, sonst ist die Transparenz beim großen Bild falsch) und dann einfach das große Bild über das "Dummie Bild" im Picture Ordner drüberkopieren.
Da man vorher ein kleines Bild importiert hat, dürfte es eigentlich auch keinen Map Tree Data Break Fehler geben.. hoffe ich zumindest xD

Sehr nützlicher Hinweis.
Vorallem wenn es sicher keinen Map tree Data Error gibt ^^
Das ganze wäre in KS und Menüs sicher extrem hilfreich, spart nochdazu
Systemressis (und Speicherplatz??, werd das mal mit einem Grafikprog ausprobieren)

Wenn man auf Nummer sicher gehen will muss man halt ein 640x480 Pic
importieren. Darauf würde man aber nur 4 Animationsstufe bringen.
http://upload.npcfighter.de/files/36/183PicSkizze.png
Obwohl es auch schon bei 4 Stufen hilfreich wäre, weiß ich jetzt nicht
ob sich das von der Größe(wahrscheinlich minimaler Unterschied) rentieren würde.
Aber der Übersichtlichkeit würde wegen wäre es sicher überlegenswert.


Nebenbei habe ich übrigens auch noch herausgefunden, dass angezeigte Bilder an der Systemleistung zehren, auch wenn sie auf transparent geschaltet sind, oder sich nur ein transparenter Teil des Bildes auf dem Bildschirmausschnitt befindet.
Man sollte also nicht verwendete Bilder nicht auf transparent schalten, sondern per Move Picture Befehl, zu einem Punkt außerhalb des Beildschirmausschnittes bewegen, da kosten sie keine Systemleistung.
Heißt dass, so lange auch nur ein einziger Pixel eines Bildes im Bildschirmausschnitt ist, wird die Systemleistung beansprucht, aber sobald
es außerhalb des Bildschirmausschnitts ist braucht es keine Systemleistung mehr
(braucht es keine oder weniger Systemleistung)

Eine Frage hätte ich da noch:
Ich gehe da mal von meinem Pic aus.
Sagen wir der rote Punkt wäre ein Menüpunkt und ich will ihn mit 4 animationsstufen einblenden lassen. Wenn ich das jetzt per Move Pic Befehl mache würde es sicher weniger Systemressis brauchen, da das Pic aber größer ist wieder mehr und somit wäre es egal ob man ein 4x320 oder 1x640 verwendet.

Deine Methode gefällt mir btw super, aber es ist einfach ein bisschen unsicher
wegen dem importieren.

~Waradience~

Ryo Saeba 1000
13.04.2007, 23:12
Sehr nützlicher Hinweis.
Vorallem wenn es sicher keinen Map tree Data Error gibt ^^
Wenn.. wie gesagt kann ich da nichts garantieren, bei mir trat dieser Fehler jedoch noch nicht auf und ich arbeite schon eine geraume Weile mit dieser Methode.

Wenn du auf der sicheren Seite sein willst, kannst du natürlich auch bis zu vier Animationsphasen auf ein Bild packen, dass nicht die 640x480 Grenze übersteigt.
Das Bild sollte aber bei vier 16x16 Pixel Animationsphasen nicht so wie das von dir gepostete Aussehen, sondern, damit du die optimale Performance (geringste Bildgröße bei maximaler Anzahl Animationsphasen) herauskriegst, so:
http://img404.imageshack.us/img404/9744/4anisminld3.png

Das ist immer noch definitiv besser, als die vier Animationsphasen per Show Picture zu realisieren, was die Performance angeht.


Eine Frage hätte ich da noch:
Ich gehe da mal von meinem Pic aus.
Sagen wir der rote Punkt wäre ein Menüpunkt und ich will ihn mit 4 animationsstufen einblenden lassen. Wenn ich das jetzt per Move Pic Befehl mache würde es sicher weniger Systemressis brauchen, da das Pic aber größer ist wieder mehr und somit wäre es egal ob man ein 4x320 oder 1x640 verwendet.
Hä? Angenommen deine Animation ist nur dieses rote Quadrat, dann brauchst du, wenn du die althergebrachte Show Picture Methode verwendest, auch nur ein 16x16 Pixel großes Quadrat anzeigen und kein 320x240 Pixel großes Bild.
Daher sollte die Frage lauten:
zeigt man die Animationen mit
a) vier Bildern (je 16x16 Pixel) per Show Picture Befehlen an oder
b) mit einem Bild (352x272 Pixel) per einmaligem initialisierenden Show Picture Befehl und anschließenden Move Picture Befehlen.

Und auch hier ist die zweite Variante weniger leistungshungrig.
Einzig die Initialisierung des Bildes (Show Picture Befehl beim betreten der Map) kann kurz ruckeln auf älteren Rechnern, die Move Picture Befehle dürften aber dennoch weit weniger Leistung kosten, als die Show Picture Befehle, trotz der Größenunterschiede der Bilder.

Caine Luveno
23.04.2007, 12:54
Interessant zu wissen. Für mein Spiel aber nicht praktikabel aus verschiedenen Gründen...

Ich habe dafür eine Funktion eingebaut um bestimmte Grafikeffekte abschalten zu können sodass mein Spiel auch auf schwächeren PC's problemlos laufen sollte.

Aber mal eine andere Frage, es ist möglich die Größenangaben des Makers zu überschreiten. Und zwar indem man ein Bild importiert, und diese Datei dann mit einem Bild das größer ist als die Grenzen des Makers überschreibt.

Hab's ein paar mal ausprobiert, und geht wunderbar. Auch der Befehl bezüglich der Bildgröße bei Show- oder MovePicture wird problemlos ausgeführt.

Das Wäre für Lichteffekte auf Maps größer als 20x15 Feldern äußerst praktisch, meine Frage wäre nun inwieweit das die Performance beeinträchtigt bzw. zu Fehlern führen kann wenn man den Maker gelinde gesagt verarscht?

makenshi
02.05.2007, 19:25
Das ist afaik noch vollkommen unerforscht.
Der sogenannte Oversizeimport scheint bisher auch bei uns gut zu funktionieren.
An sich ist sowieso fragwürdig wie der Maker das importieren eine Ressource registriert. An sich scheint er dies nämlich nicht zutun.
Keine Makerdatei wird größer beim importieren einer Datei. Dies würde man jedoch denke ich erwarten können bei einer Art von Index.

An sich kannst du eventuell die Vorsichtsmassnahme einführen das du das ganze nur bei ausgeschaltetem Maker durchführst. Allerdings benutzt man die Methode wirklich auf eigene Gefahr.

Dhan
07.05.2007, 08:00
Was ist mit den Bildern selbst? Weil irgendwas muss geschehen, immerhin wählt man ja die transparente Farbe beim Import, wenigstens das muss ja gespeichert werden irgendwo, und wenn in der Datei selbst

DR_Zeph
07.05.2007, 17:48
jop, die transparente Farbe steht im Bild selber als Farbindex 0, ansonsten könnte man ja auch keine transparente Farbe in PSP bestimmen, die der Maker anerkennt. Afaik geht der Maker hin und kontrolliert beim Importieren nur, ob die Datei den entsprechenden Größenverhältnissen entspricht und ob das Bild die richtige Farbtiefe hat. Arbeite ebenfalls mit diese Methode und habe noch nie ein Problem mit dem Maker gehabt, weil er sich über ein solches Picture beschwert.

Caine Luveno
09.05.2007, 18:44
Es soll ja bei nicht importierten Dateien fehler geben können. (jetzt nicht auf die Technik bezogen sondern allgemein auf das importieren). Und das soll angeblich auch mehrfach getestet worden sein und sich als wahr heraus gestellt haben.

Wenn aber keine Datei des Projektes beim Import größer wird, kann das doch eigentlich absolut nicht sein. Dann hätte ich es mir nämlich ersparen können 300 dateien am Stück zu importieren >_<

Meine Erfahrung nach kontrolliert der Maker ledeglich wenn eine Datei benötigt wird ob sie sich im RTP Ordner oder im Projekt befindet und gibt ggf. ne Fehlermeldung raus.

Davon mal abgesehen das der "Importfehler" nicht immer beim reinkopieren Auftritt sondern nur manchmal, frage ich mich wie man das gezielt testen können will/wollte.

makenshi
09.05.2007, 20:04
Es ist einfach kurios.
An sich scheint die Importfunktion nur dafür da zu sein das man die transperente Farbe auswählen kann und natürlich zur Kontrolle der "Maße" für Makergrafiken.
Sprich das man die Grafiken auf die entsprechende Größe und Farbtiefe setzt.

Darum ist es absolut nicht beantwortbar warum der Maker deswegen Fehler produziert. Und ob die Fehler davon kommen. Ne aktuelle Theorie ist ja das der Maker einfach aus sein muss beim hineinkopieren. Wobei auch das fragwürdig ist.

An sich kann man einfach nur sagen das der Maker anscheinend keine Fehler produziert wenn man importiert. Alles andere muss man auf eigene Gefahr betreiben. Diese würde ich nun z.B. nicht für das Projekt von Corti und mir eingehen wollen.

Darum importiere ich im Technikprojekt alle Grafiken schön brav. Später beim zusammensetzen der Technik mit dem Grafikteil zerstört ein eventueller Fehler von der Grafikseite aus nicht die gesamte Technik.

Kelven
31.05.2007, 17:12
Hab eine Frage für die Pros. Wieviele 0.0 Waits dauert ein Jump im 2K?

GSandSDS
01.06.2007, 00:35
Die Frage hatte Lachsen irgendwo weiter vorne schon beantwortet:

8x Slower -- 32x 0.0 Sec = ca. 0.5 Sec + 2x 0.0 Sec
4x Slower -- 22x 0.0 Sec = ca. 0.3 Sec + 4x 0.0 Sec
2x Slower -- 16x 0.0 Sec = ca. 0.2 Sec + 4x 0.0 Sec
Normal ----- 11x 0.0 Sec = ca. 0.1 Sec + 5x 0.0 Sec
2x Faster -- 8x 0.0 Sec = ca. 0.1 Sec + 2x 0.0 Sec
4x Faster -- 4x 0.0 Sec

Kelven
01.06.2007, 12:43
Die Sprünge sind also langsamer als das normale Bewegungstempo. Interessant.

GSandSDS
01.06.2007, 13:10
Nein, so ist das nicht zu verstehen. Das normale Bewegungstempo wird "pro Tile" gerechent. Das Sprungtempo "pro Sprung". Egal wie weit der Sprung ist, er dauert immer gleich lang.

Kelven
01.06.2007, 18:36
Klar, ich bin auch von einem Sprung zum Nachbartile ausgegangen. Wenn man über die ganze Map springt, ist es natürlich schneller.

Chimaera
08.06.2007, 01:06
mal ne frage ... kann es sein dass eine .png datei eine mindestanzahlt von farben haben muss damit es importierfähig ist?
also die palette zumindest...weil wenn man eine pallette hat nut mit zwei farben und dieses bild importieren will kommt die fehlermeldung : unsupported png format

Xero.
08.06.2007, 10:17
mal ne frage ... kann es sein dass eine .png datei eine mindestanzahlt von farben haben muss damit es importierfähig ist?
also die palette zumindest...weil wenn man eine pallette hat nut mit zwei farben und dieses bild importieren will kommt die fehlermeldung : unsupported png format
müssen glaub ich genau 256 Farben sein (auch bmp)

Tiro&Millet
12.06.2007, 14:21
Suche nach "unsupported" (http://multimediaxis.net/search.php?searchid=570183).

Kam schon öfter vor.:)

Edit: Okay, kann man wohl nicht verlinken, obwohl da ne feste ID steht. Naja, keine Ahnung, aber man kann ja auch selber unsupported in der Suche eingeben.^_~

MysticT
14.06.2007, 22:23
@Tiro&Millet:
Da kommt bei mir nur "Diese Suchanfrage erzielte keine Treffer"^^

@Chimaera:
Also ich hab einige Grafiken im Spiel, die nur 2 Farben (nämlich schwarz und weiß) aufweisen. Es kann aber sein, dass du 2^x Farben brauchst, damit der Maker die Grafik erkennt, z.B. 2, 4, 8, 16, ... , 256.

WebGeist
20.06.2007, 21:46
ich hab mal ein 4 farbige grafik erstellt, und sie auf 256 farben runtergerechnet. erbiebt ne menge schwarz, oder weis, aber es sind 256 farben.

@Größe und impeortieren,

ich hatte noch keine probleme damit. das importieren dient auch dazu das format festzulegen. man kann also per import bmp in png, oder xyz umwandeln, warscheinlich ist das ein relikt aus zeiten, wo manche bildbearbeitungsprogramme png nicht gelesen haben.

Engel der Furcht
20.07.2007, 09:01
ich weiss jetzt nicht ob das jetzt hierhin gehört,aber ich hab was rausgefunden^^


wenn man beim RM2003 bei "Kampfstile" die "Texttabelle" auf "transparent" stellt,
ist die Textbox im ganzen Spiel transparent,ausser natürlich das Menü und das hauptmenü

Engel der Furcht
13.08.2007, 11:35
Hab nochwas xD

also,
drückt man Im Spiel F5,dann wird das Bild auf 320x240 geschrumpft,also,dass es nicht mehr so riesig ist.

treeghost
13.08.2007, 12:03
:D F4 man xD und ich habe auch noch was.
Wenn man versucht chara-sets zu machen und imoment glaubt das man Hilfe braucht muss man es erst selber probieren.
Templates:unter Chara-Projects (http://charas-project.net/charas2/index.php) gibts menge Templates wer faul ist kann gleich einen Chara im Generator fertig machen.Wenn man nicht weiß wie groß so ein Chara-set ist dan unter rpg 2000 (http://rpg2000.4players.de/index.php?inhalt=rpgmakertools2) die Templates downloaden.Das gleiche kann man mit den Face-sets machen.Und 256 Farben verwenden nicht vergessen ^^.

duke
13.08.2007, 14:17
:D F4 man xD und ich habe auch noch was.
Wenn man versucht chara-sets zu machen und imoment glaubt das man hilfe braucht muss man es erst selber brobieren.
Templates:unter Chara-Projects (http://charas-project.net/charas2/index.php) gibts menge Templates wer faul ist kann gleich einen Chara im Generator fertig machen.Wenn man nicht weiß wie gross so ein Chara-set ist dan unter rpg 2000 (http://rpg2000.4players.de/index.php?inhalt=rpgmakertools2) die Templates downloaden.Das gleiche kann man mit den Face-sets machen.Und 256 Farben verwenden nicht vergessen ^^.

Chara-Project generierte Chars sind hässlich. Also gar nicht erst damit anfangen, lernt selber zu pixeln und die dies nicht lernen wollen, sucht euch halt nen dummen der für euch pixelt. Und deine Rechtschreibung ist unter aller Sau Leon. ô_o
Das einzige was man dort auf der Seite im Forum findet, sind ein paar wunderschöne Chip/Charsets, bzw andere Grafiken.
Und ich denke das mein Beitrag hier eher sinnlos ist.

Engel der Furcht
13.08.2007, 14:37
:D F4 man xD

Nein,
F4 ist nur um in den Fenstermodus zu kommen,F5,um das auf 320x240 zu schrumpfen.

Caine Luveno
14.08.2007, 10:27
Nein,
F4 ist nur um in den Fenstermodus zu kommen,F5,um das auf 320x240 zu schrumpfen.

Mit F4 wechselt man zwischen Vollbild/Fenster Modus.

Mit F5 bestimmt man die Größe des Fensters, sofern man sich im Fenster-Modus befindet. Afaik gibt es zwei Einstellmöglichkeiten: Normale Größe und doppelte Größe im Fenstermodus.

(.... aber was hat das in diesem Thread eigentlich verloren? :rolleyes: )

Zaphod
21.08.2007, 22:32
Ich weiß nicht ob ihr das schon kennt, aber mich hat es überrascht, als ich es zufällig herausgefunden habe ...

Mit RechteMaus-Doppelklick im großen Fenster kann man zwischen Lower und Upper Mode wechseln! :)

Pincky
22.08.2007, 11:24
Ich weiß nicht ob ihr das schon kennt, aber mich hat es überrascht, als ich es zufällig herausgefunden habe ...

Mit RechteMaus-Doppelklick im großen Fenster kann man zwischen Lower und Upper Mode wechseln! :)

wow, das ist mir auch neu, danke:D

Dhan
22.08.2007, 11:42
Können wir uns mal drauf einigen, hier PROFI-Wissen reinzubringen und nicht die Kleinigkeiten, die der Maker so bietet und die man per Zufall oder Rumprobieren mit der Zeit eh von selbst rausfinden sollte?

Underserial
22.08.2007, 14:28
Hab mal ne Frage, gabs nicht mal nen Thread wo alles zu CharSets und FaceSets drinne stand?

Mit den Größen für eine Animation, Abständen von einem Char zum anderen usw.?

Danke.

Greyce
22.08.2007, 15:22
Das wäre mal interessant,vorallem die Abstände der Charas voneinander.
Ich bin sowieso dafür, das wir bald einen neuen Thread aufmachen, wo das
ganze was hier drin stand, in den neuen Thread packen.
Hier ist es nämlich schon leicht unübersichtlich. Ich finde auch, dass es mal
interressant wäre herauszufinden, wie performancelastig die einzelnen Befehle
denn nun wirklich sind. Im Monent hab ich zwar keine Zeit, aber vll mal später ^^

Dhan
22.08.2007, 22:44
Hab mal ne Frage, gabs nicht mal nen Thread wo alles zu CharSets und FaceSets drinne stand?

Mit den Größen für eine Animation, Abständen von einem Char zum anderen usw.?

Danke.
Genau für diesen Standard-Krams gibts das Forgotten E-Book.
Da: http://www.rpg2000.4players.de:1061/sonstiges/offtuts/ebook2004.zip
Und schau dir doch einfach bestehende Dateien an. Du kannst dir sicher sein, wenns irgendwo Phasen hat, dann hat jede Phase genau diesselbe Größe, sprich wenn du 12 Charsetphasen nebeneinander hast und ein Charset 288 Pixel breit ist, ist eine Charsetphase 24 Pixel breit. Simpelste Überlegung und daher absolut nichts, worüber ein Profi sich noch groß Gedanken machen müsste.

Grandy
23.08.2007, 03:52
Dhan hat absolut recht: Der Thread war so lange interessant, bis irgendwelche Dumpfbacken nicht mehr hinterfragt haben, ob ...

a: ihre tolle neue Entdeckung nach einer Woche Maker-Erfahrung hier tatsächlich hingehört ...

oder

b: es angebracht ist, ihre Newbie-Fragen ausgerechnet hier zu stellen, anstatt dafür die Suchfunktion zu benutzen, Alzis Ebook zu konsultieren, oder einen neuen Thread zu eröffnen.

Greyce
25.08.2007, 23:23
Ich habe neulich herausgefunden, dass der Befehl "Set Screen Tone" in Common Events,
wenn die Bedingung auf Call gestellt wird nicht korrekt funktioniert.
Ich wollte den Screentone zuerst auf schwarz setzen, den Hero teleportieren und dann wieder zum ursprünglichen Screentone zurücksetzen. Bei PP's und AS funktioniert das einwandfrei(selbst wenn ich am ende des Codes den Switch
der benötigt wird ausschalte, was eigentlich genauso nur 1 Durchlauf sein müsste). Bei Call Event jedoch
bleibt der Screen schwarz. Ich werde zwar auf die Map teleportiert aber der Screentone wird nicht wieder zurückgesetzt.
Bei Map Events ist das nicht der Fall.
Ich denke kaum, dass hierbei der Fehler im Code liegt. Irgendjemand schon damit Erfahrungen gemacht?

~Waradience~

Dhan
26.08.2007, 00:14
Das kam mir suspekt vor und ich habs getestet, sprich neues projekt, 2 karten, ein CE mit dem code "set screen tone: rgb auf 0, teleport auf karte 2, set creen tone rgb auf 100" und einem push key event auf karte 1 das das CE callt, funzt ohne Probleme, hast du irgendwas übersehn?

The Best Isaac
26.08.2007, 01:05
Ich weiß nicht so recht, ob das hierhin gehört, aber ich glaube mal schon...
Vielleicht ist jemandem diese Seite schon bekannt und es steht für die meisten nichts neues drin. Wenn dem so ist, Post löschen.

Also: Hier war mal ein Link.

Auf dieser Seite ist meiner Meinung nach eine Menge Detail-Wissen zum RPG Maker 2003 zu finden. Am interessantens ist wahrscheinlich der Bereich "behavior of common events called from battle". Da der RM2K3 es erlaubt, dass man aus dem Kampf heraus Allgemeine Ereignisse aufzurufen, wird hier noch beschrieben, was genau bei welchen Befehlen passiert. Auch interessant mag vielleicht die Version-History sein (für mich war es zumindest so, da ich mit einer 2K3-RPG_RT.exe v1.04 arbeite aufgrund von Tastenpatch-Unterstützung). Außerdem gibt es eine Rubrik in der alles steht, was im 2K3 im Vergleich zum 2K neu bzw. hinzugekommen ist. Wer also mit dem 2003er arbeitet, wird hier sicher einiges neues erfahren (hoffe ich zumindest).
Die Seite ist zwar komplett Englisch, aber das sollte eigentlich keine größere Probleme machen.

Btw auf der Hauptseite gibt es auch eine Sub-Page zum XP. In wiefern da interessante Sachen stehen weiß ich nicht, da ich mich nicht mit dem XP beschäftige.

Hoffe das genügt zumindest teilweise dem Anspruch Profiwissen zu sein.
Ansonsten würde ich aber auch sagen, dass es wohl nicht mehr so viele Geheimnisse um die Maker zu lüften gibt, weshalb hier wohl kaum noch wirklich nennenswerte Infos gepostet werden.

Nunja.

Greyce
26.08.2007, 11:46
Nein, mir ist ziemlich sicher kein Fehler unterlaufen, denn mit AS oder PP funktioniert das einwandfrei (arbeite übrigens mit dem 2k3 1.08_advocate version)
Der Code sieht ca. so aus:


CE----------AS----------Switch[0002]
Fork[...]
set screentone to [schwarz]
teleport
set screentone to [normal]
Jump to Label #1

................
............... #########weitere Forks#########
...............

Label#1
Turn Switch [0002] Off

Somit ist das ganze eigentlich auch auf einen Durchlauf beschränkt,
denn danach wird der Switch ja ausgemacht.
Als es nicht ging hab ich es übrigens von einem anderen CE aus gecallt.

@The_Best_Isaac:
Kannte die Seite schon, recht interessante Sachen ...

btw. Ich finde den Thread auch schon fast unnötig, wie Isaac gesagt hat,
glaube ich nicht, dass es noch viele Abnormalitäten gibt die es zu entdecken gibt.
###################################################################################
Um meinen Beitrag nicht völlig sinnlos erscheinen zu lassen hie noch was:
Ich weiß nicht ob es bekannt ist, aber bei Map Events, die mittels "Clear Timer/Delete Event" gelöscht wurden, kann
der Code immernoch per Call Event aufgerufen werden.
###################################################################################

Dhan
26.08.2007, 23:24
Kannst du den Link auf die Drecksseite rausnehmen?
Die Seite hat nicht gerade den besten Ruf.
Auf gaminggroundzero reicht die Erwähnung um dir nen Bann einzuhandeln

wenn du das Wissen von der Seite nochmal neu aufschreibst ohne sie zu referenzieren tuts das auch.

The Best Isaac
27.08.2007, 19:39
Ich hab jetzt mal "sicherheitshalber" den Link zur Seite entfernt, wüsste aber gerne, weshalb die einen schlechten Ruf hat und warum man nicht darauf verlinken soll/darf.

~Jack~
27.08.2007, 19:57
Soweit ich das weiß bietet der Betreiber der Seite massig gestohlene Ressourcen an wo er einfach mal die Creditseinträge entfernt hat und Beschwerden deswegen beachtet der nicht im geringsten.

Edit:

Zu Phylomortis sei gesagt:

zitat:
--------------------------------------------------------------------------------
Be aware that I routinely place ripped resources found on other sites and in RPG Maker games on this site without notice and without credit. I will not honor requests to remove such resources, so don't even ask. I take no personal credit for any rip placed on this site.
--------------------------------------------------------------------------------

Soll heißen, der Admin ist ein Dieb, wenn ihr Sachen von Phylomortis nehmt, braucht ihr die Seite also nicht in die Credits zu setzen, schließlich ist dem Admin ja harte Arbeit egal.

Kyuu
29.08.2007, 08:39
Soweit ich das weiß bietet der Betreiber der Seite massig gestohlene Ressourcen an [...]

Rofl. Wenn man Gestohlenes noch stehlen kann...
Die Seite ist ok und der Betreiber auch.

übelster Held
18.09.2007, 03:35
wenn ein autostart am laufen ist, welches nen wait enthält,
und man wechselt die map, gibt das nen "invalid event name"-error.. >_<

Gekiganger
18.09.2007, 13:55
Nicht wirklich.
Vielmehr wird das Autostart Event beim Mapwechsel nicht beendet, sprich, es läuft weiter und sobald in der Routine ein Event referenziert wird, welches auf der gegenwärtigen Map nicht existiert, kommt es zu besagtem Fehler.

Alan
18.09.2007, 14:09
Nicht wirklich.
Vielmehr wird das Autostart Event beim Mapwechsel nicht beendet, sprich, es läuft weiter und sobald in der Routine ein Event referenziert wird, welches auf der gegenwärtigen Map nicht existiert, kommt es zu besagtem Fehler.


Nicht nur bei Auto-Starts. Auch bei "On Touch"-Events zum Beispiel kann das passieren. Beispiel:

Teleport (zu einer beliebigen Map)
Flash Sprite: This Event

-> Fehler:"Event script references an Event that does not exist"


Hatte ich erst heute wieder!

Cherry
18.09.2007, 14:26
das kommt daher, dass für die Konstante This Event zu Beginn der Eventausführung die ID des Events eingesetzt wird. Wenn jetzt das Event die ID 5 hat, und es wird nach einem Teleport irgendwas mit This Event ausgeführt, wird das auf das Event mit ID 5 auf der neuen Map angewandt. Hast du dort nur 4 oder weniger: Fehler. Irgendwie logisch!

Alan
18.09.2007, 19:14
das kommt daher, dass für die Konstante This Event zu Beginn der Eventausführung die ID des Events eingesetzt wird. Wenn jetzt das Event die ID 5 hat, und es wird nach einem Teleport irgendwas mit This Event ausgeführt, wird das auf das Event mit ID 5 auf der neuen Map angewandt. Hast du dort nur 4 oder weniger: Fehler. Irgendwie logisch!

Hab ich auch nur mit einem Wort gesagt, dass es nicht logisch ist, dass der Fehler auftritt? ;)
Wollte nur drauf hinweisen, dass das auch mit einem anderen Event-Trigger als "Parallel Process" passieren kann.

Cherry
18.09.2007, 19:58
ja, hast du. ich wollte sagen, dass wenn ein Event mit ID 8 ein Flash Sprite auf This Event nach einem Teleport das Event mit ID 8 auf der neuen Map Flashen lässt - also meist ein ganz anderes Event. Es sieht ziemlich blöd aus, wenn ein Teil eines Daches blinkt oder so, auch, wenn kein Error kommt ^^
mfG Cherry

Caine Luveno
27.09.2007, 14:24
Mal was ganz anderes:

Mir ist aufgefallen das beim Laden eines Spielstandes das Spiel genau dort einsetzt wo im Event zum Speichern der Befehl "Call Save Menu" aufgerufen wurde. Das scherint aber nur bei Map Events zu gelten denn als ich in einem Common Event "Call Save Menu" ausgeführt habe wurden alle Ereignisse danach beim Laden des Spielstandes nicht mehr ausgeführt. Dabei wurde das Common Event von einem Map Event aus per Call aufgerufen.

Ich weiss nicht ob sowas schon bekannt war. Es ist in jedem Fall in so fern interessant da es einem die Möglichkeit bietet nach dem Laden eines Spielstandes einige Dinge durchführen zu lassen. Zu beachten dabei ist das diese Dinge auch ausgeführt werden wenn der Held speichert.



//Irgendwas anderes davor
Call Save Menu
//irgendwas anderes danach was beim laden des spielstandes erneut ausgeführt wird

R.D.
06.10.2007, 14:03
zu Caine

Ich tipp mal das das daran liegt, das das Common Event nur bis zum Call Save Menü und danach alles weiter führt. aber startet man das Spiel jetzt Neu so sieht der Maker das vielleicht als Ende des Events an. Oder du hast vielleicht etwas im event verändert und dann geladen, sodas der Maker das Event neu aufruft ( Den Fehler hat ich bei mir mal^^ )

Cherry
12.01.2008, 11:30
Was die wenigsten wissen: mit

rpg_rt.exe !TestPlay ShowTitle Window (das "!" ist das wichtigste), kann man das Spiel im Fenster starten, OHNE ein TestPlay zu machen (also F9 und so gehen dann nicht).

Bilderbewegung pausieren oder rückwärts:


Und das geht so:
Als erstes braucht man den Resource Hacker, ist soweit ich weiß beim E-Book dabei.
Dann öffnet man die Exe-Datei des Makers (also rpg2000.exe oder auch rpg2003.exe)
Jetzt öffnet man den Ordner RCData und dann den Ordner TFORMVEPICTUREEX.
Nun fast ganz runter Scrollen, es tauchen die Wörter "Caption = 'Rotation'" und "Caption = 'Ripple'" auf, noch etwas weiter steht "object Slider5: TSlider".
Etwas weiter gibt es eine Zeile in der "Min = 1" und "Max = 9" steht, das sind die normalen Einstellungen, also minimal Speed/Rotation 1 und maximal 9.
Statt der 1 und 9 jetzt beliebige Zahlen eintragen, z.B. -10 für min und 10 für max.
Der negative Wert steht jetzt logischerweise für eine umgekehrte Drehung, außerdem kann man so die Geschwindigkeit der Drehungen erhöhen, was auch manchmal recht praktisch ist.
Weiterhin alle folgenden MaxValue bzw. MinValue und Max bzw. Min durch die gewünschten Zahlen ersetzen, dann auf Compile Script und Speichern.

Nun müsste man im Maker in beide Richtungen drehen können, außerdem kann man in zwei Richtungen den Ripple-Effekt einsetzen und die Geschwindigkeit von Drehung und Ripple lässt sich erhöhen.

Allerdings gab es bei mir ein paar Fehler, bei denen ich auch nicht weiß, woran es liegt, könnte auch die Maker Version sein.
Beispielweise ging das Drehen gar nicht mehr, einfach das Projekt beenden und nochmal starten, dann müsste es gehen.
Oder es wurde die niedrigste Zahl (in diesem Fall -10) als Anfangsdrehung ausgewählt, die dann in die gewählte Drehung im Maker übergegangen ist, wobei die Zeit, die man einstellt, bestimmt, wie schnell die Drehungen wechseln (bei 0.0 erscheint sofort die gewünschte Angabe).
Dieser Effekt kann natürlich auch praktisch sein, wenn man will, dass sich etwas immer schneller dreht oder es gegen den Uhrzeiger beginnen soll.
Wenn man Null als Wert eingibt, bleibt das zu drehende Bild übrigens stehen (wenn man es vorher gedreht hat), sicher auch ganz praktisch.

Aber probiert es am besten mal selbst aus.

mfG Cherry

Cherry
26.01.2008, 19:31
Um nochmal Caine Luvenos Thema aufzugreifen: Es ist mir ja auch schon passiert, dass (bei einem Map Event!), nach dem neu laden der "Call Save Menu" Befehl NOCHMAL ausgeführt wurde. Also wenn man ein Spiel geladen hat, gleich nochmal den Speicherbildschirm gesehen hat! Das passierte merkwürdigerweise nur, wenn zu dem Zeitpunkt des Speicherns die Variable 800 initialisert war (also ihr schon mal ein Wert zugewiesen wurde).

Naruto2K
26.01.2008, 19:47
Um nochmal Caine Luvenos Thema aufzugreifen: Es ist mir ja auch schon passiert, dass (bei einem Map Event!), nach dem neu laden der "Call Save Menu" Befehl NOCHMAL ausgeführt wurde. Also wenn man ein Spiel geladen hat, gleich nochmal den Speicherbildschirm gesehen hat! Das passierte merkwürdigerweise nur, wenn zu dem Zeitpunkt des Speicherns die Variable 800 initialisert war (also ihr schon mal ein Wert zugewiesen wurde).

Wenn du bei einem Map-Event die "Call Save Menu"-Funktion einbaust, und du dann (!) die Map veränderst (heißt Events etc.), so erfolgt nochmal die "Call Save Menu"-Funktion wenn man lädt, soweit meine Theorie ;)

Cherry
26.01.2008, 19:49
Das hab ich auch bemerkt. Nur merkwürdigerweise trat das NICHT auf, wenn zum Zeitpunkt des Speichern der Vari 800 (und auch keiner höheren, sonst passiert das automatisch) noch KEIN Wert zugewiesen wurde (Achtung doppelte Verneinung).

R.D.
26.01.2008, 19:51
@Cherry
Huch... Ist das ein Maker interner Fehler? Mir ist sowas auch schon woanders passiert *nick*
Ich hab eine Temp-Vari benötigt aber die wollte nich den Wert annehmen den ich ihr durch eine Berechnung zugeteilt hab. Als ich als Temp eine andere nahm, klappte alles normal^^
Sehr komsich...
Leider weiß ich nicht mehr welche Vari es war o.o''''

MagicMaker
29.01.2008, 00:15
RPG_RT.exe - DebugParameter:

TestPlay/!TestPlay, HideTitle, Window

Das Verrückte daran:

Oft gibt es auch noch NormalPlay, ShowTitle und FullScreen.
Seltsamerweise kommen diese NICHT in der RPG_RT selbst vor.

Anstatt...


RPG_RT.exe TestPlay ShowTitle Window
...wäre also eigentlich auch...


RPG_RT.exe TestPlay BlowTitel Window
...oder...


RPG_RT.exe TestPlay BoomTitll Window
...möglich, so wie ich das einschätze.

Wer einen Hex-Editor zur Hand hat, kann auch die Parameter ändern.
Sucht nach TestPlay und ihr seht "TestPlay", "HideTitle" und "Window",
die ihr BESCHRÄNKT umändern könnt. Die neuen Parameter müssen die
gleiche Zeichenlänge haben.
Der einzige Nachteil: Ihr verderbt den Cheatern unter euren Spielern
den Spass^^.

---------------------------------------------------------------------------------

Font ohne FontChanger ändern (falls er nicht funktioniert)

Ich hab vorhin gelesen, dass bei einem User Cherry's Font Changer
nicht geht. Eine Alternative ist:

Öffnet einen Hex-Editor und holt euch die RPG_RT.exe rein.
Sofern es eine für uns gebräuchliche RPG_RT handelt, die
RM2000 und RMG2000 benutzt, sucht nach einem der beiden
Zeichenketten. Genau da wo die Fonts stehen, könnt ihr andere
eintragen. Hier gilt wieder, die Zeichenlänge einzuhalten. Diesmal
seit ihr aber nicht auf genau die selbe Länge, sondern nur maximal
auf soviele Zeichen beschränkt. Alle Zeichen, die übrig bleiben,
müsst ihr im Hex-Bereich mit 20 überscheiben (Leerzeichen).

Die andere Alternative, die ich nur ganz nebenbei erwähne:
Das RM2K Utility besitzt ein FontChanger-Plugin, damit funktioniert
das ganze ebenfalls. (Download (http://magicmaker-templager.pytalhost.com/RM2KGeneralUtility.rar))

---------------------------------------------------------------------------------

Schwarzer Bildschirm nach Teleport

Es ist mir 2004 mal aufgefallen, erinnere mich jetzt aber wieder dran.
Unter bestimmten Umständen kann nach einem Teleport der Bildschirm
schwarz sein, falls eine Ausblendung eingestellt ist (als nicht "Nicht löschen").

Kleine Sache zwischendurch:
Ich habe NICHT den Bildschirm vorher auf 0%,0%,0%,100% verdunkelt.
In diesem Fall hätte ich die Message Box trotzdem gesehen.

Getestet bei:
Maker: RM2003
RPG_RT-Version: 1.05
Ausgeführter Eventtyp: Parallel Process
Erster Befehl nach Teleport: Show Message
Standort des Befehls: Ein Parallel Process Event auf der nächsten Map

Sobald das Show Message mit Enter/Z/Space/Escape/0/Einfg/...
weggedrückt wurde, wird der Bildschirm schlagartig "normal"
(die Map erscheint) und der weitere Spielverlauf ist wieder richtig.

---------------------------------------------------------------------------------

Macke in Ineluki's Patch

Bei manchen PCs (z.B. meinem) kann es vorkommen, dass wenn eine link.wav
im Titlescreen benutzt wird, die RPG_RT.exe sich aufhängt und ne Weile
den User beschäftigen kann, sie wieder zu schliessen, ausser, er war so
schlau, es im Fenstermodus zu starten^^.

---------------------------------------------------------------------------------

Aufbau einer LcfMapUnit

Aufbau:
OFFSET: Bezeichnung (Datenformat); Standardwert; Bemerkungen

0x01: Chipset-ID (Integer); 1 bis 5000?; -
0x02: Breite (Integer); 20; 20 bis 500; -
0x03: Höhe (Integer); 15; 15 bis 500; -
0x0A: blabla (Strings); ???; (Zeichenkettenlänge) + Zeichenkette (Standardkette: "LcfMapUnit")
0x0B: Scrolltyp(Integer); (Keiner); 0: Kein Loop, 1: Nur Horizontal, 2: Nur Vertikal, 3: Beide Richtungen
0x1F: Panorama benutzen (Integer); 0; 0: Nicht benutzen; 1: Benutzen
0x20: Panorama-Name; (String); (Keiner); -
0x21: Horizontal scrollen (Integer); 0; 0: Nicht benutzen, 1: Benutzen
0x22: Vertikal scrollen (Integer); 0; 0: Nicht benutzen, 1: Benutzen
0x23: Horizontal automatisch scrollen (Integer); 0; 0: Kein Auto-Scrollen, 1: Auto-Scrollen
0x24: Horizontaler Auto-Scroll (Integer); 0; -8 bis 8
0x25: Vertikal automatisch scrollen (Integer); 0; 0: Kein Auto-Scrollen, 1: Auto-Scrollen
0x26: Vertikaler Auto-Scroll (Integer); 0; -8 bis 8
0x47: ????? (2 Byte, kein Integer, unsigned short)
0x48: ????? (2 Byte, kein Integer, unsigned short)
0x51: ????? (2 dimensional Arrangement)
0x5B: ????? (Integer)

Wer die letzten 4 kennt, ruhig sagen^^

---------------------------------------------------------------------------------

Reihenfolge der Grafikormatserkennung

Habt ihr mehrere Dateien mit gleichem Namen in einem Ressourcen-Ordner,
werden die Dateiformate in der Reihenfolge erkannt:
1.: BMP
2.: PNG
3.: XYZ
(der Maker zeigt nur in Ressourcenlisten das erstbeste an!)

Das gleiche gilt für das RTP:
1. BMP <RTP>
2. PNG <RTP>
3. XYZ <RTP>
(der Maker zeigt auch hier nur in Ressourcenlisten das erstbeste an!)
Eigentlich sollte es hier nicht auftreten, ausser ihr pfuscht am RTP rum.

Cherry
29.01.2008, 14:33
@MagicMaker:

Aufbau der LcfMapUnit? Spitze, danke! Hast du noch mehr derartiges auf Lager?? Und wo hast du das her? Selbst rausgefunden?

Wegen "ZeigTitel" statt "ShowTitle" und so: jap. genau. Übrigens getestet.

Das mit "NormalPlay" wusste ich nicht. Hat offenbar den selben Effekt wie "!TestPlay".


Genau da wo die Fonts stehen, könnt ihr andere
eintragen. Hier gilt wieder, die Zeichenlänge einzuhalten. Diesmal
seit ihr aber nicht auf genau die selbe Länge, sondern nur maximal
auf soviele Zeichen beschränkt. Alle Zeichen, die übrig bleiben,
müsst ihr im Hex-Bereich mit 00 überscheiben.

Stimmt nicht ganz

Es passen MEHR Zeichen rein, als drin war. Es sollten nur die letzten zwei NULL-Bytes nicht überschrieben werden.

Bei einer 2k-EXE sollten 10 Bytes bei RM2000 und 14 bei RMG2000 reinpassen.

mfG Cherry

MagicMaker
29.01.2008, 15:56
Alle Zeichen, die übrig bleiben, müsst ihr im Hex-Bereich mit 00 überscheiben.
Ich korrigiere mich, überschreibt sie mit dem Hexwert 20 (Leerzeichen)

~Zeichenzahl: Ja ok daran hatte ich nicht gedacht. Das ist noch vom
japanischen Original so wies mir scheint.

---------------------------------------------------------------------------------

LcfMapUnit

Nochmal zu 0x0A:
Hex: 0A 4C 63 66 4D 61 70 55 6E 69 74
Das 0A ganz vorne bestimmt, wie lang die Zeichenkette sein muss.
Also hier 0A (entspricht 10; L-c-f-M-a-p-U-n-i-t = 10 Zeichen).

Vieles kriegt man selber raus. Ich hab mich aber mal für mein fehlendes Zeug
bei der RPG2KDev-Seite von sue445 erkundigt.

0x47 | 下層マップ | 型が「2バイト符号無し整数(unsigned short)」で要素数が「マップの幅×高さ」の配列 | (省略無し) | 左上(0,0)から順に格納されている
0x48 | 上層マップ | 型が「2バイト符号無し整数(unsigned short)」で要素数が「マップの幅×高さ」の配列 | (省略無し) | 左上(0,0)から順に格納されている
0x51 | マップイベント | 2次元配列
0x5B | マップの保存回数 | 整数 | セーブデータロード時にここが変更されていると、「イベント開始条件」が「定期的に並列処理する」のイベントを最初から実行する
Ist japanisch, bin zum Übersetzen zu faul.

---------------------------------------------------------------------------------

Header von XYZ-Files (Offset; Länge; Inhalt):

0x00; 0x04; Identifikation (XYZ1)
0x04; 0x02; Bildbreite
0x06; 0x02; Bildhöhe

---------------------------------------------------------------------------------

Mehr als 9999 Events verwenden

Öffnet RPG2000.exe mit einem HexEditor.
Sucht nach der Zeichenkette "EV%.4d"

Die 4 ändert ihr in die Stellenzahl um, die ihr wollt.
Getestet mit: "%.6d", Maker funktioniert weiterhin.
Wobei es reicht, 5 zu nehmen. Bei dem Maximum von
500x500 sind 25000 Events eh das Grösstmögliche.

Insgesamt spuckt der Editor 3 Ergebnisse aus, ihr müsst es
bei allen ändern.

---------------------------------------------------------------------------------

MapEvent-Aufbau

OFFSET: Bezeichnung (Datenformat); Standardwert; Bemerkungen
0x01: Eventname (String); EV%.4d; bis zu 20 Zeichen
0x02: X-Koordinate (Integer); 0; -
0x03: Y-Koordinate (Integer); 0; -
0x04: ?????
0x05: [Daten der Eventseiten]

Eventseiten-Daten (unvollständig)

OFFSET: Bezeichnung (Datenformat); Standardwert; Bemerkungen
0x02: [Startbedingung]
0x15: Dateiname der Laufgrafik (String); keiner; -
0x16: ID der Laufgrafik aus dem Chipset (Integer); 0; ...
0x17: Richtung der Grafik (Integer); 2; 0=Hoch, 1=Rechts, 2=Runter, 3=Links
0x18: Laufframe der Richtung (Integer); 1; 0=Links, 1=Mitte, 2=Rechts
0x19: Transparent [unsicher] (Flag); 0; -
0x1F: Bewegungstyp (Integer); 0; 0=Still stehen, 1: Zuall, 2: Hoch-Runter, 3: Links-Rechts, 4: Held verfolgen, 5: Vor Held fliehen, 6: Definierte Route
0x20: Bewegungsfrequenz (Integer); 0; 1 bis 8

Startbedingungen

OFFSET: Bezeichnung (Datenformat); Standardwert; Bemerkungen
0x01: Bedingungen (Integer, 6Bit Flag); 0; Bit 0: Erster Switch; Bit 1: Zweiter Switch; Bit 2: Variable, Bit 3: Item besitzen, Bit 4: Held x in Truppe, Bit 5: Timer entspricht...
0x02: Switch1-ID (Integer); 1; -
0x03: Switch2-ID (Integer); 1; -
0x04: Variablen-ID (Integer); 1; -
0x05: Variablenwert >= (Integer); 0; -
0x06: Item-ID (Integer); 1; -
0x07: Held-ID (Integer); 1; -
0x08: Timerstand in Sekunden (Integer); 0; -

Cherry
29.01.2008, 17:40
thx, das erspart mir viel Arbeit!

>>> so wird der PP auch on-the-fly Events verändern können!
Das mit "1. Byte zeigt Länge" habe ich schon bemerkt beim auslesen der Hero-Names aus dem RAM.

mfG Cherry

MagicMaker
29.01.2008, 17:56
Während ich beim bearbeiten aus meiner Session gekickt wurde, schreibst du wieder, passt mir auch, dann kommt der Edit hier rein.

---------------------------------------------------------------------------------

Datenbank-Tab "Helden" (unvollständig)

0x01: Heldenname (String); keiner; -
0x02: Beruf (String); keiner; -
0x03: Dateiname der Laufgrafik (String); keiner; -
0x04: Position im Charset (Integer); 0; 1 bis 7 (Oben: 0, 1, 2, 3; Unten: 4, 5, 6, 7)
0x05: Transparenz (Flag); 0; 0=Nein, 1=Ja
0x07: Startlevel (Integer); 1; 1 bis Maximallevel
0x08: Maximallevel (Integer); 2000: 50, 2003: 99; -
0x09: ?????
0x0A: ?????
0x0F: Faceset-Datei (String); keiner; -
0x10: Face-Position (Integer); 0; 1 bis 15, Reihenfolge wie bei Charset
0x15: Zwei Waffen (Flag); 0; 0=Nein, 1=Ja
0x16: Feste Ausrüstung (Flag); 0; 0=Nein, 1=Ja
0x17: Automatisch kämpfen (Flag); 0; 0=Nein, 1=Ja
0x18: Starke Abwehr (Flag); 0; 0=Nein, 1=Ja

---------------------------------------------------------------------------------

Wichtig ausserdem zu vielem: Credit to sue445

Cherry
29.01.2008, 18:20
...wobei "String" in Wirklichkeit ein Integer ist, und zwar ein Pointer zu einer String-Struktur (1. Byte Länge, 2. - x. Byte String)

MagicMaker
29.01.2008, 19:03
Datenbank-Tab "Helden" (ETWAS vollständiger)

0x01: Heldenname (String); keiner; -
0x02: Beruf (String); keiner; -
0x03: Dateiname der Laufgrafik (String); keiner; -
0x04: Position im Charset (Integer); 0; 1 bis 7 (Oben: 0, 1, 2, 3; Unten: 4, 5, 6, 7)
0x05: Transparenz (Flag); 0; 0=Nein, 1=Ja
0x07: Startlevel (Integer); 1; 1 bis Maximallevel
0x08: Maximallevel (Integer); 2000: 50, 2003: 99; -
0x09: ?????
0x0A: ?????
0x0F: Faceset-Datei (String); keiner; -
0x10: Face-Position (Integer); 0; 1 bis 15, Reihenfolge wie bei Charset
0x15: Zwei Waffen (Flag); 0; 0=Nein, 1=Ja
0x16: Feste Ausrüstung (Flag); 0; 0=Nein, 1=Ja
0x17: Automatisch kämpfen (Flag); 0; 0=Nein, 1=Ja
0x18: Starke Abwehr (Flag); 0; 0=Nein, 1=Ja
0x1F: 各レベルごとのステータス (型が「2バイト符号無し整数(unsigned short)」で要素数が[6][最高レベル]の2次元配列) (省略無し) unsigned short status[type][lv];
[type] 0=MaxHP, 1=最大MP, 2=Angriff, 3=Abwehr 4=Intelligenz, 5=Tempo
Levels 2000: 0 bis 49 (=50)
Levels 2003: 0 bis 98 (=99)
0x29: Erfahrungskurve <Basis> (Integer); -, -
0x2A: Erfahrungskurve <Erhöhung> (Integer); -, -
0x2B: Erfahrungskurve <Korrektur> (Integer); -, -
0x33: Startausrüstung (型が「2バイト符号無し整数(unsigned short)」で要素数が[5]の1次元配列) (省略無し) 配列番号はそれぞれ; 0=武器; 1=盾;2=防具;3=兜;4=装飾品)
0x38: 素手で攻撃した時の戦闘アニメ (Integer)
0x39: ????? (Integer)
0x3E: ????? (Integer)
0x42: Hat was mit Skills zu tun (Integer)
0x43: Ebenfalls (?????)
0x47: Etwas über Statuseffekte (Integer)
0x48: Auch das hier (?????)
0x49: Attribute-Zueg (Integer)
0x4A: Auch hier (?????)
0x50: Kampfkommandos????? (Type "4-byte integer (int)" is the number of elements in a one-dimensional array of 6)

---------------------------------------------------------------------------------

LcfMapTree

0x0A: Zeichenkette "LcfMapTree" (davor die Länge dieser Kette als Hex [0A])

Einzelne Maps

0x01: Mapname (String)
0x02: Map-ID (Integer)
0x04: Encounter-Flag (Integer); keiner; 1=Normale Map, 2=Gebiet (AREA)
0x0B: BGM (Integer); keiner; 0=Übergeordnete Map, 1=Keine; 2=Eigene
0x0C: BGM-Dateiname (String); keiner; "(OFF)" = Musik aus
0x15: Kampfhintergrund (Integer); keiner; 0=Übergeordnete Map, 1=Keine; 2=Eigene
0x16: Kampfhinterund-Dateiname (String); keiner; -
0x1F: Teleport (Integer); keiner; 0=Übergeordnete Map, 1=Keine; 2=Eigene
0x20: Flucht (Integer); keiner; 0=Übergeordnete Map, 1=Keine; 2=Eigene
0x21: Speichern (Speichern); keiner; 0=Übergeordnete Map, 1=Keine; 2=Eigene
0x29: [Encounter-Gegnergruppen]
0x2C: Schrittzahl (Integer); 25; 0 bis 999
0x33: UNBEKANNT - 0x10 Byte lang...

Encounter-Gegnergruppen

0x01: Gruppen-ID (Integer); keiner; 1 bis [5000?]

---------------------------------------------------------------------------------

IDs der einzelnen Tiles im Chipset

Bild dazu:
http://imagesload.net/daten_no/1201655545_RM2K-Chipsets-TileIDs.png
Achtung! Nicht grade ein kleines Bild xD.

Kann man ja mal gebrauchen.
PS: Es ist noch nicht ganz fertig. Blöcke D1~12, E (Magenta) und F (Grün)
sind drin.

Zu vielem was ich poste: Credit to sue445

Es fehlen noch: A1, A2, B, C1, C2, C3

delaPipol
09.02.2008, 16:04
Hi people, I'm sorry but I don't speak German.

More about LMT file formathttp://www.multimediaxis.de/images/smilies/old/s_009.gif:

0x0A+"LcfMapTree" header

Rembember: All integers are in BER format

0x01: Map name
0x02: Parent Map ID
0x03: Tree depth
0x04: 0=root,1=map,2=area
0x05: horizontal scrollbar position
0x06: vertical scrollbar position
0x07: has child
0x0B: BGM: 0=from parent map, 1=don't change, 2=use specified
0x0C: BGM block: 1=BGM file name, 2=fade in, 3=volume, 4=tempo, 5=balance (millisecond values)
0x15: battle background: 0=from parent map, 1=from terrain data,2=use specified
0x16: battle background file name
0x1F: teleport 0=from parent map, 1=can, 2=cannot
0x20: scape 0=from parent map, 1=can, 2=cannot
0x21: save 0=from parent map, 1=can, 2=cannot
0x29: monster parties to encounter
0x2C: encounter steps
0x33: area coordinates
0x5B: number of times saved (used for trial version :D)

Special events: Party and vehicle data:
You have already documented right :)

End of file: Tree data order and selected editor branch ^^



Credits: WhoopA, sue445, rmcollegial project, delaPipol, Lobomon

We are making a free (GPL) cross-platform RPG Maker 2000/2003 compatible clone in SDL, if you are interested, please look at http://easyrpg.sourceforge.net/ or contact to me :).
An game editor using wxWidgets will be in the future, too.

We already have working stdout data readers for LDB, LMU and LMT. We have a working graphical LMU reader in SDL, by Damizean and Lobomon.

More info about stdout implementation and downloads at http://www.easy-rpg.com/forums/showthread.php?action=lastpost&tid=1119

Greets!

Cherry
15.02.2008, 19:31
Ich dachte, sowas gehört einfach mal in den Profiwissenthread, damit es nicht verkommt (der All-In-One-Patch von R-PG ist wirklich 1A!):


Was kleines für alle, die es vielleicht brauchen:

http://cherry1.ch.ohost.de/Hyperrm2k.rar

Dieser Patch, der die RPG2000.EXE patcht, enthält folgendes:

- Update auf v1.10c
- Sehr guter Deutschpatch (Credits an Redbounty)
- 8stellige Variablen (auch bei "Input Number"!), also -99 999 999 bis 99 999 999 (Wenn man versucht, eine Vari, die mehr als 6 Stellen hat, über F9 zu ändern, kann es zu Problemen kommen!)
- 500 000 Variablen, Switches, Helden, Items, Monster, etc.
- Unterstützt 100 Pics (WICHTIG! Geht nur, wenn dies die RPG_RT.EXE auch unterstützt! Wer die RPG_RT.EXE mit dem DestinyPatch auf 100 Pics gepatcht hat, kann mit dieser EXE auch bis 100 einstellen. Wer die originale RPG_RT.EXE hat, kann nur bis 20 einstellen, bei höheren Zahlen stürzt das Spiel ab. Wer den Pic-Patch hat, kann bis 50 verwenden)
- Bei "Rotation" und "Ripple" bei Show/Move Pic kann man statt 1 bis 9 nun -20 bis 20 einstellen. So kann man den Effekt rückwärts ablaufen lassen, oder bei "0" pausieren lassen. (Credits an Evilshenlong)
- 10 000 Frames bei den Battle Animations

Anleitung:
Um diesen Patch verwenden zu können, braucht man den ungepatchten, englischen Maker Version 1.05b
Man entpackt die beiden Datien, öffnet die "Lips.exe" und klickt auf "Apply IPS Patch". Dann muss man die Datei "Hyperrm2k.ips" auswählen. Im nächsten "Öffnen"-Dialogfeld muss man unten "All Files (*.*)" wählen und dann die RPG2000.EXE öffnen. Fertig.

mfG Cherry

EDIT: @TheDude: Possible, aber gibt es da nicht schon ein Prog für? Wenn nicht, setz ich mich mal ran (ist ja nicht all zu schwer)

EDIT²: An alle, die schwer von Begriff sind: NEIN, ich veröffentliche hier keine RPG2000.EXE sondern nur einen IPS-Patch, und das ist hier erlaubt.

EDIT³: Hier gibts noch den sehr interessanten "All-in-one-Patch" von den Machern von R-PG Minerva: http://www.multimediaxis.de/showthread.php?t=48632


- Tastenpatch
- MP3/Ogg etc. Patch
- Mauspatch
- 50 Pichturepatch
- evtl. Startmenüpatch
- Echtzeitspatch
- Plugin-System

Funzt bei mir einwandfrei.

EDIT^4: Ich glaube, ich mache mal eine Liste aller mir bekannten Patches/Tools rund um den RM2k(3)! ;) Sind ne ganze Menge...

mfG Cherry

MagicMaker
16.02.2008, 00:25
ach dieser 1.10c ist von R-PG? hehe, ehrlich gesagt, hab das nich gewusst.

~Variablen-im-Debugfenster:
Ich habs zwar schonmal geschafft, die Stellenzahl zu erhöhen, aber, und jetzt
kommts: ich konnte das Anzeigefenster nicht breiter machen und da konnte
er nicht alle anzeigen. Das selbe Problem ergibt sich in diesem Patch.

~"500 000 Variablen, Switches, Helden, Items, Monster, etc.":
Vorallem bei Variablen und Switches halte ich das für übertrieben, es ist
Schwachsinn und kostet beim Öffnen der Switch- bzw Variablen-Auswahl
zuviel Rechenzeit.


Um diesen Patch verwenden zu können, braucht man den ungepatchten, englischen Maker Version 1.05b
Habs auch mal mit 1.07b probiert, da hat er auch funktioniert :-.

~"10 000 Frames bei den Battle Animations":
Nunja, wer macht den solche "BattleAnimationMOVIIIIEEES" ?
Mir solls egal sein xD.

--------------------------------------------------------------------------

Habe noch beim RPG Maker Collegial Project was interessantes gefunden^^:


---RPG Maker LcfDataBase---

Introduction
Here it is, the 200+ kilobyte database that holds all that information you see when you hit F8. The smallest I’ve ever seen this monster is 5B; compare that to the smallest lmu file (2KB) or lmt file (1KB). Moreover, larger map or tree files repeat in an easy-to-specify pattern, whereas the database file has a whole lot of data that is very… particular. You’ll forgive me, then, if this document is nowhere near complete.


Locking Database?
Something you may wonder is if an .ldb file is, like some sites suggest, a locking data-base for Microsoft Access. Actually, it’s just following RPG Maker’s .lxx syntax (mt = map tree, mu = map unit, db = database, sd = save data). I can only guess that LCF are the initials of someone special, or some homebrew data storage methodology. It just so happens that .ldb doubles as the extension for Microsoft’s temporary locking file; you can’t, say, open it in Access.


Completeness
I haven’t even started, and already I know that there’ll be things I miss. So, please, drop me an email if you figure out anything in red, or any “undefined” imperials:
Sorlok_Reaves@yahoo.com


The Database File Format
<ldb_database_file> ::= <file_type><section>+
<file_type> ::= <str_len> <character>+
<section> ::= <section_imp> <num_bytes> <byte>+
<section imp ::=
0B -> “heros”
0C -> “skills”
0D -> “items”
0E -> “monster”
0F -> “monster party”
10 -> “terrain”
11 -> “attribute”
12 -> “conditions”
13 -> “battle_anims”
14 -> “chipsets”
15 -> “vocab”
16 -> “settings”
17 -> “switches”
18 -> “variables”
19 -> “common_events”


Moving On From Here
After lexing the file type, one can segment the remaining file very easily. In practice, this is quite useful. If, for instance, a map has an inordinate number of common events, someone searching only for the chipset specifications might be forced to wait way too long, or he might run out of memory. This lexer, then, will have flags that determine which segments to read. The following sections, then, will be out of order. Since I need chipset information post-haste, here we go:


Chipsets
<chipset_section> ::= <imp:14> <
Guess: chipsetid, XX, prop01:name, num_chars, name:char+, prop02:gfx_file, num_chars, gfx_file:char+, 03:? num_bytes, byte+, 04:?upper_tile_passability?, ???


---RPG Maker LcfMapUnit---

Introduction
Waah! I just totally deleted the 36-page file I was working on! And it’s all my fault! Oh well, time to start over. Brevity is now the soul of… this paper.


The Map File
The map file is composed of four sections, with a “size” seperator in between. This is beneficial; one can, say, skip straight to the events section using nothing more than a simple hand-coded lexer.
<lmu_map_file> ::= <file_type> <initial_properties> <size_hint_lower> <lower_map_tiles> <size_hint_upper> <upper_map_tiles> <size_hint_event> <event_section> <footer_section>


The File Type
The file type consists of a length hint, followed by an (ascii) string describing the content of that file. For .lmu files, this is “LcfMapUnit.” Consequently, this is one of the things Rast’s plugger modifies to “protect” a project.
<file_type> ::= <str_len><ascii>*


The Initial Properties
Initial properties of a map include its background, tileset, and scroll option. Anything with a “parent map” option (e.g. background music, teleport enable) are not represented here, neither is the map name. Since this section has no size_hint before it, we can’t skip it when parsing the map. Hence, RPG Maker takes several measures to ensure that this section is as small as possible. In particular, most commands have defaults that are simply not included in the file if they are not altered. Hence, some knowledge is implicit. (For the next few sections, imperials in italics are optional properies.) Of course, there are some dependencies here (autoscroll cannot appear without pan being checked), but since RPG Maker stores old values (i.e. speed) even when a box isn’t checked, it’d be more trouble than it’s worth to determine these, and far too inefficient to lex them. Note that, unless otherwise noted, productions/tokens undefined in a code box are assumed to be rpg_ints, which are described a few sections from now.
<initial_properties> ::= <long_property>+
<long_property> ::= <imperial><arg_len><arg_value>
<imperials> ::= (01,Chipset) , (02,Width) , (03,Height) , (0B,ScrollType) , (1F,UseParallelBkgrd?) , (20,BkgrdFileName) , (21,HorizPan?) , (22,VertPan?) , (23,HorizAuto?) , (24,HorizAutoSpd) , (25,VertAuto?) , (26,VertAutoSpd)


The Lower Tiles
The Lower tiles consist of the size_hint, followed by that many bytes. Two bytes comprise one map tile. The lower tiles are a bit complex, as the data for the derived tile is shown, not the logical tile. This causes no problems for the lower tiles that aren’t dynamic (i.e., rocks, wood, or any of the upper tiles.) However, for tiles such as grass, sand, and water, the logical tile (the one you select in RPG Maker’s map editor) differs greatly from the physical one (the actual 16x16 square shown to you in the editor screen.) Hence, whilst placing a table tile in the middle of a set of rug tiles will only change that tile’s value, placing it in the middle of a patch of ocean tiles will change its value and the values of the 9 adjacent tiles. (Note, again, that the grammar I’m producing allows maps that cannot possibly be created in RPG Maker. For instance, <tile>* in the grammar below is completely impossible; no map can have fewer than 20x15=600 tiles.)
<size_hint_lower> ::= <imperial:47><value>
<lower_tiles> ::= <tile>*
<tile> ::= <byte><byte //e.g. “05 3F”


RPG Maker’s Integer Datatype (≥ 0)
rpg_int binary* actual_value
1E 00011110 30
14 00010100 20
7F 01111111 127
81 00 10000001 00000000 128
84 58 10000100 01011000 600
FF 7F 11111111 01111111 16383
81 80 00 10000001 10000000 00000000 16384
81 AE 10 10000001 10101110 00010000 22288
BD 84 3F 10111101 10000100 00111111 999999

* black values are directly converted to decimals. (1=1, 10=2, etc.)
red values are flags denoting “multiply by 128” if true.
blue values start counting at 128 (1=128, 10=129, etc.)
green values are flags indicating, if true, to “multiply by 16384”
purple values start counting at 16384.
Note that the size_hint above has no length_hint. This is because RPG Maker uses the first bit of each integer to designate if that integer will continue. This allows one to create arbitrarily long integers without explicitly stating their length from the get-go. In all honesty, I’m not sure why .lmu files provide length_hints at all; size_hints for strings make sense, and num_arg_hints for functions are a must, but the so-called “rpg_int”s provide their own built-in length hints. It’s a compact system, for positive numbers at least. Enough theory, here’s some examples:


The Upper Tiles
The upper tiles are stored in a manner similar to the lower ones, except without the complication of derived versus logical tiles. The two sections even have the same size_hint, although the imperial is different.
<size_hint_upper> ::= <imperial:48><value>
<upper_tiles> ::= <tile>*


The Event Settings
Here’s where it gets a bit finnicky. The events section basically consists of a size_hint, followed by a number of events. Going down the line, events have their own settings, and a number of pages. Each page has its own settings, and a number of event_commands. These in turn have settings, and two (move and shop) have item or route lists. A few also allow event commands to be placed inside themselves! Size_hints are useful here, as are depth_hints. But we’re getting ahead of ourselves.
<size_hint_events> ::= <imperial:51><value>
<event_section> ::= <num_hint><event>*


Events
Each event consists of an id number, followed by some properties of the same form as map events. Following this, there are an arbitrary number of pages.
<event> ::= <id> <long_property>+ <page_bytes> <num_pages> <page>+
<imperials> ::= (01,EventName) , (02,posX) , (03,posY) , (05,size_hint_pages)
<page_bytes> = <size_hint_pages> <rpg_int>


Pages
Pages are composed of a number (similar to an id), some conditions which this event must satisfy, some graphical, activation, and other properties of the event, a route that it moves by, two (similar) size_hints, and some commands. It terminates with a page_end character. Presumably, this was included origionally to test map files; the size_hint renders this token unneccessary (although it would help a simple lexer search for, say, the number of event_commands without extending the lexer. Note that there are other ways of interpreting the data in .lmu files. In general, I have treated these map files as imperial-based data structures. This viewpoint, together with size hints, has helped to clarify a lot of “lost” bytes that would otherwise make no sense. Moreover, using this method, imperial numbers line up nicely. It was quite obvious when many of my initial guesses started at 02 that I was doing something wrong. The main contestable area which remains is that some length_hints could be construed as num_arg_hints. In general, though, this makes little sense. What kinds of imperials would express multiple properties. The obvious answer is “event_commands”; thus, num_arg_hints are used for these cases. A few other cases (one’s route) also require this distinction.
<page> ::= <number> <size_hint_ec> <event_conditions> <event_properties> <route> <size_hint_long_ecmd> <size_hint_short_ecmd> <event_command>* <page_end:00 00 00 00 00>
<size_hint_ec> ::= <imp:02><size_bytes>
<event_conditions> ::= <long_property>+ <end_ec>
<imperials> ::= (01,BoxesChecked) , (02,valSwitchA) , (03,valSwitchB) , (04,valVariable) , (05,valVarCmp) , (06,valItemCmp) , (07,valHeroCmp) , (08,valTimerCmp)
<end_ec> ::= 00
<event_properties> ::= <long_property>+
<imperials> ::= (15,pageGrahpic) , (16,pageGraphicTile) , (17,unknown*) , (19,semi-transparent) , (1F,moveType) , (20,moveFrequency) , (21,startConditions) , (22,layer) , (23,parallel) , (24,animType) , (25,moveSpeed)
<route> ::= <imp:29> <size_hint_r> <num_moves_long>? <num_moves_short> <move>* <repeat_moves>? <ignore_illegal_moves>? <null>
/* Note: num_moves tell you how many moves there are, so the <null> isn’t included. Size_hint_r, however, tells you how many bytes are left in <route>, so it includes the final <null>. Logically, they should be lexed like the global map file is. We lex them together because it is unlikely that this section will ever need to be skipped. */
<num_moves_long> ::= <imp:0B><length_hint><value>
<num_moves_short> ::= <imp:0C><value>
<move> ::= // See next paragraph.
<size_hint_long_ecmd> ::= <imp:33><length_hint><value>
<size_hint_short_ecmd> ::= <imp:34><value>
<repeat_moves> ::= <imp:15><length><value>
<ignore_illegal_moves> ::= <imp:16><length><value>
* Note: I’m still trying to figure out what this does. Also, does anyone know what happened to imperial 18? This isn’t so worrisome; the developers may have dropped a feature further into development. And thoughts on this can be sent to:
Sorlok_Reaves@yahoo.com

Route Commands
These commands are actually duplicated in the “move event” event_command; not surprising, since RPG Maker pulls up that very window to set an event’s route. Most consist of a one-byte imperial, but some may have additional arguments. Check the lmu.sable file provided for a full specification; several examples are given below.
<step_up> ::= 00
<turn_quarter_right> ::= 10
<move_frequency_down> ::= 1F
<transparency_up> ::= 28
<switch_on> ::= 20 <switch_ref>
<switch_off> ::= 21 <switch_ref>
<chage_grapihc> ::= 22 <length_hint> <ascii>+ <rpg_int: chip_id>
<play_sound> ::= 23 <length_hint> <ascii>+ <rpg_int: volume> <rpg_int: tempo> <rpg_int: balance>


Event Commands
This is where things get a bit confusing. First of all, the long_property values you’ve seen so far are no longer used. Rather, each value now takes the general form:
<event_command> ::= <imp> <depth> <str_len> <ascii>* <num_args> <rpg_int>* <extra_stuff>?
In this scheme, the imperial serves the same identification purpose it did for long_properties —except that it consists of two bytes. The depth of an argument is its nesting level; most depths are usually 00 (the default) or 01 (for, say, a “Show Choice”’s alternatives, or elements in a “Cycle.”) With Cycles within Forks, Show Choices within “Successful” branches of Inns, and other nonsense, a command’s nesting level increases linearly. The string length argument is generally 00, but can be set if certain commands (“Set hero name”, “Show picture”, etc.) require an outside reference or string input. Next comes a num_args_hint, followed by (surprise surprise) a number of arguments. This is almost redundant, since no “compression” of arguments takes place —any event_command will always have the same number of arguments. The exceptions are the “Move Event” and “Call Shop” commands, both of which take a varying number of moves/items. Finally, some extra_stuff may appear tacked onto the end of this command for, say, multiple-line message boxes, or anything with a branch. These aren’t of uniform structure for all event commands, so they need to be dealt with on a case-by-case basis. And, since we’re lexing all ec’s into their own unique nodes on the AST, we’ll do just that!



Sample Event Commands
There are a lot of event commands, and listing them all here is pointless (many are similar in style and differ only in their imperials.) Rather, we shall merely list several standard and non-intuitive ones.

<show_message> ::= <imp:CE,7E> <depth> <str_len> [line1]:<ascii>* <num_args> <additional_line>*
<additional_line> = 81 9D 0E <depth> <str_len> <ascii>* <null>

<select_face> ::= <imp:CF,12> <depth> <str_len> [gfx_file]:<ascii>+ <num_args:3> <chip> <side> <flipped>

<show_choice> ::= <imp:CF,1C> <depth> <str_len> [full_title]:<ascii>* <num_args> <default_choice> <choice_opt>*
<choice_opt> ::= <imp:81,9D> <type(2C|2D)> <depth> <str_len> [case_title]:<ascii>* <num_args> <choice_num>? <event_command>* <continue>? <case_closed:00,00>
<continue> ::= <imp:0A> <value>

<input_number> ::= <imp:CF,26> <depth> <str_len> <num_args:2> <num_digits> <variable_num>

<change_variable> ::= <imp:CF,6C> <depth> <str_len> <num_args:7> <referrent> <range_low> <range_high> <set_option> <reference> <value> <misc_option>
/* The “referrent” option shows up quite often. Here, it denotes {00:one, 01:range, 02:variable} */

<take_damage> ::= <imp:D2,04> <depth> <str_len> <num_args:8> <target_reference> <target_id> <attack> <def%> <mind%> <variance> <get_opt> <get_value>

<start_combat> ::= <imp:D3,56> <depth> <str_len> <background_file>? <num_args> <enemy_group_reference> <enemy_group_id> <battle_bkgrd_opt> <escape_case_opt> <defeat_case_opt> <first_strike_opt> <general_branch>*

<general_branch> ::= <imp:81:A1> <type> <depth> <str_len> <num_args> <event_condition>* <continue>? <case_closed>?

<call_shop> ::= <imp:D3,60> <depth> <str_len> <num_args> <shop_type> <deal_success_opt> <msg_style> <item_id>* <general_branch>?

<move_event> ::= <imp:DB,42> <depth> <str_len> <num_args> <eventID> <frequency> <repeat?> <ignore_impossible?> <move>*

<fork_event> ::= <imp:DD,6A> <depth> <str_len> [argument_string]:<ascii>* <num_args:06> <fork_conditions> <else_opt> <fork_branch>+
<fork_conditions> ::= <fcond_switch> | <fcond_variable> | <fcond_timer> | <fcond_money> | <fcond_item> | <fcond_hero> | <fcond_event> | <fcond_vehicle> | <fcond_decision_key> | <fcond_bgm_done>
<fork_branch> ::= (<imp:81,AB><type><depth><str_len><num_args>)? <event_command>* <continue>? <case_closed>?
<case_continue> ::= <imp:0A 01> <nulls: 00 00>


<cycle> ::= <imp:DF,32> <depth> <str_len> <num_args:0> <cycle_branch>+
<cycle_branch> ::= (<imp:81,AD><type><depth><str_len><num_args>)? <event_command>* <continue>? <case_closed>?


<comment> ::= <imp:E0,7A> <dpeth> <str_len> [line1]:ascii+ <num_args:0> <comment_line>*
<additional_line> ::= <imp:81,AF> <type> <depth> <str_len> [text]:ascii+ <num_args:00>


A note about event IDs:
These babies use the special character “CE”, followed by another byte, to designate the “special” map events: {11:Hero, 12:Boat, 13:Ship, 14:Airship 15:this_event}. This begs the question, then, of why we have “Set Vehicle Place” and “Goto Memorized Place” as commands at all, especially since “Set Event Place” had to specifically disable the Hero, Boat, Ship, and Airship options. On a slightly related note, this means that you can’t have more than 10,000 events on any one map. Rast, I’m sure, ran into this problem quite often in Dragon Destinies I and II. Oh, and while we’re at cutoff points, the highest integer RPG Maker can recgnize (with three digits) is 2,097,151. Fortunately for us, numbers don’t go that high, so this, also, isn’t a major issue.


A Possible Inadequacy?
One could make the argument that, technically, the imperial of “scope” is 81, and that AB, AD, etc. denotes the “kind” (fork, cycle, etc.), followed by the “type” (for “Show Choice” events, mainly.) We, however, will gloss over this, since it’s not such a big deal.


Fork Conditions
Fork conditions are a bit messy, since variables are multiplexed.
<fcond_switch> ::= <imp:00> <switch_number> <switch_value> <garbage> <garbage>
<fcond_variable> ::= <imp:01> <variable_number> <reference> <compare_to> <compare_by>
<fcond_timer> ::= <imp:02> <time_sec> <compare_by> <garbage> <garbage>
<fcond_money> ::= <imp:03> <money_amt> <compare_by> <garbage> <garbage>
<fcond_item> ::= <imp:04> <item_ID> <has_opt> <garbage> <garbage>
<fcond_hero> ::= <imp:05> <hero_ID> <hero_check>
<hero_check> ::= <hc_in_party> | <hc_name_is> | <hc_level_abv> | <hc_hp_abv> | <hc_skill_has> | <hc_equipped_with> | <hc_cond_is>
<hc_in_party> ::= <imp:00> <garbage>
<hc_name_is> ::= <imp:01> <garbage>
<hc_level_abv> ::= <imp:02> <value>
<hc_hp_abv> ::= <imp:03> <value>
<hc_skill_has> ::= <imp:04> <skill_ID>
<hc_equipped_with> ::= <imp:05> <item_ID>
<hc_cond_is> ::= <imp:06> <cond_ID>
<fcond_event> ::= <imp:06> <event_id> <face_dir> <garbage> <garbage>
<fcond_vehicle> ::= <imp:07> <vehicle_id> <garbage> <garbage> <garbage>
<fcond_decision> ::= <imp:08> <garbage> <garbage> <garbage> <garbage>
<fcond_bgm_done> ::= <imp:08> <garbage> <garbage> <garbage> <garbage>


A Second Possible Inadequacy?
Another thing you might have noticed is how stand-alone the “additional_line” tag for comments looks. One might even conclude that, since it has its own pseudo-imperial, that it should be parsed as its own command. I think it should not, mainly because:
1) It has a type, and no other event_commands do.
2) You can’t have a stand-alone “line 2” of a comment —it must follow a traiditonal comment command.
3) This cannot be done with similar event_commands such as “Fork”, which don’t have the imperial for the first case.


Improvements
This particular grammar is very, very space in-efficient. Essentially, we're saving as much information as possible, useful or otherwise. As soon as this parser is fully debugged, one will be provided which takes efficiency into consideration and saves the bare-bones minimum for each production. This includes trashing all length hints and unneccesary options, such that a production contains other (sub) productions only when the number of sub_productions is indeterminate. For example:
<map_properties> ::= <chipset>? <width>? <height>? <scroll_type> ...,
with these custom tokens picked out by our custom lexer. Note that we'd need to introduce a new token, list_end, for the "call shop" and "move event" commands.
So, basically, this parser creates a concrete syntax tree, but a future parser
will utilize our custom lexer to bulid an abstract syntax tree. The first
is more accurate to how .lmu files appear; the second is faster and takes up
less memory to store (and brain power to think about.) It is a bit uncommon for a lexer to influence how the abstract syntax tree is formed, but in this case the simplicity of RPG Maker’s map files allows for this small optimization.


A note on EBNF-RS
This should really have gone at the start of the report, but things lined up so nicely and, besides, if I’d tidied up my grammar I wouldn’t have needed this paragraph. Basically, the syntax used here is a very informal variant of EBNF notation. The main things you may not have already figured out are:
1) <random> ::= <chipset>? <ec>* <footer>+ means that the “random” production consists of zero or one chipsets, zero or more ec’s, and one or more footers.
2) <random2> ::= <opt> | <nop> means that the “random2” production contains either an “opt” or a “nop” token/production.
3) <imp:05,BC> is just a convenient way of saying “imp is the hex string 05BC”
4) <random3> ::= [options]:<list_item>+ The only thing you might not recognize here is the [options]: tag. This means that the result of list_item is referred to as “options.” I use this notation when it’s not clear what, say, “ascii+” should be considered.


---RPG Maker LcfMapTree---

Introduction
Rather than try to lex the database next (which doesn’t look fun at all), I’ll attempt to lex the map tree next. See the RPG_Maker_Map_Grammar_Guide for an explanation of RPG Integers, the syntax used in this guide, and other particulars.


Properties not in the lmt file
The following properties do not appear in the lmt file, but in the respective lmu files for each map:
Chipset
Width
Height
ScrollType
UseParallelBkgrd?
BkgrdFileName
HorizPan?
VertPan?
HorizAuto?
HorizAutoSpd
VertAuto?
VertAutoSpd


A word about the map tree file
The map tree file is a lot simpler than the individual maps’ files. However, there’s a few things in it that remain a myster to me. As always, if you can decipher the “unknown” imperials (even if they turn out to be size hints) send me an email:
Sorlok_Reaves@yahoo.com


The Map Tree File Format
<lmt_map_tree_file> ::= <file_type> <tree_node>+ <map_end>
<file_type> ::= <str_len> <character>+


The end of the file
I haven’t fully figured out what all that junk at the end of the map tree file means. For lexing purposes, you’ll basically just detect a map number followed immediately by a null terminal, and then a handful of digits (which varies depending on the map, but seems to increase in length as the number of nodes increases.) For now, we will lex it as a node, and cut off program execution at that point.


The Tree Nodes
Every map has at least one tree node; the root node. This is the folder icon at the top of the RPG Maker’s map tree viewer. Following this, a number of other nodes are listed in ascending order. These are either maps or areas, and they form a tree structure through the use of a “parent” reference.
As an aside, we will lex all tree properties and interpret them in the lexer itself. I realize now the foolishness of ignoring size hints in the lmu parser. We will also lex all numbers as rpg_bytes, and convert to integers in the lexer. This avoids potential lexing bugs that plague the lmu lexer.
<tree_node> ::= <tree_node_id> <end_of_file: 00>? <tree_property>+ <area_layout> <null: 00>
<tree_property> ::= <long_property> | <background_music> | <monster_encounters>
<long_property> ::= <imperial> <size_hint> <byte>+
<imperials> ::= (01,Map Name) , (02,Parent) , (03,Tree Depth) , (04,Type of Node) , (05,Unknown Property 1) , (06,Unknown Area Property) , (07,Has Children) , (0B,BGM Options) , (15,Battle Background) , (16,Battle Background File) , (1F,Teleport Option) , (20,Escape Option) , (21,Save Option) , (2C,Encounter Steps) (Italics denote optional properties)
<background_music> ::= <imp:0C> <size_hint> <sub_imp:01> <str_len> <character>* <null:00>
<monster_encounters> ::= <imp:29> <size_hint> (<none:00> | <monsters>)
<monsters> ::= <
<area_layout> ::= <imp:33><size_hint><x_min_byte>4 <y_min_byte>4 <x_max+1_byte>4 <y_max+1_byte>4


A note on byte order
The size of the area_layout is fixed at 0x10. Each value (x_min, y_max+1, etc.) is made of four bytes, arranged in reverse order.


(0C,BGM File Name) ,


0A – Length Hint
“LcfMapTree”
09 — Number of maps, areas, and root nodes(1)


End:
09 00 -- 01 03 08 02 04 05 06 07 08 01 01 23 00
11 00 02 01 03 0A 0C 0D 0E 0F 10 04 05 06 07 08 09 0B 10 01 01 10 02 01 0A 03 01 0B 00

Diese Dokumente, ein weiteres Dokument, ein Readme und ein Programm, das
"RPG Hex Strings" zu Integern und Hex-Werten macht, und was-weis-ich-
was-noch-alles...:

http://sourceforge.net/project/showfiles.php?group_id=144960

netwarrior
16.02.2008, 14:49
Habs auch mal mit 1.07b probiert, da hat er auch funktioniert :-.
Ich habe ihn auch ausprobiert.
Wenn man nun ein Pic > 20 macht kommt folgende Fehlermeldung:

?????'Map0000.lmu'?????00403B48?????0000001????Writing?????????

MagicMaker
17.02.2008, 15:36
Hab noch eine Seltsamheit am RM2003 gesehen die Dr. Sophie gefunden hat:


Dr. Sophie hat bei rpg-elite folgendes geschrieben:

Vielleicht wäre es mal eine ganz nette Idee, seltsames Verhalten des Makers (oder nicht ganz offentsichtliche Funktionen/etc.) irgendwo niederzuschreiben, vielleicht ist es für den einen oder anderen ganz interessant oder sogar hilfreich

Ich fange mal an, mit etwas, was ich neulich herausgefunden habe:

Wenn man einem Hero keine Grafik zuweist (also wenn die Vorschau bei dem Herocharset in der Datenbank schwarz ist), dann läuft man mit dem 1. Tile (ganz oben links) des Upper Layer-Tilesets herum.
Da die meisten Tilesets an dieser Stelle keine Grafik haben (wie es ja auch eigentlich sein sollte), fällt das aber nicht wirklich auf.. ist aber trotzdem ein interessantes Verhalten.
(Getestet in 2003, weiß nicht, ob es in 2000 auch so ist)
Ob das auch so ist? Ich denke mal schon, wieso sollte Dr. Sophie auch Mist erzählen xD...


@netwarrior: Ist schon seltsam, vielleicht nicht die richtige RPG_RT? Was anderes fällt mir nicht ein ~ nunja, keine Software ist perfekt.

Cherry
17.02.2008, 21:05
@MagicMaker: ich glaube, du verwechselst da was. Der erste Download in meinem Post, das mit den 500000 Varis ist von mir. Der 2. Download ganz unten, mit dem Tasten, Picture und Startmenüpatch ist von r-pg!
achja, in deinem Post steht, dass unbekannt ist, wofür das Lcf steht - es steht für Lucifer, einem der Programmier des Makers

Teflo
20.02.2008, 15:34
Ich hab mal etwas mit Pictures rumprobiert, insbesondere mit der Dreh-Funktion. Ich hab irgendwann den Powermode 2003 ausprobiert, weil mich es interessiert hat, dass man Pictures in beide Richtungen drehen kann.
Ich hab mal geguckt, wie lange eine Umdrehung für die einzelnen Zeiten benötigt, sowie die Gradzahl pro 0.0 Sec ausgerechnet. Ich hab folgende Ergebnisse rausbekommen (Leider noch nicht vollständig):


Geschwingigkeit= 1x
Dauer für 1 Umdrehung= 4,2 S. + 3x 0,0= 255x 0,0 (pro 0.0 1,4°)
Dauer für 1/4 Umdrehung= 63,75x 0,0~ 1,0 S. + 4x 0,0

Geschwindigkeit= 2x
Dauer für 1 Umdrehung= (4,2 S. +3x 0,0)/2= 2,1 S. +2x 0,0 (pro 0.0 2,8°)
Dauer für 1/4 Umdrehung= (1,0 S. + 4x 0,0)/2 = 0,5 S. + 2x 0,0

Geschwindigkeit= 3x
Dauer für 1 Umdrehung= 1,4 S. + 1x 0,0

Geschwindigkeit= 4x
Dauer für 1 Umdrehung= (Geschw. 2x)/2

usw.
Wir ihr seht, werden die Zeiten für 2x zu 4x verdoppelt. Für 4x zu 8x wirds auch verdoppelt. Für die anderen Zeiten müsst ihr die Zeiten von 8x * die Geschwindigkeit zum ausrechnen. Ich werds demnächst noch vervollständigen.
Achja! Wenn jemand herausfinden sollte, dass hier irgendwas nicht stimmt oder falsch ist, kann dieser gerne Bescheid sagen, damit ichs ändern kann!

SnakePT
22.02.2008, 19:42
hey leute ich bin seit langer zeit nicht mehr hier gewesen und wollt mal wieder hallo sagen und ne frage stellen^^
weiß jemand wie der rm2k3 die kämpfe vom standard ks berechnet? sorry wenn das schonmal kam

MagicMaker
21.04.2008, 19:32
weiß jemand wie der rm2k3 die kämpfe vom standard ks berechnet?
Meinst du zB die Schadensberechnung und wann wer dran ist? Also beim
RM2K stands in der Hilfe, schau mal in deiner RPG2003.hlp genau nach,
müsstest du finden.

--------------------------------------------------------------------------

Hier ist nochmal der XYZ-Dateiaufbau, diesmal von Janus.
Ich nehme an es müsste komplett sein.


RM2k XYZ Graphics Format
Simple documentation file v1.0 by Janus (janusfury@citlink.net)

Header:
4 bytes: XYZ1
2 bytes, unsigned int: Width
2 bytes, unsigned int: Height

Data:
ZLib-compressed. Use ZLib.dll uncompress to decompress it...
The output size of the data is (image and palette):
(Width * Height) + (256 * 3)
The input size of the data is:
FileSize - 8
In english, the data starts after the header and ends at the end of the file, and the image, when decompressed, is just a palette and then image data.
The palette is simply a series of colors in RGB order, no 4th byte for the palette entries.
The data is just a bunch of palette indexes, in standard x,y order.

Enjoy! :)
Gefunden auf Wotsit.org ("what's it?")

Cherry
21.04.2008, 19:52
Weiß ich schon lang. Das stammt nämlich in WIRKLICHKEIT von >>>da (http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/r/rm/rm2k/)<<<, da sind auch die anderen Datenspezifikationen nochmal.

SnakePT
22.04.2008, 16:29
ja meinte das mit der berechnung und wer wann dran ist. aber hab keine hlp datei bei rm2k3 weiß jemand ne seite wos die gibt?

Cherry
07.09.2008, 20:54
RM2k(3)-Clipboard-Formate:

560 - ???
561 - ???
562 - Map-Ausschnitte
563 - Events
564 - Event-Seiten
565 - ???
566 - Event-Befehle
567 - Move Event-Befehle
568 - Maps/Areas
569 - Monster-Aktionen
570 - BA-Effekt-Elemente
571 - ???
572 - ???
573 - BA-Bild-Elemente
574 - Helden
575 - Items
576 - Skills
577 - Monster
578 - Monstergruppen
579 - Terrains
580 - Attribute
581 - Zustände
582 - BAs
583 - Tilesets
584 - Common Events
585 - ???
586 - ???
587 - Klassen (2k3)
588 - Battle Sprites (2k3)
589 - Battle Commands (2k3)

mfG Cherry

CapSeb
08.09.2008, 00:45
Was?
(wäre für eine Erklärung durch Edit, dann kann ich den Post hier löschen)

EDIT:

@Cherry unter mir:
Clipboard ist englisch für Zwischenablage. Also sind Clipboard-Format-IDs "Zwischenablage-Format-Identifikatoren".
Also scheinbar die Nummer der Formatart für Copy&Paste-Vorgänge.
Und was genau bringt es mir jetzt zu wissen, dass Monstergruppen intern die Kopiernummer 578 haben?

Cherry
08.09.2008, 11:32
Das sind die Clipboard-Format-IDs, die die verschiedenen Daten haben, die man beim RM2k(3) in die Zwischenablage kopieren kann.

Davy Jones
25.12.2008, 03:28
Auch ganz nett:

- Eventmodus-> Großes Spin Around-Objekt bestehend aus den Tiles eines einzigen Charsets (6 Felder).
- Switch "Pose" on.
- Nun wird die zweite Seite aller 6 Felder angezeigt, 5 haben eine fixierte Charsetgrafik, das sechste Feld jedoch nur das Transparenztile vom Chipset.
- Nach 0,5 Sek. wird der Switch ausgeschaltet.
- Alle Felder harmonieren wieder miteinander und bewegen sich im gleichen Abstand, nur das sechste Feld mit der vorherigen Grafik des Chipsets bockt rum und bewegt sich asynchron.

Anscheinend besitzt der Maker eine jeweils andere Zugriffszeit bei Chip-/Charset-Tiles in Bezug auf das Zurücksetzen von Switches.

R.D.
26.04.2009, 15:34
Da ich gerade viel damit zu tun hatte, habe mich ich mal damit beschäftigt, wie der Maker denn die Statuskurven berechnet.
Dabei ist mir folgendes aufgefallen: (HP-Angaben beziehen sich auf den RM2k3)

-Der Wert um den die HP steigt schwankt generell zwischen 33-46.
-Der Wert ist abhängig von der Einstellung "Early-Normal-Later"
-Die Eintellung gibt soweit ich das sehen kann nur einen Punkt dazu, bzw zieht einen ab.
-Der Grundwert (33-46) könnte man abhängig von den Charas machen und so eine eigen Kurve generieren udn sich von den Levels "lösen" (Rm2k)

Im Grunde könnte man also bei einem Level-Up so berechnen: (einfache Form)

Neue HP = Aktuelle HP+((Grundwert+Random(1-2))*2)

Das Random hier steht noch für den Zusatz an HP, den der Maker manchmal zugibt.
Ich weiß noch nicht, wie es genau berechnet wird, aber das hier kommt schonmal nahe herran^^
Das Gleiche kann man jetzt auch für MP machen. Oder für Angriff (Hier sind die Grundwert nur entsprechend kleiner).
Den Grundwert kann man ja beliebig einem Chara anpassen. Zb ein Magier mit eher weniger HP bekommt den Grundwert 30 und hat damit gleich weniger HP als ein Krieger.
Vllt hilft es ja einigen, die gerne mit dem rm2k Level 50 knacken wollen (so wie ich D: )

MfG R.D.

Rechtschreibfehler sind beabsichtigt! :>

Dhan
26.04.2009, 18:49
Würd ich nicht wirklich als Wissen über den Maker bezeichnen deine Formel.
Deine Formel ist schließlich praktisch linear (bis auf den kleinen Zufall) während eine vom Maker erzeugte "Early"-Kurve logarithmisch und eine "Late"-Kurve exponentiell aussieht.
Wirklich über den Maker was rausgefunden hast du also nicht.

Spontan würd ich als These aufstellen, dass der Maker die Formel a * Level^b + c aufstellt und für a, b und c etwas einsetzt, was zu den eingegebenen Level 1 und Level 50-Werten passt, Early/Later bestimmt dabei stark den Wert von b (Normal bedeutet dann wahrscheinlich, dass b 1 oder um 1 rum ist, Early dass b zwischen 0 und 1 liegt und Late dass b über 1 liegt). Probier mal was in die Richtung.

Oder wenns dir tatsächlich nur um ein eigenes Level-System geht, ignorier die Standardkurven des Makers und mach was eigenes. Ist letztendlich eh alles eine Frage des Balancierens.

R.D.
26.04.2009, 19:14
Ja, vllt hätt ich das noch mehr hervorheben sollen, es ist nicht wie beim Maker kommt aber ungefähr hin.
Deine These is gut, ich probiere das und zum Thema "was eigenes machen", ja das mach ich ja XD
Ich will nur nicht dem Spieler sagen:
"Da haste 5 Statuspunkte,verteil die wie du willst"

In einem Klassik-RPG wie meinem möchte ich dem Spieler lieber verschiedene Charaktere mit verschiedenen Fähigkeiten geben, nach die sich der Spieler dann richten muss, so das alles einen Vorteil und Nachteil hat :D
Wenn du lustig bist, kannst du mir ja helfen ne gute Idee/Berechnung für eine Kurve zu machen, ansonsten werd ich deins testen und je nachdem, meine Rechnung nutzen (Die ja nun nich schlecht ist...oder o-O) oder eben deine^^

Cherry
08.06.2009, 17:09
Cheating-Schutz und mehr
Wie jeder weiß, kann man im RPG Maker eine Anzahl an Variablen einstellen, die man nutzen möchte. Im Maker kann man dann nur diese Variablen auswählen, im F9-Menü sind auch nur diese Variablen sichtbar (z.B. 0001-5000).

Diese Begrenzung ist aber nur kosmetisch. Sie existiert hauptsächlich deshalb, weil das Array, was die Variablen-Namen fasst, eine fixe Länge haben muss. Tatsächlich können aber jegliche Variablen-IDs im Spiel verwendet werden.

Der RPG Maker reserviert immer nur Speicher für die Variablen bis zu jener, die die höchste in diesem Spiel verwendete ist. Soll heißen: Wenn noch keine Variablen verwendet wurden, ist auch kein Speicher reserviert. Wird der Variable 10 nun ein Wert zugewiesen, wird Speicher für 1-10 reserviert, etc.

Es gibt dabei aber keine Überprüfung auf einen Maximalwert! Man kann also beliebig hohe Variablen verwenden, auch jene weit über dem Maximum, das in der Database eingestellt ist. Diese kann man natürlich nicht im Maker auswählen.

Nun aber der Trick: Der Option "Variable No."/"Variable Refernce" (je nach Übersetzung) bei "Change Variable". Damit kann man ja Variablen anpointern, also sagen "Greif auf jene Variable zu, dessen Nummer in der Variable soundso steckt".

Um nun auf die Variable 123456 zuzugreifen (egal, welches Limit im Maker eingestellt ist), verwendet man folgendes:


<> Change Variable: [0001] = 123456
<> Change Variable: [V[0001]] = 999
<> Message: Wert von Variable 123456: \v[123456] (hier sollte 999 stehen)

Man braucht also immer eine Hilfsvariable, in die man die ID der gewünschten "unsichtbaren" Variable schreibt.

Da die Option "Variable No."/"Variable Reference" bei Forks nicht verfügbar ist, braucht man hier 2 Hilfsvariablen: in die zweite lässt man den Wert der angepointerten "unsichtbaren" Variablen schreiben und fragt sie dann in der Fork ab.

Das schöne daran: Nachdem sich die Anzeige im F9-Menü ja nach dem im Maker eingestellten Limit richtet, sind höhere Variablen dort nicht sichtbar! Cheater sind von diesen Variablen also ausgesperrt (außer sie durchschauen das System und ändern was in den Events).

Die Namen der "unsichtbaren" Variablen kann man dann natürlich nicht mehr im Maker einstellen, sondern muss sie sich wo anders aufschreiben.

Viel Spaß damit :)

mfG Cherry

Pincky
16.06.2009, 19:19
... dass, wenn ein Paralleles Common-Event unterbrochen wird, es beim wieder aktivieren genau DORT anfängt, wo es unterbrochen wurde?


Das hab ich heute am eigenen Leib zu spüren bekommen, hätte einer von euch ne Idee wie man das umgehen kann? Hab n common event auf parallel process und mit einem switch als Bedingung.
Wenn der Switch deaktiviert wird, stoppt das Event, doch sobald ich ihn wieder aktiviere, soll das Event wieder von vorne starten, was es jedoch leider nicht tut, es läuft genau da weiter wo es angefangen hat.
Ideen?
Mit Cycle und Break cycle lässt es sich leider nicht lösen, da es möglich sein muss das Event in jedem Moment zu stoppen und wieder neuzustarten.
Auch Forks die alle 0,1 Sekunden den Switch abfragen gehen nicht da das Event extrem lang ist (24 minuten)

Bin hier grade regelrecht am verzweifeln.

edit: Bin das ganze völlig falsch angegangen, hat sich erledigt :D

Cherry
17.06.2009, 16:20
eine Möglichkeit ist, den Switch nicht als Startbedingung zu setzen, sondern das Event mit einer Fork einzurahmen. Dann wird es immer zuende ausgeführt.

Cherry
18.10.2009, 21:57
Setzt man hinter Befehle, die irgendwas Grafisches ändern, einen Show Screen-Befehl, wird die Änderung überblendet!

z.B.:

<> Change Chipset
<> Show Screen

...

<> Change Panorama
<> Show Screen

...

<> Set Event Place
<> Show Screen

...

<> Move Event: Change Graphic
<> Show Screen

...

<> Change Switch (bei Events, wo sich dann die Grafik ändert)
<> Show Screen

...

<> Change Hero Charset
<> Show Screen

...

<> Show Picture
<> Show Screen

...

Der Fantasie sind keine Grenzen gesetzt!

Damit lassen sich sicher tolle Effekte machen.

mfG Cherry

Rosa Canina
20.10.2009, 21:30
Ich glaub ich hab da was für euch - eine Kleinigkeit, die mir letztens großes Kopfzerbrechen bereitete.


Wusstet ihr, dass mit "Clear Timer" gelöschte Events nicht richtig gelöscht werden und immer noch Werte ausgeben können?
Sie werden lediglich quasi auf "Nicht sichtbar" gestellt.

Der Beweis:
Ich hatte eine paralelle Abfrage nach einer Event ID - wenn dieses Event nun
gelöscht wird, dann wird euch die Abfrage auch weiterhin die Event ID des
eigentlich gelöschten Events ausgeben!
Kann sehr lästig werden, z.B. bei JnRs, in dem man auf Dingen laufen kann,
die auch weg sein können. In dem Fall sollte man die Events woanders
hin teleportieren.

Callen kann man die Events natürlich nicht mehr - sie geben lediglich ihre
Terrain ID für ihre alte Position aus.


Getestet auf 2k3

Engel der Furcht
24.12.2009, 00:21
Ich wusste nicht wohin damit und nen neuen Thread aufmachen wollte ich auch nicht.

Wenn man beim 2k3 bei den Transitions das Fade Out auf "No Transition" und den Fade in auf "Fade In" macht,ist der Übergang bei Maps mit einem einzelnen Teleport (ohne "Erase Screen" und "Show Screen") der Übergang transparent. D.h. dass der Übergang direkt stattfindet,und kein schwarzer Bildschirm kommt.
Setzt man nun den Fade-Out auf was anderes,so ist der Übergang wieder mit Schwarz,genauso wenn man Erase+Show Screen wieder reinmacht.
Ich würde gerne wissen,wie das zu stande kommt.

R.D.
24.12.2009, 02:21
Naja, das Fade Out findet einfach nicht statt und dann wird halt die alte Map ausgefadet oder die Neue ein.

Kannste auch manuell machen mit dem Screenshot tool :A

Engel der Furcht
24.12.2009, 09:14
ja,aber es funktioniert nur,wenn du nur den Teleport,aber kein erase+Show Screen hast und wenn die Fade-Out und Fade-In Einstellungen die obigen sind.
Sonst nicht.
Was mMn ein bisschen merkwürdig ist,weil Show-Screen und Erase-Screen diese EInstellungen machen.

Cherry
24.12.2009, 11:05
Klar. Fade In wendet einen Effekt vom aktuellen Bild zu einem neuen an. Fade Out wendet einen Effekt vom aktuellen Bild zu schwarz an. Wenn man also Fade Out weglässt, wird ein Bild direkt ins andere überblendet.

Warum das mit Show und Erase Screen so ist, liegt darin begründet, dass es intern noch eine "globale Helligkeit" gibt, wenn die auf 0 ist, siehst du nichts von der Überblendung (und Sie wird auch nicht wirklich ausgeführt, WENN es bereits 0 ist). Wenn du also das die Fadeout-Transistion auf No Transition setzt, wird der Wert nie 0. Wenn aber da z.B. "Fade Out" steht, wird sie bei "<> Teleport" auf jeden Fall 0. (Das ganze ist noch etwas komplizierter, aber so ungefähr ist es^^)

DMII
03.09.2010, 23:02
Ich weiß nicht ob das schon bekannt ist, aber über das hier bin ich gerade selber gestolpert:

Wenn ein Event einen Move Befehl erhält und ihn nicht ausführen kann (weil z.B. etwas im Weg ist) führt es ihn aus, sobald es die nächste Gelegenheit dazu erhält. (Dies wurde nur für Move-Befehle mit einem Befehl getestet.)

Eine solche Gelegenheit kann es zum Beispiel durch Setup Event's Place erhalten.

Das kann unter Umständen blöd sein, wenn man wie ich mit dem Helden etwas schießen will und das fliegt zuerst einmal nach oben und dann erst nach rechts xD

relxi
03.09.2010, 23:09
Ja, das ist schon bekannt - beim Traffic von mehreren Events. Kommt in den meisten Spielen ab und zu mal vor, wird jedoch ignoriert.
Edit: wilkommen im Forum *wink*

Cherry
04.09.2010, 09:04
Ich weiß nicht ob das schon bekannt ist, aber über das hier bin ich gerade selber gestolpert:

Wenn ein Event einen Move Befehl erhält und ihn nicht ausführen kann (weil z.B. etwas im Weg ist) führt es ihn aus, sobald es die nächste Gelegenheit dazu erhält. (Dies wurde nur für Move-Befehle mit einem Befehl getestet.)

Der Sinn von "Ignore Impossible Movements" ist ja auch, dass es dann solche Befehle einfach ignoriert und zum nächsten übergeht. Kommt auf die Situation an ob das gut ist.

Corti
05.10.2011, 15:58
Edit: alles Käse:

Wenn die Tot-Condition auf "Persist after Battle" gestellt ist springt der Defeat-Handler eines "Enemy Encounter"-Befehls ganz normal an, nach dem nächsten Aktualisierungstick ist man aber tot -> GameOver Screen

Storykämpfe sollten in Autostart-Events aktiviert werden, "Enemy Encounter" mit Defeat-Handler in nem ParallelProcess führte bei mir zum Einfrieren des Makers, nach einem Teleport im selben PP zu einem Speicherzugriffsfehler 0x0000vieleNullen000.

Irresolute Warrior
06.01.2012, 20:57
Puh, staubig hier... bin gerade auch über was gestolpert:
Common Events (also Events mit Animation Type "Common") gucken bei Auslösung bekanntlich den Helden an und drehen ihren Kopf in die Richtung zurück, in die sie zuletzt geschaut haben, nachdem ihr Event-Code ausgeführt wurde.
Wurde das Event vorher aber mit einem fix-face bewegt (sprich erst FixFace, dann Bewegung, dann CancelFixFace), und wird dann ausgelöst, schaut es nach Ausführung in die letzte Bewegungsrichtung... oder genauer: in die Guckrichtung, die es eigentlich haben sollte, wenn das Face in der letzten Bewegung nicht gefixt gewesen wär.

Wie sehr das nun interessant ist, bleibt jedem selbst überlassen, mir hat´s ziemlich Ärger gemacht, beim AKS, wo sowohl Gegner wegschleudern (Bewegung mit Fix Face) als auch die richtige Common-Animation-Guckrichtung (für Angriffe von hinten) wichtig ist. Gelöst hab ichs btw, dass die Fix-Face Bewegung nicht nur mit CancelFixFace, sondern auch einem weiteren FaceHero abgeschlossen wird, dann ist die Guckrichtung für die Common-Animation wieder klar. (Alternativ: 2x Turn Face 180°, wenn er nach der Bewegung nicht den Helden angucken soll, wie das bei mir der Fall ist.