• Anmelden

1

Dienstag, 17. August 2010, 19:34

Skillprioritäten

Hallo Leute!

Es geht diesmal darum, ob es machbar ist, dass bestimmte Skills immer als erstes benutzt werden, egal welcher Actor oder Gegner nun am schnellsten ist. Ich benutze folgendes Script, um Limitangriffe dabei zu haben. Genau bei denen soll das dann so sein. Ließe sich das irgendwie einstellen?

Spoiler

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
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/  ◆オーバードライブ - KGC_OverDrive◆
#_/----------------------------------------------------------------------------
#_/ 専用のゲージがMAXになったときのみ使用可能になるスキルを作成します。
#_/============================================================================
#_/  ≪SP消費改造[SPCostAlter]≫より下
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 
#==============================================================================
# ★ カスタマイズ項目 ★
#==============================================================================
 
module KGC
  # ◆OverDriveゲージ最大値
  #  (通常はこのままでOK。どうしてもバランスがおかしくなる場合のみ変更)
  OD_GAUGE_MAX = 350
  # ◆OverDriveゲージ増加率
  #  高いほどゲージが溜まりやすい。
  #  順番(INDEX)および条件は以下の通り。
  # 【0..攻撃  1..被ダメージ  2..勝利  3..逃走  4..孤独  5..行動  6..瀕死】
  #  ↑これらのINDEXは、アクターのドライブタイプと対応。
  #  0,1 は、ダメージ量に応じて増加量が変動。
  OD_GAIN_RATE = [10, 60, 200, 100, 160, 40, 160]
end
 
class Window_Base < Window
  # ◆OverDriveゲージ画像
  @@_od_gauge = RPG::Cache.picture("od_gauge.png")
  # ◆OverDriveゲージを斜めにする
  OD_GAUGE_SLANT = true
  # ◆非戦闘時OverDriveゲージ位置
  #  大きいほど名前から離れた位置に描画される。
  OD_GAUGE_OFF_Y = 26
  # ◆戦闘時OverDriveゲージ位置
  OD_GAUGE_OFF_Y_BATTLE = 26
  # ◆非戦闘時はゲージを隠す
  OD_GAUGE_HIDE = false
end
 
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
 
$imported["OverDrive"] = true
 
# OverDrive属性
$game_special_elements["overdrive"] = $data_system.elements.index("OverDrive")
 
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
 
#==============================================================================
# ■ Game_Battler (分割定義 3)
#==============================================================================
 
