Já viram qual a arte dessa semana?Exposição dos Artistas #8
6 Respostas   491 Visualizações
0 Membros e 1 Visitante estão vendo este tópico.
#==============================================================================# +++ MOG - MONSTER BOOK (v1.6) +++#==============================================================================# By Moghunter # http://www.atelier-rgss.com/#==============================================================================# Sistema que permite verificar os parâmetros dos inimigos derrotados,# o que inclui o battleback e a música de batalha. # #==============================================================================# Para chamar o script use o comando abaixo.## monster_book##==============================================================================# ● Version History#==============================================================================# 1.6 - Adição da imagem de fundo quando não tem o battleback definido.# - Adição de novos comandos e configurações.#==============================================================================module MOG_MONSTER_BOOK #Ocultar inimigos especificos da lista de inimigos. HIDE_ENEMIES_ID = [] #Ativar a música de batalha. PLAY_MUSIC = true #Definição da palavra Completado. COMPLETED_WORD = "Completed" #Ativar o Monster Book no Menu. MENU_COMMAND = true #Nome do comando apresentado no menu. MENU_COMMAND_NAME = "Bestiary" #Definição da opacidade da janela WINDOW_OPACITY = 255end$imported = {} if $imported.nil?$imported[:mog_monster_book] = true#==============================================================================# ■ Game_Temp#==============================================================================class Game_Temp attr_accessor :bestiary_battleback1_name attr_accessor :bestiary_battleback2_name #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_bestiary_initialize initialize def initialize @bestiary_battleback1_name = "" @bestiary_battleback1_name = "" mog_bestiary_initialize endend #==============================================================================# ■ Game_System#==============================================================================class Game_System attr_accessor :bestiary_defeated attr_accessor :bestiary_battleback attr_accessor :bestiary_music #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_monster_book_initialize initialize def initialize @bestiary_defeated = [] @bestiary_battleback = [] @bestiary_music = [] mog_monster_book_initialize end end #==============================================================================# ■ Game Interpreter#==============================================================================class Game_Interpreter #-------------------------------------------------------------------------- # ● Monster Book #-------------------------------------------------------------------------- def monster_book SceneManager.call(Monster_Book) end end#==============================================================================# ■ Spriteset_Battle#==============================================================================class Spriteset_Battle #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_bestiary_initialize initialize def initialize mog_bestiary_initialize $game_temp.bestiary_battleback1_name = battleback1_name $game_temp.bestiary_battleback2_name = battleback2_name end end#==============================================================================# ■ Game_Enemy#==============================================================================class Game_Enemy < Game_Battler attr_accessor :enemy_id #-------------------------------------------------------------------------- # ● Die #-------------------------------------------------------------------------- alias mog_monster_book_die die def die mog_monster_book_die check_monster_book end #-------------------------------------------------------------------------- # ● Check Monster Book #-------------------------------------------------------------------------- def check_monster_book if $game_system.bestiary_defeated[@enemy_id] == nil $game_system.bestiary_defeated[@enemy_id] = 0 $game_system.bestiary_battleback[@enemy_id] = [$game_temp.bestiary_battleback1_name,$game_temp.bestiary_battleback2_name] $game_system.bestiary_music[@enemy_id] = $game_system.battle_bgm end $game_system.bestiary_defeated[@enemy_id] += 1 end end #==============================================================================# ■ Window_Monster_Status#==============================================================================class Window_Monster_Status < Window_Selectable #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- def initialize(enemy) super(0, Graphics.height - 128, Graphics.width, 128) self.opacity = MOG_MONSTER_BOOK::WINDOW_OPACITY self.z = 300 refresh(enemy) activate end #-------------------------------------------------------------------------- # ● Refresh #-------------------------------------------------------------------------- def refresh(enemy) self.contents.clear if $game_system.bestiary_defeated[enemy.id] == nil self.contents.draw_text(0,0 , 180, 24, "No Data",0) else change_color(system_color) w_max = 100 ex = 16 self.contents.draw_text(0,0 , w_max, 24, Vocab::param(0),0) self.contents.draw_text(0,24 * 1 , w_max, 24, Vocab::param(1),0) self.contents.draw_text(0,24 * 2 , w_max, 24, Vocab::param(2),0) self.contents.draw_text(0,24 * 3 , w_max, 24, Vocab::param(3),0) self.contents.draw_text(128,24 * 0 , w_max, 24, Vocab::param(4),0) self.contents.draw_text(128,24 * 1 , w_max, 24, Vocab::param(5),0) self.contents.draw_text(128,24 * 2 , w_max, 24, Vocab::param(6),0) self.contents.draw_text(128,24 * 3 , w_max, 24, Vocab::param(7),0) self.contents.draw_text(256,24 * 0 , w_max, 24, "Exp",0) self.contents.draw_text(384,24 * 0 , w_max, 24, Vocab::currency_unit,0) self.contents.draw_text(256,24 * 1 , w_max, 24, "Treasure",0) change_color(normal_color,true) w_max2 = 64 #HP self.contents.draw_text(32 + ex,0 , w_max2, 24, enemy.params[0],2) #MP self.contents.draw_text(32 + ex,24 * 1 , w_max2, 24, enemy.params[1],2) #ATK self.contents.draw_text(32 + ex,24 * 2 ,w_max2 , 24, enemy.params[2],2) #Def self.contents.draw_text(32 + ex,24 * 3 , w_max2, 24, enemy.params[3],2) #Mag Power self.contents.draw_text(160 + ex,24 * 0 , w_max2, 24, enemy.params[4],2) #Mag Def self.contents.draw_text(160 + ex,24 * 1 , w_max2, 24, enemy.params[5],2) #Agility self.contents.draw_text(160 + ex,24 * 2 , w_max2, 24, enemy.params[6],2) #Luck self.contents.draw_text(160 + ex,24 * 3 , w_max2, 24, enemy.params[7],2) #EXP self.contents.draw_text(280,24 * 0 , 96, 24, enemy.exp,2) #Gold self.contents.draw_text(400,24 * 0 , 96, 24, enemy.gold,2) #Drop Items tr = 0 for i in enemy.drop_items next if i.kind == 0 tr += 1 tr_name = $data_items[i.data_id] if i.kind == 1 tr_name = $data_weapons[i.data_id] if i.kind == 2 tr_name = $data_armors [i.data_id] if i.kind == 3 draw_icon(tr_name.icon_index, 336, 24 * tr) self.contents.draw_text(368,24 * tr , 160, 24, tr_name.name.to_s,0) end end endend#==============================================================================# ■ Window_Monster_List#==============================================================================class Window_Monster_List < Window_Selectable #------------------------------------------------------------------------------ # ● Initialize #------------------------------------------------------------------------------ def initialize(data) super(Graphics.width - 232, 64, 232, Graphics.height - 128 - 64) self.opacity = MOG_MONSTER_BOOK::WINDOW_OPACITY self.z = 301 @index = -1 @data = data @item_max = @data.size refresh(data) select(0) activate end #------------------------------------------------------------------------------ # ● Refresh #------------------------------------------------------------------------------ def refresh(data) self.contents.clear if @item_max > 0 self.contents = Bitmap.new(width - 32, @item_max * 24) for i in 0...@item_max draw_item(i) end end end #------------------------------------------------------------------------------ # ● draw_item MAX #------------------------------------------------------------------------------ def check_item_max @data_max = 0 for i in $data_enemies next if i == nil or MOG_MONSTER_BOOK::HIDE_ENEMIES_ID.include?(i.id) @data_max += 1 end end #------------------------------------------------------------------------------ # ● draw_item #------------------------------------------------------------------------------ def draw_item(index) x = 0 y = index / col_max * 24 n_index = index + 1 if $game_system.bestiary_defeated[@data[index].id] == nil monster_name = "No Data" defeated = " ---- " change_color(normal_color,false) else monster_name = @data[index].name change_color(normal_color,true) end check_item_max d = @data_max > 99 ? "%03d" : @data_max > 9 ? "%02d" : "%01d" text = sprintf(d, n_index).to_s + " - " self.contents.draw_text(x,y , 56, 24, text,0) self.contents.draw_text(x + 56,y , 140, 24, monster_name,0) end #------------------------------------------------------------------------------ # ● Item Max #------------------------------------------------------------------------------ def item_max return @item_max == nil ? 0 : @item_max end end#==============================================================================# ■ Window_Monster_Comp#==============================================================================class Window_Monster_Comp < Window_Selectable include MOG_MONSTER_BOOK #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- def initialize super(Graphics.width - 232,0, 232, 64) self.opacity = MOG_MONSTER_BOOK::WINDOW_OPACITY self.z = 300 refresh activate end #-------------------------------------------------------------------------- # ● Check Completition #-------------------------------------------------------------------------- def check_completion data_max = 0 for i in $data_enemies next if i == nil or MOG_MONSTER_BOOK::HIDE_ENEMIES_ID.include?(i.id) data_max += 1 end comp = 0 for i in 0...$game_system.bestiary_defeated.size comp += 1 if $game_system.bestiary_defeated[i] != nil end @completed = COMPLETED_WORD + " " + comp.to_s + "/" + data_max.to_s end #-------------------------------------------------------------------------- # ● Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear check_completion self.contents.draw_text(0,0, 160, 24, @completed.to_s,0) endend#==============================================================================# ■ Monster_Book#==============================================================================class Monster_Book #-------------------------------------------------------------------------- # ● Main #-------------------------------------------------------------------------- def main Graphics.transition(10) execute_loop execute_dispose end #-------------------------------------------------------------------------- # ● Execute Loop #-------------------------------------------------------------------------- def execute_loop loop do Graphics.update Input.update update break if SceneManager.scene != self end end #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- def initialize load_data execute_dispose create_background create_window_guide create_enemy_sprite create_battleback @music = [nil,nil,nil] refresh_bgm end #------------------------------------------------------------------------------ # ● Initialize #------------------------------------------------------------------------------ def load_data BattleManager.save_bgm_and_bgs @data = [] for i in $data_enemies next if i == nil or MOG_MONSTER_BOOK::HIDE_ENEMIES_ID.include?(i.id) @data.push(i) end end #-------------------------------------------------------------------------- # ● Execute Dispose #-------------------------------------------------------------------------- def execute_dispose return if @windows_guide == nil Graphics.freeze @windows_guide.dispose @windows_guide = nil @windows_status.dispose if @enemy_sprite.bitmap != nil @enemy_sprite.bitmap.dispose end @enemy_sprite.dispose dispose_battleback @background.bitmap.dispose @background.dispose @battleback1.dispose @battleback2.dispose @window_comp.dispose BattleManager.replay_bgm_and_bgs end #-------------------------------------------------------------------------- # ● Dispose_battleback #-------------------------------------------------------------------------- def dispose_battleback if @battleback1.bitmap != nil @battleback1.bitmap.dispose @battleback1.bitmap = nil end if @battleback2.bitmap != nil @battleback2.bitmap.dispose @battleback2.bitmap = nil end end #-------------------------------------------------------------------------- # ● Create Background #-------------------------------------------------------------------------- def create_background @background = Sprite.new @background.bitmap = Cache.system("MB_Background") @background.z = -1 end #-------------------------------------------------------------------------- # ● Create Window Guide #-------------------------------------------------------------------------- def create_window_guide @windows_guide = Window_Monster_List.new(@data) @enemy = @data[@windows_guide.index] @windows_status = Window_Monster_Status.new(@enemy) @window_comp = Window_Monster_Comp.new @old_index = @windows_guide.index @org_pos = [@windows_guide.x,@windows_guide.y] @fade_time = 60 end #-------------------------------------------------------------------------- # ● Create Enemy Sprite #-------------------------------------------------------------------------- def create_enemy_sprite @enemy_sprite = Sprite.new @enemy_sprite.z = 100 @enemy_sprite_org = @enemy_sprite.x refresh_enemy_sprite end #-------------------------------------------------------------------------- # ● Create_Battleback #-------------------------------------------------------------------------- def create_battleback @battleback1 = Sprite.new @battleback1.z = 1 @battleback1.opacity = 0 @battleback2 = Sprite.new @battleback2.z = 2 @battleback2.opacity = 0 @old_battleback = [nil,nil] refresh_batteback end #-------------------------------------------------------------------------- # ● Update #-------------------------------------------------------------------------- def update @windows_guide.update update_command update_animation refresh if @old_index != @windows_guide.index end #-------------------------------------------------------------------------- # ● Update Animation #-------------------------------------------------------------------------- def update_animation update_window_fade_animation update_battleback_animation update_enemy_sprite_animation end #-------------------------------------------------------------------------- # ● Update Enemy Sprite Animation #-------------------------------------------------------------------------- def update_enemy_sprite_animation @enemy_sprite.opacity += 15 if @enemy_sprite.x < @enemy_sprite_org @enemy_sprite.x += 15 if @enemy_sprite.x >= @enemy_sprite_org @enemy_sprite.x = @enemy_sprite_org end end end #-------------------------------------------------------------------------- # ● Update Window Fade Animation #-------------------------------------------------------------------------- def update_window_fade_animation return if @windows_guide.visible @windows_guide.opacity += 15 @windows_guide.contents_opacity += 15 if @windows_guide.y > @org_pos[1] @windows_guide.y -= 25 if @windows_guide.y < @org_pos[1] @windows_guide.y = @org_pos[1] @windows_guide.opacity += 255 @windows_guide.contents_opacity = 255 end end else @windows_guide.opacity -= 15 @windows_guide.contents_opacity -= 15 if @windows_guide.y < (@windows_guide.height + 416) @windows_guide.y += 25 @windows_guide.y = (@windows_guide.height + 416) if @windows_guide.y > (@windows_guide.height + 416) end end end #-------------------------------------------------------------------------- # ● Update Battleback Animation #-------------------------------------------------------------------------- def update_battleback_animation if @old_battleback == nil @battleback1.opacity -= 10 @battleback2.opacity -= 10 else @battleback1.opacity += 10 @battleback2.opacity += 10 end end #-------------------------------------------------------------------------- # ● Update Command #-------------------------------------------------------------------------- def update_command if Input.trigger?(Input::B) or Input.press?(Input::B) Sound.play_cancel SceneManager.return elsif Input.trigger?(Input::C) Sound.play_ok return if @windows_guide.visible @windows_guide.visible = false else @windows_guide.visible = true end end end #-------------------------------------------------------------------------- # ● Refresh Animation #-------------------------------------------------------------------------- def refresh @old_index = @windows_guide.index @enemy = @data[@windows_guide.index] @windows_status.refresh(@enemy) refresh_bgm refresh_enemy_sprite refresh_batteback end #-------------------------------------------------------------------------- # ● Refresh Animation #-------------------------------------------------------------------------- def refresh_enemy_sprite if @enemy_sprite.bitmap != nil @enemy_sprite.bitmap.dispose @enemy_sprite.bitmap = nil end if $game_system.bestiary_defeated[@enemy.id] != nil @enemy_sprite.bitmap = Cache.battler(@enemy.battler_name, @enemy.battler_hue) @enemy_sprite_org = (312/ 2) - (@enemy_sprite.bitmap.width / 2) @enemy_sprite.x = -@enemy_sprite.bitmap.width @enemy_sprite.y = 272 - @enemy_sprite.bitmap.height @enemy_sprite.opacity = 0 end end #-------------------------------------------------------------------------- # ● BGM Refresh #-------------------------------------------------------------------------- def refresh_bgm return unless MOG_MONSTER_BOOK::PLAY_MUSIC if $game_system.bestiary_music[@enemy.id] != nil and (@music[0] != $game_system.bestiary_music[@enemy.id].name or @music[1] != $game_system.bestiary_music[@enemy.id].volume or @music[2] != $game_system.bestiary_music[@enemy.id].pitch) m = $game_system.bestiary_music[@enemy.id] @music = [m.name, m.volume, m.pitch] RPG::BGM.stop Audio.bgm_play("Audio/BGM/" + m.name, m.volume, m.pitch) rescue nil end end #-------------------------------------------------------------------------- # ● Refresh Battleback #-------------------------------------------------------------------------- def refresh_batteback if $game_system.bestiary_battleback[@enemy.id] != nil and (@old_battleback[0] != $game_system.bestiary_battleback[@enemy.id][0] or @old_battleback[1] != $game_system.bestiary_battleback[@enemy.id][1]) @old_battleback = [$game_system.bestiary_battleback[@enemy.id][0], $game_system.bestiary_battleback[@enemy.id][1]] dispose_battleback @battleback1.opacity = 0 @battleback2.opacity = 0 if $game_system.bestiary_battleback[@enemy.id][0] != nil @battleback1.bitmap = Cache.battleback1($game_system.bestiary_battleback[@enemy.id][0]) else @battleback1.bitmap = Cache.battleback1("") end if $game_system.bestiary_battleback[@enemy.id][1] != nil @battleback2.bitmap = Cache.battleback2($game_system.bestiary_battleback[@enemy.id][1]) else @battleback2.bitmap = Cache.battleback2("") end end end endif MOG_MONSTER_BOOK::MENU_COMMAND#==============================================================================# ■ Window Menu Command#==============================================================================class Window_MenuCommand < Window_Command #------------------------------------------------------------------------------ # ● Add Main Commands #------------------------------------------------------------------------------ alias mog_bestiary_add_main_commands add_main_commands def add_main_commands mog_bestiary_add_main_commands add_command(MOG_MONSTER_BOOK::MENU_COMMAND_NAME, :bestiary, main_commands_enabled) endend #==============================================================================# ■ Scene Menu#==============================================================================class Scene_Menu < Scene_MenuBase #------------------------------------------------------------------------------ # ● Create Command Windows #------------------------------------------------------------------------------ alias mog_bestiary_create_command_window create_command_window def create_command_window mog_bestiary_create_command_window @command_window.set_handler(:bestiary, method(:Monster_Book)) end #------------------------------------------------------------------------------ # ● Monster Book #------------------------------------------------------------------------------ def Monster_Book SceneManager.call(Monster_Book) end end end$mog_rgss3_monster_book = true
#==============================================================================# +++ MOG - MONSTER BOOK (v1.6) +++#==============================================================================# By Moghunter # http://www.atelier-rgss.com/#==============================================================================# Sistema que permite verificar os parâmetros dos inimigos derrotados,# o que inclui o battleback e a música de batalha. # #==============================================================================# Para chamar o script use o comando abaixo.## monster_book##==============================================================================# ● Version History#==============================================================================# 1.6 - Adição da imagem de fundo quando não tem o battleback definido.# - Adição de novos comandos e configurações.#==============================================================================module MOG_MONSTER_BOOK #Ocultar inimigos especificos da lista de inimigos. HIDE_ENEMIES_ID = [] #Ativar a música de batalha. PLAY_MUSIC = true #Definição da palavra Completado. COMPLETED_WORD = "Completed" #Ativar o Monster Book no Menu. MENU_COMMAND = true #Nome do comando apresentado no menu. MENU_COMMAND_NAME = "Bestiary" #Definição da opacidade da janela WINDOW_OPACITY = 255end$imported = {} if $imported.nil?$imported[:mog_monster_book] = true#==============================================================================# ■ Game_Temp#==============================================================================class Game_Temp attr_accessor :bestiary_battleback1_name attr_accessor :bestiary_battleback2_name #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_bestiary_initialize initialize def initialize @bestiary_battleback1_name = "" @bestiary_battleback1_name = "" mog_bestiary_initialize endend #==============================================================================# ■ Game_System#==============================================================================class Game_System attr_accessor :bestiary_defeated attr_accessor :bestiary_battleback attr_accessor :bestiary_music #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_monster_book_initialize initialize def initialize @bestiary_defeated = [] @bestiary_battleback = [] @bestiary_music = [] mog_monster_book_initialize end end #==============================================================================# ■ Game Interpreter#==============================================================================class Game_Interpreter #-------------------------------------------------------------------------- # ● Monster Book #-------------------------------------------------------------------------- def monster_book SceneManager.call(Monster_Book) end end#==============================================================================# ■ Spriteset_Battle#==============================================================================class Spriteset_Battle #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_bestiary_initialize initialize def initialize mog_bestiary_initialize $game_temp.bestiary_battleback1_name = battleback1_name $game_temp.bestiary_battleback2_name = battleback2_name end end#==============================================================================# ■ Game_Enemy#==============================================================================class Game_Enemy < Game_Battler attr_accessor :enemy_id #-------------------------------------------------------------------------- # ● Die #-------------------------------------------------------------------------- alias mog_monster_book_die die def die mog_monster_book_die check_monster_book end #-------------------------------------------------------------------------- # ● Check Monster Book #-------------------------------------------------------------------------- def check_monster_book if $game_system.bestiary_defeated[@enemy_id] == nil $game_system.bestiary_defeated[@enemy_id] = 0 $game_system.bestiary_battleback[@enemy_id] = [$game_temp.bestiary_battleback1_name,$game_temp.bestiary_battleback2_name] $game_system.bestiary_music[@enemy_id] = $game_system.battle_bgm end $game_system.bestiary_defeated[@enemy_id] += 1 end end #==============================================================================# ■ Window_Monster_Status#==============================================================================class Window_Monster_Status < Window_Selectable #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- def initialize(enemy) super(0, Graphics.height - 128, Graphics.width, 128) self.opacity = MOG_MONSTER_BOOK::WINDOW_OPACITY self.z = 300 refresh(enemy) activate end #-------------------------------------------------------------------------- # ● Refresh #-------------------------------------------------------------------------- def refresh(enemy) self.contents.clear if $game_system.bestiary_defeated[enemy.id] == nil self.contents.draw_text(0,0 , 180, 24, "No Data",0) else change_color(system_color) w_max = 100 ex = 16 self.contents.draw_text(0,0 , w_max, 24, Vocab::param(0),0) self.contents.draw_text(0,24 * 1 , w_max, 24, Vocab::param(1),0) self.contents.draw_text(0,24 * 2 , w_max, 24, Vocab::param(2),0) self.contents.draw_text(0,24 * 3 , w_max, 24, Vocab::param(3),0) self.contents.draw_text(160,24 * 0 , w_max, 24, Vocab::param(4),0) self.contents.draw_text(160,24 * 1 , w_max, 24, Vocab::param(5),0) self.contents.draw_text(160,24 * 2 , w_max, 24, Vocab::param(6),0) self.contents.draw_text(160,24 * 3 , w_max, 24, Vocab::param(7),0) self.contents.draw_text(320,24 * 0 , w_max, 24, "Exp",0) self.contents.draw_text(480,24 * 0 , w_max, 24, Vocab::currency_unit,0) self.contents.draw_text(320,24 * 1 , w_max, 24, "Treasure",0) change_color(normal_color,true) w_max2 = 64 #HP self.contents.draw_text(80 + ex,0 , w_max2, 24, enemy.params[0],2) #MP self.contents.draw_text(80 + ex,24 * 1 , w_max2, 24, enemy.params[1],2) #ATK self.contents.draw_text(80 + ex,24 * 2 ,w_max2 , 24, enemy.params[2],2) #Def self.contents.draw_text(80 + ex,24 * 3 , w_max2, 24, enemy.params[3],2) #Mag Power self.contents.draw_text(224 + ex,24 * 0 , w_max2, 24, enemy.params[4],2) #Mag Def self.contents.draw_text(224 + ex,24 * 1 , w_max2, 24, enemy.params[5],2) #Agility self.contents.draw_text(224 + ex,24 * 2 , w_max2, 24, enemy.params[6],2) #Luck self.contents.draw_text(224 + ex,24 * 3 , w_max2, 24, enemy.params[7],2) #EXP self.contents.draw_text(328,24 * 0 , 96, 24, enemy.exp,2) #Gold self.contents.draw_text(472,24 * 0 , 96, 24, enemy.gold,2) #Drop Items tr = 0 for i in enemy.drop_items next if i.kind == 0 tr += 1 tr_name = $data_items[i.data_id] if i.kind == 1 tr_name = $data_weapons[i.data_id] if i.kind == 2 tr_name = $data_armors [i.data_id] if i.kind == 3 draw_icon(tr_name.icon_index, 412, 24 * tr) self.contents.draw_text(440,24 * tr , 160, 24, tr_name.name.to_s,0) end end endend#==============================================================================# ■ Window_Monster_List#==============================================================================class Window_Monster_List < Window_Selectable #------------------------------------------------------------------------------ # ● Initialize #------------------------------------------------------------------------------ def initialize(data) super(Graphics.width - 232, 64, 232, Graphics.height - 128 - 64) self.opacity = MOG_MONSTER_BOOK::WINDOW_OPACITY self.z = 301 @index = -1 @data = data @item_max = @data.size refresh(data) select(0) activate end #------------------------------------------------------------------------------ # ● Refresh #------------------------------------------------------------------------------ def refresh(data) self.contents.clear if @item_max > 0 self.contents = Bitmap.new(width - 32, @item_max * 24) for i in 0...@item_max draw_item(i) end end end #------------------------------------------------------------------------------ # ● draw_item MAX #------------------------------------------------------------------------------ def check_item_max @data_max = 0 for i in $data_enemies next if i == nil or MOG_MONSTER_BOOK::HIDE_ENEMIES_ID.include?(i.id) @data_max += 1 end end #------------------------------------------------------------------------------ # ● draw_item #------------------------------------------------------------------------------ def draw_item(index) x = 0 y = index / col_max * 24 n_index = index + 1 if $game_system.bestiary_defeated[@data[index].id] == nil monster_name = "No Data" defeated = " ---- " change_color(normal_color,false) else monster_name = @data[index].name change_color(normal_color,true) end check_item_max d = @data_max > 99 ? "%03d" : @data_max > 9 ? "%02d" : "%01d" text = sprintf(d, n_index).to_s + " - " self.contents.draw_text(x,y , 56, 24, text,0) self.contents.draw_text(x + 56,y , 140, 24, monster_name,0) end #------------------------------------------------------------------------------ # ● Item Max #------------------------------------------------------------------------------ def item_max return @item_max == nil ? 0 : @item_max end end#==============================================================================# ■ Window_Monster_Comp#==============================================================================class Window_Monster_Comp < Window_Selectable include MOG_MONSTER_BOOK #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- def initialize super(Graphics.width - 232,0, 232, 64) self.opacity = MOG_MONSTER_BOOK::WINDOW_OPACITY self.z = 300 refresh activate end #-------------------------------------------------------------------------- # ● Check Completition #-------------------------------------------------------------------------- def check_completion data_max = 0 for i in $data_enemies next if i == nil or MOG_MONSTER_BOOK::HIDE_ENEMIES_ID.include?(i.id) data_max += 1 end comp = 0 for i in 0...$game_system.bestiary_defeated.size comp += 1 if $game_system.bestiary_defeated[i] != nil end @completed = COMPLETED_WORD + " " + comp.to_s + "/" + data_max.to_s end #-------------------------------------------------------------------------- # ● Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear check_completion self.contents.draw_text(0,0, 160, 24, @completed.to_s,0) endend#==============================================================================# ■ Monster_Book#==============================================================================class Monster_Book #-------------------------------------------------------------------------- # ● Main #-------------------------------------------------------------------------- def main Graphics.transition(10) execute_loop execute_dispose end #-------------------------------------------------------------------------- # ● Execute Loop #-------------------------------------------------------------------------- def execute_loop loop do Graphics.update Input.update update break if SceneManager.scene != self end end #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- def initialize load_data execute_dispose create_background create_window_guide create_enemy_sprite create_battleback @music = [nil,nil,nil] refresh_bgm end #------------------------------------------------------------------------------ # ● Initialize #------------------------------------------------------------------------------ def load_data BattleManager.save_bgm_and_bgs @data = [] for i in $data_enemies next if i == nil or MOG_MONSTER_BOOK::HIDE_ENEMIES_ID.include?(i.id) @data.push(i) end end #-------------------------------------------------------------------------- # ● Execute Dispose #-------------------------------------------------------------------------- def execute_dispose return if @windows_guide == nil Graphics.freeze @windows_guide.dispose @windows_guide = nil @windows_status.dispose if @enemy_sprite.bitmap != nil @enemy_sprite.bitmap.dispose end @enemy_sprite.dispose dispose_battleback @background.bitmap.dispose @background.dispose @battleback1.dispose @battleback2.dispose @window_comp.dispose BattleManager.replay_bgm_and_bgs end #-------------------------------------------------------------------------- # ● Dispose_battleback #-------------------------------------------------------------------------- def dispose_battleback if @battleback1.bitmap != nil @battleback1.bitmap.dispose @battleback1.bitmap = nil end if @battleback2.bitmap != nil @battleback2.bitmap.dispose @battleback2.bitmap = nil end end #-------------------------------------------------------------------------- # ● Create Background #-------------------------------------------------------------------------- def create_background @background = Sprite.new @background.bitmap = Cache.system("MB_Background") @background.z = -1 end #-------------------------------------------------------------------------- # ● Create Window Guide #-------------------------------------------------------------------------- def create_window_guide @windows_guide = Window_Monster_List.new(@data) @enemy = @data[@windows_guide.index] @windows_status = Window_Monster_Status.new(@enemy) @window_comp = Window_Monster_Comp.new @old_index = @windows_guide.index @org_pos = [@windows_guide.x,@windows_guide.y] @fade_time = 60 end #-------------------------------------------------------------------------- # ● Create Enemy Sprite #-------------------------------------------------------------------------- def create_enemy_sprite @enemy_sprite = Sprite.new @enemy_sprite.z = 100 @enemy_sprite_org = @enemy_sprite.x refresh_enemy_sprite end #-------------------------------------------------------------------------- # ● Create_Battleback #-------------------------------------------------------------------------- def create_battleback @battleback1 = Sprite.new @battleback1.z = 1 @battleback1.opacity = 0 @battleback2 = Sprite.new @battleback2.z = 2 @battleback2.opacity = 0 @old_battleback = [nil,nil] refresh_batteback end #-------------------------------------------------------------------------- # ● Update #-------------------------------------------------------------------------- def update @windows_guide.update update_command update_animation refresh if @old_index != @windows_guide.index end #-------------------------------------------------------------------------- # ● Update Animation #-------------------------------------------------------------------------- def update_animation update_window_fade_animation update_battleback_animation update_enemy_sprite_animation end #-------------------------------------------------------------------------- # ● Update Enemy Sprite Animation #-------------------------------------------------------------------------- def update_enemy_sprite_animation @enemy_sprite.opacity += 15 if @enemy_sprite.x < @enemy_sprite_org @enemy_sprite.x += 15 if @enemy_sprite.x >= @enemy_sprite_org @enemy_sprite.x = @enemy_sprite_org end end end #-------------------------------------------------------------------------- # ● Update Window Fade Animation #-------------------------------------------------------------------------- def update_window_fade_animation return if @windows_guide.visible @windows_guide.opacity += 15 @windows_guide.contents_opacity += 15 if @windows_guide.y > @org_pos[1] @windows_guide.y -= 25 if @windows_guide.y < @org_pos[1] @windows_guide.y = @org_pos[1] @windows_guide.opacity += 255 @windows_guide.contents_opacity = 255 end end else @windows_guide.opacity -= 15 @windows_guide.contents_opacity -= 15 if @windows_guide.y < (@windows_guide.height + 416) @windows_guide.y += 25 @windows_guide.y = (@windows_guide.height + 416) if @windows_guide.y > (@windows_guide.height + 416) end end end #-------------------------------------------------------------------------- # ● Update Battleback Animation #-------------------------------------------------------------------------- def update_battleback_animation if @old_battleback == nil @battleback1.opacity -= 10 @battleback2.opacity -= 10 else @battleback1.opacity += 10 @battleback2.opacity += 10 end end #-------------------------------------------------------------------------- # ● Update Command #-------------------------------------------------------------------------- def update_command if Input.trigger?(Input::B) or Input.press?(Input::B) Sound.play_cancel SceneManager.return elsif Input.trigger?(Input::C) Sound.play_ok return if @windows_guide.visible @windows_guide.visible = false else @windows_guide.visible = true end end end #-------------------------------------------------------------------------- # ● Refresh Animation #-------------------------------------------------------------------------- def refresh @old_index = @windows_guide.index @enemy = @data[@windows_guide.index] @windows_status.refresh(@enemy) refresh_bgm refresh_enemy_sprite refresh_batteback end #-------------------------------------------------------------------------- # ● Refresh Animation #-------------------------------------------------------------------------- def refresh_enemy_sprite if @enemy_sprite.bitmap != nil @enemy_sprite.bitmap.dispose @enemy_sprite.bitmap = nil end if $game_system.bestiary_defeated[@enemy.id] != nil @enemy_sprite.bitmap = Cache.battler(@enemy.battler_name, @enemy.battler_hue) @enemy_sprite_org = (312/ 2) - (@enemy_sprite.bitmap.width / 2) @enemy_sprite.x = -@enemy_sprite.bitmap.width @enemy_sprite.y = 272 - @enemy_sprite.bitmap.height @enemy_sprite.opacity = 0 end end #-------------------------------------------------------------------------- # ● BGM Refresh #-------------------------------------------------------------------------- def refresh_bgm return unless MOG_MONSTER_BOOK::PLAY_MUSIC if $game_system.bestiary_music[@enemy.id] != nil and (@music[0] != $game_system.bestiary_music[@enemy.id].name or @music[1] != $game_system.bestiary_music[@enemy.id].volume or @music[2] != $game_system.bestiary_music[@enemy.id].pitch) m = $game_system.bestiary_music[@enemy.id] @music = [m.name, m.volume, m.pitch] RPG::BGM.stop Audio.bgm_play("Audio/BGM/" + m.name, m.volume, m.pitch) rescue nil end end #-------------------------------------------------------------------------- # ● Refresh Battleback #-------------------------------------------------------------------------- def refresh_batteback if $game_system.bestiary_battleback[@enemy.id] != nil and (@old_battleback[0] != $game_system.bestiary_battleback[@enemy.id][0] or @old_battleback[1] != $game_system.bestiary_battleback[@enemy.id][1]) @old_battleback = [$game_system.bestiary_battleback[@enemy.id][0], $game_system.bestiary_battleback[@enemy.id][1]] dispose_battleback @battleback1.opacity = 0 @battleback2.opacity = 0 if $game_system.bestiary_battleback[@enemy.id][0] != nil @battleback1.bitmap = Cache.battleback1($game_system.bestiary_battleback[@enemy.id][0]) else @battleback1.bitmap = Cache.battleback1("") end if $game_system.bestiary_battleback[@enemy.id][1] != nil @battleback2.bitmap = Cache.battleback2($game_system.bestiary_battleback[@enemy.id][1]) else @battleback2.bitmap = Cache.battleback2("") end end end endif MOG_MONSTER_BOOK::MENU_COMMAND#==============================================================================# ■ Window Menu Command#==============================================================================class Window_MenuCommand < Window_Command #------------------------------------------------------------------------------ # ● Add Main Commands #------------------------------------------------------------------------------ alias mog_bestiary_add_main_commands add_main_commands def add_main_commands mog_bestiary_add_main_commands add_command(MOG_MONSTER_BOOK::MENU_COMMAND_NAME, :bestiary, main_commands_enabled) endend #==============================================================================# ■ Scene Menu#==============================================================================class Scene_Menu < Scene_MenuBase #------------------------------------------------------------------------------ # ● Create Command Windows #------------------------------------------------------------------------------ alias mog_bestiary_create_command_window create_command_window def create_command_window mog_bestiary_create_command_window @command_window.set_handler(:bestiary, method(:Monster_Book)) end #------------------------------------------------------------------------------ # ● Monster Book #------------------------------------------------------------------------------ def Monster_Book SceneManager.call(Monster_Book) end end end$mog_rgss3_monster_book = true