Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : +++ DynRPG - Das RM2k3-Plugin-SDK +++



Seiten : 1 [2] 3

Cherry
21.06.2013, 09:04
Blockieren sich die Aktionen irgendwie gegenseitig? Ich bin mir im Moment nicht sicher was da genau abläuft...

Corti
21.06.2013, 14:29
Nachdem ich jetzt ein bischen weiter rumprobiert hab bin ich von der Erkenntnis her trotzdem nicth weiter. Hab noch einn zwei Sachen rausgenommen, die ich in Verdacht hatte, aber es ändert nichts. Wenn Held&Monster gleichzeitig dran sind kommt man in den Zustand. Hab alle Tasten durchprobiert, nur Esc gibt den Cancel-Sound bei den anderen geschieht nichts.

Frage:
Ich hab den "AutoBattle Auswahl"-Entfernungspatch drauf. Könnte der im Kampfzyklus was umgeschmissen haben?

Edit:
Geil, ich hab 'nen Pandora-Bug xD Einmal gefunden geht er NIE WIEDER weg und tritt nun auch quasi dauernd auf. HAHAHA! Verfickte scheisse!

Corti
21.06.2013, 19:11
Okey, es scheint als ob der Tod des Helden auf Partyposition 1 (angenommen gezählt 1 bis 4 ) akut notwendig ist um im Folgezug das Monster zu verwirren O____o

Cherry
23.06.2013, 23:35
Gibts da ein Testprojekt?

Corti
26.06.2013, 11:11
Hey Cherry, sagmal in welchen der Patches ist das Entfernen des "Kampf-AutoBattle-Fliehen"-Fensters? Ich hab BetterAep-DynRPG und die volle Packung HyperPatcher3-Patches, keiner davon hat vom Namen her mit Autobattle zu tun.

Selenic
27.06.2013, 11:06
Hallo zusammen,

denke gerade ein wenig auf den Möglichkeiten rum, ohne bisher etwas ausprobiert zu haben, und frage mich ob es möglich ist Events einer Map auf eine andere zu verschieben.

RPG::Map bietet „nur“ den Zugriff auf die aktuelle Map. Gibt es eine Möglichkeit, hier mit dem Name der Map auch auf andere zuzugreifen?

RPG::Map::events bietet Zugriff auf ein beliebiges Event der aktuellen Map. Mit der Kombination „Zugriff auf die Map per Name“ könnte der Zugriff auf alle Events des Spiels möglich sein. Wenn wir davon ausgehen, dass dies gehen kann, könnte dann ein Event einer beliebigen Map auf eine andere kopiert/verschoben werden?

Oder anders herum gedacht: Kann ein Event der aktuellen Map kopiert werden?

DNKpp
27.06.2013, 11:20
Du kannst dir maximal die Events zwischenspeichern, und wenn eine neue Map geladen wird, das Event dort platzieren. Andere Möglichkeit sehe ich dabei nicht, weil der Maker immer nur eine Map gleichzeitig im Speicher behält.

Selenic
27.06.2013, 11:34
Du kannst dir maximal die Events zwischenspeichern, und wenn eine neue Map geladen wird, das Event dort platzieren. Andere Möglichkeit sehe ich dabei nicht, weil der Maker immer nur eine Map gleichzeitig im Speicher behält.

Das hört sich auch gut an. Ein "Durchschleifen" der Events von einer Map zur anderen sollte ja nich allzu Rechenintensiv sein.
Danke für den Zaunpfahlwink. Da probiere ich mal rum :)

Cherry
27.06.2013, 12:17
@Corti: Dafür gibts extra den NoAutoBattle-Patch :) Ist aber auch ein HP2-Patch.

Corti
27.06.2013, 12:31
@Cherry: Danke für den Hinweis. Bin noch immer auf der Suche nach der Ursache meines Bugs. Zwischenzeitlich habe ich herausgefunden, dass der Maker selbst einen Zugriffsfehler schmeissen kann wenn man unter (bisher nicht ausreichend definierten ) Umständen die Anzahl der Helden in der Party verringert.

EDIT:
Hrm, wenn ich den Helden auf Position 0 sterben lasse, ihn dann aus der Party entferne und gleich wieder zufüge( also nach hinten sortiere ) löst das mein Problem scheinbar.

MarcL
01.07.2013, 18:09
hallöchen,

könnte jemand, wenn er Zeit hat mal versuchen, folgendes zu kompilieren:

http://share.cherrytree.at/showfile-9180/health_bars.zip (Quelle: http://rpgmaker.net/forums/topics/12649/?p=2#posts)

Ich bekomme es einfach nicht hin... MinGW sollte die richtige Version sein... librarys sollte ich eigentlich auch alle richtig eingebunden haben und compiler sollte auch der Richtige ausgewählt sein oO;;
Ich will sehen ob ich was falsch eingestellt hab... was ich vermute... denn der Compiler spuckt immer den Fehler:


C:\MinGW\lib\libDynRPG.a(DynRPG.o):DynRPG.cpp|| undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'|

aus... Hat jemand ne Idee? Scheint ja irgendwas mit den library's oder dem compiler zu tun zu haben >_<;;
Der Fehler liegt wohl auch an der Zeile, die ja eigentlich so richtig sein sollte (ist auch alles richtig geschrieben...):


configuration = RPG::loadConfiguration(pluginName);

Danke im vorraus, wer so nett ist mir mit dem Problem zu helfen! T^T

Corti
01.07.2013, 21:20
Built Properties -> Linker Settings -> Link Libraries -> Add "DynRPG", Fixed it for me~

PS: Ich schulde dir nochn Plugin, forgot that total, sorry sorry >_>

MarcL
02.07.2013, 07:38
Built Properties -> Linker Settings -> Link Libraries -> Add "DynRPG", Fixed it for me~
PS: Ich schulde dir nochn Plugin, forgot that total, sorry sorry >_>

np ich kann warten :)

zum Problem:
Hab ich so gemacht... Könnte ich mal den log sehen? So sieht der log bei mir aus (anderes plugin aber dasselbe in grün...) Vielleicht kann man eine library ja zu oft einbinden (in den globalen optionen und den project properties)


mingw32-g++.exe -shared -Wl,--output-def=..\libanimatedmonstersNEUtest.def -Wl,--out-implib=..\libanimatedmonstersNEUtest.a -Wl,--dll -LC:\MinGW\lib obj\Release\main.o -o ..\animatedmonstersNEUtest.dll -s C:\MinGW\lib\libDynRPG.a C:\MinGW\lib\libDynRPG.a -lDynRPG C:\MinGW\lib\libDynRPG.a

Habe...
-MinGW schon neu installiert
-andere MinGW Version probiert (auch ne 64bit)
-das sdk lib & include in den MinGW Pfad extrahiert

Sonst müsste ja alles richtig eingestellt sein, wenn das compilieren klappt, wenn ich die Zeile
configuration = RPG::loadConfiguration(pluginName); rausnehme... (von wegen Project --> dynamic link library --> usw., cherry hats ja sehr detailliert erklärt)

hier mal meine einstellungen:
http://s7.directupload.net/file/d/3304/2nh639lc_png.htm
http://s14.directupload.net/file/d/3304/7t6uqdyy_png.htm
http://s7.directupload.net/file/d/3304/tbysgd26_png.htm
http://s7.directupload.net/file/d/3304/bdgqp53x_png.htm
http://s14.directupload.net/file/d/3304/k758kkhw_png.htm
http://s7.directupload.net/file/d/3304/x2ebaibo_png.htm
http://s7.directupload.net/file/d/3304/69id2xjh_png.htm

bin weiterhin für hilfe dankbar :)

PS: Da das Plugin einen Eintrag in der DynRPG.ini verwendet... muss ich da irgendwas beachten beim kompilieren?
PPS: Muss ich eigentlich eine Umgebungsvariable oder sowas anlegen?

Also zum Vergleich:

mingw32-g++.exe -shared -Wl,--output-def=..\libsample.def -Wl,--out-implib=..\libsample.a -Wl,--dll obj\Release\main.o -o ..\sample.dll -s -luser32 -lDynRPG
Creating library file: ..\libhealth_bars.a

mingw32-g++.exe -shared -Wl,--output-def=..\libsample.def -Wl,--out-implib=..\libsample.a -Wl,--dll obj\Release\main.o -o ..\sample.dll -s -luser32 -lDynRPG
Creating library file: ..\libsample.a

also gleich... hmhm... dann muss es wohl doch am compiler liegen?

bei build log lässt sich der Fehler wohl noch eingrenzen:

C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../libDynRPG.a(DynRPG.o):DynRPG.cpp:(.text+0x1268): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'

Hab als Fehlermeldung folgende Zeile... Bedeutet das, wenn bei mir C:/MinGW/bin/../lib/gcc/mingw32/3.4.5 steht, dass der auch verwendet wird? oO;;;
Vermutlich hat da was mit der Installation nicht hingehauen... mal sehen...

Corti
02.07.2013, 07:49
So schauts bei mir aus:

-------------- Build: Release in health_bars (compiler: GNU GCC Compiler)---------------

mingw32-g++.exe -O2 -Wall -DBUILD_DLL -c D:\Daten\Privat\Project1\DynPlugins\health_bars\main.cpp -o obj\Release\main.o
mingw32-g++.exe -shared -Wl,--output-def=..\libsample.def -Wl,--out-implib=..\libsample.a -Wl,--dll obj\Release\main.o -o ..\sample.dll -s -luser32 -lDynRPG
Creating library file: ..\libsample.a
Output size is 475.50 KB

Btw. ist das genau die Art Healthbar, die du auch willst oder eher so "gibt ja nichts anderes" ?

MarcL
02.07.2013, 11:37
Es läuft jetzt ^^ hab nochmal alles deinstalliert und MinGW neu aufgesetzt, jetzt klappts :) Danke für die Hilfe!


Btw. ist das genau die Art Healthbar, die du auch willst oder eher so "gibt ja nichts anderes" ?

Äh ich muss sie erst testen, in dem Sinne würde ich sagen im Moment noch beides :)

Mithrandir
01.08.2013, 17:00
Heyho, könnte mir einer bei folgendem Problem helfen?
http://share.cherrytree.at/showfile-10777/unbenannt_1.png

Ich will das Plugin verwenden womit man im Menü die Spielzeit + Hintergrundbild anzeigen
lassen kann, nur funktioniert das wie man sieht nicht wenn ich das Projekt starten will.

Das Plugin erfordert die Version 0.13 vom DynRPG, ich hab 0.13b, dürfte doch glatt laufen oder?

Danke im Voraus.

MarcL
02.08.2013, 07:08
Heyho, könnte mir einer bei folgendem Problem helfen?
http://share.cherrytree.at/showfile-10777/unbenannt_1.png

Ich will das Plugin verwenden womit man im Menü die Spielzeit + Hintergrundbild anzeigen
lassen kann, nur funktioniert das wie man sieht nicht wenn ich das Projekt starten will.

Das Plugin erfordert die Version 0.13 vom DynRPG, ich hab 0.13b, dürfte doch glatt laufen oder?

Danke im Voraus.

Äh ich überleg gerade selbst... auf der Webseite steht das die aktuelle Verision 0.14a ist...
Gibt es einen Grund warum man/ warum du nicht einfach den aktuellen Patch nimmstß (und einfach drüberpatcht?)

Mithrandir
02.08.2013, 11:48
Hab die 0.14a ja runtergeladen, nur wenn ich dann den Installer öffne steht da dass es 0.13b ist die da
drüberinstalliert wird, das verwirrt mich gerade und einen anderen DL Link hab ich bisher nicht gefunden.

http://share.cherrytree.at/showfile-10785/unbenannt_1.png

Edit: Gut, hab jetzt die Changelog durchgelesen, da steht folgendes:
Only the SDK was updated. The patch still shows version 0.13b.

Also müsste es rein theoretisch ja die neuste Version sein, nur das Plugin funktioniert trotzdem nicht

goldenroy
02.08.2013, 12:10
Hab die 0.14a ja runtergeladen, nur wenn ich dann den Installer öffne steht da dass es 0.13b ist die da
drüberinstalliert wird, das verwirrt mich gerade und einen anderen DL Link hab ich bisher nicht gefunden.

http://share.cherrytree.at/showfile-10785/unbenannt_1.png

Edit: Gut, hab jetzt die Changelog durchgelesen, da steht folgendes:
Only the SDK was updated. The patch still shows version 0.13b.

Also müsste es rein theoretisch ja die neuste Version sein, nur das Plugin funktioniert trotzdem nicht

Ich weiß nicht ob es direkt mit deinem Problem zu tun hat, aber versuch mal die im Startpost angesprochene DynLoader.dll auszutauschen ( http://share.cherrytree.at/showfile-10117/dynloader.dll ). Die schaltet außerdem einige neue Features frei, und da bei mir keine Probleme mit dem Plugin auftauchen und ich die dynloader.dll ebenfalls nutze, hängt es vielleicht doch damit zusammen. ;0

Mithrandir
02.08.2013, 12:59
Danke für die Hilfe aber führt dennoch nur zu einer weiteren Fehlermeldung:

http://share.cherrytree.at/showfile-10786/unbenannt_1.png

Quetschi
02.08.2013, 13:50
Hast du schon versucht ne ungepatchte RPG_RT.exe zu patchen, anstatt einfach die alte zu "überpatchen"?

Mithrandir
02.08.2013, 14:11
Klar, hab ich zuerst ja auch ein paar mal gemacht, hat sich leider nix gebracht.

Edit: Jetzt bin ich doch ein bisschen sehr verwirrt, hab nochmal gepatcht, es nochmal versucht und siehe da:
Es funktioniert auf einmal ^^

Danke jedenfalls an alle die mir helfen wollten, ich verstehs selber nicht warum es jetzt geht

Yenzear
05.08.2013, 16:50
Ich habe ein Problem bei der Anwendung von DynRPG, nämlich dass sich bei mir im Maker irgendwie gar nichts tut o_O
Ich habe wie vorgesehen den Patcher auf RPG_RT in meinem Projekt angewendet, wodurch ein Ordner "Dyn Plugins" im Spielordner entstanden ist, wo ich die Plugins hineinverschoben habe (die vom Typ "H datei" )
aber es scheint keine Auswirkung zu haben ._.
Muss ich da jetzt noch was machen oder habe ich was falsch gemacht?

Mithrandir
05.08.2013, 17:44
Sollte normal automatisch übernommen werden, versuch das Projekt mal ausserhalb des Maker zu starten ;)

Yenzear
05.08.2013, 18:01
Wenn ich das Projekt am laufen habe, hab ich nur derbe Performanceprobleme o_O

Eigentlich wollte ich meinen Skilltree irgendwie im Standartmenü unterbringen.

Mithrandir
05.08.2013, 18:25
Hm, hab diesbezüglich keine Erfahrung oder das Wissen dazu woran das liegen könnte, tut mir leid.
Welche Version hat denn deine RPGRT.EXE? Was ich weiss wird die Version 1.08 vorrausgesetzt.

Yenzear
05.08.2013, 18:36
Sie hatte auf jeden Fall eine andere, aber laut Beschreibung musste ich nur den Button drücken, dass sie auf 1.08 angepasst wird, was ich dann auch getan habe
aber um welche Version es sich genau handelte, weiß ich leider nicht.

Mithrandir
05.08.2013, 18:41
Hab noch in der Erinnerung dass der Patch vorher gesagt hat wenn man eine falsche Version von der Exe hat und der Patcher hat quasi "gefragt"
ob man die jetzt wirklich patchen will. Ob das Perfomanceproblem jetzt tatsächlich davon abhängt weiss ich leider nicht. Wenn du möchtest kannst du mir aber
dein Projekt zukommen lassen und ich schau mal zum Test ob es auch bei mir nicht einwandfrei läuft.

