Últimos temas
» [ACE] La Aventura de Sonik
por Calayax Hoy a las 4:15 am

» [XP] Engine de Terreno de Calayax
por Calayax Hoy a las 1:40 am

» Taller del BGM
por ZororoWhite Ayer a las 12:48 pm

» Concurso de screens - Mayo/Junio 2017 [Resultados]
por ZororoWhite Ayer a las 12:44 pm

» Ayuda cob Interruptores
por KRiZaLiD Ayer a las 7:02 am

» Ayuda - Quitar opción de atravesar todo RPG VX ACE
por KRiZaLiD Ayer a las 6:57 am

» KUnits XP 2017
por kyonides Ayer a las 5:37 am

» Evento Comunes...todavía no la cazo bien con algo
por Calayax Jue Jul 20, 2017 8:50 pm

» Guía de trucos para ACE
por Pokefanmati Jue Jul 20, 2017 8:03 am

» Que el personaje desaparezca al usar habilidad [ayuda] [MV]
por Dream Jue Jul 20, 2017 5:53 am

» KyoDiscounts MV
por cebmetal Lun Jul 17, 2017 3:50 pm

» KUnits VX - Grupos de Héroes
por kyonides Lun Jul 17, 2017 6:07 am


Script de Bestiario (de Momo)

Ver el tema anterior Ver el tema siguiente Ir abajo

Script de Bestiario (de Momo)

Mensaje por Turbiosoft.acho el Lun Feb 10, 2014 11:21 pm

Este script crea un bestiario, realizando una lista a partir de todos los monstruos que han sido derrotados. Es un script de Momo y modificado por Atoa.

¿Qué características tiene?

• Como se ha dicho arriba, se muestra una lista con los monstruos ya derrotados.
• Permite configurar cómo se muestra el total de monstruos derrotados: no mostrar, valor total, mostrar porcentaje.
• Puede verse el item que suele dejar caer el monstruo. Se dirá si siempre lo deja caer o sólo a veces.
• ¡Se puede configurar para que se muestre el gráfico animado del enemigo!

Screens (en portugués)


Spoiler:



Para instalarlo, coloca el script encima de Main.

Y para abrir el bestiario, usa el comando de Llamar Script y escribe lo siguiente:

Código:
$scene = Scene_MonsterBook.new

Para que un monstruo no aparezca nunca en la lista, debes crear un Estado llamado "No_Mostrar". En las opciones de dicho enemigo, deberás poner la resistencia en "A."

Sin más dilación, he aquí el script:

Spoiler:

Código:
#==============================================================================
# Bestiario
# por momo
# modificado por Atoa
#==============================================================================
# Añade a tu juego un Bestiario, que es una base de datos de
# monstruos que has derrotado hasta ahora.
#
# Para abrir el bestiario, usa el comando de eventos "Llamar Script"
# y añade el siguiente comando:
# $scene = Scene_MonsterBook.new
#
# Para que un monstruo no aparezca *nunca* en la lista
# debes crear un atributo llamado
# "No_Mostrar" y fijar la "resistencia" del monstruo contra dicho
# atributo en "A"
#==============================================================================
module Enemy_Book_Config
 
  # Si es true, se muestra un item que el monstruo ha dejado caer
  # al menos una vez.
  # Si es false, el item se muestra las veces que lo hayas obtenido.
  DROP_ITEM_NEED_ANALYZE = false
 
  # modo de visualización de monstruos completados.
  # 0 = no mostrar nada
  # 1 = El valor será mostrado en números reales.
  # 2 = El valor será mostrado en porcentaje.
  SHOW_COMPLETE_TYPE = 3
 
  # Nombre de Atributo Evasión
  EVA_NAME = "Evasión"
end
 
#==============================================================================
# Game_Temp
#==============================================================================
class Game_Temp
 #--------------------------------------------------------------------------
 attr_accessor :enemy_book_data
 #--------------------------------------------------------------------------
 alias temp_enemy_book_data_initialize initialize
 def initialize
   temp_enemy_book_data_initialize
   @enemy_book_data = Data_MonsterBook.new
 end
end
 
