-----VLAD ABS------
Vlad ABS is a spanish ABS (Action Battle System), very simplistic. Easy to use, but it's not a serious ABS. I have taken the liberty of translating the script and demo. I have attached a .txt file with the translation for the demo, so just look off of it. I posted a translated script too. Also you need to download RGSS200E.DLL, which will allow you to play the demo and use the ABS. Enjoy.
DEMO:
http://files.filefront.com/Vlad+ABS+11/ ... einfo.html
Instructions:
Download this DLL and put in your System32 folder located in C:\WINDOWS
RGSS200E.DLL DOWNLOAD: http://www.sendspace.com/file/4d1qcg
Here's the .txt file you can look off that will translate the demo: http://www.sendspace.com/file/c6k1lu
Here's the translated script. Put it above Main in the Script Editor
Additionally, you need to input this script above the ABS script in order to see the HUD
How to use the ABS
Create an Event. You don't have to name it. Now create a graphic for that monster.
Next create THREE comment boxes. In the first one type Enemy ID and replace the ID with the number your enemy is, in the Database
The second comment box should be Die with either 1 or 2, put 1 if you just want the enemy to get killed and disappear.
For the final comment box it should be either Follow or not. If you do not want the enemy following the hero, then don't put this comment box.
So it should look like this:
EXAMPLE:
Comment: Enemy 27
Comment: Die 1
Comment: Follow [OPTIONAL]
Credits
This was made by a Spanish guy named Vlad. I do believe somewhere in the original post I provided it says it can be distributed anywhere, or at least that's what the person who posted this back on another RM forum said. If someone can point out if it can't be distributed I will take this script down, I do not want to violate any rules. So if someone can translate the original post and verify if this script can be 100% distributed that would be great.
Original Post: http://www.vz4.net/index.php?site/ver-5043
Vlad ABS is a spanish ABS (Action Battle System), very simplistic. Easy to use, but it's not a serious ABS. I have taken the liberty of translating the script and demo. I have attached a .txt file with the translation for the demo, so just look off of it. I posted a translated script too. Also you need to download RGSS200E.DLL, which will allow you to play the demo and use the ABS. Enjoy.
DEMO:
http://files.filefront.com/Vlad+ABS+11/ ... einfo.html
Instructions:
Download this DLL and put in your System32 folder located in C:\WINDOWS
RGSS200E.DLL DOWNLOAD: http://www.sendspace.com/file/4d1qcg
Here's the .txt file you can look off that will translate the demo: http://www.sendspace.com/file/c6k1lu
Here's the translated script. Put it above Main in the Script Editor
Code:
#===================================
# Vlad ABS
#===================================
#--------------------------------------------------------------
# Credits to Vlad
#--------------------------------------------------------------
# To create an enemy, make an event with these annotations:
# Enemy ID - Where ID is the ID number of the enemy in the Database.
# Die X - where X = 1 or 2 (1, erases the event of the enemy,
# 2, passes to the local interrupter A)
# Follow - Makes the event automatically follow the hero.
#--------------------------------------------------------------
# General Configuration
#--------------------------------------------------------------
#--------------------------------------------------------------
# Attack Button, Don't Change: [DEFAULT= A]
Attack_Button = Input::X
#--------------------------------------------------------------
# Ability Button, Don't Change: [DEFAULT= S]
Skill_Button = {Input::Y => 0}
#--------------------------------------------------------------
# LevelUP Animation:
LevelUp_Ani = 40
#--------------------------------------------------------------
# Attack Animation, copy Enemy_atk_ani[2] = 13
# change the 2 to the ID of the enemy, and the 13 to the ID of the animation.
# Example: Enemy_atk_ani[25] = 24
Enemy_atk_ani = {}
Enemy_atk_ani[2] = 13
#--------------------------------------------------------------
#--------------------------------------------------------------
# Game Character
#--------------------------------------------------------------
class Game_Character
 attr_accessor :hp
 attr_accessor :mp
 attr_accessor :damage
 attr_accessor :critical
 attr_accessor :wait_ataque
 attr_accessor :die
 alias vlad_abs_gchar_initialize initialize
 def initialize
  @hp = 0
  @mp = 0
  @die = 0
  $skill_for_use = 0
  @wait_ataque = 0
  @damage = nil
  @critical = false
  vlad_abs_gchar_initialize
 endÂ
 def recebe_atk(attacker)
  attacker_status = (attacker.is_a?(Game_Event) ? attacker.enemy_status : $game_actors[1])
  receptor_status = (self.is_a?(Game_Event) ? self.enemy_status : $game_actors[1])
  self.damage = attacker_status.atk - receptor_status.def
  self.damage *= attacker_status.elements_max_rate(attacker_status.element_set)
  self.damage /= 100
  self.damage = 0 if self.damage < 0
  self.critical = (rand(100) < 4)
  self.damage *= 2 if self.critical
  if self.is_a?(Game_Player)
  $game_actors[1].hp -= self.damage
  if $game_actors[1].hp <= 0
   $scene = Scene_Gameover.new
  end
  elsif self.is_a?(Game_Event)
   self.hp -= self.damage
   if self.hp <= 0
    self.animation_id = 88
     $game_actors[1].gain_exp(enemy_status.exp, 1)
     if @die == 1
     self.erase
    elsif @die == 2
     key = [$game_map.map_id, self.id, "A"]
     $game_self_switches[key] = true
     end
     refresh
    end
  end
 end
  def recebe_skl(attacker)
   for key in Skill_Button.keys
  sklid = Skill_Button[key]
  attacker_status = (attacker.is_a?(Game_Event) ? attacker.enemy_status : $game_actors[1])
  receptor_status = (self.is_a?(Game_Event) ? self.enemy_status : $game_actors[1])
  self.damage = $data_skills[sklid].atk_f - receptor_status.def
  self.damage *= attacker_status.elements_max_rate(attacker_status.element_set)
  self.damage /= 100
  self.damage = 0 if self.damage < 0
  self.critical = (rand(100) < 4)
  self.damage *= 2 if self.critical
  attacker_status.mp -= $data_skills[sklid].mp_cost
  if self.is_a?(Game_Player)
  $game_actors[1].hp -= self.damage
  $scene = Scene_Gameover.new if $game_actors[1].hp <= 0
  elsif self.is_a?(Game_Event)
   self.hp -= self.damage
   if self.hp <= 0
     $game_actors[1].gain_exp(enemy_status.exp, 1)
     if @die == 1
     self.erase
    elsif @die == 2
     key = [$game_map.map_id, self.id, "A"]
     $game_self_switches[key] = true
     end
     refresh
    end
  end
 end
