제한변경
2007.02.20 03:26

소지금 한계 없애기

조회 수 2502 추천 수 2 댓글 7
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
item_maximum를 Main위에 만듬니다.

#==============================================================================
#   ◆ 소지수 한계 돌파 - item_maximum◆
#------------------------------------------------------------------------------
#==============================================================================
#   ◆ 출처
#   ◆ 창조도시 천무
#------------------------------------------------------------------------------
#  아이템을 가질 수 있는 수를99이상으로 하는 스크립트입니다
#==============================================================================
# ★ 커스터마이즈 항목 ★
#==============================================================================

#아이템의 소지수
$item_maximum = 9999
#소지수의 자리수
$item_maximum_place = 4

#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
#  파티를 취급하는 클래스입니다. 골드나 아이템등의 정보가 포함됩니다. 이 쿠
# 라스의 인스턴스는 $game_party 으로 참조됩니다.
#==============================================================================

class Game_Party
  #--------------------------------------------------------------------------
  # ● 아이템의 증가 (감소)
  #     item_id : 아이템 ID
  #     n       : 개수
  #--------------------------------------------------------------------------
  def gain_item(item_id, n)
    # 해시의 개수 데이터를 갱신
    if item_id > 0
      @items[item_id] = [[item_number(item_id) + n, 0].max, $item_maximum].min
    end
  end
  #--------------------------------------------------------------------------
  # ● 무기의 증가 (감소)
  #     weapon_id : 무기 ID
  #     n         : 개수
  #--------------------------------------------------------------------------
  def gain_weapon(weapon_id, n)
    # 해시의 개수 데이터를 갱신
    if weapon_id > 0
      @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, $item_maximum].min
    end
  end
  #--------------------------------------------------------------------------
  # ● 방어용 기구의 증가 (감소)
  #     armor_id : 방어용 기구 ID
  #     n        : 개수
  #--------------------------------------------------------------------------
  def gain_armor(armor_id, n)
    # 해시의 개수 데이터를 갱신
    if armor_id > 0
      @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, $item_maximum].min
    end
  end  
end

#-------------------------------------------------------------------------------

#==============================================================================
# ■ Window_Item
#------------------------------------------------------------------------------
#  아이템 화면 , 배틀 화면에서 , 소지 아이템의 일람을 표시하는 윈도우입니다.
#==============================================================================

class Window_Item < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 항목의 묘화
  #     index : 항목 번호
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    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
    if item.is_a?(RPG::Item) and $game_party.item_can_use?(item.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 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)
    width = 24 + ($item_maximum_place - 2) * 12
    x_i = x - width + 24
    self.contents.draw_text(x_i + 240, y, 16, 32, ":", 1)
    self.contents.draw_text(x_i + 256, y, width, 32, number.to_s, 2)
  end
end

#-------------------------------------------------------------------------------

#==============================================================================
# ■ Window_ShopNumber
#------------------------------------------------------------------------------
#  숍 화면에서 , 구입 또는 매각하는 아이템의 개수를 입력하는 윈도우입니다.
#==============================================================================

class Window_ShopNumber < Window_Base
  #--------------------------------------------------------------------------
  # ● 리프레쉬
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_item_name(@item, 4, 96)
    self.contents.font.color = normal_color
    width = 24 + ($item_maximum_place - 2) * 12
    widths = 32 + ($item_maximum_place - 2) * 12
    self.contents.draw_text(272 - width + 24, 96, 32, 32, "×")
    self.contents.draw_text(308 - width + 24, 96, width, 32, @number.to_s, 2)
    self.cursor_rect.set(304 - width + 24, 96, widths, 32)
#    self.cursor_rect.set(304, 96, 32, 32)
    # 합계 가격과 통화단위를 묘화
    domination = $data_system.words.gold
    cx = contents.text_size(domination).width
    total_price = @price * @number
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 160, 328-cx-2, 32, total_price.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(332-cx, 160, cx, 32, domination, 2)
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    super
    if self.active
      # 커서 오른쪽 (+1)
      if Input.repeat?(Input::RIGHT) and @number < @max
        $game_system.se_play($data_system.cursor_se)
        @number += 1
        refresh
      end
      # 커서왼쪽 (-1)
      if Input.repeat?(Input::LEFT) and @number > 1
        $game_system.se_play($data_system.cursor_se)
        @number -= 1
        refresh
      end
      # 커서상 (+10)
      if Input.repeat?(Input::UP) and @number < @max
        $game_system.se_play($data_system.cursor_se)
        @number = [@number + 10, @max].min
        refresh
      end
      # 커서하 (-10)
      if Input.repeat?(Input::DOWN) and @number > 1
        $game_system.se_play($data_system.cursor_se)
        @number = [@number - 10, 1].max
        refresh
      end
      # R(최대수)
      if Input.repeat?(Input::R) and @number < @max
        $game_system.se_play($data_system.cursor_se)
        @number = @max
        refresh
      end
      # L(1)
      if Input.repeat?(Input::L) and @number > 1
        $game_system.se_play($data_system.cursor_se)
        @number = 1
        refresh
      end
    end
  end
