Submit Your Article


 
RPG Maker

Welcome Guest ( Log In | Register )


  Games Resources RPG Maker VX RPG Maker XP Scripts Tutorials Downloads

> Display Party Status On Map (DQ Style), A Great Feature!
SuperMega
post Aug 7 2009, 06:55 PM
Post #1


Public memberTitle(String n)
Group Icon

Group: Revolutionary
Posts: 683
Type: Developer
RM Skill: Skilled





Version: 1.1
Author: The Staff of RGSS2Dai Page
Translation: SuperMega

Introduction
This is a translation of a fantastic script from Dai Page. I AM NOT the creator of this script, so I don't deserve full credit. I only translated the script, in order to share it with the English community. The primary functions of the script are translated, but not everything is. If anyone would like everything to be translated, please let me know. Let me also mention I can only help with basic problems, and not ones that involve the script.

Features
-Dragon Quest Style party display on the map
-Plug 'N Play, with customization!
-Good for knowing the party's status on the fly!


Script
[Show/Hide] The script...
CODE
=begin
#-------------------------------------------------------------------------------
Display Status On The Map
Script By: RGSS2 DAIpage
Version: 1.1
Translation By: SuperMega
--------------------------------------------------------------------------------

Using The Script:
€€Remain standing on the map for X seconds, and a menu showing the party's status
will appear.  Pressing the "Y" key (S on the keyboard) will close this window.
Customization is possible, and can be done below.

This Script Has Redefined...
   Scene_Map

€€Changing this script may result in compatability errors, so do so at your own
risk...

Change Log:
€€09/3/22:  Fixed the hidden features that are not enforced.
€€09/3/13
   -Improved the script in general.
   -Fixed the size of the content.
   -Add a type to view full DQ.
   -Modified to not display in a window display.
   -The behavior to open the window has been altered.  
   -Eliminated Pointless Customization.

=end
#==============================================================================
# Begin Customization
#==============================================================================
module DAI_Map_Status
  #----------------------------------------------------------------------------
  # Basic Settings
  #----------------------------------------------------------------------------
  # Switch Used To Disable The Pop-up window.
  OPTION = 2
  
  # The type you wish to use.(0: Push Button To Open/Close (NOT RECOMMENDED),
  # 1: Display Stays Hidden, But displays after standing a certain amount of time.)
  TYPE = 1
  
  # Window Transparency
  OPACITY = 255
  
  # Window Position (0: Down, 1: Up)
  Y = 0
  
  # Hide States?( true / false )
  ST = false
  
  #----------------------------------------------------------------------------
  # — Button Configuration
  #----------------------------------------------------------------------------
  # Button To Open or Close The Display After It Displays
  B = Input::Y
  
  #----------------------------------------------------------------------------
  # — Time Settings
  #----------------------------------------------------------------------------
  # Wait Time Before Display (60 = 1 Sec.)
  TIME = 90

end
#==============================================================================
# End Customization
#==============================================================================

