Hallo zusammen,
ich stelle hier mal mein erstes, hoffentlich halbwegs nützliches, Skript rein. Es lässt einen mit Variablen im Dezimalbereich rechnen und rundet mathematisch auf ganze Zahlen. Ich find's praktisch, da ich schon länger nach Möglichkeiten gesucht hab mit Variablen ordentlich rechnen zu können.
Für Kritik, Verbesserungsvorschläge und Anmerkungen bin ich immer zu haben. Viel Spaß damit.
Code
- ################################################################################
- # Rundungssystem V 1.1 // Autor: Mr. Fu // Stand: 14.02.2018 #
- # #
- # Das Skript darf frei genutzt werden, wenn Credits gegeben werden. #
- # Kontakt: Mr. Fu auf www.rpgmaker-mv.de #
- # #
- # Dieses Skript dient zur Rundung von Variablen auf ganze Zahlen. Dazu werden #
- # folgende Scriptcalls genutzt: #
- # #
- # $runden.dezimal // Diesen Befehl vor die Berechnung der Variablen im #
- # Spiel setzen. Achte darauf, dass alle Variablen, #
- # welche in der jeweiligen Berechnung genutzt werden,#
- # ab Zeile 46 aufgeführt werden. Ansonsten kann #
- # systemseitig nicht gerundet werden und es wird ein #
- # Fehler ausgeworfen. #
- # #
- # $runden.start // Diesen Befehl ausführen sobald die nötigen Berech- #
- # nungen durchgeführt wurden. Variablen mit denen #
- # nicht gerechnet wurde werden nicht verändert. #
- # Dieser Befehl wirft den oben erwähnten Fehler aus, #
- # falls die Bedingung zutrifft. #
- # #
- # $runden.nicht_dezimal // Dieser Befehl wird automatisch nach '$runden.start'#
- # ausgeführt. Er macht aus den Dezimalzahlen wieder #
- # ganze Zahlen. Wenn nach der Rundung mit den Dezi- #
- # malzahlen weitergerechnet werden soll muss #
- # '$runden.dezimal' ausgeführt werden. Wenn nicht #
- # gerundet werden soll, dann '$runden.start' nicht #
- # ausführen und gleich '$runden.nicht_dezimal' aus- #
- # führen. Allerdings werden dann die Nachkommastellen#
- # einfach gestrichen. #
- ################################################################################
- class Runden
- def initialize
- # In die eckigen Klammern die erforderlichen Variablennummern rein schreiben
- # und alle außer die letzte mit einem Kommata trennen. Bsp: [1, 2, 3, 40, 43]
- # Erforderlich sind alle Variablen die im Laufe des Spiels gerundet werden
- # sollen und alle Variablen welche die zu rundenden Variablen nach dem
- # Scirptcall $runden.dezimal verändern.
- @variablen = [10, 13, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 33, 34, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74]
- @alle_variablen = false # Wenn alle Variablen im Spiel aufgenommen werden
- # sollen dann "true" eintragen, sonst "false"
- ################################################################################
- ####### Ab hier nichts mehr verändern!!! #######################################
- ################################################################################
- end
- def dezimal
- if @alle_variablen
- @anzahl = 5000
- a = 1
- while a <= @anzahl
- $game_variables[a] = $game_variables[a].to_f
- a += 1
- end
- else
- a = 0
- @anzahl = @variablen.size - 1
- while a <= @anzahl
- $game_variables[@variablen[a]] = $game_variables[@variablen[a]].to_f
- a += 1
- end
- end
- end
- def runden(variable)
- rundungswert = $game_variables[variable].to_s
- nachkommawert = 0
- nachkommastelle = nil
- while nachkommastelle != "."
- nachkommawert -= 1
- nachkommastelle = rundungswert[nachkommawert]
- end
- nachkommawert += 1
- nachkommastelle = rundungswert[nachkommawert].to_i
- if nachkommastelle >= 5
- $game_variables[variable] += 1
- end
- end
- def start
- if @alle_variablen
- a = 1
- while a <= @anzahl
- if $game_variables[a].is_a? Fixnum
- msgbox "Die Variable mit der ID #{a} wurde nach dem Befehl '$runden.dezimal' mit einer anderen Variablen, die keine Dezimalzahl ist, verrechnet. Berechnungen prüfen und die entsprechende Variable in das Skript einfügen."
- else
- runden(a)
- end
- a += 1
- end
- else
- a = 0
- while a <= @anzahl
- if $game_variables[@variablen[a]].is_a? Fixnum
- msgbox "Die Variable mit der ID #{@variablen[a]} wurde nach dem Befehl '$runden.dezimal' mit einer anderen Variablen, die keine Dezimalzahl ist, verrechnet. Berechnungen prüfen und die entsprechende Variable in das Skript einfügen."
- else
- runden(@variablen[a])
- end
- a += 1
- end
- end
- $runden.nicht_dezimal
- end
- def nicht_dezimal
- if @alle_variablen
- a = 1
- while a <= @anzahl
- $game_variables[a] = $game_variables[a].to_i
- a += 1
- end
- else
- a = 0
- while a <= @anzahl
- $game_variables[@variablen[a]] = $game_variables[@variablen[a]].to_i
- a += 1
- end
- end
- end
- end
- module DataManager
- class << self
- alias runden_cgo create_game_objects
- end
- def self.create_game_objects
- runden_cgo
- $runden = Runden.new
- end
- end