Yenzear
05.08.2013, 19:07
Die Ungepatchte Version kannst du hier (http://ubuntuone.com/55V7Bb2tZSThKJBfnLaD99) finden.
Die Gepatchte Version habe ich hier (https://storage.driveonweb.de/dowdoc/d6aad36566ce400869cd2d93914063a4.rar) vorbereitet

Mithrandir
05.08.2013, 19:16
Hm, hab mir das jetzt angesehen: bei mir hackt es auch ganz schön ordentlich, nachdem ich die H-Dateien gelöscht habe ging es wieder
ganz normal. Aber eins verstehe ich nicht: Sind die H-Dateien nicht eigentlich der Sourcecode für die Plugins z.b?
Normalerweise sind die Plugins ja DLL-Dateien... Ich denke die Dateien die du hast muss man erstmal kompilieren, soweit ich das mit meinem
begrenzten Wissen in dieser Thematik sagen kann. Von woher hast du denn diese Dateien? Bzw was sollen sie bewirken?

Yenzear
05.08.2013, 19:47
Die Dateien habe ich direkt aus dem Ordner genommen, in dem das Plugin drin war.
Wie kompiliere ich die Dateien ins DLL Format? o_O
Ich habe zu der Thematik gar kein wissen ^^

Quetschi
05.08.2013, 20:17
Hast du das "Getting Started" von Cherry durchgelesen? ( http://rpg-maker.cherrytree.at/dynrpg/getting_started.html )
Da du nicht weißt wie du die Dateien ins .dll-Format kompilierst, geh' ich davon aus, dass du es nicht gelesen hast. Ansonsten noch einmal in Ruhe durchlesen.
Das ist schon ziemlich hilfreich für den Umgang mit DynRPG, auch wenn ich mich danach immernoch n bisschen doof angestellt hab. :'D
Das einzige was du im DynPlugins brauchst sind die .dll Dateien.

Yenzear
05.08.2013, 21:34
Also ich habs mir jetzt nochmal durchgelesen und bin bezüglich der dll Dateien so schlau wie vorher o_O"

Ich habe mal diese Step by Step Anleitung befolgt und komme am ende nicht weiter, wo ich den Code in das Fenster kopiert habe
https://scrot.de/img/o/5/h14OmqP2DR_MsemxHU_cyuCy1.png <- Screen

Edit:
Habe Kontakt zu HerrDekay hergestellt, der mir mit dem Programm hilft.
Danke an Mithra und Quetschi für die Hilfe ^^

Sölf
06.08.2013, 23:07
Tag zusammen.
Irgendwer, ich glaube es war Corti, hatte mal nen Plugin für den 2k3 geschrieben welches die Zeitlieste beschleunigt (da die beim 2k3 ja von der Anzahl der Kampfteilnehmer abhängt und das so gelöst wurde dass die immer so behandelt wir dals ob nur eine rda ist). Kann mir jemand das Plugin nochmal bitte posten? Auf Cherrys Seite hab ich das nicht gefunden (außer das ist bei diesem "Ein paar KS Änderungen" mit drin, dann sollte das da aber mit beistehen).

Fänd ich voll super von euch. =O

Corti
07.08.2013, 08:33
Die Version die ich mal gepostet hab nannte sich "AtbTweak", war aber nicht soooo fortgeschritten wie das was möglich ist. Das erweiterte Atb-Reglungsplugin ist derzeit wieder in Arbeit (hatte ein paar Fehler) .

Sölf
07.08.2013, 08:50
Keh, dann warte ich mal. Wäre nämlich voll cool das Ding. xD

Chili
14.08.2013, 12:17
Hallo!

Ich wollte mal nachfragen, ob es schon einen Fix für die Transparenz Probleme mit dem Maker und DynRPG gibt? Wenn nicht, ist da irgendwas in Aussicht?

Sölf
15.08.2013, 09:49
Gibt es eigentlich eine Möglichkeit für Gegner eine art Aggro Verhalten einzustellen? Sprich, dass bestimmte Ziele bevorzugt werden? DIe Vordere Reihe z.B. oder ein bestimmter Charakter nachdem Skill X eingesetzt wurde? Sowas wäre extrem hilfreich für mein momentanes Projekt. xD

MarcL
15.08.2013, 10:19
Gibt es eigentlich eine Möglichkeit für Gegner eine art Aggro Verhalten einzustellen? Sprich, dass bestimmte Ziele bevorzugt werden? DIe Vordere Reihe z.B. oder ein bestimmter Charakter nachdem Skill X eingesetzt wurde? Sowas wäre extrem hilfreich für mein momentanes Projekt. xD

Mir fällt nur das hier ein: http://rpgmaker.net/engines/rm2k3/utilities/23/
Vielleicht ist ja der Source Code dabei und du kennst dich etwas mit Programmieren aus ;)

Corti
15.08.2013, 10:22
@Aggro: Geht. Hab ich.

Ist aber kein reines DynScript sondern funktioniert lediglich als Teil meiner EventStruktur.
In DynRPG überschreibe ich das Ziel von Kampfhandlungen mit dem aktuellen Aggroziel.
Im Eventcode berechne ich dieses Ziel in dem ich nach Heldenangriffen den heldenspezifischen Aggrowert der angegriffenen Monster verändere. Meine "Aggro" ist allerdings kein Aggrowert sondern ein Array aus Aggrowerten, dass nach jeder Runde aufgerückt wird, also eher flüchtige Aggro anstatt der "Monster haut mich weil ich es vor 10 Min. mal gehauen habe"-Aggro aus MMOs.

@DynScript ausm Netz:
Ich kenne eines, dass Träger einer Condition zum bevorzugten Ziel macht. Ein AoE-Spott lässt sich damit machen.

Sölf
15.08.2013, 13:59
@Aggro: Geht. Hab ich.

Ist aber kein reines DynScript sondern funktioniert lediglich als Teil meiner EventStruktur.
In DynRPG überschreibe ich das Ziel von Kampfhandlungen mit dem aktuellen Aggroziel.
Im Eventcode berechne ich dieses Ziel in dem ich nach Heldenangriffen den heldenspezifischen Aggrowert der angegriffenen Monster verändere. Meine "Aggro" ist allerdings kein Aggrowert sondern ein Array aus Aggrowerten, dass nach jeder Runde aufgerückt wird, also eher flüchtige Aggro anstatt der "Monster haut mich weil ich es vor 10 Min. mal gehauen habe"-Aggro aus MMOs.

@DynScript ausm Netz:
Ich kenne eines, dass Träger einer Condition zum bevorzugten Ziel macht. Ein AoE-Spott lässt sich damit machen.
So ein richtiges MMO Verhalten meine ich auch nicht. Ich spiele zur Zeit wieder Etrian Odyssey, ich dachte da eher an so ein System. Das funktioniert so, dass es erstmal 2 Reihen gibt und afaik (da bin ich mir aber nicht ganz sicher) die vordere Reihe bevorzugt wird. Außerdem gibt es Skills, die die Chance erhöhen oder Verringern, dass das Ziel von Gegnern angegriffen wird. Aber selbst das ist noch keine 100% und hält auch nur ein paar Runden bevor man es neu benutzen muss. Sowas hatte ich da eher im Kopf.

Corti
15.08.2013, 14:32
Reihen hat der 2k3 auch. Somit wärs sicherlich möglich, das Angriffsziel von Einzelzielangriffen in Abhängigkeit diverse Faktoren zu beeinflussen.

z.B. Chance auf Schläge in FrontRow = 3x der BackRow, oder Helden mit ConditionX,Y,Z haben 300% erhöhte Chance auf Haue~ oder sowas.

PS:

(1) Layout Customisation

· The position of the selected hero can be changed by dragging it. You can also change between rows with the radio buttons, but this is only for test purposes and has no effect on the game.

-> Front Row : Damage inflicted on enemies is high, but enemy attacks are stronger and hit more often.
-> Back Row : Damage inflicted on enemies is low, but enemy attacks are weaker and hit less often.
* Row has no effect on skills.

Cherry
15.08.2013, 17:22
@Chili: Ja, es fehlen nur noch ein paar Kleinigkeiten dann kann ich die nächste Version releasen. Ganze Menge Sachen gefixt da.

Sölf
15.08.2013, 19:42
Reihen hat der 2k3 auch. Somit wärs sicherlich möglich, das Angriffsziel von Einzelzielangriffen in Abhängigkeit diverse Faktoren zu beeinflussen.

z.B. Chance auf Schläge in FrontRow = 3x der BackRow, oder Helden mit ConditionX,Y,Z haben 300% erhöhte Chance auf Haue~ oder sowas.

PS:

Das mit dem "Hit more often" versteh ich aber so, dass angriffe einfach öfter treffen, anstatt dass man in der Reihe öfter/seltener das Ziel eines Angriffs wird. Und naja, wenn ein Gegner einen Zauber mit 100% Trefferchance hat, dann ist die Reihe egal, wenns nur darum geht, dass der Schaden niedriger ist (der, wie da ja steht, keine Skills beeinflusst), man aber noch genau so oft angegriffen wird, egal in welcher Reihe man steht.

Chili
15.08.2013, 20:23
@Chili: Ja, es fehlen nur noch ein paar Kleinigkeiten dann kann ich die nächste Version releasen. Ganze Menge Sachen gefixt da.

Das hört sich echt super an! ich freue mich auf den nächsten release! Danke Cherry! ^w^
Ich möchte DynRPG nicht mehr missen und die bugs sind logischerweise der einzige Knackpunkt an deinem Programm. Danke für deine Zeit und die Mühen! :)

Corti
16.08.2013, 08:37
@Sölf:
Die Row-Settings beziehen sich laut (* Row has no effect on skills.) sowie nur auf Default-Angriffen.

Beispiel:
Gibt einem Helden einen Skill mit BasicEffect = 0 und AttackInfluence = 10, dieser sollte dann 100% eines Waffenangriffes entsprechen. Das ist aber nicht der Fall, es sind eher 110-120%. Das ist der einzig merkbare Einfluss von Rows.

Diese Einstellungen sind allgemein eher fürn Arsch, ist so 2k3 Zeugs, dass halbherzig rangestrickt wurde, allerdings~ kann man ja die Row-Einstellung zweckentfremden für das von dir gewünschte Prinzip.

Ich könnte ein Plugin derarten bauen, allerdings nicht in den nächsten Tagen und nur, wenn wir uns vorher genau drauf einigen können, was es tun soll, für mehrfach hin- und her und dies und dann doch ganz anders fehlt es mir derzeit an Kapazitäten.

Sölf
16.08.2013, 11:41
ALso so ein Plugin wäre durchaus gut, aber das hat erstmal Zeit und drängt nicht. Ich müsste am momentanen Gameplay einige Änderungen vornehmen und das würd ich dann frühestens nach der nächsten Demo machen (und das dauert bestimmt sowieso). Also das eilt nicht, aber schonmal danke für das Angebot. xD

G-Brothers
20.08.2013, 20:52
Kleine Zwischenfrage: Wäre es aus technischer Sicht für ein DynRPG-Plugin möglich, ins Standardmenü bei den Helden hinter/unter die HP & MP Zahlen entsprechende Leisten aus System2 zu pinnen?
Mal aus reiner Neugier. :O

Corti
20.08.2013, 23:05
Die Menüsüberpinsel geht, ya.

Sölf
21.08.2013, 00:23
Wäre es eigentlich theoretisch möglich eine sichtbare HP Leiste (ob nun wirklich als Leiste oder ne Prozentangabe) an einen Gegner zu klatschen, sodass die im Standard 2k3 KS sichtbar wäre? Vielleicht sogar nur für spezielle Gegner (Bosse z.B.).

Corti
21.08.2013, 06:56
Geht und gibt es. Auf RMN gibts das Plugin.

Sölf
21.08.2013, 08:39
Du weißt nicht gerade zufällig wie das heißt, oder? Ich durchforste gerade auf gut Glück das Plugin Forum bei denen, aber das sind ja auch nen paar Seiten. xD

Corti
21.08.2013, 08:46
Schick mal MarcL 'ne PM, der benutzt das.

Sölf
21.08.2013, 08:46
Okay, falls du das hier meinst http://rpgmaker.net/forums/topics/12649/ hab ich es jetzt gefunden, aber gott sind diese Leisten riesig und hässlich. Da lass ich das lieber weg. xD

Mithrandir
21.08.2013, 08:53
Ich denke die Größe kannst du in der DynRPG.ini einstellen, sieh mal in der Demo nach.

Sölf
21.08.2013, 09:54
Ich seh gerade dass er dafür ein eigenes Picture verwendet. Allerdings zeigt er die auch über dem Gegner an. Ich würd sowas (wenn überhaupt) gerne unter dem Gegner haben. Ich weiß jetzt nicht ob überhaupt negative Koordinaten bei ihm funktionieren.

Ganz davon ab würd ich das am liebsten eigentlich nur für spezielle Monster (wie z.B.) Bosse benutzen und nicht für jeden, aber das geht mit diesem Plugin sowieso nicht. xD
Wobei das jetzt auch nicht sooo wichtig wäre. Wäre halt nur nen Indikator für den Spieler ob er überhaupt eine Chance hat. xD

Mithrandir
21.08.2013, 10:08
Ich seh gerade dass er dafür ein eigenes Picture verwendet. Allerdings zeigt er die auch über dem Gegner an. Ich würd sowas (wenn überhaupt) gerne unter dem Gegner haben. Ich weiß jetzt nicht ob überhaupt negative Koordinaten bei ihm funktionieren.

Gerade getestet, funktioniert tadellos.

Kann man leider aber wirklich nicht gezielt für Bossgegner verwenden, leider :/

Selenic
21.08.2013, 10:21
Kann man leider aber wirklich nicht gezielt für Bossgegner verwenden, leider :/

Man könnte doch sicherlich über die RPG::Monster (http://rpg-maker.cherrytree.at/dynrpg/class_r_p_g_1_1_monster.html) Klasse und "databaseId" eine Abfrage realisieren.
Dazu muss man nur wissen, welche die Bossgegner sind. Aber solange man das Standard KS benutzt sollte das ja kein Problem sein.

Sölf
21.08.2013, 10:25
Corti hatte bei dem ATB Plugin ja die Zustände, die einen Charakter handlugnsunfähig machen (also sowas wie Schlaf z.B.) auch abgefragt, bzw. musste man die per hand in die .ini einfügen. Ginge sowas nicht theoretisch mit Kampfgruppen bzw. einzelnen Monstern? Wobei ich dann noch nicht wüsste wie das bei mehreren Bossen im selben Kampf aussieht, hätte dann jeder eine?

Großartig wäre es auch, wenn die nur erscheinen würde wenn der Gegner anvisiert wird. Das die also nicht die ganze Zeit da ist. Wobei ich wie gesagt keine Ahnung habe ob das realisierbar wäre. Wäre jetzt auch kein Plugin was ich unbedingt bräuchte, aber "nice to have" um es mal so auszudrücken.

Corti
21.08.2013, 11:43
No prob at all. Müssten nur mal evaluieren was meine Kundschaft so bräuchte, wenn ich dir eines schreibe dann so, dass Marc, Inno, Daemonic und Davias davon auch profitieren.

Btw. Sind MonsterHPBalken nicht nice to have sondern voll geil ;D

goldenroy
21.08.2013, 14:38
MonsterHPBalken

>>Click<< (http://rpgmaker.net/forums/topics/12649/?post=446121#post446121)?

Sölf
21.08.2013, 15:01
>>Click<< (http://rpgmaker.net/forums/topics/12649/?post=446121#post446121)?

Hab ich mittlerweile auch gefunden, ist aber nicht ganz das was ich haben wollen würde (sprich: nicht bei jedem Gegnern sondern nur bestimmten (z.B. Bosse) und wenn möglich nur anzeigen wenn das Monster angewählt wird, dann blockiert der Balken auch nicht die ganze Zeit die sicht wenn man mal 4-5 Monster auf einmal hat). xD

Corti
21.08.2013, 15:13
Ich mach mal eine Stichliste:

Unterscheidung "alle Monster" - "nur ausgewähltes Monster"
Unterscheidung: "alle Monster" - "nur Bossmonster" -> IDs in Konfigdatei eintragen
HP - Balken ? ( anderer HP-Balken für Bosse ? )
MP - Balken ? ( was denkt ihr? )
Atb - Balken? ( was denkt ihr? )
HP als Zahl ? ( was denkt ihr? )


Hab ich was vergessen? Was fällt euch noch ein?

Sölf
21.08.2013, 15:19
Wäre wohl spontan alles, wobei ich selber mich mit "Ausgewähltes Monster" (dann sogar ruhig alles, wenns eh nur bei nem ausgewählten angezeigt wird) "nur Bossmonster" (wenns immer da ist) und "HP Balken" oder "HP Zahl" (als Prozentz oder direkt der HP Wert des Gegners?) zufrieden geben würde. MP und ATB fänd ich überflüssig, aber das liegt auch daran, das ich Monstergruppe von 1-5 Monstern habe - da ist das Bild einfach schon mit den Gegnersprites voll. xD

goldenroy
21.08.2013, 15:57
Ich mach mal eine Stichliste:

Unterscheidung "alle Monster" - "nur ausgewähltes Monster"
Unterscheidung: "alle Monster" - "nur Bossmonster" -> IDs in Konfigdatei eintragen
HP - Balken ? ( anderer HP-Balken für Bosse ? )
MP - Balken ? ( was denkt ihr? )
Atb - Balken? ( was denkt ihr? )
HP als Zahl ? ( was denkt ihr? )


Hab ich was vergessen? Was fällt euch noch ein?

Die HP als Zahl würde ich streichen, die müssten ja schon eine gewisse Größe haben und das würde imo ein bisschen zu viel werden.
Wie würde der Balken denn dann dargestellt werden? Mit Custom-Picture im Pictureordner für Balken und Rahmen, damits zum Systemset passt? Wär cool. 0:
Oh, und MP + ATB wären nette Zusätze. ATB dann auch gerne immer und nicht nur beim drüberhovern. Ein Weg den ATB-Balken von Gegnern zu sehen (und somit zu wissen wer denn nun als nächstes dran ist), ist ein großer Vorteil beim taktischen Planen.

Corti
21.08.2013, 16:07
Ich muss nix streichen, man kann ja alles parametrierbar machen. Wenn es dir nicht gefällt, stell es aus. Wenn du lesbare Zahlen willst, nimm lesbare Zahlengrafiken etc.

Anstatt nun mich zu fragen wie die Balken dargestellt werden, überleg dir lieber wie du sie gerne hättest. DynRPG kann 'ne Menge. An einem System, dass alles kann würde ich mich tot programmiereren, darum (siehe anderes Topic ) will ich wissen, was die Nutzer wirklich nutzen würden.

Sölf
24.08.2013, 12:45
Könnte man mit DynRPG theoretisch Battleanimations spiegeln? Sprich, wenn ein Gegner sie einsetzt werden sie gespiegelt (z.B: Feueratem von Rechts nach LInks dann von Links nach Rechts)? Einzige andere Möglichkeit bisher wär ja den Zauber Frame für Frame nachzubauen und nur die Positionen der Animationen zu ändern. Und das ist dann doch etwas aufwändiger... xD

MagicMaker
24.08.2013, 13:52
Und das ist dann doch etwas aufwändiger... xD
5 läppische Spalten in einer Animdatei einzeln spiegeln und Bild speichern ist Aufwand?

Aber wenn es eine bessere Möglichkeit gibt, wären die Pics natürlich Platzverschwender.

Sölf
24.08.2013, 14:15
5 läppische Spalten in einer Animdatei einzeln spiegeln und Bild speichern ist Aufwand?

Aber wenn es eine bessere Möglichkeit gibt, wären die Pics natürlich Platzverschwender.

Nene, das mein ich nicht, sondern die Richtung aus der die Kampfanimation kommt. Wenn ich eine Animation für einen Feueratem mache der von Rechts (Heldengruppe) nach Links (Gegnergruppe) geht, dann würde die Animation wenn ein Gegner sie einsetzt immer noch so aussehen, was aber quasi keinen Sinn macht, sie sollte von Links (Gegner) nach Rechts (Helden) gehen. Ich meine nicht die Animations Bilder, sonder die fertigen Ingame Animationen.

Corti
24.08.2013, 14:21
Es gibt unter System2 die Option "Reverse BattleAnimations wehen Attacked from behind", der Maker hat also die Möglichkeit Animationen zu spiegeln...
Wenn man die Adresse des Flags hätte könnte man ja mal schauen was passiert wenn man diese zwischen onBattleAction und onBattleActionDone umkehren.~

Chili
24.08.2013, 16:43
Hallo!

Ich habe mir kürzlich die neue dynloader.dll heruntergeladen um einen Quick Patch von bugmenot, den er für mich gemacht hat, zu nutzen. Es lief auch alles wunderbar, nur jetzt bekomme ich beim Starten die Fehlermeldung: Loading Plugin "condition_icons.dll" failed! (998 ). Also das Condition Icon Plugin funktioniert nicht. Ich hatte vor längerem auch mal die neue dynloader.dll geladen, danach funktionierte aber das Tastatur&Maus Plugin nicht mehr. Woran liegt das? Sind das bekannte Fehler? Kann man da was machen oder muss ich die alte .dll nutzen bis das gepatched wurde?

Sölf
25.08.2013, 09:37
Es gibt unter System2 die Option "Reverse BattleAnimations wehen Attacked from behind", der Maker hat also die Möglichkeit Animationen zu spiegeln...
Wenn man die Adresse des Flags hätte könnte man ja mal schauen was passiert wenn man diese zwischen onBattleAction und onBattleActionDone umkehren.~

Aber diese lustige Option ändert ja nur die BAs für die party quasi. Die der Gegner sind ja immer noch in "normaler" Richtung - und bei nem Hinterhalt dann WIEDER falsch rum. xD
Srsly Maker, y u so strange?!

Corti
25.08.2013, 09:56
Ist egal. Der Maker kann eine BA umgekehrt zeichnen. Das ist erstmal gut und besser als nix, denn umgedrehte BA per Hand reinhacken stell ich mir komplizierter vor.

goldenroy
25.08.2013, 10:43
Dann machst du halt alle BAs von "links nach rechts" (also mit Monster als Angreifer), tust das:
"Wenn man die Adresse des Flags hätte könnte man ja mal schauen was passiert wenn man diese zwischen onBattleAction und onBattleActionDone umkehren.~"
und dann geht es vielleicht? 8D

Sölf
25.08.2013, 11:51
Ist egal. Der Maker kann eine BA umgekehrt zeichnen. Das ist erstmal gut und besser als nix, denn umgedrehte BA per Hand reinhacken stell ich mir komplizierter vor.

Bei kurzen Animationen wie Schwertschlägen die nur 5-10 Frames lang sind okay. Aber nehmen wir mal vorgegeben 2k3 Animation an Position 139, das "Raging Flames", die hat schon 50. Und bei 50 Frames alles per Hand in der Animation zu spiegeln nervt schon. Und gibt ja noch längere... xD
Wie gesagt, so ne Methode fänd ich halt total cool.

Cherry
25.08.2013, 14:43
Fehler 998 bedeutet dass schon beim Laden der DLL eine Access Violation aufgetreten ist (http://support.microsoft.com/kb/196069). Das darf eigentlich nicht passieren... Passiert das auch wenn du das Plugin alleine verwendest? Kann ich so ein Projekt mal haben? Ich krieg den Fehler nämlich nicht.

Chili
25.08.2013, 15:27
Fehler 998 bedeutet dass schon beim Laden der DLL eine Access Violation aufgetreten ist (http://support.microsoft.com/kb/196069). Das darf eigentlich nicht passieren... Passiert das auch wenn du das Plugin alleine verwendest? Kann ich so ein Projekt mal haben? Ich krieg den Fehler nämlich nicht.

Habe gerade eben, heute zum ersten mal, das betroffene Projekt gestartet und siehe da, keine Fehlermeldung mehr. Windows hat zuvor noch ein Sicherheitsupdate für Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package ausgeführt. Kann das damit etwas zutun haben?

Naja ich schau mal ob der Fehler die Tage wieder auftaucht und wenn ja, dann versuche ich ihn bei einem neuen Projekt zu reproduzieren und dir zuzuschicken. Mein Hauptprojekt würde ich nur ungern hochladen :/

DNKpp
26.08.2013, 19:55
Warum ruft RPG::Character::isMovePossible() ein SIGSEGV bei mir hervor? Pointer ist valid, hab das jetzt auf mehrere Arten versucht.

Cherry
29.08.2013, 11:58
Das ist ein alter Bug, der eigentlich schon länger behoben sein müsste oO
Was für eine Compilerversion?

DNKpp
29.08.2013, 12:08
4.7.1

MarcL
29.08.2013, 14:26
4.7.1

Wars nicht so, dass nur bis 4.6.1 funktioniert? :)
http://rpg-maker.cherrytree.at/dynrpg/

DNKpp
29.08.2013, 14:36
Das hab ich auch schon gesehen, aber für mich macht das keinen Sinn. Zumal solche Dinge in der Regel abwärtskompatibel sind.
Solche Fehler haben meiner Ansicht nach wenig mit dem Compiler zu tun, wenn er die Funktion in der DLL nicht findet.

Cherry
29.08.2013, 16:07
Das macht durchaus Sinn, weil der Compiler z.T. manche Assemblerrestriktionsangaben anders versteht je nach Version.

Und die Funktion in der DLL finden ist Unsinn, weil die Funktion in der statischen Bibliothek ist (wenn sie da nicht wäre würde er gar nicht kompilieren) und die interne Makerfunktion in der RPG_RT.exe selbst.

DNKpp
29.08.2013, 16:17
Die lib leitet die Aufrufe auch nur weiter an die DLL. Wenn sich die Signaturen der Klassen, sprich die Header, nicht ändern, musst du ja auch nicht das Programm neu kompilieren. Da reicht es einfach nur die neue DLL mitzugeben.
Es gibt halt explizit diesen Fehler beim callen von isMovePossible(), und keine Adresse wird angezeigt. Kann es denn sein, das die lib out of date ist?

Cherry
29.08.2013, 16:31
Nein, die Lib enthält den Code. Und sie wird statisch in dein Plugin gelinkt, das heißt deine eigene DLL enthält nachher die Funktion, wenn du das meinst. Und diese ruft direkt eine Funktion in der RPG_RT.exe auf.

DNKpp
29.08.2013, 16:33
Und wofür soll dann die DynRPG.dll da sein?

EDIT: Achso, sie ist der loader. Jetzt verstehe ich ;)
Wenn das statisch gelinkt wird, macht das ja erst recht wenig Sinn.

Cherry
29.08.2013, 16:38
Wie gesagt, hat mit mehr Low-Level-Problemen zu tun, nämlich die Prozessorregisternutzungen der Compilerversionen. Genauer gesagt, es gibt einen Compilerbug. Wenn die libDynRPG.a die du hast zusammen mit 4.6.1 oder älter betrieben wird, funktioniert es ("zufälligerweise").

DNKpp
29.08.2013, 17:08
Hab ich mit dem denn c++11 Support?

Davy Jones
02.09.2013, 22:14
Gibt es eine Möglichkeit, Waffen und Rüstungen nachträglich innerhalb des Spiels zu bearbeiten?

Bspw. Abwehr, Angriff, HP, MP, Intelligenz, Agilität, Kritische Trefferrate, Doppelangriff, Involved Skill (Feuerzauber, Wasserzauber, usw.), Attack Attribut (Blind, Gift, usw.), etc.?

Corti
03.09.2013, 07:39
Nein.

Davy Jones
03.09.2013, 07:47
Mh, schade drum. Dachte eigentlich, dass es einfacher wäre auf Waffen & Co. zuzugreifen (sind ja nur Häkchen und Zahlen) und hätte wohl auch eine neue Dimension Sachen Equipment-Sockelung ergeben, aber es sollte wohl nicht sein =/

Corti
03.09.2013, 08:15
Ich kann deine Trauer nachvollziehen, allerdings könntest du individuelle Items wohl eh nicht verändern sondern lediglich alle Items eines Itemtypes.

DNKpp
03.09.2013, 08:36
Ok, dumme Frage. Wie komm ich an die Helden Liste ran?
Finde leider nur Items, Monster und Actor, Helden scheinen zu fehlen <.<

EDIT: >.< Actor = Held. Es ist noch zu früh xD

Davy Jones
03.09.2013, 08:37
Ich kann deine Trauer nachvollziehen, allerdings könntest du individuelle Items wohl eh nicht verändern sondern lediglich alle Items eines Itemtypes.
Alle Items eines Itemtyps? Du meinst also alle Waffen, Rüstungen, Helme, etc.? Naja, das würde nichts bringen... oder... moment.

Theorie:
Held hat drei Schwerter. Jedes davon hat grundverschiedene Werte. Nun geht der Held zum Schmied und sockelt alle Schwerter gleichzeitig mit einem Kristall (Angriff +5). Das heißt, jedes seiner Schwerter behält seine Basiswerte und steigt lediglich im Angriff um 5 Punkte. Gleichwohl kann er seine Schwerter auch wieder entsockeln um besagten Kristall bei Rüstungen, Schildern und Helmen anzuwenden.

Wäre sowas denkbar?

DNKpp
03.09.2013, 08:40
Du hast nen Denkfehler. Mit "Typ" ist nicht der Typ Schwert oder sowas gemeint, sondern eben das Item, welches in der DB steht. Das Item in deinem Inventar wird wahrscheinlich nur durch eine ID referenziert, speichert Daten allerdings nicht selbst, weswegen du ALLE Items mit der ID x manipulieren würdest.

Sölf
03.09.2013, 09:38
Erhöh doch einfach den Angriff des Charakters, wenn der Sockel in der Waffe drin ist. Nen Common Event das abfragt ob die Waffe angelegt ist und ob der Sockel drin ist, wenn ja Angriff +5. Frisst zwar switches, aber wenn du Items nicht mehrfach machen willst geht wohl nur sowas.

Corti
03.09.2013, 10:28
Sölf hat recht. Lässt sich alles locker in EventScript basteln.

Bedenke aber, dass es ein Hardcap von 99 gibt. d.h. wenn du 950 Atk hast, dann 100 Atk zufügt und dann 100 Atk abziehst du bei 899 Atk landest.

Davy Jones
07.09.2013, 08:55
Werd ich wohl dann auch so machen. Hab mir schon einige Sachen einfallen lassen =)

Andere Sache: Auf Events festgenagelte Pictures und Panoramen, die nur an einem bestimmten Fleck in der Map erscheinen sollen.

Tja, die spielen total verrückt wenn ich das Wrapping in den Map-Einstellungen aktiviere. Pictures werden nicht angezeigt bzw. verschwinden wenn man sich ein einziges Mal von ihnen entfernt. Die Panoramen dagegen fangen an zu scrollen, obwohl ich ihnen das verboten hatte.

Kann man da was fixen oder ist das auch so eine Geschichte, die nicht zu beheben ist? Die fiese Methode wären wohl Objektcharsets, aber bei 270 Pixel hohen Statuen sitze ich da Ewigkeiten dran =/

Edit: Ich poste mal rein was Corti mir geschrieben hat, ist bestimmt auch nützlich für andere:

@Panorama:
bei gewrapten Maps werden die anscheinend mittig fixiert. Wüsste nicht was man da ändern könnte.

@Pictures:
Wenn du ein Picture an einem Ort/Event verankern willst geht das so:

ShowPicture (id=1, PictureScrollsWithMap = Checked)
loop
{
VarX = Event.Screenrelative.X
VarY = Event.Screenrelative.Y
MovePicture (id=1,Position ; VarX,VarY, 0.0 / kein Wait )
wait0.0
}

Da das nur ein Move im PP ist , macht das von der Performance her nix aus. Probier das mal so.

Die Einschränkung ist: der Maker kann Pictures nur einmal zur Zeit zeichen.

Angenommen du hast eine gewrapte 20*15 Map und zeigst passgenau auf der Map ein 320*240 Picture an, und würdest dann zur Seite der Map laufen, dann müsste der Linke Teil des Pictures auf der rechten Seite des Bildschirms und andersrum angezeigt werden. Das klappt natürlich nicht, das Picture wird dann nur einmal gezeichnet, an der Stelle des Events, dessen xy man nimmt, und die xy-Position wird in Richtung des geringeren Abstandes genommen.

IndependentArt
12.09.2013, 21:57
könnte mir jemand das plugin für größere charsetgrafiken und die dazugehörigen erläuterungen linken? dachte, das war auch mit dynrpg erstellt.

und btw: gibt es eine liste aller plugins?

TwoFace
12.09.2013, 21:59
Hatte ich grad noch in meiner Lesezeichensymbolleiste rumfahren. (http://www.multimediaxis.de/threads/107547-CharExpand-Patch-Gr%C3%B6%C3%9Fere-Charsets!)

IndependentArt
12.09.2013, 22:05
thanks man.

edit: ah, verdammt, ich hatte vergessen, das das nur für 2k is -__-

TwoFace
12.09.2013, 22:06
Kein Ding. ;)

goldenroy
12.09.2013, 22:07
thanks man.

Du wirst aber nicht Dyn und das gleichzeitg verwenden können, weil Dyn für den 2k3 und der CharExpandPatch für den 2k ausgelegt ist. 0;

IndependentArt
12.09.2013, 22:23
ja, ähh ...sagt mir bescheid, wenn es das passende plugin gibt xD

bugmenot
01.10.2013, 13:35
...das mag jetzt etwas spät daherkommen, aber da ich über etwas Code gestolpert bin und mich an diesen Beitrag zurückerinnert fühlte:


[...]dass es ein Hardcap von 999 gibt. d.h. wenn du 950 Atk hast, dann 100 Atk zufügt und dann 100 Atk abziehst du bei 899 Atk landest.
Also ich würde dann wieder bei 950 landen.

Das HardCap gibt es nur beim Auslesen der Werte. Im Hintergrund wird das sehr wohl über 999 / unter 1 genau verrechnet. Halt nur irgendwo min./max. auf 1/999 beschränkt, obwohl das max.Cap beim Auslesen auf 9999 steht... fragt mich nicht warum.


481748 <>GetStr 2k3: 4BFB28
48174C mov edi,eax memorize Ptr on Hero/Actor(enemies too)
481752 call get Stat (30=Str | 34=Def | 38=Int | 3C=Agi)
481755 add eax,[edx+1C] add Stat-Increase/Reduction (caused by Skills in battle)
481758 mov ecx,270F max.cap = 9999
48175D mov edx,1 min.cap = 1
481762 call sub_4596AC call ValueCapping

| sub_4596AC <>ValueCapping
| 4596AD mov ebx,eax memorize original value
| 4596AF cmp ecx,eax Is the max.cap smaller than the original value?
| 4596B1 jge jump to 4596B5 if the value is still below the cap
| 4596B3 mov ebx,ecx set the max.cap as the new value
| 4596B5 cmp edx,eax Is the min.cap bigger than the original value?
| 4596B7 jle jump to 4596BB if the value is still above the cap
| 4596B9 mov ebx,edx set the min.cap as the new value
| 4596BB mov eax,ebx set checked/altered value as Output

481767 mov ebp,eax memorize capped value
481769 off_49AD98 = ConditionPtr
481770 call sub_45A8E4 get the amount of Conditions
481775 mov esi,eax memorize ConditionAmount
481777 test esi,esi Are there any Conditions existent?
481779 jle jump if there aren't
48177B mov ebx,1 initialize Condition_ID-Ptr
__________CheckConditionsLoop__________
481780 ->mov edx,ebx get Condition_ID-Ptr into EDX
481782 | mov eax,edi get Ptr on Hero/Actor(enemies too)
481784 | c.sub_481A9C call CheckCondition (by EDX's content)
481789 | test eax,eax Is the Actor afflicted with the Condition?
48178B | jle jump if not
48178D | off_49AD98 = ConditionPtr
481794 | mov edx,ebx get Condition_ID-Ptr
481796 | c.sub_4607A0 call GetConditionParam
48179B | cmp [eax+3C],0 Is HalvesStr_flag = false? (3D=Def | 3E=Int | 3F=Agi)
4817A1 | sar ebp,1 divide stat by 2^1 (this halves the stat)
4817AA | inc ebx Condition_ID-Ptr +1
4817AB | dec esi ConditionAmount -1
4817AC --jnz jump to check all Conditions
_______________________________________
4817AE mov eax,ebp set the stat as Output

...
4BFBC1 get stat_x0.5_flag
4BFBC4 get stat_x2.0_flag
4BFBC9 jz jump to halve the stat
4BFBCC jz jump to double the stat //stats can be above 999 with this
4BFBCE jmp else: normal stat (either no flags or both were triggered)
4BFBD0 sar ebp,1 divide memorized stat by 2^1
4BFBE3 mov eax,ebp get memorized capped stat
4BFBE5 add eax,eax double capped stat
4BFBE7 mov ebp,eax memorize new stat
4BFBE9 mov eax,ebp set the stat as Output


Man kann auch an den min./max.caps rumschrauben:

Edit:
Grobe Tippfehler... courtesy of ctrl+C and ctrl+V.


[QuickPatches]
maxStrCap=4BFB3C,#9999
minStrCap=4BFB41,#1
maxDefCap=4BFC08,#9999
minDefCap=4BFC0D,#1
maxIntCap=4BFCD1,#9999
minIntCap=4BFCD6,#1
maxAgiCap=4BFD6D,#9999
minAgiCap=4BFD72,#1

...für z.B. 1..100% oder was auch immer.

Nisa
08.10.2013, 07:34
Hi Leute,
Ich bräuchte mal eure Hilfe.

Könnte mir jemand ein Plugin machen, das diese Patches beinhaltet?

- Cherrys Startmenue Patch, welches ermöglicht ein eigenes Startmenue zubauen
- Bilderbewegungs Patch, wo sich Bilder bei Dialogen bewegen
- Fontpatch, der die Font im Spieleordner, im Spiel sofort übernimmt ohne die Font im Schriftarten Ordner reinzuschieben

Danke für jede Hilfe

Corti
08.10.2013, 10:57
Cherrys Startmenue Patch, welcher ermöglicht ein eigenes Startmenue zu bauen kann parallel zu DynRPG benutzt werden.
http://www.multimediaxis.de/threads/107421-BetterAEP
http://cherrytree.at/cms/lang/de/download/?did=17

Bilderbewegungs Patch~ du meinst wohl das hier:
http://cherrytree.at/cms/lang/de/download/?did=16

Davy Jones
08.10.2013, 16:46
Das dritte nennt sich AutoFontInstall und ist ebenfalls von Cherry, hierbei passiert allerdings folgendes:

- Du schreibst in eine cfg-Datei welche Fonts du benutzt und packst diese zusammen mit den Schriftarten ins Spielverzeichnis.
- Benenne jetzt deine RPG_RT in OLD_RPG_RT.
- Dann nimmst du die von Cherry gepatchte RPG_RT und packst sie ebenfalls ins Verzeichnis. Diese EXE ist viel kleiner als die reguläre und dient lediglich dazu, die Fonts bei Spielstart temporär in den Systemordner zu installieren. Anschließend aktiviert sie OLD_RPG_RT (deine Original-Exe) und lässt dein Spiel laufen.

Patches wie UnlockPics, etc. bleiben dir erhalten, auch mit afm (anotherfullscreenmode) bzw. dem afm gamestarter sollte es meines Wissens nach keine Probleme geben.

Cherry
14.10.2013, 21:38
Könnte man btw auch mal in ein Plugin packen. AutoFontInstall macht nix anderes als "AddFontResource" für die Fonts aufzurufen.

@All: Ich habe ja vor einiger Zeit eine neue Version angekündigt, und bis jetzt kam nix raus. Wieder mal Zeitmangel. Aaaber, es sind schon viele Bugs gefixt... wenn auch nicht alle. Eigentlich wollte ich erst alle mittlerweile bekannten Bugs fixen und dann die neue Version releasen, aber ich denke, ich werde jetzt in Kürze einfach das, was ich bisher habe, mal releasen. Um nicht alles weiter zu verzögern.

Davy Jones
14.10.2013, 21:41
Niiiice, ist auch der Bug mit der Transparenz gefixt?

Cherry
15.10.2013, 18:56
Ja.

Davy Jones
15.10.2013, 20:31
=D

IndependentArt
20.10.2013, 14:32
gibt es eigentlich sowas wie eine plugin library? wenn nicht, sollte es das vielleicht.

goldenroy
20.10.2013, 14:48
gibt es eigentlich sowas wie eine plugin library? wenn nicht, sollte es das vielleicht.

>>Link<< (http://www.multimediaxis.de/search.php?searchid=1704434)
>>Link<< (http://rpgmaker.net/search/?q=DynRPG)
>>Link<< (http://cherrytree.at/cms/lang/de/download/?category=8)

Cherry
20.10.2013, 15:03
Gibts, aber sie wurde ewig nicht aktualisiert. Sollte ich echt mal wieder machen, ich weiß. Sorry.

Yenzear
27.10.2013, 17:33
Hallo, hab mal ne extrem dumme Frage:
Gibt es ein Plugin, das die ATB-Leiste im RM2k3 schneller macht bzw allgemein das 2k3 KS aufmotzt
und gibt es eines, welches die Anzahl verwendbarer Pictures erhöht?
Wenn ja, wo? ^^

Danke schonmal im Vorraus für die Antworten :)

Corti
27.10.2013, 17:56
Mit DynRPG hat man 2000 Pictures. 1 bis 1000 werden beim Mapwechsel gelöscht, die oberen nicht.

AtbSpeed:
http://www.multimediaxis.de/threads/138938-DynRPG-Corti-s-Werkstatt

Yenzear
28.10.2013, 04:07
Danke erstmal für das ATB Plugin ^^
Aber wie kann ich freischalten, dass man bei DynRPG 2000Pics hat? o_O
Im Maker geht es nur bis 50 bei mir und ich nutze auch DynRPG, also muss entweder in der DynRPG Bibliothek noch ne
Einstellung gemacht werden, oder aber es funktioniert mal wieder was nicht, wie es soll bei mir xD

Nemica
28.10.2013, 16:38
DynRPG tut gar nix am Maker selbst. Entweder du änderst das selber in der Maker-exe, oder du lädst dir den 2k9 runter, der hat das standardmäßig drin.

Yenzear
28.10.2013, 18:44
Anscheinend leider nicht ^^"
Habe es direkt nach dem Download versucht. Habe den 2k9Ultimate gestartet, mein Projekt ausgewählt und versucht, ein Picture mit der ID 51 zu setzen, was nicht geklappt hat :(
Sry, kenne mich da wirklich überhaupt nicht aus o_O

Quetschi
29.10.2013, 07:41
Erstell eine .ini-Datei in dem uimod-Ordner des 2k9Ultimate mit folgendem Inhalt:

; "Show Picture" dialog
[FormEvCmd11110]
; Picture ID
DialEdit1.MaxValue=100000
; Magnification
DialEdit2.MaxValue=100000
; Transparency
DialEdit3.MaxValue=100000
DialEdit4.MaxValue=100000

; "Move Picture" dialog
[FormEvCmd11120]
; Picture ID
DialEdit1.MaxValue=100000
; Magnification
DialEdit2.MaxValue=100000
; Transparency 1
DialEdit3.MaxValue=100000
; RM2k: Duration / RM2k3: Transparency 2
DialEdit4.MaxValue=100000
; RM2k3: Duration
DialEdit4.MaxValue=100000

; "Erase Picture" dialog
[FormEvCmd11130]
; Picture ID
DialEdit1.MaxValue=100000

Dann öffnest du die settings des 2k9 und suchst nac UIModFile und fügst das dort hinzu:
UIModFile#=DerNameDeinerIniDatei.ini

Die # tauschst du dabei durch die nächste freie Nummer aus.

Dann kannst du PictureIDs bis 100.000 einstellen, der Maker wird dir jedoch trotzdem nur höchstens die 2.000 durch DynRPG anzeigen. Dass die IDs so hochgehen liegt einfach daran, dass es eigentlich für den PicPointerPatch ist.

Cherry
29.10.2013, 09:42
@Yenzear: Es gibt nicht umsonst eine Dokumentation. (http://rpg-maker.cherrytree.at/dynrpg/patch.html#more_pics)

Yenzear
29.10.2013, 15:06
@Quetschi:
Vielen Dank dafür :)

@Cherry:
Sry, daran hab ich überhaupt nicht gedacht o_O

Corti
17.12.2013, 14:50
Ich hab ein sonderbares Phänomen/Problem.

In "onStartup" führt RPG::Image->loadFromFile zum kommentarlosen Beenden des Spieles.
In "onInitFinished" führt RPG::Image->loadFromFile zu keinen Problemen bei Copy&Paste desselben Codes.

Dieses Phänomen habe ich zum ersten mal überhaupt. Bisher hat es in allen Plugins egal welcher Art immer toll funktioniert in onStartup Bilder zu laden.

@MarcL
Was genau sagt der Fehler? Mach mal nen Screenshot und schick mir den bzw. schreib ihn mal ab.
Und mach deinen Postkasten leer ;-)

Cherry
18.12.2013, 09:36
onStartup ist auch der falsche Ort, onInitFinished ist der richtige.


Do not try to access RPG objects from this function, since the game hasn't been initialized yet.
onStartup wird aufgerufen bevor eine Zeile RM-Code läuft. Das Callback ist hauptsächlich dazu da, schwere Fehler (z.B. fehlende Dateien) festzustellen o.ä.

Sollte es da je funktioniert haben, Bilder zu laden, war das ein glücklicher Zufall. Es gibt eigentlich undefined behaviour wenn man sowas versucht, weil du eben eine Funktion des Makers aufrufst bevor dieser überhaupt weiß dass er läuft (was heißt dass er auf nicht initialisierte Objekte zugreifen könnte und Sachen nicht da sind, die normal immer da sind, wie z.B. der Delphi Exception Handler oder die Hauptinstanz der TApplication-Klasse).

Corti
18.12.2013, 10:38
Ah kay. thx.^^

Cherry
18.12.2013, 10:44
Aja, mir fällt grade auf dass das nirgendwo steht: RPG::loadConfiguration ist ausgenommen, weil das komplett in der DynRPG-Library implementiert ist.

Corti
22.12.2013, 18:37
Noch ne Frage.

Wie finde ich raus, ob ein Testkampf mit F12 neugestartet wurde? Es findet dabei kein Szenenwechsel statt. Framcounter wäre ne Idee, aber der setzt sich ja auch im Kampf irgendwann zurück, ein Int ist ja auch nicht unendlich

Hintergrund: Ich verändere Stats von Helden und merke mir, von welchen. Problem: Wenn ich nun die ATK von jemand erhöhe, dann F12 drücke, dann denkt das Plugin immer noch, die ATK seien erhöht und reduziert den Helden auf < des ursprünglichen Wertes.

Edit: Je mehr ich drüber nachdenke ist der framcounter okey für den Kampf-Testmode, so lange wird schon keiner Testen xD Mach ich halt ne Fallunterscheidung zwischen Kampftest und Spielmode...jaha!
Edit2: Scheisse, für den Fall F12 -> neues Spiel muss ich das auch einbauen... ARGH...scheisse -.-

MarcL
22.12.2013, 19:04
Ich habe gleich auch noch ne "kleine" Frage wegen einer Fehlermeldung (2k3 mit DynRPG und vielen Plugins)

1932119322 (zwei mal die selbe Adresse)

Jemand eine Idee woher das kommen könnte? Tritt immer am Ende eines Enemy-encounters auf oO;
Könnte es etwas mit der RPG::Sound Class zu tun haben? In einem Plugin werden im Kampf Sounds abgespielt, ich hatte auch kurzzeitig keine Musik mehr aber noch Sounds, darum vermute ich hier ein Problem ^^;
Sonst habe ich wenig Anhaltspunkte woran es liegen kann, ich vermute aber, dass es eines der wenigen neuen Sachen ist, seitdem der Fehler auftritt... der Fehler tritt erst nach mehreren Kämpfen auf ^^

Danke im vorraus :)

bugmenot
22.12.2013, 20:04
Könnte es etwas mit der RPG::Sound Class zu tun haben?
Glaube nicht.

Message Boxen.

Die entsprechende Funktion wird beim Entfernen von Textzeilen/Strings (aus dem Speicher(?)) aufgerufen.

Eine Liste an Patches (non-Dyn) und Plugins, die du in der RPG_RT benutzt, wäre hilfreich.

Davy Jones
23.12.2013, 01:31
@All: Ich habe ja vor einiger Zeit eine neue Version angekündigt, und bis jetzt kam nix raus. Wieder mal Zeitmangel. Aaaber, es sind schon viele Bugs gefixt... wenn auch nicht alle. Eigentlich wollte ich erst alle mittlerweile bekannten Bugs fixen und dann die neue Version releasen, aber ich denke, ich werde jetzt in Kürze einfach das, was ich bisher habe, mal releasen. Um nicht alles weiter zu verzögern.
Kann man ungefähr abschätzen, wann eine neue Version erscheint? Vor allem auf die Sache mit der gefixten Transparenz bin ich scharf =)

MarcL
23.12.2013, 07:41
Glaube nicht.
Eine Liste an Patches (non-Dyn) und Plugins, die du in der RPG_RT benutzt, wäre hilfreich.

Danke für die Hilfe, hat sich mittlerweile denke ich schon erledigt :) wenn nicht, melde ich mich nochmal ^^;

Cherry
23.12.2013, 17:16
@Corti: Hmja, an diesen Spezialfall habe ich nicht gedacht. Framecounter sollte aber passen, der wrapt erst nach 414 Tagen. Für normales Spiel gibt es onNewGame.
@Davy Jones: Eigentlich fehlt nur mehr ganz wenig dass ich das raushauen kann, ich kam aber jetzt seit Monaten nicht dazu den Maker überhaupt mal aufzumachen. :/ Vielleicht mache ich das direkt am BMT wo ich mal nicht an anderes denken muss.
@MarcL: Was hat es denn erledigt? Die Fehler heißen dass irgendwo was abgestürzt ist, aber was genau kann man davon nicht sagen, da müsste man schon das Spiel live debuggen.

djeurissen
29.12.2013, 18:47
Nachdem ich neben meiner Ausbildung mal wieder Zeit gefunden habe an meinem Plugin weiterzuarbeiten, bin ich auf ein Problem gestoßen...

Gibt es eine Möglichkeit die Preconditions von Events abzufangen und an denen zu werkeln?
RPG::EVCMD_FORK ist ja blöderweise nur Conditional Branch, das hilft mir aber nur zum Teil weiter...

Cherry
30.12.2013, 18:14
Noch nicht, leider.

djeurissen
30.12.2013, 19:49
Kommt das mit dem neuen Update oder ist das noch gar nicht fertig^^?
Naja, so oder so muss ich mich gedulden bis du wieder Zeit gefunden hast weiterzuarbeiten

Corti
30.12.2013, 20:31
djeurissen, was soll dein Plugin denn tun können?

djeurissen
30.12.2013, 20:41
Mein Plugin gibt jedem Event einen Selfswitch, bzw auf Wunsch mehrere Selfswitche

Ansich funktioniert das auch alles wunderbar, nur lassen sich so Dinge wie Büsche die verschwinden damit nicht gerade einfach bewerkstelligen oder kopierbare Truhen...
Oder generell Dinge die verlangen das man ne 2 EventSeite benötigt...

Corti
30.12.2013, 21:03
Lustige Idee, leider fällt mir dazu auch nix ein. =/

Cherry
31.12.2013, 00:24
Version 0.20 mit ein paar neuen Funktionen aber vor allem einem Haufen Bugfixes wäre soweit... wer mag mir das testen bevor ich es raushaue?
http://share.cherrytree.at/showfile-12494/dynrpg.rar
Bitte einfach in der dynrpg.chm den Changelog lesen...

djeurissen
31.12.2013, 07:30
Bist du jetzt bis 1 Uhr aufgeblieben nur um den neuen patch rauszuhauen ._.

Naja, es führt schonmal zu keinen Fehlermeldungen bei meinem alten Plugin, wenn ich Zeit habe werde ich das mal testen

Kazesui
31.12.2013, 12:11
Ich habe ein paar Probleme mit diesem Version schon.
Ich habe ein neues Projekt erstellt und diesem das neue Patch verpasst. Bei alte Plugins krieg ich jetzt nen "Loading Plugin Failed!2" und bei Plugin kompiliert mit der neue Version kriege ich einen "Plugin is not compatible with this version of DynRPG!" fehler.

djeurissen
31.12.2013, 12:17
Ja, das problem hatte ich aus irgendeinem grund nach dem 2 mal auch, habe cherry schon eine nachricht geschickt

Cherry
01.01.2014, 01:52
Da war wohl irgendwie der alte Loader drin. Bitte nochmal patchen. http://share.cherrytree.at/showfile-12494/dynrpg.rar

Kazesui
01.01.2014, 02:03
Ein bisschen besser. Jetzt ladet soweit ich sehen kann alte Plugins, aber neue Plugins gibt immernoch ein Fehler. Diesmal
"Plugin xxxx is not compatible with this version of DynRPG! Plugin link version:3 Loader link version: 2"

Cherry
01.01.2014, 02:12
Uuuuuund falsche Datei hochgeladen. Sorry.

Hier nochmal: http://share.cherrytree.at/showfile-12494/dynrpg.rar

Kazesui
01.01.2014, 02:36
Jetzt funktioniert es :)
bzw. zumindest das Plugin laden

MarcL
02.01.2014, 08:16
Doofe Frage: Einfach drüberpatchen oder brauch ich eine dynrpg-ungepatchte rpg_rt.exe? http://cherrytree.at/misc/smilies/049ponder.gif

Kazesui
02.01.2014, 15:51
Eigner erfahrung nach kann es sich wohl lohnen den patch drüber ein dynrpg-ungepatchtes .exe zu hauen. Zumindest hatte ich ein kleines Problem bis ich das tat.

Cherry
02.01.2014, 19:35
Welches Problem?

Der Patcher ist eigentlich dafür gebaut, immer drübergepatcht zu werden.

MarcL
02.01.2014, 20:23
Mach ich was falsch oder wurde der Transparenz-Bug bei diesem Update nicht behoben?
Weiß nicht genau worum es bei dem Bug geht aber ich denke es ist das was mir auch schon aufgefallen ist, und zwar dass Events mit Transparent Häkchen je nachdem ob sie auf "Same Layer" oder auf "Above hero" stehen, transparent bzw. nicht transparent sind...
In der Changelog steht doch dass es gefixt wurde oder verwechsel ich das?

Kazesui
02.01.2014, 23:47
@Problem
Kein Fehlmeldung taucht auf, sondern es läuft einfacht nicht. Das program wird leise beendet bevor ich bis zum Titelbild kam. Ein anderes Problem, es scheint als gäbe es jetzt probleme mit dem Image::drawText Methode. Gibt bei mir segfault Fehlmeldungen mit unterschiedlichen addressen, darunter 0040293E, offset 6AB8E000 (als ein beispiel).

Kyuu
03.01.2014, 12:21
Mach ich was falsch oder wurde der Transparenz-Bug bei diesem Update nicht behoben?
Weiß nicht genau worum es bei dem Bug geht aber ich denke es ist das was mir auch schon aufgefallen ist, und zwar dass Events mit Transparent Häkchen je nachdem ob sie auf "Same Layer" oder auf "Above hero" stehen, transparent bzw. nicht transparent sind...
In der Changelog steht doch dass es gefixt wurde oder verwechsel ich das?

Der Bug war, dass bei "Same Layer as Hero" der Haken bei "Transparent" kein Auswirkung hatte. Das wurde aber, soweit ich das gerade getestet habe, schon behoben.


@Cherry:

Wie ist dein DynRPG SDK lizenziert?

MarcL
05.01.2014, 08:43
Der Bug war, dass bei "Same Layer as Hero" der Haken bei "Transparent" kein Auswirkung hatte. Das wurde aber, soweit ich das gerade getestet habe, schon behoben.

Achso? Dann bin ich mal gespannt ob der Bug den ich oben beschrieben habe mit der neuen Version verschwindet ^^

@version0.20:
Also entweder ich stelle mich zu blöd an (wahrscheinlich) oder der Patch funktioniert bei mir nicht... (Windows 7 x64, Patcher im Adminmodus)

-Hab zuerst mein mit der alten DynRPG Version gepatchtes Projekt überpatcht, DynRPG hat funktioniert aber da der von mir oben beschriebene Fehler noch auftrat, vermute ich, war es wohl doch noch die alte Version...
-Dann neues Projekt mit unberührter RPG_RT.exe erstellt, gepatcht, dynloader.dll und Ordner wurden erstellt, RPG_RT.exe wurde verändert, aber DynRPG läuft nicht... es wird weder ein Plugin erkannt noch wird überhaupt erst das DynRPG Icon beim start der exe gezeigt ^^;

Achja übrigens... bei Cherry wirkt das scheinbar alles so selbstverständlich, aber hiermit nochmal ein dankeschön, dass du deine wertvolle Freizeit opferst, so fleißig an DynRPG weiterarbeitest und es allen zur Verfügung stellst, um die RPG Maker 2003 Welt zu bereichern! *snif* *gerührt* http://cherrytree.at/misc/smilies/054sm_12.gif (und danke für die alten Smileys :P)

Davy Jones
21.01.2014, 16:36
So, ich spiele jetzt grad mit DynRPG 0.20 (Testversion).

Ein Bug der mir mit der 0.17 nicht untergekommen ist:
- Database, Registerkarte Monstergruppen: Kampf mit beliebiger Party gegen beliebigen Gegner ohne irgendwelche DynPlugins:
Fehlermeldung: Access violation in module "RPG RT.exe" in with address 04427FC and offset 00000000 of type Write occured.

Die Dialoge zu Kampfbeginn rattern problemlos durch, aber sobald sich der erste ATB-Balken gefüllt hat, kommt die Fehlermeldung und der Kampf geht wieder von vorne los.

Kyuu
08.02.2014, 06:32
function onInit()
ambientlight = 0x1A1A1AFF

lightmap = rpg.graphics.newImage(320, 240)
lightmap:setBlendMode "add"

lightsource = rpg.graphics.newImage(100, 100)
lightsource:drawCircle(true, 50, 50, 50, 0xFFFFFFFF, 0x000000FF)
end

function onFrame()
if rpg.scene == "map" then
lightmap:clear(ambientlight)

local hero_x, hero_y = rpg.map.hero:getScreenPosition()
lightmap:draw(lightsource, hero_x - 50, hero_y - 60)

for i = 1, #rpg.map.events do
local event_x, event_y = rpg.map.events[i]:getScreenPosition()
lightmap:draw(lightsource, event_x - 50, event_y - 60)
end

rpg.graphics.setBlendMode "multiply"
rpg.graphics.draw(lightmap, 0, 0)

if rpg.keyboard.isDown "o" then
local screenshot = rpg.graphics.copyRect(0, 0, 320, 240)
rpg.graphics.writeImage(screenshot, "Save/screenshot.png")
end
end
end


19599

^_^

Corti
08.02.2014, 08:26
Fog of war, sweet ^_^

Kyuu
08.02.2014, 10:06
Ne, aber...


Fog of war

Challenge accepted!



function onInit()
rpg.graphics.setBlendMode "multiply"

fogs = {}

buffer = rpg.graphics.newImage(320, 240)

light = rpg.graphics.newImage(100, 100)
light:drawCircle(true, 50, 50, 50, 0xFFFFFFFF, 0x00000000)
end

function onFrame()
if rpg.scene == "map" then
local fog = fogs[rpg.map.id]

if fog == nil then
fog = rpg.graphics.newImage(rpg.map.width * 16, rpg.map.height * 16)
fog:setBlendMode "add"
fogs[rpg.map.id] = fog
end

if rpg.map.hero.x ~= x or rpg.map.hero.y ~= y then
fog:draw(light, rpg.map.hero.x * 16 - 45, rpg.map.hero.y * 16 - 50)
end

x, y = rpg.map.hero:getPosition()

fog:copyRect(rpg.map.cameraX, rpg.map.cameraY, 320, 240, buffer)

rpg.graphics.draw(buffer, 0, 0)

if rpg.keyboard.isDown "o" then
local screenshot = rpg.graphics.copyRect(0, 0, 320, 240)
rpg.graphics.writeImage(screenshot, "Save/screenshot.png")
end
end
end


19600

In action: download RPGSS.7z (http://share.cherrytree.at/showfile-12965/rpgs.7z)

:hehe:

Corti
08.02.2014, 11:32
Mir fehlt die Datei libgcc_s_dw2_1.dll.

Und btw. what the heck treibst du da eigentlich? :hehe: lua52.dll? Diese Syntax da ?

Kyuu
08.02.2014, 12:36
Ups: download libgcc_s_dw2-1.dll (http://share.cherrytree.at/showfile-12966/libgcc_s_dw2_1.dll)

Das ist ein Plugin, für den ich die Idee schon vor einem Jahr hatte, aber zu schnell die Lust daran verlor. Nachdem Cherry seine 0.20 Version veröffentlichte, packte mich schließlich wieder der Ehrgeiz und nun ist es so gut wie fertig. Das da oben ist sowas wie ein Proof of Concept. ^_^

Cherry
08.02.2014, 14:28
Ich hatte die Idee vor dir: http://cherrytree.at/cgss

Das Problem ist nur, Lua für sowas zu verwenden, besonders Code der oft aufgerufen wird wie onFrame, hat sich als immens langsam erwiesen. Deshalb wird hier auch kompiliert und nicht interpreritert. Ich habe aus den Fehlern gelernt.

Kyuu
08.02.2014, 15:54
Ah cool, ich wusste, dass du mal etwas mit Lua machen wolltest, ist für mich dann aber irgendwie untergegangen.

Naja, ich kann nichts zu den Problemen bei CGSS sagen, weil ich die Interna nicht kenne. Vielleicht hast du einfach die falschen Schwerpunkte gesetzt? Soweit ich bei mir getestet habe, kann ich auf jeden Fall sagen, dass meine persönlichen Erwartungen übertroffen wurden. Im Moment läuft das Rendering noch komplett ohne Hardwarebeschleunigung und mit Vanilla Lua habe ich noch lange nicht das volle Potential ausgeschöpft, was die Ausführungsgeschwindigkeit angeht, mit LuaJIT (http://luajit.org/performance_x86.html) geht da noch viel mehr. Mal sehen wie sich das Projekt entwickeln wird, um ehrlich zu sein mache ich das größtenteils um zu sehen, wie weit ich mit dem komme, was ich mir vorgestellt habe.

BTW: Kannst du mal deinen Quellcode zu DynRPG releasen? Ich würde mir gerne anschauen was sich hinter den Kulissen abspielt und es wäre schön, wenn ich die Möglichkeit hätte, DynRPG mit einem Compiler meiner Wahl zu kompilieren.

Cherry
08.02.2014, 17:48
1. Der Quellcode den du in C++ siehst, nützt wenig, das meiste geht im Patch ab.
2. Compiler deiner Wahl geht sowieso nicht, wegen der Asm-Statements und ein paar anderer Implementation Details. Ist alles sehr Low-Level hier...

Kyuu
08.02.2014, 18:28
1. Der Quellcode den du in C++ siehst, nützt wenig, das meiste geht im Patch ab.


Das macht nichts, wenig kann auch interessant sein.



2. Compiler deiner Wahl geht sowieso nicht, wegen der Asm-Statements und ein paar anderer Implementation Details. Ist alles sehr Low-Level hier...


Ich meinte schon GCC und 4.7.1 aufwärts, den Kommentar in der Hilfedatei habe ich gelesen und dass Dyn aufgrund von Asm nur mit GCC funktioniert weiß ich auch. ;) Das Problem ist, selbst gleiche Compilerversion kann inkompatibel sein, Beispiel: Für Dyn 0.20 hast du einen Compiler mit SJLJ Exception Handling verwendet, will ich nun einen Compiler mit DW2 Exception Handling verwenden, bekomme ich Linker Fehler.

Davy Jones
09.02.2014, 10:59
Hey Cherry, weißt du schon woran es hier liegen könnte?

So, ich spiele jetzt grad mit DynRPG 0.20 (Testversion).

Ein Bug der mir mit der 0.17 nicht untergekommen ist:
- Database, Registerkarte Monstergruppen: Kampf mit beliebiger Party gegen beliebigen Gegner ohne irgendwelche DynPlugins:
Fehlermeldung: Access violation in module "RPG RT.exe" in with address 04427FC and offset 00000000 of type Write occured.

Die Dialoge zu Kampfbeginn rattern problemlos durch, aber sobald sich der erste ATB-Balken gefüllt hat, kommt die Fehlermeldung und der Kampf geht wieder von vorne los.
Das ist so ziemlich der einzige Fehler, den ich mit deiner 0.20 von DynRPG produzieren kann.

Kyuu
09.02.2014, 11:53
@Davy Jones:

Bei mir funktioniert es ohne Probleme.

Davy Jones
09.02.2014, 12:20
Sehr merkwürdig.

Auf was bezieht sich denn die Adresse in dieser Fehlermeldung?

Corti
10.02.2014, 14:00
Folgende Sache:

Ich benutze ParsedCommentParameter vom Typ String. Ab und an, scheinbar ohne Muster, ist in der Text-variable char[200] mehr drin als das, was ich reinschreibe. Ich gebe als Parameter z.B. "Haven" und kriege als 6.,7.,8. Zeichen irgend einen Ascii-Schmotz.

http://rpg-maker.cherrytree.at/dynrpg/class_r_p_g_1_1_parsed_comment_parameter.html#a2b6b7fd31ede0356d1aa5d26481e0303

Cherry
10.02.2014, 23:40
0.20?

Das war ein Bug in der vorigen Version, war schon länger mit einem neuen Loader behoben. Der aktuellste 0.14-Loader sollte das auf jeden Fall auch schon behoben haben.

Corti
11.02.2014, 05:42
0.17 mit der von dir nachgereichten dll.

Kyuu
21.02.2014, 21:46
function onInit()
font = rpg.graphics.newFont("Picture/font.png")

text = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, " ..
"sed diam nonumy eirmod tempor invidunt ut labore et dolore " ..
"magna aliquyam erat, sed diam voluptua. At vero eos et " ..
"accusam et justo duo dolores et ea rebum. Stet clita kasd " ..
"gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet." ..
"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, " ..
"sed diam nonumy eirmod tempor invidunt ut labore et dolore " ..
"magna aliquyam erat, sed diam voluptua. At vero eos et " ..
"accusam et justo duo dolores et ea rebum. Stet clita kasd " ..
"gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet." ..
"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, " ..
"sed diam nonumy eirmod tempor invidunt ut labore et dolore " ..
"magna aliquyam erat, sed diam voluptua. At vero eos et " ..
"accusam et justo duo dolores et ea rebum. Stet clita kasd " ..
"gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."

lines = font:wordWrapString(text, 300)
end

function onFrame()
if rpg.scene == "map" then
if rpg.keyboard.isDown "t" then
local msg = ""
local sum = 0
for i = 1,5 do
local count = 0
local t = rpg.timer.getTicks() + 1000
while rpg.timer.getTicks() < t do
local y = 10
for i = 1, #lines do
rpg.graphics.drawText(font, 10, y, lines[i])
y = y + font.maxCharHeight
end
count = count + 1
end
msg = msg .. count .. "\n"
sum = sum + count
end
print(msg .. "\n\n" .. (sum / 5))
end

local y = 10
for i = 1, #lines do
rpg.graphics.drawText(font, 10, y, lines[i])
y = y + font.maxCharHeight
end
end
end


19743
19744

^_^

IndependentArt
22.02.2014, 11:21
mal ne blöde frage: ich hab mich mit dyn noch nicht großartig befasst. gibt es irgendwo grenzen? also, kann man damit theoretisch alles am maker manipulieren?

Kyuu
22.02.2014, 17:28
Ja, es gibt Grenzen. Aber wenn du Glück hast ist das, was du brauchst bereits manipulierbar.

IndependentArt
22.02.2014, 22:00
klingt so wie die menschliche dna. "jaaa, also einiges können wir manipulieren, anderes wird noch jahre der forschung benötigen" :D

Cherry
22.02.2014, 23:30
So ist es auch.

Kyuu
23.02.2014, 15:26
function onInit()
font = rpg.graphics.newFont("Picture/font.png")
windowSkin = rpg.graphics.newWindowSkin("Picture/windowskin.png")
end

function onFrame()
if rpg.scene == "map" then
local text = "Hello, my name is " .. rpg.map.hero.name .. "!"
local textWidth = font:getStringWidth(text)
local x, y = rpg.map.hero:getScreenPosition()
rpg.graphics.drawWindow(windowSkin, x - 80, y - 60, textWidth, font.maxCharHeight)
rpg.graphics.drawText(font, x - 80, y - 60, text)
end
end


19749
19754
19756

Coming soon...

goldenroy
23.02.2014, 22:50
@Kyuu: Was wird das? :0 "RPGSS" klingt schon sehr interessant, ist es das, was ich denke was es ist?

Kyuu
24.02.2014, 12:21
Sowas ähnliches wie RGSS. Stellt Spielobjekte, die durch DynRPG offengelegt sind zur Verfügung, plus einige Bibliotheken, und das Ganze in Lua. :0 Sollte bald etwas Vorzeigbares haben, fehlt (außer einigen Longterm-Sachen) eigentlich nur noch Dokumentation.

Davy Jones
25.02.2014, 10:28
Wie ist in etwa die Performance? RGSS1 vom MakerXP war ja fürchterlich langsam.

Kyuu
25.02.2014, 16:30
Ist ja auch von Enterbrain!

Davy Jones
25.02.2014, 18:41
Naja, RGSS2 und RGSS3 habe ich als pfeilschnell in Erinnerung xD

MarcL
01.03.2014, 11:32
hallöchen ^^

ich hab jetzt mal DynRPG v0.20 (ich denke auch mit dem aktuellsten Loader) installiert und alles funktioniert auch, jedoch habe ich folgenden Fehler, wenn ich ein Item verwende:
19848

Ich vermute, es könnte mit einem der folgenden IPS Patches zusammenhängen, bin aber eigentlich völlig ratlos ^^;
19849

Danke im voraus für alle Helfer ^_^y

bugmenot
01.03.2014, 13:40
folgenden Fehler
Nimm mal die .ips file für normal_skill_window_duration raus.

MarcL
01.03.2014, 14:25
Nimm mal die .ips file für normal_skill_window_duration raus.

Hmm... das scheint der Fehler zu sein, ohne den Patch klappt alles wunderbar, danke! ^__^y
Ich hab ohnehin nicht mal ausprobiert, ob die skill window dauer dadurch wirklich länger wird ^^; als brauch ich den patch nicht unbedingt :)

danke danke bugmenot! *verbeug*


Bei v0.20 braucht man den skill_window_fix auch nicht.

Ich verstehe ^^; gut zu wissen!

Corti
01.03.2014, 15:01
Bei v0.20 braucht man den skill_window_fix auch nicht.

IndependentArt
02.03.2014, 10:50
19856

habe auch einen bug ...
beim einfügen eines partikeleffekts in den call meines menüs kommt der, und zwar, wenn ich das menü ganz schnell hintereinander rufe. vermutlich überschneiden sich dabei die einzelnen effekte irgendwie ...?

MarcL
05.03.2014, 07:06
19856
habe auch einen bug ... beim einfügen eines partikeleffekts in den call meines menüs kommt der, und zwar, wenn ich das menü ganz schnell hintereinander rufe. vermutlich überschneiden sich dabei die einzelnen effekte irgendwie ...?

Das ist so schwierig zu sagen, ohne die genaue Umsetzung im Maker zu sehen ^^; Vielleicht hast du einen Befehl falsch verwendet oder sowas... Du kannst mir gern dein Projekt schicken, dann kuck ichs mir man ;) Weiß ja so nicht, wie viele Effekte du erzeugst, wo und wann du sie aufrufst und wo und wann du sie wieder "zerstörst" ^^

IndependentArt
05.03.2014, 15:30
oh, warte mal ... muss man sie zerstören? wenn ja, wann? ich nehme mal an das is der "kill" befehl.

Quetschi
18.03.2014, 19:25
Kennt sich jemand mit Code::Blocks aus und weiß, ob und wie es möglich ist neben der aktuellsten Version noch eine ältere Version vom GCC Compiler zu verwenden?
Sollte ja von Projekt zu Projekt einstellbar sein, welche verwendet wird.

Kazesui
18.03.2014, 19:42
Kennt sich jemand mit Code::Blocks aus und weiß, ob und wie es möglich ist neben der aktuellsten Version noch eine ältere Version vom GCC Compiler zu verwenden?
Sollte ja von Projekt zu Projekt einstellbar sein, welche verwendet wird.

Das einfachste wäre wahrscheinlich der alte version vom MinGW neben der aktuelle zu kopieren, und dann bei settings -> compiler -> toolchain executable und dann der Compiler's installation directory zu der pfad der alten MinGW ändern. Wenn du nur vor hast es für DynRPG benutzen, könntest du auch einfach der MinGW folder ganz ersetzen, und du brauchst nichts anderes zu machen.

G-Brothers
24.03.2014, 00:34
Was mir neulich aufgefallen ist: Seit der neusten Version vom DynRPG werden manchmal (sogar recht selten) Sounds im Spiel nicht vollständig abgespielt. Vor allem längere Sounds sind betroffen.

Cherry
27.03.2014, 19:13
OK, das ist strange; das Problem ist nur: Ich kann da nix dagegen tun wenn ich nicht mal ein Testprojekt habe wo das *reproduzierbar* passiert. Ich hab nämlich spontan nicht die geringste Idee wie das verursacht werden könnte...

Kyuu
08.04.2014, 19:38
Coming soon...


I suck...



function onInit()
font = graphics.newFont("Picture/font1.png")
windowSkin = graphics.newWindowSkin("Picture/windowskin2.png")
windowSkin.topLeftColor = graphics.packColor(0, 90, 180)
windowSkin.topRightColor = graphics.packColor(0, 0, 100)
windowSkin.bottomLeftColor = graphics.packColor(0, 0, 150)
windowSkin.bottomRightColor = graphics.packColor(0, 0, 50)
end

function onEventDrawn(event, isHero)
local text = event.name
local x, y = event:getScreenPosition()
local text_width = font:getStringWidth(text)
game.screen.drawWindow(windowSkin, x - text_width / 2, y - 40, text_width, font.maxCharHeight, 150)
game.screen.drawText(font, x - text_width / 2, y - 40, text)
return true
end

function onBattlerDrawn(battler, isMonster, id)
local x, y = battler:getScreenPosition()
x = x - 20
y = y - 60

-- draw background
game.screen.drawRectangle(true, x - 5, y - 5, 80, 40, graphics.packColor(0, 0, 0, 150))

-- draw battler name
game.screen.drawText(font, x, y, battler.name)

y = y + font.maxCharHeight

-- draw hp text
game.screen.drawText(font, x, y, "HP: " .. battler.hp .. "/" .. battler.maxHp)

y = y + font.maxCharHeight

-- draw hp bar
local hp_bar_len = battler.hp / battler.maxHp * 60
game.screen.drawLine(x + 1, y + 1, x + 1 + 60, y + 1, graphics.packColor(0, 0, 0)) -- shadow
game.screen.drawLine(x, y , x + hp_bar_len, y, graphics.packColor(0, 128, 0))

return true
end


http://share.cherrytree.at/showfile-13833/bla1.png
http://share.cherrytree.at/showfile-13835/bla3.png

Fun!

Davy Jones
09.04.2014, 01:50
Meine Fresse!

IndependentArt
09.04.2014, 16:52
ehm, okay? xD explanation and stuff? ^^

Kyuu
09.04.2014, 17:53
Ach, nur eine kleine Rückmeldung um zu zeigen, wie cool das wird dass ich vorwärts komme. Nichts Spezifisches. :D

Cherry
13.04.2014, 23:14
Kyuu, ich finds immer noch total cool dass du das in Lua umsetzt. As said, ich dachte es wäre zu langsam. Aber du scheinst das wunderbar hinzukriegen. :A

Kyuu
14.04.2014, 11:51
Hey, danke, das spornt mich jetzt noch mehr an, das Ding fertigzubekommen. Ja es läuft erstaunlich schnell (sogar mit Vanilla Lua). Ich bin jetzt übrigens auf LuaJIT umgestiegen, wegen dem zusätzlichen Performanceboost durch JIT-Kompilierung und der FFI-Bibliothek (http://luajit.org/ext_ffi.html).

An dieser Stelle Kudos an dich, DynRPG hat wirklich viel Potential. Ich hoffe du machst da irgendwann mal weiter! *dräng*

Cherry
14.04.2014, 12:40
Mich würd allerdings interessieren wieso ich auf deinem Screen ein Mädchen bin ;)

Kyuu
14.04.2014, 13:26
Das muss ein Bug sein. :hehe:

Kyuu
06.05.2014, 20:03
Hey Cherry, ein paar Sachen, die mir während der Arbeit an RPGSS auf-/eingefallen sind:



Tippfehler bei Character::lockEquipment. Heißt momentan Character::lockEquipemnt.


Ich finde, das Makro NOT_MAIN_MODULE sollte MAIN_MODULE heißen und genau umgekehrt funktionieren, d.h. in dem Modul, in welches das Zeug rein muss, sollte man auch das Makro definieren, anstatt in allen Modulen, in die es nicht rein soll, NOT_MAIN_MODULE definieren zu müssen. Momentan ist dieses Makro bei mehreren/vielen Modulen nicht nur ein Mehraufwand, sondern es macht auch Probleme, wenn man DynRPG.h aus Headern heraus einfügen will. Viel eleganter wäre es sowieso, wenn das Zeug, das an dem Makro hängt, in einen eigenen Header wandern würde, etwa PluginMain.h.


Ich finde, es sollte dem Plugin-Autor überlassen werden, ob er Case Sensitivity bei Token braucht oder nicht und es gibt durchaus Situationen, in denen man Case Sensitivity brauchen kann. Anstatt jedes Token durch eine ToLower-Funktion zu jagen, ohne die Zustimmung des Plugin-Autors, wäre es eleganter, wenn du, für die, die es benötigen, eine Funktion zur Verfügung stellst, die einen Stringvergleich ohne Case Sensitivity durchführt, etwa:



if (RPG::CaseInsensitiveStringCompare(token, "foo") == 0) {
// do something
}


Ich sehe die automatische Auswertung von Token wie V<ID> als problematisch, weil du ungültige Indizes erlaubst und in dem Fall eine "0" übergibst. Ich finde, wenn ein Skript nicht existierende Indizes referenziert, ist das ein Fehler, der korrigiert werden sollte und nicht heimlich ignoriert. Am Besten wäre es, wenn du die Auswertung der Token dem Plugin-Autor überlässt und eine Hilfsklasse bereitstellst, die Token auswerten kann, etwa wie mein TokenParser (https://github.com/kyuu/dynrpg-rpgss/tree/master/source/rpgss).


Kann es sein, dass die Auswertung des Tokens N<ID> (für Actor Name) nicht funktioniert? Ich glaube, als ich's getestet habe, bekam ich damit immer einen leeren String.


Ich musste auf die harte Tour lernen, dass der Stack nicht 16-Byte aligned ist, wenn der DynLoader den Plugin-Code aufruft. Bei SSE2 Intrinsics werden Stackvariablen mit 16-Byte Alignment verwendet und dummerweise nimmt GCC an, dass der Stack 16-Byte aligned ist -> Segfault sobald auf eine solche Variable zugegriffen wird. Ich konnte das Problem mit dem Compilerflag -mstackrealign umgehen, nur generiert GCC damit für alle Funktionen einen längeren Prolog und Epilog, nicht nur für die, die das Alignment voraussetzen: nicht optimal. Eine andere Lösung wäre es, Funktionen, die ein bestimmtes Alignment voraussetzen mit dem Attribut force_align_arg_pointer zu versehen, aber ich werde das Gefühl nicht los, dass das bereits im DynLoader geschehen sollte und nicht erst im Plugin-Code. Selbst wenn ein Plugin nicht explizit eine Befehlssatzerweiterung wie SSE2 nutzt, moderner Code sollte 16-Byte aligned sein, nicht zuletzt weil heutige Compiler eigenständig SIMD-Optimierungen am Code vornehmen können, die oft 16-Byte Alignment benötigen.


Führt der Maker eine



while (CurrentTime() < time_until_next_frame) {
// NO-OP
}


-Schleife aus? Wenn ja, wäre es möglich daraus



while (CurrentTime() < time_until_next_frame) {
Thread.Sleep(10 /* milliseconds */ );
}


zu machen? Das hat mich schon immer beim Maker gestört, dass da unnötigerweise Rechenzeit belegt wird. Bei Laptops ist das sogar ein großes Problem, weil dadurch der Akku schnell entladen wird.


Pack' endlich getLowerLayerTileId, getUpperLayerTileId und getTerrainId in DynRPG rein, die in deiner BUG2.txt gammeln. :)

Cherry
07.05.2014, 08:20
Tippfehler bei Character::lockEquipment. Heißt momentan Character::lockEquipemnt.
Danke!



Ich finde, das Makro NOT_MAIN_MODULE sollte MAIN_MODULE heißen und genau umgekehrt funktionieren, d.h. in dem Modul, in welches das Zeug rein muss, sollte man auch das Makro definieren, anstatt in allen Modulen, in die es nicht rein soll, NOT_MAIN_MODULE definieren zu müssen. Momentan ist dieses Makro bei mehreren/vielen Modulen nicht nur ein Mehraufwand, sondern es macht auch Probleme, wenn man DynRPG.h aus Headern heraus einfügen will. Viel eleganter wäre es sowieso, wenn das Zeug, das an dem Makro hängt, in einen eigenen Header wandern würde, etwa PluginMain.h.
Notier ich mir, mal schauen.



Ich finde, es sollte dem Plugin-Autor überlassen werden, ob er Case Sensitivity bei Token braucht oder nicht und es gibt durchaus Situationen, in denen man Case Sensitivity brauchen kann. Anstatt jedes Token durch eine ToLower-Funktion zu jagen, ohne die Zustimmung des Plugin-Autors, wäre es eleganter, wenn du, für die, die es benötigen, eine Funktion zur Verfügung stellst, die einen Stringvergleich ohne Case Sensitivity durchführt, etwa:



if (RPG::CaseInsensitiveStringCompare(token, "foo") == 0) {
// do something
}

DynRPG-Plugins sollen einheitlich funktionieren, und wenn der Pluginautor Case Sensitivity braucht, soll er doch einen String verwenden...


Ich sehe die automatische Auswertung von Token wie V<ID> als problematisch, weil du ungültige Indizes erlaubst und in dem Fall eine "0" übergibst. Ich finde, wenn ein Skript nicht existierende Indizes referenziert, ist das ein Fehler, der korrigiert werden sollte und nicht heimlich ignoriert. Am Besten wäre es, wenn du die Auswertung der Token dem Plugin-Autor überlässt und eine Hilfsklasse bereitstellst, die Token auswerten kann, etwa wie mein TokenParser (https://github.com/kyuu/dynrpg-rpgss/tree/master/source/rpgss).
Das ist Userschnittstelle und nicht Entwicklerschnittstelle. Und es soll daher nicht anders funktionieren als \v in Nachrichten, oder Change Variable mit Variablenpointer. Nach oben haben Variablen-IDs ja keine Grenze (die im Maker gesetzte ist ja nur für Variablennamen relevant), "ungültige" IDs, also <=0, ergeben 0. So verhält sich der Maker, so verhält sich also auch DynRPG aus Makerer-Sicht. Und ich überlasse da bewusst nix dem Plugin-Autor, damit ein einheitliches Verhalten entsteht (ich hab eh schon den Fehler gemacht, nicht festzulegen ob Commands Unterstriche verwenden sollen oder SoWasHier). Besonders dass alle Plugins automatisch (und auf gleiche Weise) Vxx, VVxx, Nxx, NVxx, etc. unterstützen, war für mich wesentlich.


Kann es sein, dass die Auswertung des Tokens N<ID> (für Actor Name) nicht funktioniert? Ich glaube, als ich's getestet habe, bekam ich damit immer einen leeren String.
Ich dachte eigentlich, das sei in 0.20 behoben... das Problem war (ist?), afair, dass er nur den aktuellen Heldennamen liest, nicht den aus der DB, und wenn der nie von einem Event geändert wurde, ist der leer. Oder so.


Ich musste auf die harte Tour lernen, dass der Stack nicht 16-Byte aligned ist, wenn der DynLoader den Plugin-Code aufruft. Bei SSE2 Intrinsics werden Stackvariablen mit 16-Byte Alignment verwendet und dummerweise nimmt GCC an, dass der Stack 16-Byte aligned ist -> Segfault sobald auf eine solche Variable zugegriffen wird. Ich konnte das Problem mit dem Compilerflag -mstackrealign umgehen, nur generiert GCC damit für alle Funktionen einen längeren Prolog und Epilog, nicht nur für die, die das Alignment voraussetzen: nicht optimal. Eine andere Lösung wäre es, Funktionen, die ein bestimmtes Alignment voraussetzen mit dem Attribut force_align_arg_pointer zu versehen, aber ich werde das Gefühl nicht los, dass das bereits im DynLoader geschehen sollte und nicht erst im Plugin-Code. Selbst wenn ein Plugin nicht explizit eine Befehlssatzerweiterung wie SSE2 nutzt, moderner Code sollte 16-Byte aligned sein, nicht zuletzt weil heutige Compiler eigenständig SIMD-Optimierungen am Code vornehmen können, die oft 16-Byte Alignment benötigen.
Wenn ich mal Zeit habe, bau ich das ein, ich müsste einfach nur so viele dwords pushen bis test esp, 0f zero ist, wenn ich das richtig verstehe (und natürlich nacher esp wiederherstellen).



Führt der Maker eine



while (CurrentTime() < time_until_next_frame) {
// NO-OP
}


-Schleife aus? Wenn ja, wäre es möglich daraus



while (CurrentTime() < time_until_next_frame) {
Thread.Sleep(10 /* milliseconds */ );
}


zu machen? Das hat mich schon immer beim Maker gestört, dass da unnötigerweise Rechenzeit belegt wird. Bei Laptops ist das sogar ein großes Problem, weil dadurch der Akku schnell entladen wird.
Der Maker macht da sleep(1).


Pack' endlich getLowerLayerTileId, getUpperLayerTileId und getTerrainId in DynRPG rein, die in deiner BUG2.txt gammeln. :)
...Ja...

Kyuu
07.05.2014, 16:17
Vergessen gestern zu erwähnen:



Map::moveCamera: Positive Offsets bewegen die Kamera nach links-oben, negative nach rechts-unten. Erwartet hätte ich genau das umgekehrte Verhalten, also positive Offsets bewegen die Kamera nach rechts-unten und negative nach links-oben. Habe ich die Dokumentation falsch verstanden, oder doch Bug? (Übrigens, mir ist aufgefallen, dass mit der Bewegung (auf beiden Achsen unabhängig) so lange gewartet wird, bis die Bewegung möglich ist. Das ist zwar logisch, wenn man es überdenkt, aber zumindest für mich war das überraschend, da in der Dokumentation zu Map::moveCamera nichts davon steht.)


DynRPG muss Plugins auch aus Unterordnern laden können: Im Moment müssen alle Bibliotheken, gegen die Plugins gelinkt sind, direkt in den Spielordner. Das hat zur Folge, dass jeweils nur eine Version einer Bibliothek existieren kann. Angenommen zwei Plugins sind dynamisch gegen dieselbe Bibliothek gelinkt, nur jeweils eine andere Version, mit gravierenden Änderungen in der neueren Version -> nur eins der Plugins kann geladen werden. Mit Unterordnern ließe sich sowas umgehen, wobei du vor dem Laden eines Plugins die Current Working Directory entsprechend ändern musst (und danach wiederherstellen), damit die Windowsroutine die Dependencies finden kann. Ich stelle es mir so vor:



foreach (String subdir in GetDirectoryList("DynPlugins")) {
String gamedir = GetCurrentWorkingDirectory();
SetCurrentWorkingDirectory(gamedir + "/DynPlugins/" + subdir);
LoadPlugin(subdir + ".dll"); // plugin DLL is in a sub-directory with the same name
SetCurrentWorkingDirectory(gamedir);
}




________________________________________________________________________________________




DynRPG-Plugins sollen einheitlich funktionieren, und wenn der Pluginautor Case Sensitivity braucht, soll er doch einen String verwenden...


Ich sehe gerade nicht, warum Plugins nicht einheitlich funktionieren würden, wenn man es dem Plugin-Autor überlässt, ob er Case Sensitivity bei Token braucht, oder nicht. Es geht mir hier nur um Token und nach meiner Auffassung sind Token äußerst pluginspezifisch, heißt: Plugin-Autor weiß besser was er mit den ihm übergebenen Token anfangen will (soll nicht heißen, dass es keine einheitlichen Standardtoken geben darf). Ich finde das Konzept der Token übrigens ziemlich genial, nur nimmst du mit der aufgezwungenen Case Insensitivity dem Ganzen unbegründeterweise etwas den Wind aus den Segeln. Wie gesagt, ich fände es besser, wenn du das Parsen der Token dem Plugin-Autor überlassen würdest und einfach entsprechendes Werkzeug zur Verfügung stellst, womit er deine Standardtoken (Vxx, Nxx) parsen kann und Case Insensitive Vergleiche machen kann -> du bist glücklich, weil Plugins einheitlich funktionierende Standardtoken verwenden und Plugin-Autoren sind glücklich, weil sie Folgendes machen können:



@do_something I1, i1


Wenn du Zeit sparen willst, kannst du auch gerne meinen TokenParser verwenden. Dieser kann bereits mehr als nur deine Standardtoken, ist schnell, zuverlässig und lässt sich leicht erweitern/ändern.



Das ist Userschnittstelle und nicht Entwicklerschnittstelle. Und es soll daher nicht anders funktionieren als \v in Nachrichten, oder Change Variable mit Variablenpointer. Nach oben haben Variablen-IDs ja keine Grenze (die im Maker gesetzte ist ja nur für Variablennamen relevant), "ungültige" IDs, also <=0, ergeben 0. So verhält sich der Maker, so verhält sich also auch DynRPG aus Makerer-Sicht. Und ich überlasse da bewusst nix dem Plugin-Autor, damit ein einheitliches Verhalten entsteht (ich hab eh schon den Fehler gemacht, nicht festzulegen ob Commands Unterstriche verwenden sollen oder SoWasHier). Besonders dass alle Plugins automatisch (und auf gleiche Weise) Vxx, VVxx, Nxx, NVxx, etc. unterstützen, war für mich wesentlich.


Du hast also absichtlich den Makerbug in DynRPG nachempfunden, wegen... der User Experience? Du bist doch sonst nicht zimperlich bei Makerbugs. :/ Ich finde übrigens überhaupt nicht, dass DynRPG hier den Maker nachäffen muss, mit seinen dämlichen Eigenarten. Wenn der Maker in seiner degenerierten Klicksprache ungültige Indizes heimlich ignoriert ist das seine Sache, DynRPG sollte da konsequent sein und Fehlermeldungen raushauen, denn das führt sonst zu subtilen Plugin-Bugs, die schwer zu debuggen sind. Ich finde übrigens, dass Indizes, die über die Arraylänge hinausgehen genauso als ungültig zu betrachten sind, wie Indizes <= 0. Der Maker vergrößert da heimlich die Arrays, macht DynRPG das auch? Das sollte IMO auf keinen Fall passieren, zumindest nicht in DynRPG, weil... unvorgesehene Speicherallokation schlecht ist. Im Maker kann man höchstens ein Array auf die Länge 9999999 (entspricht beim Variablenarray etwa 38 MB) vergrößern, in DynRPG geht da vieeeel mehr. In RPGSS habe ich genau aus diesem Grund ein "sane array limit" von 999999, um die Makerarrays nicht ungewollt in die Höhe schnellen zu lassen. (Ich merke übrigens gerade, dass ich noch gar nicht dokumentiert habe, dass man die Makerarrays in RPGSS vergrößern/verkleinern kann...)

Edit: Ich würde das mit den Naming Conventions nicht so eng sehen, wenn ich an deiner Stelle wäre. Es handelt sich bei den Plugins schließlich fast schon um eigenständige Programme und nicht um ein ganzes. Bei einem Team, das an einer Software mit einem gemeinsamen Qualltext arbeitet, sollte man versuchen Einheitlichkeit mit Naming/Coding Conventions durchzusetzen, aber bei eigenständigen Programmen mit unabhängigen Quelltexten sehe ich keine besondere Notwendigkeit dafür. Dass die Commands mal camelCase, mal PascalCase und mal snake_case sind, ist in meinen Augen OK, und in der C/C++-Welt gang und gäbe. Wichtig ist nur, dass die jeweilige Convention konsequent innerhalb des Plugins angewandt wird, also dass nicht ein paar Commands snake_case und ein paar PascalCase sind, oder so. Und noch wichtiger ist, dass die Plugins stabil und schnell laufen.



Ich dachte eigentlich, das sei in 0.20 behoben... das Problem war (ist?), afair, dass er nur den aktuellen Heldennamen liest, nicht den aus der DB, und wenn der nie von einem Event geändert wurde, ist der leer. Oder so.


(Hab's gerade nochmal getestet und zumindest bei meiner Dyn 0.20 wird immer ein leerer String zurückgegeben.) Also, d.h. du verwendest das Actor::name-Feld? In meinem TokenParser verwende ich die Battler::getName-Methode, was sehr gut zu funktionieren scheint.



Wenn ich mal Zeit habe, bau ich das ein, ich müsste einfach nur so viele dwords pushen bis test esp, 0f zero ist, wenn ich das richtig verstehe (und natürlich nacher esp wiederherstellen).


Ich denke das würde funktionieren, solange man davon ausgehen kann, dass der Stack nicht niedriger aligned ist als 4 Byte, aber ich glaube diese Annahme kann man heute ruhig machen.



Der Maker macht da sleep(1).


Eigenartig, warum belegt dann die RPG_RT immer den kompletten CPU-Kern? Kannst du mir den Speicheroffset nennen, wo sleep(1) aufgerufen wird?

Cherry
08.05.2014, 13:28
Map::moveCamera: Positive Offsets bewegen die Kamera nach links-oben, negative nach rechts-unten. Erwartet hätte ich genau das umgekehrte Verhalten, also positive Offsets bewegen die Kamera nach rechts-unten und negative nach links-oben. Habe ich die Dokumentation falsch verstanden, oder doch Bug? (Übrigens, mir ist aufgefallen, dass mit der Bewegung (auf beiden Achsen unabhängig) so lange gewartet wird, bis die Bewegung möglich ist. Das ist zwar logisch, wenn man es überdenkt, aber zumindest für mich war das überraschend, da in der Dokumentation zu Map::moveCamera nichts davon steht.)
Ich rufe da direkt eine Makerfunktion auf (bzw. ändere ein paar Werte die den Maker zur Bewegung veranlassen, so wie es auch der entsprechende Eventbefehl tut), das Verhalten mit dem Warten war mir jetzt auch nicht bewusst. Die Offsets ergeben für mich eigentlich so Sinn: Die "Kamerakoordinaten" sind die Koordinaten die der oberste linke Pixel des Screens in Bezug auf den obersten linken Pixel der Map hat.



DynRPG muss Plugins auch aus Unterordnern laden können: Im Moment müssen alle Bibliotheken, gegen die Plugins gelinkt sind, direkt in den Spielordner. Das hat zur Folge, dass jeweils nur eine Version einer Bibliothek existieren kann. Angenommen zwei Plugins sind dynamisch gegen dieselbe Bibliothek gelinkt, nur jeweils eine andere Version, mit gravierenden Änderungen in der neueren Version -> nur eins der Plugins kann geladen werden. Mit Unterordnern ließe sich sowas umgehen, wobei du vor dem Laden eines Plugins die Current Working Directory entsprechend ändern musst (und danach wiederherstellen), damit die Windowsroutine die Dependencies finden kann. Ich stelle es mir so vor:



foreach (String subdir in GetDirectoryList("DynPlugins")) {
String gamedir = GetCurrentWorkingDirectory();
SetCurrentWorkingDirectory(gamedir + "/DynPlugins/" + subdir);
LoadPlugin(subdir + ".dll"); // plugin DLL is in a sub-directory with the same name
SetCurrentWorkingDirectory(gamedir);
}

Das Problem ist nur, dass im Moment festgelegt ist, dass das Workingdirectory immer das Projektverzeichnis ist. Ich notier mir mal das Problem, vermutlich kann man den DLL-Loadpfad ändern bevor man ein Plugin lädt.


Ich sehe gerade nicht, warum Plugins nicht einheitlich funktionieren würden, wenn man es dem Plugin-Autor überlässt, ob er Case Sensitivity bei Token braucht, oder nicht. Es geht mir hier nur um Token und nach meiner Auffassung sind Token äußerst pluginspezifisch, heißt: Plugin-Autor weiß besser was er mit den ihm übergebenen Token anfangen will (soll nicht heißen, dass es keine einheitlichen Standardtoken geben darf). Ich finde das Konzept der Token übrigens ziemlich genial, nur nimmst du mit der aufgezwungenen Case Insensitivity dem Ganzen unbegründeterweise etwas den Wind aus den Segeln. Wie gesagt, ich fände es besser, wenn du das Parsen der Token dem Plugin-Autor überlassen würdest und einfach entsprechendes Werkzeug zur Verfügung stellst, womit er deine Standardtoken (Vxx, Nxx) parsen kann und Case Insensitive Vergleiche machen kann -> du bist glücklich, weil Plugins einheitlich funktionierende Standardtoken verwenden und Plugin-Autoren sind glücklich, weil sie Folgendes machen können:



@do_something I1, i1


Wenn du Zeit sparen willst, kannst du auch gerne meinen TokenParser verwenden. Dieser kann bereits mehr als nur deine Standardtoken, ist schnell, zuverlässig und lässt sich leicht erweitern/ändern.

Es wird alles deswegen vorgeparst damit nicht jedes Plugin hergeht und irgendwie (vielleicht dann noch unoptimiert) den String parst und alles unglaublich verzögert wird.



Du hast also absichtlich den Makerbug in DynRPG nachempfunden, wegen... der User Experience? Du bist doch sonst nicht zimperlich bei Makerbugs. :/ Ich finde übrigens überhaupt nicht, dass DynRPG hier den Maker nachäffen muss, mit seinen dämlichen Eigenarten. Wenn der Maker in seiner degenerierten Klicksprache ungültige Indizes heimlich ignoriert ist das seine Sache, DynRPG sollte da konsequent sein und Fehlermeldungen raushauen, denn das führt sonst zu subtilen Plugin-Bugs, die schwer zu debuggen sind. Ich finde übrigens, dass Indizes, die über die Arraylänge hinausgehen genauso als ungültig zu betrachten sind, wie Indizes <= 0. Der Maker vergrößert da heimlich die Arrays, macht DynRPG das auch? Das sollte IMO auf keinen Fall passieren, zumindest nicht in DynRPG, weil... unvorgesehene Speicherallokation schlecht ist. Im Maker kann man höchstens ein Array auf die Länge 9999999 (entspricht beim Variablenarray etwa 38 MB) vergrößern, in DynRPG geht da vieeeel mehr. In RPGSS habe ich genau aus diesem Grund ein "sane array limit" von 999999, um die Makerarrays nicht ungewollt in die Höhe schnellen zu lassen. (Ich merke übrigens gerade, dass ich noch gar nicht dokumentiert habe, dass man die Makerarrays in RPGSS vergrößern/verkleinern kann...)
Ich sehe das nicht als Bug sondern als expected behavior, und wie gesagt: Plugins sollen sich möglichst einfach in den Rest der Maker-"Experience" einfügen, und das heißt auch dass man sagen kann "Vxx funktioniert wie \v[xx] in Messages" und der User kennt sich aus.

[QUOTE=Kyuu;3170703]Edit: Ich würde das mit den Naming Conventions nicht so eng sehen, wenn ich an deiner Stelle wäre. Es handelt sich bei den Plugins schließlich fast schon um eigenständige Programme und nicht um ein ganzes. Bei einem Team, das an einer Software mit einem gemeinsamen Qualltext arbeitet, sollte man versuchen Einheitlichkeit mit Naming/Coding Conventions durchzusetzen, aber bei eigenständigen Programmen mit unabhängigen Quelltexten sehe ich keine besondere Notwendigkeit dafür. Dass die Commands mal camelCase, mal PascalCase und mal snake_case sind, ist in meinen Augen OK, und in der C/C++-Welt gang und gäbe. Wichtig ist nur, dass die jeweilige Convention konsequent innerhalb des Plugins angewandt wird, also dass nicht ein paar Commands snake_case und ein paar PascalCase sind, oder so. Und noch wichtiger ist, dass die Plugins stabil und schnell laufen.
Makerer sind aber im Allgemeinen nicht aus der C++-Welt.


(Hab's gerade nochmal getestet und zumindest bei meiner Dyn 0.20 wird immer ein leerer String zurückgegeben.) Also, d.h. du verwendest das Actor::name-Feld? In meinem TokenParser verwende ich die Battler::getName-Methode, was sehr gut zu funktionieren scheint.
Hm, sollte eigentlich auch getName aufrufen, aber vielleicht mach ich was falsch, ich schau mal.

Function GetHeroName(id As Integer) As String
Dim s As ZString Ptr
Asm
mov eax, [&h4cddc8]
mov eax, [eax]
mov edx, [id]
call [GetFromList]
test eax, eax
jz Cont
mov ecx, [eax]
lea edx, [s]
call [ecx+24]
Cont:
End Asm

If s = 0 Then Return ""

Function = *s

Asm
lea eax, [s]
call [LStrClr]
End Asm
End Function


Eigenartig, warum belegt dann die RPG_RT immer den kompletten CPU-Kern? Kannst du mir den Speicheroffset nennen, wo sleep(1) aufgerufen wird?
46BD4B

Corti
09.05.2014, 10:45
Ich stelle fest, dass ich Daten brauche, die ich nicht finde und nur Daten finde, die ich nicht brauche und Daten habe von denen ich nicht weiß woher ich sie habe.


DynRPG SDK 0.14 -> DynRPG Website
DynRPG Patch 0.14 -> DynRPG Website
DynRPG Patch 0.17 -> Hab ich irgendwo her
DynRPG Patch 0.17 Verbesserter DynLoader -> Hab ich irgendwo her
DynRPG Patch 0.20 -> Keine Ahnung wo man das bekommt
DynRPG Patch 0.20 Verbesserter DynLoader -> Keine Ahnug wo man den bekommt
DynRPG SDK neue Versionen -> Keine Ahnung ob es das gibt und wo


Wollen wir das mal zusammen tragen?

Cherry
09.05.2014, 17:01
Chaos, wie alles hier. Ich weiß. Ich baue gerade an einer neuen Webseite und werde da alles mal archivieren und ordentlich katalogisieren.

Quetschi
10.05.2014, 09:41
Ist es mit DynRPG möglich auch auf Event-Befehle wie "Recall to memorized Position" zuzugreifen? Hab da nichts gefunden.

Cherry
10.05.2014, 10:15
Nicht direkt, aber du kannst natürlich händisch teleportieren mit.......waaaait, gerade festgestellt dass das noch gar nicht eingebaut ist O_o

Geht aber händisch so:




void teleport(int mapId, int x, int y) {
int *mapParamPtr = RPG::sceneObjects[RPG::SCENE_MAP];
mapParamPtr[4] = mapId;
mapParamPtr[5] = x;
mapParamPtr[6] = y;
((char *)mapParamPtr)[13] = 1;
}


"Aus dem Kopf", nicht getestet.

Quetschi
10.05.2014, 14:03
Hey,

erst mal danke für die Antwort.



int *mapParamPtr = RPG::sceneObjects[RPG::SCENE_MAP];


Da kam die Fehlermeldung "cannot convert 'void***' to 'int*' in initialization"
Also mal schnell abgeändert zu:



int* mapParamPtr = (int*) RPG::sceneObjects[RPG::SCENE_MAP];


Und es kompiliert und funktioniert... dachte ich zumindest.

Jetzt kriege ich allerdings folgende Fehlermeldung sobald der Teleport kommen soll.
http://puu.sh/8Gzfg.png

Kyuu
10.05.2014, 15:25
Da kam die Fehlermeldung "cannot convert 'void***' to 'int*' in initialization"


Da sind drei level of indirection, d.h. du musst zwei mal dereferenzieren um ein int* zu bekommen. Probier mal das:



int* mapParamPtr = **((int***)RPG::sceneObjects[RPG::SCENE_MAP]);

Quetschi
10.05.2014, 15:40
Dankeschön, funktioniert soweit wunderbar. c:

Cherry
10.05.2014, 16:02
oh hoppla, da fehlten wohl zwei Sternchen, sorry

Quetschi
11.05.2014, 14:20
Gibt es eine Möglichkeit an den Namen den man einer Map im Maker gibt zu kommen?
Hab auch da nichts gefunden x:

Kyuu
15.06.2014, 21:25
@Cherry:

Das Problem in Dyn 0.20 mit RPG::Image::drawText, von dem immer wieder berichtet wird (z.B. hier (http://www.multimediaxis.de/threads/134256-DynRPG-Das-RM2k3-Plugin-SDK?p=3137880&viewfull=1#post3137880)) scheint mit der libDynRPG.a zusammenzuhängen, die mit Dyn 0.20 ausgeliefert wird (siehe hier (http://rpgmaker.net/forums/topics/10254/?post=548854#post548854)). Ich kann nur vermuten, dass da was beim Übersetzen/Linken schiefgelaufen ist (vorausgesetzt, der Quellcode, den ich von dir habe, ist der selbe, den du auch für die ausgelieferte libDynRPG.a verwendet hast), denn bei meiner libDynRPG.a funktioniert RPG::Image::drawText wie es soll.

Morden
16.06.2014, 07:24
@Cherry:

Das Problem in Dyn 0.20 mit RPG::Image::drawText, von dem immer wieder berichtet wird (z.B. hier (http://www.multimediaxis.de/threads/134256-DynRPG-Das-RM2k3-Plugin-SDK?p=3137880&viewfull=1#post3137880)) scheint mit der libDynRPG.a zusammenzuhängen, die mit Dyn 0.20 ausgeliefert wird (siehe hier (http://rpgmaker.net/forums/topics/10254/?post=548854#post548854)). Ich kann nur vermuten, dass da was beim Übersetzen/Linken schiefgelaufen ist (vorausgesetzt, der Quellcode, den ich von dir habe, ist der selbe, den du auch für die ausgelieferte libDynRPG.a verwendet hast), denn bei meiner libDynRPG.a funktioniert RPG::Image::drawText wie es soll.

Kompiliert man RPG::Image::drawText() mit DynRPG 0.14a, dann funktioniert es. Sowohl mit dem alten, als auch mit dem neuen (0.20) Loader. Kompiliert man mit 0.20, dann funktioniert es nicht.

Dadurch musste ich alle PlugIns, die bei mir RPG::Image::drawText() benutzen, mit nem alten Compiler (GCC 4.6.1) und DynRPG 0.14a kompilieren. Eine Möglichkeit, alle PlugIns unter einer Compiler-Version zu haben, hätte schon was X'D

PeAcE
MorDen

Kyuu
16.06.2014, 14:01
Hätte mich auch gewundert, wenn es in 0.14a nicht funktionieren würde. ;) Wie gesagt, Image::drawText funktioniert mit meiner libDynRPG.a (0.20) einwandfrei!

Stray
26.07.2014, 02:20
Obwohl ich diesen Thread erst so spät wahrnehme und somit auch das DynRPG aber... jetzt nachdem ich die ersten Plugins gesehen und einige davon ausprobiert habe muss ich dich endlich fragen: Cherry, willst du mich heiraten?

Stray
29.07.2014, 16:51
Ich bräuchte mal Hilfe mit dem Maus und Keyboard Plugin.
So sieht meine Ini-Datei gerade aus:
Key57Switch=062
Key53Switch=063
Key41Switch=064
Key44Switch=065


[keyboard_mouse_input]


MouseXVar=001
MouseYVar=002
Die Maus und ihre Tasten reagieren wunderbar.
Nur die Tasten (hier von oben nach unten: W, A, S, D) wollen nicht funktionieren. Das einzige was ich rausfinden konnte ist, dass der Switch wieder auf off gesetzt wird, wenn er von etwas anderem eingeschaltet wird (habe ich testhalber mit F9 ausprobiert).
Ich habe die Tastenzuweisungen auch als Kommentare in einem dauernd ablaufenden Parallelen Prozess eingefügt:
@CheckKey 57, 062
@CheckKey 53, 063
@CheckKey 41, 064
@CheckKey 44, 065


Ist es eigentlich egal, ob man die Tasten in der Initialisierungsdatei oder als Kommentare abspeichert?

Wie G-Brothers bereits gesagt hat passiert das mit den Sounds auch bei mir. Aber auch nur sehr sehr selten.
Und! Ich kann nur wiederholen, dass DynRPG neue, revolutionäre Standards setzt. Ich freu mich zur Zeit darüber wie ein kleines Kind am Weihnachtsbaum. :D

goldenroy
02.08.2014, 23:15
Müssen die vier Einträge nicht unter das [keyboard_mouse_input]?

Stray
14.08.2014, 12:53
Müssen die vier Einträge nicht unter das [keyboard_mouse_input]?

Nein, auch dann funktioniert es bei mir nicht. Ich finde das seltsam, bei Euch allen funktionieren die Tasten doch reibungslos, oder? Sonst wäre das Problem ja bekannt.

Corti
13.03.2015, 13:17
Fehler in 0.17:


bool onCheckEventVisibility ( RPG::Character * character)
{
if(character->id == 1)
{
return false;
}

return true;
}

bool onDrawEvent ( RPG::Character * character, bool isHero )
{

if(character->id == 1)
{
fx::ShowRain();
}

return true;
}
Sollte bezwecken, dass Event 1 immer gezeichnet wird, auch wenn es nicht im Sichtbereich ist. Das funtioniert nur in der X-Achse. Sobald das Event in Y aus dem Bild wandert, wird onDrawEvent nicht mehr gerufen.

Was mögliche Fixes angeht, ich benutze noch 0.17 weil 0.20 bei mir damals irgendwas kaputt gemacht hat.

Edit: Die DrawEvent-Callbacks werden jeweils mehrfach aufgerufen. Wtf?

MintJam
14.03.2015, 18:52
Hi,
ich arbeite mich grad an dem DynRPG ein (bin eher ein mittelmäßiger Programmierer).
Einfach mal Frage: kann man mit den DynRPG ein eigenes Battle System bauen?

Beste Grüße

Corti
14.03.2015, 19:15
Das ist eine phänomenale Frage~ ja und nein.

Es ist eine vollewertige Programmiersprache dahinter, du kannst Eingaben abfragen, Grafiken anzeigen und Sound abspielen. In Theorie und Praxis kannst du mit DynRPG auch ein Echtzeitstrategiespiel einbauen. DynRPG ist noch nicht sooo gut darin umfassend auf die Datenbanken des Makers zuzugreifen, so praktisch wie in Ruby mit den neuen Makern ist es also nicht.

Was meinst du denn genau mit "eigenes Battle System"?

MintJam
15.03.2015, 09:33
Was meinst du denn genau mit "eigenes Battle System"?

Beispiel ich will den Battle-Commands-Fenster durch einen "Ring-System" ersetzen.

bugmenot
15.03.2015, 11:21
DynRPG ist noch nicht sooo gut darin umfassend auf die Datenbanken des Makers zuzugreifen
Ähm... wie ein content update aus heiterem Himmel(?)
rechts auf [Download ZIP] klicken (https://github.com/PepsiOtaku/DynRPG)
Doku (http://rewtone.com/dynrpg/)

... es fehlen halt eine ganze Menge callbacks um Herumgefummel mit verschiedenen Sequenzen zu ersparen (für das Verarbeiten von Code zum passenden Zeitpunkt).
Wie viel bei "Herumfummeln mit der richtigen Sequenzierung" verbleiben soll kann ich nicht sagen. Ich kann neue Sachen testen, will aber nicht zu viel zumüllen.

Corti
15.03.2015, 13:46
Muss ich wohl mal testen.

Bugmenot, ist dir der SkillWindowDuration-Fix bekannt?

Im ersten DynRPG hatte die Cherry die Anzeigedauer dieses "Monster nutzt X skill" -Fensters erhöht. Das hat nahezu jede Form eines intelligenten Kampfsystems ruiniert, weil die Eventverarbeitung dadurch korrumpiert wurde. Es gab dafür einen Fix. also für 0.17. In 0.20 funktioniert der nicht mehr, weil es dort eine "bessere" Version gab, wenn ich mich recht entsinne. Besser war aber immer noch Mist, weshalb ich meine Plugins allesamt für 0.17 mache und 0.20 ignoriere.

Hier ist das Ding:
http://share.cherrytree.at/showfile-12977/dynrpg_normal_skill_window_duration.ips

Magst mal schauen, was das tut?

bugmenot
15.03.2015, 15:25
normal SkillWindowDuration-Fix
In Dyn0.14 wurden die Delays nach dem Einsatz von Items und den Monsteraktionen DoubleAttack / Defend / Observe / Charge / SelfDestruct / Escape von 40 Frames auf 90 Frames erhöt.
Der normal_skill_window_duration fix überschreibt das wieder mit 40.
Dyn0.20 nutzt wieder 40 Frames, nimmt diese Zahl aber aus einem call to function her << hier macht der normal_skill_window_duration fix alles kaputt, weil er in die Sprungweite der call-Anweisung schreibt >> dann wird eine falsche Adresse aufgerufen und die Applikation stürzt ab.

In Dyn0.14 wurde der Delay nach Skills von 30 auf 90 Frames erhöt. SkillWindowDuration macht 30 Frames daraus, Dyn0.20 macht 50 Frames daraus.

Dies hier sollte in Dyn0.20 wieder 30 Frames (nach einer Skillaktion) daraus machen:

[QuickPatches]
DefaultDelay(SkillAction)=49B9F8,1E,49B9FD,14

Dass das Abziehen der MP-Kosten und die Verarbeitung des Skills durch das bisschen mehr Wartezeit an anderer Stelle etwas kaputt macht, ist bedauerlich.

Alternativ kannst du ja das Schließen des Fensters mit dem SkillNamen über


( *reinterpret_cast<char *> (0x49BA08)) = 0xEB;
( *reinterpret_cast<char *> (0x49BA09)) = 0x06;

ausknipsen und an anderer Stelle mit einem eigenen Fix selber durchführen über:


int eax = ( *reinterpret_cast<int ***> (0x4CDD38) )[0][16]; //window pointer = ActionMessageWindow
asm volatile("call *%%esi"
:
: "S" (0x4C66E4), "a" (eax)
: "cc", "memory");
//terminate Window (specified by window pointer)

Sölf
15.03.2015, 16:13
Wo ich das gerade mit den MP lese, im 2k3 KS wird ja keine MP Heilung/Schaden angezeigt. Könnte man das auch anzeigen lassen? Vielleicht in einer andersfarbigen Zahl als Grün (HP Heilung) bzw. dem standard Blau (Hp Schaden) - oder was auch immer für eine Farbe aus der Textbox genommen wird.

bugmenot
15.03.2015, 16:53
http://rpgmaker.net/engines/rm2k3/utilities/35/

Sölf
15.03.2015, 16:58
Ah, danke!

Corti
16.03.2015, 07:34
[QuickPatches]
DefaultDelay(SkillAction)=49B9F8,1E,49B9FD,14


hex 1E = 30
hex 14 = 20

Ich sehe wo die Framezahl sitzt, was ist der andere Wert?

bugmenot
20.03.2015, 13:45
Ich sehe wo die Framezahl sitzt, was ist der andere Wert?
Framezahl (wenn man eine Taste gedrückt hält, welche als "Enter" belegt wurde).



Attribute/Condition Resistance Control
download ResistControlBug-in (http://share.cherrytree.at/showfile-19755/resistcontrolbug_in.rar)


Erlaubt das Kontrollieren von Attribut- und Conditionresistenzen von Helden und Gegnern.


>> SET ATTRIBUTE RESIST

Nutzt einen Comment mit dem Inhalt:

@set_arc_hero [1], [2], [3]

[1] = Hero_ID (aus dem Reiter actor/hero in der F8-Database)
[2] = Attribute_ID
[3] = neuer Schadensfaktor (in Prozent) (min = -10000% | max = +10000%)

Ersetze [x] mit Zahlen oder einer Var_ID mit einem vorangestellten "V"
Bsp.
"@set_arc_hero V32, 5, -70"

ändert (vom Helden aus Var[0032]) den Schadensfaktor von Attribut 5 auf -70%

>> GET ATTRIBUTE RESIST
@get_arc_hero [1], [2], [3]

[1] = Hero_ID
[2] = Attribute_ID
[3] = Var_ID welche den momentanen Schadensfaktor ausgibt (in Prozent)

>> GET DEFAULT ATTRIBUTE RESIST
@get_adefault_hero [1], [2], [3]

[1] = Hero_ID
[2] = Attribute_ID
[3] = Var_ID welche den Standard-Schadensfaktor ausgibt (in Prozent; einschließlich JobClass und Attributeresistenz durch Ausrüstung)





>> SET CONDITION RESIST
@set_crc_hero [1], [2], [3]

[1] = Hero_ID (aus dem Reiter actor/hero in der F8-Database)
[2] = Condition_ID
[3] = neue Anfälligkeit (in Prozent) (min = -10000% | max = +10000%)

>> GET CONDITION RESIST
@get_crc_hero [1], [2], [3]

[1] = Hero_ID
[2] = Condition_ID
[3] = Var_ID welche die momentane Anfälligkeit ausgibt (in Prozent)

>> GET DEFAULT CONDITION RESIST
@get_cdefault_hero [1], [2], [3]

[1] = Hero_ID
[2] = Condition_ID
[3] = Var_ID welche die Standard-Anfälligkeit ausgibt (in Prozent; einschließlich JobClass und Conditionresistenz durch Ausrüstung)







>> SET ATTRIBUTE RESIST (monster)
@set_arc_monster [1], [2], [3]

[1] = Enemy_Party_ID (#1 .. #8 anhand der Nummer innerhalb der MonsterGoup)
[2] = Attribute_ID
[3] = neuer Schadensfaktor (in Prozent) (min = -10000% | max = +10000%)

>> GET ATTRIBUTE RESIST (monster)
@get_arc_monster [1], [2], [3]

[1] = Enemy_Party_ID
[2] = Attribute_ID
[3] = Var_ID welche den momentanen Schadensfaktor ausgibt (in Prozent)

>> GET DEFAULT ATTRIBUTE RESIST (monster)
@get_adefault_monster [1], [2], [3]

[1] = Hero_ID
[2] = Attribute_ID
[3] = Var_ID welche den Standard-Schadensfaktor ausgibt (in Prozent)





>> SET CONDITION RESIST (monster)
@set_crc_monster [1], [2], [3]

[1] = Enemy_Party_ID (#1 .. #8 anhand der Nummer innerhalb der MonsterGoup)
[2] = Condition_ID
[3] = neue Anfälligkeit (in Prozent) (min = -10000% | max = +10000%)

>> GET CONDITION RESIST (monster)
@get_crc_monster [1], [2], [3]

[1] = Enemy_Party_ID
[2] = Condition_ID
[3] = Var_ID welche die momentane Anfälligkeit ausgibt (in Prozent)


>> GET DEFAULT CONDITION RESIST (monster)
@get_cdefault_monster [1], [2], [3]

[1] = Enemy_Party_ID
[2] = Condition_ID
[3] = Var_ID welche den Standard-Schadensfaktor ausgibt (in Prozent)



Allows to control attribute and condition resistances of heroes and enemies.


>> SET ATTRIBUTE RESIST

Use a comment with the contents:

@set_arc_hero [1], [2], [3]

[1] = Hero_ID (from actor/hero tab in F8-database)
[2] = Attribute_ID
[3] = new damage multiplier (in percent) (min = -10000% | max = +10000%)

Substitute [x] with numbers or a Var_ID with a "V" in front
e.g.
"@set_arc_hero V32, 5, -70"

will have the hero from Var[0032] change his/her damage multiplier of Attribute 5 into -70%

>> GET ATTRIBUTE RESIST
@get_arc_hero [1], [2], [3]

[1] = Hero_ID
[2] = Attribute_ID
[3] = Var_ID to store current damage multiplier (in percent)

>> GET DEFAULT ATTRIBUTE RESIST
@get_adefault_hero [1], [2], [3]

[1] = Hero_ID
[2] = Attribute_ID
[3] = Var_ID to store default damage multiplier (in percent; includes JobClass and AttributeResistance from equipment)





>> SET CONDITION RESIST
@set_crc_hero [1], [2], [3]

[1] = Hero_ID (from actor/hero tab in F8-database)
[2] = Condition_ID
[3] = new susceptibility (in percent) (min = -10000% | max = +10000%)

>> GET CONDITION RESIST
@get_crc_hero [1], [2], [3]

[1] = Hero_ID
[2] = Condition_ID
[3] = Var_ID to store current susceptibility (in percent)

>> GET DEFAULT CONDITION RESIST
@get_cdefault_hero [1], [2], [3]

[1] = Hero_ID
[2] = Condition_ID
[3] = Var_ID to store default susceptibility (in percent; includes JobClass and ConditionResistance from equipment)







>> SET ATTRIBUTE RESIST (monster)
@set_arc_monster [1], [2], [3]

[1] = Enemy_Party_ID (#1 .. #8 by number in MonsterGoup)
[2] = Attribute_ID
[3] = new damage multiplier (in percent) (min = -10000% | max = +10000%)

>> GET ATTRIBUTE RESIST (monster)
@get_arc_monster [1], [2], [3]

[1] = Enemy_Party_ID
[2] = Attribute_ID
[3] = Var_ID to store current damage multiplier (in percent)

>> GET DEFAULT ATTRIBUTE RESIST (monster)
@get_adefault_monster [1], [2], [3]

[1] = Hero_ID
[2] = Attribute_ID
[3] = Var_ID to store default damage multiplier (in percent)





>> SET CONDITION RESIST (monster)
@set_crc_monster [1], [2], [3]

[1] = Enemy_Party_ID (#1 .. #8 by number in MonsterGoup)
[2] = Condition_ID
[3] = new susceptibility (in percent) (min = -10000% | max = +10000%)

>> GET CONDITION RESIST (monster)
@get_crc_monster [1], [2], [3]

[1] = Enemy_Party_ID
[2] = Condition_ID
[3] = Var_ID to store current susceptibility (in percent)


>> GET DEFAULT CONDITION RESIST (monster)
@get_cdefault_monster [1], [2], [3]

[1] = Enemy_Party_ID
[2] = Condition_ID
[3] = Var_ID to store default susceptibility (in percent)





Und nochmal alle pseudo-Callbacks bisher:
download ExtBug-in.cpp (http://share.cherrytree.at/showfile-19751/extbug_in.cpp)
int onGetLevelEXP ( int HeroId, int Level )
int onGetAttributeResist ( int AttributeId, int DefaultABCDE, int TargetPartyId, bool TargetIsMonster )
int onGetConditionResist ( int ConditionId, int DefaultABCDE, int TargetPartyId, bool TargetIsMonster )

Corti
20.03.2015, 13:51
Das Attribute/Condition Resistance Control-Ding, kann das irgend etwas, dass man mit DynRPG v0.30 noch nicht machen kann?

bugmenot
20.03.2015, 15:06
Das Attribute/Condition Resistance Control-Ding, kann das irgend etwas, dass man mit DynRPG v0.30 noch nicht machen kann?
Kopfschmerzen ersparen.
Du müsstest dir die default-Werte irgendwo abspeichern, dann die richtige Sequenz herausfinden, wer/was angegriffen wird, unter RPG:: Attribute oder RPG:: Condition die entsprechenden Werte abändern und wieder die default-Werte wiederherstellen bevor jemand anderes angegriffen wird. Vorallem muss man dann nicht noch extra herausfinden ob A, B, C, D oder E gilt mit Equipment und JobClasses.

Ansonsten kann man auch mit der Ext.dll als Grundlage entsprechende pseudo-Callbacks nutzen. Dann erspart man sich dieses "Wiederherstellen des Defaults".


Und der Spielordner wird nicht zugemüllt, weil die Werte allesamt in die RPG:: Battler eingebunden wurden (liegen im erweiterten DArray<short, 1> RPG:: Battler:: attributes bzw. conditions von einzelnen Helden innerhalb/außerhalb der Party und von einzelnen Monster-Objekten im Kampf). Mir fällt jetzt kein anderer temporärer Speicher ein, kann mich aber gerne eines Besseren belehren lassen.

Corti
21.03.2015, 19:12
Was ist bei dir ein Pseudo-Callback?

Könntest du theoretisch neue Callbacks im DynRPG Stil machen? Ich weiss nicht, was Cherry da genau tut, diesen Code habe ich nicht. Ich schätze, er patcht im Makercode gewisse Stellen um auf Funktionen der DynLoader.dll und die ruft diesen Callback dann in den Plugins auf. Haben PepsiOtaku und du den kompletten DynRPG Code, oder bastelt ihr nur mit den Headern rum?

bugmenot
21.03.2015, 19:55
Was ist bei dir ein Pseudo-Callback?
Funktionen, die aus einem anderen Callback heraus aufgerufen werden und ähnliche Schnittstellen liefern wie reguläre Callbacks (bei zeitabhängigen Rechenoperationen / Abfragen).

Ich habe keine Ahnung vom dynloader, kann da also keine zusätzlichen Callbacks anbinden, ohne diesen "schäbigen Adapter" in Form von einem RT-Patch, onSetSwitch callback, RAM-Zugriffen und sub-optimalem C++ Code. "neue Callbacks im DynRPG Stil" könnte ich machen, wenn ich von Programmieren mehr verstehen würde als GCC 4.7.1 sich nicht mit grundlegenden calling conventions auskennt (außer es gab mal eine Reform, dass alle Register bis auf das output-Register auf den stack gepusht werden... dann will ich nichts gesagt haben).

PepsiOtaku hat meine Dokumentation der ganzen Speicheradressen in besser lesbare Form in die neuen Header gepresst (welche am Ende auch nur zu einem Speicherzugriff kompiliert werden).

Mike
20.04.2015, 15:27
Falls das schon irgendwo im Thread behandelt wird, tut es mir leid!

Ich habe ein kleines Video erstellt, um ein Problem zu demonstrieren, das ich mit DynRPG habe. Es ist zwar nur eine Kleinigkeit, ein wenig nervig ist es trotzdem.


https://youtu.be/WePBL0_6-ak

Ich öffne mein Testprojekt. Es öffnet sich, wird dann minimiert und dann muss ich in der Taskleiste das Projekt wieder anklicken, um es zu öffnen. Das Problem kann nur an DynRPG liegen, denn ohne es, läuft alles einwandfrei und sonst habe ich keinen Patch etc. angewendet. Das Seltsame ist auch, dass es nur hin und wieder vorkommt. Durchschnittlich so bei jedem zweiten Mal öffnen. Hin und wieder auch jedes mal, dann dafür hin und wieder ein paar Mal nicht.

Gibt es dafür schon eine Lösung bzw. hat das Problem sonst noch jemand?

Ich habe Windows 7 auf meinem Rechner. Den Haken bei "Programm im Kompatibilitätsmodus ausführen für: Windows XP (Service Pack 3)" setzen hilft leider auch nichts.

LG Mike

PepsiOtaku
21.04.2015, 13:04
I added a workaround for that in this plugin:

http://rpgmaker.net/engines/rm2k3/utilities/61/

Just throw in the default settings, and you shouldn't see that issue come up again.

Brei
06.07.2015, 13:19
Ich versuch grad das "custom exact speed" Feature für den Hero zu nutzen, hab aber folgendes Problem:
Der Hero bleibt nicht in der Mitte des Bildes sondern Ruckelt,
und zwar immer dann wenn der Geschwindigkeitswert keine Zweierpotenz ist.

Folgendes habe ich getan:
Ich setz die Geschwindigkeit mit
RPG::hero->customExactSpeed = parsedData->parameters[0].number;
(Der Held läuft auch so schnell wie er laufen soll)

Aaaaaaber: tatsächlich sind seine screen x/y Koordinaten in Bewegung nicht 152/128 sondern Schwanken in der nähe herum.
Ich hab auch noch versucht mit "setCamera" die Kamera einfach wieder auf den Helden zu setzen,
allerdings macht dieser Befehl für mich undurchdringbare Dinge. Ich erläuter dass weiter wenn es was zur Sache tut.

Hat wer 'ne Idee wie man das Fixen könnte? Mach ich irgendwas falsch?

Edit: Ich hab das mal aufgenommen. Das Problem tritt auch bei geringerer Geschwindigkeit auf, aber auf dem Video sieht man's mit hohem Movespeed besser.
https://www.youtube.com/watch?v=fImGSG_-RvI&feature=youtu.be

MarcL
26.07.2015, 20:15
hey cherry :)
hast du noch ein Fünkchen zeit hier zu lesen?

Du hast es ja sicherlich schon mitbekommen, hast dich aber noch nicht dazu im Forum geäußert?
http://forums.rpgmakerweb.com/index.php?/topic/42021-rpg-maker-2003-patch-eula/

Hab es jetzt nur überflogen aber das ist doch jetzt die Erlaubnis, den gekaufen RPG Maker 2003 mit DynRPG zu patchen? (Was ja vermutlich noch nicht geht, weshalb ich hier jetzt Frage, ob du da schon an einem Patch arbeitest?) Vielleicht arbeitest du ja im Moment auch an einem offiziellen Patch für kaufbare 2k3 Plugins oder sonstiges, in dem Fall würde ich mich freuen, wenn du die Frage in Klammern beantwortest ^^y falls du da noch nix sagen darfst/kannst...

An alle anderen Dyn'ler... erstmal die Patch-Eula:


RPG MAKER 2003 - PATCH
End User License Agreement

THIS END USER LICENSE AGREEMENT (THE "AGREEMENT") IS A LEGALLY BINDING CONTRACT BETWEEN YOU, THE END-USER (THE "LICENSEE") AND ENTERBRAIN,INC. ("ENTERBRAIN" OR "LICENSOR"). BY INSTALLING OR MODIFYING "RPG MAKER 2003" (THE "SOFTWARE") AND ANY OF ITS PATCHES, YOU, THE LICENSEE, ARE AGREEING TO BE BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT. READ THE TERMS AND CONDITIONS OF THIS AGREEMENT CAREFULLY BEFORE INSTALLING OR USING THE SOFTWARE. IF YOU DO NOT AGREE TO THE TERMS, CONDITIONS AND LIMITATIONS OF THIS AGREEMENT, PROMPTLY DELETE THE SOFTWARE FROM YOUR COMPUTER.

RPG MAKER 2003 PATCH (or “patch”) refers to a piece of code, software or application that is used to modify or enhance RPG MAKER 2003, software owned by ENTERBRAIN, INC. Patches can range in size, scope and utility. If you feel that your patch would greatly benefit RPG MAKER 2003 users, but is in conflict with any terms in this license, please contact us for special permission: registration@rpgmakerweb.com.


PART 1: PATCH USE



ENTERBRAIN hereby grants the Licensee formal permission to use RPG MAKER 2003 patches as long as they agree to the following:

1. User owns and is using a legal and valid official copy of RPG MAKER 2003, which is registered with ENTERBRAIN via registration procedures outlined in RPG MAKER 2003 License Agreement.
2. User is applying a patch that conforms to creation guidelines outlined in Part 2.
2.1 If patch was created prior to RPG MAKER 2003 official release on April 24th, 2015, user is encouraged to contact the patch creator and obtain their permission to use patch under the terms of use outlined in this license.
3. By applying a patch, user's technical and service support is considered void.
3.1 ENTERBRAIN, INC, DEGICA Co. LTD or any RPG MAKER 2003 distributors will not be required to offer official support and trouble-shooting for RPG MAKER 2003 applications where a patch has been applied.
3.2 Support offered via official forums (http://forums.rpgmakerweb.com/) will be at forum staff discretion, and may or may not be offered to users with patch.
4. ENTERBRAIN is not responsible for any damage incurred by the use of patches.



PART 2: PATCH CREATION


ENTERBRAIN hereby grants the Licensee formal permission to create patches for RPG MAKER 2003, as long as following conditions are met:
1. Licensee patch creator owns and is using a legal and valid official copy of RPG MAKER 2003, which is registered with ENTERBRAIN via registration procedures outlined in RPG MAKER 2003 License Agreement.
1.1 If patch was created prior to RPG MAKER 2003 official release on April 24th, 2015, patch creator may continue to distribute patch only if they agree to the terms and conditions noted in this license.
2. ENTERBRAIN acknowledges that reverse engineering may be required for patch creation, and hereby gives LIMITED permission to use reverse engineering of RPG MAKER 2003 as long as following is true:
2.1 Information learned through this process is kept private and away from public eye – Please note that recognize that some information-sharing is necessary to continue to create and support patches. If you are sharing information, we ask you to be discrete and respect ENTERBRAIN's intellectual property in doing so.
2.2 Information learned through this process is not used to create any other software, or to modify existing or future software that is not property of ENTERBRAIN.
2.3 Information learned through this process is not used to perform unlawful actions.
3. Licensee accepts that patches will not be officially supported by ENTERBRAIN, DEGICA, or any other distributing partners
3.1. Licensee is encouraged to provide support to users as necessary, including continued patch updates.
4. Licensee agrees to create patches as long as following conditions are met:
4.1 Patch is not used to overwrite Digital Rights Management (DRM) or other measures that are protecting RPG MAKER 2003 from unlawful distribution.
4.2 Patch is not used to remove proprietary information or erase and modify credit information distributed with RPG MAKER 2003.
4.3 Patch is not used to bypass or invalidate any other terms RPG MAKER 2003 is distributed under.
4.4 Patch is not used to collect personal or technical information from the user.
4.5 Patch is not used to advertise or promote products, services or materials – whether they relate to RPG MAKER 2003 or not.
5. Patches are considered ENTERBRAIN's property, and as such may not be sold or distributed for profit, be it in terms of direct sale, service sale, donation, crowd-sourcing or royalty/revenue share.
5.1 Licensee may request users to include their name in credits, as long as copyright and ownership is attributed to ENTERBRAIN, INC.
6. Patches are available for commercial use, with no fee or royalty/revenue share expected from patch users by Licensee or ENTERBRAIN.
7. Patches may be brought to ENTERBRAIN's attention via e-mail registration: registration@rpgmakerweb.com.

Leider verstehe ich den Unterschied zwischen Puntk 5 und 6 nicht so richtig? Heißt doch eigentlich, dass jeder der einen Patch erstellt, diesen als Eigentum von Enterbrain deklarieren muss und dass kein Geld für Patches verlangt werden darf? ^^

Sölf
17.08.2015, 01:31
Da ja nun Patches quasi für den legalen 2k3 erlaubt sind, kommt hier eventuell in nächster Zeit ein Update für DynRPG, damit es auch mit der legalen 2k3 Version kompatibel ist?

Ghabry
09.11.2015, 17:58
Gibt es bei DynRPG zusätzlich zu onEventCommand noch eine einfache Möglichkeit Move Events zu verfolgen? Also ne Art Callback wenn ein Event einen Teil einer Custom Move Route ausgeführt hat.

Die Motivation ist mal wieder etwas speziell: Ich möchte Interpreter-Unit Tests für EasyRPG bereitstellen. Also ich protokolliere die Events die RPG_RT ausführt, via DynRPG und schreibe das in eine Datei...
Und dann lade ich die Datei mit EasyRPG und führe die selbe Map in EasyRPG aus und vergleiche, ob beide Implementierungen das gleiche Ergebnis erzeugen. (wenn ja -> Test bestanden)
Wenn man das jetzt noch mit Move Events kombinieren könnte, würde das eine bessere Testabdeckung ermöglichen.

Felski
04.12.2015, 18:17
Hiho,

zwei Fragen:
1. Gibt es irgendwo schon ein Plugin mit welchem man die Bewegung des Helden über die Pfeiltasten deaktivieren kann?
2. Gibt es irgendwo noch mehr Tutorials oder Beispiele zum DynRPG. Interessiere mich momentan besonders für die Classes RPG::Hero und RPG::Character.
LG,
Felski

MagicMaker
04.12.2015, 20:33
Gibt es irgendwo schon ein Plugin mit welchem man die Bewegung des Helden über die Pfeiltasten deaktivieren kann?
Wozu? Den Spielern nimmt man doch nicht einfach so die Steuerung mit dem einzigen sinnvollen Block
auf der Tastatur weg. Wenn du mal kurz blockieren willst, dass man sich grade überhaupt bewegen kann,
dann reicht schon ein aktiv laufendes Autostart-Event.

Corti
04.12.2015, 20:36
1. Gibt es irgendwo schon ein Plugin mit welchem man die Bewegung des Helden über die Pfeiltasten deaktivieren kann?

Ja, hier: http://www.multimediaxis.de/threads/138938-DynRPG-Corti-s-Werkstatt

Allerdings: Solange ein Autostart-Event läuft, kannst du den Helden sowieso nicht bewegen, das unterscheidet AutoStart von ParallelProcess, wenn du Cutscenes machen willst und die Helden dabei stehen bleiben sollen, dann tut's AutoStart besser als das Plugin.


2. Gibt es irgendwo noch mehr Tutorials oder Beispiele zum DynRPG. Interessiere mich momentan besonders für die Classes RPG::Hero und RPG::Character.
Die DynRPG Dokumentation hat ein paar Tipps. Ich hab viel draus gelernt den Code von anderen anzugucken. rpgmaker.net hat einige Plugins mit Quellcode.

Wenn du spezielle Fragen zu irgend einer Klasse hast, stell sie hier.

SARAB
13.03.2016, 17:21
Bin in diesem Thema sehr neu und muss stumpf mal fragen: Kann man die Patches vom Dynrpg auch auf dem Steam RPG Maker packen? ohne die läuft mein game nicht so wie es sein sollte. Ich bin ein Unwissender. -.-

IndependentArt
13.03.2016, 20:59
Ich bin nicht sicher, was da der aktuellste Stand ist, aber es war zumindest eingeplant und auch schon in der Lizensvereinbarung zum Maker verankert ... Ich bin ebenfalls darauf angewiesen.

Corti
13.03.2016, 21:56
Aktuell geht das nicht.

Cherry
11.09.2019, 16:24
Mich hat gerade wer gefragt um eine Idee wie man Messageboxen custom zeichnen könnte.

Ich dachte irgendwie nicht dran, dass diese Person gar kein Plugin-Developer ist, drum brachte es letztenendes nichts. Aber vielleicht bringts ja hier wem was.

Hier ist Code (den ich allerdings nicht getestet habe), mit dem man in der Lage sein sollte, das zu erreichen:


bool onStartup(char *pluginName) {
// Set up hook
void *trampoline;
asm volatile("movl $_drawMessageBoxTrampoline, %%eax" : "=a" (trampoline));
*reinterpret_cast<void **>(0x4C60DC) = trampoline;
}

// This can be used to trigger the original drawing function
void originalDrawMessageBox(RPG::WindowMessage *box) {
asm volatile("call *%%esi" : : "S" (0x4C8488), "a" (box) : "edx", "ecx", "cc", "memory");
}

// Some more stuff for the hook
void drawMessageBox(RPG::WindowMessage* box);
extern "C" {
void __stdcall drawMessageBoxTrampoline2(RPG::WindowMessage *box) {
drawMessageBox(box);
}
}
asm volatile("_drawMessageBoxTrampoline:; pushl %eax; jmp *$_drawMessageBoxTrampoline2@4");

// Here is your drawing callback!
void drawMessageBox(RPG::WindowMessage* box) {
// Here you can draw the box yourself, based on the information available in the box object!
// Or, to call the original drawing function, use originalDrawMessageBox(box);
}

Braucht PepsiOtakus Version von DynRPG (0.32 oder so): http://www.rewking.com/dynrpg/

RPG::WindowMessage ist hier dokumentiert: http://www.rewking.com/dynrpg/class_r_p_g_1_1_window_message.html

Sölf
28.03.2020, 17:39
Lebt hier noch wer und kann mir sagen obs irgendwie machbar ist im Kampf anzeigen zu lassen ob ein Gegner einem Angriff ausgewichen oder dagegen Immun war (Zustandsveränderungen)? Der 2k3 hat ja nur noch eine Evade Message für alles - was halt gerade bei Zuständen extrem nervig ist wenn da nur steht "Miss" aber man nicht weiß ob der jetzt ausgewichen ist oder der Zustand einfach nur 0% Chance auf Erfolg hat.