RPGXP 스크립트
2013.09.24 08:07

지정한 아이템 갯수 제한 스크립트

조회 수 1136 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

특정아이템에 갯수를 제한하는 스크립트입니다. 
레어템등에 쓰면 좋겠죠? ㅎ 
물론 상점에서도 제한양만큼 밖에 못사고요 ㅎ 

#시작~~~~~~~~~ 
module RX_T_LIM 
  # 初期設定 
  @rx_t_limit_weapon_num = [] 
  @rx_t_limit_armor_num = []    #건들지마세요 
  @rx_t_limit_item_num = [] 
  
  /-設定例: 
  ここではアイテムID:1・ポーションの最大所持数を24個に 
      アイテムID:3・フルポーションの最大所持数を48個に 
      それぞれ設定しています。 
      お好みにより色々設定して下さい。-/ 
  # -------------★설정하세요★------------- 
  @rx_t_limit_item_num[1] = 24                        # ↓ 아이템 입니다 
  @rx_t_limit_item_num[2] = 48        # @rx_t_limit_item_num[id] =  갯수 
                                                    #만약 @rx_t_limit_weapon_num[id] = 갯수 면무기 
                                                    #@rx_t_limit_armor_num[id] = 갯수 면방어구 
                                                    #이런식으로 계속 만드실 수 있어요 ㅎ 

 # -------------★설정 끝 ㅅㄱ~★------------- 
  def RX_T_LIM.weapon(id, num) 
    if @rx_t_limit_weapon_num[id] != nil 
      if num > @rx_t_limit_weapon_num[id] 
        num = @rx_t_limit_weapon_num[id] 
      end 
    end 
  end 
  def RX_T_LIM.armor(id, num) 
    if @rx_t_limit_armor_num[id] != nil 
      if num > @rx_t_limit_armor_num[id] 
        num = @rx_t_limit_armor_num[id] 
      end 
    end 
  end 
  def RX_T_LIM.item(id, num) 
    if @rx_t_limit_item_num[id] != nil 
      if num > @rx_t_limit_item_num[id] 
        num = @rx_t_limit_item_num[id] 
      end 
    end 
  end 
  def RX_T_LIM.d_weapon(id) 
    if @rx_t_limit_weapon_num[id] != nil 
      num = @rx_t_limit_weapon_num[id] 
    end 
  end 
  def RX_T_LIM.d_armor(id) 
    if @rx_t_limit_armor_num[id] != nil 
      num = @rx_t_limit_armor_num[id] 
    end 
  end 
  def RX_T_LIM.d_item(id) 
    if @rx_t_limit_item_num[id] != nil 
      num = @rx_t_limit_item_num[id] 
    end 
  end 
end 

#============================================================================== 
# ■ Game_Party 
#------------------------------------------------------------------------------ 
#  パーティを扱うクラスです。ゴールドやアイテムなどの情報が含まれます。このク 
# ラスのインスタンスは $game_party で参照されます。 
#============================================================================== 

class Game_Party 
  #-------------------------------------------------------------------------- 
  # ● アイテムの所持数取得 
  #    item_id : アイテム ID 
  #-------------------------------------------------------------------------- 
  alias rx_rg11_item_number item_number 
  def item_number(item_id) 
    # ★ ハッシュに個数データがあれば所持数制限があるかチェック 
    if @items.include?(item_id) 
      rx_num = RX_T_LIM.item(item_id, @items[item_id]) 
      # 所持制限数を超えていたら制限数まで減らす 
      if rx_num != nil 
        @items[item_id] = rx_num 
      end 
    end 
    rx_rg11_item_number(item_id) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 武器の所持数取得 
  #    weapon_id : 武器 ID 
  #-------------------------------------------------------------------------- 
  alias rx_rg11_weapon_number weapon_number 
  def weapon_number(weapon_id) 
    # ★ ハッシュに個数データがあれば所持数制限があるかチェック 
    if @weapons.include?(weapon_id) 
      rx_num = RX_T_LIM.weapon(weapon_id, @weapons[weapon_id]) 
      # 所持制限数を超えていたら制限数まで減らす 
      if rx_num != nil 
        @weapons[weapon_id] = rx_num 
      end 
    end 
    rx_rg11_weapon_number(weapon_id) 
  end 
  #-------------------------------------------------------------------------- 
  # ● 防具の所持数取得 
  #    armor_id : 防具 ID 
  #-------------------------------------------------------------------------- 
  alias rx_rg11_armor_number armor_number 
  def armor_number(armor_id) 
    # ★ ハッシュに個数データがあれば所持数制限があるかチェック 
    if @weapons.include?(armor_id) 
      rx_num = RX_T_LIM.armor(armor_id, @armors[armor_id]) 
      # 所持制限数を超えていたら制限数まで減らす 
      if rx_num != nil 
        @armors[armor_id] = rx_num 
      end 
    end 
    rx_rg11_armor_number(armor_id) 
  end 
