Ergebnis 1 bis 20 von 22

Thema: RPG-Maker 2k3 8-stellige Zahlen oder Kommazahlen ?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    RPG-Maker 2k3 8-stellige Zahlen oder Kommazahlen ?

    Hey

    Ich bin gerade dabei mein eigenes Kampfsystem zu basteln und bin jetzt auf ein Problem bzw. an eine Grenze des Makers gestoßen. Ich muss für die Schadensberechnung mit ziemlich großen Zahlen arbeiten und der RPG-Maker 2k3 arbeitet maximal mit 7-stelligen Zahlen. Also werden die Zwischenwerte dann auf 9.999.999 "abgeschnitten" und das verfälscht das Endergebnis :/ Leider hilft es auch nichts, die Rechenoperationen einfach umzudrehen, da der Maker ja auch nicht mit Kommazahlen umgehen kann. Meine Frage ist jetzt, ob es möglich ist, mit Hilfe von irgendeinem Patch oder mit dem Resource Hacker den RPG-Maker 2k3 dazu zu bringen mit 8-stelligen Zahlen oder Kommazahlen zu hantieren ?

    Ich bräuchte das dringend für ein paar Berechnungen^^

    Danke schonmal für eure Antworten

    PS:
    Wehe es ist nichts hilfreiches dabei D: Dann gibt's keine Kekse.

  2. #2
    O.o warum so große Zahlen ?

  3. #3
    Verschieb das Komma, mach 257 statt 2,57~ für die Zwecke bei denen ich es bisher brauchte (Rechnungen, in denen Nachkommakürzen sich zu einem merkbaren, störenden Fehler aufsummiert ) taugte das.
    Ansonsten: DynRPG für die Berechnungen nehmen

  4. #4
    @Penetranz: Das ist nur für die Berechnung^^ Ich lass da ein paar Werte einfliessen, wie genau das aussieht könntest du dir angucken wenn ich was spielbares zusammenkrieg, da ich die Formel in den Kommentaren habe.

    @Corti: Erst einmal danke für deine schnelle Antwort. Auf's verschieben wäre ich auch gekommen...aber bei so Rechnungen wie 18/4096 (=0,00439453125 Windowstaschenrechner ftw ! ) bringt mir das auch nicht so viel. Ich werde es mal mit DynRPG versuchen^^ Ich hoffe das wird nicht allzu kompliziert.

  5. #5
    Zitat Zitat
    @Penetranz: Das ist nur für die Berechnung^^ Ich lass da ein paar Werte einfliessen, wie genau das aussieht könntest du dir angucken wenn ich was spielbares zusammenkrieg, da ich die Formel in den Kommentaren habe.
    Ja wär halt ganz interessant zu sehen wofür du das genau brauchst. Weil so ist es für mich ein bisschen schwer vorstellbar. Beschreib mal die Notwendigkeit dieser hohen Zahlen n bisschen genauer. Wie kommen die zustande? dann wird's auch leichter für uns da evtl. ne Lösung im Zusammenhang zu finden.

  6. #6
    Würde auch gerne wissen warum man den Wert 18 durch 4096 teilen sollte.
    Das sieht nicht nach einer Schadensformel aus.
    Ich brauchte mal die Nachkommastellen um ein Balken Hud vernünftig anzuzeigen. Da hatte man die Zahlen auch erst um 10 000 erweitert und anschliessend nach der Rechnung wieder
    durch 10 000 verkleinert. So gabs keine Rundungsfehler.

    Gruß Bex

  7. #7
    Also gut wenn du so darauf brennst es zu wissen^^

    Die Formel sieht wie folgt aus:

    BasisSchaden = Angriffskraft + [( Angriffskraft + Level) / 32] * [( Angriffskraft * Level) / 32]
    MaximalerSchaden = [(Power * (512 - Verteidigung) * BasisSchaden) / 8192]
    Schaden = MaximalerSchaden * Rnd(3841..4096) / 4096

    Wobei Angriffskraft der Stärkewert des Charakters + die Waffenstärke (bzw. ein Bonus, da es in meinem Spiel keine normalen Waffen gibt^^). Level ist das Level des angreifenden Charakters (sollte eigentlich klar sein^^).
    Power ist die grundlegende Stärke des Angriffs. Eigentlich wollte ich das permanent bei 16 belassen (Standardangriff), aber wegen den physischen Techniken habe ich es variabel gemacht. Verteidigung ist die Verteidigung des Gegners und der Basisschaden ist das was vorher berechnet wuirde. Das ist auch die Zeile wo sich dann das Problem ergibt. Denn so kommt man bei optimalen Verhältnissen (für den Spieler) auf 73.097.216 bevor man durch 8192 teilt.
    Der letztendliche Schaden ergibt sich dann aus dem maximalen Schaden (Zeile2) multipliziert mit einer Zufallszahl zwischen 3841 und 4096 geteilt durch 4096 (für die Varianz). Okay hier kommt es auch nochmal zu dem Problem, da man hier auf 36548608 kommen kann, bevor das ganze wieder geteilt wird. Nein die Formel ist NICHT von mir^^

    Ich denke aber ich werde das ganze jetzt mal mit dem DynRPG lösen...bzw. ich versuche es. Mal sehen ob meine kleinen Programmierkenntnisse dafür ausreichen^^

    Hm ich hab jetzt erstmal meine RPG_RT.exe mit dem DynRPG gepatcht, aber jetzt startet das Spiel, der Bildschirm bleibt schwarz und dann minimiert sich das Spiel wieder. Wenn man es wieder öffnet funktioniert es wieder, dennoch ist das ganze nicht grade schön. Ich nehme einfach mal an, das liegt daran dass es eine RPG_RT.exe war die bereits mit dem BetterAEP gepatcht war. Gibt es da eine Möglichkeit beides parallel zum Laufen zu bringen, ohne dass es zu diesem (oder anderen) Fehlern kommt ?


    Edit: 18/4096 würde man rechnen wenn man da versucht, die Rechenoperationen zu tauschen (letzte Zeile) bevor man es dann wieder mit einer Zufallszahl zw. 3841 und 4096 multipliziert. Deshalb sagte ich ja es bringt nichts, die einfach umzudrehen^^

    Edit2: Okay ich kriegs nicht hin ._.
    Kann mir vielleicht jemand dabei helfen ? Bzw. mir erklären wie man das macht ?

    Zitat Zitat von EasyEventExporter
    - SCRIPT -
    <> Comment: BasisSchaden = Angriffskraft + [( Angriffskraft + Level) / 32] * [( Angriffskraft * Level) / 32]
    : MaxSchaden = [(Power * (512 - Def) * BasisSchaden) / (16 * 512)]
    : Power = Stärke...16 = normal
    : Schaden = MaxSchaden * Rnd(3841..4096) / 4096
    <> Change Variable: [817] = 0
    <> Change Variable: [806-808] = 0
    <> Change Variable: [817] = V[803]
    <> Change Variable: [806] = V[803]
    <> Change Variable: [806] += V[802]
    <> Change Variable: [806] /= 32
    <> Change Variable: [807] = V[802]
    <> Change Variable: [807] *= V[803]
    <> Change Variable: [807] /= 32
    <> Change Variable: [806] *= V[807]
    <> Change Variable: [817] += V[806]
    <> Change Variable: [806-808] = 0
    <> Change Variable: [806] = 512
    <> Change Variable: [806] -= V[812]
    <> Change Variable: [817] *= V[805]
    <> Change Variable: [817] *= V[806]
    <> Change Variable: [817] /= 8192
    <> Change Variable: [817] *= Random [3841-4096]
    <> Change Variable: [817] /= 4096
    <> Show Message: Schaden: \c[2]\v[817]
    : Hilfswert1: \c[3]\v[806]
    : Hilfswert2: \c[4]\v[807]
    <> Call Event: Common Event #90
    Zitat Zitat von EasyEventExporter
    - SCRIPT -
    <> Comment: BasisMagieschaden = 6 * [Level +Zauberangriff]
    : MaxMagieSchaden = [(Power * (512 - Zauberabwehr) * BaseMagieschaden) / (16 * 512)]
    : Power = Stärke des Zaubers
    : Magieschaden = MaxMagieschaden * Rnd(3841..4096) / 4096
    <> Change Variable: [817] = 6
    <> Change Variable: [806] = V[804]
    <> Change Variable: [806] += V[802]
    <> Change Variable: [817] *= V[806]
    <> Change Variable: [807] = 512
    <> Change Variable: [807] -= V[813]
    <> Change Variable: [808] = 16
    <> Change Variable: [808] *= 512
    <> Change Variable: [817] *= V[807]
    <> Change Variable: [817] *= V[805]
    <> Change Variable: [817] /= V[808]
    <> Change Variable: [817] *= Random [3841-4096]
    <> Change Variable: [817] /= 4096
    <> Call Event: Common Event #90

    Also das ich dann quasi die Berechnung des Schadens auslager und von DynRPG berechnen lasse und nicht den Eventcode hier benutze, da das ja wie gesagt nicht geht, da der Maker das nicht hinkriegt mit 8-stelligen Zahlen zu arbeiten. Bräuchte dafür allerdings 2 Berechnungen, da die Formel für den magischen Schaden anders ist. Wäre wirklich nett wenn mir da jemand unter die Arme greifen kann und mir das ganze erklärt.

    Geändert von Quetschi (18.11.2012 um 20:17 Uhr)

  8. #8
    Oh Gott was denkst du dir für Schadensformeln aus
    Bei solchen werten wünsche ich dir viel Spass dein System entsprechend zu Balancen.
    Da muss man ja jedesmal nachrechnen wenn man einen Wert verändern will.^^
    Naja jedem das seine. Viel Spass damit.
    Gruß Bex

  9. #9
    Das Balancing sollte nicht so das Problem werden. Ich hab mir mit Pascal ein Programm für mich geschrieben, dass mir das ganze berechnet bzw. grob. Dann muss ich daran nur noch ein bisschen feilen und fertig. Auch wenn ich das Programm mal wieder ein bisschen überarbeiten könnte. Und weiß der Geier warum ich komm mit C++ iwie nicht klar :/

  10. #10
    Hey, Ich bin's nochmal....

    Irgendwie krieg ich das ganze mit DynRPG nicht hin :/

    Ich bin wie hier ( http://rpg-maker.cherrytree.at/dynrp...g_started.html ) vorgegangen und hab zunächst eine neue Dynamic Link Library erstellt und dann weiter alle Einstellungen vorgenommen (Sprich die Punkte 1-26 ausgeführt).

    Dann habe ich folgendes als Code geschrieben:

    #define AUTO_DLLMAIN
    #include <DynRPG/DynRPG.h>

    bool OnStartup(char *pluginName){
    *reinterpret_cast<unsigned char *>(0x4AD36F) = 0xEB;
    *reinterpret_cast<unsigned char *>(0x4AD399) = 0xEB;
    return true;
    }

    Ich habe mal im DynRPG-Thread ein bisschen gelesen und gesehen dass Cherry das hier gepostet hat:

    Zitat Zitat von Cherry Beitrag anzeigen
    Die Beschränkung die von "<> Change Variable" erzeugt wird, lässt sich hiermit aufheben (in onStartup verwenden).

    Code:
    *reinterpret_cast<unsigned char *>(0x4AD36F) = 0xEB;
    *reinterpret_cast<unsigned char *>(0x4AD399) = 0xEB;
    Also wenn ich nicht völlig falsch liege hebt das ja die Variablenbecshränkung auf, d.h. mein Makerprojekt müsste mit 8-stelligen Zahlen zurechtkommen.

    Jetzt hab ich noch eine Frage und ein Problem.

    Die Frage: bool OnStartup(char *pluginName) Kann bzw. muss das pluginName hier stehen bleiben oder muss ich das durch den Namen meines Plugins ersetzen ? In Cherry's "Getting Started" steht nämlich nicht ob, man da den Namen des eigenen Plugins einsetzen muss oder nicht oder ich hab es überlesen

    Das Problem ist folgendes: Wenn ich versuche das Ganze zum Laufen zu bringen, sollte ja eigentlich eine .dll Datei in meinem DynPlugins-Ordner vorzufinden sein. Diese wird aber nicht erstellt und Code:locks gibt mir nur die Meldung:

    "schaden_berechnen - Release" uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! Skipping...
    Nothing to be done.

    Ich habe allerdings alles so gemacht, wie es in dem "Getting Started" beschrieben ist, deshalb weiß ich nicht wo da der Fehler ist. Als ich das erste Mal diese Meldung bekommen habe habe ich Code:locks nach toolchain path gesucht, aber nichts gefunden. Also hab ich das alte Projekt komplett gelöscht und das ganze noch einmal Schritt für Schritt nach dem "Getting Started" gemacht, leider kam wieder die selbe Meldung. Also hab ich Code:locks nochmal deinstalliert und wieder neu installiert und bin das ganze noch einmal durchgegangen. Leider kommt die Fehlermeldung immer wieder. Weiß jemand woran das liegt und wie ich das behebe ?

  11. #11
    Du brauchst das CodeBlocks-Setup, das MinGW mitinstalliert (codeblocks-10.05mingw-setup.exe). Wenn du das andere Setup genommen hast, deinstalliere CodeBlocks und installiere es wieder mit dem richtigen Setup. Wenn nicht: Schau mal ob unter Settings -> Compiler and Debugger der GNU GCC Compiler eingestellt ist und überprüfe im selben Fenster unter Toolchain executables ob der korrekte Pfad eingestellt ist. Gegebenenfalls musst du auf Auto-detect klicken.

    Die Rückruffunktion heißt übrigens "onStartup" und nicht "OnStartup". Anderenfalls kann DynRPG sie nicht finden und aufrufen.

    "pluginName" ist nur der Bezeichner für den Funktionsparameter und ihn umzubenennen würde nichts bringen. Du musst da auch nichts einsetzen. DynRPG wird beim Aufruf der Rückruffunktion einen C-String an die Funktion übergeben, der den Namen des Plugins enthält und mit pluginName kannst du darauf zugreifen. Vielleicht solltest du dich zuerst etwas mit den Grundlagen von C/C++ beschäftigen. Anfangen kannst du z.B. mit http://www.cplusplus.com/doc/tutorial/.

    Geändert von Kyuu (19.11.2012 um 23:31 Uhr)

  12. #12
    Was mich hier wirklich interessieren würde: Auf Basis von was diese Schadensformel?

Berechtigungen

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