• Anmelden

Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

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

1

Montag, 11. März 2013, 16:40

Tankentai Battle System + Atoa's Active Time Battle: BattleEvent & Skills+CE BUG beseitigen

Guten Abend zusammen,

vllt hab ihr ja mitbekommen, dass ich "Ärger" mit dem Tankentai Battle System bzw. mit dem Addon
Atoa's Active Time Battle habe.
Hier hatte ich Probleme bereits erläutert (konnten noch nicht behoben werden):
Tankentai Battle System - Battle Event fehlerhaft - RGSS 1 Probleme & Talk - RPG Studio - Make your World real
Tankentai Battle System - Skills CEs aufrufen lassen - Events & Technik - RPG Studio - Make your World real

Ich mache jetzt deshalb ein neues Thema auf, weil ich glaube, dass das Problem/die Probleme nur noch skripttechnisch
gelöst werden können.
Nochmal zur Zusammenfassung:

1.) Battle Event funktioniert nicht ordnungsgemäß:
Wenn ich eine Battle Event Page jede Runde aufrufen lassen möchte, funktioniert das nicht.
Die Seite wird nur einmal aufgerufen und dann nicht wieder.
Das Problem wird definitiv vom Atoa's Active Time Battle ausgelöst, da das Battle Event ansonsten OHNE
dieses Addon funktioniert.

2.) Common Events, die von Skills aufgerufen werden, funktionieren nicht richtig:
Wie in einem Thread bereits geschildert, habe ich versucht einen Skill, der den Helden 2x mit dem normalen Angriff angreifen lässt,
per Event zu erstellen. Allerdings wird der Eventbefehl Force Action übergangen bzw. gänzlich ignoriert.
Habe auch schon probiert, einen Force Action- Befehl nur mal in eine Battle Event Page einzubauen, um zu sehen, ob es dann aufgerufen wird, was aber
auch nicht der Fall ist.
Hier liegt das Problem ebenfalls bei Atoa's Active Time Battle, denn ohne das Addon funktioniert Force Action einwandfrei.



Ich habe schon probiert in Zeile 43 vom Atoa's Active Time Battle die Art der Rundenzählweise zu verändern, das hat
aber alles nicht gebracht.
Natürlich könnte ich auch einfach das Addon aus dem Spiel nehmen, allerdings möchte ich dem Spieler die Wahl zwischen Einhand- und Zweihandwaffen
lassen. Ebenso träg ein Held zwei Einhandwaffen. Das Tragen von Zweihandwaffen wirkt sich im Spiel auf die Schnelligkeit des Spielers aus (-30% AGI).
Ebenso soll man einen Vorteil raus ziehen können, wenn man zwei Einhandwaffen trägt, die zwar weniger Schaden verursachen, dafür aber sehr schnell angreifen.
Diese Spielmechanik ist nur mit dem Atoa's Active Time Battle möglich.


Im Anhang habe ich die Scripts.rxdata angehängt.
Das komplette Kampfsystem findet ihr auch in der Skriptdatenbank: RPG Tankentai Sideview Battle System | RPG Studio


Wäre sehr froh darüber, wenn jemand es schafft, das Atoa's Active Time Battle dahingehend anzupassen, dass es nicht mehr
zu den oben genannten Komplikationen kommt. Wenn jemand einen Weg kennt, das ohne Skripts/Skriptänderungen zu lösen, wäre ich auch sehr
verbunden! Dies ist nur ein großer Knackpunkt für mein Projekt, denn ohne das Addon bin ich genauso aufgeschmissen wie ohne funktionierendes Battle Event und
Force Action.

MfG
Mitsch93
»Mitsch93« hat folgende Datei angehängt:
  • Scripts.rxdata (232,98 kB - 6 mal heruntergeladen - zuletzt: 5. September 2013, 18:45)

Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

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

Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

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

3

Mittwoch, 8. Mai 2013, 16:26

/pushpush :D

Suche immer noch dringend nach einer Lösung.
Ums kurz zu fassen:
Das KS funktioniert einwandfrei. Allerdings gibts 2 Probleme mit dem Atoa's Active Time Battle (Addon des KS)

1.) Runden werden nicht gezählt. Wenn ich im Battle Event ein Event mit der Condition Turn 0+1X aufrufe, wird es GENAU
einmal aufgerufen und nicht jede Runde.
2.) CE, die per Skill aufgerufen werden, funktionieren nicht.

Wäre echt super froh, wenn jemand das auf die Reihe bekommen würde!
Ohne eine Lösung komme ich mit dem Projekt nicht weiter.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

4

Samstag, 11. Mai 2013, 18:49

Huhu,

Zu 1)
Die Sperre für Eventseiten wird am Ende einer Runde offenbar nicht zurückgesetzt.
Versuch mal die Methode atb_update im ATB-Script wie folgt zu erweitern, dann sollten die Seiten auch wieder jede Kampfrunde aufgerufen werden:
(Wahlweise kann stattdessen auch dieses Script direkt unter dem ATB-Script eingefügt werden)
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
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================
 
class Scene_Battle
 
  #--------------------------------------------------------------------------
  # * Scene_Battle#atb_update
  # Überschrieben: Setzt die Sperre für "Turn"-Events am Ende einer Runde zurück
  #--------------------------------------------------------------------------
  def atb_update
    @wait_on = wait_on
    return if @wait_on
    @atb_turn_count += 1 if Custom_Turn_Count == 2
    if @atb_turn_count >= @abt_turn_speed
      @update_turn_end = true
      $game_temp.battle_turn += 1
      ### Edit: ###
      $data_troops[@troop_id].pages.each_with_index do |page, index|
        $game_temp.battle_event_flags[index] = false  if page.span == 1
      end
      #############
      turn_count_speed
      for battler in $game_party.actors + $game_troop.enemies
        battler.remove_states_auto if battler.exist?
      end
      setup_battle_event
    end
    for battler in $game_party.actors + $game_troop.enemies
      unless battler == @action_battler or
         (@escaping and battler.actor? and @escape_type > 0)
        battler.atb_update if battler.exist? and not battler.restriction == 4
      end
    end
    update_meters
  end