end
  
#-------------------------------------------------------------------------------

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

class Window_ShopStatus < Window_Base
  #--------------------------------------------------------------------------
  # ● 리프레쉬
  #--------------------------------------------------------------------------
  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
    width = 36 + ($item_maximum_place - 2) * 16
    self.contents.draw_text(204 - width + 36, 0, width, 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]
      elsif @item.kind == 2
        item1 = $data_armors[actor.armor3_id]
      else
        item1 = $data_armors[actor.armor4_id]
      end
      # 장비 가능한 경우
      if actor.equippable?(@item)
        # 무기의 경우
        if @item.is_a?(RPG::Weapon)
          atk1 = item1 != nil ? item1.atk : 0
          atk2 = @item != nil ? @item.atk : 0
          change = atk2 - atk1
        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
          change = pdef2 - pdef1 + mdef2 - mdef1
        end
        # 파라미터의 변화치를 묘화
        self.contents.draw_text(124, 64 + 64 * i, 112, 32,
          sprintf("%+d", change), 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
end

#-------------------------------------------------------------------------------

#==============================================================================
# ■ Window_ShopSell
#------------------------------------------------------------------------------
#  숍 화면에서 , 매각을 위해서(때문에) 소지 아이템의 일람을 표시하는 윈도우입니다.
#==============================================================================

class Window_ShopSell < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 항목의 묘화
  #     index : 항목 번호
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    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
    # 매각 가능하면 통상 문자색에 , 그렇지 않으면 무효 문자색으로 설정
    if item.price > 0
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 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)
    width = 24 + ($item_maximum_place - 2) * 12
    x_i = x - width + 24
    self.contents.draw_text(x_i + 240, y, 16, 32, ":", 1)
    self.contents.draw_text(x_i + 256, y, width, 32, number.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
        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
      # 벌써 99 개소 지키고 있는 경우
      if number == $item_maximum
        # 버저 SE 를 연주
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 결정 SE 을 연주
      $game_system.se_play($data_system.decision_se)
      # 최대 구입 가능 개수를 계산
      max = @item.price == 0 ? $item_maximum : $game_party.gold / @item.price
      max = [max, $item_maximum - 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

List of Articles
분류 제목 글쓴이 날짜 조회 수 추천 수
공지사항 일본어 스크립트를 번역하기 좋은 번역사이트 두곳입니다 ruby 2010.01.09 22078 0
공지사항 스크립트 게시판 관리자' ruby ' 입니다 ruby 2010.01.09 20725 0
공지사항 일본 스크립트/소스 공유 포럼 4 니오티 2010.01.05 22249 0
이동관련 주인공 또는 npc 그림자 18 file 루비 2007.08.06 3144 5
메뉴관련 RPG XP 테스트플레이 할때 '뉴게임' '콘티뉴' '슛다운' 바꾸기 [중복이면 죄송] 12 이정한 2007.03.07 4153 18
제한변경 알피지 XP 래밸 9999되개 만들기 17 조한철ㅋ 2006.01.18 3482 8
장르변경 TBS 배틀(SRPG) 11 file 아디안 2007.02.27 3482 4
세이브 렉없는 자동세이브 스크립트. 7 샤이닉 2007.02.20 2407 8
기타 더욱더 간편하게! 에메스엔의 귀차니즘 탈출! 4 샤이닉 2007.02.20 2357 2
제한변경 소지금 한계 없애기 7 니오티 2007.02.20 2502 2
전투관련 턴알 게이지바 변경 스크립트 (HP/SP) 3 file 니오티 2007.02.20 3984 2
전투관련 게이지 확인창 스크립트 (HP/SP/EXP) 4 file 니오티 2007.02.20 3540 5
온라인 온라인스크립트 1.7 28 file 아디안 2007.02.16 5473 27
메뉴관련 메뉴 반투명화 스크립트 2 windshy 2007.02.15 2315 4
온라인 RPG XP 온라인 스크립트 25 file 니오티 2007.02.15 6859 6
메뉴관련 링메뉴 스크립트 16 windshy 2007.02.03 2978 4
이동관련 동료 따라오게 만들기 (파랜드 택틱스 3 형태) 15 니오티 2007.02.01 2858 4
맵관련 인터페이스에 현재 맵명 표기하기 17 니오티 2007.02.01 2797 3
기타 몬스터 도감 6 니오티 2007.02.01 2870 3
메뉴관련 메인 메뉴, 기본아이콘으로 꾸미기. 4 니오티 2007.02.01 2301 3
제한변경 저장 공간 15 슬롯으로 늘리기 4 니오티 2007.02.01 1996 2
기타 돈맡기기 시스템 8 히카루 2007.01.31 3325 2
기타 한글입력기 16 file 히카루 2007.01.31 14278 1
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7

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