class Game_Battler
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :base_damage              # 基本ダメージ値
  #--------------------------------------------------------------------------
  # ● スキルの使用可能判定
  #--------------------------------------------------------------------------
  alias skill_can_use_KGC_OverDrive skill_can_use?
  def skill_can_use?(skill_id)
    # OverDriveスキル判定
    if self.is_a?(Game_Actor)
      skill = $data_skills[skill_id]
      if skill != nil && skill.element_set.include?($game_special_elements["overdrive"])
        if self.overdrive < KGC::OD_GAUGE_MAX
          return false
        end
      end
    end
 
    # 元の処理を実行
    return skill_can_use_KGC_OverDrive(skill_id)
  end
  #--------------------------------------------------------------------------
  # ● 通常攻撃の効果適用
  #--------------------------------------------------------------------------
  alias attack_effect_KGC_OverDrive attack_effect
  def attack_effect(attacker)
    @base_damage = nil
 
    # 元の処理を実行
    result = attack_effect_KGC_OverDrive(attacker)
 
    if @base_damage == nil
      # 基本ダメージ値を保存
      @base_damage = [attacker.atk - self.pdef / 2, 0].max *
        (20 + attacker.str) / 20
    end
    # ダメージを受けた場合
    if result && self.damage.is_a?(Numeric)
      # 攻撃時増加判定
      if attacker.is_a?(Game_Actor) && self.is_a?(Game_Enemy) &&
          attacker.overdrive_type == 0 && self.base_damage > 0
        # ODゲージ増加量計算
        od_up = [[self.damage * KGC::OD_GAIN_RATE[0] * 10 / self.base_damage, 1].max, 160].min
        # ODゲージ増加
        attacker.overdrive += od_up
      # 被ダメージ時増加判定
      elsif attacker.is_a?(Game_Enemy) && self.is_a?(Game_Actor) &&
          self.overdrive_type == 1 && self.base_damage > 0
        od_up = [self.damage * KGC::OD_GAIN_RATE[1] * 10 / self.maxhp, 1].max
        self.overdrive += od_up
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ● スキルの効果適用
  #--------------------------------------------------------------------------
  alias skill_effect_KGC_OverDrive skill_effect
  def skill_effect(user, skill)
    @base_damage = nil
 
    # 元の処理を実行
    result = skill_effect_KGC_OverDrive(user, skill)
 
    if @base_damage == nil
      # 威力を計算
      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
      # 倍率を計算
      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)
      # 基本ダメージを保存
      @base_damage = power * rate / 20
    end
    # ダメージを受けた場合
    if result && self.damage.is_a?(Numeric)
      # 攻撃時増加判定
      if user.is_a?(Game_Actor) && self.is_a?(Game_Enemy) &&
          user.overdrive_type == 0 && self.base_damage > 0
        # ODゲージ増加量計算
        od_up = [[self.damage * KGC::OD_GAIN_RATE[0] * 10 / self.base_damage, 1].max, 160].min
        # ODゲージ増加
        user.overdrive += od_up
      # 被ダメージ時増加判定
      elsif user.is_a?(Game_Enemy) && self.is_a?(Game_Actor) &&
          self.overdrive_type == 1 && self.base_damage > 0
        od_up = [self.damage * KGC::OD_GAIN_RATE[1] * 10 / self.maxhp, 1].max
        self.overdrive += od_up
      end
    end
    return result
  end
end
 
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
 
#==============================================================================
# ■ Game_Actor
#==============================================================================
 
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● セットアップ
  #--------------------------------------------------------------------------
  alias setup_KGC_OverDrive setup
  def setup(actor_id)
    # 元の処理を実行
    setup_KGC_OverDrive(actor_id)
 
    @overdrive = 1
    @overdrive_type = 1
  end
  #--------------------------------------------------------------------------
  # ● OverDriveゲージの取得
  #--------------------------------------------------------------------------
  def overdrive
    @overdrive = 0 if @overdrive == nil
    return @overdrive
  end
  #--------------------------------------------------------------------------
  # ● OverDriveゲージの操作
  #--------------------------------------------------------------------------
  def overdrive=(value)
    @overdrive = 0 if @overdrive == nil
    @overdrive = [[value, 0].max, KGC::OD_GAUGE_MAX].min
  end
  #--------------------------------------------------------------------------
  # ● OverDriveタイプの取得
  #--------------------------------------------------------------------------
  def overdrive_type
    @overdrive_type = 0 if @overdrive_type == nil
    return @overdrive_type
  end
  #--------------------------------------------------------------------------
  # ● OverDriveタイプの操作
  #--------------------------------------------------------------------------
  def overdrive_type=(value)
    @overdrive_type = 0 if @overdrive_type == nil
    @overdrive_type = value
  end
end
 
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
 
#==============================================================================
# ■ Window_Base
#==============================================================================
 