end 

#============================================================================== 
# ■ Window_ShopBuy 
#------------------------------------------------------------------------------ 
#  ショップ画面で、購入できる商品の一覧を表示するウィンドウです。 
#============================================================================== 

class Window_ShopBuy < Window_Selectable 
  #-------------------------------------------------------------------------- 
  # ● 項目の描画 
  #    index : 項目番号 
  #-------------------------------------------------------------------------- 
  def draw_item(index) 
    item = @data[index] 
    # アイテムの所持数を取得 
    case item 
    # -------------★改造ここから★------------- 
    when RPG::Item 
      # ★ 個数制限があるかチェック 
      rx_num = RX_T_LIM.d_item(item.id) 
      number = $game_party.item_number(item.id) 
    when RPG::Weapon 
      # ★ 個数制限があるかチェック 
      rx_num = RX_T_LIM.d_weapon(item.id) 
      number = $game_party.weapon_number(item.id) 
    when RPG::Armor 
      # ★ 個数制限があるかチェック 
      rx_num = RX_T_LIM.d_armor(item.id) 
      number = $game_party.armor_number(item.id) 
    end 
    # ★ 個数制限最終判定 
    if rx_num == nil 
      rx_num = 99 
    end 
    # ★ 価格が所持金以下、かつ所持数が 99(若しくは制限個数)でなければ通常文字色に、 
    # そうでなければ無効文字色に設定 
    if item.price <= $game_party.gold and number < rx_num 
      self.contents.font.color = normal_color 
    else 
      self.contents.font.color = disabled_color 
    end 
    # -------------★改造ここまで★------------- 
    x = 4 
    y = index * 32 
    rect = Rect.new(x, y, self.width - 32, 32) 
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) 
    bitmap = RPG::Cache.icon(item.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, item.name, 0) 
    self.contents.draw_text(x + 240, y, 88, 32, item.price.to_s, 2) 
  end 
end 

#============================================================================== 
# ■ Scene_Shop 
#------------------------------------------------------------------------------ 
#  ショップ画面の処理を行うクラスです。 
#============================================================================== 

class Scene_Shop 
  #-------------------------------------------------------------------------- 
  # ● フレーム更新 (購入ウィンドウがアクティブの場合) 
  #-------------------------------------------------------------------------- 
  def update_buy 
    # ステータスウィンドウのアイテムを設定 
    @status_window.item = @buy_window.item 
    # B ボタンが押された場合 
    if Input.trigger?(Input::B) 
      # キャンセル SE を演奏 
      $game_system.se_play($data_system.cancel_se) 
      # ウィンドウの状態を初期モードへ 
      @command_window.active = true 
      @dummy_window.visible = true 
      @buy_window.active = false 
      @buy_window.visible = false 
      @status_window.visible = false 
      @status_window.item = nil 
      # ヘルプテキストを消去 
      @help_window.set_text("") 
      return 
    end 
    # C ボタンが押された場合 
    if Input.trigger?(Input::C) 
      # アイテムを取得 
      @item = @buy_window.item 
      # アイテムが無効の場合、または価格が所持金より上の場合 
      if @item == nil or @item.price > $game_party.gold 
        # ブザー SE を演奏 
        $game_system.se_play($data_system.buzzer_se) 
        return 
      end 
      # アイテムの所持数を取得 
      case @item 
      # -------------★改造ここから★------------- 
      when RPG::Item 
        # ★ 購入数制限があるかチェック 
        rx_num = RX_T_LIM.d_item(@item.id) 
        number = $game_party.item_number(@item.id) 
      when RPG::Weapon 
        # ★ 購入数制限があるかチェック 
        rx_num = RX_T_LIM.d_weapon(@item.id) 
        number = $game_party.weapon_number(@item.id) 
      when RPG::Armor 
        # ★ 購入数制限があるかチェック 
        rx_num = RX_T_LIM.d_armor(@item.id) 
        number = $game_party.armor_number(@item.id) 
      end 
      # ★ 特に購入数制限がなければ購入数を99に。 
      if rx_num == nil 
        rx_num = 99 
      end 
      # ★ すでに 99 個(もしくは制限個数分)所持している場合 
      if number == rx_num 
        # ブザー SE を演奏 
        $game_system.se_play($data_system.buzzer_se) 
        return 
      end 
      # -------------★改造ここまで★------------- 
      # 決定 SE を演奏 
      $game_system.se_play($data_system.decision_se) 
      # 最大購入可能個数を計算 
      max = @item.price == 0 ? 99 : $game_party.gold / @item.price 
      max = [max, rx_num - number].min 
      # ウィンドウの状態を個数入力モードへ 
      @buy_window.active = false 
      @buy_window.visible = false 
      @number_window.set(@item, max, @item.price) 
      @number_window.active = true 
      @number_window.visible = true 
      end 
  end 
