Charakterdaten verändern
ich versuche gerade die Daten meines Charakters zu ändern. MaxHP, INT, etc. sind auch kein Problem. Nur z. B. ATK lässt sich nicht abändern. Ich habe mir auch schon das Tutorial von http://www.rpg-studio.de/scientia/Ruby/R…orials/Rubykurs angesehn.
Irgendwie bekomm ich nur ein Windowsfester hin. Objektorientierte Sprachen liegen mir einfach nicht. Naja ausser ein bisschen Python.
Zurück zum Thema:
Den Werten habe ich über Common Events Variablen zugeordnet. Diese Variablen ändere ich ab und addier diese dann zu den echten Werten des Charakters. Blöd ist hier das man keine Prozente angeben kann.
Mit Modulo klappt das auch nicht wie gewünscht also hab ich einfach Brüche genommen (z. B. 100 STR / 5 = 25%).
Über Ruby könnte man dann auch diese Prozente richtig berechnen.
Zudem hoff' ich, dass man das Ganze in Echtzeit laufen lassen kann oder zumindest immer dann, wenn ein Levelup erfolgt oder man ein Item benutzt etc.
Ich hab mir irgendwas in der Richtung vorgestellt:
|
|
Quellcode |
1 2 3 4 5 6 |
#!/bin/bash
atk=${$data_actors[7]} # es steht zumindest an siebenter Stelle unter 'Control Variables - Actor' (=
add_atk=${gawk 'BEGIN {OMFT="%.0f"};print (($atk/100)*5)'} # nebenbei noch ordentlich runden
(( $atk + $add_atk )) # dann zur Variable addiert
data_actors[7]=$atk # und den neuen Wert in das Array eingefügt
# Eine Schleife 'würds voll reissen' ^^ |
So oder so ähnlich. Schon lang nichtmehr 'gebasht' =P.
Ich hoff' auf hilfe.
Erstmal zur Mathematik:
100 / 5 = 20
Nun zu deiner Frage:
Wie du aus den standard Scripten erkennen kannst (siehe die Klasse Game_Actor) wird die Grund Angriffskraft von dem ATK Wert der Waffe übernommen (Z.267 ff), da wird noch gar nichts gerechnet.
In der Superklasse Game_Battler findest du die verrechnung mit eventuell anfälligen Statuseffekten und die Rückgabe eines Integer Werts als Angriffskraft. Wie damit verrechnet wird in Kämpfen kannst du in der Methode "attack_effect" auch in der Game_Battler Klasse nachlesen.
Der Angriffswert hängt also nur von der Waffe ab. Deine einzige Alternative ist den Schaden zu erhöhen, wofür du die Stärke des Helden erhöhen musst.
Du kannst in der Database dafür die Kurve ändern, um den Wert beim Levelaufstieg zu erhöhen oder zu senken - oder auch per Eventcommand "ChangeParameters" sowie einzelnen Statuseffekten.
Man kann natürlich mit Scripterweiterungen auch die ATK einfach ändern, aber damit arbeitest du gegen das Grundsystem und sowas macht nicht immer Sinn.
Zu Ruby, solltest du nochmal =Kai=s Kurs auf Scientia durcharbeiten. Zusätzlich kannst du auch gerne Fragen stellen falls du etwas nicht verstehst, schau doch mal in der ShoutBox vorbei =)

Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs

