RPGVX.net

  RPG-Maker VX => VX Skripte [Fertiger Code] => Thema gestartet von: Onkel Hell am Februar 01, 2008, 15:14:34

Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am Februar 01, 2008, 15:14:34
Beschreibung :
Dieses Script verändert das Standard-Kampfsystem zu einem ATB, also einem Active-Time-Battle System.
Anhand der Beweglichkeit der Charactere wird die Geschwindigkeit berechnet mit der sie interagieren.

In diesem Script ist eine angepasste version meines CustomBattleScreens integriert

Screenshot :
(http://www.sturmf4lke.de/easy/screen/screen7.JPG)

Last Update 03.05.08 : v1.0
Changelog
-----------------------------------------------------------------------------------
v1.0
-----------------------------------------------------------------------------------
versionsprung auf 1
habs nochma komplett überarbeitet und dabei alle fehler die mir
gemeldet wurden beseitigt inkl. id bug
-----------------------------------------------------------------------------------
v0.2.3.1
-----------------------------------------------------------------------------------
ok da ich jetz endlich weiss was für ein fehler das mit auto battle war is der auch behoben , hat sich um nen fehler gehandelt der auftrag wenn man in der database auto battle auf nem character lag,
das sollte jetz endgültig funktionieren und ich hab nochma ne demo geadded
-----------------------------------------------------------------------------------
v0.2.3
-----------------------------------------------------------------------------------
das script hatte nen kleinen fehler bei helden mit ner id größer 3 , das hab ich jetz gefixed und das
auto battle hatte wohl nen tippfehler , hoff dass das jetz auch so funzt wies soll
-----------------------------------------------------------------------------------
v0.2.2
-----------------------------------------------------------------------------------
kleenes mini update , der problem mit dem fenster sollte jetz behoben sein , also das nach dem kampf und dieser komische pfeil der rechts war
und ich hab als kleines addon zu meinem kampfsystem mein inRage script / FF8 limit script dazu gepackt, das kann seperat einfach drunter kopiert werden
-----------------------------------------------------------------------------------
v0.2
-----------------------------------------------------------------------------------
Ich hab bei der PartyCommand auswahl eine AutoBattle funktion hinzugefügt, sobald sie gewählt wurde verläuft der GANZE kampf automatisch also aufpassen wo man das benutzt
desweiteren hab das UI leicht abgeändert , das linke Status fenster ist nun dauerhaft sichtbar,
dafür ist das message window dafür leicht nach rechts gewandert
würd mich freuen wenn ich zu den UI changes paar äußerungen hab wie ihr das findet im vergleich zur alten darstellung

Anmerkungen :
Wer Fehler findet kann sie hier gerne melden
Ideen zur verbesserung des scripts bzw Ideen für Addons sind willkommen

Script v1.0
#==============================================================================
#  hellMinor's Active-Time-Battles
#
#  Version : 1.0 - 02.04.08
#  Created by : hellMinor
#  Do NOT redistribute without my permission
#  Description : This script changes the standard Battle-System to an
#                Active-Time-Battle-System based on the agility of the
#                character
#  Notes :       This script uses my CustomBattleScreen with some changes
#
#==============================================================================
#==============================================================================
class Scene_Battle < Scene_Base
#==============================================================================  
  def start
    super
    $game_temp.in_battle = true
    @actor_wait = [0,0,0,0,0,0,0,0,0,0,0,0]
    @bar_add = [0,0,0,0,0,0,0,0,0,0,0,0]
    $bar_values = [0,0,0,0,0,0,0,0,0,0,0,0]
    @spriteset = Spriteset_Battle.new
    @message_window = Window_BattleMessage.new
    @action_battlers = []
    create_info_viewport
    @info_viewport.visible = true
  end
#------------------------------------------------------------------------------  
  def next_actor
# zurücksetzen
    for enemy in $game_troop.members
      enemy.action.clear
    end
    
    @wert = 300
    @index = 0
    
    if @actor_index == $game_party.members.size-1
      start_main
      return
    end
    
# player_wait_max = Frameausgleich*(MaxSekunden*(Skalierung-(Player_AGI/Max_AGI)))
# player_bar_add  = GaugeGröße / player_wait_max    
    
    for i in 0..$game_party.members.size-1
      if @actor_wait[i] == 0 or @actor_wait[i] == nil
        @actor_wait[i] = 60*(3.0*(1.0-($game_party.members[i].agi/1000.0)))
        @bar_add[i] = 120.0/@actor_wait[i]
      end
    end
    
    for i in 0..$game_troop.members.size-1
      if @actor_wait[i+4] == 0 or @actor_wait[i+4] == nil
        @actor_wait[i+4] = 60*(5.0*(1.0-($game_troop.members[i].agi/1000.0)))
        @bar_add[i+4] = 120.0/@actor_wait[i+4]    
      end
    end

#kleinsten agi wert raussuchen und den nächsten actor festlegen
    for i in 0..@actor_wait.length-1
      if @actor_wait[i] < @wert && @actor_wait[i] > 0
        @wert = @actor_wait[i]
        if i < $game_party.members.size
          @active_battler = $game_party.members[i]
          @index = i
        else
          @active_battler = $game_troop.members[i-4]
          @index = i
        end
      end
    end

# redrawschleife bis actor an der reihe
    for i in 0..@wert
      wait(1)
      for j in 0..$game_party.members.size-1
        $bar_values[j] += @bar_add[j]
      end
      @status_window.refresh
    end

# neue werte berechnen + korrekturwert bei gleicher zahl    
    for i in 0..@actor_wait.size-1
      if i == @index
        @actor_wait[i] -= @wert
      else
        @actor_wait[i] -= @wert-0.001
      end
    end
    
    if @active_battler.inputable?
      if @active_battler.actor?
        @status_window.index = @index
        $bar_values[@index] = 0
        if @autobattle || @active_battler.auto_battle
          @active_battler.make_action
          start_main
        else
          start_actor_command_selection
        end
      else
        @active_battler.make_action
        start_main
      end
    else
      if @active_battler.actor?
        $bar_values[@index] = 0
      end
      next_actor
    end
  end
#------------------------------------------------------------------------------  
  def update_actor_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
    elsif Input.trigger?(Input::C)
      case @actor_command_window.index
      when 0  # ??
        Sound.play_decision
        @active_battler.action.set_attack
        start_target_enemy_selection
      when 1  # ???
        Sound.play_decision
        start_skill_selection
      when 2  # ??
        Sound.play_decision
        @active_battler.action.set_guard
        start_main
      when 3  # ????
        Sound.play_decision
        start_item_selection
      end
    end
  end
#------------------------------------------------------------------------------
  def start_target_enemy_selection
    @target_enemy_window = Window_TargetEnemy.new
    @target_enemy_window.y = 193
    @info_viewport.rect.x += @target_enemy_window.width
    @info_viewport.ox += @target_enemy_window.width
    @actor_command_window.active = false
  end
#------------------------------------------------------------------------------
  def update_target_enemy_selection
    @target_enemy_window.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_target_enemy_selection
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      @active_battler.action.target_index = @target_enemy_window.enemy.index
      end_target_enemy_selection
      end_skill_selection
      end_item_selection
      start_main
    end
  end
#------------------------------------------------------------------------------  
  def update_target_actor_selection
    @target_actor_window.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_target_actor_selection
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      @active_battler.action.target_index = @target_actor_window.index
      end_target_actor_selection
      end_skill_selection
      end_item_selection
      start_main
    end
  end
#------------------------------------------------------------------------------  
    def determine_skill
    @active_battler.action.set_skill(@skill.id)
    @skill_window.active = false
    if @skill.need_selection?
      if @skill.for_opponent?
        start_target_enemy_selection
      else
        start_target_actor_selection
      end
    else
      end_skill_selection
      start_main
    end
  end
#------------------------------------------------------------------------------  
  def determine_item
    @active_battler.action.set_item(@item.id)
    @item_window.active = false
    if @item.need_selection?
      if @item.for_opponent?
        start_target_enemy_selection
      else
        start_target_actor_selection
      end
    else
      end_item_selection
      start_main
    end
  end
#------------------------------------------------------------------------------  
  def start_main
    $game_troop.increase_turn
    @info_viewport.visible = true
    @info_viewport.ox = 0
    @message_window.visible = true
    @actor_command_window.visible = false
    @party_command_window.active = false
    @actor_command_window.active = false
    @status_window.index = @actor_index = -1
    @active_battler = nil
    @message_window.clear
    make_action_orders
    wait(20)
  end
#------------------------------------------------------------------------------
  def create_info_viewport
    @info_viewport = Viewport.new(0, 0, 544, 480)
    @info_viewport.z = 100
    @status_window = Window_BattleStatus.new
    @party_command_window = Window_PartyCommand.new
    @actor_command_window = Window_ActorCommand.new
    @status_window.viewport = @info_viewport
    @party_command_window.viewport = @info_viewport
    @actor_command_window.viewport = @info_viewport
    @party_command_window.x = 159
    @party_command_window.y = 360
    @status_window.x = 0
    @actor_command_window.x = 159
    @actor_command_window.y = 360
    @actor_command_window.visible = false
    @info_viewport.visible = false
  end
#------------------------------------------------------------------------------  
  def update_info_viewport
    @party_command_window.update
    @actor_command_window.update
    @status_window.update
    if @party_command_window.active
      @party_command_window.visible = true
      @actor_command_window.visible = false
    elsif @actor_command_window.active
      @actor_command_window.visible = true
      @party_command_window.visible = false
    end
  end
#------------------------------------------------------------------------------  
  def start_party_command_selection
    if $game_temp.in_battle
      @status_window.refresh
      @status_window.index = @actor_index = -1
      @active_battler = nil
      @info_viewport.visible = true
      @message_window.visible = false
      @party_command_window.active = true
      @party_command_window.index = 0
      @actor_command_window.active = false
      $game_party.clear_actions
      if $game_troop.surprise or not $game_party.inputable?
        start_main
      end
      if @autobattle
        next_actor
      end
    end
  end
#------------------------------------------------------------------------------
  def update_party_command_selection
    if Input.trigger?(Input::C)
      case @party_command_window.index
      when 0  # ??
        @party_command_window.visible = false
        Sound.play_decision
        @status_window.index = @actor_index = -1
        next_actor
      when 1  # ??
        Sound.play_decision
        @status_window.index = @actor_index = -1
        @party_command_window.active = false
        @party_command_window.visible = false
        @autobattle = true
        next_actor
      when 2  # ???
        if $game_troop.can_escape == false
          Sound.play_buzzer
          return
        end
        Sound.play_decision
        process_escape
      end
    end
  end
#------------------------------------------------------------------------------  
  def start_skill_selection
    @help_window = Window_Help.new
    @skill_window = Window_Skill.new(0, 55, 544, 306, @active_battler)
    @skill_window.help_window = @help_window
    @actor_command_window.active = false
  end
#------------------------------------------------------------------------------
  def start_item_selection
    @help_window = Window_Help.new
    @item_window = Window_Item.new(0, 55, 544, 306)
    @item_window.help_window = @help_window
    @actor_command_window.active = false
  end
#------------------------------------------------------------------------------
  def process_victory
    @info_viewport.visible = true
    @message_window.visible = true
    RPG::BGM.stop
    $game_system.battle_end_me.play
    unless $BTEST
      $game_temp.map_bgm.play
      $game_temp.map_bgs.play
    end
    display_exp_and_gold
    display_drop_items
    display_level_up
    battle_end(0)
  end
#------------------------------------------------------------------------------
  def process_defeat
    @info_viewport.visible = true
    @message_window.visible = true
    text = sprintf(Vocab::Defeat, $game_party.name)
    $game_message.texts.push(text)
    wait_for_message
    battle_end(2)
  end

end

#==============================================================================
#  CustomBattleScreen
#  Version : 0.2 - Customized
#  Created by : hellMinor
#==============================================================================
#==============================================================================
class Window_BattleStatus < Window_Selectable
#==============================================================================
  def initialize
    super(0, 0, 160, 416)
    refresh
    self.active = false
  end
#------------------------------------------------------------------------------
  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.width = 126
    rect.height = 96
    rect.y = index / @column_max * 96
    return rect
  end
#------------------------------------------------------------------------------
  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    actor = $game_party.members[index]
    draw_atb_gauge(index, 3, rect.y+10)
    draw_actor_name(actor, 3, rect.y)    
    draw_actor_state(actor, 35, rect.y+20, 48)
    draw_actor_graphic(actor,18,rect.y+55)
    draw_actor_mp(actor, 35, rect.y+45, 88)
    draw_actor_hp(actor, 3, rect.y+65, 120)
  end
#------------------------------------------------------------------------------  
  def draw_actor_name(actor, x, y)
    self.contents.font.color = hp_color(actor)
    self.contents.draw_text(x, y, 120, WLH, actor.name, 1)
  end
#------------------------------------------------------------------------------  
  def draw_atb_gauge(index,x, y, width = 120)
    if $bar_values[index] == nil
      $bar_values[index] = 0
    end
    if $bar_values[index] >= 120
      gc1 = hp_gauge_color1
      gc2 = hp_gauge_color2
    else
      gc1 = mp_gauge_color1
      gc2 = mp_gauge_color2
    end
    self.contents.fill_rect(x, y, 120, 5, gauge_back_color)
    self.contents.gradient_fill_rect(x, y, $bar_values[index], 5, gc1, gc2)
  end

end
#==============================================================================
class Window_PartyCommand < Window_Command
#==============================================================================  
  def initialize
    s1 = Vocab::fight
    s2 = "Auto-Fight"
    s3 = Vocab::escape
    super(385, [s1, s2, s3], 3, 1)
    draw_item(0, true)
    draw_item(1, true)
    draw_item(2, $game_troop.can_escape)
    self.active = false
  end
#------------------------------------------------------------------------------  
  def draw_item(index, enabled = true)
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(rect, @commands[index], 1)
  end

end
#==============================================================================
class Window_ActorCommand < Window_Command
#==============================================================================  
  def initialize
    super(385, [], 4, 1)
    self.active = false
  end
#------------------------------------------------------------------------------
  def setup(actor)
    s1 = Vocab::attack
    s2 = Vocab::skill
    s3 = Vocab::guard
    s4 = Vocab::item
    if actor.class.skill_name_valid
      s2 = actor.class.skill_name
    end
      @commands = [s1,s2, s3, s4]
      @item_max = 4
    refresh
    self.index = 0
  end
#------------------------------------------------------------------------------
  def draw_item(index, enabled = true)
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(rect, @commands[index], 1)
  end
  
end
#==============================================================================
class Window_TargetEnemy < Window_Command
#==============================================================================
  def initialize
    commands = []
    @enemies = []
    for enemy in $game_troop.members
      next unless enemy.exist?
      commands.push(enemy.name)
      @enemies.push(enemy)
    end
    super(160, commands, 1, 8)
  end
#------------------------------------------------------------------------------
  def draw_item(index, enabled = true)
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(rect, @commands[index], 1)
  end
  
end
#==============================================================================
class Window_BattleMessage < Window_Message
#==============================================================================
  def initialize
    super(159,288,385,128)
    self.openness = 255
    @lines = []
    refresh
  end
  
end
#==============================================================================
class Window_Message < Window_Selectable
#==============================================================================
  def initialize(x = 0,y = 288,w = 544,h = 128)
    super(x,y,w,h)
    self.z = 200
    self.active = false
    self.index = -1
    self.openness = 0
    @opening = false            # ??????????????
    @closing = false            # ??????????????
    @text = nil                 # ??????????
    @contents_x = 0             # ????????? X ??
    @contents_y = 0             # ????????? Y ??
    @line_count = 0             # ???????????
    @wait_count = 0             # ????????
    @background = 0             # ?????
    @position = 2               # ????
    @show_fast = false          # ??????
    @line_show_fast = false     # ?????????
    @pause_skip = false         # ?????????
    create_gold_window
    create_number_input_window
    create_back_sprite
  end

end

Script v0.2.3.1
ATB-Demo v0.2.3.1 mit Addon (http://rapidshare.com/files/104327994/ATB-Demo_v0.2.3.1.exe)
[code]#==============================================================================
#  hellMinor's Active-Time-Battles
#
#  Version : 0.2.3.1 - 02.04.08
#  Created by : hellMinor
#  Description : This script changes the standard Battle-System to an
#                Active-Time-Battle-System based on the agility of the
#                character
#  Notes :       This script uses my CustomBattleScreen with some changes
#  Do NOT redistribute without my permission
#
#==============================================================================
#==============================================================================
class Scene_Battle < Scene_Base
#==============================================================================  
  def start
    super
    $game_temp.in_battle = true
    @spriteset = Spriteset_Battle.new
    @message_window = Window_BattleMessage.new
    @action_battlers = []
    $playerwaitrate = [0,0,0,0]
    $additionrate = [0,0,0,0]
    $bar = [0,0,0,0]
    $enemywaitrate = [0,0,0,0,0,0,0,0]
    $enemyattackrate = [0,0,0,0,0,0,0,0]
    create_info_viewport
    @info_viewport.visible = true
  end
#------------------------------------------------------------------------------  
  def next_actor
    for enemy in $game_troop.members
      enemy.action.clear
    end

    wert = 300
    index = 0
      if @actor_index == $game_party.members.size-1
        start_main
        return
      end
      
      for i in 0..$game_party.members.size-1
        if $playerwaitrate[i] == 0
          $playerwaitrate[i] = 60*(5.0*(1.0-($game_party.members[i].agi/500.0)))
          $additionrate[i] = 120.0/$playerwaitrate[i]
        end
      end
      for i in 0..$game_troop.members.size-1
        if $enemywaitrate[i] == 0
          $enemywaitrate[i] = 60*(5.0*(1.0-($game_troop.members[i].agi/500.0)))
          $enemyattackrate[i] = 120.0/$enemywaitrate[i]
        end
      end
      
      temp = $playerwaitrate
      temp += $enemywaitrate
      
      for i in 0..temp.length-1
        if temp[i] > wert
          wert = temp[i]
        end
      end

      for i in 0..temp.length-1
        if temp[i] < wert && temp[i] > 0
          wert = temp[i]
          if i < $game_party.members.size
            @active_battler = $game_party.members[i]
            index = i
          else
            @active_battler = $game_troop.members[i-4]
            index = i
          end
        end
      end
      
      for i in 0..wert
        wait(1)
        for i in 0..$game_party.members.size-1
          $bar[i] += $additionrate[i]
        end
        @status_window.refresh
      end
    
    for i in 0..$game_party.members.size-1
      if i == index
        $playerwaitrate[i] -= wert
      else
        $playerwaitrate[i] -= wert-0.001
      end
    end
    for i in 0..$game_troop.members.size-1
      if i == index-4
        $enemywaitrate[i] -= wert
      else
        $enemywaitrate[i] -= wert-0.001
      end
    end
    
    if @active_battler.inputable?
      if @active_battler.actor?
        @status_window.index = @active_battler.id-1
        if @active_battler.id-1 < 4
          $bar[@active_battler.id-1] = 0
        else if @active_battler.id-1 < 8
          $bar[@active_battler.id-5] = 0
        else if @active_battler.id-1 < 12
          $bar[@active_battler.id-9] = 0
        end
        end
        end
        if @autobattle || @active_battler.auto_battle
          @active_battler.make_action
          start_main
        else
          start_actor_command_selection
        end
      else
        @active_battler.make_action
        start_main
      end
    else
      if @active_battler.actor?
        $bar[@active_battler.id-1] = 0
      end
      next_actor
    end
  end
#------------------------------------------------------------------------------  
  def update_actor_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
    elsif Input.trigger?(Input::C)
      case @actor_command_window.index
      when 0  # ??
        Sound.play_decision
        @active_battler.action.set_attack
        start_target_enemy_selection
      when 1  # ???
        Sound.play_decision
        start_skill_selection
      when 2  # ??
        Sound.play_decision
        @active_battler.action.set_guard
        start_main
      when 3  # ????
        Sound.play_decision
        start_item_selection
      end
    end
  end
#------------------------------------------------------------------------------
  def start_target_enemy_selection
    @target_enemy_window = Window_TargetEnemy.new
    @target_enemy_window.y = 193
    @info_viewport.rect.x += @target_enemy_window.width
    @info_viewport.ox += @target_enemy_window.width
    @actor_command_window.active = false
  end
#------------------------------------------------------------------------------
  def update_target_enemy_selection
    @target_enemy_window.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_target_enemy_selection
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      @active_battler.action.target_index = @target_enemy_window.enemy.index
      end_target_enemy_selection
      end_skill_selection
      end_item_selection
      start_main
    end
  end
#------------------------------------------------------------------------------  
  def update_target_actor_selection
    @target_actor_window.update
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_target_actor_selection
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      @active_battler.action.target_index = @target_actor_window.index
      end_target_actor_selection
      end_skill_selection
      end_item_selection
      start_main
    end
  end
#------------------------------------------------------------------------------  
    def determine_skill
    @active_battler.action.set_skill(@skill.id)
    @skill_window.active = false
    if @skill.need_selection?
      if @skill.for_opponent?
        start_target_enemy_selection
      else
        start_target_actor_selection
      end
    else
      end_skill_selection
      start_main
    end
  end
#------------------------------------------------------------------------------  
  def determine_item
    @active_battler.action.set_item(@item.id)
    @item_window.active = false
    if @item.need_selection?
      if @item.for_opponent?
        start_target_enemy_selection
      else
        start_target_actor_selection
      end
    else
      end_item_selection
      start_main
    end
  end
#------------------------------------------------------------------------------  
  def start_main
    $game_troop.increase_turn
    @info_viewport.visible = true
    @info_viewport.ox = 0
    @message_window.visible = true
    @actor_command_window.visible = false
    @party_command_window.active = false
    @actor_command_window.active = false
    @status_window.index = @actor_index = -1
    @active_battler = nil
    @message_window.clear
    make_action_orders
    wait(20)
  end
#------------------------------------------------------------------------------
  def create_info_viewport
    @info_viewport = Viewport.new(0, 0, 544, 480)
    @info_viewport.z = 100
    @status_window = Window_BattleStatus.new
    @party_command_window = Window_PartyCommand.new
    @actor_command_window = Window_ActorCommand.new
    @status_window.viewport = @info_viewport
    @party_command_window.viewport = @info_viewport
    @actor_command_window.viewport = @info_viewport
    @party_command_window.x = 159
    @party_command_window.y = 360
    @status_window.x = 0
    @actor_command_window.x = 159
    @actor_command_window.y = 360
    @actor_command_window.visible = false
    @info_viewport.visible = false
  end
#------------------------------------------------------------------------------  
  def update_info_viewport
    @party_command_window.update
    @actor_command_window.update
    @status_window.update
    if @party_command_window.active
      @party_command_window.visible = true
      @actor_command_window.visible = false
    elsif @actor_command_window.active
      @actor_command_window.visible = true
      @party_command_window.visible = false
    end
  end
#------------------------------------------------------------------------------  
  def start_party_command_selection
    if $game_temp.in_battle
      @status_window.refresh
      @status_window.index = @actor_index = -1
      @active_battler = nil
      @info_viewport.visible = true
      @message_window.visible = false
      @party_command_window.active = true
      @party_command_window.index = 0
      @actor_command_window.active = false
      $game_party.clear_actions
      if $game_troop.surprise or not $game_party.inputable?
        start_main
      end
      if @autobattle
        next_actor
      end
    end
  end
#------------------------------------------------------------------------------
  def update_party_command_selection
    if Input.trigger?(Input::C)
      case @party_command_window.index
      when 0  # ??
        @party_command_window.visible = false
        Sound.play_decision
        @status_window.index = @actor_index = -1
        next_actor
      when 1  # ??
        Sound.play_decision
        @status_window.index = @actor_index = -1
        @party_command_window.active = false
        @party_command_window.visible = false
        @autobattle = true
        next_actor
      when 2  # ???
        if $game_troop.can_escape == false
          Sound.play_buzzer
          return
        end
        Sound.play_decision
        process_escape
      end
    end
  end
#------------------------------------------------------------------------------  
  def start_skill_selection
    @help_window = Window_Help.new
    @skill_window = Window_Skill.new(0, 55, 544, 306, @active_battler)
    @skill_window.help_window = @help_window
    @actor_command_window.active = false
  end
#------------------------------------------------------------------------------
  def start_item_selection
    @help_window = Window_Help.new
    @item_window = Window_Item.new(0, 55, 544, 306)
    @item_window.help_window = @help_window
    @actor_command_window.active = false
  end
#------------------------------------------------------------------------------
  def process_victory
    @info_viewport.visible = true
    @message_window.visible = true
    RPG::BGM.stop
    $game_system.battle_end_me.play
    unless $BTEST
      $game_temp.map_bgm.play
      $game_temp.map_bgs.play
    end
    display_exp_and_gold
    display_drop_items
    display_level_up
    battle_end(0)
  end
#------------------------------------------------------------------------------
  def process_defeat
    @info_viewport.visible = true
    @message_window.visible = true
    text = sprintf(Vocab::Defeat, $game_party.name)
    $game_message.texts.push(text)
    wait_for_message
    battle_end(2)
  end

end

#==============================================================================
#  CustomBattleScreen
#  Version : 0.2 - Customized
#  Created by : hellMinor
#==============================================================================
#==============================================================================
class Window_BattleStatus < Window_Selectable
#==============================================================================
  def initialize
    super(0, 0, 160, 416)
    refresh
    self.active = false
  end
#------------------------------------------------------------------------------
  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.width = 126
    rect.height = 96
    rect.y = index / @column_max * 96
    return rect
  end
#------------------------------------------------------------------------------
  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    actor = $game_party.members[index]
    draw_atb_gauge(index, 3, rect.y+10)
    draw_actor_name(actor, 3, rect.y)    
    draw_actor_state(actor, 35, rect.y+20, 48)
    draw_actor_graphic(actor,18,rect.y+55)
    draw_actor_mp(actor, 35, rect.y+45, 88)
    draw_actor_hp(actor, 3, rect.y+65, 120)
  end
#------------------------------------------------------------------------------  
  def draw_actor_name(actor, x, y)
    self.contents.font.color = hp_color(actor)
    self.contents.draw_text(x, y, 120, WLH, actor.name, 1)
  end
#------------------------------------------------------------------------------  
  def draw_atb_gauge(index,x, y, width = 120)
    if $bar[index] == nil
      $bar[index] = 0
    end
    if $bar[index] >= 120
      gc1 = hp_gauge_color1
      gc2 = hp_gauge_color2
    else
      gc1 = mp_gauge_color1
      gc2 = mp_gauge_color2
    end
    self.contents.fill_rect(x, y, 120, 5, gauge_back_color)
    self.contents.gradient_fill_rect(x, y, $bar[index], 5, gc1, gc2)
  end

end
#==============================================================================
class Window_PartyCommand < Window_Command
#==============================================================================  
  def initialize
    s1 = Vocab::fight
    s2 = "Auto-Fight"
    s3 = Vocab::escape
    super(385, [s1, s2, s3], 3, 1)
    draw_item(0, true)
    draw_item(1, true)
    draw_item(2, $game_troop.can_escape)
    self.active = false
  end
#------------------------------------------------------------------------------  
  def draw_item(index, enabled = true)
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(rect, @commands[index], 1)
  end

end
#==============================================================================
class Window_ActorCommand < Window_Command
#==============================================================================  
  def initialize
    super(385, [], 4, 1)
    self.active = false
  end
#------------------------------------------------------------------------------
  def setup(actor)
    s1 = Vocab::attack
    s2 = Vocab::skill
    s3 = Vocab::guard
    s4 = Vocab::item
    if actor.class.skill_name_valid
      s2 = actor.class.skill_name
    end
      @commands = [s1,s2, s3, s4]
      @item_max = 4
    refresh
    self.index = 0
  end
#------------------------------------------------------------------------------
  def draw_item(index, enabled = true)
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(rect, @commands[index], 1)
  end
  
end
#====================
Titel: hellMinor's ActiveTimeBattles
Beitrag von: ERZENGEL am Februar 01, 2008, 15:21:48
Mein Lieblings-KS... endlich ein ATB. Is wirklich cool. Die Farbe ist auch gut gewählt. Als einziger Verbesserungsvorschlag: Kannst du es so ergänzen, dass die Balkenfarbe z.B. orange wird, wenn die Leiste voll ist? Das Skript ist wie sonst auch gute Arbeit ^^
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Dainreth am Februar 01, 2008, 15:25:04
Deine Skripts sind gut, hellMinor. Jetzt gibts ja schon ne richtige Auswahl an Kampfsystemen..na ja, ich muss meines leider teilweise auf Eventbasis machen, ist was komplett anderes, ansonsten finde ich ATB immer sehr gut, weiter so und danke!
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am Februar 01, 2008, 15:30:23
ich denke den balken zu färben wenn er voll is sollte nich schwierig sein, is nur kleine abänderung im custom battle screen
naja gut is jetz relativ , ich hab kaum ahnung von rgss und ruby generell
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Seph am Februar 01, 2008, 15:32:34
es gibt echt schon erstaunlich viele ks's. Und jetzt auch ein ATB. ich werds net benutzen aber ich musses unbedingt mal testen.
THX fürs scripten
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am Februar 01, 2008, 15:49:45
@erzengel
so habs grad mal getestet , wenn du den balken orange haben willst ersetz die zeile 283 und 284
hier mit, das steht in der def draw_atb_gauge
    if $bar[index] >= 120
      gc1 = hp_gauge_color1
      gc2 = hp_gauge_color2
    else
      gc1 = mp_gauge_color1
      gc2 = mp_gauge_color2
    end
Titel: hellMinor's ActiveTimeBattles
Beitrag von: ERZENGEL am Februar 01, 2008, 16:06:53
Warn nur son Verbesserungsvorschlag ^^ Hätte ich auch selbst machen können, aber trotzdem danke. Jetzt habe ich halt später weniger zu tun, da ich das KS noch für mein Spiel anpassen muss.
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am Februar 01, 2008, 16:11:03
sollte eigentlich leicht anzupassen sein , die einzig wirkliche änderung betrifft die next_actor
was mich bisschn stört is das man dieses turn system nich so einfach aus dem spiel rausgebaut bekommt, weil die ganzen events und states mit diesen werten arbeiten
ich hoffe das es ansonsten fehlerfrei läuft
wahrscheinlich adde ich noch mein inRage script ( falls das einer mitlerweile verstanden hat )
muss das auch noch anpassen das mans gescheit an und aus schalten kann
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Snake am Februar 01, 2008, 20:54:22
Nice^^
Wobei mir ein kassisches Final Fantasy KS mehr gefallen würde^^
(Sideview oder halt klassische Ansicht)
Aber dennoch gute arbeit.
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am Februar 05, 2008, 12:53:01
ich hab das script mal bissl geupdatet
was geändert wurde steht oben unter latest changes, ich hoff euch gefällts

@snake , benutzt final fantasy nich ein atb system ? zumindest soweit ich weiss bis auf 10 und 12 zumindest o_O
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Snake am Februar 05, 2008, 13:24:21
Zitat von: hellMinor
@snake , benutzt final fantasy nich ein atb system ? zumindest soweit ich weiss bis auf 10 und 12 zumindest o_O


ja klar! Aber mir gefällt die anordnung der Charas iwie ned xD
Fänds besser im klassischen Side-View Stil:
(http://gbamedia.gamespy.com/gba/image/article/676/676753/final-fantasy-iv-advance-20051216033455889.jpg)
So wärs optimal^^
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am März 04, 2008, 17:40:55
so kleines update fürs script das ein paar fehler behebt und mein limit script kann als addon für das kampfsystem genutzt werden ,
der rest steht oben
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Silvanus am März 04, 2008, 19:08:58
Klasse Script ;)
Endlich kommen nun neue KS's xD
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Smoky am März 04, 2008, 22:30:40
Das kommt bei mir:
(http://imagesload.net/daten_no/1204666179_hmm.jpg)
war bei der alten Version nicht ... huh.gif\" style=\"vertical-align:middle\" emoid=\":huh:\" border=\"0\" alt=\"huh.gif\" /]
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am März 04, 2008, 22:34:47
anhand der zeile kann ich sagen das es ne script unverträglichkeit is, damit das mit dem fenster nich so komisch aussieht ,also dieser wirsche pfeil da , hab ich den konstruktor window_message angepasst,
eins deiner scripte schreibt diese initialize klasse auch um, ne anpassung is aber kinderleicht der wirklich nur der konstruktor minimal angepasst wurde  ,
welches script haste denn drin was irgendwie die message windows beeinflusst ? dann bau ich das ebend um , is nur eine zeile
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Smoky am März 04, 2008, 22:40:30
Hab soviele drin ... Ich pm dich mal, dass hier nicht son Spam entsteht^^
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am März 04, 2008, 23:11:04
hab ne lösung gefunden, es is eine script unverträglichkeit mit woratans neoface script
wenn smoky die lösung weitgehenst getestet hat füg ich die lösung für alle dann dann oben ein so das keine probleme mit beiden entstehen
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Ray Phoenix am März 15, 2008, 16:00:16
Wunderbar gemacht! Ausgezeichnete Arbeit! *LOVES IT*

Wäre es möglich die Charsets der Helden durch Facesets zu ersetzen?
Würde nämlich 100% auch prima aussehen ;D
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Blucky am März 16, 2008, 21:53:57
Hi,
Ich finde das kampfsystem super aber ich hab da immernoch ein problem. Ich hab zwar schon ein thread geöffnet aber da hatte mir niemand geantwortet deshalb schreib ich nun hier rein.

Ich habe beide Kampfscripts von Hellminor's ATB und die neuste version (ATB und Inrage script)
Nun es funktioniert fast alles ausser immer wen mein Held unter 20% Hp ist und nun den Inrage skill bekommt und dan mit dem skill angreift bekomm ich den Error hier:
(http://img151.imageshack.us/img151/7048/hellminoratberror1co7.jpg)

Hier hab ich noch die Zeile 158 vom Script

151  def update_target_enemy_selection
152    @target_enemy_window.update
153    if Input.trigger?(Input::B)
154      Sound.play_cancel
155      end_target_enemy_selection
156    elsif Input.trigger?(Input::C)
157      Sound.play_decision
158      @active_battler.action.target_index = @target_enemy_window.enemy.index
159      end_target_enemy_selection
160      end_skill_selection
161      end_item_selection
162      start_main
163    end
164  end

Ich hoffe das ist nun gut genug erklärt :)
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am März 16, 2008, 23:19:20
@ray : klar kann man mit dem facepic machen , kann ich ja mal zum test einbauen und gucken wenn ich grad mal wieder lust hab

@blucky : schreib mir ma per pn welche einstellungen die in dem limit script hast und welche anderen scripte du drinne has
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Ray Phoenix am März 17, 2008, 09:33:46
@hell minor
bei mir siehts momentan so aus:
Click meh! >.< (http://i28.photobucket.com/albums/c222/DanyHedge/SCREN.png)

Denkst du es wäre machbar, nen ATB balken hinter den Namen zu bekommen? Dann wär das
KS auch schon fertig. unsure.gif\" style=\"vertical-align:middle\" emoid=\":unsure:\" border=\"0\" alt=\"unsure.gif\" /]
Titel: hellMinor's ActiveTimeBattles
Beitrag von: DarkAngelsSoul am März 22, 2008, 03:14:18
Hey hellMinor,

gute Arbeit mit dem Skript, ich hab aber das gleiche problem wie blucky.

Bei mir kommt auch diese Meldung
---------------------------
Forbidden Sun
---------------------------
????? 'ATB' ? 158 ??? NoMethodError ????????

undefined method `action' for nil:NilClass
---------------------------

 wenn ich den inRage Skill benutzen möchte.

Hoffe auf Hilfe. Thx im voraus.
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Dark Destiny am März 22, 2008, 09:49:50
ich habe den ATB OHNE InRage Script benutzt, da kam imme rnur dne fehlermeldung, egal was ich da tat, einem nach den anderen, und dann habe ich mal mit benutzt (Inklusive FF8  Limit) alles funzt, nur ich hab nen pech-schwarzen bildschirm vor mir oO und keine fehlermeldung. Der Musik is am gange aber kein kampf...
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am März 22, 2008, 11:04:28
also als ich die scripte innem neuem projekt getestet hatte liefen sie ohne probs,
ich zieh nachher mal ein beispiel projekt hoch
bei meinem tests hat ich eigneltich keine fehler gefunden d.h. wundern mich die fehler ein bissl
ich schaus mir nachher mal an bin nur leider grad bissl kurz angebunden
war die letzte tage bissl schwer beschäftigt mit renovieren , dh hatte ich keine zeit

edit : so also warum der fehler bei mir nich kam weiss ich jetz schonmal , ich hatte nur massenspells drin keine targetet , soweit ich das seh trittt der nur bei targetet spells auf
ich versuchs jetz ma ebend zu beheben
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am März 23, 2008, 04:43:06
wie schnell so kleene zeilenfehler einem immer wieder um die ohren fliegen  :lol:
so hab das inrage addon mal geupdatet/gebugfixed auf v0.2.1
jetz sollte es so funktionieren wie es gedacht war
ne demo add ich morgen dann dazu

@ray : keine ahnung ob mein script mit dem sideview funktioniert , kann schon sein da ich das konzept von dem atb in der nextactor liegt und das sideview ja eignetlich nur die sicht verändert

@darkdestiny : wie nur ein schwarzer bildschirm ? du startest nen kampf und dann kommt nix? o_O
Titel: hellMinor's ActiveTimeBattles
Beitrag von: DarkAngelsSoul am März 24, 2008, 22:33:25
Danke hellMinor jetzt funktioniert alles so wies soll^^
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Silvanus am April 01, 2008, 20:47:17
Wenn ich ein Helden auf Auto-Battle stelle, kommt immer folgende Meldung o.O

Script 'ActiveTimeBattles' Line 88: LocalJumpError occurred.
unexpected next

Ach und wie krieg ich das Kästchen hinter den Namen usw weg ^-^"

Edit:
Gerade merk ich, dass der Aufladebalken bei 2 Personen, hängen bleibt o.O
Als ich Held Nr1 und 2 im Team hatte ging alles perfekt, als NR2 dann rauswar und NR6
reinkam, blieb der Aufladebalken bei NR6 stecken und war nur noch gelb ~_~
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am April 02, 2008, 01:54:58
@silvanus : also das mit dem auto battle könnte tipfehler von mir gewesen sien , da stand next statt next_actor , keine ahnung was für auswirkung hatte , aber was fürn kästchen meinst du ?
meinst den atb balken der sich füllt mit der zeit ?? o_O

zum zweiten fehler seh ich grad das es ein bug is , den muss ich fixen , das tritt auf bei actorn mit ner id < 3 ,dh is das in meinen tests nich aufgefallen ,
wie gesagt ich schau ma nach

edit : also ich ne v02.3 rausgebracht , ich hoffe das die version die beiden fehler fixed die silvanus gefunden hat
demo kann ich auch uploaden wenn gewünscht

edit2 : ich hoffe hier kommt niemand auf die idee ne party mit mehr als 12 helden zu bauen o_O dann wird der fehler wieder auftreten is aber nur ein grafischer^^
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Silvanus am April 02, 2008, 15:16:44
Also hier mal 2 Screens mit erklärung:

(http://img297.imageshack.us/img297/5916/dstp5.jpg)

Und noch was, was vorher nicht da war o.O
Wenn ich AUTO BATTLE austelle, dann geht ja alles perfekt, nur sobald
der Aufladebalken voll ist, steht da ne Zahl...ohne irgendwas andres.
Einfach nen Fenster wo zb 5 drinne steht oder 0  @_@

Trotzdem erstma thx fürs schnelle überarbeiten ^^
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am April 02, 2008, 16:40:31
also is der fehler auch noch in der neuen version?
welche id hat dieser held? also welche nr in der datenbank
bzw kommt der fehler auch bei den ersten 4 in der datenbank bzw 8
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Silvanus am April 02, 2008, 17:25:48
Also, egal welche ID, alle AutoBattle teile bleiben bei mir im generellen stecken ><
Verdammt ich brauche das, ach und die Zahlen stehen da immernoch T.T
Sry aber da find ich die voherige  version besser, wo aber leider auch die grafikfehler sind...
Kriegste das hin >_<?
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am April 02, 2008, 18:50:26
so da ich jetz endlich rausbekommen hab was silvanus genau meinte is v0.2.3.1 hochgeladen , die version funktioniert jetz dann auch mit dem auto battle was man in der database einstellen kann
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am Mai 03, 2008, 03:47:11
v1.0 is jetz online
aaaalsoo nachdem silvanus mir noch nen fehler gemeldet hatte habs ich nochma überarbeitet
aus 5 zb 3 arrays gemacht, sollte jetz eigentlich bissl besser laufen als vorher und hoffentlich endlich auch fehlerfrei
Titel: hellMinor's ActiveTimeBattles
Beitrag von: raphi566 am Mai 05, 2008, 18:58:38
Bei der neuen Version, gibt der mir den Fehler aus, dass er mit der Zeile 420:

    super(159,288,385,128)

nicht klar kommt, woran kan das liegen.
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am Mai 05, 2008, 19:08:29
welche anderen scripts has du noch drin
Titel: hellMinor's ActiveTimeBattles
Beitrag von: FaG am Mai 07, 2008, 19:05:57
Also ^^ ich hab ja leider nicht wirklich viel Ahnung von Skripts ^^ und dehslab stellt sich auch hier meine erste Frage:

ICh habe das Teil, und es funktioniert acuh in der Technik, aber teilweise verschwindet ein Stück schrift rechts am Bildschirm zum Beispiel:
Schleim


Bild vom Fehler
(http://s7.directupload.net/images/user/080507/tzkrcqe8.jpg)
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Silvanus am Mai 07, 2008, 19:16:24
Hast du die Schrift installiert-?
Das kann daran liegen o.O
Titel: hellMinor's ActiveTimeBattles
Beitrag von: FaG am Mai 07, 2008, 19:28:53
Zitat von: Silvanus
Hast du die Schrift installiert-?
Das kann daran liegen o.O

Was für ne Schrift xD ???
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Silvanus am Mai 07, 2008, 19:52:16
Da liegt dann wohl das Problem xD
Geh mal in den RTP Ordner, da gibt es einen Ordner namens 'Fonts'
Die Schrift die da drinne ist, kopierst dahin:
"Deine Festplatte:\Windows\Fonts"
Dann versuchs nochma ;)
Titel: hellMinor's ActiveTimeBattles
Beitrag von: FaG am Mai 07, 2008, 19:59:03
Zitat von: Silvanus
Da liegt dann wohl das Problem xD
Geh mal in den RTP Ordner, da gibt es einen Ordner namens 'Fonts'
Die Schrift die da drinne ist, kopierst dahin:
"Deine Festplatte:\Windows\Fonts"
Dann versuchs nochma ;)

Habe gemacht, aber das geht immer noch nciht.

PS: ich benutze vista Oo
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Shinda am Mai 07, 2008, 20:20:30
@FaG

Also auf dem Bild sieht's ja so aus als ob der Satz einfach zu lang ist, schreib ihn doch einfach kürzer. ^^
Wie z.B. "Schleimus erscheint".
Titel: hellMinor's ActiveTimeBattles
Beitrag von: FaG am Mai 08, 2008, 14:39:06
Zitat von: Shinda
@FaG

Also auf dem Bild sieht's ja so aus als ob der Satz einfach zu lang ist, schreib ihn doch einfach kürzer. ^^
Wie z.B. "Schleimus erscheint".

oh ja erscheint. ist wirklich kürzer

Aber denk jetzt nicht so nenne ich meine gegner ^^ das war lediglich ein Platzhalter xD zum testen ^^

Das kann man unter vocab im skript ändern oder =)
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Shinda am Mai 08, 2008, 14:52:47
Jup kann man im Vocab Script ändern, Zeile 29 müsst's sein. ^^
Titel: hellMinor's ActiveTimeBattles
Beitrag von: Onkel Hell am Mai 08, 2008, 15:04:32
also dass das zu lang is beruht dann auf meiner verkleinerung des message windows und die fehler die da drin sind,
das message window liest jeden buchstaben einzeln und schreibt ihn hin und ignoriert zu gerne \n und sowas

beste lösung is schon genannt worden, den text kleiner machen oder halt das message window wieder vergrößern
Titel: Re: hellMinor's ActiveTimeBattles
Beitrag von: Riku11 am Februar 19, 2009, 08:42:03
Wo soll ich das einfügen?
Titel: Re: hellMinor's ActiveTimeBattles
Beitrag von: Lennineso am Juli 19, 2009, 13:15:44
Wow... Das ist mit Abstand das geilst Kampfsystem das ich kenne! ich liebe es! Danke mal wieder super gemacht!
SimplePortal 2.3.3 © 2008-2010, SimplePortal