Lieber Besucher, herzlich willkommen bei: RPG Studio - Make your World real. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Cryztal

Knappe

  • »Cryztal« ist der Autor dieses Themas

Motto: Ich mag das Gefühl von völliger Ungezwungenheit. Dann bin ich am besten, würde ich sagen.

  • Nachricht senden

1

Donnerstag, 21. Februar 2019, 22:49

Konzept Overkill Damage

Hallo zusammen.

Ich benötige erneut Hilfe bei der Ausarbeitung einer Möglichkeit, Overkill-Damage zu definieren und anschließend zu verteilen.

Beispiel:

Krieger schlägt (Basic Attack. Kein Skill) auf Enemy1 ein, tötet diesen und zwar mit einem Schlag von 30 während Enemy1 noch 5 HP übrig hatte. Der Overkill-Schaden wäre demnach 25.
Ich möcht jetzt gerne diesen Overkill-Schaden, auf den nächsten verfügbaren Gegner werfen.
Leider fällt mir partout nicht ein, wie ich diesen Schaden "erfassen" kann, um ihn dann in einer Variable zu speichern.

Hat jemand eine Idee?
Lg Cryztal

Mitsch93

Drachentöter

Motto: Aufgeben ist es, was den Menschen tötet. Nur der Mensch, der sich weigert aufzugeben, hat sich das Recht verdient, auf dem glanzvollen Pfad der Menschheit zu wandeln.

  • Nachricht senden

2

Freitag, 22. Februar 2019, 19:39

In erster Linie ist es davon abhängig, welches KS du verwendest, und ob es die Standard-Schadensformeln verwendet.

Die Schadensalgorithmen findest du in Game_Battler_3, namentlich in den Methoden attack_effect und skill_effect.

