Seite 9 von 26 ErsteErste ... 567891011121319 ... LetzteLetzte
Ergebnis 161 bis 180 von 505

Thema: +++ DynRPG - Das RM2k3-Plugin-SDK +++

  1. #161
    Grad getested:

    Helden (BA_DEFEND):
    • onDo 1x
    • onDone 1x

    Monster (AK_SKILL):
    • onDo 11x
    • onDone 12x (davon 1 mal success)

    Immer abwechselnd onDo onDone(!success) ~ 11 mal in Folge, dann passiert die Handlung dann nach ner halben Sekunde kommt "onDone" mit Success.

  2. #162
    Interessante Eigenheit des Makers, ich dachte bisher dass nur onDone mehrmals kommt. Muss ich mal anschauen und berücksichtigen...

  3. #163
    Tja, man lernt nie aus. Btw. hattest du schon Zeit dir meinen Speicherzugriffsfehler anzusehen?

  4. #164
    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:

    Code:
    bool doesEventPageExist(RPG::Event *event, int id) {
    		void **script;
    		asm volatile("call *%%esi" : "=a" (script), "=d" (RPG::_edx) : "S" (0x47A0D0), "a" ((**reinterpret_cast<void ****>(0x4CDD14))[15]), "d" (event->id) : "ecx", "cc", "memory");
    		NamedCatalogPtr<void *> pages;
    		pages.ptr = reinterpret_cast<NamedCatalog<void *> *>(script[5]);
    		return pages[id] != NULL;
    }

  5. #165
    Geil, dankeschööön =D

  6. #166
    @Corti MP wird immernoch nicht regeniert bei einem Angriff und wenn ich nun Abwehr ausführe crasht mir das Spiel XD


  7. #167
    Welche GCC-Version hast du?

  8. #168
    Uhm 4.6.1
    das spielt crasht auch nur wenn ich isMonster() abfrage :>

    Geändert von Tokio (13.02.2013 um 20:17 Uhr)

  9. #169
    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:
    Code:
    	bool Battler::isMonster() {
    		return vTable == reinterpret_cast<void **>(0x4BD35C);
    	}

  10. #170
    Habe die DLL per PM erhalten.

    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.

  11. #171
    Ich habe bei meinem Projekt jetzt DynRPG und das verwendbare TastaturMausPlugin angewendet. Die Maus funktioniert auch wunderbar. Es gibt nur zwei Probleme:
    1. Die Maus hat keine Begrenzung am Bildrand sondern geht auch ins Leere hinaus. Im Fenstermodus gibt es nirgends eine Begrenzung (ich kann in alle Richtungen darüber hinaus) und im Vollbildmodus kann ich rechts und unten so weit ich will fahren. Gibt es dafür eine Lösung?
    2. Hin und wieder (bei ca. einem von fünf Spielstarts) öffnet sich das Spiel und minimiert sich wieder in die Taskleiste. Dann muss ich auf das Icon unten klicken und dann läuft das Spiel normal. Das passiert im Test-Modus des Makers wie auch wenn ich das Spiel vom Spielordner aus starte. Gibt es dafür eine Erklärung?

    Achja: Das Problem mit der Startposition des Mauszeigers (rechte untere Ecke), das ich auch schon bei Inelukis Mauspatch hatte, habe ich auch mit dem Plugin. Kann ich die Startposition irgendwie mit der .ini-Datei beeinflussen?

    LG Mike

  12. #172
    Ich habe folgendes Codestück aus Kaze's Picture Blend Plugin.
    Code:
        bool onEventCommand(RPG::EventScriptLine *scriptLine, RPG::EventScriptData *scriptData, int eventId, int pageId, int lineId, int *nextLineId)
        {
    
            if(scriptLine->command == RPG::EVCMD_ERASE_PICTURE)
            {
    
    
    [...]
    Verwendung der Parameter aus dem Callback führt zu einem EInfrieren der RPG_RT.exe wenn das auslösende EventCommand ein ErasePicture Befehl ist, der per PicturePointer Patch abgeändert wurde soweit ich das feststellen kann.

  13. #173
    Der PicPointerPatch funktioniert ein bisschen anders, er ändert den Parameter nicht sondern er ersetzt den Funktionsaufruf wo die Erase-Picture-Funktion den Parameter abfragt mit einem anderen, der den berechneten Wert statt dem echten zurückgibt. Sollte auf DynRPG keinen Einfluss haben, weil das an einer anderen Stelle ansetzt (du solltest du als Parameter z.B. 10123 sehen). Kannst du mir ein fehlerhaftes Projekt geben damit ich im Debugger sehen kann wo da eine Endlosschleife entsteht?

    (Im Notfall kannst du auch den PicPointerPatch in DynRPG neu schreiben, sollte eine Sachen von 10 Minuten sein)

    ===

    Zitat Zitat von Mike Beitrag anzeigen
    Ich habe bei meinem Projekt jetzt DynRPG und das verwendbare TastaturMausPlugin angewendet. Die Maus funktioniert auch wunderbar. Es gibt nur zwei Probleme:
    1. Die Maus hat keine Begrenzung am Bildrand sondern geht auch ins Leere hinaus. Im Fenstermodus gibt es nirgends eine Begrenzung (ich kann in alle Richtungen darüber hinaus) und im Vollbildmodus kann ich rechts und unten so weit ich will fahren. Gibt es dafür eine Lösung?
    Im Vollbildmodus solltest du rechts und unten sehr wohl eine Begrenzung haben, immerhin ist die Bildschirmauflösung nur so groß wie das Bild ist... das kann eigentlich nicht sein. Im Fenstermodus ist das normal, du kannst ja händisch Begrenzungen einbauen (Werte < 0 als 0 behandeln und so).

    Zitat Zitat von Mike Beitrag anzeigen
    2. Hin und wieder (bei ca. einem von fünf Spielstarts) öffnet sich das Spiel und minimiert sich wieder in die Taskleiste. Dann muss ich auf das Icon unten klicken und dann läuft das Spiel normal. Das passiert im Test-Modus des Makers wie auch wenn ich das Spiel vom Spielordner aus starte. Gibt es dafür eine Erklärung?
    Das ist merkwürdig, ich kann dir im Moment nicht sagen warum (bei mir passierts nicht).

    Zitat Zitat von Mike Beitrag anzeigen
    Achja: Das Problem mit der Startposition des Mauszeigers (rechte untere Ecke), das ich auch schon bei Inelukis Mauspatch hatte, habe ich auch mit dem Plugin. Kann ich die Startposition irgendwie mit der .ini-Datei beeinflussen?
    Nein, man könnte aber natürlich ein Plugin schreiben was die SetCursorPos-Funktion verwendet um die Maus zu einem Punkt zu bewegen.

    Geändert von Cherry (26.02.2013 um 20:50 Uhr)

  14. #174
    Werd mal was reproduzierendes zusammen fummeln.

  15. #175
    Ich warte eigentlich nur darauf das es tausend kleine Plugins gibt, bis jemand auf die idee kommt alles zussammenzufügen XD

  16. #176
    Mir misslang das Nachstellen, wie schlechte Stalker.

    K.a. was es nun war. Nachdem ich den Code ein bischen umgebaut und verschoben hab gibts keine Probleme mehr. O_o

  17. #177
    Ein bisschen Code was der eine oder andere gebrauchen könnte (weil diese Funktionen noch nicht im SDK sind):

    Code:
    function getLowerLayerTileId(RPG::Map *map, int x, int y) {
    	int ret;
    	asm volatile("call *%%esi" : "=a" (ret), "=d" (RPG::_edx), "=c" (RPG::_ecx) : "S" (0x4A80CC), "a" (map), "d" (x), "c" (y) : "cc", "memory");
    	return ret;
    }
    
    function getUpperLayerTileId(RPG::Map *map, int x, int y) {
    	int ret;
    	asm volatile("call *%%esi" : "=a" (ret), "=d" (RPG::_edx), "=c" (RPG::_ecx) : "S" (0x4A80F4), "a" (map), "d" (x), "c" (y) : "cc", "memory");
    	return ret;
    }
    
    function getTerrainId(RPG::Map *map, int tileId) {
    	int ret;
    	asm volatile("movl 20(%%eax), %%eax; call *%%esi" : "=a" (ret), "=d" (RPG::_edx) : "S" (0x47D038), "a" (map), "d" (tileId) : "cc", "memory");
    	return ret;
    }
    Um damit z.B: die Terrain ID eines Feldes zu bekommen:
    Code:
    int terrainId = getTerrainId(RPG::map, getLowerLayerTileId(RPG::map, x, y));

    Geändert von Cherry (28.02.2013 um 15:57 Uhr)

  18. #178
    Gibt es eigentlich ne Möglichkeit das Terrain zu verändern? Also sozusagen Gras in Wasser zu ändern oder so, wäre echt Praktisch und würde mich auf eine idee bringenXD

  19. #179
    Bis jetzt nicht, ist mir jetzt auch zu kompliziert mir da was einfallen zu lassen.

  20. #180
    Hallöchen ich hab ein kleines Problemchen ^^;
    Offensichtlich vertragen sich DynRPG und BetterAep nicht bei allen Funktionen...

    Klicke auf die Grafik für eine größere Ansicht 

Name:	Bild1.png 
Hits:	117 
Größe:	5,9 KB 
ID:	17111

    (Der Dateipfad in der Fehlermeldung hat so auf meinem Rechner nie existiert)
    Der Fehler tritt auf, seit ich eine BetterAep rpg_rt.exe mit Dynrpg verwende und wird genau dann ausgelöst, wenn ich die Funktion nutze, Bilder mit einer ID höher als 50 anzuzeigen. In meinem Fall genau bei Show Picture 143 usw.
    Könnte jemand mit DynRPG + BetterAep testen, ob Bilder mit einer ID über 50 im 2k3 v1.08 funktionieren oder ob der gleiche Fehler auftritt? Ansonsten würde ich wohl wieder auf BetterAep verzichten müssen ^^;

    @Davy: Danke ^^;

    Geändert von MarcL (10.03.2013 um 11:13 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •