Erstmal:
Sowohl onBattlerAction als auch onBattlerActionDone werden pro Charakter mehrfach in Folge ausgelöst. Wenn du eine Handlung genau ein mal abfragen willst, dann solltest du dies in onBattlerActionDone mit success == true machen.
Ob BA_ATTACK bei mir funktioniert kann ich derzeit nicht testen, da musste dich gedulden ;-)
Oje, ich hab noch nichtmal in die PM geschaut und so die liebe Geburtstagsüberraschung versäumt...!!
Naja, zum Problem:
1) Du überprüfst nicht ob ev != NULL, dadurch crashst du natürlich sofort weil im Titelscreen kein Event #1 vorhanden ist.
2) doesEventPageExist funktioniert nicht weil ich einen Fehler gemacht habe.
Du kannst derweil diese gefixte Version von doesEventPageExist verwenden:
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!
Kann ich die DLL mal haben? isMonster kann nämlich eigentlich gar nicht crashen (außer "battler" wäre ein ungültiger Pointer), schon gar nicht mit Adresse 0x00000001, weil es nämlich nur den (nicht in der Dokumentation verzeichneten) ersten Member von jeder Makerklasse, nämlich vTable, mit einem Wert vergleicht.
Wen es interessiert:
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!
Es sieht eigentlich so aus als würde der Compiler davon ausgehen dass die Klassenmethoden thiscall (die MS Visual C++ Variante) als Calling Convention verwenden, sie verwenden aber cdecl mit this als erstem Parameter. Dadurch geht das ganze schief. Daher wurdert es mich gerade sehr dass das Problem bei 4.6.1 auftritt (bist du sicher dass du diese Version hast, und nicht etwa Code::Blocks seinen eigenen GCC verwendet? Überprüfe die Pfadeinstellungen mal.), weil das nämlich erst in GCC 4.7.x geändert wurde.
Du könntest versuchen in den Projekteinstellungen einzustellen dass dem GCC der Parameter -mabi=sysv mitgegeben wird.
--
Mir war nichtmal bewusst dass ich nominiert wurde, aber: Cool! Hälfte des Lobes muss aber unbedingt an Archeia!