RPGXP 스크립트
2013.09.24 08:07

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

조회 수 1249 추천 수 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개로 제한될거에요 아마도;;;;; 
이것도 바꿀수는 있는데 왠만하면 비추;; 아이템 소지수 돌파 쓰는분도 비추입니다;; 


출처: 게임공작소

?

  1. Mog_Battle_hud(MZ버전도 있습니다)

    Date2021.03.05 CategoryRPGMV 플러그인 By스트레이보우 Views1847 Votes0
    Read More
  2. 컷신 플러그인

    Date2020.10.30 CategoryRPGMV 플러그인 By스트레이보우 Views2453 Votes0
    Read More
  3. 업적플러그인

    Date2020.09.02 CategoryRPGMV 플러그인 By스트레이보우 Views2090 Votes0
    Read More
  4. 한글조합입력기(영어가능)

    Date2019.11.10 CategoryRPGXP 스크립트 By조규진1 Views946 Votes0
    Read More
  5. 게임에서 제공해주는 노래가 아닌 외부에서 다운받고 안에 넣어쓰려면 어떻게 해야하나요?

    Date2019.07.26 CategoryRPGMV 플러그인 ByBigOrca Views1463 Votes0
    Read More
  6. Ghost Effect

    Date2019.01.20 CategoryRPGMV 플러그인 By러닝은빛 Views1156 Votes0
    Read More
  7. RPG XP Xas액알

    Date2018.10.30 CategoryRPGXP 스크립트 By심심치 Views1161 Votes0
    Read More
  8. 커스텀 숫자 입력 패드

    Date2018.10.19 CategoryRPGMV 플러그인 By러닝은빛 Views1222 Votes0
    Read More
  9. 9마리 이상의 몬스터 설정 | More Enemies

    Date2018.08.31 CategoryRPGMV 플러그인 By러닝은빛 Views974 Votes0
    Read More
  10. 동적 맵 타일 수정 플러그인

    Date2018.07.17 CategoryRPGMV 플러그인 By베지테리안카카오 Views1035 Votes0
    Read More
  11. VXA에서 XBOX360 컨트롤러 사용 여부 체크

    Date2018.07.15 CategoryRPGVX Ace 스크립트 By러닝은빛 Views891 Votes0
    Read More
  12. RMMV 옵션 창에 메시지 속도 및 글자 크기 변경 기능 추가

    Date2018.07.15 CategoryRPGMV 플러그인 By러닝은빛 Views1636 Votes0
    Read More
  13. 한글 데미지 표시

    Date2018.07.09 CategoryRPGMV 플러그인 By러닝은빛 Views1420 Votes0
    Read More
  14. [ MV ] 심장[체력표시 하트] 플러그인

    Date2018.07.01 CategoryRPGMV 플러그인 By수성의물 Views2257 Votes0
    Read More
  15. [鳥小屋] 실적 플러그인(인게임 트로피 시스템)

    Date2017.10.31 CategoryRPGMV 플러그인 By이니군 Views1747 Votes0
    Read More
  16. LuD Script Package

    Date2017.08.16 CategoryRPGVX Ace 스크립트 ByLuD Views1674 Votes0
    Read More
  17. [VXAce] 레이어 맵 <layer> 시스템

    Date2017.08.07 CategoryRPGVX Ace 스크립트 ByLuD Views1272 Votes0
    Read More
  18. [RPG MV] 퀘스트 마커 지속 표시 플러그인

    Date2017.04.09 CategoryRPGMV 플러그인 Bylklslel Views1697 Votes0
    Read More
  19. Mirror Area - RPG Maker MV

    Date2017.01.03 CategoryRPGMV 플러그인 By러닝은빛 Views5033 Votes0
    Read More
  20. Keyboard Event - RPG Maker MV

    Date2017.01.03 CategoryRPGMV 플러그인 By러닝은빛 Views2311 Votes0
    Read More
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(김원배) | 사신지(김병국)