O.o warum so große Zahlen ?
O.o warum so große Zahlen ?
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
--CortiWins GitHub DynRPG < Charguide < [2k3] Zahlen und Werte < [2k3] Kurven als Wertetemplates < [2k3] DynRPG Werkstatt
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ஜ۩۞۩ஜ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Hello from the otter side
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ஜ۩۞۩ஜ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
@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.
--YetAnotherDungeonCrawler Makern
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.Zitat
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
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 von EasyEventExporter
Zitat von EasyEventExporter
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.
--YetAnotherDungeonCrawler Makern
Geändert von Quetschi (18.11.2012 um 20:17 Uhr)
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
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 :/
--YetAnotherDungeonCrawler Makern
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:
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 ?
--YetAnotherDungeonCrawler Makern
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)
Was mich hier wirklich interessieren würde: Auf Basis von was diese Schadensformel?
--CortiWins GitHub DynRPG < Charguide < [2k3] Zahlen und Werte < [2k3] Kurven als Wertetemplates < [2k3] DynRPG Werkstatt
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ஜ۩۞۩ஜ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Hello from the otter side
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ஜ۩۞۩ஜ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
@ Kyuu:
Erst einmal dankeschön. Dank dem Auto-Detect funktioniert das Ganze jetzt. Alle anderen Einstellungen waren korrekt, da ich es ja 1:1 nach Cherry's 26 Punkten durchgegangen bin. Keine Ahnung warum dann da etwas falsch war, zumal Cherry das nicht erwähnt.
Okay, ich wusste nicht dass die Groß-/Kleinschreibung hier so einen Unterschied macht. Ich programmiere sonst mit Pascal unter Lazarus und da ist es egal ob ich z.B. hans : integer; oder hans : InTEgeR; schreibe. (Zumindest bei dem was ich bis jetzt gemacht habe, hab' aber auch nur ein bisschen mehr als Schulkentnisse^^)
Hm...das Tutorial werde ich mir noch angucken und dann eventuell noch das ein oder andere für DynRPG schreiben.
@Corti:
Ich habe ja geschrieben, dass diese Formel NICHT von mir ist. Das ist die Schadensformel von Final Fantasy 7 (Siehe hier: http://finalfantasy.wikia.com/wiki/A...al_Fantasy_VII ). Ich hab die Formel genommen, weil ich eben nicht dieses stumpfe Schaden = Angriff-Verteidigung oder Schaden = Angriff x2 - Verteidigung und If Schaden < 0 then Schaden = 0 haben wollte.
Dann hab ich zu erst versucht mir etwas eigenes zu Überlegen, war aber nie zufrieden damit. Also habe ich begonnen mal ein bisschen im Internet nachzugucken, wie es andere Spiele und eben auch kommerzielle Spiele gemacht haben. (Ja ich geb es zu aus Faulheit, weil es eben einfacher ist als sich eine wirklich gute Formel auszudenken) Und da Final Fantasy 7 so ziemlich mein Lieblingsrollenspiel ist und die Formel so schien, als liesse sie sich leicht anwenden, habe ich sie eben übernommen.
Das heißt dann auch, das die Statuswerte bei mir wie in Final Fantasy auf 255 begrenzt sind. Das ist allerdings auch mehr als genug. Ich finde man muss sich nicht da dran aufgeilen, dass man einen Angriffswert von 999 hat. Das Balancing werde ich auch noch hinbekommen müssen, aber ich habe mir bereits ein kleines Programm geschrieben, dass mir dabei hilft und die Statuswerte meiner ersten 3 Charaktere sind bis jetzt auch darauf ausgelegt und werden auch nicht zu stark ansteigen (so hat der Hauptheld z.B. nur einen Stärkezuwachs von 0,8 per Level)
Das ist so die "Geschichte" dahinter^^
--YetAnotherDungeonCrawler Makern
Aber würd's dir schwer fallen eine eigene Schadensformel analog zu der von FF7 zu entwickeln, die mit niedrigeren Werten rechnet? Ich geh einfach mal davon aus, dass du die FF7-Formeln schon verstanden haben wirst, da es sonst am Ende mit dem Balancing 'nen ziemlichen Hick-Hack geben könnte.