Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Unique Color

Unique Color
Version: 1.0


Introduction


with this module you can coloration your item/weapon/armor/skills

Screenshots

nope

Demo

nope

Script

Code:
=begin
#==============================================================================
# Unique_Color
#------------------------------------------------------------------------------
# Hanmac
# Version 1.0
# Date 8/4/07
#------------------------------------------------------------------------------
# with this module you can coloration your item/weapon/armor/skills
#==============================================================================
=end
module Unique_Color

 Groups = {
  "UNIQUE" => [[[1,2],[2,3],[4,5]],Color.new(255,0,121,255)],
  "Quest" => [[[3],[],[]],Color.new(164,143,121,255)]
 }

 KEYWORDS=["UNIQUE","Quest"] #the rankting of the Groups (last has highest proitity)
 
  SET_COLOR = Color.new(164,143,255,255)
  CURSED_COLOR = Color.new(255,100,100,255)
 
  #--------------------------------------------------------------------------
  # * Item_color
  # This hash holds the colors used for items. The syntax is
  # Item_color  = {item_id => Color.new(red, green, blue),
  #                item_id => Color.new(red, green, blue) ...}
  # the following color hashes have the same syntax.
  # * Weapon_color : holds the colors used for weapons
  # * Armor_color : holds the colors used for armors
  # * Skill_color : holds the colors used for skills
  #--------------------------------------------------------------------------
  Item_color       = {}
  Weapon_color     = {}
  Armor_color      = {}
  Skill_color      = {}
  #--------------------------------------------------------------------------
  # * Status_color
  # This hash holds the colors used for status. The syntax is the same.
  # You see these colors in your actor status in windows, and in items or
  # skills with no colors, but with these status.
  #--------------------------------------------------------------------------
  Status_color     = {0  => Color.new(255, 255, 255),
                      1  => Color.new(255,  64,   0),
                      2  => Color.new(255, 255, 255),
                      3  => Color.new(128, 255, 128),
                      4  => Color.new(255, 255, 128),
                      5  => Color.new(160, 160, 160),
                      6  => Color.new(200, 255, 140),
                      7  => Color.new( 64,  64, 200),
                      8  => Color.new(128, 255, 255),
                      9  => Color.new(128, 128, 128),
                      10 => Color.new(128, 128, 128),
                      11 => Color.new(128, 128, 128),
                      12 => Color.new(128, 128, 128),
                      13 => Color.new(128, 128, 255),
                      14 => Color.new(128, 128, 255),
                      15 => Color.new(128, 128, 255),
                      16 => Color.new(128, 128, 255)}
  #--------------------------------------------------------------------------
  # * Elements_colors : 
  # This hash holds colors used for elements. You see these colors in items
  # or skills with no colors, but with these elements
  #--------------------------------------------------------------------------
  Element_color    = {1  => Color.new(255,   0,   0),
                      2  => Color.new(  0, 255, 255),
                      3  => Color.new(  0, 255,   0),
                      4  => Color.new(  0,   0, 255),
                      5  => Color.new(255, 128,   0),
                      6  => Color.new(200, 200, 200),
                      7  => Color.new(255, 255,   0),
                      8  => Color.new(128, 128, 128)} 
  #--------------------------------------------------------------------------
  # * Color_Ranking : 
  # this Array is to cange what of the item or skill have the higher priority
  # 0 = Spezific 
  # 1 = Cursed
  # 2 = Groups (not skills)
  # 3 = Sets (only equipment)
  # 4 = Element_color
  # 5 = plus - Status_color
  # 6 = minus- Status_color
  #--------------------------------------------------------------------------

Color_Ranking = [0,1,2,3,4,5,6] 

def item_typ(item)
  case item
  when RPG::Item
   return 0
  when RPG::Weapon
   return 1
  when RPG::Armor
   return 2
  when RPG::Skill
   return 3 
  end
 end
 
 def self.groups(item)
  temp=[]
  KEYWORDS.each { |key| temp << key if Groups[key][0][item_typ(item)].include?(item.id)}
  return temp
  end
  
 def self.color(item)
  col=nil
  Color_Ranking.each do |i| 
   if col.nil?
    case i
    when 0
     temp=[Item_color, Weapon_color, Armor_color, Skill_color][item_typ(item)][item.id]
     col=temp if temp.is_a?(Color)
	when 1
     if (item.is_a?(RPG::Armor) or item.is_a?(RPG::Weapon)) and if Object.const_defined?(:Cursed)
     col=CURSED_COLOR if item.cursed?
	 end
    when 2
	 if !item.is_a?(RPG::Skill)
      KEYWORDS.each { |key| col=Groups[key][1] if Groups[key][0][item_typ(item)].include?(item.id) and Groups[key][1].is_a?(Color)}
	  end
    when 3
	 if (item.is_a?(RPG::Armor) or item.is_a?(RPG::Weapon)) and if Object.const_defined?(:Set_item) 
     col=SET_COLOR if item.set?
	 end
    when 4 
     for element in item.element_set
      col = Element_color[element]
      break if col.is_a?(Color)
     end
    when 5..6
     state_set = item.is_a?(RPG::Armor) ? item.guard_state_set :i == 5 ? item.plus_state_set : item.minus_state_set
     for state in state_set
      col = Status_color[state]
      break if col.is_a?(Color)
     end
    end
   end
  end
  col = ::Window_Base.normal_color if col.nil?
  return col
 end
 
 def self.is?(item,key)
  return if item.nil? or !Groups.has_key?(key)
  return Groups[key][0][item_typ(item)].include?(item.id)
 end
