XP 스크립트

아래의 스크립트는 RPG Advocate씨의 Advanced Equip Window 스크립트를 대폭 수정한 것입니다.


#==============================================================================
# Complete equipment screen
#------------------------------------------------------------------------------
# Guillaume777
# 2.0
# 2006/04/24
# Edit from RPG Avocate's script ( http://www.phylomortis.com/resource/script/scr012.html )
#==============================================================================
module Adv_Equip_Mod
DRAW_EVA = false # true = show the evade statistic, if you didn't change
# draw_actor_parameter to take this into account it will crash
HEIGHT_LEFT_WINDOW = 416 #416 full screen height, 352 help window at bottom

AUTO_CALC_SPACE_SIZE = true #true = automaticly calculate optimum space size
#between each stat
SPACE = 32 # manually set the space size, 32 : default

FONT_NAME = 'Monotype Corsiva' #Arial = default
FONT_SIZE = 22 #font size : 24 default
NEW_STAT_SYMBOL = '→'
REMOVE_ITEM_TEXT = '[Remove]'
end

class Window_EquipLeft < Window_Base
# --------------------------------
attr_accessor :mode
attr_accessor :changes
# --------------------------------
def initialize(actor)
super(0, 64, 272, Adv_Equip_Mod::HEIGHT_LEFT_WINDOW)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = Adv_Equip_Mod::FONT_NAME
self.contents.font.size = Adv_Equip_Mod::FONT_SIZE
self.z += 100
@actor = actor
@mode = 0
@changes = [0, 0, 0, 0, 0, 0, 0, 0]
@elem_text = ""
@stat_text = ""
refresh
end
# --------------------------------
def calculate_space_size(height_window)
#this automaticly calculates the optimum size of spaces between each stats
borders = 32
number_of_lines = 12
if Adv_Equip_Mod::DRAW_EVA then number_of_lines += 1 end
space_size = (height_window - borders) / number_of_lines
return space_size
end

def refresh
self.contents.clear
symbol = Adv_Equip_Mod::NEW_STAT_SYMBOL
if Adv_Equip_Mod::AUTO_CALC_SPACE_SIZE
space = self.calculate_space_size(self.height) #space size is calculated
else
space = Adv_Equip_Mod::SPACE #space size as manually specified
end
extra = 0
draw_actor_name(@actor, 4, 0)
draw_actor_level(@actor, 180, 0)
draw_actor_parameter(@actor, 4, space, 0)
draw_actor_parameter(@actor, 4, space*2, 1)
draw_actor_parameter(@actor, 4, space*3, 2)

if Adv_Equip_Mod::DRAW_EVA
draw_actor_parameter(@actor, 4, space*4, 7)
extra = 1 #makes extra space for evasion to fit
end
draw_actor_parameter(@actor, 4, space*(4+extra), 3)
draw_actor_parameter(@actor, 4, space*(5+extra), 4)
draw_actor_parameter(@actor, 4, space*(6+extra), 5)
draw_actor_parameter(@actor, 4, space*(7+extra), 6)
if @mode == 0
self.contents.draw_text(4, space*(8+extra), 200, 32, "Elemental Attack:")
self.contents.draw_text(4, space*(10+extra), 200, 32, "Status Attack:")
end
if @mode == 1
self.contents.draw_text(4, space*(8+extra), 200, 32, "Elemental Defense:")
self.contents.draw_text(4, space*(10+extra), 200, 32, "Status Defense:")
end
self.contents.draw_text(12, space*(9+extra), 260, 32, @elem_text)
self.contents.draw_text(12, space*(11+extra), 260, 32, @stat_text)
if @new_atk != nil
self.contents.font.color = system_color
self.contents.draw_text(160, space, 40, 32, symbol, 1)
if @changes[0] == 0
self.contents.font.color = normal_color
elsif @changes[0] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(200, space, 36, 32, @new_atk.to_s, 2)
end
if @new_pdef != nil
self.contents.font.color = system_color
self.contents.draw_text(160, space*2, 40, 32, symbol, 1)
if @changes[1] == 0
self.contents.font.color = normal_color
elsif @changes[1] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(200, space*2, 36, 32, @new_pdef.to_s, 2)
end
if @new_mdef != nil
self.contents.font.color = system_color
self.contents.draw_text(160, space*3, 40, 32, symbol, 1)
if @changes[2] == 0
self.contents.font.color = normal_color
elsif @changes[2] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(200, space*3, 36, 32, @new_mdef.to_s, 2)
end
if @new_eva != nil and Adv_Equip_Mod::DRAW_EVA # if drawing evasion
self.contents.font.color = system_color
self.contents.draw_text(160, space*4, 40, 32, symbol, 1)
if @changes[7] == 0
self.contents.font.color = normal_color
elsif @changes[7] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(200, space*4, 36, 32, @new_eva.to_s, 2)
end
if @new_str != nil
self.contents.font.color = system_color
self.contents.draw_text(160, space*(4+extra), 40, 32, symbol, 1)
if @changes[3] == 0
self.contents.font.color = normal_color
elsif @changes[3] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(200, space*(4+extra), 36, 32, @new_str.to_s, 2)
end
if @new_dex != nil
self.contents.font.color = system_color
self.contents.draw_text(160, space*(5+extra), 40, 32, symbol, 1)
if @changes[4] == 0
self.contents.font.color = normal_color
elsif @changes[4] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(200, space*(5+extra), 36, 32, @new_dex.to_s, 2)
end
if @new_agi != nil
self.contents.font.color = system_color
self.contents.draw_text(160, space*(6+extra), 40, 32,symbol , 1)
if @changes[5] == 0
self.contents.font.color = normal_color
elsif @changes[5] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(200, space*(6+extra), 36, 32, @new_agi.to_s, 2)
end
if @new_int != nil
self.contents.font.color = system_color
self.contents.draw_text(160, space*(7+extra), 40, 32, symbol, 1)
if @changes[6] == 0
self.contents.font.color = normal_color
elsif @changes[6] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(200, space*(7+extra), 36, 32, @new_int.to_s, 2)
end
end
# --------------------------------
def set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex,
new_agi, new_int, new_eva, elem_text, stat_text)
flag = false
if new_atk != @new_atk || new_pdef != @new_pdef || new_mdef != @new_mdef
flag = true
end
if new_str != @new_str || new_dex != @new_dex || new_agi != @new_agi
flag = true
end
if new_eva != @new_eva || elem_text != @elem_text || stat_text != @stat_text
flag = true
end
@new_atk = new_atk
@new_pdef = new_pdef
@new_mdef = new_mdef
@new_str = new_str
@new_dex = new_dex
@new_agi = new_agi
@new_int = new_int
@new_eva = new_eva
@elem_text = elem_text
@stat_text = stat_text
if flag
refresh
end
end
end