end
 def follow_hero(dx, dy)
    sx = @x - dx
    sy = @y - dy
    if sx == 0 and sy == 0
     return
    end
    abs_sx = sx.abs
    abs_sy = sy.abs
    if abs_sx == 0
     sy > 0 ? move_up : move_down
     if not moving? and sx != 0
      sx > 0 ? move_left : move_right
     end
     return
    elsif abs_sy == 0
     sx > 0 ? move_left : move_right
     if not moving? and sy != 0
      sy > 0 ? move_up : move_down
     end
     return
    end
    if abs_sx == abs_sy
     rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
    end
    if abs_sx > abs_sy
     sx > 0 ? move_left : move_right
     if not moving? and sy != 0
      sy > 0 ? move_up : move_down
     end
    else
     sy > 0 ? move_up : move_down
     if not moving? and sx != 0
      sx > 0 ? move_left : move_right
     end
    end
   end
   def raio(dx, dy)
    ax = (@x - dx) ** 2
    ay = (@y - dy) ** 2
    return Math.sqrt(ax + ay)
   end
end
#--------------------------------------------------------------
# Game Event
#--------------------------------------------------------------
class Game_Event < Game_Character
 attr_reader :inimigo
 attr_reader :enemy_status
 alias vlad_abs_gevent_initialize initialize
 alias vlad_abs_gevent_update update
 alias vlad_abs_gevent_refresh refresh
 def initialize(map_id, event)
  @inimigo = false
  @automove = false
  vlad_abs_gevent_initialize(map_id, event)
 end
 def check_com(comentario)
  return false if @list.nil? or @list.size <= 0
  for item in @list
   if item.code == 108 or item.code == 408
    if item.parameters[0].downcase.include?(comentario.downcase)
     return true
    end
   end
  end
 end
 def check_comment(comentario)
  com = comentario.downcase
  return 0 if @list.nil? or @list.size <= 0
  for item in @list
   if item.code == 108 or item.code == 408
    if item.parameters[0].downcase =~ /#{com}[ ]?(\d+)?/
     return $1.to_i
    end
   end
  end
  return 0
 end
 def update
  vlad_abs_gevent_update
  if @inimigo
   new_x = (@x + (@direction == 4 ? -1 : @direction == 6 ? 1 : 0))
   new_y = (@y + (@direction == 8 ? -1 : @direction == 2 ? 1 : 0))
   if self.wait_ataque > 0
    self.wait_ataque -= 1
   elsif $game_player.x == new_x and $game_player.y == new_y
     $game_player.recebe_atk(self)
     $game_player.animation_id = self.enemy_atk_animation_id
     $game_player.jump(0,0)
    self.wait_ataque = 60
   end
  end
   if @automove
     unless moving?
      self.follow_hero($game_player.x, $game_player.y)
     end
    end
 end
 def refresh
  vlad_abs_gevent_refresh
  @inimigo = false
  @enemy_id = check_comment("Enemy")
  @automove = true if check_com("Follow") == true
  @die = check_comment("Die")
  if @enemy_id > 0
   @inimigo = true
   @enemy_status = Game_Enemy.new(@enemy_id, @enemy_id)
  self.hp = @enemy_status.maxhp
  self.mp = @enemy_status.maxmp
  end
 end
 def enemy_atk_animation_id
  if Enemy_atk_ani[@enemy_id]
  return (@enemy_status.nil? ? 0 : Enemy_atk_ani[@enemy_id])
 else
  return (@enemy_status.nil? ? 0 : 1)
 end
 end
 def Enemy_atk_ani
  return Enemy_atk_ani
 end