class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias initialize_KGC_OverDrive_Base initialize
  def initialize(x, y, width, height)
    @od_gauge = @@_od_gauge
    @od_g_width = @od_gauge.width / 3
    @od_g_height = (@od_gauge.height - 2) / 3
 
    # 元の処理を実行
    initialize_KGC_OverDrive_Base(x, y, width, height)
  end
  #--------------------------------------------------------------------------
  # ● ゲージ画像(マスター)を取得
  #--------------------------------------------------------------------------
  def _od_gauge
    return @@_od_gauge
  end
  #--------------------------------------------------------------------------
  # ● ゲージ画像(マスター)を設定
  #--------------------------------------------------------------------------
  def _od_gauge=(new_bitmap)
    @@_od_gauge.dispose
    @@_od_gauge = new_bitmap
  end
  #--------------------------------------------------------------------------
  # ● ゲージ画像を取得
  #--------------------------------------------------------------------------
  def od_gauge
    return @od_gauge
  end
  #--------------------------------------------------------------------------
  # ● ゲージ画像を設定
  #--------------------------------------------------------------------------
  def od_gauge=(new_bitmap)
    @od_gauge = new_bitmap
  end
  #--------------------------------------------------------------------------
  # ● 名前の描画
  #--------------------------------------------------------------------------
  alias draw_actor_name_KGC_OverDrive draw_actor_name
  def draw_actor_name(actor, x, y)
    unless (!$game_temp.in_battle && OD_GAUGE_HIDE)
      draw_actor_od_gauge(actor, x, y, 110)
    end
 
    # 元の処理を実行
    draw_actor_name_KGC_OverDrive(actor, x, y)
  end
  #--------------------------------------------------------------------------
  # ● OverDrive ゲージの描画
  #--------------------------------------------------------------------------
  def draw_actor_od_gauge(actor, x, y, width)
    # ゲージ幅計算
    if $game_temp.in_battle && self.is_a?(Window_BattleStatus)
      @gs_od[actor.index] = actor.overdrive if @gs_od[actor.index] == nil
      dx = actor.screen_x + 52 - @od_g_width
      dy = y + ($game_temp.in_battle ? OD_GAUGE_OFF_Y_BATTLE : OD_GAUGE_OFF_Y)
      dx -= 16 if $imported["HPSPAlter"] && !HPSP_DRAW_NAME_LUMP
      gw = @gs_od[actor.index] * @od_g_width / KGC::OD_GAUGE_MAX
      maximum = @gs_od[actor.index] == KGC::OD_GAUGE_MAX
    else
      @gauge_x = 0
      dx = x + width - @od_g_width - 13
      dy = y + ($game_temp.in_battle ? OD_GAUGE_OFF_Y_BATTLE : OD_GAUGE_OFF_Y)
      gw = actor.overdrive * @od_g_width / KGC::OD_GAUGE_MAX
      maximum = actor.overdrive == KGC::OD_GAUGE_MAX
    end
    # 斜め描画
    if OD_GAUGE_SLANT
      self.contents.fill_rect(dx, dy, @od_g_width + 7, 6, Color.new(0, 0, 0, 0))
      # 枠描画
      gy = @od_g_height + 1
      for i in 0...(@od_g_height + 2)
        self.contents.blt(dx + i, dy + gy - i, @od_gauge, Rect.new(0, gy - i, @od_g_width + 2, 1))
      end
      # 本体描画
      gy -= 1
      gy2 = @od_g_height * (maximum ? 3 : 2) + 1
      for i in 0...@od_g_height
        self.contents.blt(dx + i + 2, dy + gy - i, @od_gauge, Rect.new(@gauge_x, gy2 - i, gw, 1))
      end
    # 通常描画
    else
      self.contents.fill_rect(dx, dy, @od_g_width + 2, @od_g_height + 2, Color.new(0, 0, 0, 0))
      self.contents.blt(dx, dy, @od_gauge, Rect.new(0, 0, @od_g_width + 2, @od_g_height + 2))
      gy2 = @od_g_height * (maximum ? 2 : 1) + 2
      self.contents.blt(dx + 1, dy + 1, @od_gauge, Rect.new(@gauge_x, gy2, gw, @od_g_height))
    end
  end
end
 
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
 
#==============================================================================
# ■ Window_BattleStatus
#==============================================================================
 