Hier mal die modifizierten Skripte, die dir den Schaden ausgeben (Popup Fenster), falls du es testen willst.
Der Schaden wird nicht ausgegeben, wenn zB als Ergebnis "miss" herauskommen würde.
Spoiler

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
  #--------------------------------------------------------------------------
  # * Applying Normal Attack Effects
  #     attacker : battler
  #--------------------------------------------------------------------------
  def attack_effect(attacker)
    # Clear critical flag
    self.critical = false
    # First hit detection
    hit_result = (rand(100) < attacker.hit)
    # If hit occurs
    if hit_result == true
      # Calculate basic damage
      atk = [attacker.atk - self.pdef / 2, 0].max
      self.damage = atk * (20 + attacker.str) / 20
      # Element correction
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100
      # If damage value is strictly positive
      if self.damage > 0
        # Critical correction
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end
        # Guard correction
        if self.guarding?
          self.damage /= 2
        end
      end
      # Dispersion
      if self.damage.abs > 0
        amp = [self.damage.abs * 15 / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      # Second hit detection
      eva = 8 * self.agi / attacker.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
    end
    # If hit occurs
    if hit_result == true
      # State Removed by Shock
      remove_states_shock
      # Substract damage from HP
      p "SCHADEN: " + self.damage.to_s
      self.hp -= self.damage
      # State change
      @state_changed = false
      states_plus(attacker.plus_state_set)
      states_minus(attacker.minus_state_set)
    # When missing
    else
      # Set damage to "Miss"
      self.damage = "Miss"
      # Clear critical flag
      self.critical = false
    end
    # End Method
    return true
  end
  #--------------------------------------------------------------------------
  # * Apply Skill Effects
  #     user  : the one using skills (battler)
  #     skill : skill
  #--------------------------------------------------------------------------
  def skill_effect(user, skill)
    # Clear critical flag
    self.critical = false
    # If skill scope is for ally with 1 or more HP, and your own HP = 0,
    # or skill scope is for ally with 0, and your own HP = 1 or more
    if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
       ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
      # End Method
      return false
    end
    # Clear effective flag
    effective = false
    # Set effective flag if common ID is effective
    effective |= skill.common_event_id > 0
    # First hit detection
    hit = skill.hit
    if skill.atk_f > 0
      hit *= user.hit / 100
    end
    hit_result = (rand(100) < hit)
    # Set effective flag if skill is uncertain
    effective |= hit < 100
    # If hit occurs
    if hit_result == true
      # Calculate power
      power = skill.power + user.atk * skill.atk_f / 100
      if power > 0
        power -= self.pdef * skill.pdef_f / 200
        power -= self.mdef * skill.mdef_f / 200
        power = [power, 0].max
      end
      # Calculate rate
      rate = 20
      rate += (user.str * skill.str_f / 100)
      rate += (user.dex * skill.dex_f / 100)
      rate += (user.agi * skill.agi_f / 100)
      rate += (user.int * skill.int_f / 100)
      # Calculate basic damage
      self.damage = power * rate / 20
      # Element correction
      self.damage *= elements_correct(skill.element_set)
      self.damage /= 100
      # If damage value is strictly positive
      if self.damage > 0
        # Guard correction
        if self.guarding?
          self.damage /= 2
        end
      end
      # Dispersion
      if skill.variance > 0 and self.damage.abs > 0
        amp = [self.damage.abs * skill.variance / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      # Second hit detection
      eva = 8 * self.agi / user.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
      # Set effective flag if skill is uncertain
      effective |= hit < 100
    end
    # If hit occurs
    if hit_result == true
      # If physical attack has power other than 0
      if skill.power != 0 and skill.atk_f > 0
        # State Removed by Shock
        remove_states_shock
        # Set to effective flag
        effective = true
      end
      # Substract damage from HP
      p "SCHADEN: " + self.damage.to_s
      last_hp = self.hp
      self.hp -= self.damage
      effective |= self.hp != last_hp
      # State change
      @state_changed = false
      effective |= states_plus(skill.plus_state_set)
      effective |= states_minus(skill.minus_state_set)
      # If power is 0
      if skill.power == 0
        # Set damage to an empty string
        self.damage = ""
        # If state is unchanged
        unless @state_changed
          # Set damage to "Miss"
          self.damage = "Miss"
        end
      end
    # If miss occurs
    else
      # Set damage to "Miss"
      self.damage = "Miss"
    end
    # If not in battle
    unless $game_temp.in_battle
      # Set damage to nil
      self.damage = nil
    end
    # End Method
    return effective
  end

zum Lesen den Text mit der Maus markieren


An den Stellen, an denen ich

Ruby Quellcode

1
p "SCHADEN: " + self.damage.to_s

eingefügt habe, könntest du den Schaden folgendermaßen in einer Variable speichern.

Ruby Quellcode

1
$game_variables[variablen_id] = self.damage

Den Overkill-Schaden könnte man dann einfach aus der HP des Gegners nach Abzug des Eingangsschadens berechnen.

Mit einem Skript könnte man relativ einfach herausfinden, wer der nächste Gegner wäre, der getroffen wird
(sofern dieser Gegner sichtbar ist und HP > 0). Das müsste in Game_Troop implementiert werden.

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  def get_next_enemy(target_enemy)
    next_target = nil
    # Hole den Index des getroffenen Gegners und erhöhe um 1,
    # damit erhält man den nächsten Gegner im Array
    index = target_enemy.member_index + 1
    # Gehe alle Gegner durch
    for i in 0...@enemies.size
      index = index >= @enemies.size ? 0 : index
      if !@enemies[index].hidden && @enemies[index].hp > 0
        p "Nächster Gegner hat den Index " + index.to_s
        next_target = @enemies[index]
        break
      end
    end
    # Nächsten Gegner als Rückgabewert
    return next_target
  end


Hierfür müsste man die Game_Enemy Klasse durch folgende Zeile erweitern

Ruby Quellcode

1
attr_accessor :member_index


Für alles weitere müssten noch ein paar Änderungen vorgenommen werden; Im Game_Battler_3 eine Abfrage, ob ein Gegner getroffen wurde.
Wenn ja, dann rufe $game_troop.get_next_enemy(self) auf.

Ich sehe bei dem ganzen aber mehrere Probleme:

Was ist mit Skills, die mehrere Gegner treffen?

Der Schaden errechnet sich so: Held greift an, eine Methode wird im Ziel-Gegner getriggert. Diese berechnet aus den eigenen (Gegner) und den Angreifer (Held)-Attributen den Schaden.
Sagen wir der Held macht 100 Schaden flat.
Gegner 1 hat eine Schadensminderung von 30% => Gegner 1 erhält 70 Schaden. Sagen wir mal Gegner 1 stirbt dabei.
Overkill Schaden wäre demnach 30. Aber die restlichen 30 Schadenspunkte beziehen sich auf den Gegner mit 30% Schadensminderung. Wenn Gegner 2 nun 50% oder 70% Schadensminderung hat,
ist das dann komplett egal, weil er eben den 30 Overkillschaden frisst. Für mich als Spieler bedeutet das folgendes: ich kann die Spielmachanik austricksen, indem ich
zu aller erst immer die Gegner töte, die am meisten Schaden erhalten (weil sie zB wenig PDF/MDF haben). Denn der Overkillschaden würde "flat" auf die nächsten Gegner treffen.
Eigentlich müssten ja die 30 Overkillschaden an den nächsten Gegner wiederum angepasst werden. Das zu berechnen (mit Varianz usw.) wird ganz schön eklig.


Beispiel: Errechneter Flatschaden: 100*
*"Flat"-Damage. Schaden ohne Abzug durch Rüstung oder ähnliches.
Gegner 1 mit 40 HP (30% Rüstung) => 70 Schaden, davon 30 Overkill.
Zurückrechnen: Flatschaden = Overkillschaden / (1 - Schadensverringerung) = 30 / (1 - 0,3) = 30 / 0,7 = ca. 43
* 0,3 = 30% (30% Rüstung von Gegner 1)
Jetzt haben wir 43 Overkill-Flatschaden. Diesen könnte man jetzt auf Gegner 2 umrechnen.
Gegner 2 mit 100 HP (50% Rüstung) => Gegner 2 erhält demnach 21,5 also rund 22 Schadenspunkte (statt 30).
Hierin sehe ich die einzige Möglichkeit, dass Spieler (wenn man sowas weiß) diesen Umstand nicht ausnutzen. Sonst würde
ich halt fröhlich immer wieder auf den Gegner mit den niedrigsten Deff-Stats hauen.

Anmerkung:
Das obige Beispiel ist relativ easy, weil ich von einer prozentualen Schadensverringerung ausgegangen bin.
Man sehe sich aber mal die Standardformeln an, die nicht so rechnen (siehe: Kämpfe, Klassen und Balancing.

Quellcode

1
2
Normaler Angriff
Schaden =  [ ATK_Angreifer - ( PDEF_Ziel / 2 ) ] * ( 20 + STR_Angreifer ) / 20


Quellcode

1
2
3
4
5
6
7
8
Skill-Schaden:
Schaden = [ SkillPower + ( ATK_Angreifer * Skill_ATK-F / 100 ) 
        - ( PDEF_Ziel * Skill_PDEF-F / 200 ) 
        - ( MDEF_Ziel * Skill_MDEF-F / 200 ) ]
        * [ ( 20 + (STR_Angreifer * Skill_STR-F / 100) 
        + ( DEX_Angreifer * Skill_DEX-F / 100 ) 
        + ( AGI_Angreifer * Skill_AGI-F / 100 ) 
        + ( INT_Angreifer * Skill_INT-F / 100 ) ] / 20

Cryztal

Knappe

  • »Cryztal« ist der Autor dieses Themas

Motto: Ich mag das Gefühl von völliger Ungezwungenheit. Dann bin ich am besten, würde ich sagen.

  • Nachricht senden

3

Freitag, 22. Februar 2019, 20:39

Zitat

Was ist mit Skills, die mehrere Gegner treffen?


Der Overkill soll als passiver Effekt ausschließlich für die Kriegerklasse vorkommen.
Eine Veränderung der kompletten Formel wäre etwas über das Ziel hinaus denke ich.

Und ebenfalls soll dieser nur in Kombination mit Basic Attacks, nicht bei Skill vorkommen.
Die Basic Attacks wiederum sind ja klar auf einzelne Ziele definiert.
Lg Cryztal

Mitsch93

Drachentöter

Motto: Aufgeben ist es, was den Menschen tötet. Nur der Mensch, der sich weigert aufzugeben, hat sich das Recht verdient, auf dem glanzvollen Pfad der Menschheit zu wandeln.

  • Nachricht senden

4

Samstag, 23. Februar 2019, 14:05

So würde die Methode aussehen für normale Angriffe.
Ich habe den Overkill-Schaden einfach mal in Variable 1 gespeichert.

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
63
64
65
  def attack_effect(attacker)
    # Overkillschaden zurücksetzen
    $game_variables[1] = 0
    # Clear critical flag
    self.critical = false
    # First hit detection
    hit_result = (rand(100) < attacker.hit)
    # If hit occurs
    if hit_result == true
      # Calculate basic damage
      atk = [attacker.atk - self.pdef / 2, 0].max
      self.damage = atk * (20 + attacker.str) / 20
      # Element correction
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100
      # If damage value is strictly positive
      if self.damage > 0
        # Critical correction
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end
        # Guard correction
        if self.guarding?
          self.damage /= 2
        end
      end
      # Dispersion
      if self.damage.abs > 0
        amp = [self.damage.abs * 15 / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      # Second hit detection
      eva = 8 * self.agi / attacker.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
    end
    # If hit occurs
    if hit_result == true
      # State Removed by Shock
      remove_states_shock
      # HP vor Treffer speichern
      hp_before_hit = self.hp
      # Substract damage from HP
      self.hp -= self.damage
      # Overkill-Schaden berechnen, falls Ziel tot
      if self.hp <= 0 
        $game_variables[1] = self.damage - hp_before_hit
        p "Overkill-Schaden: " + $game_variables[1].to_s
      end
      # State change
      @state_changed = false
      states_plus(attacker.plus_state_set)
      states_minus(attacker.minus_state_set)
    # When missing
    else
      # Set damage to "Miss"
      self.damage = "Miss"
      # Clear critical flag
      self.critical = false
    end
    # End Method
    return true
  end


Was hab ich gemacht?

1.) Zu Beginn der Methode wird zu aller erst die Variable, die den Overkill-Schaden speichert zu Null gesetzt.

Ruby Quellcode

1
2
# Overkillschaden zurücksetzen
$game_variables[1] = 0


2.) Bevor der Gegner getroffen wird, müssen die aktuellen HP gespeichert werden, damit du später
den Overkill-Schaden zurückrechnen kannst.

Ruby Quellcode

1
2
# HP vor Treffer speichern
hp_before_hit = self.hp


3.) Es wird überprüft, ob die HP des Ziels kleiner gleich 0 ist, also ob das Ziel getötet worden ist.
Wenn ja, dann wird der Overkill-Schaden berechnet und in der Variable 1 gespeichert.

Ruby Quellcode

1
2
3
4
5
      # Overkill-Schaden berechnen, falls Ziel tot
      if self.hp <= 0 
        $game_variables[1] = self.damage - hp_before_hit
        p "Overkill-Schaden: " + $game_variables[1].to_s
      end

Zum Testen gebe ich dann außerdem den Overkill-Schaden in einer Messagebox aus.
Wenn du das nicht mehr brauchst, einfach die Zeile löschen.

Das oben beschriebene Problem mit dem Flatdamage ist dadurch aber nicht gelöst.
Du müsstest also den Overkill-Schaden vorher noch auf den Flat-Schaden zurückrechnen.

Wie willst du nun weiter vorgehen?
- Willst du eine Damage-Umrechnung durchführen, wie ich sie beschrieben habe?
- Willst du per Event oder Skript den nächsten Gegner errechnen lassen?
- Wie verteilst du den Overkill-Schaden? Einfach per Deal Damage oder per Skript?

Edit
Wenn die gewünschte Berechnung nur bei einer bestimmten Klasse ausgelöst werden soll (hier bei Class ID = 1):

Ruby Quellcode

1
2
3
4
if self.hp <= 0 && attacker.class_id == 1
        $game_variables[1] = self.damage - hp_before_hit
        p "Overkill-Schaden: " + $game_variables[1].to_s
      end


Cryztal

Knappe

  • »Cryztal« ist der Autor dieses Themas

Motto: Ich mag das Gefühl von völliger Ungezwungenheit. Dann bin ich am besten, würde ich sagen.

  • Nachricht senden

5

Samstag, 23. Februar 2019, 14:40

Zitat

Das oben beschriebene Problem mit dem Flatdamage ist dadurch aber nicht gelöst.


Kann man den Damage nicht einfach als neuen Angriff durchgeben lassen? Quasi á la "Forced Action" ? Die Kalkulation würde ja dann die vorgegebene Damage Formel berechnen.

Zitat

Einfach per Deal Damage
<- Das meinte ich genau.

Ich gestehe ich bin bei der Menge an Code jetzt etwas durcheinander gekommen.
Was genau muss ich jetzt noch wo einfügen? das Skript aus deinem letzten Post habe ich um

Ruby Quellcode

1
2
3
4
5
      # Overkill-Schaden berechnen, falls Ziel tot
      if self.hp <= 0 
        $game_variables[1] = self.damage - hp_before_hit
        p "Overkill-Schaden: " + $game_variables[1].to_s
      end

ergänzt.
Das ganze hab ich dann über Main wie gewohnt eingefügt.
Aber das umschließt ja jetzt nicht den ganzen Code aller Posts?
Lg Cryztal

Mitsch93

Drachentöter

Motto: Aufgeben ist es, was den Menschen tötet. Nur der Mensch, der sich weigert aufzugeben, hat sich das Recht verdient, auf dem glanzvollen Pfad der Menschheit zu wandeln.

  • Nachricht senden

6

Samstag, 23. Februar 2019, 14:49

Es existiert ein Unterschied zwischen Deal Damage und Force Action.
Mit Deal Damage kannst du absoluten Schaden auf ein Ziel geben. Gibtst du hier 100 Schaden ein, sind es immer 100 Schaden.
Egal, wie hoher die Defensive des Ziels ist.
Mit Force Action triggerst du eine weitere Aktion, z.B. einen normalen Angriff. Aber du hast keinerlei Kontrolle über den eigenlichen
Schaden. Das würde sich demnach nicht für dein Overkill-Konzept eignen.

Mal generell: Ich hab gerade ein bisschen herumgeskripten und meine Lösung würde so aussehen:
  • Du legst zwei Variablen an. Die eine beinhaltet den Overkill-Schaden und die andere den Member-Index des nächsten Gegners.
    Also der Gegner, der den Overkill-Schaden abbekommt.
  • Ist der Gegner tot und alles soweit tutti frutti, wird per Skript geschaut, ob es möglich ist einen Gegner mit dem Overkill-Schaden zu treffen.
    Hier muss man natürlich abfragen, dass der Gegner nicht unsichtbar und nicht bereits tot ist. Sprich; Du erhälst den Index des nächsten Gegners (der
    also den Overkill-Schaden abbekommt) in einer Variablen.
  • Dann wird automatisch ein Common Event getriggert, welches du einstellen kannst. Hier rufst du nur einen Skriptbefehl aus und es wird
    automatisch der Overkill-Schaden an den nächsten Gegner weitergegeben (falls möglich).


Wäre diese Lösung für dich ok? Du brauchst dann halt keine lästigen Eventabfragen mehr machen, und bei Battle Events können das wirklich viel werden.
Da man Deal Damage nicht dynamisch triggern kann (du gibst immer nur einen absoluten Zielindex an und keinen dynamischen), musst du also
sonst mindestens 8 Conditional Branch Abfragen tatätigen, um den richtigen Gegner zu treffen.

Zusammengefasst: Mit pur Eventtechnik ist diese Problematik nur extrem umständlich lösbar, weshalb ich dir die oben beschriebene Lösung
ans Herz lege.

Cryztal

Knappe

  • »Cryztal« ist der Autor dieses Themas

Motto: Ich mag das Gefühl von völliger Ungezwungenheit. Dann bin ich am besten, würde ich sagen.

  • Nachricht senden

7

Samstag, 23. Februar 2019, 15:06

Bin ich absolut einverstanden mit.
Aber mal so als Frage. Wie sähe denn die Erweiterung aus, wenn ich Klassen hinzufügen will die diesen Effekt bekommen?
Und wäre es möglich das Ganze per Switch an und aus zu schalten, bei Bedarf?
Lg Cryztal

Mitsch93

Drachentöter

Motto: Aufgeben ist es, was den Menschen tötet. Nur der Mensch, der sich weigert aufzugeben, hat sich das Recht verdient, auf dem glanzvollen Pfad der Menschheit zu wandeln.

  • Nachricht senden

8

Samstag, 23. Februar 2019, 15:23

Ja und Ja^^.

Schau dir mal das Demoprojekt an.

1.) Kopiere die 5 Skripte einfach in dein Projekt über Main.
2.) Konfiguriere die Skripte im Modul Overkill_Config
3.) Kopiere das Common Event #1 aus der Demo in dein Projekt (egal in welches Common Event, es muss nur richtig in der Config eingestellt werden).