end
#--------------------------------------------------------------
# Game Player
#--------------------------------------------------------------
class Game_Player < Game_Character
 alias vlad_abs_gplayer_update update
 alias vlad_abs_gplayer_refresh refresh
 def update
  vlad_abs_gplayer_update
  if self.wait_ataque > 0
   self.wait_ataque -= 1
  end
 def refresh
  vlad_abs_gplayer_refresh
  self.hp = $game_actors[1].hp
  self.mp = $game_actors[1].mp
 end
  if Input.trigger?(Attack_Button) and self.wait_ataque <= 0
   new_x = (@x + ($game_player.direction == 4 ? -1 : $game_player.direction == 6 ? 1 : 0))
   new_y = (@y + ($game_player.direction == 8 ? -1 : $game_player.direction == 2 ? 1 : 0))
   for event in $game_map.events.values
    if event.inimigo
     if event.x == new_x and event.y == new_y
      event.recebe_atk(self)
      event.animation_id = self.player_atk_animation_id
      event.jump(0,0)
      self.wait_ataque = 30
      break
     end
    end
   end
  end
  for key in Skill_Button.keys
  if Input.trigger?(key) and Skill_Button[key] != nil and Skill_Button[key] != 0 and $game_actors[1].mp >= $data_skills[Skill_Button[key]].mp_cost and self.wait_ataque <= 0
   new_x = (@x + ($game_player.direction == 4 ? -1 : $game_player.direction == 6 ? 1 : 0))
   new_y = (@y + ($game_player.direction == 8 ? -1 : $game_player.direction == 2 ? 1 : 0))
   for event in $game_map.events.values
    if event.inimigo
     if event.x == new_x and event.y == new_y
      event.recebe_skl(self)
      event.animation_id = self.player_skl_animation_id
      event.jump(0,0)
      self.wait_ataque = 60
      break
     end
    end
   end
  end
  end
  def player_atk_animation_id
  return ($game_actors[1].nil? ? 0 : $game_actors[1].atk_animation_id)
 end
 def player_skl_animation_id
  for key in Skill_Button.keys
   sklid = Skill_Button[key]
  return ($game_actors[1].nil? ? 0 : $data_skills[sklid].animation_id)
  end
 end
  def Attack_Button
  return Attack_Button
 end
 def Skill_Button
  return Skill_Button
 end
 end
end
#--------------------------------------------------------------
# Game Actor
#--------------------------------------------------------------
class Game_Actor
 alias vlad_abs_change_exp change_exp
 def change_exp(exp, show)
  last_level = @level
  last_skills = skills
  @exp = [[exp, 9999999].min, 0].max
  while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
   level_up
  end
  while @exp < @exp_list[@level]
   level_down
  end
  @hp = [@hp, maxhp].min
  @mp = [@mp, maxmp].min
  if show and @level > last_level
   show_level_up
  end
  vlad_abs_change_exp(exp,show)
 end
 def show_level_up
  $game_player.animation_id = LevelUp_Ani
  $game_actors[1].hp = $game_actors[1].maxhp
  $game_actors[1].mp = $game_actors[1].maxmp
 end
 def LevelUp_Ani
  return LevelUp_Ani
 end
end
#--------------------------------------------------------------
# Sprite Base
#--------------------------------------------------------------
 class Sprite_Base
 alias animation animation_set_sprites