end
zum Lesen den Text mit der Maus markieren


Zu 2)
...könntest du es mit diesem Script versuchen (ebenfalls direkt unter dem ATB-Script einfügen).
Die Lösung ist nicht optimal und ich kann leider auch noch nicht 100%ig versprechen dass sie genau tut was sie soll, sie scheint aber zu funktionieren.
Die Änderungen an den einzelnen Methoden sind jeweils im Kommentar über der Methode beschrieben:

<Spoiler veraltet, siehe hier>

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Irrlicht« (6. Oktober 2013, 12:44)


Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

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

5

Sonntag, 12. Mai 2013, 17:09

Hey,
ich habe mal deinen Code zu 1) eingefügt und getestet.
Es funktioniert wunderbar! Und nebenbei wurde mit dem Code direkt auch 2) behoben! :D
Vielen Dank für deine Hilfe! Alleine hätt ich das nie hinbekommen! :cookie3:
:give_rose:

Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

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

Mittwoch, 12. Juni 2013, 18:52

Ich habe nochmal ein Problem mit dem Battle Event.
Und zwar scheint Span Moment und Span Battle nicht so zu funktionieren, wie es eigentlich sollte.
Beide Funktionen funktionieren wie Span Turn und reagieren nicht direkt, wenn die Bedingung eingetreten ist.

Wäre cool, wenn der Bug auch noch beseitigt werden könnte!

Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

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

Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

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

Montag, 15. Juli 2013, 16:25

/push

Edit
/pushpush

Suche immer noch nach einem Fix für Span: Battle und Span: Moment

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Mitsch93« (15. Juli 2013, 16:25)


Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

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

9

Dienstag, 3. September 2013, 20:02

Sorry, dass ich das Thema nochmal rausgraben muss, aber:

Ich habe diesen Fix für das Force Action Problem.
Allerdings funktioniert der nur für Auto Attack und nicht, wenn ich bei Force Action
einen Skill auswähle.

Suche DRINGEND einen Fix!!!

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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
class Interpreter
 
  #--------------------------------------------------------------------------
  # * Force Action
  # Überschrieben: Erzwungene Handlungen sollen auch ausgeführt werden wenn
  #     die erste Kampfrunde noch nicht beendet wurde.
  #--------------------------------------------------------------------------
  def command_339
    # Ignore if not in battle
    unless $game_temp.in_battle
      return true
    end
    # Ignore if number of turns = 0
    ### EDIT ###
    # if $game_temp.battle_turn == 0
    #   return true
    # end
    ############
    # Process with iterator (For convenience, this process won't be repeated)
    iterate_battler(@parameters[0], @parameters[1]) do |battler|
      # If battler exists
      if battler.exist?
        # Set action
        battler.current_action.kind = @parameters[2]
        if battler.current_action.kind == 0
          battler.current_action.basic = @parameters[3]
        else
          battler.current_action.skill_id = @parameters[3]
        end
        # Set action target
        if @parameters[4] == -2
          if battler.is_a?(Game_Enemy)
            battler.current_action.decide_last_target_for_enemy
          else
            battler.current_action.decide_last_target_for_actor
          end
        elsif @parameters[4] == -1
          if battler.is_a?(Game_Enemy)
            battler.current_action.decide_random_target_for_enemy
          else
            battler.current_action.decide_random_target_for_actor
          end
        elsif @parameters[4] >= 0
          battler.current_action.target_index = @parameters[4]
        end
        # Set force flag
        battler.current_action.forcing = true
        # If action is valid and [run now]
        if battler.current_action.valid? and @parameters[5] == 1
          # Set battler being forced into action
          $game_temp.forcing_battler = battler
          # Advance index
          @index += 1
          # End
          return false
        end
      end
    end
    # Continue
    return true
  end
end
 
 
#==============================================================================
# ** Game_Battler
#------------------------------------------------------------------------------
#  This class deals with battlers. It's used as a superclass for the Game_Actor
#  and Game_Enemy classes.
#==============================================================================
 
class Game_Battler
 
  #--------------------------------------------------------------------------
  # * Game_Battler#atb_full?
  # Überschrieben: Ein Kämpfer der zur sofortigen Handlung gezwungen ist erhält
  #     eine volle ATB-Leiste um agieren zu können.
  #--------------------------------------------------------------------------
  alias_method(:atb_full_ILC_TEST, :atb_full?)
  def atb_full?
    atb_full_ILC_TEST or self == $game_temp.forcing_battler
  end
end
 
 
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================
 
