11-22-2016, 05:16 PM
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:
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