def animation_set_sprites(frame)
  cell_data = frame.cell_data
  for i in 0..15
   sprite = @animation_sprites[i]
   next if sprite == nil
   pattern = cell_data[i, 0]
   if pattern == nil or pattern == -1
    sprite.visible = false
    next
   end
   if pattern < 100
    sprite.bitmap = @animation_bitmap1
   else
    sprite.bitmap = @animation_bitmap2
   end
   sprite.visible = true
   sprite.src_rect.set(pattern % 5 * 192,
    pattern % 100 / 5 * 192, 192, 192)
   if @animation_mirror
    sprite.x = @animation_ox - cell_data[i, 1] / 2
    sprite.y = @animation_oy - cell_data[i, 2] / 2
    sprite.angle = (360 - cell_data[i, 4])
    sprite.mirror = (cell_data[i, 5] == 0)
   else
    sprite.x = @animation_ox + cell_data[i, 1] / 2
    sprite.y = @animation_oy + cell_data[i, 2] / 2
    sprite.angle = cell_data[i, 4]
    sprite.mirror = (cell_data[i, 5] == 1)
   end
   sprite.z = self.z + 300
   sprite.ox = 96
   sprite.oy = 96
   sprite.zoom_x = cell_data[i, 3] / 200.0
   sprite.zoom_y = cell_data[i, 3] / 200.0
   sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
   sprite.blend_type = cell_data[i, 7]
  end
 end
end
#--------------------------------------------------------------
# Sprite Character
#--------------------------------------------------------------
class Sprite_Character < Sprite_Base
 alias vlad_abs_spchar_update update
 def initialize(viewport, character = nil)
  super(viewport)
  @character = character
  @balloon_duration = 0
  @_damage_duration = 0
  update
 end
 def update
  super
  if @_damage_duration > 0
   @_damage_duration -=1
    @_damage_sprite.x = self.x
    if @_damage_duration <= 0
     dispose_damage
    end
   end
   if @character != nil and @character.damage != nil
   damage(@character.damage, @character.critical)
   @character.damage = nil
   @character.critical = false
  end
  vlad_abs_spchar_update
 end
def damage(value, critical)
   dispose_damage
   if value.is_a?(Numeric)
    damage_string = value.abs.to_s
   else
    damage_string = value.to_s
   end
   bitmap = Bitmap.new(160, 48)
   bitmap.font.name = "Georgia"
   bitmap.font.size = 22
   bitmap.font.italic = true
   if value.is_a?(Numeric) and value <= 0
    bitmap.font.color.set(0, 0, 0)
    bitmap.draw_text(1, 13, 160, 36, "Fallo", 1)
    bitmap.font.color.set(255, 245, 155)
    bitmap.draw_text(0, 12, 160, 36, "Fallo", 1)
   else
    bitmap.font.color.set(0, 0, 0)
    bitmap.draw_text(1, 13, 160, 36, damage_string, 1)
    bitmap.font.color.set(255, 255, 255)
    bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
   end
   if critical
    bitmap.font.color.set(0, 0, 0)
    bitmap.draw_text(1, 6, 160, 20, "CrÃÂtico", 1)
    bitmap.font.color.set(255, 245, 155)
    bitmap.draw_text(0, 5, 160, 20, "CrÃÂtico", 1)
   end
   @_damage_sprite = ::Sprite.new(self.viewport)
   @_damage_sprite.bitmap = bitmap
   @_damage_sprite.ox = 80
   @_damage_sprite.oy = 20
   @_damage_sprite.x = self.x
   @_damage_sprite.y = self.y - self.oy / 2 - 40
   @_damage_sprite.z += 99999
   @_damage_duration = 30
  end
  def show_text(string, size=16, color=0)
   dispose_damage
   damage_string = string
   if string.is_a?(Array)
    array = true
   else
    array = false
   end
   bitmap = Bitmap.new(160, 48)
   bitmap.font.name = "Georgia"
   bitmap.font.size = size
   bitmap.font.italic = true
   if array
    for i in 0..string.size
     next if damage_string[i] == nil
     bitmap.font.color.set(96, 96-20, 0) if color == 0
     bitmap.font.color.set(0, 0, 0) if color != 0
     bitmap.draw_text(-1, (12+(16*i)-1)-16, 160, 36, damage_string[i], 1)
     bitmap.draw_text(+1, (12+(16*i)-1)-16, 160, 36, damage_string[i], 1)
     bitmap.draw_text(-1, (12+(16*i)+1)-16, 160, 36, damage_string[i], 1)
     bitmap.draw_text(+1, (12+(16*i)+1)-16, 160, 36, damage_string[i], 1)
     bitmap.font.color.set(255, 245, 155) if color == 0
     bitmap.font.color.set(144, 199, 150) if color == 1
     bitmap.font.color.set(197, 147, 190)if color == 2
     bitmap.font.color.set(138, 204, 198)if color == 3
     bitmap.draw_text(0, (12+(16*i))-16, 160, 36, damage_string[i], 1)
    end
   else
    bitmap.font.color.set(96, 96-20, 0) if color == 0
    bitmap.font.color.set(0, 0, 0) if color != 0
    bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
    bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
    bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
    bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
    bitmap.font.color.set(255, 245, 155) if color == 0
    bitmap.font.color.set(144, 199, 150) if color == 1
    bitmap.font.color.set(197, 147, 190)if color == 2
    bitmap.font.color.set(138, 204, 198)if color == 3
    bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
   end
   @_damage_sprite = ::Sprite.new(self.viewport)
   @_damage_sprite.bitmap = bitmap
   @_damage_sprite.ox = 80
   @_damage_sprite.oy = 20
   @_damage_sprite.x = self.x
   @_damage_sprite.y = self.y - self.oy / 2
   @_damage_sprite.z = 3000
   @_damage_duration = 30
  end
  def dispose_damage
  if @_damage_sprite != nil
   @_damage_sprite.dispose
   @_damage_sprite = nil
  end
 end