Musik von Shabraxxx für euch
Guide zu den Audioformaten

Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.Also muss ich irgendwie den ATK Bonus einer Klasse auf die Waffe übertragen.
Ich mein ein "Schwertmeister" hat ja nicht mehr Kraft sondern kann besser mit einem Schwert umgehen.
Besser so als unzählige Waffen zu erstellen.
Mit Ruby komm ich jetzt schon gut zurecht. Zumindest was das editieren von Skripten angeht.
Momentan versuch ich den Systemskin beim Aufruf eines Untermenues eines Skriptes zu ändern.
Mein Skin ist semitransparent was die lesbarkeit beeinträchtigt.
Im Moment habe ich das:
|
|
Ruby Quellcode |
1 2 3 4 5 |
def test(0, 0, 200, 200) super() @windowskin_name = 'skin_2' self.windowskin = RPG::Cache.windowskin(@windowskin_name) end |
Es will nur nicht wie ich gern möchte ... Naja wird schon werden (=
Nebenbei meinte ich auch 20%! Oder /4 ... wie mans sieht ^^
Nachtrag:
Arbeitet Ruby eigendlich beim Runden von Dezimalzahlen korrekt? Also "ab fünf aufwärts runden" oder scheidet es einfach alles ab dem Komma ab? Wäre dann ein
|
|
Ruby Quellcode |
1 |
16,28.to_s |
die Lösung? Oder reicht es wenn ich
|
|
Ruby Quellcode |
1 |
dezil = "Variable_1 = #{$game_variables[1]}" |
vwerwende? Danke für die Geduld
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
|
|
Ruby Quellcode |
1 |
dezil = "Variable_1 = #{$game_variables[1]}" |
hat jeder Code von dir mindestens einen Syntaxfehler.
Deshalb verstehe ich auch überhaupt nicht, was deine Fragen sind. Du willst irgendwas bei einem Window in einem Menü ändern.
Und dafür erstellst du eine neue Methode test, die versucht, die nicht vorhande Super-Methode test aufzurufen. ?
16.28.to_s hat nichts mit runden oder so zu tun, das wandelt die Zahl in einen String um.
Zitat
Arbeitet Ruby eigendlich beim Runden von Dezimalzahlen korrekt? Also "ab fünf aufwärts runden" oder scheidet es einfach alles ab dem Komma ab?
Für die Umwandlung von Floats (Kommazahlen) und Integers (ganze Zahlen), gibt es ein paar Methoden:
|
|
Ruby Quellcode |
1 2 3 4 5 |
zahl = 16.28 p zahl.to_i # 16, alles hinter dem Komma fällt weg. p zahl.floor # 16, dasselbe wie .to_i p zahl.ceil # 17, wird immer aufgerundet p zahl.round # 16, ganz normales Runden |
Ich kann zwar auch vor dem Aufruf des Skriptes den Skin ändern, allerdings hätt ich das auch gern in mein CMS integriert.
Ich hab das Tutorial durchgelesen. Seit Freitagabend sitz ich nun schon vor Ruby.
Teilweise find ich es einfacher als Python aber irgendwie auch unlogischer. Z. B., dass man Befehle einfach aneinander reiht.
Also 'Befehl Befehl Befehl' und nicht 'Befehl; Befehl; ...'.
Ich möchte den Skin ändern, damit man das Fenster, welches bei einer Auswahl erscheint auch lesen kann.
Sonst steht die Schrift des neuen Fensters auf der alten. Ich möchte es auch nicht einfach verschwinden lassen.
Ich kann das nicht so einfach erklären. Das ist das Skript: SkillBook
Ein Schubser in die richtige Richtung wäre ganz hilfreich
Die Frage ob Ruby rundet habe ich gestellt, weil ich bei anderen Skriptsprachen schon erlebt hab', dass alles hinter dem Komma ignoriert wird. Ich würd das aber gern mit Kommastellen berechnen damit das Ergebniss nicht verfälscht wird.
Als ich mir testweise ein Fenster erstellt hab in dem ich meinen Char genauer ansehn konnte, wurden die Werte als 'ABx0123' dargestellt. Also musste ich sie in einen String umwandeln. Darum wollte ich wissen, ob dabei schon gerundet wird.
Es ist also eher eine ästetische Frage ob da nun ein Komma steht oder nicht.
Keine Panik, irgendwann machts klick bei mir ^^
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Naja, das ist einfach der Unterschied, dass bei anderen Sprachen eben das Semikolon als "Keyword" für einen neuen Befehl gilt und bei Ruby ist es ein einfacher Zeilenumbruch.
Zitat
Teilweise find ich es einfacher als Python aber irgendwie auch unlogischer. Z. B., dass man Befehle einfach aneinander reiht.
Also 'Befehl Befehl Befehl' und nicht 'Befehl; Befehl; ...'.
Aber du kannst ja auch Semikola in Ruby setzen, auch wenn das kein schöner Stil ist.
Ich verstehs immer noch nicht. Zeig doch mal einen Screenshot von dem Problem.
Zitat
Ich möchte den Skin ändern, damit man das Fenster, welches bei einer Auswahl erscheint auch lesen kann.
Sonst steht die Schrift des neuen Fensters auf der alten. Ich möchte es auch nicht einfach verschwinden lassen.
Ich kann das nicht so einfach erklären. Das ist das Skript: SkillBook
Ein Schubser in die richtige Richtung wäre ganz hilfreich ;)
Ja, das hat mit den genannten Typen Integer und Float zu tun. Das ist bei fast jeder Sprache so.
Zitat
Die Frage ob Ruby rundet habe ich gestellt, weil ich bei anderen Skriptsprachen schon erlebt hab', dass alles hinter dem Komma ignoriert wird. Ich würd das aber gern mit Kommastellen berechnen damit das Ergebniss nicht verfälscht wird.
Da ein Integer keine Zahlen hinter dem Komma verwenden/beinhalten kann, werden die eben einfach gelöscht, wenn man ein Float in ein Integer umwandelt.
Du meinst sowas wie? "#< Game_Actor 0x1337abc ... "? Oder was für Werte meinst du?
Zitat
Als ich mir testweise ein Fenster erstellt hab in dem ich meinen Char genauer ansehn konnte, wurden die Werte als 'ABx0123' dargestellt. Also musste ich sie in einen String umwandeln.
Nein, es ist einfach ein Syntaxfehler. Wie bei den meisten anderen Sprachen hält sich Ruby hier an die amerikanische Schreibweise, und die ist nunmal mit Punkt und nicht Komma.
Zitat
Es ist also eher eine ästetische Frage ob da nun ein Komma steht oder nicht.
Zitat
Ich verstehs immer noch nicht. Zeig doch mal einen Screenshot von dem Problem.
So sieht das dann aus.

