A fourth column in MOG Scene Item Laura V1.2 - Noctis - 11-22-2016
Hello, I need help with MOG Scene Item Laura V1.2 .
The script is Moghunters Item menu, it allows to have a custom Item menu with pictures. Problem is, that the script only makes 3 catagories for Items/gears/ and weapons.
I want a additional fourth catagory called miscellaneous where different nonusuable items should be listed.
It should be defineable by the script to define what item is listed miscellaneous or not.
Like for example: MogMiscellaneous_Items = [51, 55, 98]
The numbers are the id from the item database.
So, basically I need someone to edit the MOG Scene Item Laura in way where it is possible to have 4 catagories instead of 3.
Heres the script:
Code: #_______________________________________________________________________________
# MOG Scene Item Laura V1.2
#_______________________________________________________________________________
# By Moghunter
# http://www.atelier-rgss.com
#_______________________________________________________________________________
module MOG
#Transition Time.
MNIT = 20
#Transition Type(Name).
MNITT = "007-Line01"
end
$mogscript = {} if $mogscript == nil
$mogscript["menu_laura"] = true
###############
# Window_Base #
###############
class Window_Base < Window
def nada
face = RPG::Cache.picture("")
end
def drw1_face(actor,x,y)
face = RPG::Cache.picture(actor.name + "_iii") rescue nada
cw = face.width
ch = face.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, face, src_rect)
end
def draw_maphp3(actor, x, y)
back = RPG::Cache.picture("BAR0")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, back, src_rect)
meter = RPG::Cache.picture("HP_Bar")
cw = meter.width * actor.hp / actor.maxhp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, meter, src_rect)
text = RPG::Cache.picture("HP_Tx")
cw = text.width
ch = text.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 35, y - ch + 30, text, src_rect)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 81, y - 1, 48, 32, actor.hp.to_s, 2)
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 80, y - 2, 48, 32, actor.hp.to_s, 2)
end
def draw_mapsp3(actor, x, y)
back = RPG::Cache.picture("BAR0")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, back, src_rect)
meter = RPG::Cache.picture("SP_Bar")
cw = meter.width * actor.sp / actor.maxsp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, meter, src_rect)
text = RPG::Cache.picture("SP_Tx")
cw = text.width
ch = text.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 35, y - ch + 30, text, src_rect)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 81, y - 1, 48, 32, actor.sp.to_s, 2)
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 80, y - 2, 48, 32, actor.sp.to_s, 2)
end
def draw_mexp_it(actor, x, y)
lv_tx = RPG::Cache.picture("LV_tx")
cw = lv_tx.width
ch = lv_tx.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 60 , y - ch + 32, lv_tx, src_rect)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 101, y + 5, 24, 32, actor.level.to_s, 1)
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 100, y + 4, 24, 32, actor.level.to_s, 1)
end
def draw_actor_state_it(actor, x, y, width = 80)
text = make_battler_state_text(actor, width, true)
self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
self.contents.draw_text(x, y, width, 32, text,1)
end
end
######################
# Window_Target_Item #
######################
class Window_Target_Item < Window_Selectable
def initialize
super(0, 130, 280, 300)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Tahoma"
self.contents.font.size = 14
self.z += 10
@item_max = $game_party.actors.size
refresh
end
def refresh
self.contents.clear
for i in 0...$game_party.actors.size
x = 4
y = i * 65
actor = $game_party.actors[i]
drw1_face(actor,x,y + 55)
if $mogscript["TP_System"] == true
draw_actor_tp(actor, x + 168, y + 27 ,4)
else
draw_mexp_it(actor, x + 110, y + 25 )
end
draw_actor_state_it(actor, x + 165, y )
draw_maphp3(actor, x + 20, y + 0)
draw_mapsp3(actor, x + 20, y + 32)
end
end
def update_cursor_rect
if @index <= -2
self.cursor_rect.set(0, (@index + 10) * 65, self.width - 32, 60)
elsif @index == -1
self.cursor_rect.set(0, 0, self.width - 32, @item_max * 64 )
else
self.cursor_rect.set(0, @index * 65, self.width - 32, 60)
end
end
end
############
# Type_Sel #
############
class Type_Sel < Window_Base
attr_reader :index
attr_reader :help_window
def initialize(x, y, width, height)
super(x, y, width, height)
@item_max = 1
@column_max = 1
@index = -1
end
def index=(index)
@index = index
end
def row_max
return (@item_max + @column_max - 1) / @column_max
end
def top_row
return self.oy / 32
end
def top_row=(row)
if row < 0
row = 0
end
if row > row_max - 1
row = row_max - 1
end
self.oy = row * 32
end
def page_row_max
return (self.height - 32) / 32
end
def page_item_max
return page_row_max * @column_max
end
def update
super
if self.active and @item_max > 0 and @index >= 0
if Input.repeat?(Input::RIGHT)
if (@column_max == 1 and Input.trigger?(Input::RIGHT)) or
@index < @item_max - @column_max
$game_system.se_play($data_system.cursor_se)
@index = (@index + @column_max) % @item_max
end
end
if Input.repeat?(Input::LEFT)
if (@column_max == 1 and Input.trigger?(Input::LEFT)) or
@index >= @column_max
$game_system.se_play($data_system.cursor_se)
@index = (@index - @column_max + @item_max) % @item_max
end
end
end
end
end
###############
# Window_Type #
###############
class Window_Type < Type_Sel
def initialize
super(0, 0, 0, 0)
@item_max = 3
self.index = 0
end
end
##################
# Window_Item_Ex #
##################
class Window_Item_Ex < Window_Selectable
def initialize
super(250, 50, 295, 350)
@column_max = 1
refresh
self.index = 0
if $game_temp.in_battle
self.y = 64
self.height = 256
self.back_opacity = 160
end
end
def item
return @data[self.index]
end
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 1...$data_items.size
if $game_party.item_number(i) > 0
@data.push($data_items[i])
end
end
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
def draw_item(index)
item = @data[index]
case item
when RPG::Item
number = $game_party.item_number(item.id)
end
if item.is_a?(RPG::Item) and
$game_party.item_can_use?(item.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 4 + index % 1 * (288 + 32)
y = index / 1 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.font.name = "Tahoma"
self.contents.font.size = 14
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 190, 32, item.name, 0)
self.contents.draw_text(x + 215, y, 16, 32, ":", 1)
self.contents.draw_text(x + 230, y, 24, 32, number.to_s, 2)
end
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
#################
# Window_Weapon #
#################
class Window_Weapon < Window_Selectable
def initialize
super(250, 50, 295, 350)
@column_max = 1
refresh
self.index = 0
if $game_temp.in_battle
self.y = 64
self.height = 256
self.back_opacity = 160
end
end
def item
return @data[self.index]
end
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0
@data.push($data_weapons[i])
end
end
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
def draw_item(index)
item = @data[index]
case item
when RPG::Weapon
number = $game_party.weapon_number(item.id)
end
if item.is_a?(RPG::Item) and
$game_party.item_can_use?(item.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 4 + index % 1 * (288 + 32)
y = index / 1 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.font.name = "Tahoma"
self.contents.font.size = 14
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 190, 32, item.name, 0)
self.contents.draw_text(x + 215, y, 16, 32, ":", 1)
self.contents.draw_text(x + 230, y, 24, 32, number.to_s, 2)
end
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
################
# Window_Armor #
################
class Window_Armor < Window_Selectable
def initialize
super(250, 50, 295, 350)
@column_max = 1
refresh
self.index = 0
if $game_temp.in_battle
self.y = 64
self.height = 256
self.back_opacity = 160
end
end
def item
return @data[self.index]
end
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0
@data.push($data_armors[i])
end
end
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
def draw_item(index)
item = @data[index]
case item
when RPG::Armor
number = $game_party.armor_number(item.id)
end
if item.is_a?(RPG::Item) and
$game_party.item_can_use?(item.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 4 + index % 1 * (288 + 32)
y = index / 1 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.font.name = "Tahoma"
self.contents.font.size = 14
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 190, 32, item.name, 0)
self.contents.draw_text(x + 215, y, 16, 32, ":", 1)
self.contents.draw_text(x + 230, y, 24, 32, number.to_s, 2)
end
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
##############
# Scene_Item #
##############
class Scene_Item
def main
@back = Sprite.new
@back.bitmap = RPG::Cache.picture("ItemBackgroundMenu01")
@back.z = 100
@item_lay = Sprite.new
@item_lay.bitmap = RPG::Cache.picture("Item_lay")
@item_lay.z = 100
@item_com = Sprite.new
@item_com.bitmap = RPG::Cache.picture("Item_com01")
@item_com.z = 100
@type = Window_Type.new
@type.opacity = 0
@type.visible = false
@help_window = Window_Help.new
@help_window.y = 405
@item_window = Window_Item_Ex.new
@item_window.help_window = @help_window
@item_window.visible = true
@item_window.active = true
@weapon_window = Window_Weapon.new
@weapon_window.help_window = @help_window
@weapon_window.visible = false
@weapon_window.active = true
@armor_window = Window_Armor.new
@armor_window.help_window = @help_window
@armor_window.visible = false
@armor_window.active = true
@target_window = Window_Target_Item.new
@target_window.x = -270
@target_window.active = false
@help_window.opacity = 0
@help_window.x = -200
@help_window.contents_opacity = 0
@item_window.opacity = 0
@weapon_window.opacity = 0
@armor_window.opacity = 0
@target_window.opacity = 0
@weapon_window.x = 640
@armor_window.x = 640
@item_window.x = 640
@weapon_window.contents_opacity = 0
@armor_window.contents_opacity = 0
@item_window.contents_opacity = 0
Graphics.transition(MOG::MNIT, "Graphics/Transitions/" + MOG::MNITT)
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
for i in 0..30
@weapon_window.x += 20
@armor_window.x += 20
@item_window.x += 20
@weapon_window.contents_opacity -= 15
@armor_window.contents_opacity -= 15
@item_window.contents_opacity -= 15
@item_lay.zoom_x += 0.2
@item_lay.opacity -= 15
@item_com.zoom_y += 0.2
@item_com.opacity -= 15
@target_window.x -= 15
@help_window.contents_opacity -= 15
#@back.ox += 1
Graphics.update
end
Graphics.freeze
@help_window.dispose
@item_window.dispose
@weapon_window.dispose
@armor_window.dispose
@target_window.dispose
@item_lay.dispose
@back.dispose
@item_com.dispose
@type.dispose
end
def update
if @target_window.active == true
@target_window.visible = true
if @target_window.x < 0
@target_window.x += 20
elsif @target_window.x >= 0
@target_window.x = 0
end
else
if @target_window.x > -300
@target_window.x -= 20
elsif @target_window.x >= -300
@target_window.x = -270
@target_window.visible = false
end
end
if @help_window.x < 0
@help_window.x += 10
@help_window.contents_opacity += 15
elsif @help_window.x >= 0
@help_window.x = 0
@help_window.contents_opacity = 255
end
if @item_window.x > 269
@weapon_window.x -= 20
@armor_window.x -= 20
@item_window.x -= 20
@weapon_window.contents_opacity += 15
@armor_window.contents_opacity += 15
@item_window.contents_opacity += 15
elsif @item_window.x <= 269
@weapon_window.x = 269
@armor_window.x = 269
@item_window.x = 269
@weapon_window.contents_opacity = 250
@armor_window.contents_opacity = 250
@item_window.contents_opacity = 250
end
if @target_window.active == false
if Input.trigger?(Input::RIGHT) or Input.trigger?(Input::LEFT) or
Input.press?(Input::RIGHT) or Input.press?(Input::LEFT)
@weapon_window.x = 640
@armor_window.x = 640
@item_window.x = 640
@weapon_window.contents_opacity = 0
@armor_window.contents_opacity = 0
@item_window.contents_opacity = 0
end
if Input.trigger?(Input.dir4) or Input.trigger?(Input.dir4) or
Input.trigger?(Input::L) or Input.trigger?(Input::R)
@help_window.x = -200
@help_window.contents_opacity = 0
end
end
#@back.ox += 1
@help_window.update
@item_window.update
@weapon_window.update
@armor_window.update
@target_window.update
@type.update
case @type.index
when 0
@item_com.bitmap = RPG::Cache.picture("Item_com01")
if @target_window.active == true
update_target
@item_window.active = false
@type.active = false
return
else
@item_window.active = true
@type.active = true
end
@weapon_window.active = false
@armor_window.active = false
@item_window.visible = true
@weapon_window.visible = false
@armor_window.visible = false
when 1
@item_com.bitmap = RPG::Cache.picture("Item_com02")
@item_window.active = false
@weapon_window.active = true
@armor_window.active = false
@item_window.visible = false
@weapon_window.visible = true
@armor_window.visible = false
when 2
@item_com.bitmap = RPG::Cache.picture("Item_com03")
@item_window.active = false
@weapon_window.active = false
@armor_window.active = true
@item_window.visible = false
@weapon_window.visible = false
@armor_window.visible = true
end
if @item_window.active
update_item
return
end
if @weapon_window.active
update_weapon
return
end
if @armor_window.active
update_armor
return
end
end
def update_weapon
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(0)
return
end
end
def update_armor
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(0)
return
end
end
def update_item
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(0)
return
end
if Input.trigger?(Input::C)
@item = @item_window.item
unless @item.is_a?(RPG::Item)
$game_system.se_play($data_system.buzzer_se)
return
end
unless $game_party.item_can_use?(@item.id)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
if @item.scope >= 3
@item_window.active = false
@target_window.x = (@item_window.index + 1) % 1 * 304
@target_window.active = true
@target_window.x = -350
if @item.scope == 4 || @item.scope == 6
@target_window.index = -1
else
@target_window.index = 0
end
else
if @item.common_event_id > 0
$game_temp.common_event_id = @item.common_event_id
$game_system.se_play(@item.menu_se)
if @item.consumable
$game_party.lose_item(@item.id, 1)
@item_window.draw_item(@item_window.index)
end
$scene = Scene_Map.new
return
end
end
return
end
end
def update_target
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
unless $game_party.item_can_use?(@item.id)
@item_window.refresh
end
@item_window.active = true
@target_window.active = false
return
end
if Input.trigger?(Input::C)
if $game_party.item_number(@item.id) == 0
$game_system.se_play($data_system.buzzer_se)
return
end
if @target_window.index == -1
used = false
for i in $game_party.actors
used |= i.item_effect(@item)
end
end
if @target_window.index >= 0
target = $game_party.actors[@target_window.index]
used = target.item_effect(@item)
end
if used
$game_system.se_play(@item.menu_se)
if @item.consumable
$game_party.lose_item(@item.id, 1)
@item_window.draw_item(@item_window.index)
end
@target_window.refresh
if $game_party.all_dead?
$scene = Scene_Gameover.new
return
end
if @item.common_event_id > 0
$game_temp.common_event_id = @item.common_event_id
$scene = Scene_Map.new
return
end
end
unless used
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
end
RE: A fourth column in MOG Scene Item Laura V1.2 - DerVVulfman - 11-22-2016
Hrm... not the revised one I made, eh?
Well.... it's not the cleanest code, but drop this below your item script:
Code: #==============================================================================
# Extra ITEM for MOG_Scene_Item V1.3 by Moghunter
# http://www.atelier-rgss.com
#==============================================================================
# Patch by DerVVulfman
#
# NOTE: Requires the end user to rework their "Item_com" graphics to allow
# for a 4th category, the 'Special' item type. The format is:
# Item_com01.png ... To have 4 items, the 1st window "Item" highlighted
# Item_com02.png ... To have 4 items, the 2nd window "Weapon" highlighted
# Item_com03.png ... To have 4 items, the 3rd window "Armor" highlighted
# Item_com04.png ... To have 4 items, the 4th window "Special" highlighted
#
# Special Items are items not visible in the normal Item bag, but are loca-
# ted in the 4th category in the item window. ONLY within the 4th window
# will these items be found.
#
# To define special items, place the IDs of these items within the
# SpecialSelect array inside the MOG module.
#
#
#
#==============================================================================
module MOG
SpecialSelect = [1,2,3] # List if items in the special/4th window
end
#==============================================================================
# ** Window_Item_Ex
#------------------------------------------------------------------------------
# This window displays items in possession on the item and battle screens.
# A total rewrite, so any other script using Window_Item is NOT compatible.
#==============================================================================
class Window_Item_Ex < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(special=false)
super(250, 50, 295, 350)
@column_max = 1
@special = special
refresh
self.index = 0
return unless $game_temp.in_battle
self.y = 64
self.height = 256
self.back_opacity = 160
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
# Clear Window Contents / Area
if self.contents != nil
self.contents.dispose
self.contents = nil
end
# Erase Data
@data = []
# Sort through Items
for i in 1...$data_items.size
# And add only if party holds
if $game_party.item_number(i) > 0
# If special data, push only special IDs
if @special == true
@data.push($data_items[i]) if MOG::SpecialSelect.include?(i)
# Otherwise, only push IDs that aren't special
else
@data.push($data_items[i]) unless MOG::SpecialSelect.include?(i)
end
end
end
# Clear Contents
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
case item
when RPG::Item
number = $game_party.item_number(item.id)
end
if item.is_a?(RPG::Item) and
$game_party.item_can_use?(item.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 4 + index % 1 * (288 + 32)
y = index / 1 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.font.name = "Georgia"
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 190, 32, item.name, 0)
self.contents.draw_text(x + 215, y, 16, 32, ":", 1)
self.contents.draw_text(x + 230, y, 24, 32, number.to_s, 2)
end
end
class Window_Type < Type_Sel
def initialize
super(0, 0, 0, 0)
@item_max = 4
self.index = 0
end
end
#==============================================================================
# ** Scene_Item
#------------------------------------------------------------------------------
# This class performs item screen processing.
#==============================================================================
class Scene_Item
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Set the background and overlay images
@back = Plane.new
@back.bitmap = RPG::Cache.picture("MN_BK")
@back.z = 100
@item_lay = Sprite.new
@item_lay.bitmap = RPG::Cache.picture("Item_lay")
@item_lay.z = 100
# Set the initial TYPE graphic
@item_com = Sprite.new
@item_com.bitmap = RPG::Cache.picture("Item_com01")
@item_com.z = 100
# Create the invisible TYPE window (used for item type selection)
@type = Window_Type.new
@type.opacity = 0
@type.visible = false
# Set the help window
@help_window = Window_Help.new
@help_window.y = 405
# Item Window
@item_window = Window_Item_Ex.new
@item_window.help_window = @help_window
@item_window.visible = true
@item_window.active = true
# Weapon Window
@weapon_window = Window_Weapon.new
@weapon_window.help_window = @help_window
@weapon_window.visible = false
@weapon_window.active = true
# Armor Window
@armor_window = Window_Armor.new
@armor_window.help_window = @help_window
@armor_window.visible = false
@armor_window.active = true
# Extra Item Window
@item2_window = Window_Item_Ex.new(true)
@item2_window.help_window = @help_window
@item2_window.visible = false
@item2_window.active = true
# Target Window
@target_window = Window_Target_Item.new
@target_window.x = -300
@target_window.active = false
# Help Window
@help_window.opacity = 0
@help_window.x = -200
@help_window.contents_opacity = 0
# Set Window Opacities
@item_window.opacity = 0
@weapon_window.opacity = 0
@armor_window.opacity = 0
@item2_window.opacity = 0
@target_window.opacity = 0
# Sex Window Positions
@weapon_window.x = 640
@armor_window.x = 640
@item_window.x = 640
@item2_window.x = 640
# Set Window Contents Opacities
@weapon_window.contents_opacity = 0
@armor_window.contents_opacity = 0
@item_window.contents_opacity = 0
@item2_window.contents_opacity = 0
# Execute transition
Graphics.transition(MOG::MNIT, "Graphics/Transitions/" + MOG::MNITT)
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
break if $scene != self
end
# Cycle through windows and hide
for i in 0..10
# Scroll the windows
@weapon_window.x += 25
@armor_window.x += 25
@item_window.x += 25
@item2_window.x += 25
# Lower window opacities
@weapon_window.contents_opacity -= 25
@armor_window.contents_opacity -= 25
@item_window.contents_opacity -= 25
@item2_window.contents_opacity -= 25
# Change item hud display
@item_lay.zoom_x += 0.2
@item_lay.opacity -= 25
@item_com.zoom_y += 0.2
@item_com.opacity -= 25
@target_window.x -= 25
@help_window.contents_opacity -= 25
@back.ox += 2
# Update game screen
Graphics.update
end
# Prepare for transition
Graphics.freeze
# Dispose of windows
@help_window.dispose
@item_window.dispose
@item2_window.dispose
@weapon_window.dispose
@armor_window.dispose
@target_window.dispose
@item_lay.dispose
@back.dispose
@item_com.dispose
@type.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Scroll out the target window
if @target_window.active == true
@target_window.visible = true
if @target_window.x < 0
@target_window.x += 30
elsif @target_window.x >= 0
@target_window.x = 0
end
else
if @target_window.x > -300
@target_window.x -= 30
elsif @target_window.x >= -300
@target_window.x = -300
@target_window.visible = false
end
end
# Scroll the help window
if @help_window.x < 0
@help_window.x += 15
@help_window.contents_opacity += 20
elsif @help_window.x >= 0
@help_window.x = 0
@help_window.contents_opacity = 255
end
# Scroll the window types
if @item_window.x > 250
@weapon_window.x -= 30
@armor_window.x -= 30
@item_window.x -= 30
@item2_window.x -= 30
@weapon_window.contents_opacity += 20
@armor_window.contents_opacity += 20
@item_window.contents_opacity += 20
@item2_window.contents_opacity += 20
elsif @item_window.x <= 250
@weapon_window.x = 250
@armor_window.x = 250
@item_window.x = 250
@item2_window.x = 250
@weapon_window.contents_opacity = 250
@armor_window.contents_opacity = 250
@item_window.contents_opacity = 250
@item2_window.contents_opacity = 250
end
# If no target window, allow type window control
if @target_window.active == false
if Input.trigger?(Input::RIGHT) or Input.trigger?(Input::LEFT) or
Input.press?(Input::RIGHT) or Input.press?(Input::LEFT)
@weapon_window.x = 640
@armor_window.x = 640
@item_window.x = 640
@item2_window.x = 640
@weapon_window.contents_opacity = 0
@armor_window.contents_opacity = 0
@item_window.contents_opacity = 0
@item2_window.contents_opacity = 0
end
if Input.trigger?(Input.dir4) or Input.trigger?(Input.dir4) or
Input.trigger?(Input::L) or Input.trigger?(Input::R)
@help_window.x = -200
@help_window.contents_opacity = 0
end
end
# Perform minor background animation (scroll the background 1px right)
@back.ox += 1
# Update the windows
@help_window.update
@item_window.update
@item2_window.update
@weapon_window.update
@armor_window.update
@target_window.update
@type.update
# Branch on window-type
case @type.index
when 0 # Normal ITEM window
@item_com.bitmap = RPG::Cache.picture("Item_com01")
if @target_window.active == true
update_target
@item_window.active = false
@type.active = false
return
else
@item_window.active = true
@type.active = true
end
@weapon_window.active = false
@armor_window.active = false
@item2_window.active = false
@item_window.visible = true
@weapon_window.visible = false
@armor_window.visible = false
@item2_window.visible = false
when 1 # New Weapon window
@item_com.bitmap = RPG::Cache.picture("Item_com02")
@item_window.active = false
@weapon_window.active = true
@armor_window.active = false
@item2_window.active = false
@item_window.visible = false
@weapon_window.visible = true
@armor_window.visible = false
@item2_window.visible = false
when 2 # New Armor window
@item_com.bitmap = RPG::Cache.picture("Item_com03")
@item_window.active = false
@weapon_window.active = false
@armor_window.active = true
@item2_window.active = false
@item_window.visible = false
@weapon_window.visible = false
@armor_window.visible = true
@item2_window.visible = false
when 3 # Extra Items window
@item_com.bitmap = RPG::Cache.picture("Item_com04")
if @target_window.active == true
update_target
@item2_window.active = false
@type.active = false
return
else
@item2_window.active = true
@type.active = true
end
@item_window.active = false
@weapon_window.active = false
@armor_window.active = false
@item_window.visible = false
@weapon_window.visible = false
@armor_window.visible = false
@item2_window.visible = true
end
# Update the appropriate window if active, and exit method
return update_item if @item_window.active
return update_weapon if @weapon_window.active
return update_armor if @armor_window.active
return update_item2 if @item2_window.active
end
#--------------------------------------------------------------------------
# * Frame Update (when special item window is active)
#--------------------------------------------------------------------------
def update_item2
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(0)
return
end
if Input.trigger?(Input::C)
@item = @item_window.item
unless @item.is_a?(RPG::Item)
$game_system.se_play($data_system.buzzer_se)
return
end
unless $game_party.item_can_use?(@item.id)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
if @item.scope >= 3
@item_window.active = false
@target_window.x = (@item_window.index + 1) % 1 * 304
@target_window.active = true
@target_window.x = -350
if @item.scope == 4 || @item.scope == 6
@target_window.index = -1
else
@target_window.index = 0
end
else
if @item.common_event_id > 0
$game_temp.common_event_id = @item.common_event_id
$game_system.se_play(@item.menu_se)
if @item.consumable
$game_party.lose_item(@item.id, 1)
@item_window.draw_item(@item_window.index)
end
$scene = Scene_Map.new
return
end
end
return
end
end
end
Remember, you now need to redo your graphics showing "ITEM / WEAPON / ARMOR" to now be "ITEM / WEAPON / ARMOR / MISC"
RE: A fourth column in MOG Scene Item Laura V1.2 - Noctis - 11-24-2016
Wow, that one was one of the fastest replies I've ever seen in my life. You've replied in less than 4 hours and created 400 line code in that time?
Thank you so much for the edit.
I forgot about the revised versions, can you give me the link and tell me what the difference was? I totally forgot.^^
I've a question. I forgot to tell you that I edited my Item menu a littile.
For example the @back.bitmap = RPG::Cache.picture("") in my code does NOT move, its a fixed image that is there. If I put your version however the image moves. Also the selection row in my edited version moved a little bit to the right side since I wanted it that way. But problem is that I forgot wich lines I edit to make it like that way, I also didint document it like I always do. I also have the feeling that the font in the first and fourth catagory is different from the rest.
Can you help me adjust the settings of your code to mine?
RE: A fourth column in MOG Scene Item Laura V1.2 - DerVVulfman - 11-24-2016
First... If you look at Moggy's code, he made a new Window_Item class. So other scripts that alter the behavior of items in the Item Menu wouldn't likely function. And, I made a more detailed MOG module that has more things you can config or change without needing to edit the rest of the script. Not that you may not need to tweak other things, right?
Insofar as where to find the Revised versions I uploaded, you can find a demo HERE. Technically, you could just do a search for Moghunter in the forum and you'd find that I have separate posts for the Item, Skill, Equip and File scripts too. But they all share the same demo. And the demo includes the revised versions AND the originals.
As far as changes, I 'could' look at your copy and see what changes you made. But take a look at the Revised ones first. Truthfully, a patch would be needed to give you a 4th slot for items even for the revised version.
RE: A fourth column in MOG Scene Item Laura V1.2 - Noctis - 11-24-2016
(11-24-2016, 01:20 AM)DerVVulfman Wrote: First... If you look at Moggy's code, he made a new Window_Item class. So other scripts that alter the behavior of items in the Item Menu wouldn't likely function. And, I made a more detailed MOG module that has more things you can config or change without needing to edit the rest of the script. Not that you may not need to tweak other things, right?
Insofar as where to find the Revised versions I uploaded, you can find a demo HERE. Technically, you could just do a search for Moghunter in the forum and you'd find that I have separate posts for the Item, Skill, Equip and File scripts too. But they all share the same demo. And the demo includes the revised versions AND the originals.
As far as changes, I 'could' look at your copy and see what changes you made. But take a look at the Revised ones first. Truthfully, a patch would be needed to give you a 4th slot for items even for the revised version.
I really dont want to make more trouble for you, Maybe Im going to use your revised version if you dont mind creating a 4fourth coloum for it. Because I know that you work on different things too.
Btw. I remembered how I fixed the image so that it doesnt move.
On line 461 i commented the line @back.ox += 1 out with a #. So the line needs to be:
Also on line 529 I changed the whole line to
But I forgot how to change the selection row so that it goes a little bit to the right.
I believe it is on line 505 -511 somewhere I changed:
Code: elsif @item_window.x <= 269
@weapon_window.x = 269
@armor_window.x = 269
@item_window.x = 269
@weapon_window.contents_opacity = 250
@armor_window.contents_opacity = 250
@item_window.contents_opacity = 250
RE: A fourth column in MOG Scene Item Laura V1.2 - DerVVulfman - 11-24-2016
Yeaaah... My revised version of the Item menu used "ITEM_FX" to set the background's scrolling option. Set it to 1 to make the background still, or 2 to make it invisible so the map shows from underneath.
First, give the revised one a shot and see how you like it first. Then hit me up here
RE: A fourth column in MOG Scene Item Laura V1.2 - Noctis - 11-24-2016
I find the revised version better. And I would replace it with mine. That's for definite. but when I use it I got a black font for the items color.
RE: A fourth column in MOG Scene Item Laura V1.2 - DerVVulfman - 11-24-2016
Enjoy reading the configurable sections. The ITEM_FONT_COLOR value sets the RGB color of your item fonts. Currently set to (0,0,0), it's giving a black color. And that is specific for your Item menu. Each menu has its own set to work with.
So I guess it's a go-ahead then on the 4th column?
RE: A fourth column in MOG Scene Item Laura V1.2 - Noctis - 11-25-2016
(11-24-2016, 07:16 PM)DerVVulfman Wrote: Enjoy reading the configurable sections. The ITEM_FONT_COLOR value sets the RGB color of your item fonts. Currently set to (0,0,0), it's giving a black color. And that is specific for your Item menu. Each menu has its own set to work with.
So I guess it's a go-ahead then on the 4th column?
You're right, I'm sorry. I always mistake 255 255 255 for white and 0 0 0 for black. My bad.
Well, yes. But do it only if you have time and if it doesnt bother you. I know that you also work on another issues like a dancing script or what ever.
Thanks.
RE: A fourth column in MOG Scene Item Laura V1.2 - DerVVulfman - 11-25-2016
Well, it's still a bit sloppy by my standard, but here's a patch for the revised version of Scene Item Laura V1.2 - Revised version.
Sloppy by my standard as I left his inner mechanics untouched. I should have broken the menus into smaller modules so other scripters could more easily write new code and patches.
Code: #==============================================================================
# Extra ITEM for MOG_Scene_Item Revised
# an edit of MOG_Scene_Item V1.3 by Moghunter
# http://www.atelier-rgss.com
#==============================================================================
# Patch by DerVVulfman
#
# NOTE: Requires the end user to rework their "Item_com" graphics to allow
# for a 4th category, the 'Special' item type. The format is:
# Item_com01.png ... To have 4 items, the 1st window "Item" highlighted
# Item_com02.png ... To have 4 items, the 2nd window "Weapon" highlighted
# Item_com03.png ... To have 4 items, the 3rd window "Armor" highlighted
# Item_com04.png ... To have 4 items, the 4th window "Special" highlighted
#
# Special Items are items not visible in the normal Item bag, but are loca-
# ted in the 4th category in the item window. ONLY within the 4th window
# will these items be found.
#
# To define special items, place the IDs of these items within the
# SpecialSelect array inside the MOG module.
#
# Setting the name of the new 4th slot graphic is also within the
# MOG module
#
#==============================================================================
module MOG
# BASIC MENU CONFIGURATION
# Item Menu Graphics Used
ITEM_TYPE_4 = "Item_com02" # Selection graphic (Secondary Item)
# ITEM Values
# The list of Items
SpecialSelect = [1,2,3] # List if items by Item ID
end
#==============================================================================
# ** Window_Type
#------------------------------------------------------------------------------
# A hidden window used to switch between the 4 item groups in the menu.
#==============================================================================
class Window_Type < Type_Sel
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 0, 0)
@item_max = 4
self.index = 0
end
end
#==============================================================================
# ** Window_Item
#------------------------------------------------------------------------------
# This window displays items in possession on the item and battle screens.
#==============================================================================
class Window_Item < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias scene_laura_extraslot_init initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(special=false)
# Add a new value into the item window
@special = special
# The original call
scene_laura_extraslot_init
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 1...$data_items.size
if $game_party.item_number(i) > 0
# If special data, push only special IDs
if @special == true
@data.push($data_items[i]) if MOG::SpecialSelect.include?(i)
# Otherwise, only push IDs that aren't special
else
@data.push($data_items[i]) unless MOG::SpecialSelect.include?(i)
end
end
end
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
end
#==============================================================================
# ** Scene_Item
#------------------------------------------------------------------------------
# This class performs item screen processing.
#==============================================================================
class Scene_Item
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
unless MOG::ITEM_FX == 2
@back = Plane.new
@back.bitmap = RPG::Cache.picture(MOG::ITEM_BACKGROUND)
@back.z = 100
else
@spriteset = Spriteset_Map.new
end
@item_lay = Sprite.new
@item_lay.bitmap = RPG::Cache.picture(MOG::ITEM_LAYOUT)
@item_lay.z = 100
@item_com = Sprite.new
@item_com.bitmap = RPG::Cache.picture(MOG::ITEM_TYPE_1)
@item_com.z = 100
@type = Window_Type.new
@type.opacity = 0
@type.visible = false
@help_window = Window_Help.new
@help_window.y = 405
@item_window = Window_Item.new
@item_window.help_window = @help_window
@item_window.visible = true
@item_window.active = true
@weapon_window = Window_Weapon.new
@weapon_window.help_window = @help_window
@weapon_window.visible = false
@weapon_window.active = true
@armor_window = Window_Armor.new
@armor_window.help_window = @help_window
@armor_window.visible = false
@armor_window.active = true
@item2_window = Window_Item.new(true)
@item2_window.help_window = @help_window
@item2_window.visible = false
@item2_window.active = true
@target_window = Window_Target_Item.new
@target_window.x = -300
@target_window.active = false
@help_window.opacity = 0
@help_window.x = -200
@help_window.contents_opacity = 0
@item_window.opacity = 0
@item2_window.opacity = 0
@weapon_window.opacity = 0
@armor_window.opacity = 0
@target_window.opacity = 0
@weapon_window.x = 640
@armor_window.x = 640
@item2_window.x = 640
@item_window.x = 640
@weapon_window.contents_opacity = 0
@armor_window.contents_opacity = 0
@item2_window.contents_opacity = 0
@item_window.contents_opacity = 0
unless MOG::ITEM_FX == 2
Graphics.transition(MOG::ITEM_TRAN_TIME, "Graphics/Transitions/" +
MOG::ITEM_TRAN_TYPE)
else
Graphics.transition
end
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
for i in 0..30
@weapon_window.x += 20
@armor_window.x += 20
@item2_window.x += 20
@item_window.x += 20
@weapon_window.contents_opacity -= 15
@armor_window.contents_opacity -= 15
@item2_window.contents_opacity -= 15
@item_window.contents_opacity -= 15
@item_com.opacity -= 15
@item_lay.opacity -= 15
@help_window.contents_opacity -= 15
@item_lay.zoom_x += 0.2
@item_com.zoom_y += 0.2
@target_window.x -= 15
@back.ox += 1 if MOG::ITEM_FX == 0
Graphics.update
end
Graphics.freeze
@help_window.dispose
@item_window.dispose
@item2_window.dispose
@weapon_window.dispose
@armor_window.dispose
@target_window.dispose
@item_lay.dispose
@back.dispose if MOG::ITEM_FX == 0
@back.dispose if MOG::ITEM_FX == 1
@spriteset.dispose if MOG::ITEM_FX == 2
@item_com.dispose
@type.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
if @target_window.active == true
@target_window.visible = true
if @target_window.x < 0
@target_window.x += 20
elsif @target_window.x >= 0
@target_window.x = 0
end
else
if @target_window.x > -300
@target_window.x -= 20
elsif @target_window.x >= -300
@target_window.x = -300
@target_window.visible = false
end
end
if @help_window.x < 0
@help_window.x += 10
@help_window.contents_opacity += 15
elsif @help_window.x >= 0
@help_window.x = 0
@help_window.contents_opacity = 255
end
if @item_window.x > 250
@weapon_window.x -= 20
@armor_window.x -= 20
@item2_window.x -= 20
@item_window.x -= 20
@weapon_window.contents_opacity += 15
@armor_window.contents_opacity += 15
@item2_window.contents_opacity += 15
@item_window.contents_opacity += 15
elsif @item_window.x <= 250
@weapon_window.x = 250
@armor_window.x = 250
@item2_window.x = 250
@item_window.x = 250
@weapon_window.contents_opacity = 250
@armor_window.contents_opacity = 250
@item2_window.contents_opacity = 250
@item_window.contents_opacity = 250
end
if @target_window.active == false
if Input.trigger?(Input::RIGHT) or Input.trigger?(Input::LEFT) or
Input.press?(Input::RIGHT) or Input.press?(Input::LEFT)
@weapon_window.x = 640
@armor_window.x = 640
@item2_window.x = 640
@item_window.x = 640
@weapon_window.contents_opacity = 0
@armor_window.contents_opacity = 0
@item2_window.contents_opacity = 0
@item_window.contents_opacity = 0
end
if Input.trigger?(Input.dir4) or Input.trigger?(Input.dir4) or
Input.trigger?(Input::L) or Input.trigger?(Input::R)
@help_window.x = -200
@help_window.contents_opacity = 0
end
end
@back.ox += 1 if MOG::ITEM_FX == 0
@help_window.update
@item_window.update
@item2_window.update
@weapon_window.update
@armor_window.update
@target_window.update
@type.update
case @type.index
when 0
@item_com.bitmap = RPG::Cache.picture(MOG::ITEM_TYPE_1)
if @target_window.active == true
update_target
@item_window.active = false
@type.active = false
return
else
@item_window.active = true
@type.active = true
end
@item2_window.active = false
@weapon_window.active = false
@armor_window.active = false
@item_window.visible = true
@item2_window.visible = false
@weapon_window.visible = false
@armor_window.visible = false
when 1
@item_com.bitmap = RPG::Cache.picture(MOG::ITEM_TYPE_2)
@item_window.active = false
@item2_window.active = false
@weapon_window.active = true
@armor_window.active = false
@item_window.visible = false
@item2_window.visible = false
@weapon_window.visible = true
@armor_window.visible = false
when 2
@item_com.bitmap = RPG::Cache.picture(MOG::ITEM_TYPE_3)
@item_window.active = false
@item2_window.active = false
@weapon_window.active = false
@armor_window.active = true
@item_window.visible = false
@item2_window.visible = false
@weapon_window.visible = false
@armor_window.visible = true
when 3
@item_com.bitmap = RPG::Cache.picture(MOG::ITEM_TYPE_4)
if @target_window.active == true
update_target
@item2_window.active = false
@type.active = false
return
else
@item2_window.active = true
@type.active = true
end
@item_window.active = false
@weapon_window.active = false
@armor_window.active = false
@item2_window.visible = true
@item_window.visible = false
@weapon_window.visible = false
@armor_window.visible = false
end
return update_item if @item_window.active
return update_weapon if @weapon_window.active
return update_armor if @armor_window.active
return update_item2 if @item2_window.active
end
#--------------------------------------------------------------------------
# * Frame Update (when item window is active)
#--------------------------------------------------------------------------
def update_item2
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(0)
return
end
if Input.trigger?(Input::C)
@item = @item_window.item
unless @item.is_a?(RPG::Item)
$game_system.se_play($data_system.buzzer_se)
return
end
unless $game_party.item_can_use?(@item.id)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
if @item.scope >= 3
@item_window.active = false
@target_window.x = (@item_window.index + 1) % 1 * 304
@target_window.active = true
@target_window.x = -350
if @item.scope == 4 || @item.scope == 6
@target_window.index = -1
else
@target_window.index = 0
end
else
if @item.common_event_id > 0
$game_temp.common_event_id = @item.common_event_id
$game_system.se_play(@item.menu_se)
if @item.consumable
$game_party.lose_item(@item.id, 1)
@item_window.draw_item(@item_window.index)
end
$scene = Scene_Map.new
return
end
end
return
end
end
end
Oh... it is 'purist' in that it assumes the windows will slide into the default position as the original script. For your change, look to lines 249 to 266 which YOU can edit. Ya had it going fine yourself. I'm just leaving it 'pure' so to speak.
|