- JhonnNovo Membro
- Mensagens : 114
Reputação : 48
[RMVX] Menu de Itens por Categoria
Qui Jul 15, 2010 11:04 am
Menu de Itens
por Dark Chocobo
por Dark Chocobo
Introdução
Cria um menu de items mais complexo que o padrão dividido por categorias de items e com opções de descarte de items e organização.
Como usar
Abra o Editor de scripts, crie um novo script na seção de scripts Adicionais e cole o código abaixo.
Compatibilidade
Provavelmente entrará em conflito com outros scripts voltados às classes Window_Item e Scene_Item, ou seja, scripts que fazem o mesmo que este.
Script
- Código:
=begin
[ =================================================================== ]
[ =================================================================== ]
[ ============= ] script CRIADO POR: [ ============= ]
[ ============= ] [ ============= ]
[ ============= ] >>> Dark Chocobo [ ============= ]
[ ============= ] [ ============= ]
[ ============= ] [ ============= ]
[ ============= ] > Menu de Itens < [ ============= ]
[ ============= ] [ ============= ]
[ =================================================================== ]
[ ============ ] Mais scripts de Dark Chocobo em: [ ============ ]
[ ============ ] DarkChocoboscripts.4shared.com [ ============ ]
[ =================================================================== ]
[ =============== ] : Comunidade RPG Maker VX : [ =============== ]
[ ===== ] http://www.orkut.com/Community.aspx?cmm=40232098 [ ==== ]
[ =================================================================== ]
[ =================================================================== ]
Resumo:
- Cria um menu de items mais complexo dividido por categoria de items e
com opções de descarte de items e organisação.
Instruções:
- Você pode renomear as opções nas linhas 33 até 36.
- Você pode configurar a velocidade com que o menu transede entre o menu
de categorias e o de opções na linha 39.
=end
# Cria as configurações iniciais do script.
$DarkChocoboscripts = {} if $DarkChocoboscripts.nil?
$DarkChocoboscripts["Menu de Itens"] = {}
$DarkChocoboscripts["Menu de Itens"]["Categorias"] = []
$DarkChocoboscripts["Menu de Itens"]["Categorias"][0] = "Geral"
$DarkChocoboscripts["Menu de Itens"]["Categorias"][1] = "Raros"
$DarkChocoboscripts["Menu de Itens"]["Categorias"][2] = "Equipamentos"
$DarkChocoboscripts["Menu de Itens"]["Categorias"][3] = "Todos"
$DarkChocoboscripts["Menu de Itens"]["Speed"] = 2 # Velocidade de mudança de menu de categoria para menu de opções (1~5)
class DC_Menu_de_Itens_Check
def draw_item?(item, index)
return true unless $scene.is_a?(Scene_Item)
case index
when 0
return false unless item.is_a?(RPG::Item)
return item.consumable
when 1
return false unless item.is_a?(RPG::Item)
return item.price == 0
when 2
return true unless item.is_a?(RPG::Item)
return false
else
return true
end
end
end
$DarkChocoboscripts["Menu de Itens"]["Check"] = DC_Menu_de_Itens_Check.new
class Scene_Item < Scene_Base
def return_scene
@item_window.active = false
@item_window.index = -1
@command_window.active = true
end
alias dc_menu_de_itens_start start
def start
dc_menu_de_itens_start
@item_window.active = false
@command_window = Window_Command.new(544, ["Usar", "Descartar", "Organizar"], 3)
@command_window.active = false
@command_window.y = 112
@command_window.height = 0
@command_window.viewport = @viewport
@category_window = Window_Command.new(544, $DarkChocoboscripts["Menu de Itens"]["Categorias"], $DarkChocoboscripts["Menu de Itens"]["Categorias"].size)
@category_window.y = 56
@item_window.y += 56
@item_window.height -= 56
@item_window.index = -1
@item_window.refresh(@category_window.index)
end
alias dc_menu_de_itens_terminate terminate
def terminate
dc_menu_de_itens_terminate
@category_window.dispose
@command_window.dispose
end
alias dc_menu_de_itens_update update
def update
dc_menu_de_itens_update
refresh_item_window = @category_window.index
@category_window.update
@item_window.refresh(@category_window.index) if refresh_item_window != @category_window.index
@command_window.update
if @category_window.active
dc_update_category_selection
elsif @command_window.active
dc_update_command_selection
end
end
def update_item_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
@item = @item_window.item
if @item != nil
$game_party.last_item_id = @item.id
end
if @command_window.index == 0
if $game_party.item_can_use?(@item)
Sound.play_decision
determine_item
else
Sound.play_buzzer
end
elsif @command_window.index == 1
discart_item
end
end
end
def discart_item
if @item_window.item == nil
Sound.play_buzzer
return
end
$game_party.gain_item(@item_window.item, -1)
Audio.se_play("Audio/SE/Equip", 70, 100)
@item_window.refresh(@category_window.index)
end
def dc_update_category_selection
if Input.trigger?(Input::C)
Sound.play_decision
loop do
Graphics.update
@category_window.height -= $DarkChocoboscripts["Menu de Itens"]["Speed"]
@command_window.height += $DarkChocoboscripts["Menu de Itens"]["Speed"]
@command_window.y -= $DarkChocoboscripts["Menu de Itens"]["Speed"]
break if @command_window.height >= 56 or @category_window.height <= 0
end
@command_window.height = 56
@command_window.y = 56
@command_window.active = true
@category_window.height = 0
@category_window.active = false
elsif Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Menu.new(0)
end
end
def dc_update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
loop do
Graphics.update
@category_window.height += $DarkChocoboscripts["Menu de Itens"]["Speed"]
@command_window.height -= $DarkChocoboscripts["Menu de Itens"]["Speed"]
@command_window.y += $DarkChocoboscripts["Menu de Itens"]["Speed"]
break if @command_window.height <= 0 or @category_window.height >= 56
end
@command_window.height = 0
@command_window.y = 118
@command_window.active = false
@category_window.height = 56
@category_window.active = true
elsif Input.trigger?(Input::C)
Sound.play_decision
case @command_window.index
when 0, 1
@item_window.active = true
@item_window.index = 0
@command_window.active = false
when 2
$game_party.dc_sort_items
@item_window.refresh(@category_window.index)
end
end
end
end
class Window_Item < Window_Selectable
def refresh(index = nil)
@data = []
for item in $game_party.dc_item_order#items
unless $scene.is_a?(Scene_Item)
next unless include?(item)
@data.push(item)
next
end
if $DarkChocoboscripts["Menu de Itens"]["Check"].draw_item?(item, index)
@data.push(item)
end
if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id then self.index = @data.size - 1 end
end
@data.push(nil) if include?(nil)
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
end
class Game_Party < Game_Unit
alias dc_menu_de_itens_initialize initialize
def initialize
dc_menu_de_itens_initialize
@dc_item_order = []
end
def dc_item_order
return @dc_item_order
end
def gain_item(item, n, include_equip = false)
number = item_number(item)
case item
when RPG::Item
if @items[item.id] == 0 or @items[item.id] == nil then @dc_item_order.push(item) end
@items[item.id] = [[number + n, 0].max, 99].min
if @items[item.id] == 0 or @items[item.id] == nil then @dc_item_order.delete(item) end
when RPG::Weapon
if @weapons[item.id] == 0 or @weapons[item.id] == nil then @dc_item_order.push(item) end
@weapons[item.id] = [[number + n, 0].max, 99].min
if @weapons[item.id] == 0 or @weapons[item.id] == nil then @dc_item_order.delete(item) end
when RPG::Armor
if @armors[item.id] == 0 or @armors[item.id] == nil then @dc_item_order.push(item) end
@armors[item.id] = [[number + n, 0].max, 99].min
if @armors[item.id] == 0 or @armors[item.id] == nil then @dc_item_order.delete(item) end
end
n += number
if include_equip and n < 0
for actor in members
while n < 0 and actor.equips.include?(item)
actor.discard_equip(item)
n += 1
end
end
end
end
def dc_sort_items
@dc_item_order = items
end
end
Créditos e Agradecimentos
- Criado por Dark Chocobo
- Backup da antiga RMB restaurado por Jhonn
Permissões neste sub-fórum
Não podes responder a tópicos
|
|