Ergebnis 1 bis 20 von 2336

Thema: Programmwunsch und -erstellungsthread #2

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von goldenroy Beitrag anzeigen
    Gibt es überhaupt [...] irgendwelche Gründe, noch den 2k zu benutzen?
    Gegenfrage: warum nicht?
    Zitat Zitat von bugmenot Beitrag anzeigen
    Geschmackssache
    Kugelschreiber oder die Feder, mit was schreibt es sich besser? Wen stört das Arbeitswerkzeug schon.

    ..und HEY! Wo bleibt dein "Danke, dass du dir sowohl für 2k als auch 2k3 die Mühe machst Patches zu basteln, die hier niemanden interessieren." ?

    Zitat Zitat von MagicMaker Beitrag anzeigen
    DestinyV2
    32bit. 'nuff said.

  2. #2
    Hast natürlich recht. Der Switchpointer ist großartig! Well done.

    Eine Frage dazu hätte ich noch: Du schreibst danach was von "Codestellen frei", hast du im Switchpointer irgendwelche Sprünge drin, die sich nicht mit anderen Patches vertragen können oder ist deine Änderung eine risikolose Änderung im Switchcode und die Frage bezog sich auf etwas anderes, dass du planst?

    Noch etwas:
    Könntest du rausbekommen, an welchen Stellen im Speicher die Attribute und Conditionanfälligkeiten der Monster liegen?
    Im Maker sind diese mit A bis E einstellbar. Durch Senken/Erhöhen kann im Kampf die Attribute-Anfälligkeit um eins nach oben oder unten geändert werden.
    Interessant wären also sowohl die Werte aktueller Monster als auch die der Monster in der Database.

    mfg

  3. #3
    Zitat Zitat von Corti Beitrag anzeigen
    [...] im Switchpointer irgendwelche Sprünge drin, die sich nicht mit anderen Patches vertragen können
    Nur im Falle des 2k Patches. Es fehlte 1 Byte... wow... Weswegen 8 Byte Code ans Ende einer zerstückelten Funktion ausgelagert wurden, welche direkt hinter dem bAEP liegt.

    Edit:
    Sonst könnte ich bei beiden Versionen den Code auch in das ShowLogoOnStartUp packen (Was nicht alle OK finden könnten) und den üblichen FailSafe wegen initialisierten Variablen reinpacken (hier ist das irgendwie nicht wirklich nötig) sowie einen Sonderfall für Var[SwitchPointer] = 0 (get Switch_ID = 1 instead).

    Edit²:
    [DATA EXPUNGED]

    Zitat Zitat von Corti Beitrag anzeigen
    Noch etwas:
    Könntest du rausbekommen, an welchen Stellen im Speicher die Attribute und Conditionanfälligkeiten der Monster liegen?
    Könnte ich mal reinschauen... Wie gesagt, ich bin nur ein Laie in Sachen Software-Innereien. (Rhyme not intended)

    Geändert von bugmenot (12.08.2013 um 15:24 Uhr)

  4. #4
    Für einen Laien schlägst du dich ganz gut

  5. #5
    Kann das nicht Konflikte bei parallel laufenden Events geben, wenn man überall auf diese Var angewiesen ist?

  6. #6
    Zitat Zitat von MagicMaker Beitrag anzeigen
    Kann das nicht Konflikte bei parallel laufenden Events geben, wenn man überall auf diese Var angewiesen ist?
    Genau. (bzw. diese lesen den selben Pointer -> selben Switch aus)

    Lösungsmöglichkeit: den Patch umstrukturieren, um per SwitchID-Array Switch[Nr. xyz] + 0 bis 99 (im Default-Fall Switch[0001] bis Switch[0100]) auf entsprechende Var[3397] + Switch-Array-Pos zuzugreifen (?)
    Was dann nur mehr Mikro Management verlangt im Sinne von "...welcher Pointer wird gerade eben bereits verwendet?"
    Ich habe nicht wirklich viel Platz, um die paar Byte zusätzlicher Codezeilen noch unterzubringen.

    Edit:
    Bzw. was ist schon parallel an einem Prozessor, der Befehle sequenziell verarbeitet? Einfach vor jedem Eventbefehl Condition"Switch[0001] = ON/OFF" die Variable mit dem SwitchPointer entsprechend setzen und der Switch wird eindeutig zugewiesen.

    Geändert von bugmenot (12.08.2013 um 12:32 Uhr)

  7. #7
    Parallele Events laufen nicht komplett durcheinander. Ein Event läuft solange ungestört, bis es entweder einige Tausend Befehle ausgeführt hat (weiß gerade die Zahl nicht) oder an einen Befehl kommt, der bis zum nächsten Frame wartet (dazu gehört Wait, aber auch das Ende eines PPs oder Befehle wie Open Save Menu, etc.). Daher, wenn man nicht eine Schleife ohne Wait baut (was man eh nicht sollte), sodass man an das Befehlslimit kommt, kann man davon ausgehen, dass zwischen zwei Befehlen die nicht auf das nächste Frame warten (und dazu gehören ja Variablen-/Switch-Operationen und Bedingungen) nichts anderes dazwischenfunkt. So funktionieren letztenendes auch der Item/Eventpointerpatch, der BetterAEP und einige DynRPG-Plugins.

  8. #8
    Zitat Zitat von bugmenot Beitrag anzeigen
    Edit²:
    Bug gefunden: wenn ein Event für irgendeine Eventseite Switch[0001] abfragt, dann wird auf diese Eventseite (nach Event-Update) gesprungen, egal was der SwitchPointer sagt. (Soviel zum Thema Self-Switches in 2k(3)... mal schauen.)
    Ich nehme die Bug-Meldung hiermit wieder zurück. (Bloß der MessageSwitchPatch(Switch_ID = 1 in 0x70844(2k) oder 0x92ED9(2k3)), der den Switch anflippte...)
    Der SwitchPointer wirkt sich nicht auf die Event Conditions aus.

    P.S.
    Nutzen die Event Conditions (links im Event Editor) etwa nicht die selbe Funktion, wie der Eventbefehl zu den Conditions?
    Und wird vorher irgendwo die eigene Event_ID hinterlegt?

    P.P.S.
    Ist der Raum hinter dem BetterAEP nur im 2k3 schon belegt?

  9. #9
    Zitat Zitat von Corti Beitrag anzeigen
    Hast natürlich recht. Der Switchpointer ist großartig! Well done.
    Noch etwas:
    Könntest du rausbekommen, an welchen Stellen im Speicher die Attribute und Conditionanfälligkeiten der Monster liegen?
    Im Maker sind diese mit A bis E einstellbar. Durch Senken/Erhöhen kann im Kampf die Attribute-Anfälligkeit um eins nach oben oder unten geändert werden.
    Interessant wären also sowohl die Werte aktueller Monster als auch die der Monster in der Database.mfg
    Hey das könnte ich auch für mein Projekt gebrauchen ^^ Erfahrungspunkte, Geldwert und das gedroppte Item des Monsters dazu fände ich auch sehr nützlich

    Gibt es eigentlich eine Möglichkeit in den String eines Heldennamens (z.B. mit ID 14) zu schreiben und einen anderen String einzutragen, so dass ich dann im Maker das ganze wieder mit \n[14] auslesen könnte?

  10. #10
    Ich weiß gerade nicht wie das beim 2k ist, aber beim 2k3 gibt es auf der ersten Seite den Befehl Change Hero Name. Dort kannst du den Helden und den neuen Namen aussuchen.

  11. #11
    Zitat Zitat von Quetschi Beitrag anzeigen
    Ich weiß gerade nicht wie das beim 2k ist, aber beim 2k3 gibt es auf der ersten Seite den Befehl Change Hero Name. Dort kannst du den Helden und den neuen Namen aussuchen.
    Ich mein doch in C++ für ein DynRPG Plugin Wobei das bringt mich auf den Gedanken... kann man denn nicht durch irgendeinen Ausdruck den Befehl aufrufen? Was sagt mir das hier?
    Zitat Zitat
    483124 -> ChangeHeroName

  12. #12
    Sind das irgendwelche festen Strings oder soll da was generiert werden? Für erstes sollte ja der Änderungsbefehl ausreichen.

  13. #13
    Zitat Zitat von MagicMaker Beitrag anzeigen
    Sind das irgendwelche festen Strings oder soll da was generiert werden? Für erstes sollte ja der Änderungsbefehl ausreichen.
    Naja z.B. ein Stehlen Script...
    Je nachdem welches Item gestohlen wird, müsste man einfach nur per DynRPG den Itemnamen lesen und diesen in den Heldennamen eintragen... dann bräuchte man nur eine Messagebox die ausgibt: \n[14] gestohlen!
    Allerdings fällt mir gerade auf, dass man dann irgendwie so was bräuchte wie @store 14 32 (slot 14, itemid 32) und das müsste man wieder per Hand eingeben, wenn sowas nicht funktioniert: @store 14 \v[123]....
    Außerdem fällt mir jetzt noch auf, dass wenn man nicht will, dass alle Gegenstände geklaut werden können... müsste man für jedes Item sowieso die ID per Hand eintragen... dann kann man aber gleich alle Namen per
    Hand eintragen...
    Eigentlich hatte ich noch was... aber mir fällt leider gerade nicht mehr ein, wo ich schon mal so ein Problem hatte, wo ich das schon mal hätte gebrauchen können...

  14. #14
    Da hat doch neulich wer ein Plugin gebaut wo man sowas wie "\i[\v[123]]" in Messages verwenden kann... (war das nicht eh Corti?)

    Btw: In allen Plugins kann man Zahlenwerte durch Variablen angeben, indem man ein V (oder mehrere für mehrfache Indirection) voranstellt. Dasselbe gilt für N für Heldennamen anstelle von Strings (NV funktioniert dann auch). Das ist ein DynRPG-Feature, das Plugin muss nix extra dafür tun und bekommt gleich den intepretierten Wert geliefert.

  15. #15
    Du meinst sicher den MessageExtender von Morden.

  16. #16
    Ah ja, stimmt. Danke.

  17. #17
    Meh...

    (RPG_RT 2k3 v1.08 )
    [0x98E75 .. 0x98F16]
    //GetBattleSpoils-Loop //[0x73935 .. 0x739D6] in RPG_RT 2k v1.07
    0x98E7E call sub_4BE860 (get enemy ID's Data(?))

    0x98E9B call sub_4BDCEC* (get ExpSpoils)
    0x98EB0 call sub_4BDD08* (get GoldSpoils)
    0x98EC6 call sub_4BDD24* (get ItemSpoils' ID)
    0x98EDD call sub_4BDD40* (get ItemSpoils' %)
    0x98EE8 (get Drop = true/false(?))
    -> 0x98EF0 jmp if Drop = false (jump over 'AddItem')
    0x98F00 call sub_4BDD24* (get ItemSpoils' ID)
    0x98F0A call sub_4175DC (AddItem)

    Edit:
    *GetEnemyData_structure:
    push ebx
    mov ebx, eax
    mov eax, DS: off_4CDE0C //EnemyParamPtr
    //DS: off_49AD20 in RM2k
    mov eax, [eax]
    mov edx, [ebx+0D8]
    //[ebx+48] in RM2k
    call sub_482A80
    //sub_4627EC in RM2k
    mov eax, [eax+**]
    pop ebx
    ret

    ** (EnemyData)
    04 = Enemy_ID
    08 = Enemy_Name
    0C = EnemyGraphic_Name
    10 = Coloration

    14 = Enemy_max.HP
    18 = Enemy_max.MP
    1C = Enemy_Atk
    20 = Enemy_Def
    24 = Enemy_Int
    28 = Enemy_Agi
    2C = Transparency_Flag
    30 = Drop: Exp
    34 = Drop: Gold
    38 = Drop: Item_ID
    3C = Item_Drop%
    40 = Crit_Flag //0|1 = false|true
    44 = Crit_Chance (1 in X)
    48 = Miss_Flag //0|1 = false|true //256+0|1 in RM2k
    4C = highest Condition ID(?)
    50 = Condition Resist
    //assigned by ID, exists temporarily
    54 = highest Attribute ID(?)
    58 = Attribute Resist
    //assigned by ID, exists temporarily
    5C = Move Pool(?)

    Geändert von bugmenot (16.08.2013 um 13:35 Uhr)

  18. #18
    Zitat Zitat von Cherry
    Da hat doch neulich wer ein Plugin gebaut wo man sowas wie "\i[\v[123]]" in Messages verwenden kann... (war das nicht eh Corti?)
    Btw: In allen Plugins kann man Zahlenwerte durch Variablen angeben, indem man ein V (oder mehrere für mehrfache Indirection) voranstellt. Dasselbe gilt für N für Heldennamen anstelle von Strings (NV funktioniert dann auch). Das ist ein DynRPG-Feature, das Plugin muss nix extra dafür tun und bekommt gleich den intepretierten Wert geliefert.
    Zitat Zitat von MagicMaker
    Du meinst sicher den MessageExtender von Morden.
    Danke Klappt sehr fein!


    Zitat Zitat von bugmenot
    oO; Danke... ich seh leider jetzt erst, das Corti was von Speicheradressen geschrieben hat ^^; das und der Assembler? Code sagen mir leider nix T^T; Hauptsache er kann was damit anfangen ^^

Berechtigungen

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