#==============================================================================
# Game_Party
#==============================================================================
class Game_Party
 #--------------------------------------------------------------------------
 attr_accessor :enemy_info
 #--------------------------------------------------------------------------
 alias book_info_initialize initialize
 def initialize
   book_info_initialize
   @enemy_info = {}
 end
 #--------------------------------------------------------------------------
 def add_enemy_info(enemy_id, type = 0)
   case type
   when 0
     if @enemy_info[enemy_id] == 2
       return false
     end
     @enemy_info[enemy_id] = 1
   when 1
     @enemy_info[enemy_id] = 2
   when -1
     @enemy_info[enemy_id] = 0
   end
 end
 #--------------------------------------------------------------------------
 def enemy_book_max
   return $game_temp.enemy_book_data.id_data.size - 1
 end
 #--------------------------------------------------------------------------
 def enemy_book_now
   now_enemy_info = @enemy_info.keys
   no_add = $game_temp.enemy_book_data.no_add_element
   new_enemy_info = []
   for i in now_enemy_info
     enemy = $data_enemies[i]
     next if enemy.name == ""
     if enemy.element_ranks[no_add] == 1
       next
     end
     new_enemy_info.push(enemy.id)
   end
   return new_enemy_info.size
 end
 #--------------------------------------------------------------------------
 def enemy_book_complete_percentage
   e_max = enemy_book_max.to_f
   e_now = enemy_book_now.to_f
   comp = e_now / e_max * 100
   return comp.truncate
 end
end
 
#==============================================================================
# Interpreter
#==============================================================================
class Interpreter
 #--------------------------------------------------------------------------
 def enemy_book_max
   return $game_party.enemy_book_max
 end
 #--------------------------------------------------------------------------
 def enemy_book_now
   return $game_party.enemy_book_now
 end
 #--------------------------------------------------------------------------
 def enemy_book_comp
   return $game_party.enemy_book_complete_percentage
 end
end
 
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
 #--------------------------------------------------------------------------
 alias add_enemy_info_start_phase5 start_phase5
 def start_phase5
   for enemy in $game_troop.enemies
     unless enemy.hidden
       $game_party.add_enemy_info(enemy.id, 0)
     end
   end
   add_enemy_info_start_phase5
 end
end
 
#==============================================================================
# Window_Base
#==============================================================================
class Window_Base < Window
 #--------------------------------------------------------------------------
 def initialize(x, y, width, height)
   super()
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = "Arial"#$fontface
   @windowskin_name = $game_system.windowskin_name
   self.windowskin = RPG::Cache.windowskin(@windowskin_name)
   self.x = x
   self.y = y
   self.width = width
   self.height = height
   self.z = 100
 end
 #--------------------------------------------------------------------------
 def draw_enemy_drop_item(enemy, x, y)
   self.contents.font.color = normal_color
   self.contents.font.name = "Arial"#$fontface
   treasures = []
   if enemy.item_id > 0
     treasures.push($data_items[enemy.item_id])
   end
   if enemy.weapon_id > 0
     treasures.push($data_weapons[enemy.weapon_id])
   end
   if enemy.armor_id > 0
     treasures.push($data_armors[enemy.armor_id])
   end
   if treasures.size > 0
     item = treasures[0]
     bitmap = RPG::Cache.icon(item.icon_name)
     opacity = 255
     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
     name = treasures[0].name
   else
     self.contents.font.color = disabled_color
     self.contents.font.name = "Arial"#$fontface
     name = "No Item"
   end
   self.contents.draw_text(x+28, y, 212, 32, name)
 end
 #--------------------------------------------------------------------------
 def draw_enemy_book_id(enemy, x, y)
   self.contents.font.color = normal_color
   self.contents.font.name = "Arial"#$fontface
   id = $game_temp.enemy_book_data.id_data.index(enemy.id)
   self.contents.draw_text(x, y, 32, 32, id.to_s)
 end
 #--------------------------------------------------------------------------
 def draw_enemy_name(enemy, x, y)
   self.contents.font.color = normal_color
   self.contents.font.name = "Arial"#$fontface
   self.contents.draw_text(x, y, 152, 32, enemy.name)
 end
 #--------------------------------------------------------------------------
 def draw_enemy_graphic(enemy, x, y, opacity = 255)
   bitmap = RPG::Cache.battler(enemy.battler_name, enemy.battler_hue)
   cw = bitmap.width
   ch = bitmap.height
   src_rect = Rect.new(0, 0, cw, ch)
   x = x + (cw / 2 - x) if cw / 2 > x
   self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, opacity)
 end
 #--------------------------------------------------------------------------
 def draw_enemy_exp(enemy, x, y)
   self.contents.font.color = system_color
   self.contents.font.name = "Arial"#$fontface
   self.contents.draw_text(x, y, 120, 32, "EXP")
   self.contents.font.color = normal_color
   self.contents.font.name = "Arial"#$fontface
   self.contents.draw_text(x + 120, y, 36, 32, enemy.exp.to_s, 2)
 end
 #--------------------------------------------------------------------------
 def draw_enemy_gold(enemy, x, y)
   self.contents.font.color = system_color
   self.contents.font.name = "Arial"#$fontface
   self.contents.draw_text(x, y, 120, 32, $data_system.words.gold)
   self.contents.font.color = normal_color
   self.contents.font.name = "Arial"#$fontface
   self.contents.draw_text(x + 120, y, 36, 32, enemy.gold.to_s, 2)
 end
end
 
