スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

web拍手 by FC2   

[RGSS]アイテム装備

使い方は → こちら

[RGSS]アイテム装備
アイテムの装備、装備したアイテムの使用 ができるようになります。

スクリーンショット サムネイルクリックで拡大画像が見られます。
rgss_iteequ.jpg  rgss_iteequ2.jpg

プログラムは続きにあります。

=begin
===============================================================================
    ☆★☆★☆★☆★ アイテム装備 ★☆★☆★☆★☆
=============================================================================== 

 製作・開発:STERS

  Page::http://stersblog.blog15.fc2.com/
  
導入方法------------------------------------------------------------------

    このスクリプトを Scene_Debug より下 Main より上に
   新しく作ったセクションにコピペして入れてください。

--------------------------------------------------------------------------

これを導入することで

アイテムの装備、装備したアイテムの使用

ができるようになります。

使い方--------------------------------------------------------------------
1.まずはこのスクリプトを導入してください。

2.次に自分のゲームに合うように設定項目を変えてください

3.装備画面にて、設定したキーでアイテム装備画面を開きます。

4.戦闘中では、装備したアイテムのみが表示されるようになっています。

=end
#==============================================================================
# ★ 設定項目
#==============================================================================
module ItemEquipment
  
  # アイテム装備画面へと移行するキー (デフォルト:シフト)
  EQUIP_ITEM_KEY = Input::SHIFT
  
  # 装備スロット数
  #   指定したスロット数だけアイテムが装備できます。
  #   記載の無いアクターは装備できません。
  #
  # アクターID=>スロット
  #
  ITEM_SLOT = {
        1=>10,
        2=>5,
  }
  
  # 装備制限
  #   記載したアイテムIDのアイテムのみを装備できます。
  #   記載の無いアクターは全部装備できます。
  #
  # アクターID=>[アイテムID,アイテムID,アイテムID,...]
  #
  ITEM_SET = {
        1=>[1,2,3,4,5],
        2=>[6],
  }
  
end
#==============================================================================
#==============================================================================

#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
  attr_accessor   :equip_item
  alias item_equipment_setup setup unless $@
  def setup(actor_id)
    @equip_item = []
    item_equipment_setup(actor_id)
  end
end

#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party
  def ItemEquipment_get_items
    return @items
  end
end

#==============================================================================
# ■ Window_Item
#==============================================================================
class Window_Item < Window_Selectable
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    if $game_temp.in_battle
      $scene.item_equip_active_actor.equip_item.sort.each{|w|
       if $game_party.item_number(w) > 0
         @data.push($data_items[w]) if w != nil
       end
      }
    else
      for i in 1...$data_items.size
        if $game_party.item_number(i) > 0
          @data.push($data_items[i])
        end
      end
    end
    unless $game_temp.in_battle
      for i in 1...$data_weapons.size
        if $game_party.weapon_number(i) > 0
          @data.push($data_weapons[i])
        end
      end
      for i in 1...$data_armors.size
        if $game_party.armor_number(i) > 0
          @data.push($data_armors[i])
        end
      end
    end
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
end

#==============================================================================
# ■ Window_ItemEquip_Item
#==============================================================================
class Window_ItemEquip_Item < Window_Selectable
  include ItemEquipment
  def initialize(actor)
    super(0, 256, 640, 224)
    @actor = actor
    @column_max = 2
    refresh
    self.active = false
    self.index = -1
  end
  def actor=(a)
    @actor = a
  end
  def item
    return @data[self.index]
  end
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    if ITEM_SET[@actor.id] != nil
      $game_party.ItemEquipment_get_items.sort.each{|a,b|
        @data.push($data_items[a]) if ITEM_SET[@actor.id].include?(a) and b >= 1
      }
    else
      $game_party.ItemEquipment_get_items.sort.each{|a,b|
        @data.push($data_items[a]) if b >= 1
      }
    end
    @data.push(nil)
    @item_max = @data.size
    self.contents = Bitmap.new(width - 32, row_max * 32)
    for i in 0...@item_max-1
      draw_item(i)
    end
  end
  def draw_item(index)
    item = @data[index]
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    number = $game_party.item_number(item.id)
    bitmap = RPG::Cache.icon(item.icon_name)
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  end
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end