Ansonsten hier mal einen Blick auf die Config.
Ist soweit alles klar, was einzustellen ist?

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
module Overkill_Config
  # Variable, die den Schaden speichert (ID)
  DAMAGE_VAR_ID = 1
 
  # Variable, die den Index speichert (ID)
  DAMAGE_INX_ID = 2
 
  # ID des Common Events, das zum Verteilen des Schadens aufgerufen werden soll
  CE_ID = 1
 
  # Animations-ID, die auf dem Gegner abgespielt wird, wenn er Ovekill-Schaden
  # erhält. Setze diese Variable zu Null und es wird keine Animation angezeigt.
  ANIMATION_ID = 2
 
  # Setze diesen Wert auf true und die Messagebox zeigt dir den Wert des 
  # Overkill-Schadens an (evtl. für Testzwecke hilfreich). 
  # Auf false wird sie ausgeblendet.
  SHOW_MSG_BOX = true
 
  # Switch, der eingeschaltet sein muss, damit Overkill-Schaden berechnet
  # und verteilt wird.
  OVERKILL_SWITCH_ID = 1
 
  # Array, das alle Klassen-IDs beinhaltet, die Overkill-Schaden zufügen
  # können.
  # z.B. Klassen 1, 2 und 5:
  # OVERKILL_CLASSES = [1, 2 ,5]
  OVERKILL_CLASSES = [1]