end
#==========================================================================
class RPG::Armor
#----------------------------------
  def element_set
    return guard_element_set
  end
  #----------------------------------
  def color
    return Unique_Color.color(self)
  end
#----------------------------------
end
#==========================================================================
class RPG::Item
#----------------------------------
  def color
    return Unique_Color.color(self)
  end
#----------------------------------
end
#==========================================================================
class RPG::Skill
#----------------------------------
  def color
    return Unique_Color.color(self)
  end
#----------------------------------
end
#==========================================================================
class RPG::Weapon
#----------------------------------
  def color
    return Unique_Color.color(self)
  end
#----------------------------------
end
#==========================================================================
class Window_Base  
  def draw_item_name(item, x, y, *args)
    wigth,flag = 144, false
	args.each { |value|
	  if value.is_a?(Integer)
	    width = value
	  else
	    flag = value
	  end
	}
    return unless item.respond_to?(:name)
    if item.respond_to?(:icon_name) && item.icon_name != ''
	  self.contents.font.color = item.color
	  self.contents.font.color.alpha /= 2 if flag
	  opacity = self.contents.font.color.alpha
	  if Object.defined?(:Sprite_AnimatedIcon)
        sprite = @item_icon_sprites[item]
        unless sprite.nil?
          sprite.dispose if sprite.respond_to?(:dispose)
          @window_sprites.delete(sprite)
          @item_icon_sprites[item] = nil
        end
        sprite = Sprite_AnimatedIcon.new(x, y + 4, item.icon_name, self, opacity)
        @window_sprites << sprite
        @item_icon_sprites[item] = sprite
	  else
	    self.contents.blt(x, y + 4, RPG::Cache.icon(item.icon_name), Rect.new(0, 0, 24, 24))
      end
	  x += 24
      width -= 24
    end
    return if width <= 40
    h = self.is_a?(Window_Selectable) ? oh : 32
    self.contents.draw_text(x + 4, y, width - 8, h, item.name)
  end
end
#==========================================================================
class Window_Selectable < Window_Base
  #-------------------------------------------------------------------------
  #   Name:      oh
  #   Info:      Used to determine row height. This is used to overwrite
  #              the top_row, top_row=, page_row_max & update_cursor_rect
  #              methods replacing the constant 32 with a variable amout.
  #   Author:    SephirothSpawn
  #   Call Info: No Arguments
  #   Returns:   Returns Command Offset Height
  #-------------------------------------------------------------------------
  def oh
    return 32
  end
end
#==========================================================================
class Window_Item
  def draw_item(index)
    item = @data[index]
    case item
    when RPG::Item ; number = $game_party.item_number(item.id)
    when RPG::Weapon ; number = $game_party.weapon_number(item.id)
    when RPG::Armor ; number = $game_party.armor_number(item.id)
    end
    cursor_width = self.width / @column_max - 32
    x = 4 + index % @column_max * (cursor_width + 32)
    y = index / @column_max * oh
	flag=!(item.is_a?(RPG::Item) && $game_party.item_can_use?(item.id))
    draw_item_name(item, x, y, cursor_width - 48,flag)
    self.contents.draw_text(x + cursor_width - 48, y, 16, oh, ":", 1)
    self.contents.draw_text(x + cursor_width - 32, y, 24, oh, number.to_s, 2)
  end
end
#==========================================================================
class Window_Skill
  def draw_item(index)
    skill = @data[index]
    cursor_width = self.width / @column_max - 32
    x = 4 + index % @column_max * (cursor_width + 32)
    y = index / @column_max * oh
	flag = !@actor.skill_can_use?(skill.id)
    draw_item_name(skill, x, y, cursor_width - 48,flag)
    self.contents.draw_text(x + cursor_width - 56, y, 48, oh, skill.sp_cost.to_s, 2)
  end