#==============================================================================
# ■ Window_ItemEquip_Main
#==============================================================================
class Window_ItemEquip_Main < Window_Selectable
  def initialize(actor)
    super(0, 64, 640, 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    @column_max = 2
    @data = []
    refresh
    self.index = 0
  end
  def actor=(a)
    @actor = a
  end
  def item
    return @data[self.index]
  end
  def refresh
    self.contents.clear
    return if @actor == nil
    @item_max = ItemEquipment::ITEM_SLOT[@actor.id]
    for c in 0...@item_max
      self.contents.font.color = normal_color
      x = 4 + c % 2 * (288 + 32)
      y = c / 2 * 32
      s = @actor.equip_item[c]
      if s == nil
        self.contents.font.color = disabled_color
        self.contents.draw_text(x + 28, y, 92, 32, "-----",1)
        c += 1
        next
      end
      if $data_items[s] != nil
        self.contents.font.color = disabled_color unless $game_party.item_number(s) > 0
        bitmap = RPG::Cache.icon($data_items[s].icon_name)
        self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
        self.contents.draw_text(x + 28, y, 212, 32, $data_items[s].name)
      else
         self.contents.font.color = disabled_color
        self.contents.draw_text(x + 28, y, 92, 32, "-----",1)
      end
    end
  end
  def update_help
    @help_window.set_text(self.item == nil ? "" : self.item.description)
  end
end

#==============================================================================
# ■ Scene_Equip
#==============================================================================
class Scene_Equip
  alias item_equip_main main unless $@
  def main
    @item_equip_window = [Window_ItemEquip_Item.new(@actor),Window_ItemEquip_Main.new(@actor)]
    @item_equip_window.each{|w|
      w.z = 9999
      w.visible = false
      w.active = false
    }
    item_equip_main
    @item_equip_window.each{|w| w.dispose }
  end
  alias item_equip_update update unless $@
  def update
    @item_equip_window.each{|w| w.update }
    item_equip_update
    if @item_equip_window[1].active
      update_itemequip_main 
      return
    end
     if @item_equip_window[0].active
       update_itemequip_item
       return
    end
  end
  alias item_equip_update_right update_right unless $@
  def update_right
    item_equip_update_right
    if Input.trigger?(ItemEquipment::EQUIP_ITEM_KEY) and ItemEquipment::ITEM_SLOT[@actor.id] != nil
      $game_system.se_play($data_system.decision_se)
      @item_equip_window[1].active = true
      @item_equip_window[0].active = false
      @item_equip_window[1].visible = true
      @item_equip_window[0].visible = true
      @item_equip_window[0].index = -1
      @right_window.active = false
      @item_equip_window.each{|w|
        w.help_window = @help_window
        w.actor = @actor
        w.refresh
      }
      return
    end
  end
  def update_itemequip_main
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @item_equip_window[1].active = false
      @item_equip_window[0].active = false
      @item_equip_window[1].visible = false
      @item_equip_window[0].visible = false
      @item_equip_window[0].index = -1
      @right_window.active = true
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @item_equip_window[1].active = false
      @item_equip_window[0].active = true
      @item_equip_window[0].index = 0
      return
    end
  end
  def update_itemequip_item
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @item_equip_window[1].active = true
      @item_equip_window[0].active = false
      @item_equip_window[0].index = -1
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.equip_se)
      item = @item_equip_window[0].item
      if item == nil
        @actor.equip_item[@item_equip_window[1].index] = nil
      else
        @actor.equip_item[@item_equip_window[1].index] = item.id
      end
      @item_equip_window[1].refresh
      return
    end
  end
end

#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
  def item_equip_active_actor
    return @active_battler
  end
end

web拍手 by FC2   

コメントの投稿


非公開コメント

コメント

STERS's Development Room

STERSの開発室っぽい何か。


プロフィール

Name:STERS
Unity3D/C#/PHP/js/C++/VB
などを勉強中です

[STERS's Room]
[ファイル置き場]

カテゴリー
最近の記事
最近のコメント
カレンダー
04 ≪│2017/05│≫ 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
RSSリンクの表示
ブログ内Google検索
Google
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。