#==============================================================================
# Game_Enemy_Book
#==============================================================================
class Game_Enemy_Book < Game_Enemy
 #--------------------------------------------------------------------------
 def initialize(enemy_id)
   super(2, 1)
   @enemy_id = enemy_id
   enemy = $data_enemies[@enemy_id]
   @battler_name = enemy.battler_name
   @battler_hue = enemy.battler_hue
   @hp = maxhp
   @sp = maxsp
 end
end
 
#==============================================================================
# Data_MonsterBook
#==============================================================================
class Data_MonsterBook
 #--------------------------------------------------------------------------
 attr_reader :id_data
 #--------------------------------------------------------------------------
 def initialize
   @id_data = enemy_book_id_set
 end
 #--------------------------------------------------------------------------
 def no_add_element
   no_add = 0
   for i in 1...$data_system.elements.size
     if $data_system.elements[i] =~ /Monster Book/
       no_add = i
       break
     end
   end
   return no_add
 end
 #--------------------------------------------------------------------------
 def enemy_book_id_set
   data = [0]
   no_add = no_add_element
   for i in 1...$data_enemies.size
     enemy = $data_enemies[i]
     next if enemy.name == ""
     if enemy.element_ranks[no_add] == 1
       next
     end
     data.push(enemy.id)
   end
   return data
 end
end
 
#==============================================================================
# Window_MonsterBook
#==============================================================================
class Window_MonsterBook < Window_Selectable
 #--------------------------------------------------------------------------
 attr_reader   :data
 #--------------------------------------------------------------------------
 def initialize(index=0)
   super(0, 64, 640, 416)
   @column_max = 2
   @book_data = $game_temp.enemy_book_data
   @data = @book_data.id_data.dup
   @data.shift
   @item_max = @data.size
   self.index = 0
   refresh if @item_max > 0
 end
 #--------------------------------------------------------------------------
 def data_set
   data = $game_party.enemy_info.keys
   data.sort!
   newdata = []
   for i in data
     next if $game_party.enemy_info[i] == 0
     if book_id(i) != nil
       newdata.push(i)
     end
   end
   return newdata
 end
 #--------------------------------------------------------------------------
 def show?(id)
   if $game_party.enemy_info[id] == 0 or $game_party.enemy_info[id] == nil
     return false
   else
     return true
   end
 end
 #--------------------------------------------------------------------------
 def book_id(id)
   return @book_data.index(id)
 end
 #--------------------------------------------------------------------------
 def item
   return @data[self.index]
 end
 #--------------------------------------------------------------------------
 def refresh
   if self.contents != nil
     self.contents.dispose
     self.contents = nil
   end
   self.contents = Bitmap.new(width - 32, row_max * 32)
   if @item_max > 0
     for i in 0...@item_max
      draw_item(i)
     end
   end
 end
 #--------------------------------------------------------------------------
 def draw_item(index)
   enemy = $data_enemies[@data[index]]
   return if enemy == nil
   x = 4 + index % 2 * (288 + 32)
   y = index / 2 * 32
   rect = Rect.new(x, y, self.width / @column_max - 32, 32)
   self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
   self.contents.font.color = normal_color
   self.contents.font.name = "Arial"#$fontface
   draw_enemy_book_id(enemy, x, y)
   if show?(enemy.id)
     self.contents.draw_text(x + 28+16, y, 212, 32, enemy.name, 0)
   else
     self.contents.draw_text(x + 28+16, y, 212, 32, "Oculto", 0)
     return
   end
   if analyze?(@data[index])
     self.contents.font.color = text_color(3)
     self.contents.font.name = "Arial"#$fontface
     self.contents.draw_text(x + 256, y, 24, 32, "Cancelar", 2)
   end
 end
 #--------------------------------------------------------------------------
 def analyze?(enemy_id)
   if $game_party.enemy_info[enemy_id] == 2
     return true
   else
     return false
   end
 end
end
 
