• Anmelden

1

Samstag, 18. Oktober 2008, 15:26

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:

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...

2

Dienstag, 21. Oktober 2008, 15:11

Ist meine Fragestellung unklar? Oder weiß das wirklich niemand :D ?

Yuber

Seher

Motto: Die Welt zu beherrschen.

  • Nachricht senden

3

Dienstag, 21. Oktober 2008, 17:02

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?
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!

4

Dienstag, 21. Oktober 2008, 21:35

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 :D .

5

Donnerstag, 23. Oktober 2008, 12:19

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
Bild
RMXP Grundkurs
1 2 3
Ruby/RGSS-Kurs

6

Donnerstag, 23. Oktober 2008, 13:58

Danke, Kai :D .

Nur wie genau baue ich das ein?
Deinen code habe ich jetzt einfach vor Scene_Battle 4 gesetzt, ich hoffe, das funktioniert.
Wie genau ersetze ich meine Bedingungsschleifen jetzt mit deinen?

7

Donnerstag, 23. Oktober 2008, 18:19

Ihr immer mit euren Schleifen X_x Schleifen sind doch hässlich ^^

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.
Bild
RMXP Grundkurs
1 2 3
Ruby/RGSS-Kurs

8

Samstag, 25. Oktober 2008, 01:21

In dem KS, das ich benutze, werden am Anfang jedes Zuges 10 % der aktuellen SP des aktuellen Kämpfers regeneriert.
Spoiler: Skript

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 :D . 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?

9

Dienstag, 28. Oktober 2008, 15:43

Das Problem ist immer noch aktuell...

10

Freitag, 31. Oktober 2008, 18:48

Kann mir da keiner helfen :heul: ?

11

Montag, 3. November 2008, 19:16

:heul: ...
Das wär mir wirklich wichtig, und ich glaub nicht, dass das so schwer ist :schock: .

Social Bookmarks