Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
TsengTsuzaki

Simple CMS Edit (Scene_Item)

Recommended Posts

Ok so I am amidst development and I have thus far fix and or edited most of the things i needed to in the scripts im using. I am currently using a Moghunter Scene_Item addon.

Below is a copy of what is running so far.

 

 

#_______________________________________________________________________________
# MOG Scene Item Laura V1.2            
#_______________________________________________________________________________
# By Moghunter  
# http://www.atelier-rgss.com
#_______________________________________________________________________________
module MOG
#Transition Time.
MNIT = 20
#Transition Type(Name).
MNITT = "004-Blind04"  
end
$mogscript = {} if $mogscript == nil
$mogscript["menu_laura"] = true
###############
# Window_Base #
###############
class Window_Base < Window
def nada
face = RPG::Cache.picture("")
end    
def drw_face(actor,x,y)
face = RPG::Cache.picture(actor.name + "_fc") 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 = "Arial"
   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]
     drw_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 = "Arial"    
   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 = "Arial"    
   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 = "Arial"    
   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 = 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
   @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 = 415
   @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 = -300
   @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 = -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
   @item_window.x -= 20   
   @weapon_window.contents_opacity += 15
   @armor_window.contents_opacity += 15
   @item_window.contents_opacity += 15    
   elsif  @item_window.x <= 250
   @weapon_window.x = 250
   @armor_window.x = 250
   @item_window.x = 250   
   @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

 

 

Now What I want to do is when you switch between the -----> ITEM | WEAPON | ARMOR

Selections by clicking left and right, for a picture to show up. I want to picture be called based on the item name + (_pxt)

 

So what i mean is, lets say you open the item menu and a Potion is highlighted. I want RMXP to opena picture called (Potion_pxt) in my pictures folder.

Then if you switch to the weapon section by clicking right, and a Bronze Sword is now highlighted, I want it to show a picture called (Bronze Sword_pxt) in my pictures folder.

and the same for the armor section.

 

I will attach a link to the demo project for the mog script pack. It contains the pictures and such neccessary for the scene item.

 

So far I have tried adding lines under the different items windows like this:

@pxt = Sprite.new

@pxt.bitmap = RPG::Cache.picture((item.name) + "_pxt")

@pxt.x = 0

@pxt.y = 0

@pxt.z = 100

And the picture shows up but once one is loaded it wont refesh etc.

So i think i need a whole new window and I dont know how to do it.

So please, if you can help with this I would be most greatful and I will credit you in the game! thanks again!

 

LINK TO DEMO WITH WORKING MENU AND SCENE ITEM:

http://www.mediafire.com/?bw9gc4b81i9132n

 

THE BLUE AREA IS WHERE I WANT THE WINDOW TO BE EXACT SIZE DOESNT MATTER I CAN EDIT IT LATER:

itemscene.th.png

 

Uploaded with ImageShack.us

If anything is unclear let me know and I will explain it better.

Edited by TsengTsuzaki

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...