Select Key Item ACE
by Kyonides
Introduction
This script has only one mission: to display the Select Key Item window with style!
Please read the embedded comments to learn how to use it properly.
Code:
# * Select Key Item ACE * #
# Scripter : Kyonides Arkanthes
# 2024-03-22
# Display your Key Items on screen with style!
# Don't forget to add some key items to your party's bag before calling
# the Select Item event command or this script might laugh at you! :O
# You might only need to configure 5 CONSTANTS, yes in ALL_CAPS.
# Yet, this script can run just like any plug & play code available out there.
class Window_KeyItem
# [Red, Green, Blue, Alpha]
MAIN_COLOR = [0, 0, 0, 160]
EDGE_COLOR = [0, 0, 0, 0]
WINDOW_WIDTH = (Graphics.width - 40) / 2
POS_Y = Graphics.height / 2 - 24
NO_ITEM_FOUND = "No key items? Really?"
def initialize(message_window)
@message_window = message_window
@cw = WINDOW_WIDTH - 24
super(WINDOW_WIDTH / 2, 0, WINDOW_WIDTH, 72)
self.openness = 0
create_back_bitmap
create_back_sprite
self.back_opacity = 0
self.opacity = 0
deactivate
set_handler(:ok, method(:on_ok))
set_handler(:cancel, method(:on_cancel))
end
def create_back_bitmap
@back_bitmap = Bitmap.new(@cw, 28)
rect1 = Rect.new(0, 0, width, 12)
rect2 = Rect.new(0, 12, width, height - 24)
rect3 = Rect.new(0, height - 12, width, 12)
@back_bitmap.gradient_fill_rect(rect1, back_color2, back_color1, true)
@back_bitmap.fill_rect(rect2, back_color1)
@back_bitmap.gradient_fill_rect(rect3, back_color1, back_color2, true)
end
def create_back_sprite
@back_sprite = Sprite.new
@back_sprite.bitmap = @back_bitmap
@back_sprite.visible = false
@back_sprite.x = self.x + 12
@back_sprite.z = self.z - 1
end
def back_color1
Color.new(*MAIN_COLOR)
end
def back_color2
Color.new(*EDGE_COLOR)
end
def start
self.category = :key_item
update_placement
select(0)
open
@back_sprite.visible = true
activate
end
def make_item_list
@data = $game_party.all_items.select {|item| include?(item) }
@icon_ox = @cw / 2 - item_max * 14
end
def update_placement
self.y = POS_Y
@back_sprite.y = self.y + 34
end
def select(new_index)
self.index = new_index
draw_this_item
end
def item_max
@data.size
end
def create_contents
contents.dispose
self.contents = Bitmap.new(@cw, 48)
end
def draw_this_item
contents.clear_rect(0, 24, @cw, 24)
item = @data[@index]
item ? draw_item_found(item) : draw_no_item
end
def draw_item_found(item)
rect = Rect.new(0, 24, @cw - 4, 24)
draw_item_name(item)
draw_item_number(rect, item)
end
def draw_item(n)
icon_pos = @data[n].icon_index
draw_icon(icon_pos, @icon_ox + n * 28, 0, true)
end
def draw_item_name(item)
change_color(normal_color, true)
draw_text(4, 24, @cw - 32, line_height, item.name)
end
def draw_item_number(rect, item)
draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
end
def draw_no_item
draw_text(4, 24, @cw - 32, line_height, NO_ITEM_FOUND)
end
def hide_backdrop
@back_sprite.visible = false
end
def this_rect
Rect.new(@icon_ox + @index * 28, 0, 24, 24)
end
def update_cursor
if @index < 0
cursor_rect.empty
return
end
cursor_rect.set(this_rect)
end
def process_ok
if current_item_enabled?
Sound.play_ok
Input.update
call_ok_handler
else
Sound.play_buzzer
call_cancel_handler
end
deactivate
end
def dispose
super
@back_bitmap.dispose
@back_sprite.dispose
end
end
class Window_Message
def input_item
@item_window.start
Fiber.yield while @item_window.active
@item_window.hide_backdrop
end
end
Screenshots
2 Snapshots
Terms & Conditions
Free for ANY game.
Due credit is mandatory.
Mention this forum in your game credits.
That's it!
"For God has not destined us for wrath, but for obtaining salvation through our Lord Jesus Christ," 1 Thessalonians 5:9
Maranatha!
The Internet might be either your friend or enemy. It just depends on whether or not she has a bad hair day.
My Original Stories (available in English and Spanish)
List of Compiled Binary Executables I have published...
HiddenChest & Roole
Give me a free copy of your completed game if you include at least 3 of my scripts!
Just some scripts I've already published on the board...
KyoGemBoost XP VX & ACE, RandomEnkounters XP, KSkillShop XP, Kolloseum States XP, KEvents XP, KScenario XP & Gosu, KyoPrizeShop XP Mangostan, Kuests XP, KyoDiscounts XP VX, ACE & MV, KChest XP VX & ACE 2016, KTelePort XP, KSkillMax XP & VX & ACE, Gem Roulette XP VX & VX Ace, KRespawnPoint XP, VX & VX Ace, GiveAway XP VX & ACE, Klearance XP VX & ACE, KUnits XP VX, ACE & Gosu 2017, KLevel XP, KRumors XP & ACE, KMonsterPals XP VX & ACE, KStatsRefill XP VX & ACE, KLotto XP VX & ACE, KItemDesc XP & VX, KPocket XP & VX, OpenChest XP VX & ACE
Maranatha!
The Internet might be either your friend or enemy. It just depends on whether or not she has a bad hair day.
My Original Stories (available in English and Spanish)
List of Compiled Binary Executables I have published...
HiddenChest & Roole
Give me a free copy of your completed game if you include at least 3 of my scripts!
Just some scripts I've already published on the board...
KyoGemBoost XP VX & ACE, RandomEnkounters XP, KSkillShop XP, Kolloseum States XP, KEvents XP, KScenario XP & Gosu, KyoPrizeShop XP Mangostan, Kuests XP, KyoDiscounts XP VX, ACE & MV, KChest XP VX & ACE 2016, KTelePort XP, KSkillMax XP & VX & ACE, Gem Roulette XP VX & VX Ace, KRespawnPoint XP, VX & VX Ace, GiveAway XP VX & ACE, Klearance XP VX & ACE, KUnits XP VX, ACE & Gosu 2017, KLevel XP, KRumors XP & ACE, KMonsterPals XP VX & ACE, KStatsRefill XP VX & ACE, KLotto XP VX & ACE, KItemDesc XP & VX, KPocket XP & VX, OpenChest XP VX & ACE