Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Bestiary?

Mega Flare

Awesome Bro

Code:
#==============================================================================
# â–  Bestiary
#------------------------------------------------------------------------------
# Created by Momomo
# Modified by Thousand Dragoon Link
#==============================================================================

module Enemy_Book_Config
 DROP_ITEM_NEED_ANALYZE = false
 EVA_NAME = "Evasion"            
 SHOW_COMPLETE_TYPE = 2        
                         
end

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

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

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

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

class Window_Base < Window
 #--------------------------------------------------------------------------
 def draw_enemy_drop_item(enemy, x, y)
   self.contents.font.color = normal_color
   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
     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
   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.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.draw_text(x, y, 120, 32, "EXP")
   self.contents.font.color = normal_color
   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.draw_text(x, y, 120, 32, $data_system.words.gold)
   self.contents.font.color = normal_color
   self.contents.draw_text(x + 120, y, 36, 32, enemy.gold.to_s, 2)
 end
end

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

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] =~ /図鑑登録無効/
       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


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
   #@data.sort!
   @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
   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, "-----", 0)
     return
   end
   if analyze?(@data[index])
     self.contents.font.color = text_color(3)
     self.contents.draw_text(x + 256, y, 24, 32, "済", 2)
   end
 end
 #--------------------------------------------------------------------------
 def analyze?(enemy_id)
   if $game_party.enemy_info[enemy_id] == 2
     return true
   else
     return false
   end
 end
end


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.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, "Drop Item")
     draw_enemy_drop_item(enemy, 288+96+4, 192)
     self.contents.font.color = normal_color
     #draw_element_guard(enemy, 320-32, 160-16+96)
   end
 end
 #--------------------------------------------------------------------------
 def analyze?(enemy_id)
   if $game_party.enemy_info[enemy_id] == 2
     return true
   else
     return false
   end
 end
end


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, "Bestiary", 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)
     #$game_system.se_play($data_system.decision_se)
     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

use this to call it

Code:
$scene = Scene_MonsterBook.new
 

Mega Flare

Awesome Bro

well there sir. Thats really simple You have to change the Main to something but i dont have that anymore. And this is only happing becuase you got the Japan version of RMXP. Thats what i think. But il be nice and give you the MAIN i have.

Code:
#==============================================================================
# ** Main
#------------------------------------------------------------------------------
#  After defining each class, actual processing begins here.
#==============================================================================

begin
  # Prepare for transition
  Graphics.freeze
  # Make scene object (title screen)
  $scene = Scene_Title.new
  # Call main method as long as $scene is effective
  while $scene != nil
    $scene.main
  end
  # Fade out
  Graphics.transition(20)
rescue Errno::ENOENT
  # Supplement Errno::ENOENT exception
  # If unable to open file, display message and end
  filename = $!.message.sub("No such file or directory - ", "")
  print("Unable to find file #{filename}.")
end
Just change your main to this(script) IT might work but im doubtfull

edit: oh one thing. IN the script i gave you, you need to Kill the monster before you can see it
 

Mega Flare

Awesome Bro

yeah guess you use the illegal Version of RMXP. Since well it works perfect for me and i got legal. And i remeber back in the .net old days people had this problem and someone posted the thing to fix it. If i can ever Find it il post it here
 
K, Or I'll convert over, If I can...My friend has a spare CD key...but incase that don't work, try and find that...

Cuz My game may mess up if I put it on the Legal version...I'll test with trial soon i suppose..
 
I don't think anyone is going to help you find stuff for the illegal version, expecially after you blatantly(sp?) said you were using it. I mean I don't really like spending my money too freely (after and incident I will now call the $20 left incident...those were sad times) and I bought the legal version...$60 might be pretty expensive, but it is legal, which is usually a better thing.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top