end
Â
#--------------------------------------------------------------
# Window Skill
#--------------------------------------------------------------
class Scene_Skill
 alias vlad_abs_sskill_initialize initialize
 alias vlad_abs_sskill_update update
 def initialize(actor_index = 0, equip_index = 0)
  @memory = Window_Command.new(150, ["Memorize"])
  @memory.active = false
  @memory.visible = false
  @memory.x = (544 - @memory.width) / 2
  @memory.y = (416 - @memory.height) / 2
  @memory.z = 1500
  vlad_abs_sskill_initialize
 end
def update
 update_skill
 @memory.update if @memory.active
 return update_memory if @memory.active
 vlad_abs_sskill_update
end
def update_skill
 for key in Skill_Button.keys
 if Input.trigger?(key)
 Sound.play_decision
 Skill_Button[key] = @skill_window.skill.id
 @memory.active = @memory.visible = true
 @skill_window.active = false
end
end
end
 def update_memory
if Input.trigger?(Input::C)
 Sound.play_decision
 @memory.active = @memory.visible = false
 @skill_window.active = true
end
end
 def Skill_Button
  return Skill_Button
 end
end
#--------------------------------------------------------------
# FINISH
#--------------------------------------------------------------
Additionally, you need to input this script above the ABS script in order to see the HUD
Code:
#=============================================================================
# Window Hud
#=============================================================================
class Window_Hud < Window_Base
 def initialize
  super(0,0,128,96)
  self.opacity = 0
#Â Â self.visible = false
  refresh
 end
 def refresh
  self.contents.clear
   actor = $game_actors[1]
   draw_actor_hp(actor, 0, 0, 96)
   draw_actor_mp(actor, 0, 32, 96)
  end
  def update
#Â Â Â self.visible = true if $game_switches[1] == true # 1=interruptor que activa y desactiva el HUD
   refresh
  end
end
class Scene_Map
 alias hud_main main
 alias hud_update update
 alias hud_terminate terminate
 def main
  @hud = Window_Hud.new
  hud_main
 end
 def update
  @hud.update
  hud_update
 end
 def terminate
  @hud.dispose
 end
end
How to use the ABS
Create an Event. You don't have to name it. Now create a graphic for that monster.
Next create THREE comment boxes. In the first one type Enemy ID and replace the ID with the number your enemy is, in the Database
The second comment box should be Die with either 1 or 2, put 1 if you just want the enemy to get killed and disappear.
For the final comment box it should be either Follow or not. If you do not want the enemy following the hero, then don't put this comment box.
So it should look like this:
EXAMPLE:
Comment: Enemy 27
Comment: Die 1
Comment: Follow [OPTIONAL]
Credits
This was made by a Spanish guy named Vlad. I do believe somewhere in the original post I provided it says it can be distributed anywhere, or at least that's what the person who posted this back on another RM forum said. If someone can point out if it can't be distributed I will take this script down, I do not want to violate any rules. So if someone can translate the original post and verify if this script can be 100% distributed that would be great.
Original Post: http://www.vz4.net/index.php?site/ver-5043