Плохо! Плохо!:  0
Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 23

Тема: ItemInfo & SkillInfo

  1. #1
    Бывалый Аватар для caveman
    Информация о пользователе
    Регистрация
    15.02.2013
    Сообщений
    766
    Записей в дневнике
    47
    Репутация: 85 Добавить или отнять репутацию

    По умолчанию ItemInfo & SkillInfo

    ItemInfo & SkillInfo (VXACE)
    Автор: caveman
    Версия: 1.0
    Тип: окошки, интерфейс




    Описание:
    Кто играл в ДДД, вероятно, заметили большое окно предмета, вроде такого:
    Спойлер скрин:




    Собрался и дописал подобное окно и для скиллов, разве что вместо кастомных картинок решил сбагрить туда анимацию скилла.
    Итак, два скрипта, приведенные ниже, позволят добавить окна детального просмотра оружия, брони и скиллов игры, из меню, из списков, соответственно, оружия, брони и скиллов.

    Отличие окна скиллов в информации и того, что вместо картинки (которые в первом случае должны быть в папке Graphics\Items\ и называться типа a10.png - для брони; w3.png - для оружия), на том же месте показывается анимация скилла.

    Описание прописывается в Notes оружия/брони/скилла.

    ItemInfo:
    Спойлер скрипт:

    Код:
    #----------------------------------------------------------------------------
    # * [ACE] ItemInfo Window
    #----------------------------------------------------------------------------
    # * Автор - caveman
    # * Специально для http://rpg-maker.info
    # * Версия: 1.1 RU
    # * Релиз: 31/12/2013
    #
    # * Описание:
    # * Окно подробного описания предмета
    # *
    # * Изменения:
    # * Версия 1.1 - необязательность картинки; фикс размеров от разрешения; 
    # *   расположение инфы, теги  # Инфо <iinfo>  # Дроп <idrop>, # Требуется уровень <ilvl>  
    #----------------------------------------------------------------------------
    
    #----------------------------------------------------------------------------
    # Настройки цветов
    #----------------------------------------------------------------------------
    module ItemInfo
      ITEM_NAME_COLOR = Color.new(152,204,255)
      ITEM_DESCR_COLOR = Color.new(255,255,255)
      IMG_BORDER_COLOR = Color.new(255,255,255)
      STAT_NAME_COLOR = Color.new(255,255,255)
      STAT_VALUE_PLUS_COLOR = Color.new(152,204,255)
      STAT_VALUE_MINUS_COLOR = Color.new(255,70,60)
      
      RGX_INFO = /<iinfo>(.*?)<\/iinfo>/im
      RGX_DROP = /<idrop>(.*?)<\/idrop>/im
      RGX_LVL = /<ilvl>(.*?)<\/ilvl>/im
    end
    
    class Window_ItemInfo < Window_Base
      
      def initialize()
        pad = standard_padding
        @window_rect = Rect.new(0,0,Graphics.width,Graphics.height)
        @img_rect = Rect.new(32, 32, 96, 96)
        @name_rect = Rect.new(0, 0, Graphics.width, 32)
        @state_rect = Rect.new(160, 32, 352, 192)
        @desc_rect = Rect.new(16, 224, 
          Graphics.width - 32 - pad*2, Graphics.height - 240 - pad)
        
        super(@window_rect.x, @window_rect.y, @window_rect.width, @window_rect.height)
        self.opacity = 256
        self.contents_opacity = 256
        self.visible = false
        self.active = false
        @item = nil
        @handler = {}
        refresh
      end
      
      def dispose
      end
      
      def refresh
        contents.clear
        draw_img
        draw_name
        draw_stats
        draw_descr
      end
      
      def draw_img
        if @item != nil
          prefix = @item.is_a?(RPG::Weapon) ? "w" : "a"
          filename = sprintf("Graphics/Items/%s%d", prefix, @item.id)
          if FileTest.exist?(sprintf("%s.png", filename))
            bmp = Cache.load_bitmap("Graphics/Items/", sprintf("%s%d", prefix, @item.id))
          else
            bmp = Bitmap.new(96,96)
            iconset = Cache.system("Iconset")
            rect = Rect.new(@item.icon_index % 16 * 24, @item.icon_index / 16 * 24, 24, 24)
            bmp.stretch_blt(Rect.new(24,24,48,48), iconset, rect) 
          end
          
          #clr = ItemInfo::IMG_BORDER_COLOR
          #contents.fill_rect(@img_rect.x, @img_rect.y, 2, @img_rect.height, clr)
          #contents.fill_rect(@img_rect.x, @img_rect.y, @img_rect.width, 2, clr)
          #contents.fill_rect(@img_rect.x + @img_rect.width - 2, @img_rect.y, 
          #  2, @img_rect.height, clr)
          #contents.fill_rect(@img_rect.x, @img_rect.y + @img_rect.height - 2, 
          #  @img_rect.width, 2, clr) 
          contents.blt(@img_rect.x, @img_rect.y, bmp, bmp.rect)
        end
      end
      
      def draw_name
        if @item != nil
          contents.font.size = 32
          contents.font.color = ItemInfo::ITEM_NAME_COLOR
          contents.draw_text(@name_rect, @item.name, 1)
        end
      end
      
      def draw_stats
        if @item != nil
          contents.font.size = 24
          cur_y = @state_rect.y
          for i in 0..7
            cur_x = i % 2 == 0 ? @state_rect.x : @state_rect.x + @state_rect.width/2
            contents.font.color = ItemInfo::STAT_NAME_COLOR
            text = $data_system.terms.params[i] + ":"
            contents.draw_text(cur_x, cur_y, contents.text_size(text).width + 4, 
              28, text)
            cur_x += contents.text_size(text).width + 4
            if @item.params[i] >= 0
              text = "+"
              contents.font.color = ItemInfo::STAT_VALUE_PLUS_COLOR
            elsif
              text = ""
              contents.font.color = ItemInfo::STAT_VALUE_MINUS_COLOR
            end
            text += @item.params[i].to_s
            contents.draw_text(cur_x, cur_y, contents.text_size(text).width + 4, 
              28, text)
            cur_y += 28 if i % 2 == 1
          end
          
          addon_stats(cur_y)
        end
      end
      
      def addon_stats(cur_y)
      end
        
      def draw_descr     
        contents.fill_rect(@desc_rect.x, @desc_rect.y, @desc_rect.width, 2, 
          text_color(7))
        if @item != nil
          contents.font.color = ItemInfo::ITEM_DESCR_COLOR
          results = @item.note.scan(ItemInfo::RGX_INFO)
          results.each do |res|
            draw_text_ex(@desc_rect.x, @desc_rect.y + 4, res[0].to_s)
          end
        end
      end
      
      def process_character(c, text, pos)
        case c
        when "\n"   # New line
          process_new_line(text, pos)
        when "\f"   # New page
          process_new_page(text, pos)
        when "\e"   # Control character
          process_escape_character(obtain_escape_code(text), text, pos)
        when " "    # Space
          txt = text.dup
          word = txt.slice(/\A(.+?)\s|\z/)
          text_width = text_size(word).width + 4
        
          if text_width + pos[:x] > Graphics.width - 2 * standard_padding - 16
            process_new_line(text, pos)
          else
            process_normal_character(c, pos)
          end
        else        # Normal character
          process_normal_character(c, pos)
        end
      end
    
      
      def set_item(item)
        @item = item
        refresh
      end
      
      def update
        if self.active 
          super
          return process_cancel if Input.trigger?(:B)
        end
      end
      
      def process_cancel
        Sound.play_cancel
        Input.update
        deactivate
        @handler[:cancel].call
      end
      
      def set_handler(symbol, method)
        @handler[symbol] = method
      end
    end
    
    
    class Scene_Item
      alias iteminfo_start start
      def start
        @iteminfo_window = Window_ItemInfo.new
        @iteminfo_window.set_handler(:cancel, method(:on_iteminfo_cancel))
        iteminfo_start
      end
      
      def on_iteminfo_cancel
        hide_sub_window(@iteminfo_window)
      end
      
      def determine_item
        if item.is_a?(RPG::Weapon) || item.is_a?(RPG::Armor)
          @iteminfo_window.set_item(item)
          show_sub_window(@iteminfo_window)
          return
        end
        
        if item.for_friend?
          show_sub_window(@actor_window)
          @actor_window.select_for_item(item)
        else
          use_item
          activate_item_window
        end
      end
    end
    
    class Window_ItemList 
      def enable?(item)
        item.is_a?(RPG::Weapon) || item.is_a?(RPG::Armor) || $game_party.usable?(item)
      end
    end
    
    # addon
    class Window_ItemInfo
      def addon_stats(cur_y)
        cur_x = @state_rect.x 
        results = @item.note.scan(ItemInfo::RGX_DROP)
        results.each do |res|
          text = "Дроп:"
          contents.font.color = ItemInfo::STAT_NAME_COLOR
          contents.draw_text(cur_x, cur_y, contents.text_size(text).width + 4, 28, text)
          contents.font.color = ItemInfo::STAT_VALUE_PLUS_COLOR
          cur_x += contents.text_size(text).width + 4
          contents.draw_text(cur_x, cur_y, contents.text_size(res[0].to_s).width + 4, 
              28, res[0].to_s)
        end
        
        cur_x = @state_rect.x + @state_rect.width/2
        results = @item.note.scan(ItemInfo::RGX_LVL)
        results.each do |res|
          text = "Треб. ур:"
          contents.font.color = ItemInfo::STAT_NAME_COLOR
          contents.draw_text(cur_x, cur_y, contents.text_size(text).width + 4, 28, text)
          contents.font.color = ItemInfo::STAT_VALUE_PLUS_COLOR
          cur_x += contents.text_size(text).width + 4
          contents.draw_text(cur_x, cur_y, contents.text_size(res[0].to_s).width + 4, 
              28, res[0].to_s)
        end
      end
    end


    SkillInfo:
    Спойлер скрипт:

    Код:
    #----------------------------------------------------------------------------
    # * [ACE] SkillInfo Window
    #----------------------------------------------------------------------------
    # * Автор - caveman
    # * Специально для http://rpg-maker.info
    # * Версия: 1.1 RU
    # * Релиз: 22/07/2015
    #
    # * Описание:
    # * Окно подробного описания скилла
    # *
    #----------------------------------------------------------------------------
    module SkillInfo
      SKILL_NAME_COLOR = Color.new(152,204,255)
      SKILL_DESCR_COLOR = Color.new(255,255,255)
      STAT_NAME_COLOR = Color.new(255,255,255)
      STAT_VALUE_COLOR = Color.new(152,204,255)
      CRITICAL_COLOR = Color.new(255,10,10)
      
      RGX_INFO = /<iinfo>(.*?)<\/iinfo>/im
    end
    
    #==============================================================================
    # ** Sprite_Base
    #------------------------------------------------------------------------------
    #  A sprite class with animation display processing added.
    #==============================================================================
     
    class Sprite_Skill < Sprite
      #--------------------------------------------------------------------------
      # * Class Variable
      #--------------------------------------------------------------------------
      @@ani_checker = []
      @@ani_spr_checker = []
      @@_reference_count = {}
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      def initialize(rect, viewport = nil)
        super(viewport)
        @use_sprite = true        # Sprite use flag
        @ani_duration = 0         # Remaining time of animation
        @rect = rect              # rectangle of anim
      end
      #--------------------------------------------------------------------------
      # * Free
      #--------------------------------------------------------------------------
      def dispose
        super
        dispose_animation
      end
      #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      def update
        super
        update_animation
        @@ani_checker.clear
        @@ani_spr_checker.clear
      end
      #--------------------------------------------------------------------------
      # * Determine if animation is being displayed
      #--------------------------------------------------------------------------
      def animation?
        @animation != nil
      end
      #--------------------------------------------------------------------------
      # * Start Animation
      #--------------------------------------------------------------------------
      def start_animation(animation, mirror = false)
        dispose_animation
        @animation = animation
        if @animation
          @ani_mirror = mirror
          set_animation_rate
          @ani_duration = @animation.frame_max * @ani_rate + 1
          load_animation_bitmap
          make_animation_sprites
          set_animation_origin
        end
      end
      #--------------------------------------------------------------------------
      # * Set Animation Speed
      #--------------------------------------------------------------------------
      def set_animation_rate
        @ani_rate = 4     # Fixed value by default
      end
      #--------------------------------------------------------------------------
      # * Read (Load) Animation Graphics
      #--------------------------------------------------------------------------
      def load_animation_bitmap
        animation1_name = @animation.animation1_name
        animation1_hue = @animation.animation1_hue
        animation2_name = @animation.animation2_name
        animation2_hue = @animation.animation2_hue
        @ani_bitmap1 = Cache.animation(animation1_name, animation1_hue)
        @ani_bitmap2 = Cache.animation(animation2_name, animation2_hue)
        if @@_reference_count.include?(@ani_bitmap1)
          @@_reference_count[@ani_bitmap1] += 1
        else
          @@_reference_count[@ani_bitmap1] = 1
        end
        if @@_reference_count.include?(@ani_bitmap2)
          @@_reference_count[@ani_bitmap2] += 1
        else
          @@_reference_count[@ani_bitmap2] = 1
        end
        Graphics.frame_reset
      end
      #--------------------------------------------------------------------------
      # * Create Animation Sprites
      #--------------------------------------------------------------------------
      def make_animation_sprites
        @ani_sprites = []
        if @use_sprite && !@@ani_spr_checker.include?(@animation)
          16.times do
            sprite = ::Sprite.new(viewport)
            sprite.visible = false
            @ani_sprites.push(sprite)
          end
          if @animation.position == 3
            @@ani_spr_checker.push(@animation)
          end
        end
        @ani_duplicated = @@ani_checker.include?(@animation)
        if !@ani_duplicated && @animation.position == 3
          @@ani_checker.push(@animation)
        end
      end
      #--------------------------------------------------------------------------
      # * Set Animation Origin
      #--------------------------------------------------------------------------
      def set_animation_origin
        @ani_ox = @rect.x
        @ani_oy = @rect.y
      end
      #--------------------------------------------------------------------------
      # * Free Animation
      #--------------------------------------------------------------------------
      def dispose_animation
        if @ani_bitmap1
          @@_reference_count[@ani_bitmap1] -= 1
          if @@_reference_count[@ani_bitmap1] == 0
            @ani_bitmap1.dispose
          end
        end
        if @ani_bitmap2
          @@_reference_count[@ani_bitmap2] -= 1
          if @@_reference_count[@ani_bitmap2] == 0
            @ani_bitmap2.dispose
          end
        end
        if @ani_sprites
          @ani_sprites.each {|sprite| sprite.dispose }
          @ani_sprites = nil
          @animation = nil
        end
        @ani_bitmap1 = nil
        @ani_bitmap2 = nil
      end
      #--------------------------------------------------------------------------
      # * Update Animation
      #--------------------------------------------------------------------------
      def update_animation
        return unless animation?
        @ani_duration -= 1
        if @ani_duration == 0
          @ani_duration = @animation.frame_max * @ani_rate + 1 
        end
     
        if @ani_duration % @ani_rate == 0
          frame_index = @animation.frame_max
          frame_index -= (@ani_duration + @ani_rate - 1) / @ani_rate
          animation_set_sprites(@animation.frames[frame_index])
        end
      end
      #--------------------------------------------------------------------------
      # * Set Animation Sprite
      #     frame : Frame data (RPG::Animation::Frame)
      #--------------------------------------------------------------------------
      def animation_set_sprites(frame)
        cell_data = frame.cell_data
        @ani_sprites.each_with_index do |sprite, i|
          next unless sprite
          pattern = cell_data[i, 0]
          if !pattern || pattern < 0
            sprite.visible = false
            next
          end
          bmp = pattern < 100 ? @ani_bitmap1 : @ani_bitmap2
          sprite.bitmap = Bitmap.new(bmp.width / 2, bmp.height / 2)
          sprite.bitmap.stretch_blt(Rect.new(0,0,bmp.width/2,bmp.height/2), 
            bmp, bmp.rect) 
     
          sprite.visible = true
          sprite.src_rect.set(pattern % 5 * 96, pattern % 100 / 5 *96, 96, 96)
     
          sprite.x = @rect.x
          sprite.y = @rect.y
          sprite.angle = cell_data[i, 4]
          sprite.mirror = (cell_data[i, 5] == 1)
     
          sprite.z = self.z + 300 + i
          sprite.ox = 0
          sprite.oy = 0
          sprite.zoom_x = 1.0 
          sprite.zoom_y = 1.0 
          sprite.opacity = 256
          sprite.blend_type = cell_data[i, 7]
     
        end
      end
    end
     
     
    class Window_SkillInfo < Window_Base
      def initialize()
        @window_rect = Rect.new(0,0,544,416)
        @img_rect = Rect.new(32, 32, 96, 96)
        @name_rect = Rect.new(0, 0, 544, 32)
        @state_rect = Rect.new(160, 40, 352, 192)
        @desc_rect = Rect.new(16, 224, 496, 160)
     
        @viewport = Viewport.new
        @viewport.z = 200
     
        @img_sprite = Sprite_Skill.new(@img_rect, @viewport)
     
        super(@window_rect.x, @window_rect.y, @window_rect.width, @window_rect.height)
        self.opacity = 256
        self.contents_opacity = 256
        self.visible = false
        self.active = false
        @skill = nil
        @handler = {}
        refresh
      end
     
      def dispose
        @img_sprite.dispose
        @viewport.dispose
      end
     
      def refresh
        contents.clear
        start_anim
        draw_name
        draw_stats
        draw_descr
        @img_sprite.update
      end
     
      def update_sprite
        @img_sprite.update
      end
     
      def clear
        @img_sprite.dispose_animation
      end
     
      def start_anim
        if @skill != nil && !@img_sprite.animation?
          # проверить, проигралась ли анимашка, если да - начать снова
          if @skill.animation_id > 0
            animation = $data_animations[@skill.animation_id]
            @img_sprite.start_animation(animation)
          end
        end
      end
     
      def draw_name
        if @skill != nil
          contents.font.size = 32
          contents.font.color = SkillInfo::SKILL_NAME_COLOR
          contents.draw_text(@name_rect, @skill.name, 1)
        end
      end
      
      def draw_param(text1, text2, cur_y)
        cur_x = @state_rect.x
        contents.font.color = SkillInfo::STAT_NAME_COLOR
        contents.draw_text(cur_x, cur_y, contents.text_size(text1).width + 4, 
                28, text1)
        cur_x += contents.text_size(text1).width + 4
        contents.font.color = SkillInfo::STAT_VALUE_COLOR
        contents.draw_text(cur_x, cur_y, contents.text_size(text2).width + 4, 
                28, text2)
      end
     
      def draw_stats
        if @skill != nil
          cur_y = @state_rect.y
          contents.font.size = 20
          contents.font.color = normal_color
     
          draw_param("Элемент: ", $data_system.elements[@skill.damage.element_id].to_s, cur_y)
          cur_y += 24
          
          draw_param("Цель: ", get_scope_text(@skill.scope), cur_y)
          cur_y += 24
     
          draw_param("Стоимость: ", sprintf("%d %s", @skill.mp_cost, Vocab::mp_a), cur_y)
          cur_y += 24
          
          draw_param("Скорость: ", @skill.speed.to_s, cur_y)
          cur_y += 24
          
          draw_param("Формула: ",  @skill.damage.formula.to_s, cur_y)
          cur_y += 24
     
          if @skill.damage.critical
            contents.font.color = SkillInfo::CRITICAL_COLOR
            text = sprintf("Возможен критический урон!") 
            contents.draw_text(@state_rect.x, cur_y, contents.text_size(text).width + 4, 
                24, text)
            cur_y += 24
          end
     
          # if @skill.effects.lenght > 0
          # 
          #end
        end
      end
      
      def draw_descr
        contents.fill_rect(@desc_rect.x, @desc_rect.y, @desc_rect.width, 2, 
          text_color(7))
        if @skill != nil
          contents.font.color = SkillInfo::SKILL_DESCR_COLOR
          results = @skill.note.scan(SkillInfo::RGX_INFO)
          results.each do |res|
            draw_text_ex(@desc_rect.x, @desc_rect.y + 4, res[0].to_s)
          end
        end
      end
     
     
      def process_character(c, text, pos)
        case c
        when "\n"   # New line
          process_new_line(text, pos)
        when "\f"   # New page
          process_new_page(text, pos)
        when "\e"   # Control character
          process_escape_character(obtain_escape_code(text), text, pos)
        when " "    # Space
          txt = text.dup
          word = txt.slice(/\A(.+?)\s|\z/)
          text_width = text_size(word).width + 4
     
          if text_width + pos[:x] > 480
            process_new_line(text, pos)
          else
            process_normal_character(c, pos)
          end
        else        # Normal character
          process_normal_character(c, pos)
        end
      end
     
      def get_scope_text(id)
        case id
        when 0 
          return "нет"
        when 1 
          return "один противник"
        when 2 
          return "все противники"
        when 3 
          return "случайный противник"
        when 4 
          return "2 случайных противника"
        when 5 
          return "3 случайных противника"
        when 6 
          return "4 случайных противника"
        when 7 
          return "один союзник"
        when 8 
          return "все союзники"
        when 9 
          return "мертвый союзник"
        when 10 
          return "все мертвые союзники"
        when 11 
          return "игрок"
        else
          return ""
        end
      end
     
      def set_skill(skill)
        @skill = skill
        if @skill.animation_id > 0
          animation = $data_animations[@skill.animation_id]
          @img_sprite.start_animation(animation)
        end
     
        refresh
      end
     
      def update
        if self.active 
          super
          return process_cancel if Input.trigger?(:B)
        end
      end
     
      def process_cancel
        Sound.play_cancel
        Input.update
        deactivate
        @handler[:cancel].call
      end
     
      def set_handler(symbol, method)
        @handler[symbol] = method
      end
    end
     
     
    class Scene_Skill
      alias skillinfo_start start
      def start
        @skillinfo_window = Window_SkillInfo.new
        @skillinfo_window.set_handler(:cancel, method(:on_skillinfo_cancel))
        create_select
        skillinfo_start
        @sel_window.viewport = @viewport
        @sel_window.z = 300
      end
     
      def create_select
        @sel_window = Window_SkillSelect.new(160, 200,200)
        @sel_window.set_handler(:use,    method(:command_suse))
        @sel_window.set_handler(:show,   method(:command_sshow))
        @sel_window.set_handler(:cancel,   method(:command_scancel))
        @sel_window.hide.deactivate
      end
      
      def command_suse
        @sel_window.hide.deactivate
        determine_item
      end
      
      def command_sshow
        @sel_window.hide.deactivate
        @skillinfo_window.set_skill(item)
        show_sub_window(@skillinfo_window)
      end
      
      def command_scancel
        @sel_window.hide.deactivate
        activate_item_window
      end
      
      def on_skillinfo_cancel
        @skillinfo_window.clear
        hide_sub_window(@skillinfo_window)
      end
      
      def on_item_ok
        @actor.last_skill.object = item
        @sel_window.set_use(@actor && @actor.usable?(item))
        @sel_window.show.activate
      end
      
      def update 
        super
        if @skillinfo_window != nil
          @skillinfo_window.update_sprite
        end
      end
    end
     
    class Window_SkillSelect < Window_Command
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      def initialize(window_width, x, y)
        @window_width = window_width
        clear_command_list
        make_command_list
        @first_enabled = true
        super(x, y)
        @viewport = Viewport.new
        @viewport.z = 200
      end
      #--------------------------------------------------------------------------
      # * Get Window Width
      #--------------------------------------------------------------------------
      def window_width
        @window_width
      end
      #--------------------------------------------------------------------------
      # * Get Digit Count
      #--------------------------------------------------------------------------
      def col_max
        return 1
      end
      #--------------------------------------------------------------------------
      # * Create Command List
      #--------------------------------------------------------------------------
      def make_command_list
        add_command("Использовать",    :use)
        add_command("Посмотреть",   :show)
        add_command("Отмена",   :cancel)
      end
      
      def set_use(usable)
        @first_enabled = usable
        refresh
      end
      #---HACKS------------------------------------------------------
      def draw_item(index)
        if index == 0 && !@first_enabled
          change_color(normal_color, false)
          draw_text(item_rect_for_text(index), command_name(index), alignment)
        else
          change_color(normal_color, command_enabled?(index))
          draw_text(item_rect_for_text(index), command_name(index), alignment)
        end
      end
      
      def current_item_enabled?
        if index == 0 && !@first_enabled
          false
        else
          current_data ? current_data[:enabled] : false
        end
      end
    end
    
    class Window_SkillList 
      def enable?(item)
        if item != nil 
          return true
        end
        return false
      end
    end


    Демка с обоими скриптами:
    https://yadi.sk/d/tYxKbWgWhyf5T
    Последний раз редактировалось caveman; 22.07.2015 в 22:52. Причина: SkillInfo 1.1
    back to the primitive

    http://cavemangame.blogspot.ru/ - разные идеи и новости
    http://cavescripts.blogspot.ru/ - мои скрипты
    http://cavecrusader.blogspot.ru/ - текущий проект

  2. #2

    По умолчанию

    Очень нужная вещь, благодарю за проделанную работу caveman

  3. #3
    Бывалый Аватар для caveman
    Информация о пользователе
    Регистрация
    15.02.2013
    Сообщений
    766
    Записей в дневнике
    47
    Репутация: 85 Добавить или отнять репутацию

    По умолчанию

    Если кто-то надизайнит что-то стоящее или опишет, как лучше б это выглядело, то я бы с радостью внедрил. Сейчас не скажу, что окно презентабельно выглядит
    back to the primitive

    http://cavemangame.blogspot.ru/ - разные идеи и новости
    http://cavescripts.blogspot.ru/ - мои скрипты
    http://cavecrusader.blogspot.ru/ - текущий проект

  4. #4
    Хранитель Форума Аватар для Валера
    Информация о пользователе
    Регистрация
    15.04.2008
    Адрес
    Москва
    Сообщений
    14,006
    Записей в дневнике
    3
    Репутация: 166 Добавить или отнять репутацию

    По умолчанию

    1. Убрать рамку вокруг предмета и использовать "художественное оружие" большого размера. Такого много в онлайн-играх.
    2. Правее - с середины до края пустить полупрозрачную ( можно градиентом - вправо ) картинку какого-то красивого баттлера условно с этим оружием ( посохом ). В других случаях - другого с другим. Для антуража и заполнения пустого места.
    3. Поменять шрифт ( хотя бы внизу ) на изысканный.
    4. Что-то боевое по нижней кромке пустить. Декором. От края до края.

    Спойлер И как тебе не стыдно-то, а, Валера?:


    Оборона форта: http://rghost.ru/8kLGxFtD2
    Сделать, чтоб все происходило, как я хочу, - вот, собственно, и весь мейкер!
    Адский Рейд: http://rpgmaker.su/vbdownloads.php?d...downloadid=106

  5. #5
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    Валера, все хорошо, но тут видишь ли, это дело вкуса
    1. как я понял, доп графика обязательна.
      если доп графики нет, то используется иконка предмета, например увеличенная в 2 раза
    2. для удобства добавь теги в нотетаг, многие еще используют другие скрипты, где все параметры пишутся туда же
      PHP код:
      <info>
      Меч Васички Пупкина
      </info
    3. исправь размер окна, если используется разрешение с шириной 640px, окно так и остается в 544px с правой стороны, не красиво смотрится
    4. ну тут уже свои желания:
      • отображение полного списка параметров
      • добавить теги в нотетаг
        PHP код:
        # Дроп
        <drop>
        Летучая мышь
        </drop>

        # Требуется уролвень
        <lvl>
        12
        </lvl
    Последний раз редактировалось HopeBree; 02.01.2014 в 21:04.

  6. #6
    Бывалый Аватар для caveman
    Информация о пользователе
    Регистрация
    15.02.2013
    Сообщений
    766
    Записей в дневнике
    47
    Репутация: 85 Добавить или отнять репутацию

    По умолчанию

    HopeBree
    1. Хорошая идея.
    2,4. Я в скриптинге нуп, можешь скинуть примеры скриптов, где используются такие xml теги, мне проще подсмотреть будет, как их парсить.
    3. Если кто-нибудь предоставит красивую картинку с рюшечками, что предложил Валера (а-ля свиток или бумага из Baldurs gate), то я могу переделать с окна (Window) на спрайт с подложкой - этой картинкой, и тем самым убрать нудный windowskin, и вообще было бы симпатичней.
    back to the primitive

    http://cavemangame.blogspot.ru/ - разные идеи и новости
    http://cavescripts.blogspot.ru/ - мои скрипты
    http://cavecrusader.blogspot.ru/ - текущий проект

  7. #7
    Маститый Аватар для HopeBree
    Информация о пользователе
    Регистрация
    27.03.2013
    Сообщений
    1,204
    Записей в дневнике
    6
    Репутация: 38 Добавить или отнять репутацию

    По умолчанию

    2,4. Parameter Bonuses
    3. не правильно понял
    так окно отображается при разрешение 640х416

  8. #8
    Бывалый Аватар для caveman
    Информация о пользователе
    Регистрация
    15.02.2013
    Сообщений
    766
    Записей в дневнике
    47
    Репутация: 85 Добавить или отнять репутацию

    По умолчанию

    нене, я про третий пункт предлагаю альтернативу, более симпатичную с использованием не окна, а спрайта с подложкой симпатичной
    только я в дизайне туговат, вот, если бы добрые люди смастерили бы фон в духе пергамента
    http://rpgvaultarchive.ign.com/featu...vernstail2.jpg

    ЗЫ: Не к спеху, так как мне еще надо доковырять один скриптик на ХП для выбора глав игры (кстати, в canon nadir тут игрались?)
    back to the primitive

    http://cavemangame.blogspot.ru/ - разные идеи и новости
    http://cavescripts.blogspot.ru/ - мои скрипты
    http://cavecrusader.blogspot.ru/ - текущий проект

  9. #9
    Хранитель Форума Аватар для Валера
    Информация о пользователе
    Регистрация
    15.04.2008
    Адрес
    Москва
    Сообщений
    14,006
    Записей в дневнике
    3
    Репутация: 166 Добавить или отнять репутацию

    По умолчанию

    Совершенно не помню, какая в Балдурсе была бумага... Просто свитки есть, но их надо нудно искать. Вот один образец нашел:


    З.Ы. Ах, вот такая... убогая бумаженция?
    А рамку ты сам будешь делать?
    Последний раз редактировалось Валера; 02.01.2014 в 23:07.

    Спойлер И как тебе не стыдно-то, а, Валера?:


    Оборона форта: http://rghost.ru/8kLGxFtD2
    Сделать, чтоб все происходило, как я хочу, - вот, собственно, и весь мейкер!
    Адский Рейд: http://rpgmaker.su/vbdownloads.php?d...downloadid=106

  10. #10
    Бывалый Аватар для caveman
    Информация о пользователе
    Регистрация
    15.02.2013
    Сообщений
    766
    Записей в дневнике
    47
    Репутация: 85 Добавить или отнять репутацию

    По умолчанию

    я предлагаю сделать весь фон (то бишь, бумаженцию, рамки как хочется и где хочется и прочее), а я подставлю её в фон и впишу в неё остальное;
    это как в проектах, есть программист и дизайнер, если дизайнер != программист, то может получиться удобоваримый результат
    back to the primitive

    http://cavemangame.blogspot.ru/ - разные идеи и новости
    http://cavescripts.blogspot.ru/ - мои скрипты
    http://cavecrusader.blogspot.ru/ - текущий проект

Страница 1 из 3 123 ПоследняяПоследняя

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

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

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

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

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

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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
ItemInfo &amp; SkillInfo