class Scene_Battle
 
  #--------------------------------------------------------------------------
  # * Scene_Battle#update_phase4_step6
  # Überschrieben: Löscht das "forcing"-Flag der Aktion um zu verhindern
  #     dass eine Aktion ein zweites Mal als "erzwungen" ausgeführt wird.
  #--------------------------------------------------------------------------
  alias_method(:update_phase4_step6_ILC_TEST, :update_phase4_step6)
  def update_phase4_step6
    update_phase4_step6_ILC_TEST
    @active_battler.current_action.forcing = false
  end
 
  #--------------------------------------------------------------------------
  # * Scene_Battle#update
  # Überschrieben: Ein laufendes Battle-Event wird ignoriert solange ein Kämpfer
  #     zur Ausführung einer Aktion gezwungen ist.
  #--------------------------------------------------------------------------
  def update
    if @phase == 1
      $game_temp.battle_main_phase = true
      @actor_command_window.opacity = 0
      @phase = 0
    elsif @phase != 5
      @phase = 0
    end
    @event_running = true if $game_system.battle_interpreter.running?
    acbs_update_atb
    ### Edit: ###
    if $game_temp.forcing_battler == nil
      if $game_system.battle_interpreter.running?
        return
      elsif @event_running
        @status_window.refresh
        @event_running = false
      end
    end
    #############
    return $scene = Scene_Gameover.new if $game_temp.gameover
    return update_phase5 if @phase == 5
    @event_running = true if $game_system.battle_interpreter.running?
    if @update_turn_end
      turn_ending 
      @update_turn_end = false
    end
    if Input.press?(Escape_Input) and @escape_type > 0 
      if $game_temp.battle_can_escape
        $game_temp.max_escape_count = update_phase2_escape_rate
        $game_temp.escape_count += 2 unless @wait_on
        @escaping = true
        if !@help_window.visible and @escape_type == 1
          @help_window.set_text('')
          @help_window.set_text(Escape_Message, 1)
        end
        if @escape_type == 2
          if @escape_atb_meters.nil?
            @escape_atb_meters = Escape_Meters.new
            @escape_meter_opacity = 0
            @escape_atb_meters.visible = true
          else @escape_atb_meters != nil
            @escape_atb_meters.opacity = 15 * @escape_meter_opacity
            @escape_meter_opacity = [@escape_meter_opacity + 1, 17].min
            @escape_atb_meters.refresh
          end
        end
        if $game_temp.escape_count >= $game_temp.max_escape_count
          $game_temp.escape_count = 0
          update_phase2_escape unless $game_party.all_dead?
        end
      else
        @help_window.set_text(Cant_Escape_Message, 1) if @escape_type == 1        
        if @escape_type == 2       
          if @escape_atb_meters.nil?
            @escape_atb_meters = Escape_Meters.new
            @escape_meter_opacity = 0
            @escape_atb_meters.visible = true
          else @escape_atb_meters != nil
            @escape_atb_meters.opacity = 15 * @escape_meter_opacity
            @escape_meter_opacity = [@escape_meter_opacity + 1, 17].min
            @escape_atb_meters.refresh
          end
        end
      end
    elsif @escape_type > 0
      if @escaping
        @escaping = false
        @help_window.visible = false
      end
      $game_temp.escape_count = [$game_temp.escape_count - 1, 0].max unless @wait_on
      if @escape_atb_meters != nil and $game_temp.escape_count == 0
        @escape_atb_meters.opacity = 15 * @escape_meter_opacity
        @escape_meter_opacity = [@escape_meter_opacity - 1, 0].max
        if @escape_meter_opacity == 0
          @escape_atb_meters.dispose 
          @escape_atb_meters = nil
        end
      end
      @escape_atb_meters.refresh if @escape_atb_meters != nil
    end
    return if @escaped
    atb_update
    input_battler_update(false)
    if @action_battlers[0] != nil && @action_battler.nil?
      @action_battlers.flatten!
      @action_battler = @action_battlers[0]
      if @action_battler.dead?
        @action_battler.atb = 0
        @action_battler = nil
      else
        start_phase4
      end
    end
    if @action_battler != nil && !@spriteset.effect?
      @active_battler = @action_battler
      update_phase4
    end
  end
 
  #--------------------------------------------------------------------------
  # * Scene_Battle#turn_ending
  # Überschrieben: Da die Methode nun zu jeder Zeit aufgerufen werden kann dürfen
  #     die Aktionen der Kämpfer nicht zurückgesetzt werden um zu vermeiden dass
  #     über "Force Action" reservierte Aktionen abgebrochen werden. Aktionen
  #     ohne "forcing"-Flag werden ersetzt sobald der entspr. Kämpfer wieder
  #     am Zug ist.
  #--------------------------------------------------------------------------
  def turn_ending
    for member in $game_party.actors + $game_troop.enemies
      ### EDIT ###
      # member.current_action.clear
      ############
      next unless member.exist?
      member.slip_damage = false
      actor = member.actor?
      for state in member.battler_states
        member.remove_state(state.id) if state.extension.include?("ZEROTURNLIFT")
      end
      damage = 0
      for state in member.battler_states
        next unless state.extension.include?("SLIPDAMAGE")
        for ext in state.slip_extension
          if ext[0] == "hp"
            base_damage = ext[1] + member.maxhp * ext[2] / 100
            damage += base_damage + base_damage * (rand(5) - rand(5)) / 100
            slip_pop = ext[3]
            slip_dead = ext[4]
            slip_damage_flug = true
            member.slip_damage = true
          end
        end  
      end
      if member.slip_damage && member.exist? && !slip_damage_flug
        damage += member.apply_variance(member.maxhp / 10, 10)
        slip_dead = false
        slip_pop = true
        slip_damage_flug = true
        member.slip_damage = true
      end
      damage = member.hp - 1 if damage >= member.hp && slip_dead = false
      member.hp -= damage
      member.damage = damage if damage > 0
      member.perform_collapse if member.dead? && member.slip_damage
      @spriteset.set_damage_pop(actor, member.index, damage) if slip_pop
      @spriteset.set_stand_by_action(actor, member.index) if member.hp <= 0 and not member.dead_anim
      member.dead_anim = member.dead? ? true : false
    end
    @status_window.refresh
    wait(DMG_DURATION / 2) if slip_damage_flug
    slip_damage_flug = false
    for member in $game_party.actors + $game_troop.enemies
      next unless member.exist?
      actor = member.actor?
      damage = 0
      for state in member.battler_states
        next unless state.extension.include?("SLIPDAMAGE")
        for ext in state.slip_extension
          if ext[0] == "mp"
            base_damage = ext[1] + member.maxsp * ext[2] / 100
            damage += base_damage + base_damage * (rand(5) - rand(5)) / 100
            slip_pop = ext[3]
            slip_damage_flug = true
          end
        end
        member.sp_damage = true
        member.sp -= damage
        member.damage = damage if damage > 0
        @spriteset.set_damage_pop(actor, member.index, damage) if slip_pop
      end
    end
    @status_window.refresh
    wait(DMG_DURATION / 2) if slip_damage_flug
    for member in $game_party.actors + $game_troop.enemies
      next unless member.exist?
      actor = member.actor?
      damage = 0
      for state in member.battler_states
        next unless state.extension.include?("REGENERATION")
        for ext in state.slip_extension
          if ext[0] == "hp"
            base_damage = ext[1] + member.maxhp * ext[2] / 100
            damage += base_damage + base_damage * (rand(5) - rand(5)) / 100
            slip_pop = ext[3]
            slip_damage_flug = true
          end
        end
        member.hp -= damage
        member.damage = damage if damage < 0
        @spriteset.set_damage_pop(actor, member.index, damage) if slip_pop
      end   
    end
    @status_window.refresh
    wait(DMG_DURATION / 2) if slip_damage_flug
    for member in $game_party.actors + $game_troop.enemies
      next unless member.exist?
      actor = member.actor?
      damage = 0
      for state in member.battler_states
        next unless state.extension.include?("REGENERATION")
        for ext in state.slip_extension
          if ext[0] == "mp"
            base_damage = ext[1] + member.maxhp * ext[2] / 100
            damage += base_damage + base_damage * (rand(5) - rand(5)) / 100
            slip_pop = ext[3]
            slip_damage_flug = true
          end
        end
        member.sp_damage = true
        member.sp -= damage  
        member.damage = damage if damage < 0
        @spriteset.set_damage_pop(actor, member.index, damage) if slip_pop
      end
    end
    @status_window.refresh
    wait(DMG_DURATION / 2) if slip_damage_flug
  end
