じ☆ve冰风 发表于 2026-8-3 09:02:58

Item Age Sorting Script

Item Age Sorting Script
NinjaChicle​
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]
查看完整版本: Item Age Sorting Script