제작자 : 준돌
#======================================================================
# ■ Window_ShopStatus
#------------------------------------------------------------------------------
# 숍 화면에서, 아이템의 소지수나 엑터의 장비를 표시하는 윈도우입니다.
#======================================================================
class Window_ShopStatus < Window_Base
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
def initialize(actor_index = 0)
super(368, 128, 272, 352)
self.contents = Bitmap.new(width - 32, height - 32)
@actor_index = actor_index
@item = nil
#@actor_index = 0
refresh
end
#-------------------
def update
super
번호돌리기
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[@actor_index]#$game_party.actors[i]
# 장비 가능하면 통상 문자색에, 불가능하면 무효 문자색으로 설정
if actor.equippable? (@item)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
# 엑터의 이름을 묘화
@이름 = $game_party.actors[@actor_index].name
$game_party.actors[@actor_index]
self.contents.draw_text(4, 64, 120, 32, @이름)#(4, 64 + 64 * i, 120, 32, actor.name)
# 현재의 장비품을 취득
if @item.is_a? (RPG::Weapon)
item1 = $data_weapons[$game_party.actors[@actor_index].weapon_id]#$data_weapons[actor.weapon_id]
elsif @item.kind == 0
item1 = $data_armors[$game_party.actors[@actor_index].armor1_id]#$data_armors[actor.armor1_id]
elsif @item.kind == 1
item1 = $data_armors[$game_party.actors[@actor_index].armor2_id]#$data_armors[actor.armor2_id]
else
item1 = $data_armors[$game_party.actors[@actor_index].armor3_id]#$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, 112, 32,
sprintf("atk%+d", change1), 2)
self.contents.draw_text(124, 94, 112, 32,
sprintf("pdef%+d", change2), 2)
self.contents.draw_text(124, 124, 112, 32,
sprintf("mdef%+d", change3), 2)
self.contents.draw_text(124, 154, 112, 32,
sprintf("str%+d", change4), 2)
self.contents.draw_text(124, 184, 112, 32,
sprintf("dex%+d", change5), 2)
self.contents.draw_text(124, 214, 112, 32,
sprintf("agi%+d", change6), 2)
self.contents.draw_text(124, 244, 112, 32,
sprintf("int%+d", change7), 2)
end
# 아이템을 묘화
if item1 != nil
x = 4
y = 104
bitmap = RPG::Cache.icon(item1.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 30
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, opacity)
end
end
end
#-----------------------------------------------
def 번호돌리기#두개를 분리한 이유는 이해가 쉽게하기 위해서
번호를더하라
번호를빼라
end
#-----------------------------------------------
def 번호를더하라
if Input.trigger? (Input::R)
@actor_index += 1
@actor_index %= $game_party.actors.size
refresh
end
end
#------------------------------------------------
def 번호를빼라
if Input.trigger? (Input::L)
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
refresh
end
end
#--------------------------------------------------------------------------
# ● 아이템의 설정
# item : 새로운 아이템
#--------------------------------------------------------------------------
def item=(item)
if @item != item
@item = item
refresh
end
end
end
그냥 찔러넣기로도 되구요
이건
아래꺼를 업그레이드 시켜서
스텟설명이 길어서
8줄정도 내려가서
파티원 4명모두 스테이더스를 못봣엇는데
5분동안 연구한결과
Q버튼과 W버튼으로
파티원의 순서를 임의로
돌려서
파티돌리기식 형태의 상점스테이더스를 완성했습니다
^^ㅎ
성공적이군요...
EMO_3*[스크린샷은 아래글을 참조해주세요 ^^;]
#======================================================================
# ■ Window_ShopStatus
#------------------------------------------------------------------------------
# 숍 화면에서, 아이템의 소지수나 엑터의 장비를 표시하는 윈도우입니다.
#======================================================================
class Window_ShopStatus < Window_Base
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
def initialize(actor_index = 0)
super(368, 128, 272, 352)
self.contents = Bitmap.new(width - 32, height - 32)
@actor_index = actor_index
@item = nil
#@actor_index = 0
refresh
end
#-------------------
def update
super
번호돌리기
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[@actor_index]#$game_party.actors[i]
# 장비 가능하면 통상 문자색에, 불가능하면 무효 문자색으로 설정
if actor.equippable? (@item)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
# 엑터의 이름을 묘화
@이름 = $game_party.actors[@actor_index].name
$game_party.actors[@actor_index]
self.contents.draw_text(4, 64, 120, 32, @이름)#(4, 64 + 64 * i, 120, 32, actor.name)
# 현재의 장비품을 취득
if @item.is_a? (RPG::Weapon)
item1 = $data_weapons[$game_party.actors[@actor_index].weapon_id]#$data_weapons[actor.weapon_id]
elsif @item.kind == 0
item1 = $data_armors[$game_party.actors[@actor_index].armor1_id]#$data_armors[actor.armor1_id]
elsif @item.kind == 1
item1 = $data_armors[$game_party.actors[@actor_index].armor2_id]#$data_armors[actor.armor2_id]
else
item1 = $data_armors[$game_party.actors[@actor_index].armor3_id]#$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, 112, 32,
sprintf("atk%+d", change1), 2)
self.contents.draw_text(124, 94, 112, 32,
sprintf("pdef%+d", change2), 2)
self.contents.draw_text(124, 124, 112, 32,
sprintf("mdef%+d", change3), 2)
self.contents.draw_text(124, 154, 112, 32,
sprintf("str%+d", change4), 2)
self.contents.draw_text(124, 184, 112, 32,
sprintf("dex%+d", change5), 2)
self.contents.draw_text(124, 214, 112, 32,
sprintf("agi%+d", change6), 2)
self.contents.draw_text(124, 244, 112, 32,
sprintf("int%+d", change7), 2)
end
# 아이템을 묘화
if item1 != nil
x = 4
y = 104
bitmap = RPG::Cache.icon(item1.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 30
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, opacity)
end
end
end
#-----------------------------------------------
def 번호돌리기#두개를 분리한 이유는 이해가 쉽게하기 위해서
번호를더하라
번호를빼라
end
#-----------------------------------------------
def 번호를더하라
if Input.trigger? (Input::R)
@actor_index += 1
@actor_index %= $game_party.actors.size
refresh
end
end
#------------------------------------------------
def 번호를빼라
if Input.trigger? (Input::L)
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
refresh
end
end
#--------------------------------------------------------------------------
# ● 아이템의 설정
# item : 새로운 아이템
#--------------------------------------------------------------------------
def item=(item)
if @item != item
@item = item
refresh
end
end
end
그냥 찔러넣기로도 되구요
이건
아래꺼를 업그레이드 시켜서
스텟설명이 길어서
8줄정도 내려가서
파티원 4명모두 스테이더스를 못봣엇는데
5분동안 연구한결과
Q버튼과 W버튼으로
파티원의 순서를 임의로
돌려서
파티돌리기식 형태의 상점스테이더스를 완성했습니다
^^ㅎ
성공적이군요...
EMO_3*[스크린샷은 아래글을 참조해주세요 ^^;]