end

zum Lesen den Text mit der Maus markieren

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

10

Dienstag, 3. September 2013, 20:53

Mmm, meine das damals bei mir mit "Heal" ausgetestet zu haben...
Ich muss mal schauen wo ich das Projekt hingeschmissen hab.^^

Ansonsten aber nochmal 3 kleine Rückfragen:
Verwendest du "Execute Now" oder "Execute in Normal Sequence"?
Wird der Befehl einfach ignoriert, greift der Battler stattdessen an, friert das Spiel ein oder kommt es zu einer Fehlermeldung?
Hat sich dein Scriptsatz gegenüber den hier geposteten Dateien und Scripts nochmal verändert?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Irrlicht« (3. September 2013, 22:25)


Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

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

11

Donnerstag, 5. September 2013, 15:43

Ich verwende "Execute Now".
Der Befehl wird einfach übersprungen, der Kampf geht reibungslos weiter.
Wie gesagt, wenn ich nur sage "Normal Attack Execute Now", dann funktioniert es.

Ich benötige das halt, um einen Skill zu entwerfen, der Schaden verursacht, und falls das
Ziel einen bestimmten Status hat, auf den nächsten Gegner überspringt und wieder Schaden anrichtet (Skill wird nochmal gecastet).
Und das ganze bis zu 4 mal.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

12

Donnerstag, 5. September 2013, 18:51

Mmmm, könntest du evtl. nochmal deine Scripts-Datei hochladen? Die aus dem Startpost scheint nicht aktuell zu sein (es wird gar kein ATB benutzt).
Die Scripts hatte ich bisher nur in der SBS-Demo getestet und da funktionierten die Skills ohne Probleme.

Ansonsten könnte es evtl. auch an der Zauberzeit des Skills liegen, die wird bisher nicht durch "Execute Now" abgekürzt. Der Skill sollte nach Ablauf der Zauberzeit aber trotzdem eingesetzt werden.

Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

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

13

Donnerstag, 5. September 2013, 19:29

Beim "Standart" Tankentai funktionieren eigentlich alle Funktionen ohne Probleme nur das
ATB Addon bringt die Fehler mit sich.

Der Skill hat keine Zauberzeit, sodass er eigentlich normal funktionieren sollte.
»Mitsch93« hat folgende Datei angehängt:
  • Scripts.rxdata (341,41 kB - 2 mal heruntergeladen - zuletzt: 6. Oktober 2013, 22:58)

Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

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

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

15

Sonntag, 6. Oktober 2013, 12:31

Sorry, ich hatte es relativ schnell halb fertig, hatte dann aber deinen Thread über die letzten Wochen verdrängt... :-/

Bei den Gegnern habe ich (wiedereinmal) nur eine Methode vergessen, sodass Gegner in ihrem Zug immer eine eigene Aktion gewählt haben.
Bei den Spielercharakteren lag das Problem am Tankentai-SBS selbst, jeder musste berechtigt sein seine Aktion auszuführen (was bei einem Actor bedeutete dass er den Skill gelernt haben musste)
Bei Zaubern mit Zauberzeit gab es ein ähnliches Problem, nur war hier nicht vorgesehen dass eine "erzwungene" Aktion nach dem zaubern immernoch als "erzwungen" gelten sollte.