class Window_EquipItem < Window_Selectable
# --------------------------------
def initialize(actor, equip_type)
super(272, 256, 368, 224)
@actor = actor
@equip_type = equip_type
@column_max = 1
refresh
self.active = false
self.index = -1
end
# --------------------------------
def item
return @data[self.index]
end
# --------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
if @equip_type == 0
weapon_set = $data_classes[@actor.class_id].weapon_set
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
@data.push($data_weapons[i])
end
end
end
if @equip_type != 0
armor_set = $data_classes[@actor.class_id].armor_set
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0 and armor_set.include?(i)
if $data_armors[i].kind == @equip_type-1
@data.push($data_armors[i])
end
end
end
end
@data.push(nil)
@item_max = @data.size
self.contents = Bitmap.new(width - 32, row_max * 32)
self.contents.font.name = Adv_Equip_Mod::FONT_NAME
self.contents.font.size = 24
for i in 0...@item_max-1
draw_item(i)
end
i = @item_max-1
x = 4 + i % @column_max * (288 + 32)
y = i / @column_max * 32

self.contents.draw_text(x+4, y, 100, 32, Adv_Equip_Mod::REMOVE_ITEM_TEXT )
end
# --------------------------------
def draw_item(index)
item = @data[index]
x = 4
y = index * 32
case item
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.font.color = normal_color
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 288, y, 16, 32, ":", 1)
self.contents.draw_text(x + 304, y, 24, 32, number.to_s, 2)
end

end

class Window_Base < Window

# --------------------------------
def up_color
return Color.new(74, 210, 74)
end

def down_color
return Color.new(170, 170, 170)
end
end