class Window_BattleStatus < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias initialize_KGC_OverDrive initialize
  def initialize
    @gauge_x, @gs_od = 0, []
    @od_g_width = @@_od_gauge.width / 3
    @od_g_height = (@@_od_gauge.height - 2) / 3
 
    # 元の処理を実行
    initialize_KGC_OverDrive
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  alias refresh_KGC_OverDrive refresh
  def refresh
    # 元の処理を実行
    refresh_KGC_OverDrive
 
    for i in 0...$game_party.actors.size
      @gs_od[i] = $game_party.actors[i].overdrive
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias update_KGC_OverDrive update
  def update
    # 元の処理を実行
    update_KGC_OverDrive
 
    # ゲージ画像を流す
    unless $imported["HPSPAlter"]
      @gauge_x -= [@od_g_width / 20, 1].max
      @gauge_x = @od_g_width * 2 if @gauge_x < 0
    end
    for i in 0...$game_party.actors.size
      draw_actor_od_gauge($game_party.actors[i], 0, 0, 120)
    end
  end
end
 
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
 
#==============================================================================
# ■ Scene_Battle (分割定義 1)
#==============================================================================
 
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● バトル終了
  #     result : 結果 (0:勝利 1:逃走 2:敗北)
  #--------------------------------------------------------------------------
  alias battle_end_KGC_OverDrive battle_end
  def battle_end(result)
    case result
    when 0  # 勝利
      for actor in $game_party.actors
        next unless actor.exist?
        # ドライブタイプが「勝利」の場合は加算
        if actor.overdrive_type == 2
          actor.overdrive += KGC::OD_GAIN_RATE[2]
        end
      end
    when 1  # 逃走
      for actor in $game_party.actors
        next unless actor.exist?
        # ドライブタイプが「逃走」の場合は加算
        if actor.overdrive_type == 3
          actor.overdrive += KGC::OD_GAIN_RATE[3]
        end
      end
    end
 
    # 元の処理を実行
    battle_end_KGC_OverDrive(result)
  end
end
 
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
 
#==============================================================================
# ■ Scene_Battle (分割定義 4)
#==============================================================================
 
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
  #--------------------------------------------------------------------------
  alias update_phase4_step2_KGC_OverDrive update_phase4_step2
  def update_phase4_step2
    if @active_battler.is_a?(Game_Actor)
      # ゲージ増加判定
      case @active_battler.overdrive_type
      when 4  # 孤独戦闘
        alone = true
        for actor in $game_party.actors
          next if actor == @active_battler
          # 生存者がいる場合は孤独ではない
          if actor.exist?
            alone = false
            break
          end
        end
        od_up = alone ? KGC::OD_GAIN_RATE[4] : 0
      when 5  # 行動時
        od_up = KGC::OD_GAIN_RATE[5]
      when 6  # 瀕死
        od_up = @active_battler.hp <= @active_battler.maxhp / 4 ? KGC::OD_GAIN_RATE[6] : 0
      else
        od_up = 0
      end
      @active_battler.overdrive += od_up
    end
 
    # 元の処理を実行
    update_phase4_step2_KGC_OverDrive
  end
  #--------------------------------------------------------------------------
  # ● スキルアクション 結果作成
  #--------------------------------------------------------------------------
  alias make_skill_action_result_KGC_OverDrive make_skill_action_result
  def make_skill_action_result
    # 元の処理を実行
    make_skill_action_result_KGC_OverDrive
 
    # オーバードライブスキルを使用した場合
    if @active_battler.is_a?(Game_Actor) && @skill.element_set.include?($game_special_elements["overdrive"])
      @active_battler.overdrive = 0
    end
  end
end
zum Lesen den Text mit der Maus markieren

2

Freitag, 20. August 2010, 19:23

Kommt schon Leute, ich bin sicher, dass das jemand weiß.

3

Freitag, 20. August 2010, 21:14

Ja man klappt das Skript auf und denkt erstmal "ok hm ne ach so... nein das mach ich doch nicht."

Anderer Ansatz: Was passiert wenn du einem solchen Limit Skill ein Common Event zuteilst, dass die Agi vom ausführendem Partymember ganz hoch setzt?

Edit: Nix, das hilft auch nicht.

4

Freitag, 20. August 2010, 21:28

Ich hab das Script ja nicht gemacht. Hauptsache das geht. :D

Ich hab auch mal bei Scene_Battle 4 geschaut, da ja dort die Aktionsreihenfolge unter def make_action_orders steht. Allerdings konnte ich mir da auch nichts draus machen, was mir geholfen hätte.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

