CHERRY'S PROFILE
Cherry
0
+++ DynRPG - The RM2k3 Plugin SDK +++
@MP: Yes, you could check for MP changes in onFrame and use RPG::Battler::damagePopup (either as colored number or as string like "+10MP" or so, unfortunately the RPG Maker doesn't provide a function to show a colored string) to visualize the change. However you would somehow need to "filter" the normal MP usage caused by skills because that's probably unwanted... Maybe by ignoring MP change done between onDoBattlerAction and onBattlerActionDone, but I am not sure about that. Maybe RPG::Battler::actionStatus might be helpful there...
@EDIT: Shouldn't be too difficult, I think.
@EDIT: Shouldn't be too difficult, I think.
DynScript?
Actually, one of my very early creations was the so-called "Power Patch", which allowed very limited scripting using Lua.
Later I started creating CGSS (http://cherrytree.at/cgss) which is actually something like DynRPG, but using Lua. I stopped it in a very early stage though (you can download a demo on my page) because I noticed that the performance was terrible. And even with optimizations (which would have made the system less transparent, on the other hand) it would never have been worth the effort because most "exciting" things would just slow down everything so much that it wouldn't have any real-world usage.
That's partly to poor design of the RPG Maker system itself and partly due to all the marshalling which is necessary to interface Lua with the RPG Maker, mostly when callbacks come into play (and be honest - without callbacks, DynRPG would be far less powerful!).
The fact that DynRPG uses compiled C++ allows for much better results. Firstly because it's using compiled code, no interpreting is needed there. Secondly because accessing the RPG Maker system is mostly "direct". For example, writing RPG::system->scene = RPG::SCENE_MENU; produces about the same machine code as if the RPG Maker would do the same thing natively! That's because the DynRPG classes have been designed in a way that their memory layout matches the layout of the internal classes of the RPG Maker so that the C++ compiler can generate the optimal code. Even most method calls (like RPG::Character::move, for example) are only very thin wrappers around the corresponding interal functions of the RPG Maker, mostly in order to translate C++'s calling convention (using stack only) to Delphi's (using the eax, edx and ecx registers), so that the overhead is minimal. This means that DynRPG code is at least 90% as fast as the native code of the RPG Maker.
This also means that exposing the full DynRPG API via Lua or Ruby or anything else would probably need many times more effort than creating DynRPG itself needed! It's like building an adapter cable for DVI>HDMI versus building an active converter for VGA>HDMI. The first one just needs the right wiring and the right plugs (and doesn't need any actual curcuitry apart from the connections), while the second one is a complex device which needs to actually "translate" an analog signal to a digital one!
Later I started creating CGSS (http://cherrytree.at/cgss) which is actually something like DynRPG, but using Lua. I stopped it in a very early stage though (you can download a demo on my page) because I noticed that the performance was terrible. And even with optimizations (which would have made the system less transparent, on the other hand) it would never have been worth the effort because most "exciting" things would just slow down everything so much that it wouldn't have any real-world usage.
That's partly to poor design of the RPG Maker system itself and partly due to all the marshalling which is necessary to interface Lua with the RPG Maker, mostly when callbacks come into play (and be honest - without callbacks, DynRPG would be far less powerful!).
The fact that DynRPG uses compiled C++ allows for much better results. Firstly because it's using compiled code, no interpreting is needed there. Secondly because accessing the RPG Maker system is mostly "direct". For example, writing RPG::system->scene = RPG::SCENE_MENU; produces about the same machine code as if the RPG Maker would do the same thing natively! That's because the DynRPG classes have been designed in a way that their memory layout matches the layout of the internal classes of the RPG Maker so that the C++ compiler can generate the optimal code. Even most method calls (like RPG::Character::move, for example) are only very thin wrappers around the corresponding interal functions of the RPG Maker, mostly in order to translate C++'s calling convention (using stack only) to Delphi's (using the eax, edx and ecx registers), so that the overhead is minimal. This means that DynRPG code is at least 90% as fast as the native code of the RPG Maker.
This also means that exposing the full DynRPG API via Lua or Ruby or anything else would probably need many times more effort than creating DynRPG itself needed! It's like building an adapter cable for DVI>HDMI versus building an active converter for VGA>HDMI. The first one just needs the right wiring and the right plugs (and doesn't need any actual curcuitry apart from the connections), while the second one is a complex device which needs to actually "translate" an analog signal to a digital one!
[DynRPG Plugin]Blending Mode
Algorithm the RPG Maker uses for transparency:
R = R (picture) * (alpha + 1) + R (screen) * (256 - alpha)
Same for G and B
If you do this, you could store the second image in the image2 buffer of the RPG::Picture after calling merge(). Set the transparency2 to 100 to prevent the second image from being drawn.
R = R (picture) * (alpha + 1) + R (screen) * (256 - alpha)
Same for G and B
If you do this, you could store the second image in the image2 buffer of the RPG::Picture after calling merge(). Set the transparency2 to 100 to prevent the second image from being drawn.
[2K3][Help] An...even MORE stranger bug o_O
[Headset] Rm2k3 Sound and BGM split?
Note: MIDI is played in a different way than Wave. Have a look at the MIDI specific settings in your control panel!
DirectItemMenu Patch for RM2k/RM2k3
[2k3] Locating the save data on Win 7
Have a look at this: http://rpgmaker.net/forums/topics/8599/
Problems with RPG Maker 2003
Run this tool once whenever you have any keyboard issues: http://share.cherrytree.at/showfile-2704/kbdreset.exe
[2k3][Help] Random Error at random time
Ok this is strange. I have no idea what's going on, so could you please send me your project (or a project where you isolated the bug), I will then investigate.
[2k3][Help] Random Error at random time
Based on the values shown in the screen, I am pretty sure it is this error: "The game would crash when you removed an actor in battle when this actor was the last to do his turn."
Example:
- 4 actors in party
- 3rd actor in party does his turn
- Event removes 2 actors
- 2 actors in party
- Crash because the game tries to access the now non-existent 3rd actor
Try applying this bugfix: http://share.cherrytree.at/showfile-7303/rpg_rt_2k3_108_battleactionbugfix_and_getpartymemberbattlebugfix.ips
It fixes this bug, plus the bug described here: http://rpgmaker.net/forums/topics/11476/
Alternatively, you can install DynRPG which fixes this bug too.
Example:
- 4 actors in party
- 3rd actor in party does his turn
- Event removes 2 actors
- 2 actors in party
- Crash because the game tries to access the now non-existent 3rd actor
Try applying this bugfix: http://share.cherrytree.at/showfile-7303/rpg_rt_2k3_108_battleactionbugfix_and_getpartymemberbattlebugfix.ips
It fixes this bug, plus the bug described here: http://rpgmaker.net/forums/topics/11476/
Alternatively, you can install DynRPG which fixes this bug too.










