アイコン256個制限解除



ツクールVXの仕様であるアイコンを256以上使えないという制限を解除します。

変更点
2008:09:04
・メモの2行目以降に何か書かれているとエラー落ちするバグを修正

2009:10:01
・メモ欄での書式設定の変更(他サイト様のスクリプトとの競合を防止)
(今までのスクリプトだと使い勝手が物凄く悪かったため)

2011:12:23
・無駄処理削除

#==============================================================================
# ■ アイコンの制限解除 by 貪藻矢射妥←
#------------------------------------------------------------------------------
#  アイコンが256個しか使えないというVXの制限を解除します。
#  
#  ※注意!
#  ・アイコンファイルはGraphics/Systemにインポートしてください
#  
#==============================================================================
# 更新っぽいもの
# 2008:09:04
# ・メモ欄の2行目以降に文字が入っているとエラー落ちするバグを修正
# 
# 2009:10:01
# ・メモ欄での書式設定の変更(他サイト様のスクリプトとの競合を防止)
# 
# 2011:12:23
# ・無駄処理削除

module DIA_IC
  # ◆ カスタマイズ用"カッコ"
  # ※別のスクリプトとかを使用しており、"[", "]"が使用不能なのはイタイという
  #  場合に。
  STT = "《"
  FIN = "》"
end

class Window_Base < Window
  include DIA_IC
  attr_accessor :icon_name                # アイコンの名前
  #--------------------------------------------------------------------------
  # ● アイコンの描画
  #     icon_index : アイコン番号
  #     x          : 描画先 X 座標
  #     y          : 描画先 Y 座標
  #     enabled    : 有効フラグ。false のとき半透明で描画
  #--------------------------------------------------------------------------
  def draw_icon(icon_index, x, y, enabled = true)
    bitmap = Cache.system("Iconset")
    rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
    draw_icon_root(bitmap, rect, x, y, enabled)
  end
  #--------------------------------------------------------------------------
  # ● アイコンの描画(XP版)
  #     icon_name : アイコンネーム
  #     x         : 描画先 X 座標
  #     y         : 描画先 Y 座標
  #     enabled   : 有効フラグ。false のとき半透明で描画
  #--------------------------------------------------------------------------
  def draw_icon_XP(icon_name, x, y, enabled = true)
    bitmap = Cache.system(@icon_name)
    rect = Rect.new(0, 0, 24, 24)
    draw_icon_root(bitmap, rect, x, y, enabled)
  end
  #--------------------------------------------------------------------------
  # ● アイコンの描画(おおもと)
  #     bitmap  : ビットマップキャッシュ
  #     rect    : ビットマップの表示Rect
  #     x       : 描画先 X 座標
  #     y       : 描画先 Y 座標
  #     enabled : 有効フラグ。false のとき半透明で描画
  #--------------------------------------------------------------------------
  def draw_icon_root(bitmap, rect, x, y, enabled = true)
    self.contents.blt(x, y, bitmap, rect, enabled ? 255 : 128)
  end
  #--------------------------------------------------------------------------
  # ● アイテム名の描画
  #     item    : アイテム (スキル、武器、防具でも可)
  #     x       : 描画先 X 座標
  #     y       : 描画先 Y 座標
  #     enabled : 有効フラグ。false のとき半透明で描画
  #--------------------------------------------------------------------------
  def draw_item_name(item, x, y, enabled = true)
    return unless item
    text = item.note.clone
    
    # アイコンネーム抽出
    @icon_name = text =~ /ICON#{DIA_IC::STT}(\w+)#{DIA_IC::FIN}/ ? $1 : nil
    
    # アイコンネームがある場合XP版で描画する
    if  @icon_name != nil
      draw_icon_XP(@icon_name, x, y, enabled)
    else
      draw_icon(item.icon_index, x, y, enabled)
    end
      
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(x + 24, y, 172, WLH, item.name)
  end
end
上のように設定を行います。 文中にある通りカッコは"《》"でなくても薄緑色の部分で自由に設定できます。 ※アイコン素材はXPと同じ24×24の規格で作り、Systemにインポートしてください。 で、実際に使用すると以下のようになります。 (実はこのスクショを見てもイマイチ制限が解除されているのかどうかわからないという・・・)

戻る