Resistenzen von Ausrüstung und Gegnern abfragen
Hallo zusammen,
ja ich weiß, ich frage in letzter Zeit sehr viel, aber die Fragen werden in Tutorials nicht beantwortet und ich finde auch sonst nichts dazu...
Folgendes habe ich in "Scene_Battle 4" geändert:
Bei den Gegnern sieht das bei mir so aus:
Wie kann ich diese beiden Abfragen so ändern, dass sie abfragen, welche Resistenzen die Ausrüstung des aktiven Kämpfers bzw. welche Resistenzen der aktive Gegner hat? Dann würde ich mir das ganze Eingetippe für jeden Gegner sparen, sondern könnte ihm einfach eine Resistenz geben, die von keiner Waffe benutzt wird...
ja ich weiß, ich frage in letzter Zeit sehr viel, aber die Fragen werden in Tutorials nicht beantwortet und ich finde auch sonst nichts dazu...
Folgendes habe ich in "Scene_Battle 4" geändert:
|
|
Quellcode |
1 2 3 4 5 |
ausrüstung = [@active_battler.armor1_id,@active_battler.armor2_id, @active_battler.armor3_id,@active_battler.armor4_id]
if ausrüstung.include?(1)
...
#Der aktive Held erhält pro Zug einen bestimmten Anteil seiner aktuellen SP dazu.
end |
Bei den Gegnern sieht das bei mir so aus:
|
|
Quellcode |
1 2 3 4 5 6 |
if @active_battler.is_a?(Game_Enemy)
case @active_battler.id
when 1
...
#Der aktive Gegner erhält pro Zug einen bestimmten Anteil seiner aktuellen SP dazu.
end |
Wie kann ich diese beiden Abfragen so ändern, dass sie abfragen, welche Resistenzen die Ausrüstung des aktiven Kämpfers bzw. welche Resistenzen der aktive Gegner hat? Dann würde ich mir das ganze Eingetippe für jeden Gegner sparen, sondern könnte ihm einfach eine Resistenz geben, die von keiner Waffe benutzt wird...
Sorry ich versteh nur nicht wirklich was du meinst xD"
Resistenz? Meinst du die Elemente im Spiel? Und wieso hast du da zwei Scriptausschnitte gepostet? Soll darin was geändert werden? Heissen diese "..." das da noch was ist du es aber rausgenommen hast da es zu lang ist?
Resistenz? Meinst du die Elemente im Spiel? Und wieso hast du da zwei Scriptausschnitte gepostet? Soll darin was geändert werden? Heissen diese "..." das da noch was ist du es aber rausgenommen hast da es zu lang ist?
Nur noch selten hier.
'Til now, I always let people walk all over me!
From now on, if anyone makes fun of me, I'll kill 'em! Just like that!
From now on, if anyone makes fun of me, I'll kill 'em! Just like that!
Ja, ich meine die Resistenzen gegen die Elemente, die man in der Datenbank einstellen kann
.
Die Bedingungsschleife im ersten Skript soll durch eine Bedingungsschleife ersetzt werden, die abfragt, ob ein beliebiges Ausrüstungsteil des aktiven Helden eine Resistenz gegen ein bestimmtes Element hat.
Die Bedingungsschleife im zweiten Skript soll durch eine Bedingungsschleife ersetzt werden, die abfragt, ob der aktive Gegner eine Resistenz (also etwas anderes als das C in der Resistenzauswahl) gegen ein bestimmtes Element hat.
Die "..." stehen für das, was ich als Kommentar (#) in die Skripts geschrieben habe, und ist unwichtig
.
.Die Bedingungsschleife im ersten Skript soll durch eine Bedingungsschleife ersetzt werden, die abfragt, ob ein beliebiges Ausrüstungsteil des aktiven Helden eine Resistenz gegen ein bestimmtes Element hat.
Die Bedingungsschleife im zweiten Skript soll durch eine Bedingungsschleife ersetzt werden, die abfragt, ob der aktive Gegner eine Resistenz (also etwas anderes als das C in der Resistenzauswahl) gegen ein bestimmtes Element hat.
Die "..." stehen für das, was ich als Kommentar (#) in die Skripts geschrieben habe, und ist unwichtig
. |
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class Game_Actor # gibt einen Array mit den IDs der Equipments zurück def equipment_ids [armor1_id, armor2_id, armor3_id, armor4_id] end # gibt einen Array mit den Equipment-Objekten zurück def equipment equipment_ids.collect {|e| $data_armors[e]} end # gibt true zurück, wenn irgendein Equipment eine Ressistenz gegen das angegebene Element hat def has_ressistance?(element_id) equipment.any? {|e| e.guard_element_set.include?(element_id)} end end class Game_Enemy # gibt true zurück, wenn Gegner eine Ressistenz gegen das angegebene Element hat def has_ressistance?(element_id) $data_enemies[@enemy_id].element_ranks[element_id] != 2 end end |
Ihr immer mit euren Schleifen X_x Schleifen sind doch hässlich ^^
gibt true zurück wenn der Spieler #1 Ressistenz gegen Element #2 hat (wobei Statusveränderungen nicht mit einbezogen werden). Was du jetzt damit machen willst, weiß ich auch nicht. Das hast du ja auch nirgends gesagt.
|
|
Ruby Quellcode |
1 |
$game_actor[1].has_ressistance?(2) |
gibt true zurück wenn der Spieler #1 Ressistenz gegen Element #2 hat (wobei Statusveränderungen nicht mit einbezogen werden). Was du jetzt damit machen willst, weiß ich auch nicht. Das hast du ja auch nirgends gesagt.
In dem KS, das ich benutze, werden am Anfang jedes Zuges 10 % der aktuellen SP des aktuellen Kämpfers regeneriert.
Damit diese 10 % bei den Helden je nach Ausrüstung und auch bei Gegnern manchmal anders sein können, brauche ich diese Schleifen
. Ich habe nämlich keine Lust, für jede neue Ausrüstung das Skript zu ändern...
Falls ich das doch tun muss, wie kann ich
so ändern, dass mehrere Ausrüstungs-IDs abgefragt werden?
geht nämlich nicht...
@Kai: Es funktioniert nicht... Ich habe deine Ergänzungen zu Game_Actor einfach zu Scene_Battle 4 ganz an den Anfang des Skripts (also vor die erste Zeile). Deine Abfrage habe ich einfach als
in mein Skript eingefügt (und meine Abfrage gelöscht).
Fehlermeldung ist die folgende: "no method error: undefined method [] for nil:NilClass"
Was mache ich falsch?
|
|
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 |
#KS if @active_battler.sp < @active_battler.maxsp and @active_battler.sp > 0 aktuelle_sp = @active_battler.sp if @active_battler.is_a?(Game_Enemy) #Manche Gegner haben eine andere Energieregeneration if @active_battler.id == 999 sp_regeneration = 0 @active_battler.damage = "+0 Energie" elsif @active_battler.id == 999 sp_regeneration = aktuelle_sp/20 sp_regeneration = sp_regeneration.round @active_battler.damage = "+5% Energie" elsif @active_battler.id == 5 or @active_battler.id == 6 sp_regeneration = aktuelle_sp * 0.15 sp_regeneration = sp_regeneration.round @active_battler.damage = "+15% Energie" else sp_regeneration = aktuelle_sp/10 sp_regeneration = sp_regeneration.round @active_battler.damage = "+10% Energie" end else ausrüstung = [@active_battler.armor1_id,@active_battler.armor2_id, @active_battler.armor3_id,@active_battler.armor4_id] if ausrüstung.include?(9999) sp_regeneration = 0 @active_battler.damage = "+0 Energie" elsif ausrüstung.include?(9999) sp_regeneration = aktuelle_sp/20 sp_regeneration = sp_regeneration.round @active_battler.damage = "+5% Energie" elsif ausrüstung.include?(9999) sp_regeneration = aktuelle_sp * 0.15 sp_regeneration = sp_regeneration.round @active_battler.damage = "+15% Energie" else sp_regeneration = aktuelle_sp/10 sp_regeneration = sp_regeneration.round @active_battler.damage = "+10% Energie" #Standard end end @active_battler.sp += sp_regeneration @active_battler.damage_pop = true end #KS - Ende |
zum Lesen den Text mit der Maus markieren
Damit diese 10 % bei den Helden je nach Ausrüstung und auch bei Gegnern manchmal anders sein können, brauche ich diese Schleifen
. Ich habe nämlich keine Lust, für jede neue Ausrüstung das Skript zu ändern...Falls ich das doch tun muss, wie kann ich
|
|
Quellcode |
1 2 3 |
if ausrüstung.include?(9999) ... end |
so ändern, dass mehrere Ausrüstungs-IDs abgefragt werden?
|
|
Quellcode |
1 |
if ausrüstung.include?(1, 2) |
geht nämlich nicht...
@Kai: Es funktioniert nicht... Ich habe deine Ergänzungen zu Game_Actor einfach zu Scene_Battle 4 ganz an den Anfang des Skripts (also vor die erste Zeile). Deine Abfrage habe ich einfach als
|
|
Quellcode |
1 2 3 |
if @active_battler.has_resistance(8) ... end |
in mein Skript eingefügt (und meine Abfrage gelöscht).
Fehlermeldung ist die folgende: "no method error: undefined method [] for nil:NilClass"
Was mache ich falsch?


.