Cozziekuns' Status Screen

0 Members and 1 Guest are viewing this topic.

*****
Rep:
Level 84
This text is way too personal.
Bronze - GIAW 11 (Hard)Silver - GIAW Halloween
Cozziekuns' Status Screen
Version: 1.2
Author: cozziekuns
Date: May 3, 2010

Version History


  • <Version 1.2> 07.18.2011 - Updated with watermark viewing (press Shift).
  • <Version 1.1> 11.28.2010 - Updated with Paragraph Formatting
  • <Version 1.0> 05.03.2010 - Original Release

Planned Future Versions

  • None! Suggest some.

Description


A touched up version of the dull scene status. By the way, the watermarks that I used are Yggdra Union ones. They're probably definitely copyrighted, so if you're gonna make a commercial game or whatever, I don't recommend using them. They're crappy quality because I didn't spend much time photoshopping them.

You can find the Yggdra Union pictures attached to this post. I just used them because I had nothing better to use.

Features

  • Easily customizable.
  • A watermark at the back. The screenshot will probably explain it better.
  • A biography similar to the one in Yanfly's Scene Status Redux.
  • Icons! Everyone likes Icons...
  • A exp bar. I mean come on, this should be in every status screen.
  • Paragaph Formatting.

Screenshots



Instructions

See header. Make sure that you have MA's Paragraph Formatter, included in the demo.

Script


Code: [Select]
#===============================================================================
#
# Cozziekuns' Status Screen
# Last Date Updated: 11/28/2010
#
# A status screen. A nice looking one at that.
#
#===============================================================================
# Updates
# -----------------------------------------------------------------------------
# o 18/07/11 - Updated Script.
# o 11/28/10 - Started Script.
#===============================================================================
# What's to come?
# -----------------------------------------------------------------------------
# o I dunno. You tell me!
#===============================================================================
# Instructions
# -----------------------------------------------------------------------------
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ? Materials but above ? Main. Remember to save. You can
# edit the modules as you wish.
#
# The background images should be of size 544 * 416. When importing a background
# image, import it to the folder Graphics/Pictures. The name of the actor should
# be on the name of the file, followed by _bg.
#
# Example: Raven_bg
#===============================================================================

module COZZIEKUNS
 
  BACKGROUND_OPACITY = 100
 
  HP_ICON = 99
  MP_ICON = 100
  EXP_ICON = 98
  LEVEL_ICON = 62
  ATTACK_ICON = 26
  DEFENSE_ICON = 52
  SPIRIT_ICON = 20
  AGILITY_ICON = 49
 
  CLASS_ICONS ={
            0 => 0,
            1 => 16,
            2 => 32,
            3 => 21,
            4 => 8,
      }
   BIOGRAPHIES ={
      # Actor => Biography
            0 => "I like pie.",
            1 => "Our average hero who hails from a family that lives in poverty.",
            2 => "Our hero's best friend, but sometimes worst rival. Can be irrational at times.",
            3 => "Our 3rd hero, a magician with a nice personality, and has powerful skills to boot.",
            4 => "Our 4th hero, a thief shrouded in mystery. Not much is known about Sora, except she's damn pro.",
      }
end

#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
#  This is a superclass of all windows in the game.
#==============================================================================

class Window_Base < Window
  #--------------------------------------------------------------------------
  # * Get Exp Gauge Colour 1
  #--------------------------------------------------------------------------
  def exp_gauge_colour1
    return text_color(7)
  end
  #--------------------------------------------------------------------------
  # * Get Exp Gauge Colour 2
  #--------------------------------------------------------------------------
  def exp_gauge_colour2
    return text_color(8)
  end
end
#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
#  This window displays full status specs on the status screen.
#==============================================================================

