Ausrüstung, die Werte prozentual erhöht
Hallo zusammen,
ich suche ein kleines Skript, das die Attributs-, LP- und SP-Boni oder -Mali bestimmter Ausrüstungsgegenstände und Waffen prozentual zum Standardwert des Charakters wirken lässt statt als festen Wert.
Beispiel: Ein Schwert erhöht das Attribut "Geschicklichkeit" des Trägers um 15 und die SP um 25.
Mit dem Skript könnte man einstellen, dass die Geschicklichkeit nicht um 15 Punkte, sondern um 15% des Standardwertes des Charakters und die SP nicht um 25 Punkte, sondern um 25% erhöht werden.
Ich hoffe, jemand kann mir da helfen
.
ich suche ein kleines Skript, das die Attributs-, LP- und SP-Boni oder -Mali bestimmter Ausrüstungsgegenstände und Waffen prozentual zum Standardwert des Charakters wirken lässt statt als festen Wert.
Beispiel: Ein Schwert erhöht das Attribut "Geschicklichkeit" des Trägers um 15 und die SP um 25.
Mit dem Skript könnte man einstellen, dass die Geschicklichkeit nicht um 15 Punkte, sondern um 15% des Standardwertes des Charakters und die SP nicht um 25 Punkte, sondern um 25% erhöht werden.
Ich hoffe, jemand kann mir da helfen
. Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Lycosa« (19. Mai 2010, 20:16)
In Game_Actor finden sich in den Zeilen 199-263 die Berechnungen der Grundwerte der Charaktere...
die müsstest du nur etwas beeinflussen, etwa so:
bin noch nicht dazu gekommen das auch zu testen, aber müsste eig funktionieren...
mfG
Irrlicht
die müsstest du nur etwas beeinflussen, etwa so:
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#-------------------------------------------------------------------------- # * Get Basic Strength #-------------------------------------------------------------------------- def base_str n = $data_actors[@actor_id].parameters[2, @level] weapon = $data_weapons[@weapon_id] armor1 = $data_armors[@armor1_id] armor2 = $data_armors[@armor2_id] armor3 = $data_armors[@armor3_id] armor4 = $data_armors[@armor4_id] wp = weapon != nil ? weapon.str_plus : 0 #EINGEFÜGT wp += armor1 != nil ? armor1.str_plus : 0 #EINGEFÜGT wp += armor2 != nil ? armor2.str_plus : 0 #EINGEFÜGT wp += armor3 != nil ? armor3.str_plus : 0 #EINGEFÜGT wp += armor4 != nil ? armor4.str_plus : 0 #EINGEFÜGT return [[(n * (100 + wp) / 100), 1].max, 999].min #EINGEFÜGT end |
bin noch nicht dazu gekommen das auch zu testen, aber müsste eig funktionieren...
mfG
Irrlicht
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Irrlicht« (20. Mai 2010, 00:20)
Mit Rüstungen geht das eigentlich auch ohne Skript. Bei Rüstungen kannst du nämlich einen Autostate einstellen (eine Statusveränderung die ein Actor automatisch bekommt wenn er das Teil ausrüstet). Jetzt nur noch einen State erstellen der die gewünschten Attributsveränderungne hat und die Priority auf 0 stellen (damit der Status im Menü und im Kampf nicht angezeigt wird). Bei Waffen gibt es diese Einstellung leider nicht. Aber ich glaube es wäre auch hier leichter per Skript Waffen ein Autostate zu geben.
Stimmt, Auto-States wär eig. die einfachste Möglichkeit...
Allerdings weiß ich gerade nicht ob sich 2 gleiche Statuseffekte gegenseitig ergänzen und vertrau einfach mal darauf.
Hab mich mal daran versucht den Auto-State zu erweitern, damit er auch auf Waffen anwendbar ist:
Für Waffen, die ein Auto-State zugewiesen haben sollen, einfach ab Zeile 17 anstatt der testweise noch vorgegebenen ergänzen:
@weapon_auto_state[ID der Waffe] = ID des Statuseffekts
Hoffe mal hab keine Bugs o.Ä. übersehen...
mfG
Irrlicht
ED: Offensichtlich ergänzen sich die Effekte, allerdings verstärken sie sich auch gegenseitig...
2 Effekte mit je 150% Stärke ergeben demnach 225% der ursprünglichen...
Allerdings weiß ich gerade nicht ob sich 2 gleiche Statuseffekte gegenseitig ergänzen und vertrau einfach mal darauf.
Hab mich mal daran versucht den Auto-State zu erweitern, damit er auch auf Waffen anwendbar ist:
Für Waffen, die ein Auto-State zugewiesen haben sollen, einfach ab Zeile 17 anstatt der testweise noch vorgegebenen ergänzen:
@weapon_auto_state[ID der Waffe] = ID des Statuseffekts
Hoffe mal hab keine Bugs o.Ä. übersehen...
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
#------------------------------------------------------------------------------ # Ergänzt Waffen um die Möglichkeit, Autostates zu erzeugen. # # Die Methoden "Update_Auto_State" und "Change_Equipment" wurden zu diesem # Zweck überschrieben. # # Welche Waffen welchen Autostate erzeugen wird ab Zeile 17 festgelegt #------------------------------------------------------------------------------ class Game_Actor < Game_Battler alias :original_setup :setup def setup(actor_id) original_setup(actor_id) @weapon_auto_state = Array.new($data_weapons.size) # Insert Weapon Auto States: @weapon_auto_state[1..5] = [2, 3, 3, 1, 4] @weapon_auto_state[7..10] = [1, 1, 1, 1] @weapon_auto_state[16] = 8 #----------------------------------------------- update_auto_state(nil, $data_weapons[@weapon_id]) end #-------------------------------------------------------------------------- # * Update Auto State # old_armor : unequipped armor # new_armor : equipped armor #-------------------------------------------------------------------------- def update_auto_state(old_equip, new_equip) if (new_equip != nil and new_equip.is_a?(RPG::Weapon)) or (old_equip != nil and old_equip.is_a?(RPG::Weapon)) if old_equip != nil and @weapon_auto_state[old_equip.id] != nil and @weapon_auto_state[old_equip.id] != 0 remove_state(@weapon_auto_state[old_equip.id], true) end if new_equip != nil and @weapon_auto_state[new_equip.id] != nil and @weapon_auto_state[new_equip.id] != 0 add_state(@weapon_auto_state[new_equip.id], true) end else # Forcefully remove unequipped armor's auto state if old_equip != nil and old_equip.auto_state_id != 0 remove_state(old_equip.auto_state_id, true) end # Forcefully add unequipped armor's auto state if new_equip != nil and new_equip.auto_state_id != 0 add_state(new_equip.auto_state_id, true) end end end #-------------------------------------------------------------------------- # * Change Equipment # equip_type : type of equipment # id : weapon or armor ID (If 0, remove equipment) #-------------------------------------------------------------------------- alias :original_equip :equip def equip(equip_type, id) if equip_type == 0 and (id == 0 or $game_party.weapon_number(id) > 0) update_auto_state($data_weapons[@weapon_id], $data_weapons[id]) end original_equip(equip_type, id) end end |
zum Lesen den Text mit der Maus markieren
mfG
Irrlicht
ED: Offensichtlich ergänzen sich die Effekte, allerdings verstärken sie sich auch gegenseitig...
2 Effekte mit je 150% Stärke ergeben demnach 225% der ursprünglichen...
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von »Irrlicht« (20. Mai 2010, 13:19)
Auch wenn das Problem eig schon gelöst ist:
Da einer von Hindis heutigen Beiträgen mich darauf hingewiesen hat, dass es ungünstig ist alias zu verwenden hab ich mal seinen Ratschlag befolgt und eine 2te Version zusammengeschustert... (Wenn jemand Verbesserungsvorschläge hat immer raus damit
)
mfG
Irrlicht
Da einer von Hindis heutigen Beiträgen mich darauf hingewiesen hat, dass es ungünstig ist alias zu verwenden hab ich mal seinen Ratschlag befolgt und eine 2te Version zusammengeschustert... (Wenn jemand Verbesserungsvorschläge hat immer raus damit
)|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
#------------------------------------------------------------------------------ # Ergänzt Waffen um die Möglichkeit, Autostates zu erzeugen. # Version 2.0 # # Welche Waffen welchen Autostate erzeugen wird ab Zeile 19 festgelegt # Um einer Waffe einen Autostate zuzuweisen füge dort eine Zeile wie folgt ein: # # @weapon_auto_state[ID der Waffe] = ID des Statuseffekts # #------------------------------------------------------------------------------ class Game_Actor < Game_Battler alias_method(:original_setup, :setup) def setup(actor_id) original_setup(actor_id) @weapon_auto_state = Array.new($data_weapons.size) # Insert Weapon Auto States: @weapon_auto_state[1..5] = [2, 3, 3, 1, 4] @weapon_auto_state[7..10] = [1, 1, 1, 1] @weapon_auto_state[16] = 8 #----------------------------------------------- update_weapon_auto_state(nil, $data_weapons[@weapon_id]) end #-------------------------------------------------------------------------- # * Update Auto State #-------------------------------------------------------------------------- def update_weapon_auto_state(old_equip, new_equip) if old_equip != nil and @weapon_auto_state[old_equip.id] != nil and @weapon_auto_state[old_equip.id] != 0 remove_state(@weapon_auto_state[old_equip.id], true) end if new_equip != nil and @weapon_auto_state[new_equip.id] != nil and @weapon_auto_state[new_equip.id] != 0 add_state(@weapon_auto_state[new_equip.id], true) end end #-------------------------------------------------------------------------- # * Change Equipment # equip_type : type of equipment # id : weapon or armor ID (If 0, remove equipment) #-------------------------------------------------------------------------- alias_method(:original_equip, :equip) def equip(equip_type, id) if equip_type == 0 and (id == 0 or $game_party.weapon_number(id) > 0) update_weapon_auto_state($data_weapons[@weapon_id], $data_weapons[id]) end original_equip(equip_type, id) end end |
zum Lesen den Text mit der Maus markieren
mfG
Irrlicht
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Irrlicht« (23. Mai 2010, 14:29)
Ähnliche Themen
-
Skript-Anfragen »-
Fertigkeiten mit Cooldown
(18. Mai 2010, 14:09)
-
Einsteigerhilfe »-
Simple Mathematische Frage
(22. April 2010, 16:56)
-
Skript-Anfragen »-
Zustände, die Werte über 200 erhöhen?
(23. Januar 2010, 13:46)
-
Events & Technik »-
Item zur Erhöhung der Attribute
(19. Dezember 2009, 21:24)
-
Skript-Anfragen »-
Alle Gegenstände entfernen und später zurückerhalten
(24. September 2009, 17:42)