Die Umsetzung ist an einigen Stellen evtl. etwas unübersichtlicht geworden, aber ich hoffe es funktioniert jetzt:
Das Script musste in zwei Teile gespalten werden:
Der erste Teil beinhaltet die Anpassungen am Standard-KS bzw. dem Tankentai-SBS und muss zwischen dem Tankentai-SBS und dem ATB-Addon eingefügt werden.
Der zweite Teil enthält die Änderungen am ATB-Addon und sollte wie gehabt unter dem ATB-Addon platziert werden.
Spoiler: Teil 1

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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
class Interpreter
 
  #--------------------------------------------------------------------------
  # * Force Action
  # Override: Do not ignore turn 0 actions since it is a normal battle turn now.
  #--------------------------------------------------------------------------
  def command_339
    # Ignore if not in battle
    unless $game_temp.in_battle
      return true
    end
    # #NOT# Ignore if number of turns = 0    #EDIT
    #if $game_temp.battle_turn == 0
    #  return true
    #end
    # Process with iterator (For convenience, this process won't be repeated)
    iterate_battler(@parameters[0], @parameters[1]) do |battler|
      # If battler exists
      if battler.exist?
        battler.cast_action = nil  # Aktuelle Aktion ersetzen #EDIT
        # Set action
        battler.current_action.kind = @parameters[2]
        if battler.current_action.kind == 0
          battler.current_action.basic = @parameters[3]
        else
          battler.current_action.skill_id = @parameters[3]
        end
        # Set action target
        if @parameters[4] == -2
          if battler.is_a?(Game_Enemy)
            battler.current_action.decide_last_target_for_enemy
          else
            battler.current_action.decide_last_target_for_actor
          end
        elsif @parameters[4] == -1
          if battler.is_a?(Game_Enemy)
            battler.current_action.decide_random_target_for_enemy
          else
            battler.current_action.decide_random_target_for_actor
          end
        elsif @parameters[4] >= 0
          battler.current_action.target_index = @parameters[4]
        end
        # Set force flag
        battler.current_action.forcing = true
        # If action is valid and [run now]
        if battler.current_action.valid? and @parameters[5] == 1
          # Set battler being forced into action
          $game_temp.forcing_battler = battler
          # Advance index
          @index += 1
          # End
          return false
        end
      end
    end
    # Continue
    return true
  end
end
 
 
class Scene_Battle
 
  #--------------------------------------------------------------------------
  # * Scene_Battle#make_skill_action_result
  # Override: Don't check if a skill is usable when the current action is forced.
  #--------------------------------------------------------------------------
  def make_skill_action_result
    skill = $data_skills[@active_battler.current_action.skill_id]
    if skill.plus_state_set.include?(1)
      for member in $game_party.actors + $game_troop.enemies
        next if member.immortal
        next if member.dead?
        member.dying = true
      end
    else
      immortaling 
    end
    ### Edit: ###
    return unless @active_battler.current_action.forcing or
    @active_battler.skill_can_use?(skill.id)
    #############
    target_decision(skill)
    @active_battler.consum_skill_cost(skill)
    @status_window.refresh
    @spriteset.set_action(@active_battler.actor?, @active_battler.index, 
    skill.base_action)
    @help_window.set_text(skill.name, 1) unless skill.extension.include?("HELPHIDE")
    playing_action
    @common_event_id = skill.common_event_id
  end
 
  #--------------------------------------------------------------------------
  # * Scene_Battle#turn_ending
  # Override: Since the end of a turn may occur arbitrarily do not clear the
  # battlers actions.
  #--------------------------------------------------------------------------
  def turn_ending
    for member in $game_party.actors + $game_troop.enemies
      ### EDIT ###
      # member.current_action.clear
      ############
      next unless member.exist?
      member.slip_damage = false
      actor = member.actor?
      for state in member.battler_states
        member.remove_state(state.id) if state.extension.include?("ZEROTURNLIFT")
      end
      damage = 0
      for state in member.battler_states
        next unless state.extension.include?("SLIPDAMAGE")
        for ext in state.slip_extension
          if ext[0] == "hp"
            base_damage = ext[1] + member.maxhp * ext[2] / 100
            damage += base_damage + base_damage * (rand(5) - rand(5)) / 100
            slip_pop = ext[3]
            slip_dead = ext[4]
            slip_damage_flug = true
            member.slip_damage = true
          end
        end  
      end
      if member.slip_damage && member.exist? && !slip_damage_flug
        damage += member.apply_variance(member.maxhp / 10, 10)
        slip_dead = false
        slip_pop = true
        slip_damage_flug = true
        member.slip_damage = true
      end
      damage = member.hp - 1 if damage >= member.hp && slip_dead = false
      member.hp -= damage
      member.damage = damage if damage > 0
      member.perform_collapse if member.dead? && member.slip_damage
      @spriteset.set_damage_pop(actor, member.index, damage) if slip_pop
      @spriteset.set_stand_by_action(actor, member.index) if member.hp <= 0 and not member.dead_anim
      member.dead_anim = member.dead? ? true : false
    end
    @status_window.refresh
    wait(DMG_DURATION / 2) if slip_damage_flug
    slip_damage_flug = false
    for member in $game_party.actors + $game_troop.enemies
      next unless member.exist?
      actor = member.actor?
      damage = 0
      for state in member.battler_states
        next unless state.extension.include?("SLIPDAMAGE")
        for ext in state.slip_extension
          if ext[0] == "mp"
            base_damage = ext[1] + member.maxsp * ext[2] / 100
            damage += base_damage + base_damage * (rand(5) - rand(5)) / 100
            slip_pop = ext[3]
            slip_damage_flug = true
          end
        end
        member.sp_damage = true
        member.sp -= damage
        member.damage = damage if damage > 0
        @spriteset.set_damage_pop(actor, member.index, damage) if slip_pop
      end
    end
    @status_window.refresh
    wait(DMG_DURATION / 2) if slip_damage_flug
    for member in $game_party.actors + $game_troop.enemies
      next unless member.exist?
      actor = member.actor?
      damage = 0
      for state in member.battler_states
        next unless state.extension.include?("REGENERATION")
        for ext in state.slip_extension
          if ext[0] == "hp"
            base_damage = ext[1] + member.maxhp * ext[2] / 100
            damage += base_damage + base_damage * (rand(5) - rand(5)) / 100
            slip_pop = ext[3]
            slip_damage_flug = true
          end
        end
        member.hp -= damage
        member.damage = damage if damage < 0
        @spriteset.set_damage_pop(actor, member.index, damage) if slip_pop
      end   
    end
    @status_window.refresh
    wait(DMG_DURATION / 2) if slip_damage_flug
    for member in $game_party.actors + $game_troop.enemies
      next unless member.exist?
      actor = member.actor?
      damage = 0
      for state in member.battler_states
        next unless state.extension.include?("REGENERATION")
        for ext in state.slip_extension
          if ext[0] == "mp"
            base_damage = ext[1] + member.maxhp * ext[2] / 100
            damage += base_damage + base_damage * (rand(5) - rand(5)) / 100
            slip_pop = ext[3]
            slip_damage_flug = true
          end
        end
        member.sp_damage = true
        member.sp -= damage  
        member.damage = damage if damage < 0
        @spriteset.set_damage_pop(actor, member.index, damage) if slip_pop
      end
    end
    @status_window.refresh
    wait(DMG_DURATION / 2) if slip_damage_flug
  end