class Window_Status < Window_Base
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_actor_back(@actor, 0, 0)
    unless Input.press?(Input::A)
      @hp_icon = COZZIEKUNS::HP_ICON
      @mp_icon = COZZIEKUNS::MP_ICON
      @exp_icon = COZZIEKUNS::EXP_ICON
      @level_icon = COZZIEKUNS::LEVEL_ICON
      @atk_icon = COZZIEKUNS::ATTACK_ICON
      @def_icon = COZZIEKUNS::DEFENSE_ICON
      @spi_icon = COZZIEKUNS::SPIRIT_ICON
      @agi_icon = COZZIEKUNS::AGILITY_ICON
      draw_actor_name(@actor, 4, 0)
      draw_actor_class(@actor, 160, 0)
      draw_icon(62, 128, 32)
      draw_icon(98, 128, WLH * 3 + 32)
      draw_icon(99, 128, WLH + 32)
      draw_icon(100, 128, WLH * 2 + 32)
      draw_icon(26, 320, 33)
      draw_icon(52, 320, 33 + WLH + 1)
      draw_icon(20, 320, 33 + WLH * 2 + 2)
      draw_icon(49, 320, 33 + WLH * 3 + 3)
      if COZZIEKUNS::CLASS_ICONS.include?(@actor.id)
        @icon_number = COZZIEKUNS::CLASS_ICONS[@actor.id]
      else
        @icon_number = COZZIEKUNS::CLASS_ICONS[0]
      end
      draw_icon(@icon_number, 128, 0)
      draw_actor_face(@actor, 8, 32)
      draw_basic_info(160, 32)
      draw_parameters(352, 32)
      draw_actor_tnl(@actor, 160, WLH * 3 + 32)
      draw_equipments(288, 154)
      self.contents.font.color = system_color
      self.contents.draw_text(320, 0, 80, WLH, "Status:", 0)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Basic Information
  #     x : Draw spot X coordinate
  #     y : Draw spot Y coordinate
  #--------------------------------------------------------------------------
  def draw_basic_info(x, y)
    draw_actor_level(@actor, x, y + WLH * 0)
    draw_actor_state(@actor, 400, 0)
    draw_actor_hp(@actor, x, y + WLH * 1)
    draw_actor_mp(@actor, x, y + WLH * 2)
  end
  #--------------------------------------------------------------------------
  # * Draw Actor Back
  #     actor : the actor you want
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #--------------------------------------------------------------------------
  def draw_actor_back(actor, x, y)
    @background_opacity = COZZIEKUNS::BACKGROUND_OPACITY
    bitmap = Cache.picture(actor.name + "_bg")
    rect = Rect.new(0, 0, 544,416)
    self.contents.blt(x, y, bitmap, rect, @background_opacity)
    bitmap.dispose
  end
  #--------------------------------------------------------------------------
  # * Draw Equipment
  #     x : Draw spot X coordinate
  #     y : Draw spot Y coordinate
  #--------------------------------------------------------------------------
  def draw_equipments(x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 120, WLH, Vocab::equip + "s:")
    for i in 0..4
      draw_item_name(@actor.equips[i], x + 16, y + 11 + WLH * (i + 1))
    end
  end
  #--------------------------------------------------------------------------
  # * Draw TNL (To next level)
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #     width : Width
  #--------------------------------------------------------------------------
  def draw_actor_tnl(actor, x, y, width = 120)
    draw_actor_tnl_gauge(actor, x, y, width)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 30, WLH, "E")
    self.contents.font.color = hp_color(actor)
    last_font_size = self.contents.font.size
    xr = x + width
    if width < 120
      self.contents.draw_text(xr - 44, y, 44, WLH, actor.exp_s, 2)
    else
      self.contents.draw_text(xr - 99, y, 44, WLH, actor.exp_s, 2)
      self.contents.font.color = normal_color
      self.contents.draw_text(xr - 55, y, 11, WLH, "/", 2)
      self.contents.draw_text(xr - 44, y, 44, WLH, actor.next_exp_s, 2)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw TNL gauge
  #     actor : actor
  #     x     : draw spot x-coordinate
  #     y     : draw spot y-coordinate
  #     width : Width
  #--------------------------------------------------------------------------
  def draw_actor_tnl_gauge(actor, x, y, width = 120)
    gw = width * actor.exp_s / actor.next_exp_s
    gc1 = exp_gauge_colour1
    gc2 = exp_gauge_colour2
    self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
    self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    super
    refresh
  end
end

#==============================================================================
# ** Window_Biography
#------------------------------------------------------------------------------
#  Basically what Yanfly did. Kudos to you, Yanfly.
#==============================================================================