end


In der Config stellst du alles ein. Die IDs der Variablen, die das Zeug speichern, die Switch ID, die das alles aktiviert, die ID des Common Events
(in der Demo: #1), die für das Zufügen des Overkill-Schadens verantwortlich ist usw.

Aber wie gesagt: Die im ersten Post von mir beschriebene Problematik wird noch nicht behoben. Wenn der Overkill-Schaden 30 ist,
dann bleibt er auch 30 und wird nicht noch auf den nächsten Gegner angepasst.
»Mitsch93« hat folgende Datei angehängt:
  • Kampftest.exe (1,02 MB - 1 mal heruntergeladen - zuletzt: 23. Februar 2019, 15:38)

Cryztal

Knappe

  • »Cryztal« ist der Autor dieses Themas

Motto: Ich mag das Gefühl von völliger Ungezwungenheit. Dann bin ich am besten, würde ich sagen.

  • Nachricht senden

9

Samstag, 23. Februar 2019, 15:49

Ich schau es mir jetzt grade mal ein und Das Config Menü ist ja wohl der Hammer!
Richtig schön übersichtlich und verständlich. Und wirklich kinderleicht.

Ich habs jetzt grade getestet und finds perfekt. Ich versteh jetzt auch etwas besser wie du das meinst
Aber wie gesagt: Die im ersten Post von mir beschriebene Problematik wird noch nicht behoben. Wenn der Overkill-Schaden 30 ist,
dann bleibt er auch 30 und wird nicht noch auf den nächsten Gegner angepasst.


Aber das ist auch völlig in Ordnung so.

Mitsch heute haste alle verfügbaren Punkte abgeräumt. Das ist ein fantastisches Skript. Vielen Dank dafür!
Lg Cryztal

Mitsch93

Drachentöter

Motto: Aufgeben ist es, was den Menschen tötet. Nur der Mensch, der sich weigert aufzugeben, hat sich das Recht verdient, auf dem glanzvollen Pfad der Menschheit zu wandeln.

  • Nachricht senden

10

Samstag, 23. Februar 2019, 16:17

Kein Ding. Wenn es noch was hierzu gibt, einfach melden.

Zitat

Ich habs jetzt grade getestet und finds perfekt. Ich versteh jetzt auch etwas besser wie du das meinst

Könnte man noch versuchen, zu implementieren.

Edit
Noch etwas vergessen:
Ein Gegner, der nicht sichtbar ist, kann nicht vom Overkill getroffen werden.
Beispiel: Gegnergruppe mit Geist, Troll und Zombie. Zombie ist nicht sichtbar (appear halfway).

Troll wird getötet mit Overkill-Schaden => Algorithmus sucht nun den nächstne verfügbaren Gegner in der Gruppe.
Das wäre demnach der Geist und nicht der Zombie, da dieser nicht sichtbar ist.

Cryztal

Knappe

  • »Cryztal« ist der Autor dieses Themas

Motto: Ich mag das Gefühl von völliger Ungezwungenheit. Dann bin ich am besten, würde ich sagen.

  • Nachricht senden

11

Samstag, 23. Februar 2019, 16:25

Zitat


Könnte man noch versuchen, zu implementieren.


Wenn du Zeit und Lust hast nehm ich das gerne an. Aber ich finds auch so schon ziemlich super und es ist nicht zwingend notwendig.
Lg Cryztal

Ähnliche Themen

Social Bookmarks