end
zum Lesen den Text mit der Maus markieren
Spoiler: Teil 2

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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
#==============================================================================
# ** Game_Battler
#------------------------------------------------------------------------------
#  This class deals with battlers. It's used as a superclass for the Game_Actor
#  and Game_Enemy classes.
#==============================================================================
 
class Game_Battler
 
  attr_accessor :cast_action_forced  # Detect forced actions after casting
 
  #--------------------------------------------------------------------------
  # * Game_Battler#atb_full?
  # Override: Set ATB to "full" when forced to execute an instant action.
  #--------------------------------------------------------------------------
  alias_method(:atb_full_ILC_allowInstantForcedActions, :atb_full?)
  def atb_full?
    atb_full_ILC_allowInstantForcedActions or self == $game_temp.forcing_battler
  end
end
 
 
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================
 
class Scene_Battle
 
  #--------------------------------------------------------------------------
  # * Scene_Battle#update_phase4_step6
  # Override: Actions get cleared after their execution rather than at the end
  # of a round.
  #--------------------------------------------------------------------------
  alias_method(:update_phase4_step6_ILC_clearAction, :update_phase4_step6)
  def update_phase4_step6
    update_phase4_step6_ILC_clearAction
    # Once executed the action isn't forced any more:
    @active_battler.current_action.clear
  end
 
  #--------------------------------------------------------------------------
  # * Scene_Battle#update
  # Override: Pauses any battle-event-execution while a battler is forced to act.
  #--------------------------------------------------------------------------
  def update
    if @phase == 1
      $game_temp.battle_main_phase = true
      @actor_command_window.opacity = 0
      @phase = 0
    elsif @phase != 5
      @phase = 0
    end
    @event_running = true if $game_system.battle_interpreter.running?
    acbs_update_atb
    ### Edit: ###
    if $game_temp.forcing_battler == nil
      if $game_system.battle_interpreter.running?
        return
      elsif @event_running
        @status_window.refresh
        @event_running = false
      end
    end
    #############
    return $scene = Scene_Gameover.new if $game_temp.gameover
    return update_phase5 if @phase == 5
    @event_running = true if $game_system.battle_interpreter.running?
    if @update_turn_end
      turn_ending 
      @update_turn_end = false
    end
    if Input.press?(Escape_Input) and @escape_type > 0 
      if $game_temp.battle_can_escape
        $game_temp.max_escape_count = update_phase2_escape_rate
        $game_temp.escape_count += 2 unless @wait_on
        @escaping = true
        if !@help_window.visible and @escape_type == 1
          @help_window.set_text('')
          @help_window.set_text(Escape_Message, 1)
        end
        if @escape_type == 2
          if @escape_atb_meters.nil?
            @escape_atb_meters = Escape_Meters.new
            @escape_meter_opacity = 0
            @escape_atb_meters.visible = true
          else @escape_atb_meters != nil
            @escape_atb_meters.opacity = 15 * @escape_meter_opacity
            @escape_meter_opacity = [@escape_meter_opacity + 1, 17].min
            @escape_atb_meters.refresh
          end
        end
        if $game_temp.escape_count >= $game_temp.max_escape_count
          $game_temp.escape_count = 0
          update_phase2_escape unless $game_party.all_dead?
        end
      else
        @help_window.set_text(Cant_Escape_Message, 1) if @escape_type == 1        
        if @escape_type == 2       
          if @escape_atb_meters.nil?
            @escape_atb_meters = Escape_Meters.new
            @escape_meter_opacity = 0
            @escape_atb_meters.visible = true
          else @escape_atb_meters != nil
            @escape_atb_meters.opacity = 15 * @escape_meter_opacity
            @escape_meter_opacity = [@escape_meter_opacity + 1, 17].min
            @escape_atb_meters.refresh
          end
        end
      end
    elsif @escape_type > 0
      if @escaping
        @escaping = false
        @help_window.visible = false
      end
      $game_temp.escape_count = [$game_temp.escape_count - 1, 0].max unless @wait_on
      if @escape_atb_meters != nil and $game_temp.escape_count == 0
        @escape_atb_meters.opacity = 15 * @escape_meter_opacity
        @escape_meter_opacity = [@escape_meter_opacity - 1, 0].max
        if @escape_meter_opacity == 0
          @escape_atb_meters.dispose 
          @escape_atb_meters = nil
        end
      end
      @escape_atb_meters.refresh if @escape_atb_meters != nil
    end
    return if @escaped
    atb_update
    input_battler_update(false)
    if @action_battlers[0] != nil && @action_battler.nil?
      @action_battlers.flatten!
      @action_battler = @action_battlers[0]
      if @action_battler.dead?
        @action_battler.atb = 0
        @action_battler = nil
      else
        start_phase4
      end
    end
    if @action_battler != nil && !@spriteset.effect?
      @active_battler = @action_battler
      update_phase4
    end
  end
 
  #--------------------------------------------------------------------------
  # * Scene_Battle#battler_turn
  # Override: If an enemies action is forced don't create a new one.
  #--------------------------------------------------------------------------
  def battler_turn(battler)
    battler.turn_count += 1
    if battler.is_a?(Game_Actor)
      if battler.inputable? and battler.cast_action.nil?
        @input_battlers << battler
      else
        if battler.restriction == 2 || battler.restriction == 3
          battler.current_action.kind = 0
          battler.current_action.basic = 0
        end
        battler.defense_pose = false
        @action_battlers << battler
      end
    else
      battler.make_action  unless battler.current_action.forcing
      @action_battlers << battler
    end
  end
 
  #--------------------------------------------------------------------------
  # * Scene_Battle#update_phase4_step2
  # Override: Restore 'forced' status of casted actions
  #--------------------------------------------------------------------------
  def update_phase4_step2
    @active_battler.defense_pose = false
    if @active_battler.cast_action != nil
      active_cast = @active_battler.cast_action
      if active_cast.scope == 1 or active_cast.scope == 3 or active_cast.scope == 5
        @active_battler.current_action.target_index = @active_battler.cast_target
      end
      if active_cast.is_a?(RPG::Skill)
        @active_battler.current_action.kind = 1 
        @active_battler.current_action.skill_id = @active_battler.cast_action.id
      elsif active_cast.is_a?(RPG::Item)  
        @active_battler.current_action.kind = 2 
        @active_battler.current_action.item_id = @active_battler.cast_action.id
      end
      @active_battler.current_action.forcing = @active_battler.cast_action_forced
    end
    for state in @active_battler.battler_states
      @active_battler.remove_state(state.id) if state.extension.include?("ZEROTURNLIFT")
    end
    acbs_update_phase4_step2_atb
  end
 
  #--------------------------------------------------------------------------
  # * Scene_Battle#make_skill_action_result
  # Override: Remember 'forced' status of casted actions.
  #--------------------------------------------------------------------------
  def make_skill_action_result
    skill = $data_skills[@action_battler.current_action.skill_id]
    if @action_battler.cast_action == nil
      @active_battler.cast_action = skill
      @active_battler.cast_target = @active_battler.current_action.target_index
      @active_battler.cast_action_forced = @active_battler.current_action.forcing
      @cast_speed = skill.cast_speed(@active_battler)
      @active_battler.cast_action = nil if @cast_speed == 0
      @spriteset.set_stand_by_action(@active_battler.actor?, @active_battler.index)
      return unless @cast_speed == 0
    end
    make_skill_action_result_atb_n01
    @active_battler.cast_action = nil
  end
