Categorized Items Menu
Version: 1.3
Author: albertfish
Date: October 22, 2009
Version History
- Version 1.3: October 22, 2009
- Fixed a bug that did not display weapons in the weapon category - Version 1.2: October 4, 2009
- Fixed a bug that did not allow you to remove the all items category - Version 1.1: September 13, 2009
- The variable for recent items is no longer global
- Some code removed
- Changed it so when you are in items window and you hit escape it goes back to the category window.
- You can also select a category with enter now. - Version 1.0: September 13, 2009: Initial release.
- Initial release
Planned Future Versions
- No planned future versions at this point. However, if you have a suggestion on what to add it could be added to a future version.
Description
This is a complete redesign of the default items menu that aims to make it a lot easier to search through your items. This script sorts items into categories for better organization.
Features
- Includes 10 different categories to sort items
- Easy to set up items to be sorted
- Easy to customize appearance
- Easy to customize which categories are active
- Extremely customizeable which allows you to set it up the way you want it set up
Customizable Features
- Choose what categories you want
- Choose if you want the top window to be 1 or 2 windows
- Unselected categories translucent or opaque
- Categories cursor on or off
- All items category position
- All category titles and icons
- Category title alignment
- Help window icon size. It can be double sized, normal size or off.
Screenshots
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg6.imageshack.us%2Fimg6%2F8721%2Fafcimss1.png&hash=364333652d0510bc88bc1297f3653cde794e0181)
Easy to choose which categories you want!
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg5.imageshack.us%2Fimg5%2F8000%2Fafcimss2.png&hash=f4d248f90eebf9b15bd2d372d3b2bc94749eea86)
Instructions
Item Setup Instructions:
This script sorts items automatically based on certain aspects of the
item. To set up items to be sorted into correct categories follow this
guide.
Consumable Items - Must have Consumable flag set to yes
- Must have Occasion flag set to anything other than
never.
Weapons - All items in Weapons tab in the database
Equipment - All items in the Weapons and Armors tab
Body Equipment - Must be under Armors tab
- Kind must be Body Armor
Head Equipment - Must be under Armors tab
- Kind must be Helmet
Arm Equipment - Must be under Armors tab
- Kind must be Shield
Accessory - Must be under Armors tab
- Kind must be Accessory
Raw Materials - Must be consumable
- Must have occasion of never
Story Items - Must be non consumable
All Items - All of the above
Install Instructions:
Place this script above the main script and below the default scripts.
Script
Please see the attached script or the demo!
Credit
Thanks
- IAMFORTE for the idea
- modern algebra for helping me shorten the code and get rid of a global variable
- MarkDarkness for informing me about a bug in the script
- blademan for informing me about a bug in the script
Support
If you need to contact me you can send me a pm.
Known Compatibility Issues
Incompatible with some other items menu scripts. No real compatibility issues found yet.
Demo
Warning! The following demo is of an older version. Please download the newer script until a new demo is posted.
There is a demo available! Download it here! (http://www.megaupload.com/?d=J4J8UADM)
Author's Notes
If you discover any bugs, please pm me or post the bug here! Thanks.
Enjoy :).
Restrictions
You may use this in your game commercial or non-commercial as long as proper credit is given.[/list]
That is really quite a nice interface. Great work, albertfish!
Some tips on making your scripts a little shorter and more compatible though;
I noticed that you added a $recent_items global variable:
#==============================================================================
# ** Scene_Load
#------------------------------------------------------------------------------
# This class performs load screen processing.
#==============================================================================
class Scene_Load < Scene_File
#--------------------------------------------------------------------------
# * Read Save Data
# file : file object for reading (opened)
#--------------------------------------------------------------------------
def read_save_data(file)
# Read character data for drawing save file
characters = Marshal.load(file)
# Read frame count for measuring play time
Graphics.frame_count = Marshal.load(file)
# Read each type of game object
$game_system = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
$recent_items = Marshal.load(file)
# If magic number is different from when saving
# (if editing was added with editor)
if $game_system.magic_number != $data_system.magic_number
# Load map
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
# Refresh party members
$game_party.refresh
end
end
#==============================================================================
# ** Scene_Save
#------------------------------------------------------------------------------
# This class performs save screen processing.
#==============================================================================
class Scene_Save < Scene_File
#--------------------------------------------------------------------------
# * Write Save Data
# file : write file object (opened)
#--------------------------------------------------------------------------
def write_save_data(file)
# Make character data for drawing save file
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
# Write character data for drawing save file
Marshal.dump(characters, file)
# Wrire frame count for measuring play time
Marshal.dump(Graphics.frame_count, file)
# Increase save count by 1
$game_system.save_count += 1
# Save magic number
# (A random value will be written each time saving with editor)
$game_system.magic_number = $data_system.magic_number
# Write each type of game object
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
Marshal.dump($recent_items, file)
end
end
with aliasing (http://rmrk.net/index.php/topic,25550.0.html) (which you've done a few times in the script, I notice), it could become a lot shorter and also work with any other scripts that modify those methods. As a short exercise, the above code could be condensed to:
#==============================================================================
# ** Scene_Load
#------------------------------------------------------------------------------
# This class performs load screen processing.
#==============================================================================
class Scene_Load < Scene_File
#--------------------------------------------------------------------------
# * Read Save Data
# file : file object for reading (opened)
#--------------------------------------------------------------------------
alias abfish_rd_save_rcntitms_9lj4 read_save_data
def read_save_data(file, *args)
abfish_rd_save_rcntitms_9lj4 (file, *args)
$recent_items = Marshal.load(file)
end
end
#==============================================================================
# ** Scene_Save
#------------------------------------------------------------------------------
# This class performs save screen processing.
#==============================================================================
class Scene_Save < Scene_File
#--------------------------------------------------------------------------
# * Write Save Data
# file : write file object (opened)
#--------------------------------------------------------------------------
alias albertfish_recent_items_wrtsave_0gb2 write_save_data
def write_save_data(file, *args)
albertfish_recent_items_wrtsave_0gb2 (file, *args)
Marshal.dump($recent_items, file)
end
end
But what would be even better would be to not use a separate global variable at all.
You could get rid of the Scene_Title, Scene_Save, and Scene_Load modifications altogether if you did something like this:
class Game_Party
attr_accessor :recent_items
alias albertfish_init_rcntitms_0hf2 initialize
def initialize (*args)
albertfish_init_rcntitms_0hf2 (*args)
@recent_items = []
end
end
You could then access the array through:
$game_party.recent_items
and it would completely bypass the need to create a new global variable to store that data.
Anyway, this script does look very nice. Again, great work!