5

Freitag, 20. August 2010, 22:55

Hab "make_action_orders" etwas erweitert...
Obs mit deinem Script zusammen funktioniert kann ich nicht sagen, mir fehlten Dateien für das Script, sollte aber keine Probleme geben :)

einfach als neues Script über Main einfügen:
Spoiler: Script inside

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
class Scene_Battle
 
  IL_HIGH_PRIORITY_SKILLS = [1, 2, 12, 17]                                # Fähigkeitenliste
 
  alias_method(:make_action_orders_IL_changes, :make_action_orders) unless method_defined?(:make_action_orders_IL_changes)
  def make_action_orders
 
    make_action_orders_IL_changes
 
     #Gehe rückwärts die Aktionen durch, und verschiebe Treffer in high_priority_skills
     #(Rückwärts damit die noch abzufragenden Positionen nicht durch Löschungen verschoben werden)
    high_priority_skills = [] 
    index = @action_battlers.size - 1
    #durchsuche die Battler anhand des Index:
    while index >= 0
      battler = @action_battlers[index]
       #wenn Battler einen HP-Skill verwendet:
      if battler.current_action.kind == 1 and 
       IL_HIGH_PRIORITY_SKILLS.include?(battler.current_action.skill_id)
         #lösche den Battler temporär aus der Liste und füge ihn in der HP-Liste ein: 
        high_priority_skills.push(@action_battlers.delete_at(index))
      end  
      #verringere Index
      index -= 1
    end  
     #Füge die Listen zusammen, vertausche die Reihenfolge der HP-Liste (doppelte Umkehrung)
    @action_battlers = high_priority_skills.reverse! + @action_battlers 
  end  
 
end  
zum Lesen den Text mit der Maus markieren

Um Fähigkeiten hohe Priorität zu geben müsstest du deren ID einfach in Zeile 3 ergänzen


ED: Andere, auf dein Script ausgelegte Version von der ich folglich nicht weiß ob sie funktioniert:
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
class Scene_Battle
 
  alias_method(:make_action_orders_IL_changes, :make_action_orders) unless method_defined?(:make_action_orders_IL_changes)
  def make_action_orders
 
    make_action_orders_IL_changes
 
     #Gehe rückwärts die Aktionen durch, und verschiebe Treffer in high_priority_skills
     #(Rückwärts damit die noch abzufragenden Positionen nicht durch Löschungen verschoben werden)
    high_priority_skills = [] 
    index = @action_battlers.size - 1
    #durchsuche die Battler anhand des Index:
    while index >= 0
      battler = @action_battlers[index]
       #wenn Battler einen Overdrive-Skill verwendet:
      if battler.is_a?(Game_Actor) and battler.current_action.kind == 1 and 
       $data_skills[battler.current_action.skill_id].element_set.include?($game_special_elements["overdrive"])
         #lösche den Battler temporär aus der Liste und füge ihn in der HP-Liste ein: 
        high_priority_skills.push(@action_battlers.delete_at(index))
      end  
      #verringere Index
      index -= 1
    end  
     #Füge die Listen zusammen, vertausche die Reihenfolge der HP-Liste (doppelte Umkehrung)
    @action_battlers = high_priority_skills.reverse! + @action_battlers 
  end  
 
end   
zum Lesen den Text mit der Maus markieren
hierbei sollten einfach alle Skills bevorzugt werden, die das OverDrive-Element verwenden ohne sie extra einstellen zu können/müssen.
Zudem werden hier keine Gegner berücksichtigt.

Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von »Irrlicht« (21. August 2010, 13:29)


6

Samstag, 21. August 2010, 00:11

Vielen Dank erstmal.

Das erste Script erfüllt seinen Zweck, das zweite hat keinerlei Änderung gebracht. Beim ersten ist jetzt nur das Problem, dass die Limitanzeige nicht geleert wird nach dem Angriff. Ich hab das jetzt mal versucht mithilfe des Limitscripts hinzubekommen, bin aber gescheitert.