end
zum Lesen den Text mit der Maus markieren


Gruß
Irrlicht

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Irrlicht« (7. Oktober 2013, 23:09)


Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

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

16

Montag, 7. Oktober 2013, 20:28

Saubere Arbeit ! Danke!
Soweit ich probiert habe funktioniert jetzt alles

Edit
Ahhhhhhhhhhhhh!
Zu früh gefreut.
Jetzt wirds aber richtig kniffelig bzw ich versteh einfach nix mehr.

Mal konkret zu meinem Problem:
Skill: Magmawalze
Tritt einen Gegner, sollte dieser VERBRANNT sein, springt die Walze auf den nächsten Gegner über (per FORCE ACTION).
Ist dieser Gegner wiederrum VERBRANNT, springt die Walze nochmals zum nächsten Gegner über.
Das ganze geschieht bis zu 3- mal (insg. 4 mal. Einmal durch Anwenden des Skills + 3 mal durch "Weiterspringen")

Beispiel: 5 Gegner, Gegner 1,3,5 sind verbrannt. Der Spieler zielt auf Gegner 3.
Gegner 3 wird getroffen, Gegner 3 wird getroffen, Gegner 1 wird getroffen, Gegner 3 wird getroffen (ingesamt 4 Treffer).

Beispiel: 5 Gegner, Gegner 1,2,5 sind verbrannt. Der Spieler zielt auf Gegner 5.
Gegner 5 wird getroffen, Gegner 1 wird getroffen, Gegner 2 wird getroffen, Gegner 5 wird getroffen. Ende.


Meinen Code, den ich geschrieben habe ist eigentlich Idiotensicher und ich hab mehrmals versucht das ganze praktisch nachzuollziehen und es MUSS klappen.
In meinem Testlauf verhält das sich aber ähnlich wie beim Doppelspaltexperiment: Unvorhersehbar, unnachvollziehar.
Z.B. wenn ich Gegner 1 anvisiere wird dieser getroffen und ebenso Gegner 2 (was auch richtig ist), aber danach hörts dann auf - Ende.

Ich habe mal folgendes ausprobiert:
Ein Skill ruft ein CE auf, dessen Inhalt folgender ist:

Quellcode

1
2
3
FOCE ACTION "SKILL" AUF GEGNER 1, EXECUTE NOW
FOCE ACTION "SKILL" AUF GEGNER 1, EXECUTE NOW
FOCE ACTION "SKILL" AUF GEGNER 1, EXECUTE NOW