class Window_Biography < Window_Base
  #--------------------------------------------------------------------------
  # * Initalize
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 154, 288, 416)
    @actor = actor
    self.opacity = 0
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    unless Input.press?(Input::A)
      self.contents.font.color = system_color
      self.contents.draw_text(4, 0, 284, WLH, "Biography:", 0)
      self.contents.font.color = normal_color
      self.contents.font.size = 20
      if COZZIEKUNS::BIOGRAPHIES.include?(@actor.id)
        text = COZZIEKUNS::BIOGRAPHIES[@actor.id]
      else
        text = COZZIEKUNS::BIOGRAPHIES[0]
      end
      self.contents.draw_paragraph(4, 32, 252, WLH * 4, text)
    end
  end
  #--------------------------------------------------------------------------
  # * Update
  #--------------------------------------------------------------------------
  def update
    super
    refresh
  end
end

#==============================================================================
# ** Window_Status_Help
#------------------------------------------------------------------------------
#  Helps you out, I guess...
#==============================================================================

class Window_StatusHelp < Window_Base
  #--------------------------------------------------------------------------
  # * Initalize
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y, 544, 60)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
   self.contents.draw_text(4, 0, 544, WLH, "Press Q and W to switch characters. Press X to exit.")
  end
end

#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
#  This class handles actors. It's used within the Game_Actors class
# ($game_actors) and referenced by the Game_Party class ($game_party).
#==============================================================================

class Game_Actor < Game_Battler 
  #--------------------------------------------------------------------------
  # * Get Experience String
  #--------------------------------------------------------------------------
  def exp_s
    return @exp_list[@level+1] > 0 ? @exp : 1
  end
  #--------------------------------------------------------------------------
  # * Get String for Next Level Experience
  #--------------------------------------------------------------------------
  def next_exp_s
    return @exp_list[@level+1] > 0 ? @exp_list[@level+1] : 1
  end
  #--------------------------------------------------------------------------
  # * Get String for Experience to Next Level
  #--------------------------------------------------------------------------
  def next_rest_exp_s
    return @exp_list[@level+1] > 0 ? (@exp_list[@level+1] - @exp) : 1
  end
end
 
#==============================================================================
# ** Scene_Status
#------------------------------------------------------------------------------
#  This class performs the status screen processing.
#==============================================================================

class Scene_Status < Scene_Base
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  alias coz_ssw_ss_start start
  def start
    coz_ssw_ss_start
    @bio_window = Window_Biography.new(@actor)
    @statushelp_window = Window_StatusHelp.new(0, 356)
  end
  #--------------------------------------------------------------------------
  # * Termination Processing
  #--------------------------------------------------------------------------
  alias coz_ssw_ss_terminate terminate
  def terminate
    coz_ssw_ss_terminate
    @bio_window.dispose
    @statushelp_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Update Processing
  #--------------------------------------------------------------------------
  alias coz_ssw_ss_update update
  def update
    coz_ssw_ss_update
    @bio_window.update
    @statushelp_window.update
  end
end

Credit


  • Cozziekuns
  • Modern Algebra, Paragraph Formatter

Thanks

  • Yanfly's Scene Stauts Redux, a great inspiration and a great script overall.
  • mittenrc, for suggesting a feature.

Support


Just post down here.

Known Compatibility Issues

Guess it won't work with other status screens. But otherwise, none as of yet.
« Last Edit: July 18, 2011, 04:19:05 PM by cozziekuns »

*
Rep:
Level 97
2014 Best RPG Maker User - Engine2014 Most Unsung Member2013 Best RPG Maker User (Scripting)2012 Favorite Staff Member2012 Most Mature Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best RPG Maker User (Scripting)2011 Best Veteran2011 Favourite Staff Member2011 Most Mature Member2011 Best Use of Avatar and Signature Space2010 Favourite Staff Member2010 Most Mature Member
I like it! :)

*
Rep: +0/-0Level 73
RMRK Junior
I like it too, it's great :D
though I'm having a problem with it
When I change the Biography It just doesn't work
Instead of using the whole biography space, it just cuts in the first line...
so ..is there a way to fix this? D:

