Item Age Sorting Script
Item Age Sorting ScriptNinjaChicle
Introduction
This script pushes the most recent obtained item to the first index in the item list.
Features
- Works with weapons and armors too.
- Compatibility with Hime's Instance Items script
How to Use
Paste script below Materials and start a new save in your game.
Script
Code:
#------------------------------------------------------------------------------#
# - Item Age Sorting Script - by NinjaChicle
#
# This script pushes the most recent obtained item to
# the first index in the item list.
#
# v1.1 - Fixed issue where item disappeared after being used in the menu while
# the item number was still above 0.
# v1.2 - Fixed Hime's Instance Items compatibility
#------------------------------------------------------------------------------#
module Sort_em_all
SORT_ITEMS = true
SORT_WEAPONS = true
SORT_ARMORS= true
end
# Turn to false if you don't want a type of item to be sorted.
# For the sorting to take effect, obtain an item in your game.
#
# Doesn't work well on save files that existed before using this script.
module DataManager
class << self
alias :itemtastic_create_game_objects :create_game_objects
alias :itemtastic_make_save_contents :make_save_contents
alias :itemtastic_extract_save_contents :extract_save_contents
end
def self.create_game_objects
itemtastic_create_game_objects
$awesome_items = []
$awesome_weapons = []
$awesome_armors = []
end
def self.make_save_contents
contents = itemtastic_make_save_contents
contents[:sorted_items] = $awesome_items
contents[:sorted_weapons] = $awesome_weapons
contents[:sorted_armors]= $awesome_armors
contents
end
def self.extract_save_contents(contents)
itemtastic_extract_save_contents(contents)
$awesome_items = contents[:sorted_items] || []
$awesome_weapons = contents[:sorted_weapons] || []
$awesome_armors = contents[:sorted_armors] || []
end
end
class Game_Party < Game_Unit
alias sortastic_gain_item gain_item
def gain_item(item, amount, include_equip = false)
sortastic_gain_item(item, amount, include_equip)
if item.is_a?(RPG::Item) && Sort_em_all::SORT_ITEMS == true
$awesome_items ||= []
$awesome_items = $game_party.all_items.select {|item| item.is_a?(RPG::Item) } if $awesome_items == []
if $imported["TH_InstanceItems"] && !instance_enabled?(item) || !$imported["TH_InstanceItems"]
$awesome_items.delete(item) if $awesome_items.include?(item)
$awesome_items.unshift(item) unless $game_party.item_number(item) < 1
end
elsif item.is_a?(RPG::Weapon) && Sort_em_all::SORT_WEAPONS == true
$awesome_weapons ||= []
$awesome_weapons = $game_party.all_items.select {|item| item.is_a?(RPG::Weapon) } if $awesome_weapons == []
if $imported["TH_InstanceItems"] && !instance_enabled?(item) || !$imported["TH_InstanceItems"]
$awesome_weapons.delete(item) if $awesome_weapons.include?(item)
$awesome_weapons.unshift(item) unless $game_party.item_number(item) < 1
end
elsif item.is_a?(RPG::Armor) && Sort_em_all::SORT_ARMORS == true
$awesome_armors ||= []
$awesome_armors = $game_party.all_items.select {|item| item.is_a?(RPG::Armor) } if $awesome_armors == []
if $imported["TH_InstanceItems"] && !instance_enabled?(item) || !$imported["TH_InstanceItems"]
$awesome_armors.delete(item) if $awesome_armors.include?(item)
$awesome_armors.unshift(item) unless $game_party.item_number(item) < 1
end
end
end
#-------------------------------------------------------------------------------#
# Instance Items compatibility
#-------------------------------------------------------------------------------#
if $imported["TH_InstanceItems"]
alias you_gotta_add_instance add_instance_item
def add_instance_item(item)
you_gotta_add_instance(item)
awesome_stuff = get_awesome_item(item)
awesome_stuff ||= []
awesome_stuff = select_awesome_item(item) if awesome_stuff == []
awesome_stuff.delete(item) if awesome_stuff.include?(item)
awesome_stuff.unshift(item)
set_awesome_item(awesome_stuff)
end
alias you_gotta_lose_instance lose_instance_item
def lose_instance_item(item)
you_gotta_lose_instance(item)
awesome_stuff = get_awesome_item(item)
awesome_stuff ||= []
awesome_stuff = select_awesome_item(item) if awesome_stuff == []
awesome_stuff.delete(item) if awesome_stuff.include?(item)
set_awesome_item(awesome_stuff)
end
def lose_template_item(item, include_equip)
container_list = item_container_list(item)
item_lost = container_list.find {|obj| obj.template_id == item.template_id }
if item_lost
container = item_container(item.class)
container ||= 0
container -= 1
container_list.delete(item_lost)
elsif include_equip
discard_members_template_equip(item, 1)
end
awesome_stuff = get_awesome_item(item_lost)
awesome_stuff ||= []
awesome_stuff = select_awesome_item(item_lost) if awesome_stuff == []
awesome_stuff.delete(item_lost) if awesome_stuff.include?(item_lost)
set_awesome_item(awesome_stuff)
return item_lost
end
end
#-------------------------------------------------------------------------------#
# Instance Items compatibility
#-------------------------------------------------------------------------------#
def select_awesome_item(item)
return $awesome_weapons = $game_party.all_items.select {|item| item.is_a?(RPG::Weapon) } if item.is_a?(RPG::Weapon)
return $awesome_armors = $game_party.all_items.select {|item| item.is_a?(RPG::Armor) } if item.is_a?(RPG::Armor)
return $awesome_items = $game_party.all_items.select {|item| item.is_a?(RPG::Item) } if item.is_a?(RPG::Item)
end
def set_awesome_item(item)
return $awesome_weapons = item if item.is_a?(RPG::Weapon)
return $awesome_armors = item if item.is_a?(RPG::Armor)
return $awesome_items = item if item.is_a?(RPG::Item)
end
def get_awesome_item(item)
return $awesome_weapons if item.is_a?(RPG::Weapon)
return $awesome_armors if item.is_a?(RPG::Armor)
return $awesome_items if item.is_a?(RPG::Item)
end
end
class Window_ItemList < Window_Selectable
alias sortastic_make_item_list make_item_list
def make_item_list
sortastic_make_item_list
if SceneManager.scene_is?(Scene_Item)
if @data.is_a?(RPG::Weapon)
if Sort_em_all::SORT_WEAPONS == true
@data = $awesome_weapons.select {|item| include?(item) }
@data.push(nil) if include?(nil)
end
elsif @data.is_a?(RPG::Armor)
if Sort_em_all::SORT_ARMORS == true
@data = $awesome_armors.select {|item| include?(item) }
@data.push(nil) if include?(nil)
end
else
if Sort_em_all::SORT_ITEMS == true
@data = $awesome_items.select {|item| include?(item) }
@data.push(nil) if include?(nil)
end
end
end
end
end
本贴来自国际rpgmaker官方论坛作者:NinjaChicle处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/item-age-sorting-script.159669/
页:
[1]