| 赞 | 8  | 
 
| VIP | 0 | 
 
| 好人卡 | 0 | 
 
| 积分 | 20 | 
 
| 经验 | 11208 | 
 
| 最后登录 | 2025-7-1 | 
 
| 在线时间 | 658 小时 | 
 
 
 
 
 
Lv3.寻梦者 
	- 梦石
 - 0 
 
        - 星屑
 - 2023 
 
        - 在线时间
 - 658 小时
 
        - 注册时间
 - 2014-2-15
 
        - 帖子
 - 81
 
 
 
 | 
	
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
x
 
#============================================================================== 
# ■ Sprite_MenuPicture 
#------------------------------------------------------------------------------ 
#  メニュー画面で衣装の状態を表すウィンドウです 
#============================================================================== 
class Sprite_MenuPicture #< Window_Selectable 
  #-------------------------------------------------------------------------- 
  # ◆ 定数 
  #-------------------------------------------------------------------------- 
  #MyGameConst::ETYPE_ID_OUTER = 1 
  #MyGameConst::ETYPE_ID_INNER = 2 
  #MyGameConst::ETYPE_ID_HEAD = 3 
  #MyGameConst::ETYPE_ID_LEG = 4 
  #MyGameConst::ITEM_ID_FANTASY_DRESS = 62 
   
  #-------------------------------------------------------------------------- 
  # ● オブジェクト初期化 
  #-------------------------------------------------------------------------- 
  def initialize(x, y, width, height, actor_id=1, mode="main") 
    # 基本的には1番目のアクター 
    @actor_id = actor_id 
    @mode = mode 
    @x = x 
    @y = y 
    do_factory_item_file_list 
    do_factory_body_file_list 
    draw_picture   
 
    actor = $game_actors[@actor_id]     
     
    # 有効な防具を取得し、それぞれに対応するピクチャを表示する 
    actor.armors.each{|armor| 
      target_file_name = @item_file_list[armor.id]["file_name"] 
      if armor.etype_id == MyGameConst::ETYPE_ID_OUTER         
        #if armor.id == MyGameConst::ITEM_ID_FANTASY_DRESS and @body != nil 
        #  set_body_picture(target_file_name) 
        #  @body.z = 99999 
        #else 
          @outer_item_id = armor.id 
        #end 
      elsif armor.etype_id == MyGameConst::ETYPE_ID_INNER 
        @inner_item_id = armor.id 
      elsif armor.etype_id == MyGameConst::ETYPE_ID_HEAD 
        @head_item_id = armor.id 
      elsif armor.etype_id == MyGameConst::ETYPE_ID_LEG 
        @leg_item_id = armor.id 
      end 
       
      #puts armor.id 
      #puts armor.etype_id 
      #puts @item_file_list[armor.id]["file_name"] 
    } 
 
  end 
   
  #-------------------------------------------------------------------------- 
  # ◆ オブジェクトの解放処理 
  #--------------------------------------------------------------------------   
  def dispose 
    @body.dispose if @body != nil and !(@body.disposed?) 
    @base_head.dispose if @base_head != nil and !(@base_head.disposed?) 
    @outer.dispose if @outer != nil and !(@outer.disposed?) 
    @inner.dispose if @inner != nil and !(@inner.disposed?) 
    @head.dispose if @head != nil and !(@head.disposed?) 
    @leg.dispose if @leg != nil and !(@leg.disposed?) 
  end 
   
  #-------------------------------------------------------------------------- 
  # ◆ オブジェクトの更新処理 
  #--------------------------------------------------------------------------   
  def update 
    draw_picture 
    
  end 
   
   
  #-------------------------------------------------------------------------- 
  # ◆ MenuPictureメイン処理 
  #--------------------------------------------------------------------------     
  def draw_picture    
    # 基本の身体ピクチャを表示する 
    # 他人と入れ替わった場合等、ここに指定するピクチャが変わる 
     
    if @mode == "main" 
      body_skin_id = $game_variables[MyGameConst::VARIABLE_BODY_SKIN_IDX] 
    #if body_skin_id != -1 
    else 
      body_skin_id = @actor_id 
    end 
     
     
    body_file_name = @body_file_list[body_skin_id]["body_file_name"] 
    set_body_picture(body_file_name) 
     
    base_head_file_name = @body_file_list[body_skin_id]["head_file_name"] 
    hair_order = @body_file_list[body_skin_id]["hair_order"] 
    set_base_head_picture(base_head_file_name, hair_order) 
     
    # 基本的には1番目のアクター 
    actor = $game_actors[@actor_id] 
     
     
    # 有効な防具を取得し、それぞれに対応するピクチャを表示する 
    actor.armors.each{|armor| 
     
     
      target_file_name = @item_file_list[armor.id]["file_name"] 
       
      # キャラタイプが異なる場合、ここに「-type1」等の名前を指定する 
      # それだけ素材数も増えることになるが・・・ 
       
      if armor.etype_id == MyGameConst::ETYPE_ID_OUTER         
        #if armor.id == MyGameConst::ITEM_ID_FANTASY_DRESS and @body != nil 
        #  set_body_picture(target_file_name) 
        #  @body.z = 99999 
        #else 
           
          if armor.id != @outer_item_id    
            set_outer_picture(target_file_name) 
            @outer_item_id = armor.id 
          end           
        #end 
      elsif armor.etype_id == MyGameConst::ETYPE_ID_INNER and armor.id != @inner_item_id 
        set_inner_picture(target_file_name) 
        @inner_item_id = armor.id 
      elsif armor.etype_id == MyGameConst::ETYPE_ID_HEAD and armor.id != @head_item_id 
        set_head_picture(target_file_name) 
        @head_item_id = armor.id 
      elsif armor.etype_id == MyGameConst::ETYPE_ID_LEG and armor.id != @leg_item_id 
        set_leg_picture(target_file_name) 
        @leg_item_id = armor.id 
      end 
       
      #puts armor.id 
      #puts armor.etype_id 
      #puts @item_file_list[armor.id]["file_name"] 
    } 
     
      
    # 装備状況の確認 
    outer_item = actor.get_equip_slot_status(MyGameConst::ETYPE_ID_OUTER) 
    inner_item = actor.get_equip_slot_status(MyGameConst::ETYPE_ID_INNER) 
    head_item = actor.get_equip_slot_status(MyGameConst::ETYPE_ID_HEAD) 
    leg_item = actor.get_equip_slot_status(MyGameConst::ETYPE_ID_LEG) 
    
    
    # 装備アイテムがない場合、衣服ピクチャを削除する 
    if outer_item.is_nil? 
      @outer.dispose if @outer != nil and [email protected]? 
      @outer_item_id = -1 
    end 
     
    if inner_item.is_nil? 
      @inner.dispose if @inner != nil and [email protected]? 
      @inner_item_id = -1 
    end 
     
    if head_item.is_nil? 
      @head.dispose if @head != nil and [email protected]? 
      @head_item_id = -1 
    end 
     
    if leg_item.is_nil? 
      @leg.dispose if @leg != nil and [email protected]? 
      @leg_item_id = -1 
    end 
 
     
    #end 
  end 
   
  #-------------------------------------------------------------------------- 
  # ◆ キャラクターピクチャ用のスプライトを生成する 
  #--------------------------------------------------------------------------   
  def do_factory_sprite(file_name) 
    _sprite = Sprite.new 
    _sprite.zoom_x = 0.5 
    _sprite.zoom_y = 0.5 
    _sprite.x = -74 + @x 
    _sprite.y = -48 
     
    _bitmap = Cache.picture(file_name) 
    _sprite.bitmap = _bitmap     
    return _sprite 
  end 
   
  #-------------------------------------------------------------------------- 
  # ◆ 身体のスプライトを表示する 
  #--------------------------------------------------------------------------   
  def set_body_picture(file_name) 
    @body.dispose if @body != nil and [email protected]? 
    @body = do_factory_sprite(file_name) 
    @body.z = 9999 
     
    # サキュバス化:@body.tone.set(0, 0, 130) 
  end 
 
  #-------------------------------------------------------------------------- 
  # ◆ 頭部のスプライトを表示する 
  #--------------------------------------------------------------------------   
  def set_base_head_picture(file_name, hair_order) 
    @base_head.dispose if @base_head != nil and !@base_head.disposed? 
    @base_head = do_factory_sprite(file_name) 
    if hair_order == "fore" 
      @base_head.z = 11000 
    else 
      @base_head.z = 10000 
    end 
     
    # サキュバス化:@base_head.tone.set(0, 0, 130) 
  end   
   
  #-------------------------------------------------------------------------- 
  # ◆ インナーのスプライトを表示する 
  #--------------------------------------------------------------------------     
  def set_inner_picture(file_name) 
    @inner.dispose if @inner != nil and [email protected]? 
    @inner = do_factory_sprite(file_name) 
    @inner.z = 10001 
  end  
 
  #-------------------------------------------------------------------------- 
  # ◆ 脚部のスプライトを表示する 
  #--------------------------------------------------------------------------     
  def set_leg_picture(file_name) 
    @leg.dispose if @leg != nil and [email protected]? 
    @leg = do_factory_sprite(file_name) 
    @leg.z = 10003 
  end    
 
  #-------------------------------------------------------------------------- 
  # ◆ アウターのスプライトを表示する 
  #--------------------------------------------------------------------------     
  def set_outer_picture(file_name) 
    @outer.dispose if @outer != nil and [email protected]? 
    @outer = do_factory_sprite(file_name) 
    @outer.z = 10004 
  end 
   
  #-------------------------------------------------------------------------- 
  # ◆ 頭アクセサリーのスプライトを表示する 
  #--------------------------------------------------------------------------     
  def set_head_picture(file_name) 
    @head.dispose if @head != nil and [email protected]? 
    @head = do_factory_sprite(file_name) 
    #@head.z = 10004 
    @head.z = 11010 
  end  
 
  def do_factory_body_file_list 
    @body_file_list = { 
      1 => 
      { 
        "head_file_name" => "H000-主人公", 
        "body_file_name" => "B999-基本ボディ", 
        "type" => "big" 
      }, 
    } 
  end 
   
   
  #-------------------------------------------------------------------------- 
  # ◆ ピクチャとファイル名のハッシュを生成する 
  #--------------------------------------------------------------------------     
  def do_factory_item_file_list 
    @item_file_list = { 
      60 => 
      { 
        "file_name" => "060-セーラー服" 
      }, 
    }     
  end 
   
   
   
   
end  |   
 
 
 
 |