Wenn man noch mehr Skills reinpackt, kann man garnichtsmehr erkennen.
Zitat
Du meinst sowas wie? "#< Game_Actor 0x1337abc ... "? Oder was für Werte meinst du?
Das hängt mit dem Tutorial vom rpg-Studio zusammen.
Dort wurden Level für die Handhabung von Waffentypen in Variablen gespeichert.
In dem Fenster, welches man dort erstellt, wurden diese dann wieder ausgegeben. Ohne das '.to_s' kam eben dieses Hexzeugs raus. Meine Überlegung war, dass man ja Variablen auch teilen kann und man somit irgendwann ein Komma(Punkt) bekommt. Da ich einem Skill einen Prozentualen Bonus auf diverse Werte des Charakters geben will wird das sehr oft passieren.
Nun muss ich aber, um diese Zahl anzeigen zu können, diese in einen String wandeln.
Dabei wird das Komma(der Punkt) nicht angezeigt. Also einfach abgetrennt oder die Zahl dann entsprechend Gerundet?
Zitat
Nein, es ist einfach ein Syntaxfehler. Wie bei den meisten anderen Sprachen hält sich Ruby hier an die amerikanische Schreibweise, und die ist nunmal mit Punkt und nicht Komma.
Mir ist klar das das Komma ein Punkt ist.
Andererseits ist ein Punkt ein Punkt und bei einer Dezimalzahl ist das Komma ein Punkt welcher ein Komma darstellt was die Eigenschaft des Kommas nicht verändert und somit ein Komma bleibt welches durch einen Punkt dargestellt wird ... ^^
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Aber was hat das mit dem ändern des Windowskins zu tun? Dadurch kann man die Schrift doch auch nicht viel besser lesen Oo
Zitat
Wenn man noch mehr Skills reinpackt, kann man garnichtsmehr erkennen.
Hab ich doch schon gesagt, kommt auf die Art an, wie du umwandelst.
Zitat
Also einfach abgetrennt oder die Zahl dann entsprechend Gerundet?
Bei 16.28.to_s wird nichts gerundet oder verändert, da kommt einfach nur "16.28" raus.
Das hat dann trotzdem nichts mit Ästhetik zu tun. Du kannst dir vielleicht im Kopf denken, dass der Punkt auch ein Komma sein kann, für Ruby sind die beiden Zeichen aber was ganz anderes.
Zitat
Andererseits ist ein Punkt ein Punkt und bei einer Dezimalzahl ist das Komma ein Punkt welcher ein Komma darstellt was die Eigenschaft des Kommas nicht verändert und somit ein Komma bleibt welches durch einen Punkt dargestellt wird ... ^^
Ich finde, dass es unmöglich aussieht wenn da z. B. 'Stärke 10' und dann 'Schadensbonus Schwert 16.28' steht. Die Dezimalzahl würd ich zum berechnen behalten wollen. Nur wenn sie angezeigt wird soll dieses/der Komma/Punkt weg.
Wie auch immer. Wichtig ist dieser Skinwechsel. Das Zahlendingsbums bekomm ich schon so hin wies soll, hoffe ich mal.
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Du willst also die Transparenz ändern? Das Windowskin ist was ganz anderes Oo
Zitat
Also nochmal. Mein Windowskin ist halbtransparent. Dadurch scheint die Schrift des darunterliegenden Fensters durch. Damit man die Schrift aber dennoch gut lesen kann, muss also der Skin gewechselt werden.
Dafür brauchst du window.back_opacity = 255.
Der Skin ist halbtransparent weil ich ihn so gezeichnet habe. Das Skript ändert an ihm garnichts. Ich will den Skin wechseln zu einem der nicht halbtransparent ist. Das ist kein opacity im Skript der ihn durchscheinen lässt sondern die Transparenz in Skin_1.png.
Darum will ich ihn zu Skin_2.png wechseln welches keine transparenten Bereiche hat.
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Achso. Auch wenn ich nicht ganz den Sinn verstehe, ein Windowskin halbtransparent zu zeichnen, das lässt sich doch genauso gut, nur dynamische mit den opacity-Funktionen machen Oo
Zitat
Nnoooiiiinnn! ^^
Der Skin ist halbtransparent weil ich ihn so gezeichnet habe. Das Skript ändert an ihm garnichts. Ich will den Skin wechseln zu einem der nicht halbtransparent ist. Das ist kein opacity im Skript der ihn durchscheinen lässt sondern die Transparenz in Skin_1.png.
Darum will ich ihn zu Skin_2.png wechseln welches keine transparenten Bereiche hat.
Das ist leider nicht ganz so einfach (immer noch einfach, aber es könnte einfacher sein :), weil Enterbrain da wieder mal Müll gecodet hat.
Du musst den Windows eine update-Methode geben:
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 |
class Window_SkillBook_Info < Window_Selectable # die anderen Methoden def update super() @windowskin_name = 'skin2' self.windowskin = RPG::Cache.windowskin(@windowskin_name) end end |
So zum Beispiel.
Nächstes Problem ...
Ich möchte diesen Skin haben damit die Nachrichtenfenster und sowas halbtransparent sind.
Bei allen anderen Skripten und Menus sieht das ganz gut aus. Nur eben da nicht.
Bis zum nächsten Problem (=
Edit:
Das Funktioniert soweit ganz gut, aber:
Wenn ich deinen Code benutze, dann ändert er den Skin Systemweit. Und zwar schon bei Spielstart.
Das müsste irgendwie hier rein:
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
def update # ウィンドウを更新 #@help_window.update @main_window.update @kind_window.update @info_window.update if @info_window.active update_info return end # メインウィンドウãŒアクティブãÂ®å ´åˆ: update_target を呼ã¶ if @main_window.active p "blabla" # hier rein update_main return end # 種類ウィンドウãŒアクティブãÂ®å ´åˆ: update_kind を呼ã¶ if @kind_window.active update_kind return end end |
Da mein Japanisch ganz mies ist, vermute ich einfach mal das hier die richtige Stelle ist. Zumal beim Aufruf des Untermenus dieses OK-Fenster angezeigt wird.
Ich hoffe ich fange nicht an zu nerven. (=
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »yokmp« (9. August 2010, 01:39)
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Du könntest aber auch unter diesen Zeilen
|
|
Ruby Quellcode |
1 2 3 |
@main_window.update @kind_window.update @info_window.update |
das Skin ändern.
|
|
Ruby Quellcode |
1 2 3 4 |
@main_window.update @kind_window.update @info_window.update @info_window.windowskin = @help_window.windowskin = RPG::Cache.windowskin('skin2') |
Ich hab es noch erweitert, damit das kleine Auswahlfenster auch besser zu sehen ist.
|
|
Ruby Quellcode |
1 2 3 4 5 |
@main_window.update @kind_window.update @kind_window.windowskin = @help_window.windowskin = RPG::Cache.windowskin('skin2') @info_window.update @info_window.windowskin = @help_window.windowskin = RPG::Cache.windowskin('skin2') |
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
|
|
Ruby Quellcode |
1 |
@kind_window.windowskin = @help_window.windowskin = RPG::Cache.windowskin('skin2') |
ist dasselbe wie:
Heißt, du hast jetzt eigentlich geschrieben:
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 |
@main_window.update @kind_window.update @kind_window.windowskin = RPG::Cache.windowskin('skin2') @help_window.windowskin = RPG::Cache.windowskin('skin2') @info_window.update @info_window.windowskin = RPG::Cache.windowskin('skin2') @help_window.windowskin = RPG::Cache.windowskin('skin2') |
Siehst du die Unschönheit? :)
Ähnliche Themen
-
Entwürfe und Entwicklung »-
[Card Duel] Master of the Chaos Cards
(5. Oktober 2008, 21:31)
-
Events & Technik »-
Skripte an- bzw. ausschalten
(28. Juli 2010, 17:10)
-
Skript-Anfragen »-
Chuckys HUD-Script
(24. Juli 2010, 17:36)
-
Ältere Suchanfragen »-
Andere Volleyball
(20. Juli 2010, 19:39)
-
Events & Technik »-
Zwei Probleme (Event fliegt über Höhlenrand und !Thunderbolts Zeitscript!)
(20. Juli 2010, 16:08)