#==============================================================================
# Window_MonsterBook_Info
#==============================================================================
class Window_MonsterBook_Info < Window_Base
 #--------------------------------------------------------------------------
 include Enemy_Book_Config
 #--------------------------------------------------------------------------
 def initialize
   super(0, 0+64, 640, 480-64)
   self.contents = Bitmap.new(width - 32, height - 32)
 end
 #--------------------------------------------------------------------------
 def refresh(enemy_id)
   self.contents.clear
   self.contents.font.name = "Arial"#$fontface
   self.contents.font.size = 22
   enemy = Game_Enemy_Book.new(enemy_id)
   draw_enemy_graphic(enemy, 96, 240+48+64, 200)
   draw_enemy_book_id(enemy, 4, 0)
   draw_enemy_name(enemy, 48, 0)
   draw_actor_hp(enemy, 288, 0)
   draw_actor_sp(enemy, 288+160, 0)
   draw_actor_parameter(enemy, 288    ,  32, 0)
   self.contents.font.color = system_color
   self.contents.draw_text(288+160, 32, 120, 32, EVA_NAME)
   self.contents.font.color = normal_color
   self.contents.draw_text(288+160 + 120, 32, 36, 32, enemy.eva.to_s, 2)
   draw_actor_parameter(enemy, 288    ,  64, 3)
   draw_actor_parameter(enemy, 288+160,  64, 4)
   draw_actor_parameter(enemy, 288    ,  96, 5)
   draw_actor_parameter(enemy, 288+160,  96, 6)
   draw_actor_parameter(enemy, 288    , 128, 1)
   draw_actor_parameter(enemy, 288+160, 128, 2)
   draw_enemy_exp(enemy, 288, 160)
   draw_enemy_gold(enemy, 288+160, 160)
   if analyze?(enemy.id) or !DROP_ITEM_NEED_ANALYZE
     self.contents.draw_text(288, 192, 96, 32, "Item ganho")
     draw_enemy_drop_item(enemy, 288+96+4, 192)
     self.contents.font.color = normal_color
   end
 end
 #--------------------------------------------------------------------------
 def analyze?(enemy_id)
   if $game_party.enemy_info[enemy_id] == 2
     return true
   else
     return false
   end
 end
end
 
#==============================================================================
# Scene_MonsterBook
#==============================================================================
class Scene_MonsterBook
 #--------------------------------------------------------------------------
 include Enemy_Book_Config
 #--------------------------------------------------------------------------
 def main
   $game_temp.enemy_book_data = Data_MonsterBook.new
   @title_window = Window_Base.new(0, 0, 640, 64)
   @title_window.contents = Bitmap.new(640 - 32, 64 - 32)
   @title_window.contents.draw_text(4, 0, 320, 32, "Livro de Monstros", 0)
   if SHOW_COMPLETE_TYPE != 0
     case SHOW_COMPLETE_TYPE
     when 1
       e_now = $game_party.enemy_book_now
       e_max = $game_party.enemy_book_max
       text = e_now.to_s + "/" + e_max.to_s
     when 2
       comp = $game_party.enemy_book_complete_percentage
       text = comp.to_s + "%"
     when 3
       e_now = $game_party.enemy_book_now
       e_max = $game_party.enemy_book_max
       comp = $game_party.enemy_book_complete_percentage
       text = e_now.to_s + "/" + e_max.to_s + " " + comp.to_s + "%"
     end
     if text != nil
       @title_window.contents.draw_text(320, 0, 288, 32,  text, 2)
     end
   end
   @main_window = Window_MonsterBook.new
   @main_window.active = true
   @info_window = Window_MonsterBook_Info.new
   @info_window.z = 110
   @info_window.visible = false
   @info_window.active = false
   @visible_index = 0
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   Graphics.freeze
   @main_window.dispose
   @info_window.dispose
   @title_window.dispose
 end
 #--------------------------------------------------------------------------
 def update
   @main_window.update
   @info_window.update
   if @info_window.active
     update_info
     return
   end
   if @main_window.active
     update_main
     return
   end
 end
 #--------------------------------------------------------------------------
 def update_main
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     $scene = Scene_Map.new
     return
   end
   if Input.trigger?(Input::C)
     if @main_window.item == nil or @main_window.show?(@main_window.item) == false
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     $game_system.se_play($data_system.decision_se)
     @main_window.active = false
     @info_window.active = true
     @info_window.visible = true
     @visible_index = @main_window.index
     @info_window.refresh(@main_window.item)
     return
   end
 end
 #--------------------------------------------------------------------------
 def update_info
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     @main_window.active = true
     @info_window.active = false
     @info_window.visible = false
     return
   end
   if Input.trigger?(Input::C)
     return
   end
   if Input.trigger?(Input::L)
     $game_system.se_play($data_system.decision_se)
     loop_end = false
     while loop_end == false
       if @visible_index != 0
         @visible_index -= 1
       else
         @visible_index = @main_window.data.size - 1
       end
       loop_end = true if @main_window.show?(@main_window.data[@visible_index])
     end
     id = @main_window.data[@visible_index]
     @info_window.refresh(id)
     return
   end
   if Input.trigger?(Input::R)
     $game_system.se_play($data_system.decision_se)
     loop_end = false
     while loop_end == false
       if @visible_index != @main_window.data.size - 1
         @visible_index += 1
       else
         @visible_index = 0
       end
       loop_end = true if @main_window.show?(@main_window.data[@visible_index])
     end
     id = @main_window.data[@visible_index]
     @info_window.refresh(id)
     return
   end
 end
end
avatar
Turbiosoft.acho
Admin
Admin

Femenino
Rmakercom
RPG Maker : Vx
Mensajes : 1155
Monedas : 3712
Reputación : 151
Localización : En el glorioso y magistral Zulo.

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.