Der Callback wäre "onFrame", das bedeutet "nachdem alles gezeichnet wurde", aber noch vor dem Einblenden.
Zitat
/* This function is called after every frame (see details below!),
right after the current game scene was drawn, but before it becomes visible to the player.
You may draw on the screen in this function and it will appear on top of the normal graphics. */
void onFrame ( RPG::Scene scene )
{
(...)
}
...
http://rpg-maker.cherrytree.at/dynrp...513fff5e1687c5
Dort fragste ab...
Zitat
if ( scene == RPG::SCENE_MENU )
{
// also nur wenn man grad im Menü ist
(...)
}
...
Es folgt eine Funktion, die noch nicht Teil des DynRPG Patches ist, hat Cherry mal nachgereicht, findet man also nicht in der offiziellen Doku
Zitat
int getMenuScreen() {
return (**reinterpret_cast<char ***>(0x4CDC60))[12];
}
/* Return values:
0 = main screen
1 = item screen
2 = item target selection
3 = skill screen
4 = skill target selection
5 = teleport screen
6 = equipment screen
7 = end confirmation screen
8 = status screen
9 = party order screen
*/
...
Damit kriegt man zu fassen, in welchem Menüscreen man ist.
Dann um zu wissen, wie viele Helden in der Party sind und welche...
Zitat
RPG::Actor * actorCurrent;
for (int inLoop=0; inLoop< Global::kNumberOfHeros; inLoop++) // for each slot in party ( 0 -> 3 )
{
actorCurrent = RPG::Actor::partyMember(inLoop); // get actor on that position
if(actorCurrent != 0) // if zero, no actor has been returned
{
// Id in Actor-Klasse ist OneBased-Datenbank-ID
int heldenDBid = actorCurrent->id;
(...)
}
}
...
Und zuguterletzt:
EDIT::Vergiss das hier
// Auslesen der Farbdaten an Koordinate X,Y
int pixelFarbe = RPG::screen->canvas->pixel(x,y);
Siehe auch canvas -> scanline.
die Intwerte der Pixel sind 16Bit Farben
// In Makergrafiken ist der Maximalwert pro Farbkanal einem Teil der möglichen 16Bit gesamt
// Anordnung der Bits in einem 16Bit Pixel (RRRRRGGGGGGBBBBB)
// Max.Wert Rot : 31 (5 Bit )
// Max.Wert Grün: 63 (6 Bit )
// Max.Wert Blau : 31 (5 Bit )
Kazesui hat irgendwo mal den Sourcecode seines Blending-Plugins angeboten. In dem Quellcode könntest du dir abgucken, wie man Pixelwerte beeinflusst.
Zeichne es mit RPG::screen->canvas->draw(...) über, ist einfacher.