Also müsste der Held ja einfach dem Gegner 1 dreimal auf die Birne hauen mit dem Skill.

Es geschieht aber folgendes: Der erste FORCE ACTION- Befehl wird ausgeführt, danach geschieht nichts, Kampf läuft normal weiter.
Jetzt habe ich das Projekt kopiert und alle Skripte, die ich eingefügt habe, gelöscht. Also auf Standart zurückgesetzt.
Nun geschieht aber das gleiche.

Noch größere Verwirrung richtet folgender Sachverhalt bei mir an:
ES HAT DOCH MAL GEKLAPPT :D

In meinem alten Projekt (Todesauftrag, verwendetes KS: RTAB) habe ich die Gegner dreimal hintereinander auf einen Helden einschlagen lassen, ebenso
die Helden auf die Gegner (alles per CE) und es hat funktioniert!
Ebenso bei meinem Tutorial über den Bosskampf hab ich das gemacht (siehe Signatur zum Link) und es hat geklappt (auch im Standart- KS).

Aber wieso klappt das denn bitte jetzt nicht (ebenfalls im Standart-KS)?

Hier ein Screen aus dem aktuellen Projekt: (CE das durch Skill aufgerufen wird)
Bild

Hier ein Screen aus Todesauftrag (ja, es hat geklappt):
Bild


Also langsam weiß ich echt nicht mehr weiter.


PS: Ich würde ja vermuten, dass der Skript das "Execute Now" nicht mag oder irgendwie nicht richtig verwertet, aber das ist ja Unsinn, da es nun sogar nicht mal im
Projekt funktioniert, in dem ALLE anderen Skripts gelöscht wurden.


EDIT 2:
Um ganz sicher zu gehen habe ich nochmal ein ganz neues Projekt gemacht und einfach mal ausprobiert, ob der obige Code funktioniert.
Und ja, das tut er. Also muss es noch irgendwo im Projekt dran liegen, aber ich hab mittlerweile keine Ahnung mehr, wo der Fehler sein könnte. Ich teste mal weiter






Edit

Fehler gefunden:
Scheinbar sagt das Standart- KS "NEIN", wenn ich 3 mal hintereinander einen Skill verwenden will (warum auch immer).
Autohits kann ich soviele draufkloppen wie ich will, also so 5 mal hintereinander.
Aber bei einem Skill geht das nur einmal!
Dabei ist es egal, ob ich

Quellcode

1
2
3
FORCE ACTION "SKILL", GEGNER 1, EXECUTE NOW
FORCE ACTION "SKILL", GEGNER 1, EXECUTE NOW
FORCE ACTION "SKILL", GEGNER 1, EXECUTE NOW


oder

Quellcode

1
2
3
FORCE ACTION "SKILL", GEGNER 1, EXECUTE NOW
FORCE ACTION "FEUER", GEGNER 1, EXECUTE NOW
FORCE ACTION "EIS", GEGNER 1, EXECUTE NOW



Skill ist Skill und nachdem EINER ausgeführt wird, scheint die Ende für den jeweiligen Helden zuende zu sein.
Gut, lässt sich das beheben?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Mitsch93« (7. Oktober 2013, 19:58)


Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

17

Montag, 7. Oktober 2013, 23:08

Mmm, ein Problem hab ich tatsächlich noch vergessen:
Wenn du "Force Action" auf einen Battler verwendest der gerade eine Fähigkeit auflädt (mit Zauberzeit) wird die neue Aktion von der gerade gezauberten überdeckt, d.h. der Battler kommt zwar zum Zug, führt aber nur die gerade aufgeladene Aktion aus. Die einfachste Lösung wäre auch die gerade gezauberte Aktion abzubrechen, Scriptteil 1 aus dem letzten Post wurde dafür aktualisiert.
Wenn du hier eine andere Lösung brauchst müsstest du bescheid sagen. ^^

Dass das allerdings der Grund für dein Problem ist wage ich zu bezweifeln, damit nur ein Skill (der zweite) ausgeführt wird müsste der Battler allerdings schon gerade dabei sein eine Fähigkeit aufladen (wird nicht passieren wenn das Commonevent erst durch die Aktion des Battlers ausgelöst wurde) und der zweite "Force Action" - Skill müsste ebenfalls Zauberzeit haben.
Abgesehen von dem Szenario konnte ich das Problem nicht nachvollziehen.

Magst evtl. nochmal eine Demo posten?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Irrlicht« (7. Oktober 2013, 23:46)


Mitsch93

Drachentöter

  • »Mitsch93« ist der Autor dieses Themas

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

18

Mittwoch, 9. Oktober 2013, 14:54

D--monenseele-2.exe

Bist direkt auf der Testmap, kannst sowohl den Vorläufer von der geplanten "Magmawalze" als auch einfachen Testskill der einfach nur
3 Skillangriffe hintereinander aktivieren soll.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

19

Donnerstag, 10. Oktober 2013, 23:40

Das liegt daran dass immer nur ein einziges Event gleichzeitig ausgeführt werden kann.
Wenn ein Event aktiv ist, eine (erzwungene) Handlung aber ein anderes Common-Event auslöst wird das neue Event das alte ersetzen, in diesem Fall das leere Common-Event 23.
Ließe sich bei Bedarf ändern, allerdings vermute ich dass hier einfach nur vergessen wurde das Common-Event aus der Testschaden-Aktion zu entfernen. :)

Ich werd das Script oben in naher Zukunft nochmal anpassen, im Moment kann es unter Umständen noch vorkommen dass wärend eines "Force Action" auch andere Battler zum Zug kommen können.
(Naja, das hat man davon wenn man auf Biegen und Brechen irgendwelche Fixes "auf gut Glück" einfügt *duck*)

Social Bookmarks