XP 스크립트

사용법은 스크립트를 메인위에다 넣어주시면 됩니다.
그리고나서 이벤트 하나 만들어주시고 아이템 증감 99개 2번해보면
100개이상될것입니다..
밑에 스크립트를 복사해서 붙여넣기 해주세요^^


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

#아이템의 소지수
$item_maximum = 99999
#소지수의 자리수
$item_maximum_place = 5

#==============================================================================
# ■ 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

Who's 백호

?

이상혁입니다.

http://elab.kr


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6203
841 파티 [신기술 체험] 2p파티시스템(액알) 8 file 백호 2009.02.22 3196
840 파티 파티 확장 11 file 백호 2009.02.22 3188
839 전투 간단한 액알 스크립트!(1번째) 2 백호 2009.02.21 3166
838 메뉴 메뉴등에서 움직이는 엑터 9 file 백호 2009.02.22 3164
837 전투 KGC_DamageAlter(데미지 표시 개조) 8.24 14 file 백호 2009.02.22 3157
836 XP의 느린FPS 빠르게하기 16 주유공근615 2011.02.22 3139
835 온라인 온라인스크립트 99Q(NM=No Map)버전 5 백호 2009.02.22 3121
834 메뉴 메뉴에 얼굴 그래픽 표시 4 file 백호 2009.02.21 3113
833 HUD 강화 나침반 스크립트 (원본 by 허걱) 16 file JACKY 2010.08.16 3110
832 기타 플레이어 발소리 스크립트 20 백호 2009.02.22 3108
831 온라인 멀티넷플레이 99Q Beta 3 27 백호 2009.02.22 3107
830 타크티카르바트르시스템 17 WMN 2008.04.06 3096
829 HUD 넷플레이 HUD표시 2 file 백호 2009.02.22 3094
828 전투 에너미 HP·SP투시 11 file 백호 2009.02.21 3089
827 이동 및 탈것 [■ Game_Player] 8방향이동 스크립트 13 file - 하늘 - 2009.08.06 3087
826 메시지 문자 메세지 띄우기 스크립트 10 file 백호 2009.02.21 3070
825 HUD HP/SP 상태를 표시해주는 간이 윈도우 3 file 백호 2009.02.21 3070
824 스킬 스킬창 업그레이드? ps인간 2009.01.23 3061
823 전투 시뮬레이션 턴알 3 file 백호 2009.02.21 3055
822 메시지 Hermes(Hermes Extends RPGXP Message System) 0.4 by derula 1 Alkaid 2011.02.27 3053
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 52 Next
/ 52