*****
Rep:
Level 84
This text is way too personal.
Bronze - GIAW 11 (Hard)Silver - GIAW Halloween
Well, since I didn't have any paragraph formatting, you'll have to put a "|" (Not an I, but a |) every time you want a line break.

EDIT: Ignore this, I added in paragraph formatting.
« Last Edit: November 28, 2010, 06:08:20 PM by cozziekuns »

***
Rep:
Level 76
RMRK Junior
Have you tried Yanfly Main Menu Melody? I think it uses a completely different refresh system.

**
Rep:
Level 67
Infinite imagination
This is exactly what I was looking for ^^ (sorry for necroposting)

I have a suggest though, I'd love it if the status window could be hidable, only showing the watermark without any transparency? Triggered by pressing some button for example? I'm afraid that I'm requesting something stupidly easy here, but at least it seems like a challenge to me :P

I have an awesome consept artist agreed to do graphs for our game, so I'd love to put them in to good use :)

Once more big thanks to Cozziekun *hugs*

*****
Rep:
Level 84
This text is way too personal.
Bronze - GIAW 11 (Hard)Silver - GIAW Halloween
Thanks for the suggestion! Updated.

**
Rep:
Level 67
Infinite imagination
OoooooOOoo!! That's exactly what I wanted ^^

Thank you million times Cozziekuns!!!!! *hundreds hugs*

... I can use your script in our game, right..?

*****
Rep:
Level 84
This text is way too personal.
Bronze - GIAW 11 (Hard)Silver - GIAW Halloween
Sure, go shoot.

*
Rep: +0/-0Level 65
RMRK Junior
And what if you want the player to choose the actor's name?  How could this script be changed to "variable_bg" so that there isn't a watermark error.  Or.. can the status screen BG just be turned off or made a generic color?  Thanks.

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Zero to Hero2014 Best IRC Quote2014 Most Missed Member2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
I don't have VX at the moment, but I think the way you would fix the name problem is by going to line 147 and changing
Code: [Select]
    bitmap = Cache.picture(actor.name + "_bg")
to
Code: [Select]
    bitmap = Cache.picture(actor.actor.name + "_bg")
As for your other idea, you could just create blank images for each actor, but an actual fix would be changing lines 145-151 from this:
Code: [Select]
  def draw_actor_back(actor, x, y)
    @background_opacity = COZZIEKUNS::BACKGROUND_OPACITY
    bitmap = Cache.picture(actor.name + "_bg")
    rect = Rect.new(0, 0, 544,416)
    self.contents.blt(x, y, bitmap, rect, @background_opacity)
    bitmap.dispose
  end
to this:
Code: [Select]
  def draw_actor_back(*args)
    return
  end

**
Rep: +0/-0Level 61
RMRK Junior
Well I did what pacman said to do to skip adding a background image, but i'm having a different issue now. It's not Pacman's code thats causing the issue, I get the same problem when I do add a image. When I try to access one of the Character's status menus I get this:

"Script 'Cozziekuns' Status Screen' line 241: NoMethodError occurred. Undefined method 'draw_paragraph' for #<Bitmap:0x391cda8>"

*****
my name is Timothy what's yours
Rep:
Level 79
Hello
2014 Zero to Hero2014 Best IRC Quote2014 Most Missed Member2012 Zero To HeroSecret Santa 2012 ParticipantContestant - GIAW 9For frequently finding and reporting spam and spam bots2011 Zero to Hero
See header. Make sure that you have MA's Paragraph Formatter, included in the demo.

Do you have that?

**
Rep: +0/-0Level 61
RMRK Junior
Well it actually disappeared after I deleted that particular line. So I guess its solved, deleting it doesn't seem to be causing any issues from what I can see.

**
Rep:
Level 70
Super Maker
I just wanted to repost the pic because it was showing up for me on this awesome script.
The Maker of Battle Dungeons!!


Spoiler for Big ass signature, bro:
AbsoluteIce I finally say your Sig.

Get by 20 attack Dogs...seriously. I got 20 attack Dogs.

*Your signature was raped changed for taking up too much room.
~Sincerely, a staff member. That is all you need to know. That, and I am no one to be trifled with.