#==============================================================================
# – Scene_Map
#==============================================================================
class Scene_Map
  #----------------------------------------------------------------------------
  # —–‹‹‡†ˆ‚‚ƒ‚‚‰
  #----------------------------------------------------------------------------
  alias start_map_status start
  def start
    @window_map_status = Window_MapStatus.new
    start_map_status
  end
  #----------------------------------------------------------------------------
  # — ƒ•ƒƒƒ›–ˆ‚‚ƒ‚‚‰
  #----------------------------------------------------------------------------
  alias update_map_status update
  def update
    update_map_status
    map_status_window_update
  end
  #--------------------------------------------------------------------------
  # — ‚†‡†
  #--------------------------------------------------------------------------
  alias terminate_map_status terminate
  def terminate
    terminate_map_status
    @window_map_status.dispose
  end
  #----------------------------------------------------------------------------
  # — ‚‚ƒƒ‰‚の›–
  #----------------------------------------------------------------------------
  def map_status_window_update
    @window_map_status.close if $game_map.interpreter.running?
    @window_map_status.update
    if Input.trigger?(DAI_Map_Status::B) && DAI_Map_Status::TYPE != 1
      return if $game_map.interpreter.running?
      return if $game_switches[DAI_Map_Status::OPTION]
      @window_map_status.v ^= true
      @window_map_status.refresh
      Sound.play_decision
      return
    elsif DAI_Map_Status::TYPE == 1
      if $game_map.interpreter.running?
        @window_map_status.count = 0
        @window_map_status.v = false
        return
      end
      unless input?
        @window_map_status.count += 1
        if @window_map_status.count == DAI_Map_Status::TIME
          @window_map_status.v = true
          @window_map_status.refresh
          return
        end
      else
        @window_map_status.count = 0
        @window_map_status.v = false
        return
      end
    end
    if $game_party.members.size > 0 && @window_map_status.v
      map_status_data unless $game_map.interpreter.running?
    end
  end
  #--------------------------------------------------------------------------
  # — ”面ˆ‡‚Š›ˆのŸŒ
  #--------------------------------------------------------------------------
  alias map_status_update_scene_change update_scene_change
  def update_scene_change
    $game_temp.map_s_last_v = @window_map_status.v
    @window_map_status.visible = false unless $game_temp.next_scene.nil?
    map_status_update_scene_change
  end
  #----------------------------------------------------------------------------
  # — ‚ƒ†ƒ‚‚の›–
  #----------------------------------------------------------------------------
  def map_status_data
    if @window_map_status.map_status.size != $game_party.members.size
      @window_map_status.data
      @window_map_status.refresh
      return
    end
    return if $game_party.members.size == 0
    i = 0
    for a in $game_party.members
      a_s = [a.name, a.hp, a.maxhp, a.mp, a.maxmp, a.states]
      s = @window_map_status.map_status[i]
      if [s[0], s[1], s[2], s[3], s[4], s[5]] != a_s
        @window_map_status.data
        @window_map_status.refresh
        return
      end
      i += 0
    end
  end
  #--------------------------------------------------------------------------
  # — •‚‰‹の‚ƒ…Š›Œ‚っŸ‹ˆš
  #--------------------------------------------------------------------------
  def input?
    return (Input.dir4 != 0 or
    Input.trigger?(Input::A) or Input.trigger?(Input::B) or
    Input.trigger?(Input::C) or Input.trigger?(Input::X) or
    Input.trigger?(Input::Y) or Input.trigger?(Input::Z) or
    Input.trigger?(Input::L) or Input.trigger?(Input::R))
  end
end

#==============================================================================
# – Game_Temp
#==============================================================================
class Game_Temp
  #--------------------------------------------------------------------------
  # — …–‹‚ƒ‚‚ƒ‚‰•
  #--------------------------------------------------------------------------
  attr_accessor:map_s_last_v            # ”面ˆ‡›‰の可–Š…‹
  #--------------------------------------------------------------------------
  # — ‚ƒ–‚‚‚ƒˆˆœŸŒ–
  #--------------------------------------------------------------------------
  alias map_status_initialize initialize
  def initialize
    map_status_initialize
    @map_s_last_v = true
  end
end

