XP 스크립트



#==============================================================================
# Item Inventory
#--------------------------------------------------------------------------
# Created By SephirothSpawn (12.02.05)
# Last Updated: 12.03.05
# Updated: Added Icons and Numbers to Windows
#==============================================================================

#==============================================================================
# ** Window_RefreshCommand
#==============================================================================
class Window_RefreshCommand < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# width : window width
# commands : command text string array
#--------------------------------------------------------------------------
def initialize(width, commands)
# Compute window height from command quantity
super(0, 0, width, commands.size * 32 + 32)
@item_max = commands.size
@commands = commands
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh(commands = @commands)
@commands = commands
@item_max = commands.size
if self.contents != nil
self.contents.dispose
self.contents = nil
end
self.contents = Bitmap.new(width - 32, @item_max * 32)
for i in 0...@item_max
draw_item(i, normal_color)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
# color : text color
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
item = @commands[index]
if item.is_a?(RPG::Item) || item.is_a?(RPG::Weapon) || item.is_a?(RPG::Armor)
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
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(4, 32 * index + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.draw_text(32, 32 * index, self.contents.width - 8, 32, item.name)
self.contents.draw_text(4, 32 * index, self.contents.width - 8, 32, number.to_s, 2)
else
self.contents.draw_text(0, 32 * index, self.contents.width - 8, 32, item, 1)
end
end
#--------------------------------------------------------------------------
# * Disable Item
# index : item number
#--------------------------------------------------------------------------
def disable_item(index)
draw_item(index, disabled_color)
end
end

#==============================================================================
# ** Game_Party
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :items
attr_accessor :weapons
attr_accessor :armors
attr_accessor :inventory_items
#--------------------------------------------------------------------------
# * Alias Initialization
#--------------------------------------------------------------------------
alias inventory_int initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
inventory_int
@inventory_items = []
end
#--------------------------------------------------------------------------
# * Move to Inventory
#--------------------------------------------------------------------------
def move_to_inventory(type, item_id)
case type
when 0
@inventory_items.push($data_items[item_id])
lose_item(item_id, 1)
when 1
@inventory_items.push($data_weapons[item_id])
lose_weapon(item_id, 1)
when 2
@inventory_items.push($data_armors[item_id])
lose_armor(item_id, 1)
end
update_inventory
end
#--------------------------------------------------------------------------
# * Remove from Inventory
#--------------------------------------------------------------------------
def remove_from_inventory(index)
item = @inventory_items[index]
@inventory_items.delete_at(index)
case item
when RPG::Item
gain_item(item.id, 1)
when RPG::Weapon
gain_weapon(item.id, 1)
when RPG::Armor
gain_armor(item.id, 1)
end
update_inventory
end
#--------------------------------------------------------------------------
# * Update Inventory
#--------------------------------------------------------------------------
def update_inventory
items, weapons, armors = [], [], []
for item in @inventory_items
case item
when RPG::Item
items.push(item)
when RPG::Weapon
weapons.push(item)
when RPG::Armor
armors.push(item)
end
end
items.sort! {|a, b| a.id<=>b.id}
weapons.sort! {|a, b| a.id<=>b.id}
armors.sort! {|a, b| a.id<=>b.id}
@inventory_items.clear
@inventory_items << items << weapons << armors
@inventory_items.flatten!
end
end

#==============================================================================
# ** Scene_Inventory_Items
#==============================================================================
class Scene_Inventory_Items
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Make sprite set
@spriteset = Spriteset_Map.new
# Help Window
@help_window = Window_Help.new
@help_window.set_text("Select Item to Transfer", 1)
@help_window.opacity = 175
# Items Window
@items_window = Window_RefreshCommand.new(272, get_item_commands)
@items_window.x, @items_window.y = 32, 80
@items_window.opacity = 175
@items_window.height = 384
# Inventory Window
@inventory_window = Window_RefreshCommand.new(272, get_inventory_commands)
@inventory_window.x, @inventory_window.y = 336, 80
@inventory_window.opacity = 175
@inventory_window.height = 384
@inventory_window.active = false
# Scene Objects
@objects = [@spriteset, @help_window, @items_window, @inventory_window]
@cmd_windows = [@items_window, @inventory_window]
# Transition run
Graphics.transition
# Main loop
while $scene == self
# Update game screen
Graphics.update
# Update input information
Input.update
# Updates Objects
@objects.each {|x| x.update unless x == @items_window || x == @inventory_window}
@cmd_windows.each {|x| x.update if x.active}
# Frame update
update
end
# Prepare for transition
Graphics.freeze
# Disposes Objects
@objects.each {|x| x.dispose}
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Updates Help Window
if @items_window.active
@help_window.set_text("Select Item to Transfer", 1)
else
@help_window.set_text("Select Item to Withdraw", 1)
end
# Return to Map
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
elsif Input.trigger?(Input::L) || Input.trigger?(Input::R) ||
Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT)
@items_window.active = @items_window.active ? false : true
@inventory_window.active = @inventory_window.active ? false : true
elsif Input.trigger?(Input::C)
if @items_window.active
item = @commands[@items_window.index]
if item == "Back"
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
else
$game_system.se_play($data_system.decision_se)
case item
when RPG::Item
type = 0
when RPG::Weapon
type = 1
else
type = 2
end
$game_party.move_to_inventory(type, item.id)
@items_window.refresh(get_item_commands)
@inventory_window.refresh(get_inventory_commands)
end
else
if @inventory_window.index == @inventory_size - 1
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
else
$game_party.remove_from_inventory(@inventory_window.index)
@items_window.refresh(get_item_commands)
@inventory_window.refresh(get_inventory_commands)
end
end
end
end
#--------------------------------------------------------------------------
# * Get Item Commands
#--------------------------------------------------------------------------
def get_item_commands
# Commands For Selecting
@commands = []
$game_party.items.each_key {|item| $game_party.items[item].times {@commands.push($data_items[item])}}
$game_party.weapons.each_key {|item| $game_party.weapons[item].times {@commands.push($data_weapons[item])}}
$game_party.armors.each_key {|item| $game_party.armors[item].times {@commands.push($data_armors[item])}}
@commands.push("Back")
return @commands
end
#--------------------------------------------------------------------------
# * Get Inventory Commands
#--------------------------------------------------------------------------
def get_inventory_commands
commands = []
$game_party.inventory_items.each {|item| commands.push(item)}
commands.push("Back")
@inventory_size = commands.size
return commands
end
end