end 
#------------------끝 

사용법 

우선 스크립트붙이신후 13행에 가보세요 
그러면 설정하는곳이 있을겁니다. 
그쪽에서 설정하시면 되고요 
 @rx_t_limit_item_num[1] = 24 이렇게 되있는것은 1번아이템에 갯수가 24개로 제한되는거에요 
  여기서  가운데 영어를 바꾸면 무기 방어구 설정도 가능합니다. 
@rx_t_limit_weapon_num[id] = 숫자  ←특정 무기 갯수 제한 
@rx_t_limit_armor_num[id] = 숫자 ← 특정방어구 갯수 제한 
입니다. 

나머지 아이템갯수는 99개로 제한될거에요 아마도;;;;; 
이것도 바꿀수는 있는데 왠만하면 비추;; 아이템 소지수 돌파 쓰는분도 비추입니다;; 


출처: 게임공작소

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
208 RPGMV 플러그인 맵타일 크기 변경 플러그인! 1 파란별빛 2015.10.26 1408 0
207 RPGMV 플러그인 프리로드 매니저 (소재를 미리 불러서 게임진행을 빠르게) 파란별빛 2015.10.26 698 0
206 RPGMV 플러그인 타이틀 커맨드에 '게임종료'를 추가해줍니다. file 파란별빛 2015.10.26 114030 0
205 RPGMV 플러그인 회전하는 타이틀 메뉴 플러그인 1 file 파란별빛 2015.10.26 843 0
204 RPGMV 플러그인 RPG MV 와 AJAX를 이용한 웹 통신 플러그인 파란별빛 2015.10.26 548 0
203 RPGMV 플러그인 배틀미스트(전투중포그효과) 플러그인 file 파란별빛 2015.10.26 547 0
202 RPGMV 플러그인 RPG Maker MV 한글 데이타베이스 입니다. 9 file 천무 2015.10.25 1905 3
201 RPGMV 플러그인 Ellye's Simple ATB (RPG Maker MV) 2 file 파란별빛 2015.10.24 1249 1
200 RPGMV 플러그인 한글 이름 입력 처리 플러그인 1 file 파란별빛 2015.10.24 1676 0
199 RPGMV 플러그인 전투속도 고속화 플러그인. 1 file 파란별빛 2015.10.24 1100 0
198 RPGMV 플러그인 한국어 조사 (은/는/이/가) 처리 플러그인 입니다. 2 file 파란별빛 2015.10.24 1040 0
197 RPGMV 플러그인 해상도 변경 플러그인 v0.1 4 file 카리스 2015.10.24 5695 2
196 RPGVX Ace 스크립트 타이틀 메뉴 위치 바꾸기 vx 및 vx ace 여줄가리 2015.09.21 2009 0
195 유니티 스크립트 구간 루프 음악 스크립트 맛난호빵 2015.08.24 234 0
194 RPGXP 스크립트 스테이터스,보수,골드,플레임 타임 삭제 rpgmakingbot 2015.06.02 738 0
193 RPGVX Ace 스크립트 Mog Hunter 스페셜 철창노틸 2015.03.26 764 1
192 RPGVX Ace 스크립트 추천 스크립트 모음 2 철창노틸 2015.03.26 5854 1
191 RPGXP 스크립트 헤드 업 디스플레이 스크립트 3  운 2015.01.30 870 0
190 RPGXP 스크립트 컬러 비트맵 타이틀 스크립트 3  운 2015.01.20 854 1
189 RPGXP 스크립트 로고 스크립트 1  운 2014.12.10 1179 1
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 15 Next
/ 15






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)