#==============================================================================
# – Window_MapStatus
#==============================================================================
class Window_MapStatus < Window_Base
  #--------------------------------------------------------------------------
  # — …–‹‚ƒ‚‚ƒ‚‰•
  #--------------------------------------------------------------------------
  attr_accessor:map_status              # ‚ƒ†ƒ‚‚保Œ”‰•
  attr_accessor:count                   # ‚‚ƒƒˆ
  attr_accessor:v                       # 可–Š…‹
  #--------------------------------------------------------------------------
  # — ‚ƒ–‚‚‚ƒˆˆœŸŒ–
  #--------------------------------------------------------------------------
  def initialize
    @count = 0
    w = $game_party.members.size * 136
    w = 136 if $game_party.members.size == 0
    if DAI_Map_Status::Y == 0
      y = DAI_Map_Status::ST ? 312 : 288
    else
      y = 0
    end
    h = DAI_Map_Status::ST ? 104 : 128
    super(0, y, w, h)
    self.openness = 0
    self.opacity = DAI_Map_Status::OPACITY
    @v = $game_temp.map_s_last_v
    if $game_switches[DAI_Map_Status::OPTION] or DAI_Map_Status::TYPE == 1
      @v = false
    end
    data
    refresh
  end
  #--------------------------------------------------------------------------
  # — ƒ•ƒƒƒ›–
  #--------------------------------------------------------------------------
  def update
    if @v
      open
    elsif
      close
    end
    close if $game_switches[DAI_Map_Status::OPTION]
    super
  end
  #--------------------------------------------------------------------------
  # — ‚‚ƒƒ‰‚†…容のœˆ
  #--------------------------------------------------------------------------
  def create_contents
    self.contents.dispose
    self.contents = Bitmap.new((512 / 4 * $game_party.members.size), height - 32)
  end
  #--------------------------------------------------------------------------
  # — ƒ‘ƒƒƒ‚ƒの˜†
  #--------------------------------------------------------------------------
  def data
    @map_status = []
    for a in $game_party.members
      @map_status.push([a.name, a.hp, a.maxhp, a.mp, a.maxmp, a.states])
    end
  end
  #--------------------------------------------------------------------------
  # — ƒƒ•ƒƒƒ‚ƒ
  #--------------------------------------------------------------------------
  def refresh
    create_contents
    width_refresh
    draw_contents
  end
  #--------------------------------------------------------------------------
  # — ‚‚ƒƒ‰‚†…容の描”
  #--------------------------------------------------------------------------
  def draw_contents
    self.contents.clear
    return if $game_party.members.size == 0
    for i in 0...$game_party.members.size
      actor = $game_party.members[i]
      actor_x = i * 512 / 4
      draw_actor_name(actor, actor_x, 0)
      draw_actor_hp(actor, actor_x, 25)
      draw_actor_mp(actor, actor_x, 50)
      draw_actor_state(actor, actor_x, 75) unless DAI_Map_Status::ST
    end
  end
  #--------------------------------------------------------------------------
  # — ‚‚ƒƒ‰‚…の調•
  #--------------------------------------------------------------------------
  def width_refresh
    self.width = self.contents.width + 32
  end
end


Compatibility
May not work with HUD's or anything that always shows on the map (Wora's Mini Map for example, which this does not work with) however, it should work out with mostly everything else.


Screenshot


DEMO
I highly recommend playing the demo to get a good idea of how it can work. That's my word!
http://www.mediafire.com/?wyy3k2nzkmt

Installation
Practically Plug 'n Play, with the exception of customization that you might want to look at.

Let me also add, if you would like to set the feature as button input, it will create a great amount of lag. So do so at your own risk...

FAQ
Q.Help!!! This script is giving me an error!
A.Sadly, I can't help with that. I merely translated this script, and have a weak scripting ability. You may want to contact the script makers, to see what you can do to get it to work properly. If there's something you don't understand about the script, then those kind of questions are ones I can answer.

Credits
RGSS2DaiPage Staff-The script
SuperMega-Translation
(Please credit both! Don't leave RGSS2Daipage Staff out of your credits! You know they did a great job!)


__________________________
Translated Scripts:
Diagonal Movement (Eight Direction) and Smooth Jumping
Attack Party, Heal Enemies
Display Party Status On Map (DQ Style)
Display Maps Under Maps
Save Screen Customization
Subtitled Menus

If you want to suggest a translation for something, PM me, and I'll take a look. I AM TRYING TO GIVE AWAY LOCKERZ.com INVITES, SO PLEASE LET ME KNOW IF YOU WANT ONE.
Currently Working on 2 RPG Maker VX Projects. They are very unique, and have a different kind of style then the usual RPGs. So don't think of them as just another RPG. Did that sound rude? :D Not sure if I want them to go public yet, but we'll see how it goes.
Need a script translated? Come talk to me, and I'll see what I can do.
Go to the top of the page
 
+Quote Post
   

Posts in this topic


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

Lo-Fi Version Time is now: 22nd May 2013 - 08:32 AM
RPG RPG Revolution is an Privacy Policy and Legal
eXTReMe Tracker