Wenn ich das einbaue, bleibt es bei jedem Angriff komplett hängen.

Quellcode

1
2
        if @active_battler.is_a?(Game_Actor) && @skill.element_set.include?($game_special_elements["overdrive"])
      @active_battler.overdrive = 0

Und wenn ich nur die 2. Zeile nehme, bringt es nichts. Bin da leider ziemlich überfragt.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

7

Samstag, 21. August 2010, 00:31

Hmm, wär wohl zu einfach gegangen wenn so ein Script auf Anhieb funktioniert hätte^^
Woran es allerdings liegt dass Overdrive nicht zurückgesetzt wird weiß ich gerade allerdings auch nicht... zumal ja das Script nichtmal auf "make_action_orders" zugreift...

Auch wenn die Frage jetzt etwas früh kommt, aber könntest evtl. mal eine Demo posten?^^

8

Samstag, 21. August 2010, 01:04

Na klar doch. Hab´s getestet und müsste alles nötige funktionieren. Hab alle Scripte von mir drin. Ins Menü kannst du nicht, da fehlen Bilder, aber das sollte ja keine Rolle spielen.

Edit: Hab grad gemerkt, dass der Held sogar so zuerst dran ist. Keine Ahnung, wie das kommt, aber wenn der Gegner 999 bei den Werten hat, bist du nicht mehr der erste.^^

Edit: Ich bitte um Verzeihung. Ich hab vergessen in deinem Script die 60 in Zeile 3 zu schreiben.
»Mr. Marzipan« hat folgende Datei angehängt:
  • Project1.exe (320,52 kB - 6 mal heruntergeladen - zuletzt: 19. November 2013, 03:54)

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

9

Samstag, 21. August 2010, 01:08

Problem scheinen in dem Fall die Scripts "Regena & Reflek" sowie "Schaden absorbieren" zu sein...

Beide ersetzen die Methode make_skill_action_result durch ihre eigene Fassung anstatt die vorhandene zu erweitern...
Diese also unbedingt über "Limit Breaks" und "Anzeigedauer Fähigkeiten" positionieren (die beide eben diese Methode erweitern) Damit die dort enthaltenen Änderungen erst nachträglich eingefügt und nicht mitüberschrieben werden.

(Bliebe allerdings das Problem dass weiterhin eine der beiden Fassungen die jeweils andere überschreiben dürfte...)

Btw: bei mir funktioniert auch meine zweite Scriptfassung wunderbar...^^

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Irrlicht« (21. August 2010, 01:29)


10

Samstag, 21. August 2010, 01:13

Du bist wahrlich ein Held. Ich habe jetzt einfach Regena und Reflek rausgeschmissen. Das ist nicht so wichtig und funktioniert hat es ohnehin nicht ohne Fehlermeldungen. Dein Script ist da wichtiger.

Wäre ein Problem weniger auf dem Weg ins Ziel. :D
Hab vielen Dank dafür.

Edit: In der Tat. :wacko: Ich wundere mich beim Makern aber langsam über garnichts mehr.

Irrlicht

Leuchtendes Irgendwas

Motto: Keep shining!

  • Nachricht senden

11

Samstag, 21. August 2010, 01:17

Nja, mit meinem Script hatten die auch nicht viel zu tun, gestört haben sie nur die oben aufgezählten...^^

Hab nochmal minimal an dem Script gebastelt...
Geändert hat sich nicht viel, ist nur insofern "sauberer" geworden dass jetzt nur noch die Heldengruppe abgefragt wird und nicht mehr unnötigerweise die Gegner... *hust* (Sollte eig. ingame keinem auffallen)

Zitat

Edit: In der Tat. :wacko: Ich wundere mich beim Makern aber langsam über garnichts mehr.
Nja, dann kann ja was draus werden ;)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Irrlicht« (21. August 2010, 10:51)


12

Samstag, 21. August 2010, 01:21

Solange du nicht erwartest, dass ich verstehe, was du wie und warum sauberer gemacht hast, ist es ok. :D
Funktioniert auf jeden Fall genau so, wie es soll.

Social Bookmarks