Плохо! Плохо!:  0
Показано с 1 по 7 из 7

Тема: Счетчик убийств, Бестиарий (MOG_MONSTER_BOOK скрипт)

  1. #1

    По умолчанию Счетчик убийств, Бестиарий (MOG_MONSTER_BOOK скрипт)

    в скрипте MOG_MONSTER_BOOK (Бестиарий) добавил строчку счетчик убийств! (Убито)
    Вопрос: 1) как добавить в этот скрипт и ID и значение переменной (счетчик)... (что добавить вместо вопросов? рис2)
    2) автор использовал одну формулу под разных ID-врагов - прибавляя значение +1, я создал переменные (счетчики) к каждому врагу (допустим 001-030 это 30 врагов, мои переменные начинаются с 0021-0080)... короче как добавить формулу моих переменных(счетчиков) в его скрипт?
    Изображения Изображения

  2. #2
    Супер-модератор Аватар для dirge
    Информация о пользователе
    Регистрация
    25.02.2013
    Сообщений
    924
    Репутация: 79 Добавить или отнять репутацию

    По умолчанию

    Переменные пишутся так $game_variables[id переменной], правда это несильно поможет в твоем случае.

    Я не вижу всего скрипта и не знаю как он работает, но то что показано, говорит о том, что параметры для отображения берутся с информации о врагах. И сами враги передаются по одному, в зависимости от выбранного.
    По хорошему, твои счетчики нужно было бы вписать в самих врагов. Но в любом случае, к чему-то твои переменные нужно привязать. Можно попробовать привязать их к id врагов, но это в основном будет работать только если у тебя враги идут по порядку в базе данных. Т.е. допустим слизень в базе данных под номером 1, переменная со счетчиком у тебя 21. Итого выглядеть будет так $game_variables[enemy.id+20] следующий враг так же спокойно получит свои данные со счетчика благодаря enemy.id
    Но как я и сказал, работать оно будет если у тебя все враги в базе идут по порядку, как и переменные со счетчиком.
    Можно конечно подумать об еще каких-то вариантах, но там уже точно одной строкой не обойдешься.
    Последний раз редактировалось dirge; 13.09.2017 в 12:23.

  3. #3

    По умолчанию

    Привет! Да я так и делаю! сами счетчики работают! только в скрипте он не считывает переменную - показывает ноль!(пока без формулы +1) скину тебе весь скрипт! найди строку #ТУТ СЧЕТЧИК КИЛЛОВ
    Может нужно перезапустить скрипт (не знаю как) потому что все исправления в скриптах работают только с нового запуска игры - не с сейва...

    Код:
    #==============================================================================
    # +++ MOG - MONSTER BOOK  (v1.9) +++
    #==============================================================================
    # By Moghunter 
    # https://atelierrgss.wordpress.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
    #
    #==============================================================================
    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 =  "Найдено"
       #Ativar o Monster Book no Menu.
       MENU_COMMAND = true
       #Nome do comando apresentado no menu.
       MENU_COMMAND_NAME = "Бестиарий"
       #Definição da opacidade da janela
       WINDOW_OPACITY = 255
    end
    
    $imported = {} if $imported.nil?
    $imported[:mog_monster_book] = true
    
    #==============================================================================
    # ■ 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_system.bestiary_battleback[0] = [battleback1_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 if !MOG_MONSTER_BOOK::HIDE_ENEMIES_ID.include?(@enemy_id)
      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_system.bestiary_battleback[0]
             $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 - 148, Graphics.width, 148)
          self.opacity = MOG_MONSTER_BOOK::WINDOW_OPACITY
          self.z = 400; 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, "Не найден",0)    
           else
             change_color(system_color)
             w_max = 50
             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(0,24 * 4 , w_max, 24, "Убито",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, "Опыт",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, "Вещи",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)
             #ТУТ СЧЕТЧИК КИЛЛОВ
             self.contents.draw_text(32 + ex,24 * 4 , w_max2, 24, $game_variables[0021],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
      end
    end
    
    #==============================================================================
    # ■ Window_Monster_List
    #==============================================================================
    class Window_Monster_List < Window_Selectable
      include MOG_MONSTER_BOOK
     #------------------------------------------------------------------------------
     # ● Initialize
     #------------------------------------------------------------------------------   
      def initialize(data)
          super(Graphics.width - 232, 64, 232, Graphics.height - 212)
          self.opacity = WINDOW_OPACITY
          self.z = 301;  @index = -1;  @data = data; @data_max = 0
          @item_max = @data.size;  refresh(data);  select(0) ; activate
      end
    
     #------------------------------------------------------------------------------
     # ● Refresh
     #------------------------------------------------------------------------------   
      def refresh(data)
          self.contents.clear
          return if @item_max < 1
          self.contents = Bitmap.new(width - 32, @item_max * 24)
          @item_max.times do |i| draw_item(i) end
      end
      
     #------------------------------------------------------------------------------
     # ● draw_item MAX
     #------------------------------------------------------------------------------     
     def check_item_max
         $data_enemies.compact.each {|i| @data_max += 1 if !HIDE_ENEMIES_ID.include?(i.id)}
     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 = "Не найден"
             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; @data_max = 0; refresh; activate
      end
      
      #--------------------------------------------------------------------------
      # ● Check Completition
      #--------------------------------------------------------------------------  
      def check_completion
          $data_enemies.compact.each {|i| @data_max += 1 if !HIDE_ENEMIES_ID.include?(i.id)}
          comp = $game_system.bestiary_defeated.compact.size
          @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)
      end
    end
    
    #==============================================================================
    # ■ Monster_Book
    #==============================================================================
    class Monster_Book
      include MOG_MONSTER_BOOK
     #--------------------------------------------------------------------------
     # ● Main
     #--------------------------------------------------------------------------          
     def main
         execute_setup
         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   
     
     #--------------------------------------------------------------------------
     # ● Execute
     #--------------------------------------------------------------------------          
     def execute_setup
         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 = []
         $data_enemies.compact.each {|i| @data.push(i) if !HIDE_ENEMIES_ID.include?(i.id)}
     end
     
     #--------------------------------------------------------------------------
     # ● Execute Dispose
     #--------------------------------------------------------------------------           
     def execute_dispose
         return if @windows_guide == nil
         Graphics.freeze ; @windows_guide.dispose ; @windows_guide = nil
         @windows_status.dispose
         @enemy_sprite.bitmap.dispose if !@enemy_sprite.bitmap.nil?
         @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_battleback_animation ; update_enemy_sprite_animation
     end  
     
     #--------------------------------------------------------------------------
     # ● Update Enemy Sprite Animation
     #--------------------------------------------------------------------------              
     def update_enemy_sprite_animation
         @enemy_sprite.opacity += 15
         return if  @enemy_sprite.x == @enemy_sprite_org
         @enemy_sprite.x += 15 
         @enemy_sprite.x = @enemy_sprite_org if @enemy_sprite.x >= @enemy_sprite_org 
     end
    
     #--------------------------------------------------------------------------
     # ● Update Battleback Animation
     #--------------------------------------------------------------------------              
     def update_battleback_animation
         if @old_battleback == nil
            @battleback1.opacity -= 10        
         else
            @battleback1.opacity += 10
         end  
         @battleback2.opacity = @battleback1.opacity
     end
        
     #--------------------------------------------------------------------------
     # ● Update Command
     #--------------------------------------------------------------------------             
     def update_command
         if Input.trigger?(Input::B)
            Sound.play_cancel ; SceneManager.return
         elsif Input.trigger?(Input::C)
            Sound.play_ok   
         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)         
            sx = [Graphics.width - 232,Graphics.width / 2]
            @enemy_sprite_org =  (sx[0] / 2) - (@enemy_sprite.bitmap.width / 2)
            @enemy_sprite.x = -@enemy_sprite.bitmap.width
            @enemy_sprite.y = sx[1] - @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
     
    end
    
    if 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)
      end
    end   
    
    #==============================================================================
    # ■ 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
    Последний раз редактировалось dirge; 13.09.2017 в 12:45.

  4. #4
    Супер-модератор Аватар для dirge
    Информация о пользователе
    Регистрация
    25.02.2013
    Сообщений
    924
    Репутация: 79 Добавить или отнять репутацию

    По умолчанию

    Нет-нет) Ты немного не так записал, я имел ввиду, что вписывать в скрипт так же как я написал $game_variables[enemy.id+20]

    Вот в общем, скопируй и вставь.
    Код:
    #==============================================================================
    # +++ MOG - MONSTER BOOK  (v1.9) +++
    #==============================================================================
    # By Moghunter 
    # https://atelierrgss.wordpress.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
    #
    #==============================================================================
    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 =  "Найдено"
       #Ativar o Monster Book no Menu.
       MENU_COMMAND = true
       #Nome do comando apresentado no menu.
       MENU_COMMAND_NAME = "Бестиарий"
       #Definição da opacidade da janela
       WINDOW_OPACITY = 255
    end
    
    $imported = {} if $imported.nil?
    $imported[:mog_monster_book] = true
    
    #==============================================================================
    # ■ 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_system.bestiary_battleback[0] = [battleback1_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 if !MOG_MONSTER_BOOK::HIDE_ENEMIES_ID.include?(@enemy_id)
      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_system.bestiary_battleback[0]
             $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 - 148, Graphics.width, 148)
          self.opacity = MOG_MONSTER_BOOK::WINDOW_OPACITY
          self.z = 400; 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, "Не найден",0)    
           else
             change_color(system_color)
             w_max = 50
             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(0,24 * 4 , w_max, 24, "Убито",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, "Опыт",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, "Вещи",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)
             #ТУТ СЧЕТЧИК КИЛЛОВ
             self.contents.draw_text(32 + ex,24 * 4 , w_max2, 24, $game_variables[enemy.id+20],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
      end
    end
    
    #==============================================================================
    # ■ Window_Monster_List
    #==============================================================================
    class Window_Monster_List < Window_Selectable
      include MOG_MONSTER_BOOK
     #------------------------------------------------------------------------------
     # ● Initialize
     #------------------------------------------------------------------------------   
      def initialize(data)
          super(Graphics.width - 232, 64, 232, Graphics.height - 212)
          self.opacity = WINDOW_OPACITY
          self.z = 301;  @index = -1;  @data = data; @data_max = 0
          @item_max = @data.size;  refresh(data);  select(0) ; activate
      end
    
     #------------------------------------------------------------------------------
     # ● Refresh
     #------------------------------------------------------------------------------   
      def refresh(data)
          self.contents.clear
          return if @item_max < 1
          self.contents = Bitmap.new(width - 32, @item_max * 24)
          @item_max.times do |i| draw_item(i) end
      end
      
     #------------------------------------------------------------------------------
     # ● draw_item MAX
     #------------------------------------------------------------------------------     
     def check_item_max
         $data_enemies.compact.each {|i| @data_max += 1 if !HIDE_ENEMIES_ID.include?(i.id)}
     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 = "Не найден"
             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; @data_max = 0; refresh; activate
      end
      
      #--------------------------------------------------------------------------
      # ● Check Completition
      #--------------------------------------------------------------------------  
      def check_completion
          $data_enemies.compact.each {|i| @data_max += 1 if !HIDE_ENEMIES_ID.include?(i.id)}
          comp = $game_system.bestiary_defeated.compact.size
          @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)
      end
    end
    
    #==============================================================================
    # ■ Monster_Book
    #==============================================================================
    class Monster_Book
      include MOG_MONSTER_BOOK
     #--------------------------------------------------------------------------
     # ● Main
     #--------------------------------------------------------------------------          
     def main
         execute_setup
         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   
     
     #--------------------------------------------------------------------------
     # ● Execute
     #--------------------------------------------------------------------------          
     def execute_setup
         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 = []
         $data_enemies.compact.each {|i| @data.push(i) if !HIDE_ENEMIES_ID.include?(i.id)}
     end
     
     #--------------------------------------------------------------------------
     # ● Execute Dispose
     #--------------------------------------------------------------------------           
     def execute_dispose
         return if @windows_guide == nil
         Graphics.freeze ; @windows_guide.dispose ; @windows_guide = nil
         @windows_status.dispose
         @enemy_sprite.bitmap.dispose if !@enemy_sprite.bitmap.nil?
         @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_battleback_animation ; update_enemy_sprite_animation
     end  
     
     #--------------------------------------------------------------------------
     # ● Update Enemy Sprite Animation
     #--------------------------------------------------------------------------              
     def update_enemy_sprite_animation
         @enemy_sprite.opacity += 15
         return if  @enemy_sprite.x == @enemy_sprite_org
         @enemy_sprite.x += 15 
         @enemy_sprite.x = @enemy_sprite_org if @enemy_sprite.x >= @enemy_sprite_org 
     end
    
     #--------------------------------------------------------------------------
     # ● Update Battleback Animation
     #--------------------------------------------------------------------------              
     def update_battleback_animation
         if @old_battleback == nil
            @battleback1.opacity -= 10        
         else
            @battleback1.opacity += 10
         end  
         @battleback2.opacity = @battleback1.opacity
     end
        
     #--------------------------------------------------------------------------
     # ● Update Command
     #--------------------------------------------------------------------------             
     def update_command
         if Input.trigger?(Input::B)
            Sound.play_cancel ; SceneManager.return
         elsif Input.trigger?(Input::C)
            Sound.play_ok   
         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)         
            sx = [Graphics.width - 232,Graphics.width / 2]
            @enemy_sprite_org =  (sx[0] / 2) - (@enemy_sprite.bitmap.width / 2)
            @enemy_sprite.x = -@enemy_sprite.bitmap.width
            @enemy_sprite.y = sx[1] - @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
     
    end
    
    if 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)
      end
    end   
    
    #==============================================================================
    # ■ 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

  5. #5

    По умолчанию

    СПАСИБО ОГРОМНОЕ! ВСЕ РАБОТАЕТ!
    еще вопросик где мне посмотреть как работать с окнами, по скриптам я так и не понял как они работают (типа как чтоб они появлялись на экране в виде инфы на несколько секунд).

  6. #6
    Супер-модератор Аватар для dirge
    Информация о пользователе
    Регистрация
    25.02.2013
    Сообщений
    924
    Репутация: 79 Добавить или отнять репутацию

    По умолчанию

    Ну, это скриптинг, в двух словах не рассказать. Каких-то гайдов по окнам я видел только для другого мейкера, причем очень давно и ссылки у меня нету. Если хочешь этим заниматься, то я бы посоветовал изучить в начале основы языка программирования руби, чтобы хотя получше понимать синтаксис и уметь читать код. Сильно с Асе я тут не помощник, т.к уже почти второй год как завязал с ним и руби. Периодами вспоминаю, но по мелочи в основном.

  7. #7

    По умолчанию

    Хорошо! Спасибо еще раз!

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Счетчик убийств, Бестиарий (MOG_MONSTER_BOOK скрипт)