조회 수 1907 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
Extra Form
출처 somewhere...

#======================================================================
# ■ Window_ShopStatus
#------------------------------------------------------------------------------
#  숍 화면에서, 아이템의 소지수나 엑터의 장비를 표시하는 윈도우입니다.
#======================================================================

class Window_ShopStatus < Window_Base
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #--------------------------------------------------------------------------
  def initialize
    super(368, 128, 272, 352)
    self.contents = Bitmap.new(width - 32, height - 32)
    @item = nil
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 리프레쉬
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    if @item == nil
      return
    end
    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
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 200, 32, "소지수")
    self.contents.font.color = normal_color
    self.contents.draw_text(204, 0, 32, 32, number.to_s, 2)
    if @item.is_a? (RPG::Item)
      return
    end
    # 장비품 추가 정보
    for i in 0...$game_party.actors.size
      # 엑터를 취득
      actor = $game_party.actors[i]
      # 장비 가능하면 통상 문자색에, 불가능하면 무효 문자색으로 설정
      if actor.equippable? (@item)
        self.contents.font.color = normal_color
      else
        self.contents.font.color = disabled_color
      end
      # 엑터의 이름을 묘화
      self.contents.draw_text(4, 64 + 64 * i, 120, 32, actor.name)
      # 현재의 장비품을 취득
      if @item.is_a? (RPG::Weapon)
        item1 = $data_weapons[actor.weapon_id]
      elsif @item.kind == 0
        item1 = $data_armors[actor.armor1_id]
      elsif @item.kind == 1
        item1 = $data_armors[actor.armor2_id]
      else
        item1 = $data_armors[actor.armor3_id]
      end
      # 장비 가능한 경우
      if actor.equippable? (@item)
        # 무기의 경우
        if @item.is_a? (RPG::Weapon)
          atk1 = item1 != nil ?  item1.atk : 0
          atk2 = @item != nil ?  @item.atk : 0
          str1 = item1 != nil ?  item1.str_plus : 0
          str2 = @item != nil ?  @item.str_plus : 0
          dex1 = item1 != nil ?  item1.dex_plus : 0
          dex2 = @item != nil ?  @item.dex_plus : 0
          agi1 = item1 != nil ?  item1.agi_plus : 0
          agi2 = @item != nil ?  @item.agi_plus : 0
          int1 = item1 != nil ?  item1.int_plus : 0
          int2 = @item != nil ?  @item.int_plus : 0
          change1 = atk2 - atk1
          change4 = str2 - str1
          change5 = dex2 - dex1
          change6 = agi2 - agi1 
          change7 = int2 - int1     
        end
        # 방어용 기구의 경우
        if @item.is_a? (RPG::Armor)
          pdef1 = item1 != nil ?  item1.pdef : 0
          mdef1 = item1 != nil ?  item1.mdef : 0
          pdef2 = @item != nil ?  @item.pdef : 0
          mdef2 = @item != nil ?  @item.mdef : 0
          str1 = item1 != nil ?  item1.str_plus : 0
          str2 = @item != nil ?  @item.str_plus : 0
          dex1 = item1 != nil ?  item1.dex_plus : 0
          dex2 = @item != nil ?  @item.dex_plus : 0
          agi1 = item1 != nil ?  item1.agi_plus : 0
          agi2 = @item != nil ?  @item.agi_plus : 0
          int1 = item1 != nil ?  item1.int_plus : 0
          int2 = @item != nil ?  @item.int_plus : 0
          change2 = pdef2 - pdef1 #+ mdef2 - mdef1
          change3 = mdef2 - mdef1
          change4 = str2 - str1
          change5 = dex2 - dex1
          change6 = agi2 - agi1 
          change7 = int2 - int1
        end
        # 파라미터의 변화치를 묘화
        self.contents.draw_text(124, 64 + 64 * i, 112, 32,
          sprintf("atk%+d", change1), 2)
        self.contents.draw_text(124, 94 + 94 * i, 112, 32,
          sprintf("pdef%+d", change2), 2)
        self.contents.draw_text(124, 124 + 124 * i, 112, 32,
          sprintf("mdef%+d", change3), 2)
        self.contents.draw_text(124, 154 + 154 * i, 112, 32,
          sprintf("str%+d", change4), 2)
        self.contents.draw_text(124, 184 + 184 * i, 112, 32,
          sprintf("dex%+d", change5), 2)
        self.contents.draw_text(124, 214 + 214 * i, 112, 32,
          sprintf("agi%+d", change6), 2)
        self.contents.draw_text(124, 244 + 244 * i, 112, 32,
          sprintf("int%+d", change7), 2)
      end
      # 아이템을 묘화
      if item1 != nil
        x = 4
        y = 64 + 64 * i + 32
        bitmap = RPG::Cache.icon(item1.icon_name)
        opacity = self.contents.font.color == normal_color ?  255 : 128
        self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
        self.contents.draw_text(x + 28, y, 212, 32, item1.name)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 아이템의 설정
  #    item : 새로운 아이템
  #--------------------------------------------------------------------------
  def item=(item)
    if @item != item
      @item = item
      refresh
    end
  end
end

 

===

 

상점에서 무기나 방어구를 살때 액터의 스테이터스를 자세하게 나타내는 스크립트입니다

 

어떤 무기를 장비해서 어떤 스테이터스가 오르고 내려가는지를 확인할수 있지요

 

다만 단점이 있다면... 액터가 둘 이상 있을때 스테이터스가 겹치는 현상이 일어납니다

 

아마 지금 당장은 1인용밖에는 활용할 방도가 없는듯 하군요 ㅇㅂㅇ;

 

예제와 사진을 첨부해놨으니 참고하시기 바랍니다 ㅇㅂㅇ



Copyright ⓒ Nioting All Rights Reserved. (since 1999)    개인정보
        

Fatal error: Cannot access property sessionController::$lifetime in /web/old/xe/modules/session/session.controller.php on line 45