Плохо! Плохо!:  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 Добавить или отнять репутацию

    По умолчанию

    Кип, есть пара замечаний по оформлению.

    1) Перед началом модуля (например, перед "module RPG") комменты лучше не ставить. А ставить их перед объявлением класса. В онлайн-просмотрщике исходников можно увидеть предпочтительный вариант.

    2) Между разными тегами в комментах лучше вставлять пустые строки, а между одинаковыми не нужно. Читабельность от этого сильно повышается. Например:
    Код:
      
      ##
      # Сравнивает число с указанными границами и, если оно выходит за пределы
      # допустимого диапазона, возвращает ближайшую границу, иначе ничего не делает.
      #
      # @param [Numeric] min минимальное значение
      # @param [Numeric] max максимальное значение
      #
      # @return [Numeric]
      #
      # @example
      #   gold = 10000
      #   gold += 15000
      #   gold = gold.limit(0, 20000)   # gold == 20000
      #
    3) Не забывай в тегах @param и @return тип заключать в квадратные скобки.


    Насчёт подключиться. Так кроме тебя никто не знает для чего нужны атрибуты и методы в этих классах. Кому ж ещё комменты писать, кроме тебя? ))

    Я обязательно подключусь, как дело дойдёт до суровых проблем. Напомню, в конце первой стадии (описание классов RPG) нас ждут два мегабосса — классы Tilemap и Window. Вот их да, надо толпой валить.

    Так что пока поддерживаю тебя с трибун
    Последний раз редактировалось mephis; 21.08.2011 в 15:44.

  5. #45

    По умолчанию

    Замечания к сведению приняты.

    Хм, вижу ты изменил декларацию класса:
    Код:
    module RPG  
      class Class
        ##
        #  Класс данных, связывающий уровень героя с изучением определенного навыка.
        ##
        class Learning
    У меня было: class RPG::Class::Learning

    Интересует причина. Тест я провел - работает. Нужно для документации? Или еще что-то? (Не люблю лестницы end'ов в конце).

    ---

    Ага! Решили всю рутинную работу свалить на меня и отделаться дешевым подхалимажем, поросята?! >.<

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

    По умолчанию

    Интересует причина. Тест я провел - работает. Нужно для документации?
    Приведение к общему стилю оформления. Особо ничего не имею против такой записи. Возможно, она даже лучше будет. Но о её смене лучше подумаем, когда первый этап будет пройден.

    Ага! Решили всю рутинную работу свалить на меня и отделаться дешевым подхалимажем, поросята?! >.<
    Не такой уж он и дешёвый!!!

  7. #47

  8. #48

    По умолчанию

    Код:
    module RPG
      ##
      # Класс с данными общего события.
      ## 
      class CommonEvent
     
        #==========================================================================
        #                                Атрибуты
        #========================================================================== 
        
        # ID события.
        # @return [Integer]
        attr_accessor :id
        
        # Название события.
        # @return [String] 
        attr_accessor :name
        
        # Способ запуска (0: ручной, 1: автоматический, 2: параллельный).
        # @return [Integer]
        attr_accessor :trigger
        
        # ID связанного переключателя.
        attr_accessor :switch_id
        
        # Список комманд.
        # @return [Array<RPG::EventCommand>] 
        attr_accessor :list
        
        #==========================================================================
        #                                 Методы
        #==========================================================================
        
        ##
        # Инициализирует переменные класса, присваивает им значения по умолчанию
        # @note Вызывается автоматически при создании нового экземпляра
        # @return [NilClass]
        ## 
       def initialize
          @id = 0
          @name = ""
          @trigger = 0
          @switch_id = 1
          @list = [RPG::EventCommand.new]
        end
        #--------------------------------------------------------------------------
      end
      #----------------------------------------------------------------------------
    end
    Код:
    module RPG
      ##
      # Класс с данными команды события.
      ## 
      class EventCommand
     
        #==========================================================================
        #                                Атрибуты
        #========================================================================== 
        
        # Код команды.
        # @return [Integer]
        attr_accessor :code
        
        # Номер ветви.
        # @return [String] 
        attr_accessor :indent
        
        # Список аргументов команды.
        # @return [Array<Object>]
        attr_accessor :parameters
        
        #==========================================================================
        #                                 Методы
        #==========================================================================
        
        ##
        # Инициализирует переменные класса, присваивает им значения по умолчанию
        #
        # @param [Integer] code Код команды.
        # @param [Integer] indent Номер ветви.
        # @param [Array<Object>] parameters Массив аргументов команды.
        #
        # @note Вызывается автоматически при создании нового экземпляра
        #
        # @return [NilClass]
        ## 
       def initialize(code = 0, indent = 0, parameters = [])
          @code = code
          @indent = indent
          @parameters = parameters
        end
        #--------------------------------------------------------------------------
      end
      #----------------------------------------------------------------------------
    end
    Код:
    module RPG
      ##
      # Класс с данными врагов.
      ## 
      class Enemy
     
        #==========================================================================
        #                                Атрибуты
        #========================================================================== 
        
        # ID.
        # @return [Integer]
        attr_accessor :id
        
        # Имя.
        # @return [String]
        attr_accessor :name
        
        # Имя файла графики в бою.
        # @return [String]
        attr_accessor :battler_name
        
        # Оттенок графики в бою.
        # @return [Integer]
        attr_accessor :battler_hue
        
        # ID анимации на враге.
        # @note Используется в XP.
        # @return [Integer] 
        attr_accessor :animation1_id
        
        # ID анимации удара.
        # @note Используется в XP.
        # @return [Integer] 
        attr_accessor :animation2_id
        
        # ----------------------------- Характеристики ----------------------------
        
        # Характеристика "Максимальные ОЖ".
        # @return [Integer]
        attr_accessor :maxhp
        
        # Характеристика "Максимальные ОМ".
        # @note Используется в VX.
        # @return [Integer]
        attr_accessor :maxmp
        
        # Характеристика "Максимальные ОМ".
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :maxsp
        
        # Характеристика "Точность".
        # @note Используется в VX.
        # @return [Integer]
        attr_accessor :hit
        
        # Характеристика "Уклонение".
        # @return [Integer]
        attr_accessor :eva
        
        # Характеристика "Атака".
        # @return [Integer]
        attr_accessor :atk
        
        # Характеристика "Физическая защита".
        # @note Используется в VX.
        # @return [Integer]
        attr_accessor :def
        
        # Характеристика "Физическая защита".
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :pdef
        
        # Характеристика "Магическая защита".
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :mdef
        
        # Характеристика "Дух".
        # @note Используется в VX.
        # @return [Integer]
        attr_accessor :spi
        
        # Характеристика "Сила".
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :str
        
        # Характеристика "Ловкость".
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :dex
            
        # Характеристика "Интеллект".
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :int
        
        # Характеристика "Скорость".
        # @return [Integer]
        attr_accessor :agi
        
        # ---------------------------------- Трофеи -------------------------------
        
        # Количество опыта, получаемого за победу.
        # @return [Integer]
        attr_accessor :exp
        
        # Количество золота, получаемого за победу.
        # @return [Integer]
        attr_accessor :gold
        
        # Первый трофей, получаемый за победу.
        # @note Используется в VX.
        # @return [RPG::Enemy::DropItem]
        attr_accessor :drop_item1
        
        # Второй трофей, получаемый за победу.
        # @note Используется в VX.
        # @return [RPG::Enemy::DropItem]
        attr_accessor :drop_item2
        
        # ID предмета, получаемого за победу.
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :item_id
        
        # ID оружия, получаемого за победу.
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :weapon_id
        
        # ID экипировки, получаемой за победу.
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :armor_id
        
        # Вероятность получения трофея.
        # @note Используется в XP.
        # @return [Integer]
        attr_accessor :treasure_prob 
        
        # ---------------------------------- Прочее -------------------------------
        
        # Флаг активности опции "Левитация".
        # @note Используется в VX.
        # @return [Boolean]
        attr_accessor :levitate
        
        # Флаг активности опции "Критические удары".
        # @note Используется в VX.
        # @return [Boolean]
        attr_accessor :has_critical
        
        # Таблица сопротивляемости элементам.
        # @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::Enemy::Action>]
        attr_accessor :actions
        
        # Примечание.
        # @note Используется в VX.
        # @return [String]
        attr_accessor :note
        
        #==========================================================================
        #                                 Методы
        #==========================================================================
        
        ##
        # Инициализирует переменные класса, присваивает им значения по умолчанию
        #
        # @note Вызывается автоматически при создании нового экземпляра
        #
        # @return [NilClass]
        ## 
        def initialize
          @id = 0
          @name = ""
          @battler_name = ""
          @battler_hue = 0
          @animation1_id = 0
          @animation2_id = 0
          @maxhp = 10
          @maxmp = 10
          @maxsp = 500
          @hit = 95
          @eva = 5
          @str = 50
          @dex = 50
          @int = 50
          @pdef = 100
          @mdef = 100
          @atk = 10
          @def = 10
          @spi = 10
          @agi = 10
          @exp = 0
          @gold = 0
          @drop_item1 = RPG::Enemy::DropItem.new
          @drop_item2 = RPG::Enemy::DropItem.new
          @item_id = 0
          @weapon_id = 0
          @armor_id = 0
          @treasure_prob = 100
          @levitate = false
          @has_critical = false
          @element_ranks = Table.new(1)
          @state_ranks = Table.new(1)
          @actions = [RPG::Enemy::Action.new]
          @note = ""
        end
        #--------------------------------------------------------------------------
      end
      #----------------------------------------------------------------------------
    end
    Код:
    module RPG
      class Enemy
        ##
        # Класс с данными действия врага.
        ##
        class Action
          
          #==========================================================================
          #                                Атрибуты
          #========================================================================== 
            
          # Тип действия (0: простое, 1: навык).
          # @return [Integer]
          attr_accessor :kind
          
          # Вид простого действия (0: атака, 1: защита, 2: побег, 3: ничего).
          # @return [Integer]
          attr_accessor :basic
          
          # ID навыка.
          # @return [Integer]
          attr_accessor :skill_id
          
          # Условие использования.
          # (0: всегда, 1: номер хода, 2: ОЖ, 3: ОМ, 4: состояние, 5: уровень, 6: переключатель)
          # @note Используется в VX.
          # @return [Integer]
          attr_accessor :condition_type
          
          # Первый параметр условия.
          # @note Используется в VX.
          # @return [Integer]
          attr_accessor :condition_param1
          
          # Второй параметр условия.
          # @note Используется в VX.
          # @return [Integer]
          attr_accessor :condition_param2
          
          # Параметр А для проверки по номеру хода.
          # @note Используется в XP. Формула проверки условия: А + Bx
          # @return [Integer]
          attr_accessor :condition_turn_a
          
          # Параметр B для проверки по номеру хода.
          # @note Используется в XP. Формула проверки условия: А + Bx
          # @return [Integer]
          attr_accessor :condition_turn_b
          
          # Процент ОЖ для проверки по уровню ОЖ.
          # @note Используется в XP.
          # @return [Integer]
          attr_accessor :condition_hp
          
          # Наибольший уровень героя в группе для проверки по уровню.
          # @note Используется в XP.
          # @return [Integer]
          attr_accessor :condition_level
          
          # ID переключателя для проверки по переключателю.
          # @note Используется в XP.
          # @return [Integer]
          attr_accessor :condition_switch_id
          
          # Приоритет действия.
          # @return [Integer]
          attr_accessor :rating
          
          #==========================================================================
          #                                 Методы
          #==========================================================================
          
          ##
          # Инициализирует переменные класса, присваивает им значения по умолчанию
          #
          # @note Вызывается автоматически при создании нового экземпляра
          #
          # @return [NilClass]
          ## 
          def initialize
            @kind = 0
            @basic = 0
            @skill_id = 1        
            @condition_type = 0
            @condition_param1 = 0
            @condition_param2 = 0
            @condition_turn_a = 0
            @condition_turn_b = 1
            @condition_hp = 100
            @condition_level = 1
            @condition_switch_id = 0
            @rating = 5
          end
          
          ##
          # Определяет, является ли тип действия навыком.
          #
          # @return Boolean
          ## 
          def skill?
            return @kind == 1
          end
          #------------------------------------------------------------------------
        end
        #--------------------------------------------------------------------------
      end
      #----------------------------------------------------------------------------
    end
    Код:
    module RPG
      class Enemy
        ##
        # Класс с данными трофея.
        #
        # @note Используется в VX.
        ##
        class DropItem
          
          #==========================================================================
          #                                Атрибуты
          #========================================================================== 
            
          # Тип предмета (0: нет, 1: предмет, 2: оружие, 3: экипировка).
          # @return [Integer]
          attr_accessor :kind
          
          # ID предмета.
          # @return [Integer]
          attr_accessor :item_id
          
          # ID оружия.
          # @return [Integer]
          attr_accessor :weapon_id
          
          # ID экипировки.
          # @return [Integer]
          attr_accessor :armor_id
          
          # N в формуле расчета вероятности получения трофея: 1/N
          # @return [Integer]
          attr_accessor :denominator
          
          # Возвращает % вероятности получения трофея
          # @return [Float]
          def probability
            return 100 / denominator
          end
          
          # Задает % вероятности получения трофея
          # @return [Float]
          def probability=(value)
            return denominator = (100 / value.limit(0, 100)).round
          end
          
          #==========================================================================
          #                                 Методы
          #==========================================================================
          
          ##
          # Инициализирует переменные класса, присваивает им значения по умолчанию
          #
          # @note Вызывается автоматически при создании нового экземпляра
          #
          # @return [NilClass]
          ## 
          def initialize
            @kind = 0
            @item_id = 1
            @weapon_id = 1
            @armor_id = 1
            @denominator = 1
          end
          #------------------------------------------------------------------------
        end
        #--------------------------------------------------------------------------
      end
      #----------------------------------------------------------------------------
    end
    Беру все RPG::Event.

  9. #49

    По умолчанию

    mephis, Dark32, и если еще кто подключился, подумайте (раз уж вы бессовестные лентяи и модулем RPG заниматься не будете) пока над Tilemap. Как вы знаете (или не знаете), под каждый тайл отводится свой спрайт. Естественно это мощное решение, дающее скриптеру власть над картой, вплоть до ее генерации "на лету" без записи в БД... но оно никак не используется и, наверняка, использоваться не будет. При этом, как мне что-то подсказывает, обработка 500 * 500 спрайтов для мейкера дело не самое простое. Предлагаю следующее:
    - Все тайлы с одного слоя копировать на новое изображение, кэшировать его, и цеплять к одному спрайту, висящему в верхнем-левом углу. С анимированными автотайлами надо подумать. Наверное, отрисовка при приближении (как сейчас) и впрямь лучший вариант.
    Кроме того, наверняка каждый, хотя бы раз, столкнулся с необходимостью разместить что-нибудь на 4ом или даже 5ом слое карты, которого нет. Какое-нибудь гнездо на кроне дерева, перекрывающего окно, прицепленное к зданию. В связи с этим предлагаю:
    - При инциализации тайлсета, подгружать слои не только текущей карты, но и связанных с ней. Связь может быть по названию. Скажем, если карта называется Town, то скрипт отработает, как обычно. Если Town_l0 - попробует поискать карту с названием Town_l1, и, если найдет, подгрузит из нее слои уже как i * max + n, где i - число, стоящее вконце, max - максимальное число слоев мейкера, n - порядковый номер слоя в новой карте.

  10. #50

    По умолчанию

    Код:
    module RPG
      ##
      # Класс с данными события карты.
      ## 
      class Event
     
        #==========================================================================
        #                                Атрибуты
        #========================================================================== 
        
        # ID события.
        # @return [Integer]
        attr_accessor :id
        
        # Название события.
        # @return [String] 
        attr_accessor :name
        
        # Координата X.
        # @return [Integer] 
        attr_accessor :x
        
        # Координата Y.
        # @return [Integer] 
        attr_accessor :y
        
        # Список страниц.
        # @return [Array<RPG::Event::Page>] 
        attr_accessor :pages
        
        #==========================================================================
        #                                 Методы
        #==========================================================================
        
        ##
        # Инициализирует переменные экземпляра, присваивает им значения по умолчанию
        #
        # @param [Integer] x Координата X нового события.
        # @param [Integer] y Координата Y нового события.
        #
        # @note Вызывается автоматически при создании нового экземпляра
        #
        # @return [NilClass]
        ## 
       def initialize(x, y)
          @id = 0
          @name = ""
          @x = x
          @y = y
          @pages = [RPG::Event::Page.new]
        end
        #--------------------------------------------------------------------------
      end
      #----------------------------------------------------------------------------
    end
    Код:
    module RPG
      class Event
        ##
        # Класс с данными страницы события.
        ## 
        class Page
     
          #==========================================================================
          #                                Атрибуты
          #========================================================================== 
          
          # Условие доступности страницы.
          # @return [RPG::Event::Page::Condition]
          attr_accessor :condition
          
          # Графика события.
          # @return [RPG::Event::Page::Graphic]
          attr_accessor :graphic
          
          # Тип передвижения события:
          #   (0: неподвижный, 1: случайный, 2: приближение, 3: собственный).
          # @return [RPG::Event::Page::Graphic]
          attr_accessor :move_type
          
          # Скорость передвижения.
          # @return [Integer]
          attr_accessor :move_speed
          
          # Частота шагов.
          # @return [Integer]
          attr_accessor :move_frequency
          
          # Маршрут движения для move_type == 3
          # @return [RPG::MoveRoute]
          attr_accessor :move_route
          
          # Флаг активности опции "Шаги на месте".
          # @return [Boolean]
          attr_accessor :walk_anime
          
          # Флаг активности опции "Не шагать при движении".
          # @return [Boolean]
          attr_accessor :step_anime
          
          # Флаг активности опции "Не поворачиваться при движении".
          # @return [Boolean]
          attr_accessor :direction_fix
          
          # Флаг активности опции "Проходит сквозь всё".
          # @return [Boolean]
          attr_accessor :through
          
          # Флаг активности опции "Всегда сверху".
          # @note Используется в XP.
          # @return [Boolean]
          attr_accessor :always_on_top
          
          # Высота графики события:
          #   (0: под игроком, 1: на одном уровне, 2: над игроком)
          # @note Используется в VX.
          # @return [Integer]
          attr_accessor :priority_type
          
          # Способ запуска события:
          #   0: кнопка действия, 1: контакт с игроком,
          #   2: контакт с событием, 3: автозапуск,
          #   4: параллельно процессу).
          # @return [Integer]
          attr_accessor :trigger
          
          # Список комманд.
          # @return [Array<RPG::EventCommand>] 
          attr_accessor :list
          
          #==========================================================================
          #                                 Методы
          #==========================================================================
          
          ##
          # Инициализирует переменные экземпляра, присваивает им значения по умолчанию
          #
          # @note Вызывается автоматически при создании нового экземпляра
          #
          # @return [NilClass]
          ## 
          def initialize
            @condition = RPG::Event::Page::Condition.new
            @graphic = RPG::Event::Page::Graphic.new
            @move_type = 0
            @move_speed = 3
            @move_frequency = 3
            @move_route = RPG::MoveRoute.new
            @walk_anime = true
            @step_anime = false
            @direction_fix = false
            @through = false
            @always_on_top = false
            @priority_type = 0        
            @trigger = 0
            @list = [RPG::EventCommand.new]
          end
          #------------------------------------------------------------------------
        end
        #--------------------------------------------------------------------------
      end
      #----------------------------------------------------------------------------
    end
    Код:
    module RPG
      class Event
        class Page
          ##
          # Класс с данными условия страницы события.
          ## 
          class Condition
            
            #==========================================================================
            #                                Атрибуты
            #========================================================================== 
          
            # Флаг проверки первого глобального переключателя.
            # @return [Boolean]
            attr_accessor :switch1_valid
            
            # Флаг проверки второго глобального переключателя.
            # @return [Boolean]
            attr_accessor :switch2_valid
            
            # Флаг проверки переменной.
            # @return [Boolean]
            attr_accessor :variable_valid
            
            # Флаг проверки локального переключателя.
            # @return [Boolean]
            attr_accessor :self_switch_valid
            
            # Флаг проверки наличия предмета.
            # @note Используется в VX.
            # @return [Boolean]
            attr_accessor :item_valid
            
            # Флаг проверки наличия в группе персонажа.
            # @note Используется в VX.
            # @return [Boolean]
            attr_accessor :actor_valid
            
            # ID первого проверяемого глобального переключателя.
            # @return [Integer]
            attr_accessor :switch1_id
            
            # ID второго проверяемого глобального переключателя.
            # @return [Integer]
            attr_accessor :switch2_id
            
            # ID проверяемой переменной.
            # @return [Integer]
            attr_accessor :variable_id
            
            # Значение проверяемой переменной.
            # @return [Integer]
            attr_accessor :variable_value
            
            # Буква проверяемого локального переключателя.
            # @return [String]
            attr_accessor :self_switch_ch
            
            # ID проверяемого предмета.
            # @return [Integer]
            attr_accessor :item_id
            
            # ID проверяемого персонажа.
            # @return [Integer]
            attr_accessor :actor_id
            
            #==========================================================================
            #                                 Методы
            #==========================================================================
            
            ##
            # Инициализирует переменные экземпляра, присваивает им значения по умолчанию
            #
            # @note Вызывается автоматически при создании нового экземпляра
            #
            # @return [NilClass]
            ## 
            def initialize
              @switch1_valid = false
              @switch2_valid = false
              @variable_valid = false
              @self_switch_valid = false
              @item_valid = false
              @actor_valid = false
              @switch1_id = 1
              @switch2_id = 1
              @variable_id = 1
              @variable_value = 0
              @self_switch_ch = "A"
              @item_id = 1
              @actor_id = 1
            end
            # ---------------------------------------------------------------------
          end
          # -----------------------------------------------------------------------
        end
        # -------------------------------------------------------------------------
      end
      # ---------------------------------------------------------------------------
    end
    Код:
    module RPG
      class Event
        class Page
          ##
          # Класс с данными графики страницы события.
          ## 
          class Graphic
            
            #==========================================================================
            #                                Атрибуты
            #========================================================================== 
          
            # ID тайла.
            # @return [Integer]
            attr_accessor :tile_id
            
            # Имя файла набора чарсетов.
            # @return [String]
            attr_accessor :character_name
            
            # Порядковый номер чарсета в наборе чарсетов.
            # @note Используется в VX.
            # @return [Integer]
            attr_accessor :character_index
            
            # Оттенок чарсета.
            # @note Используется в XP.
            # @return [Integer]
            attr_accessor :character_hue
            
            # Направление в котором "смотрит" событие.
            # @return [Integer]
            attr_accessor :direction
            
            # Образец шага.
            # @return [Integer]
            attr_accessor :pattern
            
            # Непрозрачность графики.
            # @note Используется в XP.
            # @return [Integer]
            attr_accessor :opacity
            
            # Режим смешивания
            # @note Используется в XP.
            # @return [Integer]
            attr_accessor :blend_type
            
            #==========================================================================
            #                                 Методы
            #==========================================================================
            
            ##
            # Инициализирует переменные экземпляра, присваивает им значения по умолчанию
            #
            # @note Вызывается автоматически при создании нового экземпляра
            #
            # @return [NilClass]
            ## 
            def initialize
              @tile_id = 0
              @character_name = ""
              @character_index = 0
              @character_hue = 0
              @direction = 2
              @pattern = 0
              @opacity = 255
              @blend_type = 0
            end
            # ---------------------------------------------------------------------
          end
          # -----------------------------------------------------------------------
        end
        # -------------------------------------------------------------------------
      end
      # ---------------------------------------------------------------------------
    end
    Беру RPG::Map, RPG::MapInfo

    Господа, так что вы думаете касательно Tilemap?
    Кстати, вы замечали, что Maker на дух не переносит числа с плавающей точкой? Нет - в недрах модулей, типа Graphics, они есть. А вот в самом движке все принудительно округляются до целых. Не говоря уже о координатах окон - даже значение переменной может быть только целым (переменной события). Ужос!

Страница 5 из 7 ПерваяПервая ... 34567 ПоследняяПоследняя

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

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

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

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

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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Open RGSS3: Разработка