end
#==========================================================================
class Window_EquipItem
  def draw_item(index)
    item = @data[index]
    cursor_width = self.width / @column_max - 32
    x = 4 + index % @column_max * (cursor_width + 32)
    y = index / @column_max * oh
    case item
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    draw_item_name(item, x, y, cursor_width - 48)
    self.contents.draw_text(x + cursor_width - 48, y, 16, oh, ":", 1)
    self.contents.draw_text(x + cursor_width - 32, y, 24, oh, number.to_s, 2)
  end
end
#==========================================================================
class Window_ShopBuy
  def draw_item(index)
    item = @data[index]
    cursor_width = self.width / @column_max - 32
    x = 4 + index % @column_max * (cursor_width + 32)
    y = index / @column_max * oh
	flag= !(item.price > $game_party.gold && number < 99)
    draw_item_name(item, x, y, cursor_width - 48,flag)
    self.contents.draw_text(x + cursor_width - 96, y, 88, oh, item.price.to_s, 2)
  end
end
#==========================================================================
class Window_ShopSell
  def draw_item(index)
    item = @data[index]
    case item
    when RPG::Item
      number = $game_party.item_number(item.id)
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    # If items are sellable, set to valid text color. If not, set to invalid
    # text color.
	self.contents.font.color = item.color
    flag = !(item.price > 0)
    cursor_width = self.width / @column_max - 32
    x = 4 + index % @column_max * (cursor_width + 32)
    y = index / @column_max * oh
    draw_item_name(item, x, y, cursor_width - 48,flag)
    self.contents.draw_text(x + cursor_width - 48, y, 16, oh, ":", 1)
    self.contents.draw_text(x + cursor_width - 32, y, 24, oh, number.to_s, 2)
  end
end

Instructions


paste this over main

FAQ

Awaiting Question

Compatibility


no known unfunction

Author's Notes

thanks at tibuda (his old color sys)

and the Admins and mods at this Forum :D
 
so if we wanted a burn stat to be red it will be red and a frozen stat would be blue if we choose so...

weapons with special abillities would be like fire, red... ice, blue... electric, purple... light, white... dark, black or grey...

items for the same effect or hp, green... mp,blue... etc. etc....

this is wierd and i thought there was a script like this elsewhere?
 
Kale you are right.
you can color in diffrent methods (element, stat, group)

yes scripts ala this exist, but not this.
 
I was just asked to take a look at this script because of a strange error on line #119:

! Script 'Color' line 119: SyntaxError occurred.

Where line #119 is:
Code:
    when 2
that is within...
Code:
     if (item.is_a?(RPG::Armor) or item.is_a?(RPG::Weapon)) and if Object.const_defined?(:Cursed)
     col=CURSED_COLOR if item.cursed?
	 end
    when 2
	 if !item.is_a?(RPG::Skill)
      KEYWORDS.each { |key| col=Groups[key][1] if Groups[key][0][item_typ(item)].include?(item.id) and Groups[key][1].is_a?(Color)}
	  end
    when 3

Just to let you know, I also received this error merely by plugging this script into a fresh project.
 
hm.... i cant see the sysntaxerror, i dont know what is wrong.
ich found it:
Code:
 def self.color(item)

  col=nil

  Color_Ranking.each do |i| 

   if col.nil?

    case i

    when 0

     temp=[Item_color, Weapon_color, Armor_color, Skill_color][item_typ(item)][item.id]

     col=temp if temp.is_a?(Color)

	when 1

     if (item.is_a?(RPG::Armor) or item.is_a?(RPG::Weapon)) and Object.const_defined?(:Cursed)

     col=CURSED_COLOR if item.cursed?

	 end

    when 2

	 if !item.is_a?(RPG::Skill)

      KEYWORDS.each { |key| col=Groups[key][1] if Groups[key][0][item_typ(item)].include?(item.id) and Groups[key][1].is_a?(Color)}

	  end

    when 3

	 if (item.is_a?(RPG::Armor) or item.is_a?(RPG::Weapon)) and Object.const_defined?(:Set_item) 

     col=SET_COLOR if item.set?

	 end

    when 4 

     for element in item.element_set

      col = Element_color[element]

      break if col.is_a?(Color)

     end

    when 5..6

     state_set = item.is_a?(RPG::Armor) ? item.guard_state_set :i == 5 ? item.plus_state_set : item.minus_state_set

     for state in state_set

      col = Status_color[state]

      break if col.is_a?(Color)

     end

    end

   end

  end

  col = ::Window_Base.normal_color if col.nil?

  return col

 end
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top