사용법

$scene = Scene_Inventory_Items.new

출저:RMXP.net

Who's 백호

?

이상혁입니다.

http://elab.kr

Atachment
첨부 '1'

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6203
261 상점 Mog- 상점업그레이드 ps인간 2009.01.23 2684
260 메뉴 KGC스크립트모음 12 file 키라링 2009.01.18 2688
259 전투 간단 액알 스크립티!(2번째) 2 백호 2009.02.21 2696
258 메뉴 CoaMenuVer0.1 10 file 코아 코스튬 2010.09.25 2702
257 맵/타일 Map Extension - 맵상의 에어리어 설정, 탈것, 맵 루프 등 from RGSS Wiki 3 file 백호 2009.02.22 2709
256 메세지 분풀해 표시 스크립트 9 WMN 2008.03.17 2711
255 타이틀/게임오버 타이틀에 글씨 박기 . 11 WMN 2008.03.17 2721
254 장비 심플액션 수정본(장비드롭, 데미지표시) 원본:비밀소년 수정:kcss 10 file 백호 2009.02.21 2722
253 기타 appletree님 요청) 화면 명암 주기 3 file 뮤바보 2013.01.31 2727
252 타이틀/게임오버 타이틀 화면전 로고를 띄우는 스크립트 9 백호 2009.02.21 2728
251 기타 [KGC]HP&SP게이지 색다른것(글씨와 게이지가 안겹침) 10 file 백호 2009.02.21 2732
250 메뉴 Etude87_Horror_Menu_XP ver.1.1 15 file 습작 2012.08.04 2762
249 이동 및 탈것 이동속도[빈도]를 높히거나 낮추게할수있는 스크립트 5 - 하늘 - 2009.08.06 2764
248 전투 KGC_BonusGauge (보너스게이지) 3 file 백호 2009.02.22 2765
247 전투 [신기술 체험]액션배틀1탄 6 file 백호 2009.02.22 2767
246 전투 전투배경확장 스크립트 3 file 아미상 2013.09.15 2770
245 메뉴 메뉴화면 변경 스크립트 1 file 백호 2009.02.21 2772
244 액터 크리쳐 합체, 'SW_CreatureMix(for_rmxp)' by SiotWarrior 21 file 시옷전사 2010.09.11 2781
243 이름입력 RPG Advocate의 이름 입력 스크립트를 약간 손댄 것 Alkaid 2012.01.28 2784
242 상태/속성 [■ Window_ShopStatus] 상점에서 캐릭터의 상세정보를 보여주는 스크립트 15 file 제로스S2 2009.08.06 2815
Board Pagination Prev 1 ... 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 ... 52 Next
/ 52