class Scene_Equip
# --------------------------------
def refresh
@item_window1.visible = (@right_window.index == 0)
@item_window2.visible = (@right_window.index == 1)
@item_window3.visible = (@right_window.index == 2)
@item_window4.visible = (@right_window.index == 3)
@item_window5.visible = (@right_window.index == 4)
item1 = @right_window.item
case @right_window.index
when 0
@item_window = @item_window1
newmode = 0
when 1
@item_window = @item_window2
newmode = 1
when 2
@item_window = @item_window3
newmode = 1
when 3
@item_window = @item_window4
newmode = 1
when 4
@item_window = @item_window5
newmode = 1
else
newmode = 1
end
if newmode != @left_window.mode
@left_window.mode = newmode
@left_window.refresh
end
if @right_window.active
@left_window.set_new_parameters(nil, nil, nil, nil, nil, nil, nil, nil,
"", "")
end
if @item_window.active
item2 = @item_window.item
last_hp = @actor.hp
last_sp = @actor.sp
old_atk = @actor.atk
old_pdef = @actor.pdef
old_mdef = @actor.mdef
old_str = @actor.str
old_dex = @actor.dex
old_agi = @actor.agi
old_int = @actor.int
old_eva = @actor.eva
@actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
new_atk = @actor.atk
new_pdef = @actor.pdef
new_mdef = @actor.mdef
new_str = @actor.str
new_dex = @actor.dex
new_agi = @actor.agi
new_int = @actor.int
new_eva = @actor.eva
@left_window.changes = [0, 0, 0, 0, 0, 0, 0, 0]
if new_atk > old_atk
@left_window.changes[0] = 1
end
if new_atk < old_atk
@left_window.changes[0] = -1
end
if new_pdef > old_pdef
@left_window.changes[1] = 1
end
if new_pdef < old_pdef
@left_window.changes[1] = -1
end
if new_mdef > old_mdef
@left_window.changes[2] = 1
end
if new_mdef < old_mdef
@left_window.changes[2] = -1
end
if new_str > old_str
@left_window.changes[3] = 1
end
if new_str < old_str
@left_window.changes[3] = -1
end
if new_dex > old_dex
@left_window.changes[4] = 1
end
if new_dex < old_dex
@left_window.changes[4] = -1
end
if new_agi > old_agi
@left_window.changes[5] = 1
end
if new_agi < old_agi
@left_window.changes[5] = -1
end
if new_int > old_int
@left_window.changes[6] = 1
end
if new_int < old_int
@left_window.changes[6] = -1
end
if new_eva > old_eva
@left_window.changes[7] = 1
end
if new_eva < old_eva
@left_window.changes[7] = -1
end
elem_text = make_elem_text(item2)
stat_text = make_stat_text(item2)
@actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
@actor.hp = last_hp
@actor.sp = last_sp
@left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_str,
new_dex, new_agi, new_int, new_eva, elem_text, stat_text)
end
end

def make_elem_text(item)
text = ""
flag = false
if item.is_a?(RPG::Weapon)
for i in item.element_set
if flag
text += ", "
end
text += $data_system.elements[i]
flag = true
end
end
if item.is_a?(RPG::Armor)
for i in item.guard_element_set
if flag
text += ", "
end
text += $data_system.elements[i]
flag = true
end
end
return text
end
# --------------------------------
def make_stat_text(item)
text = ""
flag = false
if item.is_a?(RPG::Weapon)
for i in item.plus_state_set
if flag
text += ", "
end
text += $data_states[i].name
flag = true
end
end
if item.is_a?(RPG::Armor)
for i in item.guard_state_set
if flag
text += ", "
end
text += $data_states[i].name
flag = true
end
end
return text
end

end


**장비확장 스크립트와 사용시 정상적인 작동은 보장할 수 없습니다.(Guillaume777씨의 장비확장 스크립트와 같이 쓰는 경우 이 스크립트를 장비확장 스크립트 위에 넣어주면 문제없습니다만, 그 외 다른 장비확장 스크립트 사이의 호환성은 보장 못함)

Who's 백호

?

이상혁입니다.

http://elab.kr


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6203
41 오디오 WhiteFlute - AudioEX (XP/VX/VXA) file Alkaid 2012.12.26 1257
40 메뉴 L's Simple Custom Menu #1 R2 (SDK 2.x 필요) Alkaid 2013.01.18 1229
39 저장 Woratana's Neo Save System for RMXP by LiTTleDRAgo 5 Alkaid 2013.01.19 1399
38 이동 및 탈것 RMVX dash for RMXP by PK8 2 Alkaid 2013.01.22 1196
37 기타 appletree님 요청) 화면 명암 주기 3 file 뮤바보 2013.01.31 2727
36 메시지 WhiteFlute 멀티메시지 스크립트 (XP/VX/VXA) 4 Alkaid 2013.02.05 2268
35 저장 Law's Custom Save System by The Law G14 & Night Runner 1 file Alkaid 2013.02.18 1076
34 메시지 Universal Message System 1.8.0 by ccoa 번역 4 file PerrS 2013.04.06 1739
33 키입력 No F1, F12 and Alt+Return (Kein F1, F12 und Alt+Eingabe) by cremno 습작 2013.04.19 995
32 기타 Localization by ForeverZer0, KK20 습작 2013.04.26 738
31 키입력 Key Simulator by Fantasist 4 습작 2013.05.01 1145
30 기타 Resolution Changer Ultimate by Zeus81 7 file 습작 2013.05.05 1167
29 기타 Project RGSS3 by joe5491 6 습작 2013.05.06 1970
28 전투 SRPGコンバータⅡ by AD.Bank 1 습작 2013.05.13 1774
27 메시지 Etude87_Item_Choice_XP ver.1.10 13 file 습작 2013.05.19 2187
26 메시지 FontZ by DerVVulfman Alkaid 2013.07.19 1102
25 전투 The Lycan ABS by DerVVulfman Alkaid 2013.07.22 1898
24 기타 RPG 만들기 XP의 숨겨진 모듈/클래스 재정의 스크립트 모음 1 Alkaid 2013.08.31 1913
23 전투 전투배경확장 스크립트 3 file 아미상 2013.09.15 2770
22 키입력 [xp,vx]마우스 제스쳐 스크립트 2 클로시스 2013.09.26 2297
Board Pagination Prev 1 ... 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 Next
/ 52