Плохо! Плохо!:  0
Страница 5 из 7 ПерваяПервая ... 34567 ПоследняяПоследняя
Показано с 41 по 50 из 62

Тема: Open RGSS3: Разработка

  1. #41

    По умолчанию

    Исправленная и доработанная версия RPG::UsableItem.
    Код:
    #==============================================================================
    # ** RPG::UsableItem
    #------------------------------------------------------------------------------
    #  Сверхкласс для RPG::Item и RPG::Skill.
    #==============================================================================
    module RPG
      ##
      # Сверхкласс для RPG::Item и RPG::Skill.
      ## 
      class UsableItem < BaseItem
        #==========================================================================
        #                                Атрибуты
        #========================================================================== 
        
        # Название объекта.
        # @return [String] 
        attr_accessor :name
        
        # Область применения.
        # @return [Integer]
        attr_accessor :scope
        
        # Где возможно применение.
        # @note 0: всегда, 1: только в битве, 2: только из меню, 3: никогда.
        # @return [Integer]
        attr_accessor :occasion    
        
        # Коррекция скорости применения.
        # @note Используется в VX.
        # @return [Integer]
        attr_accessor :speed
        
        # ID анимации эффекта.
        # @note Используется в VX.
        # @return [Integer]
        attr_accessor :animation_id
        
        # ID анимации применения.
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :animation1_id
        
        # ID анимации эффекта.
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :animation2_id
        
        # ID вызываемого события.
        # @return [Integer]
        attr_accessor :common_event_id
        
        # Базовый урон.
        # @note Используется в VX.
        # @return [Integer]
        attr_accessor :base_damage
        
        # Процент разбрасываемого урона.
        # @note Используется в VX.
        # @return [Integer]
        attr_accessor :variance
        
        # Процент влияния силы атаки эффект.
        # @return [Integer]
        attr_accessor :atk_f
        
        # Процент влияния силы духа на эффект.
        # @note Используется в VX.
        # @return [Integer]
        attr_accessor :spi_f
        
        # Процент влияния уклонения на эффект.
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :eva_f
        
        # Процент влияния силы на эффект.
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :str_f
        
        # Процент влияния ловкости на эффект.
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :dex_f
        
        # Процент влияния скорости на эффект.
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :agi_f
        
        # Процент влияния интеллекта на эффект.
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :int_f
        
        # Процент влияния физической защиты на эффект.
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :pdef_f
        
        # Процент влияния магической защиты на эффект.
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :mdef_f
        
        # Вероятность воздействия эффекта.
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :hit
        
        # Флаг активной опции [Физическая атака]
        # @note Используется в VX.
        # @return [Bool]
        attr_accessor :physical_attack
        
        # Флаг активной опции [Повреждение ОМ]
        # @note Используется в VX.
        # @return [Bool]
        attr_accessor :damage_to_mp
        
        # Флаг активной опции [Поглащение жизни]
        # @note Используется в VX.
        # @return [Bool]
        attr_accessor :absorb_damage
        
        # Флаг активной опции [Игнорирование защиты]
        # @note Используется в VX.
        # @return [Bool]
        attr_accessor :ignore_defense
        
        # Список ID элементов.
        # @return [Array[Integer]]
        attr_accessor :element_set
        
        # Список ID добавляемых состояний.
        # @return [Array[Integer]]
        attr_accessor :plus_state_set
        
        # Список ID снимаемых состояний.
        # @return [Array[Integer]]
        attr_accessor :minus_state_set
        
        #==========================================================================
        #                                 Методы
        #==========================================================================
        
        ##
        # Инициализирует переменные класса, присваивает им значения по умолчанию
        # @note Вызывается автоматически при создании нового экземпляра
        # @return [NilClass]
        ## 
        def initialize
          super
          @scope = 0
          @occasion = 0
          @speed = 0
          @animation_id = 0
          @animation1_id = 0
          @animation2_id = 0
          @common_event_id = 0
          @base_damage = 0
          @variance = 20
          @atk_f = 0
          @spi_f = 0
          @eva_f = 0
          @str_f = 0
          @dex_f = 0
          @agi_f = 0
          @int_f = 0
          @pdef_f = 0
          @mdef_f = 0
          @hit = 0
          @physical_attack = false
          @damage_to_mp = false
          @absorb_damage = false
          @ignore_defense = false
          @element_set = []
          @plus_state_set = []
          @minus_state_set = []
        end
        
        ##
        # Определяет, может ли эффект воздействовать на врагов.
        # @return Boolean
        ## 
        def for_opponent?
          return [1, 2].include?(@scope) if Kernel.isXP?
          return [1, 2, 3, 4, 5, 6].include?(@scope) if Kernel.isVX?
        end
        
        ##
        # Определяет, может ли эффект воздействовать на союзников.
        # @return Boolean
        ## 
        def for_friend?
          return [3, 4, 5, 6].include?(@scope) if Kernel.isXP?
          return [7, 8, 9, 10, 11].include?(@scope) if Kernel.isVX?
        end
        
        ##
        # Определяет, может ли эффект воздействовать на мертвых союзников.
        # @return Boolean
        ## 
        def for_dead_friend?
          return [5, 6].include?(@scope) if Kernel.isXP?
          return [9, 10].include?(@scope) if Kernel.isVX?
        end
        
        ##
        # Определяет, может ли эффект воздействовать на вызавшего его.
        # @return Boolean
        ## 
        def for_user?
          return (@scope == (Kernel.isXP? ? 7 : 11))
        end
        
        ##
        # Определяет, является ли целью эффекта один актер.
        # @return Boolean
        ## 
        def for_one?
          return [1, 3, 5, 7].include?(@scope) if Kernel.isXP?
          return [1, 3, 4, 7, 9, 11].include?(@scope)
        end
        
        ##
        # Определяет, являются ли целью эффекта два актера.
        # @return Boolean
        ## 
        def for_two?
          return (Kernel.isXP? ? false : @scope == 5)
        end
        
        ##
        # Определяет, являются ли целью эффекта три актера.
        # @return Boolean
        ##
        def for_three?
          return (Kernel.isXP? ? false : @scope == 6)
        end
        
        ##
        # Определяет, воздействует ли эффект на случайную цель.
        # @return Boolean
        ##
        def for_random?
          return (Kernel.isXP? ? false : [4, 5, 6].include?(@scope))
        end
        
        ##
        # Определяет, являются ли целью эффекта все актеры.
        # @return Boolean
        ##
        def for_all?
          return [2, 4, 6].include?(@scope) if Kernel.isXP?
          return [2, 8, 10].include?(@scope)
        end
        
        ##
        # Определяет, будет ли эффект применен дважды к одному актеру.
        # @return Boolean
        ##
        def dual?
          return (Kernel.isXP? ? false : @scope == 3)
        end
        
        ##
        # Определяет, нужно ли указать цель.
        # @return Boolean
        ##
        def need_selection?
          return [1, 3, 5].include?(@scope) if Kernel.isXP?
          return [1, 3, 7, 9].include?(@scope) if Kernel.isVX?
        end
        
        ##
        # Определяет, возможно ли использовать предмет в бою.
        # @return Boolean
        ##
        def battle_ok?
          return [0, 1].include?(@occasion)
        end
        
        ##
        # Определяет, возможно ли использовать предмет вне боя.
        # @return Boolean
        ##
        def menu_ok?
          return [0, 2].include?(@occasion)
        end
        #--------------------------------------------------------------------------
      end
      #----------------------------------------------------------------------------
    end
    #==============================================================================
    Беру RPG::BGM, RPG::BGS, RPG::ME, RPG::SE.

  2. #42

    По умолчанию

    Код:
    #==============================================================================
    # ** RPG::AudioFile
    #------------------------------------------------------------------------------
    #  Сверхкласс с данными аудио файлов для BGM, BGS, ME, SE.
    #==============================================================================
    module RPG
      ##
      # Сверхкласс с данными аудио файлов для BGM, BGS, ME, SE.
      ##
      class AudioFile
        #==========================================================================
        #                                Атрибуты
        #========================================================================== 
        
        # Имя аудиофайла.
        # @return [String]
        attr_accessor :name
        
        # Громкости проигрывания (0..100).
        # @return [Integer]
        attr_accessor :volume
        
        # Скорость воспроизведения (50..150).
        # @return [Integer]
        attr_accessor :pitch
    
        #==========================================================================
        #                                 Методы
        #==========================================================================
        
        ##
        # Инициализирует переменные класса, присваивает им значения по умолчанию
        # @param [String] name - имя аудиофайла.
        # @param [Integer] volume - громкости проигрывания (0..100).
        # @param [Integer] pitch - скорость воспроизведения (50..150).
        # @note Вызывается автоматически при создании нового экземпляра
        # @return [NilClass]
        ## 
        def initialize(name = "", volume = 100, pitch = 100)
          @name = name
          @volume = volume
          @pitch = pitch
        end
        #--------------------------------------------------------------------------
      end
      #----------------------------------------------------------------------------
    end
    #==============================================================================
    Код:
    #==============================================================================
    # ** RPG::BGM
    #------------------------------------------------------------------------------
    #  Класс с данными BGM.
    #  Содержит методы для воспроизведения своих экземпляров модулем Audio.
    #==============================================================================
    module RPG
      ##
      # Класс с данными BGM.
      #   Содержит методы для воспроизведения своих экземпляров модулем Audio.
      # @note BGM - фоновая музыка игры
      ##
      class BGM < AudioFile
        #==========================================================================
        #                          Статичные переменные
        #==========================================================================
        @@last = BGM.new
        
        #==========================================================================
        #                                 Методы
        #==========================================================================\
        
        ##
        # Запускает воспроизведение фоновой музыки.
        # @return NilClass
        ## 
        def play
          if @name.empty?
            Audio.bgm_stop
            @@last = BGM.new
          else
            Audio.bgm_play("Audio/BGM/" + @name, @volume, @pitch)
            @@last = self
          end
        end
        
        ##
        # Останавливает воспроизведение фоновой музыки.
        # @return NilClass
        ## 
        def self.stop
          Audio.bgm_stop
          @@last = BGM.new
        end
        
        ##
        # Вызывает затухание фоновой музыки.
        # @param Integer time - время затухания в милисекундах.
        # @return NilClass
        ## 
        def self.fade(time)
          Audio.bgm_fade(time)
          @@last = BGM.new
        end
        
        ##
        # Возвращает экземпляр текущей фоновой музыки.
        # @return RPG::BGM
        ## 
        def self.last
          @@last
        end
        #--------------------------------------------------------------------------
      end
      #----------------------------------------------------------------------------
    end
    #==============================================================================
    Код:
    #==============================================================================
    # ** RPG::BGS
    #------------------------------------------------------------------------------
    #  Класс с данными BGS.
    #  Содержит методы для воспроизведения своих экземпляров модулем Audio.
    #==============================================================================
    module RPG
      ##
      # Класс с данными BGS.
      #   Содержит методы для воспроизведения своих экземпляров модулем Audio.
      # @note BGS - фоновые звуки игры
      ##
      class BGS < AudioFile
        #==========================================================================
        #                          Статичные переменные
        #==========================================================================
        @@last = BGS.new
        
        #==========================================================================
        #                                 Методы
        #==========================================================================\
        
        ##
        # Запускает воспроизведение фоновых звуков.
        # @return NilClass
        ## 
        def play
          if @name.empty?
            Audio.bgs_stop
            @@last = BGS.new
          else
            Audio.bgs_play("Audio/BGS/" + @name, @volume, @pitch)
            @@last = self
          end
        end
        
        ##
        # Останавливает воспроизведение фоновых звуков.
        # @return NilClass
        ## 
        def self.stop
          Audio.bgs_stop
          @@last = BGS.new
        end
        
        ##
        # Вызывает затухание фоновых звуков.
        # @param Integer time - время затухания в милисекундах.
        # @return NilClass
        ## 
        def self.fade(time)
          Audio.bgs_fade(time)
          @@last = BGS.new
        end
        
        ##
        # Возвращает экземпляр текущих фоновых звуков.
        # @return RPG::BGS
        ## 
        def self.last
          @@last
        end
        #--------------------------------------------------------------------------
      end
      #----------------------------------------------------------------------------
    end
    #==============================================================================
    Код:
    #==============================================================================
    # ** RPG::ME
    #------------------------------------------------------------------------------
    #  Класс с данными ME.
    #  Содержит методы для воспроизведения своих экземпляров модулем Audio.
    #==============================================================================
    module RPG
      ##
      # Класс с данными ME.
      #   Содержит методы для воспроизведения своих экземпляров модулем Audio.
      # @note ME - короткие мелодии, перекрывающие собой прочие звуки.
      ##
      class ME < AudioFile
        #==========================================================================
        #                                 Методы
        #==========================================================================\
    
        ##
        # Запускает воспроизведение мелодии.
        # @return NilClass
        ## 
        def play
          if @name.empty?
            Audio.me_stop
          else
            Audio.me_play("Audio/ME/" + @name, @volume, @pitch)
          end
        end
        
        ##
        # Останавливает воспроизведение мелодии.
        # @return NilClass
        ## 
        def self.stop
          Audio.me_stop
        end
        
        ##
        # Вызывает затухание мелодии.
        # @param Integer time - время затухания в милисекундах.
        # @return NilClass
        ## 
        def self.fade(time)
          Audio.me_fade(time)
        end
        #--------------------------------------------------------------------------
      end
      #----------------------------------------------------------------------------
    end
    #==============================================================================
    Код:
    #==============================================================================
    # ** RPG::SE
    #------------------------------------------------------------------------------
    #  Класс с данными SE.
    #  Содержит методы для воспроизведения своих экземпляров модулем Audio.
    #==============================================================================
    module RPG
      ##
      # Класс с данными SE.
      #   Содержит методы для воспроизведения своих экземпляров модулем Audio.
      # @note SE - звуковые эффекты игры, воспроизводимые в отдельном потоке.
      ##
      class ME < AudioFile
        #==========================================================================
        #                                 Методы
        #==========================================================================\
    
        ##
        # Запускает воспроизведение звука.
        # @return NilClass
        ## 
        def play
          unless @name.empty?
            Audio.se_play("Audio/SE/" + @name, @volume, @pitch)
          end
        end
        
        ##
        # Останавливает воспроизведение звука.
        # @return NilClass
        ## 
        def self.stop
          Audio.se_stop
        end
        #--------------------------------------------------------------------------
      end
      #----------------------------------------------------------------------------
    end
    #==============================================================================
    Беру RPG::Class и RPG::Class::Learning

  3. #43

    По умолчанию

    Код:
    #==============================================================================
    # ** RPG::Class
    #------------------------------------------------------------------------------
    #  Класс с данными класса героев.
    #==============================================================================
    class RPG::Class
      #==========================================================================
      #                                Атрибуты
      #========================================================================== 
      
      # ID класса.
      # @return Integer
      attr_accessor :id
      
      # Имя класса
      # @return String
      attr_accessor :name
      
      # Позиция героя.
      # @note (0: авангард, 1: посередине, 2: тыл).
      # @return Integer
      attr_accessor :position
      
      # Список ID доступного вооружения.
      # @return Array<Integer>
      attr_accessor :weapon_set
      
      # Список ID доступного обмундирования.
      # @return Array<Integer>
      attr_accessor :armor_set
      
      # Таблица сопротивляемости элементам.
      # @note index - ID элемента, value - уровень сопротивления
      #   value может принимать значения: (0: A, 1: B, 2: C, 3: D, 4: E, 5: F).
      # @return Table<Integer>
      attr_accessor :element_ranks
      
      # Таблица сопротивляемости состояниям.
      # @note index - ID состояния, value - уровень сопротивления
      #   value может принимать значения: (0: A, 1: B, 2: C, 3: D, 4: E, 5: F).
      # @return Table<Integer>
      attr_accessor :state_ranks
      
      # Навыки, изучаемые при развитии героя.
      # @return Array<RPG::Class::Learning>
      attr_accessor :learnings
      
      # Определяет, будет ли использоваться skill_name.
      # @note Используется в VX.
      # @return Boolean
      attr_accessor :skill_name_valid
      
      # Название команды "Навыки" в бою.
      # @note Используется в VX.
      # @return String
      attr_accessor :skill_name
      
      #==========================================================================
      #                                 Методы
      #==========================================================================
      
      ##
      # Инициализирует переменные экземпляра, присваивает им значения по умолчанию
      # @note Вызывается автоматически при создании нового экземпляра
      # @return NilClass
      ## 
      def initialize
        @id = 0
        @name = ""
        @position = 0
        @weapon_set = []
        @armor_set = []
        @element_ranks = Table.new(1)
        @state_ranks = Table.new(1)
        @learnings = []
        @skill_name_valid = false
        @skill_name = ""
      end
      #----------------------------------------------------------------------------
    end
    #==============================================================================
    Код:
    #==============================================================================
    # ** RPG::Class::Learning
    #------------------------------------------------------------------------------
    #  Класс данных, связывающий уровень героя с изучением определенного навыка.
    #==============================================================================
    class RPG::Class::Learning
      #==========================================================================
      #                                Атрибуты
      #========================================================================== 
      
      # Уровень, на котором происходит изучение.
      # @return Integer
      attr_accessor :level
      
      # ID изучаемого навыка.
      # @return Integer
      attr_accessor :skill_id
      
      #==========================================================================
      #                                 Методы
      #==========================================================================
      
      ##
      # Инициализирует переменные экземпляра, присваивает им значения по умолчанию
      # @note Вызывается автоматически при создании нового экземпляра
      # @return NilClass
      ## 
      def initialize
        @level = 1
        @skill_id = 1
      end
      #----------------------------------------------------------------------------
    end
    #==============================================================================
    Была ошибка в описании конструктора (и нужно ли оно вообще?): "Инициализирует переменные класса" - инициализируются, конечно же, переменные экземпляра, а не класса.
    Господа, вы подключайтесь, подключайтесь. А то грустно одному.

    Беру RPG::CommonEvent, RPG::Enemy, RPG::Enemy::Action, RPG::Enemy:ropItem

  4. #44
    Познающий Аватар для mephis
    Информация о пользователе
    Регистрация
    27.01.2011
    Адрес
    Новосибирск
    Сообщений
    330
    Записей в дневнике
    8
    Репутация: 34 Добавить или отнять репутацию

    По умолчанию

    <