Seite 111 von 117 ErsteErste ... 1161101107108109110111112113114115 ... LetzteLetzte
Ergebnis 2.201 bis 2.220 von 2331

Thema: Programmwunsch und -erstellungsthread #2

  1. #2201
    Hast du alle drei Zeilen so eingefügt? Bei mir klappte das genau so und Dark Sword benutzt das auch und es funktioniert.

  2. #2202
    Also ich hab in der .ini ganz oben

    Code:
    [QuickPatches]
    PlayerDmgRevamp=4B9847,D1E0,4B985F,909090
    EnemyDmgRevamp=4C0B3E,D1E0,4C0B54,909090
    SkillDmgRevamp=4C0DE4,#5,4C0DF8,#10,4C0E1A,#10,4C0E2F,#20
    eingefügt. Als Testwerte hatte ich 50 ATK und 30 DEF, sowohl bei mir als auch beim Gegner. Hat im Endeffekt um die 20 Schaden gemacht. Ohne Quickpatch ebenfalls. Und Testweise hab ich dann einfach mal die #5, #10, #10, #20 vom SkillDmgRevamp auch noch bei Player und Enemy einegfügt, also

    Code:
    [QuickPatches]
    PlayerDmgRevamp=4B9847,#5,D1E0,#10,4B985F,#10,909090,#20
    EnemyDmgRevamp=4C0B3E.#5,D1E0,#10,4C0B54,#10,909090,#20
    SkillDmgRevamp=4C0DE4,#5,4C0DF8,#10,4C0E1A,#10,4C0E2F,#20
    Hat aber auch nichts gebracht. Ich hab bisher keine Quickpatches, vielleicht steht das Ding auch an einer falschen Stelle in der .ini (aber die Position dürfte doch eigentlich egal sein, oder?)

  3. #2203
    Hast du DynRPG in der Version, die QuickPatches unterstützt?

  4. #2204
    Hast du im Ordner DynPatches zufällig RPS[+].ips oder PDFix.ips rumflattern? (ansonsten gilt das PlayerDmgRevamp= und EnemyDmgRevamp= von der oberen CODE-Box)

    In den readmes steht, dass die Adressen dafür anders sind:
    Zitat Zitat von DynRPG.ini
    [QuickPatches]
    PhysDmgRevamp=4C0B53,D1E0,4C0B69,909090
    (für Gegner und Helden; normaler [Attack]-Befehl)


    Zitat Zitat
    PlayerDmgRevamp=4B9847,#5,D1E0,#10,4B985F,#10,909090,#20
    Ähm... nein. Eine einzige zweistellige Zahl wird sich nicht auf magische Weise von selbst ausmisten und sich auch nicht zu mehreren Prozessoranweisungen kompilieren.

    Falls der DynRPG Loader beim Start nicht "Error in quick patch [...]" ausgibt, dann solltest du sicherstellen, dass du die 0.20 Version von DynRPG hast. Bitte eine neue RPG_RT.exe nehmen, auf der bisher noch kein DynRPG draufgepatcht wurde.

    Edit:
    Ansonsten kann ich das mit den Stats oberhalb von 999 nochmal zusammensuchen.
    Erwarte aber keine Wunder mit Schadenszahlen, solange kein Callback onDamageCalculation existiert.




    Zitat Zitat von Corti Beitrag anzeigen
    Zu 2:
    Ich wüsste nicht, dass ich per DynRPG was für dich tun könnte.
    Man sollte mittels Plugin nachverfolgen können, welche Items im Shop gekauft / verkauft werden:

    unsigned char ShopSubScene = ( *reinterpret_cast<char ***> (0x4CDE4C) )[0][12];



    Code:
    #include <DynRPG/DynRPG.h>
    
    int getItem() {
    return ( *reinterpret_cast<char ****> (0x4CDE4C) )[0][9][25];
    }
    
    int getItemAmount() {
    return ( *reinterpret_cast<char ****> (0x4CDE4C) )[0][9][26];
    }
    
    
    /*void onFrame() (?)
    oder sonst irgendwo, wo es besser angebracht wäre*/
    
    if (scene == RPG::SCENE_SHOP) {
    // [...]
    
    if (ShopSubScene == 3) {
    // Items werden/wurden in das Inventar gepackt
    int A = getItem();
    int B = getItemAmount();
    // [...] "Du hast B mal Item A gekauft"
    
    } else if (ShopSubScene == 6) {
    // Items werden/wurden aus dem Inventar entfernt
    int A = getItem();
    int B = getItemAmount();
    // [...] "Du hast B mal Item A verkauft"
    
    }
    }
    Beim Array mit den verkauften Items bin ich mir nicht ganz sicher.
    Ich kann den Zugriff auf den Pointer auf das Array momentan nur in (mehr oder weniger) numerischer Form angeben:

    int ShopListArraySize = ( *reinterpret_cast<int ****> (0x4CDE4C) )[0][7][2];
    int ShopListArrayPtr = ( *reinterpret_cast<int ****> (0x4CDE4C) )[0][7][1]; // Inhalte vom Array sind jeweils 4 Byte / long int groß

    Wobei im Array dann [0] = Item#1 Item_ID, [1] = Item#2 Item_ID, etc.
    Entweder per C++ das Array ausweiten (wäre empfehlenswert) oder versuchen die RPG_RT-interne Funktion dafür aufzurufen:


    Code:
    int eax = ShopListArrayPtr; // bin mir hierbei nicht sicher, ob das so angenommen wird; zu ätzend das selbst nachzuprüfen
    int edx = (newShopListArraySize)*4; (ArraySize in Bytes)
    
        asm volatile("call *%%esi":
                                  : "S" (0x4027AC), "a" (eax), "d" (edx)
                                  : "cc", "memory");
    Könnte sein, dass es dort irgendwo knallt, weil der Pointer normalerweise mittels load effective address in das Register geladen wird...

    Geändert von bugmenot (21.02.2015 um 19:48 Uhr)

  5. #2205
    Okay, der Quickpatch geht jetzt, hatte noch ne alte Version drin.

  6. #2206
    Haben die Gegner im 2k3 eigentlich sowas wie Aggro Verhalten? Falls ja, könnte man das durch Statusveränderungen auf den Charaktere beeinflussen? Also das ein Charakter Status X hat, wodurch er nun zu 40% angegriffen wird. Oder Status Y, dass er zu 70% angegriffen wird. Oder gibts dazu schon ein Dyn Plugin?

  7. #2207
    Standard: Reiner Zufall. Ich meine im amerikanischen Raum mal ein Plugin gesehen zu haben, dass laut Beschreibung wohl einen mit einer bestimmten Condition belegten Helden zum bevorzugten Angriffsziel macht.

    Das umfangreichste mir bekannte System dieser Art ist mein eigenes aus meinem Kampfsystemspielplatzprojekt, eine Art "World of Warcraft-Aggro Light" für Rundenkampfsysteme.

    Ich habe für Dark Sword ein Plugin in der Planungsphase, dass so etwas ähnliches bietet und als Teil meiner PluginSammlung veröffentlich werden soll, aber das ist Zukunftsmusik. Das überschneidet sich mit dem Thema KI und dort sehe ich noch Raum für eine Menge Spielereien, denn mit DynRPG kann man dort gut wirken.

  8. #2208
    Ich habe ein Problem mit dem ItemEquipSkillmenüfix von elvissteinjr

    http://www.multimediaxis.de/threads/...=1#post3075375
    https://dl.dropboxusercontent.com/u/...pSkillMenu.ips

    Der Patch benutzt die Variablen 3386 und 3387. Der Bereich ist bei mir belegt mit einer umfangreichen Datenstruktur.
    Normalerweise kann man einfach ändern durch verhexen der ips Datei.
    3386 = 0x0D3A, in der IP findet man einmal 3A0D, übliche Schreibweise in IPS-Daten.

    Wenn ich das jetzt ändere:
    -> in Dez.65 , also 0x001A ( in IPS: 1A00) -> gibts einen Crash bei Verwendung
    -> in Dez.3366 , also 0x0D26 ( in IPS 260D ) -> wird es ignoriert und weiterhin die Defaultadresse benutzt.

    Ich würde das gerne verstehen.

  9. #2209
    Die Variable ID steht zweimal im Code. Einmal direkt, wie bereits richtig erkannt, und einmal als Adressenoffset zum Variablen Array.
    Sprich: Ändere Offset 0xd4 in der ips Datei zu (VarID - 1) * 4, also beispielsweise dez. 256 bzw. hex 0001.

    Ungetestet, sollte aber so hinhauen.

    Geändert von elvissteinjr (05.03.2015 um 18:49 Uhr)

  10. #2210
    Ich versuchs mal. Danke dir :-)

    Edit: hat Funktioniert mit 3366 als neue Variable. Wenn ich versuche die 65 zu benutzen gibt es weiterhin Probleme. Kurios.

    Geändert von Corti (06.03.2015 um 08:27 Uhr)

  11. #2211
    Zitat Zitat von Corti Beitrag anzeigen
    Edit: hat Funktioniert mit 3366 als neue Variable. Wenn ich versuche die 65 zu benutzen gibt es weiterhin Probleme. Kurios.
    Richtige Byteorder? Auf x86 sind die Werte in little endian... und natürlich 32 bit Breite.
    Falls das auch nicht hilft, die 65 ist btw. 41 in hex, nicht 1A wie in deinem vorherigen Post. Also 41 00 00 00 bei 0xc9 in der ips Datei.

  12. #2212
    Ich möchte in meiner Textbox (RM2k3) im Text sehen wie weit ich schreiben kann bevor es "weggeschnitten" wird. Ich weiss nur, dass es da mal ein Programm zum Bearbeiten gab... worin ich dann Änderungen vornehmen kann... Forensuche ist ohne Ergebnis geblieben... wer kann mir helfen?

  13. #2213
    Zitat Zitat von Ben Beitrag anzeigen
    Ich möchte in meiner Textbox (RM2k3) im Text sehen wie weit ich schreiben kann bevor es "weggeschnitten" wird. Ich weiss nur, dass es da mal ein Programm zum Bearbeiten gab... worin ich dann Änderungen vornehmen kann... Forensuche ist ohne Ergebnis geblieben... wer kann mir helfen?
    Hab das erst letztes Mal irgendwo gepostet, da bin ich mal so frei, es ist immer noch bei meinen Anhängen dabei: msgbox.zip
    Wenn du eine individuelle TB hast, kannste dir halt einfach merken, wie viel Zeichen in die Zeile passen, die wird in dem Programm nämlich angezeigt
    Ich weiß garnicht wem du für dieses tolle Programm danken musst ^^; müsste fast mal nach dem Author sehen...

  14. #2214
    Zitat Zitat von Ben Beitrag anzeigen
    Ich möchte in meiner Textbox (RM2k3) im Text sehen wie weit ich schreiben kann bevor es "weggeschnitten" wird. Ich weiss nur, dass es da mal ein Programm zum Bearbeiten gab... worin ich dann Änderungen vornehmen kann... Forensuche ist ohne Ergebnis geblieben... wer kann mir helfen?
    In diesem Thread gibt es eine Anleitung, wie das Problem mit einem Resource Editor behoben werden kann. Meinst du das?

  15. #2215
    Gibts theoretisch eine Möglichkeit die EXP Kurven zu beeinflussen? Die vom 2k3 ist nämlich ziemlich kacke.

    Mal etwas genauer: Im 2k3 kann man nur einstellen, dass jedes Level X EXP mehr braucht. Z.B. 1000 -> 1500 -> 2000 -> 2500 -> ... also immer 500 mehr pro level. Oder 800 mehr. Oder 1000 mehr. Aber ich hätte gerne etwas, dass es kein fester sondern ein steigender Wert wäre. Also z.B. 1000 -> 1500 -> 2100 -> 2800 -> 3600 -> ... also 500, 600, 700, 800, etc. Oder eben nochmal anders, z.B. ne art exponentielle Kurve oder etwas ähnliches. Ginge sowas mit Dyn?

  16. #2216
    Primary ist ein Fixwert für den Ext-Wert Pro Level, der immer da ist, als Konstante.
    Secondary wird mit dem Level multipliziert.

    Wenn du also einen Anstieg a la 500, 600, 700 pro Level willst, dann P=400,S=100,T=0.

  17. #2217
    Hab mich vielleicht etwas schlecht ausgedrückt. Ich hab zur Zeit P = 250, S = 500, T = 250. Da brauch ich dann 1000, 1500, 2500, 4000, 6000... also immer 500 mehr als für das vorherige Level benötigt wurden. Es steigt halt so immer fest um diese 500 Punkte an. Aber es soll eben nicht um einen festen Wert ansteigen sondern mit jedem Level um mehr ansteigen. 500, 600, 700, 800... statt 500, 500, 500, 500. Und das geht mit dem 2k3 nicht.



    Statt dem was auf dem Bild steht sollten die Werte für die Level eher sein:

    1: 1000
    2: 1500 (+500)
    3: 2100 (+600)
    4: 2800 (+700)
    5: 3600 (+800)
    6: 4500 (+900)
    7: 5500 (+1000)
    etc.

    Edit:
    Hier nochmal das gleiche aus dem 2k. Zwar sind die Werte da maximiert, aber da sieht man, dass es eben nicht mit jedem Level um einen fixen Wert ansteigt, sondern mit jedem level immer mehr wird:



    Wäre es wie beim 2k3 würde es nach Level 2 so aussehen:

    1: 50
    2: 100 (+50)
    3: 150 (+50)
    4: 200 (+50)
    5: 250 (+50)
    6: 300 (+50)
    7: 350 (+50)

    Geändert von Sölf (12.03.2015 um 16:39 Uhr)

  18. #2218
    Achso~

  19. #2219
    Zitat Zitat von Corti Beitrag anzeigen
    Edit: hat Funktioniert mit [irgendwas] als neue Variable. Wenn ich versuche die [irgendwas] zu benutzen gibt es weiterhin Probleme. Kurios.
    Es gibt nur zwei/vier Stellen in der 2k3DirectItemEquipSkillMenu.ips die entsprechend geändert werden sollten:

    Var_3386 (Item 0; Equip):
    0xC9 = Var_ID; safety check, ob VarArray nicht bis zu dieser Var_ID initialisiert ist
    0xD4 = (Var_ID -1)*4

    Var_3387 (Skill):
    0x1B = Var_ID; safety check
    0x26 = (Var_ID -1)*4



    Zitat Zitat von Sölf Beitrag anzeigen
    also immer 500 mehr als für das vorherige Level benötigt wurden.
    Dass es mit 1000 anfängt irritiert irgendwie.

    Ansonsten wäre die simpelste Lösung einfach nur den Editor anzupassen:
    download DBX.ini
    P = 0
    S = 500
    T = 0


    Und wenn es nicht simpel sein soll, dann gibt es immernoch den Overkill:
    Zitat Zitat von Sölf Beitrag anzeigen
    Gibts theoretisch eine Möglichkeit die EXP Kurven zu beeinflussen?
    Wenn richtig viel Einfluss da sein soll ("mehr exponentieller", eigene EXP-Listen, Ändern der EXP-Kurven während des Spielens, etc.), dann wird das (nur) über ein entsprechendes Callback gehen können. Du kannst gerne irgendwo beantragen, dass dies auf irgendeine Liste gesetzt wird, um dann in einer späteren Version aufzutauchen.

    Du kannst auch einen Blick da rein werfen:
    download ExpBug-in

    Frag jemanden, der mit C++ versiert ist, falls die EXP-Kurven über ein paar Textzeilen in der DynRPG.ini konfiguriert werden sollen oder ganze EXP-Sheets für jeden Helden eingelesen / bearbeitet werden sollen. Jede x-beliebige Person sollte mit z.B. Code :: Blocks und etwas Mathematik daran rumschrauben können (oder Werte aus Variablen, zB. für's Skalieren von Schwierigkeitsgraden, in die Rechnung hineinnehmen können.)





    Sorry, ich kann gerade nicht mit dem Auslesen von Text / Zahlen aus irgendwelchen Textdateien oder verschlüsselten Dateien (damit nicht jeder Spieler daran rumpfuschen kann) dienen. Dafür reicht bei mir weder das Verständnis für C++ noch allgemein das Verständnis für's Programmieren.
    Für ein Pseudo-Callback reicht es aber aus irgendeinem Grund.

    Geändert von bugmenot (18.03.2015 um 17:18 Uhr)

  20. #2220
    Ich habe ein Problem. Die Wettereffekte sind unter den Pictures. Über den Pictures will ich sie aber auch nicht haben.

    Ich schätze mal an der Stelle nach Events/Chipset und vor den Pictures wird eine Funktion aufgerufen um die Wettereffekte zu zeichnen, sofern diese aktiviert sind. Ich würde diese Funktion gerne im Plugin zu einem von mir gewünschten Zeitpunkt aufrufen.

    Makeraufrufe werden in DynRPG so gemacht.
    Code:
    void Map::updateEvents() 
    {
    	asm volatile("call *%%esi" : "=a" (_eax) : "S" (0x4AB8B4), "a" (events.ptr) : "edx", "ecx", "cc", "memory");
    }
    asm [volatile] ( AssemblerTemplate
    : OutputOperands
    [ : InputOperands
    [ : Clobbers ] ])

    Der Call kriegt "esi" mit und bezieht sich damit auf Register "S", welches in den Inputs mit einer Adresse beschrieben wird.
    Als ersten Schritt müsste man also wissen, welche Adresse die Funktion zum Zeichnen der Wettereffekte hat und welche Parameter dafür notwendig sind.

Berechtigungen

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