¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ir a la página : Precedente  1, 2, 3, 4, 5  Siguiente

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 2 de 5.]

Kululu

avatar
¡Hola youkai! Bueno, como sé de buena mano sobre tu conocimiento de scripting, vengo a pedirte algo que seguramente resulte más sencillo de lo que yo, en mi desconocimiento, creo.

Básicamente es un pequeña edición de ésto:

Código:
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Stat Distribution System by Blizzard
# Version: 2.2b
# Type: Actor Attribute Modifier
# Date: 25.3.2007
# Date v1.1b: 6.4.2007
# Date v1.2b: 22.8.2007
# Date v1.3b: 12.9.2007
# Date v1.33b: 5.11.2007
# Date v2.0: 18.10.2009
# Date v2.01: 28.7.2010
# Date v2.1: 16.12.2011
# Date v2.2: 29.9.2012
# Date v2.2b: 30.9.2012
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Compatibility:
#
#  99% compatible with SDK v1.x. 80% compatible with SDK 2.x. WILL corrupt
#  your old savegames. Might cause problems with custom leveling up systems.
#  99% compatibility with everything else.
#
#
# Features:
#
#  - distribute points between different stats
#  - extra scene for point distribution with confirmation window at the end
#  - calls the "caller scene" automatically when finished
#  - add points by easily pressing RIGHT/LEFT
#  - hold Q to add 10 points at once
#  - hold W to add 100 points at once
#  - a Stat Distribution System that actually works like it should...
#
# new in v1.1b:
#  - added option to call the Points Scene after a fight with level ups
#  - customizable icon position and opacity
#
# new in v1.2b:
#  - improved coding and made code shorter
#  - rewritten conditions using classic syntax to avoid RGSS conditioning bug
#
# new in v1.3b:
#  - improved coding
#  - fixed bug with AUTO_CALL after battle
#  - new AUTO_MAP_CALL works on the map as well (that means it's fully
#    compatible with Blizz-ABS)
#
# new in v1.33b:
#  - improved coding
#  - improved compatibility
#  - fixed a little glitch
#
# new in v2.0:
#  - improved coding and overworked system (corrupts old savegames with older
#    version of this system!)
#  - new design
#  - new support for HP and SP
#  - now possible to configure multiple points for one stat
#
# new in v2.01:
#  - fixed bug with display of remaining DP
#
# new in v2.1:
#  - fixed bug with calculation of DP allowance
#
# new in v2.2:
#  - added possibility of using negative number in X_DP_COST values for
#    inverted exchange rates
#
# new in v2.2b:
#  - fixed a few small bugs when using inverted exchange rates
#
#
# Configuration:
#
#  Set up the configuration below.
#
#  STARTING_DP  - how many points should the actor have initially at level 1
#  DP_PER_LEVEL  - how many points should the actor gain per level
#  HP_DP_COST    - how many DP does 1 HP cost (use negative numbers for
#                  inverted exchange rate)
#  SP_DP_COST    - how many DP does 1 SP cost (use negative numbers for
#                  inverted exchange rate)
#  STR_DP_COST  - how many DP does 1 STR cost (use negative numbers for
#                  inverted exchange rate)
#  DEX_DP_COST  - how many DP does 1 DEX cost (use negative numbers for
#                  inverted exchange rate)
#  AGI_DP_COST  - how many DP does 1 AGI cost (use negative numbers for
#                  inverted exchange rate)
#  INT_DP_COST  - how many DP does 1 INT cost (use negative numbers for
#                  inverted exchange rate)
#  AUTO_CALL    - set to true to have the scene called automatically after
#                  battles if at least one character got leveled up
#  AUTO_MAP_CALL - set to true to have the scene called automatically on the
#                  map if at least one character got leveled up (this works
#                  for Blizz-ABS as well), also note that this will cause the
#                  scene to called over and over as long as not all points
#                  were distributed
#  DISPLAY_ICON  - displays an icon on the map if ANY character in the
#                  party has any points to distribute
#  OWN_ICON      - use an own icon for display, false for no or filename of
#                  your own icon (the icon has to be in the Icons folder)
#  ICON_X        - icon X coordinate
#  ICON_Y        - icon Y coordinate
#  ICON_OPACITY  - icon Y opacity
#  WINDOW_MODE  - set to true to have the command windows at the bottom, set
#                  to false to have them to at the top
#
#
#  You can always add change DP yourself by using following syntax:
#
#    $game_party.actors[POSITION].dp = VALUE
#    $game_actors[ID].dp = VALUE
#
#  POSITION - position of actor in the party (STARTS FROM ZERO!)
#  ID      - ID of actor in the database
#  VALUE    - value
#
#  You can call the Scene by using a "Call script" event command. Type into
#  the editor window this text:
#
#    $scene = Scene_Points.new
#
#
# Notes:
#
#  - Decreasing the level of an actor won't remove his gained DP. You MUST do
#    it manually.
#  - Negative numbers in X_DP_COST designate inverted exchange rates. e.g.
#    a value of 10 would designate that 10 DP are required to raise the stat
#    by 1 point while a value of -10 woulde designate that 1 DP is required to
#    increase the stat by 10 points. This convention has been added as
#    calculation with decimals (floating point numbers) can cause problems
#    during rounding due to physically limited precision.
#
#
# If you find any bugs, please report them here:
# http://www.chaosproject.co.nr
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

module BlizzCFG

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  STARTING_DP = 0
  DP_PER_LEVEL = 1
  HP_DP_COST = 1
  SP_DP_COST = 1
  STR_DP_COST = 2
  DEX_DP_COST = 2
  AGI_DP_COST = 2
  INT_DP_COST = 2
  AUTO_CALL = false
  AUTO_MAP_CALL = false
  DISPLAY_ICON = true
  OWN_ICON = false
  ICON_X = 612
  ICON_Y = 452
  ICON_OPACITY = 192
  WINDOW_MODE = true
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  # constants
  HPLimit = 9999
  SPLimit = 9999
  STRLimit = 999
  DEXLimit = 999
  AGILimit = 999
  INTLimit = 999
  DPName = 'DP'
  EvasionName = 'EVA'
  EXPText = 'EXP'
  NextText = 'Siguiente'
  EquipmentText = 'Equipamiento'
  AreYouSure = '¿Seguro?'
  DistroCommands = ['Distribuir DP', 'Siguiente Personaje', 'Anterior Personaje', 'Terminar']
  AreYouSureCommands = ['Cancelar', 'Aceptar Cambios', 'Descartar Cambios']
  AttrLimits = [HPLimit, SPLimit, STRLimit, DEXLimit, AGILimit, INTLimit]
  ExchangeRates = [HP_DP_COST, SP_DP_COST, STR_DP_COST,
      DEX_DP_COST, AGI_DP_COST, INT_DP_COST]
  ColorWhite = Color.new(255, 255, 255)
  ColorBlack = Color.new(0, 0, 0)
  ColorIcon = Color.new(0, 128, 255)
  ColorIncreased = Color.new(0, 255, 0)
  # ensures compatibility
  $stat_system = 2.2
 
end

#==============================================================================
# Array
#==============================================================================

class Array
 
  def sum
    result = 0
    self.each {|i| result += i if i.is_a?(Numeric)}
    return result
  end
 
end
 
#==============================================================================
# Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
 
  attr_reader :dp
 
  alias setup_sds_later setup
  def setup(actor_id)
    @dp = BlizzCFG::STARTING_DP
    setup_sds_later(actor_id)
  end
 
  alias exp_sds_later exp=
  def exp=(exp)
    old_level = @level
    exp_sds_later(exp)
    value = (@level - old_level) * BlizzCFG::DP_PER_LEVEL
    self.dp += value if value > 0
  end
 
  def dp=(value)
    @dp = (value < 0 ? 0 : value)
  end
 
end

#==============================================================================
# Window_Base
#==============================================================================

class Window_Base < Window
 
  def draw_actor_character(actor, x, y)
    bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
    cw, ch = bitmap.width, bitmap.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch / 2, bitmap, src_rect)
  end
 
  alias draw_actor_parameter_sds_later draw_actor_parameter
  def draw_actor_parameter(actor, x, y, type)
    if type == 7
      self.contents.font.color = system_color
      self.contents.draw_text(x, y, 120, 32, BlizzCFG::EvasionName)
      self.contents.font.color = normal_color
      self.contents.draw_text(x + 120, y, 36, 32, actor.eva.to_s, 2)
    else
      draw_actor_parameter_sds_later(actor, x, y, type)
    end
  end
 
end

#==============================================================================
# Window_DistributionStatus
#==============================================================================

class Window_DistributionStatus < Window_Base
 
  attr_reader :actor
 
  def initialize(actor)
    super(0, BlizzCFG::WINDOW_MODE ? 0 : 224, 640, 256)
    @actor = actor
    self.contents = Bitmap.new(width - 32, height - 32)
    if $fontface != nil
      self.contents.font.name = $fontface
      self.contents.font.size = $fontsize
    elsif $defaultfonttype != nil
      self.contents.font.name = $defaultfonttype
      self.contents.font.size = $defaultfontsize
    end
    refresh
  end
 
  def actor=(actor)
    @actor = actor
    refresh
  end
 
  def refresh
    self.contents.clear
    unless @actor == nil
      draw_actor_character(@actor, 256, 120)
      draw_actor_name(@actor, 4, 0)
      draw_actor_class(@actor, 4, 32)
      draw_actor_level(@actor, 4, 64)
      self.contents.font.color = system_color
      self.contents.draw_text(352, 16, 96, 32, BlizzCFG::EquipmentText)
      draw_item_name($data_weapons[@actor.weapon_id], 352, 64)
      draw_item_name($data_armors[@actor.armor1_id], 352, 96)
      draw_item_name($data_armors[@actor.armor2_id], 352, 128)
      draw_item_name($data_armors[@actor.armor3_id], 352, 160)
      draw_item_name($data_armors[@actor.armor4_id], 352, 192)
      self.contents.font.color = normal_color
      draw_actor_parameter(@actor, 4, 96, 0)
      draw_actor_parameter(@actor, 4, 128, 1)
      draw_actor_parameter(@actor, 4, 160, 2)
      draw_actor_parameter(@actor, 4, 192, 7)
    end
  end
 
end
 
#==============================================================================
# Window_DistributionPoints
#==============================================================================

class Window_DistributionPoints < Window_Base
 
  attr_reader :actor
  attr_reader :dp_left
 
  def initialize(actor)
    super(0, BlizzCFG::WINDOW_MODE ? 416 : 160, 224, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    if $fontface != nil
      self.contents.font.name = $fontface
      self.contents.font.size = $fontsize
    elsif $defaultfonttype != nil
      self.contents.font.name = $defaultfonttype
      self.contents.font.size = $defaultfontsize
    end
    self.actor = actor
  end
 
  def actor=(actor)
    @actor, @dp_left = actor, actor.dp
    refresh
  end
 
  def set_dp(value)
    @dp_left = actor.dp - value
    refresh
  end
 
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 32, 32, BlizzCFG::DPName)
    self.contents.font.color = normal_color
    self.contents.draw_text(36, 0, 152, 32, "#{@dp_left} / #{@actor.dp}", 2)
  end
 
end
 
#==============================================================================
# Window_Distribution
#==============================================================================

class Window_Distribution < Window_Selectable
 
  attr_reader :actor
  attr_reader :spent
 
  def initialize(actor)
    super(224, BlizzCFG::WINDOW_MODE ? 256 : 0, 416, 224)
    self.contents = Bitmap.new(width - 32, height - 32)
    if $fontface != nil
      self.contents.font.name = $fontface
      self.contents.font.size = $fontsize
    elsif $defaultfonttype != nil
      self.contents.font.name = $defaultfonttype
      self.contents.font.size = $defaultfontsize
    end
    @words = ["Max #{$data_system.words.hp}", "Max #{$data_system.words.sp}",
        $data_system.words.str, $data_system.words.dex, $data_system.words.agi,
        $data_system.words.int]
    @item_max = @words.size
    self.actor = actor
    self.active, self.index = false, 0
  end
 
  def actor=(actor)
    @actor = actor
    @current = [@actor.maxhp, @actor.maxsp, @actor.str, @actor.dex, @actor.agi,
        @actor.int]
    @spent = [0, 0, 0, 0, 0, 0]
    refresh
  end
 
  def active=(value)
    super(value)
    update_cursor_rect
  end
 
  def apply_new_attributes
    @actor.maxhp += (BlizzCFG::HP_DP_COST > 0 ?
        @spent[0] / BlizzCFG::HP_DP_COST : @spent[0] * -BlizzCFG::HP_DP_COST)
    @actor.maxsp += (BlizzCFG::SP_DP_COST > 0 ?
        @spent[1] / BlizzCFG::SP_DP_COST : @spent[1] * -BlizzCFG::SP_DP_COST)
    @actor.str += (BlizzCFG::STR_DP_COST > 0 ?
        @spent[2] / BlizzCFG::STR_DP_COST : @spent[2] * -BlizzCFG::STR_DP_COST)
    @actor.dex += (BlizzCFG::DEX_DP_COST > 0 ?
        @spent[3] / BlizzCFG::DEX_DP_COST : @spent[3] * -BlizzCFG::DEX_DP_COST)
    @actor.agi += (BlizzCFG::AGI_DP_COST > 0 ?
        @spent[4] / BlizzCFG::AGI_DP_COST : @spent[4] * -BlizzCFG::AGI_DP_COST)
    @actor.int += (BlizzCFG::INT_DP_COST > 0 ?
        @spent[5] / BlizzCFG::INT_DP_COST : @spent[5] * -BlizzCFG::INT_DP_COST)
    @actor.dp -= @spent.sum
    self.actor = @actor
  end
 
  def refresh
    self.contents.clear
    (0...@item_max).each {|i| draw_item(i)}
  end
 
  def draw_item(i)
    y = i * 32
    self.contents.fill_rect(0, y, self.contents.width, 32, Color.new(0, 0, 0, 0))
    self.contents.font.color = system_color
    self.contents.draw_text(4, y, 80, 32, @words[i])
    self.contents.draw_text(344, y, 40, 32, BlizzCFG::DPName)
    self.contents.draw_text(180, y, 12, 32, '/', 1)
    self.contents.draw_text(192, y, 64, 32, @current[i].to_s)
    self.contents.font.color = normal_color
    if BlizzCFG::ExchangeRates[i] > 0
      self.contents.draw_text(276, y, 64, 32,
          BlizzCFG::ExchangeRates[i].to_s, 2)
    elsif BlizzCFG::ExchangeRates[i] < 0
      self.contents.draw_text(276, y, 64, 32,
          "1/" + (-BlizzCFG::ExchangeRates[i]).to_s, 2)
    end
    font, self.contents.font.name = self.contents.font.name, 'Arial'
    size, self.contents.font.size = self.contents.font.size, 32
    bold, self.contents.font.bold = self.contents.font.bold, true
    self.contents.draw_text(104, y - 2, 24, 32, '«')
    self.contents.draw_text(244, y - 2, 24, 32, '»', 2)
    self.contents.font.bold = bold
    self.contents.font.size = size
    self.contents.font.bold = bold
    self.contents.font.color = BlizzCFG::ColorIncreased if @spent[i] > 0
    current = @current[i]
    if BlizzCFG::ExchangeRates[i] > 0
      current = (@current[i] + @spent[i] / BlizzCFG::ExchangeRates[i])
    elsif BlizzCFG::ExchangeRates[i] < 0
      current = (@current[i] + @spent[i] * -BlizzCFG::ExchangeRates[i])
    end
    current = BlizzCFG::AttrLimits[i] if current > BlizzCFG::AttrLimits[i]
    self.contents.draw_text(116, y, 64, 32, current.to_s, 2)
  end
 
  def add_points(value)
    return false if value == 0
    if BlizzCFG::ExchangeRates[index] > 0
      limit = BlizzCFG::AttrLimits[index] -
          (@current[index] + @spent[index] / BlizzCFG::ExchangeRates[index])
      remaining = (@actor.dp - @spent.sum) / BlizzCFG::ExchangeRates[index]
      limit = remaining if limit > remaining
      value = limit if value > limit
    elsif BlizzCFG::ExchangeRates[index] < 0
      value *= -BlizzCFG::ExchangeRates[index]
      limit = BlizzCFG::AttrLimits[index] -
          (@current[index] + @spent[index] * -BlizzCFG::ExchangeRates[index])
      remaining = (@actor.dp - @spent.sum) * -BlizzCFG::ExchangeRates[index]
      limit = remaining if limit > remaining
      value = limit if value > limit
      spent = (value - BlizzCFG::ExchangeRates[index] - 1) /
          -BlizzCFG::ExchangeRates[index]
    end
    if value > 0
      if BlizzCFG::ExchangeRates[index] > 0
        @spent[index] += value * BlizzCFG::ExchangeRates[index]
      elsif BlizzCFG::ExchangeRates[index] < 0
        @spent[index] += spent
      end
      return true
    end
    return false
  end
 
  def remove_points(value)
    return false if value == 0
    if BlizzCFG::ExchangeRates[index] > 0
      limit = @spent[index] / BlizzCFG::ExchangeRates[index]
      value = limit if value > limit
    elsif BlizzCFG::ExchangeRates[index] < 0
      value = @spent[index] if value > @spent[index]
      spent = value
      value *= -BlizzCFG::ExchangeRates[index]
    end
    if value > 0
      if BlizzCFG::ExchangeRates[index] > 0
        @spent[index] -= value * BlizzCFG::ExchangeRates[index]
      elsif BlizzCFG::ExchangeRates[index] < 0
        @spent[index] -= spent
      end
      return true
    end
    return false
  end
 
  def update
    super
    return unless self.active
    if Input.press?(Input::R)
      if Input.repeat?(Input::RIGHT)
        if add_points(100)
          $game_system.se_play($data_system.cursor_se)
          draw_item(self.index)
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      elsif Input.repeat?(Input::LEFT)
        if remove_points(100)
          $game_system.se_play($data_system.cursor_se)
          draw_item(self.index)
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      end
    elsif Input.press?(Input::L)
      if Input.repeat?(Input::RIGHT)
        if add_points(10)
          $game_system.se_play($data_system.cursor_se)
          draw_item(self.index)
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      elsif Input.repeat?(Input::LEFT)
        if remove_points(10)
          $game_system.se_play($data_system.cursor_se)
          draw_item(self.index)
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      end
    elsif Input.repeat?(Input::RIGHT)
      if add_points(1)
        $game_system.se_play($data_system.cursor_se)
        draw_item(self.index)
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    elsif Input.repeat?(Input::LEFT)
      if remove_points(1)
        $game_system.se_play($data_system.cursor_se)
        draw_item(self.index)
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    end
  end
 
  def update_cursor_rect
    if @index < 0 || !self.active
      self.cursor_rect.empty
    else
      super
    end
  end
 
end
 
#==============================================================================
# Window_Sure
#==============================================================================

class Window_Sure < Window_Command
 
  def initialize(width, commands)
    commands = commands.clone + ['']
    super
    @item_max, self.index = commands.size - 1, 0
    self.x, self.y, self.z = 320 - self.width / 2, 240 - self.height / 2, 10000
    refresh
  end
 
  def refresh
    super
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, self.contents.width - 8, 32,
        BlizzCFG::AreYouSure, 1)
  end
 
  def draw_item(i, color)
    self.contents.font.color = color
    rect = Rect.new(4, (i + 1) * 32, self.contents.width - 8, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(rect, @commands[i], 1)
  end
 
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(32, (@index + 1) * 32, self.contents.width - 64, 32)
    end
  end
 
end
 
#==============================================================================
# Scene_Points
#==============================================================================

class Scene_Points
 
  def initialize(classe = $scene.class)
    @scene = classe
  end
 
  def main
    @command_window = Window_Command.new(224, BlizzCFG::DistroCommands)
    @command_window.y = (BlizzCFG::WINDOW_MODE ? 256 : 0)
    actor = $game_party.actors[0]
    @status_window = Window_DistributionStatus.new(actor)
    @distro_window = Window_Distribution.new(actor)
    @dp_window = Window_DistributionPoints.new(actor)
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      break if $scene != self
    end
    Graphics.freeze
    @command_window.dispose
    @status_window.dispose
    @distro_window.dispose
    @dp_window.dispose
  end
 
  def create_confirmation_window
    @sure_window = Window_Sure.new(256, BlizzCFG::AreYouSureCommands)
  end
 
  def update
    if @command_window.active
      @command_window.update
      update_main_command
    elsif @sure_window != nil
      @sure_window.update
      update_confirmation
    elsif @distro_window.active
      @distro_window.update
      update_distro
    end
  end
 
  def update_main_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = @scene.new
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      if @command_window.index == 0
        @command_window.active, @distro_window.active = false, true
      elsif @distro_window.spent.sum > 0
        @command_window.active = false
        create_confirmation_window
      else
        @distro_window.index = 0
        check_command_window
      end
    end
  end
 
  def update_confirmation
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @sure_window.dispose
      @sure_window, @command_window.active = nil, true
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      if @sure_window.index > 0
        @distro_window.apply_new_attributes if @sure_window.index == 1
        check_command_window
      end
      @sure_window.dispose
      @sure_window, @command_window.active = nil, true
    end
  end
 
  def check_command_window
    case @command_window.index
    when 1
      i = @status_window.actor.index + 1
      i %= $game_party.actors.size
      @status_window.actor = @distro_window.actor =
          @dp_window.actor = $game_party.actors[i]
    when 2
      i = @status_window.actor.index + $game_party.actors.size - 1
      i %= $game_party.actors.size
      @status_window.actor = @distro_window.actor =
          @dp_window.actor = $game_party.actors[i]
    when 3
      $scene = @scene.new
    end
  end
 
  def update_distro
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active, @distro_window.active = true, false
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @command_window.active, @distro_window.active = true, false
    elsif Input.repeat?(Input::LEFT) || Input.repeat?(Input::RIGHT)
      @dp_window.set_dp(@distro_window.spent.sum)
    end
  end
 
end

#==============================================================================
# Scene_Battle
#==============================================================================

class Scene_Battle
 
  alias main_sds_later main
  def main
    main_sds_later
    if BlizzCFG::AUTO_CALL &&
        $game_party.actors.any? {|actor| actor.dp > 0}
      $scene = Scene_Points.new
    end
  end
 
end

#==============================================================================
# Scene_Map
#==============================================================================

class Scene_Map
 
  alias main_sds_later main
  def main
    main_sds_later
    @notify.dispose if @notify != nil
  end
 
  alias upd_sds_later update
  def update
    check_icon if BlizzCFG::DISPLAY_ICON
    upd_sds_later
    if BlizzCFG::AUTO_MAP_CALL &&
        $game_party.actors.any? {|actor| actor.dp > 0}
      $scene = Scene_Points.new
    end
  end
 
  def check_icon
    if $game_party.actors.any? {|actor| actor.dp > 0}
      if @notify == nil
        @notify = RPG::Sprite.new
        if BlizzCFG::OWN_ICON
          @notify.bitmap = RPG::Cache.icon(BlizzCFG::OWN_ICON)
        else
          @notify.bitmap = Bitmap.new(24, 24)
          @notify.bitmap.fill_rect(0, 0, 24, 24, BlizzCFG::ColorWhite)
          @notify.bitmap.fill_rect(22, 1, 2, 23, BlizzCFG::ColorBlack)
          @notify.bitmap.fill_rect(1, 22, 23, 2, BlizzCFG::ColorBlack)
          @notify.bitmap.set_pixel(23, 0, BlizzCFG::ColorBlack)
          @notify.bitmap.set_pixel(0, 23, BlizzCFG::ColorBlack)
          @notify.bitmap.fill_rect(2, 2, 20, 20, BlizzCFG::ColorIcon)
          @notify.bitmap.fill_rect(4, 10, 16, 4, BlizzCFG::ColorWhite)
          @notify.bitmap.fill_rect(10, 4, 4, 16, BlizzCFG::ColorWhite)
          @notify.opacity = BlizzCFG::ICON_OPACITY
        end
        @notify.x, @notify.y = BlizzCFG::ICON_X, BlizzCFG::ICON_Y
        @notify.z = 5000
        @notify.blink_on
      end
      @notify.update
    elsif @notify != nil
      @notify.dispose
      @notify = nil
    end
  end
 
end

Si lo pruebas, verás que en la ventana de distribución de stats se muestra el battler del actor en cuestión. El problema resulta en que yo uso un sistema de batalla lateral con sus respectivos battlers animados (los típicos de once posiciones), y claro, se ve visualmente feo pues se muestra ese battler.

El pedido sería, en pocas palabras, que en vez de mostrar el battler del actor, mostrase una picture con el mismo nombre que el personaje. Así, podría escoger personalmente lo que saldría en la ventana.

¡Muchas gracias por la atención!



     

¡Visita mis galerías de Tumblr y DeviantArt!

youkai

avatar
Perdona la demora, es que ahora mismo fue que me pude sentar a revisar el taller Ópalo Guiño
Las instrucciones vienen dentro.
Código:
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Stat Distribution System by Blizzard
# Version: 2.2b
# Type: Actor Attribute Modifier
# Date: 25.3.2007
# Date v1.1b: 6.4.2007
# Date v1.2b: 22.8.2007
# Date v1.3b: 12.9.2007
# Date v1.33b: 5.11.2007
# Date v2.0: 18.10.2009
# Date v2.01: 28.7.2010
# Date v2.1: 16.12.2011
# Date v2.2: 29.9.2012
# Date v2.2b: 30.9.2012
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Compatibility:
#
#  99% compatible with SDK v1.x. 80% compatible with SDK 2.x. WILL corrupt
#  your old savegames. Might cause problems with custom leveling up systems.
#  99% compatibility with everything else.
#
#
# Features:
#
#  - distribute points between different stats
#  - extra scene for point distribution with confirmation window at the end
#  - calls the "caller scene" automatically when finished
#  - add points by easily pressing RIGHT/LEFT
#  - hold Q to add 10 points at once
#  - hold W to add 100 points at once
#  - a Stat Distribution System that actually works like it should...
#
# new in v1.1b:
#  - added option to call the Points Scene after a fight with level ups
#  - customizable icon position and opacity
#
# new in v1.2b:
#  - improved coding and made code shorter
#  - rewritten conditions using classic syntax to avoid RGSS conditioning bug
#
# new in v1.3b:
#  - improved coding
#  - fixed bug with AUTO_CALL after battle
#  - new AUTO_MAP_CALL works on the map as well (that means it's fully
#    compatible with Blizz-ABS)
#
# new in v1.33b:
#  - improved coding
#  - improved compatibility
#  - fixed a little glitch
#
# new in v2.0:
#  - improved coding and overworked system (corrupts old savegames with older
#    version of this system!)
#  - new design
#  - new support for HP and SP
#  - now possible to configure multiple points for one stat
#
# new in v2.01:
#  - fixed bug with display of remaining DP
#
# new in v2.1:
#  - fixed bug with calculation of DP allowance
#
# new in v2.2:
#  - added possibility of using negative number in X_DP_COST values for
#    inverted exchange rates
#
# new in v2.2b:
#  - fixed a few small bugs when using inverted exchange rates
#
#
# Configuration:
#
#  Set up the configuration below.
#
#  STARTING_DP  - how many points should the actor have initially at level 1
#  DP_PER_LEVEL  - how many points should the actor gain per level
#  HP_DP_COST    - how many DP does 1 HP cost (use negative numbers for
#                  inverted exchange rate)
#  SP_DP_COST    - how many DP does 1 SP cost (use negative numbers for
#                  inverted exchange rate)
#  STR_DP_COST  - how many DP does 1 STR cost (use negative numbers for
#                  inverted exchange rate)
#  DEX_DP_COST  - how many DP does 1 DEX cost (use negative numbers for
#                  inverted exchange rate)
#  AGI_DP_COST  - how many DP does 1 AGI cost (use negative numbers for
#                  inverted exchange rate)
#  INT_DP_COST  - how many DP does 1 INT cost (use negative numbers for
#                  inverted exchange rate)
#  AUTO_CALL    - set to true to have the scene called automatically after
#                  battles if at least one character got leveled up
#  AUTO_MAP_CALL - set to true to have the scene called automatically on the
#                  map if at least one character got leveled up (this works
#                  for Blizz-ABS as well), also note that this will cause the
#                  scene to called over and over as long as not all points
#                  were distributed
#  DISPLAY_ICON  - displays an icon on the map if ANY character in the
#                  party has any points to distribute
#  OWN_ICON      - use an own icon for display, false for no or filename of
#                  your own icon (the icon has to be in the Icons folder)
#  ICON_X        - icon X coordinate
#  ICON_Y        - icon Y coordinate
#  ICON_OPACITY  - icon Y opacity
#  WINDOW_MODE  - set to true to have the command windows at the bottom, set
#                  to false to have them to at the top
#
#
#  You can always add change DP yourself by using following syntax:
#
#    $game_party.actors[POSITION].dp = VALUE
#    $game_actors[ID].dp = VALUE
#
#  POSITION - position of actor in the party (STARTS FROM ZERO!)
#  ID      - ID of actor in the database
#  VALUE    - value
#
#  You can call the Scene by using a "Call script" event command. Type into
#  the editor window this text:
#
#    $scene = Scene_Points.new
#
#
# Notes:
#
#  - Decreasing the level of an actor won't remove his gained DP. You MUST do
#    it manually.
#  - Negative numbers in X_DP_COST designate inverted exchange rates. e.g.
#    a value of 10 would designate that 10 DP are required to raise the stat
#    by 1 point while a value of -10 woulde designate that 1 DP is required to
#    increase the stat by 10 points. This convention has been added as
#    calculation with decimals (floating point numbers) can cause problems
#    during rounding due to physically limited precision.
#
#
# If you find any bugs, please report them here:
# http://www.chaosproject.co.nr
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# La sintaxis para usar este comando es la siguiente:
# {id_del_actor => "Nombre de la imagen", id_del_actor => "nombre", ....}
# la imagen debe de estar en la carpeta Pictures y es obligatorio usar la coma(,)
# para separar los grupos.
module Youkai
  Picture_Name = {1 => "Thief01", 2 => ""}
end

module BlizzCFG

  STARTING_DP = 0
  DP_PER_LEVEL = 1
  HP_DP_COST = 1
  SP_DP_COST = 1
  STR_DP_COST = 2
  DEX_DP_COST = 2
  AGI_DP_COST = 2
  INT_DP_COST = 2
  AUTO_CALL = false
  AUTO_MAP_CALL = true
  DISPLAY_ICON = true
  OWN_ICON = false
  ICON_X = 612
  ICON_Y = 452
  ICON_OPACITY = 192
  WINDOW_MODE = true
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  # constants
  HPLimit = 9999
  SPLimit = 9999
  STRLimit = 999
  DEXLimit = 999
  AGILimit = 999
  INTLimit = 999
  DPName = 'DP'
  EvasionName = 'EVA'
  EXPText = 'EXP'
  NextText = 'Siguiente'
  EquipmentText = 'Equipamiento'
  AreYouSure = '¿Seguro?'
  DistroCommands = ['Distribuir DP', 'Siguiente Personaje', 'Anterior Personaje', 'Terminar']
  AreYouSureCommands = ['Cancelar', 'Aceptar Cambios', 'Descartar Cambios']
  AttrLimits = [HPLimit, SPLimit, STRLimit, DEXLimit, AGILimit, INTLimit]
  ExchangeRates = [HP_DP_COST, SP_DP_COST, STR_DP_COST,
      DEX_DP_COST, AGI_DP_COST, INT_DP_COST]
  ColorWhite = Color.new(255, 255, 255)
  ColorBlack = Color.new(0, 0, 0)
  ColorIcon = Color.new(0, 128, 255)
  ColorIncreased = Color.new(0, 255, 0)
  # ensures compatibility
  $stat_system = 2.2
 
end

#==============================================================================
# Array
#==============================================================================

class Array
 
  def sum
    result = 0
    self.each {|i| result += i if i.is_a?(Numeric)}
    return result
  end
 
end
 
#==============================================================================
# Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
 
  attr_reader :dp
 
  alias setup_sds_later setup
  def setup(actor_id)
    @dp = BlizzCFG::STARTING_DP
    setup_sds_later(actor_id)
  end
 
  alias exp_sds_later exp=
  def exp=(exp)
    old_level = @level
    exp_sds_later(exp)
    value = (@level - old_level) * BlizzCFG::DP_PER_LEVEL
    self.dp += value if value > 0
  end
 
  def dp=(value)
    @dp = (value < 0 ? 0 : value)
  end
 
end

#==============================================================================
# Window_Base
#==============================================================================

class Window_Base < Window
 
  def draw_actor_character(actor, x, y)
    bitmap = RPG::Cache.picture(Youkai::Picture_Name[actor.id])
    cw, ch = bitmap.width, bitmap.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch / 2, bitmap, src_rect)
  end
 
  alias draw_actor_parameter_sds_later draw_actor_parameter
  def draw_actor_parameter(actor, x, y, type)
    if type == 7
      self.contents.font.color = system_color
      self.contents.draw_text(x, y, 120, 32, BlizzCFG::EvasionName)
      self.contents.font.color = normal_color
      self.contents.draw_text(x + 120, y, 36, 32, actor.eva.to_s, 2)
    else
      draw_actor_parameter_sds_later(actor, x, y, type)
    end
  end
 
end

#==============================================================================
# Window_DistributionStatus
#==============================================================================

class Window_DistributionStatus < Window_Base
 
  attr_reader :actor
 
  def initialize(actor)
    super(0, BlizzCFG::WINDOW_MODE ? 0 : 224, 640, 256)
    @actor = actor
    self.contents = Bitmap.new(width - 32, height - 32)
    if $fontface != nil
      self.contents.font.name = $fontface
      self.contents.font.size = $fontsize
    elsif $defaultfonttype != nil
      self.contents.font.name = $defaultfonttype
      self.contents.font.size = $defaultfontsize
    end
    refresh
  end
 
  def actor=(actor)
    @actor = actor
    refresh
  end
 
  def refresh
    self.contents.clear
    unless @actor == nil
      draw_actor_character(@actor, 256, 120)
      draw_actor_name(@actor, 4, 0)
      draw_actor_class(@actor, 4, 32)
      draw_actor_level(@actor, 4, 64)
      self.contents.font.color = system_color
      self.contents.draw_text(352, 16, 96, 32, BlizzCFG::EquipmentText)
      draw_item_name($data_weapons[@actor.weapon_id], 352, 64)
      draw_item_name($data_armors[@actor.armor1_id], 352, 96)
      draw_item_name($data_armors[@actor.armor2_id], 352, 128)
      draw_item_name($data_armors[@actor.armor3_id], 352, 160)
      draw_item_name($data_armors[@actor.armor4_id], 352, 192)
      self.contents.font.color = normal_color
      draw_actor_parameter(@actor, 4, 96, 0)
      draw_actor_parameter(@actor, 4, 128, 1)
      draw_actor_parameter(@actor, 4, 160, 2)
      draw_actor_parameter(@actor, 4, 192, 7)
    end
  end
 
end
 
#==============================================================================
# Window_DistributionPoints
#==============================================================================

class Window_DistributionPoints < Window_Base
 
  attr_reader :actor
  attr_reader :dp_left
 
  def initialize(actor)
    super(0, BlizzCFG::WINDOW_MODE ? 416 : 160, 224, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    if $fontface != nil
      self.contents.font.name = $fontface
      self.contents.font.size = $fontsize
    elsif $defaultfonttype != nil
      self.contents.font.name = $defaultfonttype
      self.contents.font.size = $defaultfontsize
    end
    self.actor = actor
  end
 
  def actor=(actor)
    @actor, @dp_left = actor, actor.dp
    refresh
  end
 
  def set_dp(value)
    @dp_left = actor.dp - value
    refresh
  end
 
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 32, 32, BlizzCFG::DPName)
    self.contents.font.color = normal_color
    self.contents.draw_text(36, 0, 152, 32, "#{@dp_left} / #{@actor.dp}", 2)
  end
 
end
 
#==============================================================================
# Window_Distribution
#==============================================================================

class Window_Distribution < Window_Selectable
 
  attr_reader :actor
  attr_reader :spent
 
  def initialize(actor)
    super(224, BlizzCFG::WINDOW_MODE ? 256 : 0, 416, 224)
    self.contents = Bitmap.new(width - 32, height - 32)
    if $fontface != nil
      self.contents.font.name = $fontface
      self.contents.font.size = $fontsize
    elsif $defaultfonttype != nil
      self.contents.font.name = $defaultfonttype
      self.contents.font.size = $defaultfontsize
    end
    @words = ["Max #{$data_system.words.hp}", "Max #{$data_system.words.sp}",
        $data_system.words.str, $data_system.words.dex, $data_system.words.agi,
        $data_system.words.int]
    @item_max = @words.size
    self.actor = actor
    self.active, self.index = false, 0
  end
 
  def actor=(actor)
    @actor = actor
    @current = [@actor.maxhp, @actor.maxsp, @actor.str, @actor.dex, @actor.agi,
        @actor.int]
    @spent = [0, 0, 0, 0, 0, 0]
    refresh
  end
 
  def active=(value)
    super(value)
    update_cursor_rect
  end
 
  def apply_new_attributes
    @actor.maxhp += (BlizzCFG::HP_DP_COST > 0 ?
        @spent[0] / BlizzCFG::HP_DP_COST : @spent[0] * -BlizzCFG::HP_DP_COST)
    @actor.maxsp += (BlizzCFG::SP_DP_COST > 0 ?
        @spent[1] / BlizzCFG::SP_DP_COST : @spent[1] * -BlizzCFG::SP_DP_COST)
    @actor.str += (BlizzCFG::STR_DP_COST > 0 ?
        @spent[2] / BlizzCFG::STR_DP_COST : @spent[2] * -BlizzCFG::STR_DP_COST)
    @actor.dex += (BlizzCFG::DEX_DP_COST > 0 ?
        @spent[3] / BlizzCFG::DEX_DP_COST : @spent[3] * -BlizzCFG::DEX_DP_COST)
    @actor.agi += (BlizzCFG::AGI_DP_COST > 0 ?
        @spent[4] / BlizzCFG::AGI_DP_COST : @spent[4] * -BlizzCFG::AGI_DP_COST)
    @actor.int += (BlizzCFG::INT_DP_COST > 0 ?
        @spent[5] / BlizzCFG::INT_DP_COST : @spent[5] * -BlizzCFG::INT_DP_COST)
    @actor.dp -= @spent.sum
    self.actor = @actor
  end
 
  def refresh
    self.contents.clear
    (0...@item_max).each {|i| draw_item(i)}
  end
 
  def draw_item(i)
    y = i * 32
    self.contents.fill_rect(0, y, self.contents.width, 32, Color.new(0, 0, 0, 0))
    self.contents.font.color = system_color
    self.contents.draw_text(4, y, 80, 32, @words[i])
    self.contents.draw_text(344, y, 40, 32, BlizzCFG::DPName)
    self.contents.draw_text(180, y, 12, 32, '/', 1)
    self.contents.draw_text(192, y, 64, 32, @current[i].to_s)
    self.contents.font.color = normal_color
    if BlizzCFG::ExchangeRates[i] > 0
      self.contents.draw_text(276, y, 64, 32,
          BlizzCFG::ExchangeRates[i].to_s, 2)
    elsif BlizzCFG::ExchangeRates[i] < 0
      self.contents.draw_text(276, y, 64, 32,
          "1/" + (-BlizzCFG::ExchangeRates[i]).to_s, 2)
    end
    font, self.contents.font.name = self.contents.font.name, 'Arial'
    size, self.contents.font.size = self.contents.font.size, 32
    bold, self.contents.font.bold = self.contents.font.bold, true
    self.contents.draw_text(104, y - 2, 24, 32, '«')
    self.contents.draw_text(244, y - 2, 24, 32, '»', 2)
    self.contents.font.bold = bold
    self.contents.font.size = size
    self.contents.font.bold = bold
    self.contents.font.color = BlizzCFG::ColorIncreased if @spent[i] > 0
    current = @current[i]
    if BlizzCFG::ExchangeRates[i] > 0
      current = (@current[i] + @spent[i] / BlizzCFG::ExchangeRates[i])
    elsif BlizzCFG::ExchangeRates[i] < 0
      current = (@current[i] + @spent[i] * -BlizzCFG::ExchangeRates[i])
    end
    current = BlizzCFG::AttrLimits[i] if current > BlizzCFG::AttrLimits[i]
    self.contents.draw_text(116, y, 64, 32, current.to_s, 2)
  end
 
  def add_points(value)
    return false if value == 0
    if BlizzCFG::ExchangeRates[index] > 0
      limit = BlizzCFG::AttrLimits[index] -
          (@current[index] + @spent[index] / BlizzCFG::ExchangeRates[index])
      remaining = (@actor.dp - @spent.sum) / BlizzCFG::ExchangeRates[index]
      limit = remaining if limit > remaining
      value = limit if value > limit
    elsif BlizzCFG::ExchangeRates[index] < 0
      value *= -BlizzCFG::ExchangeRates[index]
      limit = BlizzCFG::AttrLimits[index] -
          (@current[index] + @spent[index] * -BlizzCFG::ExchangeRates[index])
      remaining = (@actor.dp - @spent.sum) * -BlizzCFG::ExchangeRates[index]
      limit = remaining if limit > remaining
      value = limit if value > limit
      spent = (value - BlizzCFG::ExchangeRates[index] - 1) /
          -BlizzCFG::ExchangeRates[index]
    end
    if value > 0
      if BlizzCFG::ExchangeRates[index] > 0
        @spent[index] += value * BlizzCFG::ExchangeRates[index]
      elsif BlizzCFG::ExchangeRates[index] < 0
        @spent[index] += spent
      end
      return true
    end
    return false
  end
 
  def remove_points(value)
    return false if value == 0
    if BlizzCFG::ExchangeRates[index] > 0
      limit = @spent[index] / BlizzCFG::ExchangeRates[index]
      value = limit if value > limit
    elsif BlizzCFG::ExchangeRates[index] < 0
      value = @spent[index] if value > @spent[index]
      spent = value
      value *= -BlizzCFG::ExchangeRates[index]
    end
    if value > 0
      if BlizzCFG::ExchangeRates[index] > 0
        @spent[index] -= value * BlizzCFG::ExchangeRates[index]
      elsif BlizzCFG::ExchangeRates[index] < 0
        @spent[index] -= spent
      end
      return true
    end
    return false
  end
 
  def update
    super
    return unless self.active
    if Input.press?(Input::R)
      if Input.repeat?(Input::RIGHT)
        if add_points(100)
          $game_system.se_play($data_system.cursor_se)
          draw_item(self.index)
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      elsif Input.repeat?(Input::LEFT)
        if remove_points(100)
          $game_system.se_play($data_system.cursor_se)
          draw_item(self.index)
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      end
    elsif Input.press?(Input::L)
      if Input.repeat?(Input::RIGHT)
        if add_points(10)
          $game_system.se_play($data_system.cursor_se)
          draw_item(self.index)
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      elsif Input.repeat?(Input::LEFT)
        if remove_points(10)
          $game_system.se_play($data_system.cursor_se)
          draw_item(self.index)
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      end
    elsif Input.repeat?(Input::RIGHT)
      if add_points(1)
        $game_system.se_play($data_system.cursor_se)
        draw_item(self.index)
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    elsif Input.repeat?(Input::LEFT)
      if remove_points(1)
        $game_system.se_play($data_system.cursor_se)
        draw_item(self.index)
      else
        $game_system.se_play($data_system.buzzer_se)
      end
    end
  end
 
  def update_cursor_rect
    if @index < 0 || !self.active
      self.cursor_rect.empty
    else
      super
    end
  end
 
end
 
#==============================================================================
# Window_Sure
#==============================================================================

class Window_Sure < Window_Command
 
  def initialize(width, commands)
    commands = commands.clone + ['']
    super
    @item_max, self.index = commands.size - 1, 0
    self.x, self.y, self.z = 320 - self.width / 2, 240 - self.height / 2, 10000
    refresh
  end
 
  def refresh
    super
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, self.contents.width - 8, 32,
        BlizzCFG::AreYouSure, 1)
  end
 
  def draw_item(i, color)
    self.contents.font.color = color
    rect = Rect.new(4, (i + 1) * 32, self.contents.width - 8, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(rect, @commands[i], 1)
  end
 
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(32, (@index + 1) * 32, self.contents.width - 64, 32)
    end
  end
 
end
 
#==============================================================================
# Scene_Points
#==============================================================================

class Scene_Points
 
  def initialize(classe = $scene.class)
    @scene = classe
  end
 
  def main
    @command_window = Window_Command.new(224, BlizzCFG::DistroCommands)
    @command_window.y = (BlizzCFG::WINDOW_MODE ? 256 : 0)
    actor = $game_party.actors[0]
    @status_window = Window_DistributionStatus.new(actor)
    @distro_window = Window_Distribution.new(actor)
    @dp_window = Window_DistributionPoints.new(actor)
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      break if $scene != self
    end
    Graphics.freeze
    @command_window.dispose
    @status_window.dispose
    @distro_window.dispose
    @dp_window.dispose
  end
 
  def create_confirmation_window
    @sure_window = Window_Sure.new(256, BlizzCFG::AreYouSureCommands)
  end
 
  def update
    if @command_window.active
      @command_window.update
      update_main_command
    elsif @sure_window != nil
      @sure_window.update
      update_confirmation
    elsif @distro_window.active
      @distro_window.update
      update_distro
    end
  end
 
  def update_main_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = @scene.new
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      if @command_window.index == 0
        @command_window.active, @distro_window.active = false, true
      elsif @distro_window.spent.sum > 0
        @command_window.active = false
        create_confirmation_window
      else
        @distro_window.index = 0
        check_command_window
      end
    end
  end
 
  def update_confirmation
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @sure_window.dispose
      @sure_window, @command_window.active = nil, true
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      if @sure_window.index > 0
        @distro_window.apply_new_attributes if @sure_window.index == 1
        check_command_window
      end
      @sure_window.dispose
      @sure_window, @command_window.active = nil, true
    end
  end
 
  def check_command_window
    case @command_window.index
    when 1
      i = @status_window.actor.index + 1
      i %= $game_party.actors.size
      @status_window.actor = @distro_window.actor =
          @dp_window.actor = $game_party.actors[i]
    when 2
      i = @status_window.actor.index + $game_party.actors.size - 1
      i %= $game_party.actors.size
      @status_window.actor = @distro_window.actor =
          @dp_window.actor = $game_party.actors[i]
    when 3
      $scene = @scene.new
    end
  end
 
  def update_distro
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active, @distro_window.active = true, false
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @command_window.active, @distro_window.active = true, false
    elsif Input.repeat?(Input::LEFT) || Input.repeat?(Input::RIGHT)
      @dp_window.set_dp(@distro_window.spent.sum)
    end
  end
 
end

#==============================================================================
# Scene_Battle
#==============================================================================

class Scene_Battle
 
  alias main_sds_later main
  def main
    main_sds_later
    if BlizzCFG::AUTO_CALL &&
        $game_party.actors.any? {|actor| actor.dp > 0}
      $scene = Scene_Points.new
    end
  end
 
end

#==============================================================================
# Scene_Map
#==============================================================================

class Scene_Map
 
  alias main_sds_later main
  def main
    main_sds_later
    @notify.dispose if @notify != nil
  end
 
  alias upd_sds_later update
  def update
    check_icon if BlizzCFG::DISPLAY_ICON
    upd_sds_later
    if BlizzCFG::AUTO_MAP_CALL &&
        $game_party.actors.any? {|actor| actor.dp > 0}
      $scene = Scene_Points.new
    end
  end
 
  def check_icon
    if $game_party.actors.any? {|actor| actor.dp > 0}
      if @notify == nil
        @notify = RPG::Sprite.new
        if BlizzCFG::OWN_ICON
          @notify.bitmap = RPG::Cache.icon(BlizzCFG::OWN_ICON)
        else
          @notify.bitmap = Bitmap.new(24, 24)
          @notify.bitmap.fill_rect(0, 0, 24, 24, BlizzCFG::ColorWhite)
          @notify.bitmap.fill_rect(22, 1, 2, 23, BlizzCFG::ColorBlack)
          @notify.bitmap.fill_rect(1, 22, 23, 2, BlizzCFG::ColorBlack)
          @notify.bitmap.set_pixel(23, 0, BlizzCFG::ColorBlack)
          @notify.bitmap.set_pixel(0, 23, BlizzCFG::ColorBlack)
          @notify.bitmap.fill_rect(2, 2, 20, 20, BlizzCFG::ColorIcon)
          @notify.bitmap.fill_rect(4, 10, 16, 4, BlizzCFG::ColorWhite)
          @notify.bitmap.fill_rect(10, 4, 4, 16, BlizzCFG::ColorWhite)
          @notify.opacity = BlizzCFG::ICON_OPACITY
        end
        @notify.x, @notify.y = BlizzCFG::ICON_X, BlizzCFG::ICON_Y
        @notify.z = 5000
        @notify.blink_on
      end
      @notify.update
    elsif @notify != nil
      @notify.dispose
      @notify = nil
    end
  end
 
end

Razor

avatar
Hola Youkai, yo también tengo un pequeño pedido con el mismo script que te puso Kululu~labo en el ultimo pedido, yo el único cambio que quiero en este es que no se puedan distribuir PDs en HP y SP, en vez de eso salga un texto que te avise que no puedes, mas que esta opción se pueda anular, es decir, yo decidiré cuando se podrán agregar PDs en HP y SP, y cuando se puedan, obviamente el texto que antes avisaba que no se podía desaparezca y vuelvan a activarse los comandos default. Ópalo Sonriente

Espero que sea entendible. Ópalo Contento
Out.-





Todos mis aportes por Mediafire tienen contraseña, esa es: www.universomaker.net
Esto es para evitar plagio, asegúrense de copiar y pegar la contraseña.

youkai

avatar
Hola Razor, aqui ya te tengo tu pedido.
Como siempre, las instrucciones vienen dentro:
Código:
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Stat Distribution System by Blizzard
# Version: 2.2b
# Type: Actor Attribute Modifier
# Date: 25.3.2007
# Date v1.1b: 6.4.2007
# Date v1.2b: 22.8.2007
# Date v1.3b: 12.9.2007
# Date v1.33b: 5.11.2007
# Date v2.0: 18.10.2009
# Date v2.01: 28.7.2010
# Date v2.1: 16.12.2011
# Date v2.2: 29.9.2012
# Date v2.2b: 30.9.2012
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Compatibility:
#
#  99% compatible with SDK v1.x. 80% compatible with SDK 2.x. WILL corrupt
#  your old savegames. Might cause problems with custom leveling up systems.
#  99% compatibility with everything else.
#
#
# Features:
#
#  - distribute points between different stats
#  - extra scene for point distribution with confirmation window at the end
#  - calls the "caller scene" automatically when finished
#  - add points by easily pressing RIGHT/LEFT
#  - hold Q to add 10 points at once
#  - hold W to add 100 points at once
#  - a Stat Distribution System that actually works like it should...
#
# new in v1.1b:
#  - added option to call the Points Scene after a fight with level ups
#  - customizable icon position and opacity
#
# new in v1.2b:
#  - improved coding and made code shorter
#  - rewritten conditions using classic syntax to avoid RGSS conditioning bug
#
# new in v1.3b:
#  - improved coding
#  - fixed bug with AUTO_CALL after battle
#  - new AUTO_MAP_CALL works on the map as well (that means it's fully
#    compatible with Blizz-ABS)
#
# new in v1.33b:
#  - improved coding
#  - improved compatibility
#  - fixed a little glitch
#
# new in v2.0:
#  - improved coding and overworked system (corrupts old savegames with older
#    version of this system!)
#  - new design
#  - new support for HP and SP
#  - now possible to configure multiple points for one stat
#
# new in v2.01:
#  - fixed bug with display of remaining DP
#
# new in v2.1:
#  - fixed bug with calculation of DP allowance
#
# new in v2.2:
#  - added possibility of using negative number in X_DP_COST values for
#    inverted exchange rates
#
# new in v2.2b:
#  - fixed a few small bugs when using inverted exchange rates
#
#
# Configuration:
#
#  Set up the configuration below.
#
#  STARTING_DP  - how many points should the actor have initially at level 1
#  DP_PER_LEVEL  - how many points should the actor gain per level
#  HP_DP_COST    - how many DP does 1 HP cost (use negative numbers for
#                  inverted exchange rate)
#  SP_DP_COST    - how many DP does 1 SP cost (use negative numbers for
#                  inverted exchange rate)
#  STR_DP_COST  - how many DP does 1 STR cost (use negative numbers for
#                  inverted exchange rate)
#  DEX_DP_COST  - how many DP does 1 DEX cost (use negative numbers for
#                  inverted exchange rate)
#  AGI_DP_COST  - how many DP does 1 AGI cost (use negative numbers for
#                  inverted exchange rate)
#  INT_DP_COST  - how many DP does 1 INT cost (use negative numbers for
#                  inverted exchange rate)
#  AUTO_CALL    - set to true to have the scene called automatically after
#                  battles if at least one character got leveled up
#  AUTO_MAP_CALL - set to true to have the scene called automatically on the
#                  map if at least one character got leveled up (this works
#                  for Blizz-ABS as well), also note that this will cause the
#                  scene to called over and over as long as not all points
#                  were distributed
#  DISPLAY_ICON  - displays an icon on the map if ANY character in the
#                  party has any points to distribute
#  OWN_ICON      - use an own icon for display, false for no or filename of
#                  your own icon (the icon has to be in the Icons folder)
#  ICON_X        - icon X coordinate
#  ICON_Y        - icon Y coordinate
#  ICON_OPACITY  - icon Y opacity
#  WINDOW_MODE  - set to true to have the command windows at the bottom, set
#                  to false to have them to at the top
#
#
#  You can always add change DP yourself by using following syntax:
#
#    $game_party.actors[POSITION].dp = VALUE
#    $game_actors[ID].dp = VALUE
#
#  POSITION - position of actor in the party (STARTS FROM ZERO!)
#  ID      - ID of actor in the database
#  VALUE    - value
#
#  You can call the Scene by using a "Call script" event command. Type into
#  the editor window this text:
#
#    $scene = Scene_Points.new
#
#
# Notes:
#
#  - Decreasing the level of an actor won't remove his gained DP. You MUST do
#    it manually.
#  - Negative numbers in X_DP_COST designate inverted exchange rates. e.g.
#    a value of 10 would designate that 10 DP are required to raise the stat
#    by 1 point while a value of -10 woulde designate that 1 DP is required to
#    increase the stat by 10 points. This convention has been added as
#    calculation with decimals (floating point numbers) can cause problems
#    during rounding due to physically limited precision.
#
#
# If you find any bugs, please report them here:
# http://www.chaosproject.co.nr
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

module Youkai
  # ID del interruptor que determina si se pueden cambiar DP's por HP/SP
  # Activado = se puede/Desactivado = no
  Switch_ID = 50
  # Texto a mostrar cuando no se pueda cambiar HP/SP
  Invalid_Text = "No puedes cambiar ahora"
  # Y esto es un detalle extra =P
  # Si esta en true, hace que cuando se agregen DP's a la vida maxima, se le sume
  # igual cantidad a la vida actual del actor.
  Sum_HP_SP = true
end

module BlizzCFG

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  STARTING_DP = 50
  DP_PER_LEVEL = 1
  HP_DP_COST = 1
  SP_DP_COST = 1
  STR_DP_COST = 2
  DEX_DP_COST = 2
  AGI_DP_COST = 2
  INT_DP_COST = 2
  AUTO_CALL = false
  AUTO_MAP_CALL = false
  DISPLAY_ICON = true
  OWN_ICON = false
  ICON_X = 612
  ICON_Y = 452
  ICON_OPACITY = 192
  WINDOW_MODE = true
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  # constants
  HPLimit = 9999
  SPLimit = 9999
  STRLimit = 999
  DEXLimit = 999
  AGILimit = 999
  INTLimit = 999
  DPName = 'DP'
  EvasionName = 'EVA'
  EXPText = 'EXP'
  NextText = 'Siguiente'
  EquipmentText = 'Equipamiento'
  AreYouSure = '¿Seguro?'
  DistroCommands = ['Distribuir DP', 'Siguiente Personaje', 'Anterior Personaje', 'Terminar']
  AreYouSureCommands = ['Cancelar', 'Aceptar Cambios', 'Descartar Cambios']
  AttrLimits = [HPLimit, SPLimit, STRLimit, DEXLimit, AGILimit, INTLimit]
  ExchangeRates = [HP_DP_COST, SP_DP_COST, STR_DP_COST,
      DEX_DP_COST, AGI_DP_COST, INT_DP_COST]
  ColorWhite = Color.new(255, 255, 255)
  ColorBlack = Color.new(0, 0, 0)
  ColorIcon = Color.new(0, 128, 255)
  ColorIncreased = Color.new(0, 255, 0)
  # ensures compatibility
  $stat_system = 2.2
 
end

#==============================================================================
# Array
#==============================================================================

class Array
 
  def sum
    result = 0
    self.each {|i| result += i if i.is_a?(Numeric)}
    return result
  end
 
end
 
#==============================================================================
# Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
 
  attr_reader :dp
 
  alias setup_sds_later setup
  def setup(actor_id)
    @dp = BlizzCFG::STARTING_DP
    setup_sds_later(actor_id)
  end
 
  alias exp_sds_later exp=
  def exp=(exp)
    old_level = @level
    exp_sds_later(exp)
    value = (@level - old_level) * BlizzCFG::DP_PER_LEVEL
    self.dp += value if value > 0
  end
 
  def dp=(value)
    @dp = (value < 0 ? 0 : value)
  end
 
end

#==============================================================================
# Window_Base
#==============================================================================

class Window_Base < Window
 
  def draw_actor_character(actor, x, y)
    bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
    cw, ch = bitmap.width, bitmap.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch / 2, bitmap, src_rect)
  end
 
  alias draw_actor_parameter_sds_later draw_actor_parameter
  def draw_actor_parameter(actor, x, y, type)
    if type == 7
      self.contents.font.color = system_color
      self.contents.draw_text(x, y, 120, 32, BlizzCFG::EvasionName)
      self.contents.font.color = normal_color
      self.contents.draw_text(x + 120, y, 36, 32, actor.eva.to_s, 2)
    else
      draw_actor_parameter_sds_later(actor, x, y, type)
    end
  end
 
end

#==============================================================================
# Window_DistributionStatus
#==============================================================================

class Window_DistributionStatus < Window_Base
 
  attr_reader :actor
 
  def initialize(actor)
    super(0, BlizzCFG::WINDOW_MODE ? 0 : 224, 640, 256)
    @actor = actor
    self.contents = Bitmap.new(width - 32, height - 32)
    if $fontface != nil
      self.contents.font.name = $fontface
      self.contents.font.size = $fontsize
    elsif $defaultfonttype != nil
      self.contents.font.name = $defaultfonttype
      self.contents.font.size = $defaultfontsize
    end
    refresh
  end
 
  def actor=(actor)
    @actor = actor
    refresh
  end
 
  def refresh
    self.contents.clear
    unless @actor == nil
      draw_actor_character(@actor, 256, 120)
      draw_actor_name(@actor, 4, 0)
      draw_actor_class(@actor, 4, 32)
      draw_actor_level(@actor, 4, 64)
      self.contents.font.color = system_color
      self.contents.draw_text(352, 16, 96, 32, BlizzCFG::EquipmentText)
      draw_item_name($data_weapons[@actor.weapon_id], 352, 64)
      draw_item_name($data_armors[@actor.armor1_id], 352, 96)
      draw_item_name($data_armors[@actor.armor2_id], 352, 128)
      draw_item_name($data_armors[@actor.armor3_id], 352, 160)
      draw_item_name($data_armors[@actor.armor4_id], 352, 192)
      self.contents.font.color = normal_color
      draw_actor_parameter(@actor, 4, 96, 0)
      draw_actor_parameter(@actor, 4, 128, 1)
      draw_actor_parameter(@actor, 4, 160, 2)
      draw_actor_parameter(@actor, 4, 192, 7)
    end
  end
 
end
 
#==============================================================================
# Window_DistributionPoints
#==============================================================================

class Window_DistributionPoints < Window_Base
 
  attr_reader :actor
  attr_reader :dp_left
 
  def initialize(actor)
    super(0, BlizzCFG::WINDOW_MODE ? 416 : 160, 224, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    if $fontface != nil
      self.contents.font.name = $fontface
      self.contents.font.size = $fontsize
    elsif $defaultfonttype != nil
      self.contents.font.name = $defaultfonttype
      self.contents.font.size = $defaultfontsize
    end
    self.actor = actor
  end
 
  def actor=(actor)
    @actor, @dp_left = actor, actor.dp
    refresh
  end
 
  def set_dp(value)
    @dp_left = actor.dp - value
    refresh
  end
 
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 32, 32, BlizzCFG::DPName)
    self.contents.font.color = normal_color
    self.contents.draw_text(36, 0, 152, 32, "#{@dp_left} / #{@actor.dp}", 2)
  end
 
end
 
#==============================================================================
# Window_Distribution
#==============================================================================

class Window_Distribution < Window_Selectable
 
  attr_reader :actor
  attr_reader :spent
 
  def initialize(actor)
    super(224, BlizzCFG::WINDOW_MODE ? 256 : 0, 416, 224)
    self.contents = Bitmap.new(width - 32, height - 32)
    if $fontface != nil
      self.contents.font.name = $fontface
      self.contents.font.size = $fontsize
    elsif $defaultfonttype != nil
      self.contents.font.name = $defaultfonttype
      self.contents.font.size = $defaultfontsize
    end
    @words = ["Max #{$data_system.words.hp}", "Max #{$data_system.words.sp}",
        $data_system.words.str, $data_system.words.dex, $data_system.words.agi,
        $data_system.words.int]
    @item_max = @words.size
    self.actor = actor
    self.active, self.index = false, 0
  end
 
  def actor=(actor)
    @actor = actor
    @current = [@actor.maxhp, @actor.maxsp, @actor.str, @actor.dex, @actor.agi,
        @actor.int]
    @spent = [0, 0, 0, 0, 0, 0]
    refresh
  end
 
  def active=(value)
    super(value)
    update_cursor_rect
  end
 
  def apply_new_attributes
    @actor.maxhp += (BlizzCFG::HP_DP_COST > 0 ?
        @spent[0] / BlizzCFG::HP_DP_COST : @spent[0] * -BlizzCFG::HP_DP_COST)
    @actor.maxsp += (BlizzCFG::SP_DP_COST > 0 ?
        @spent[1] / BlizzCFG::SP_DP_COST : @spent[1] * -BlizzCFG::SP_DP_COST)
    @actor.str += (BlizzCFG::STR_DP_COST > 0 ?
        @spent[2] / BlizzCFG::STR_DP_COST : @spent[2] * -BlizzCFG::STR_DP_COST)
    @actor.dex += (BlizzCFG::DEX_DP_COST > 0 ?
        @spent[3] / BlizzCFG::DEX_DP_COST : @spent[3] * -BlizzCFG::DEX_DP_COST)
    @actor.agi += (BlizzCFG::AGI_DP_COST > 0 ?
        @spent[4] / BlizzCFG::AGI_DP_COST : @spent[4] * -BlizzCFG::AGI_DP_COST)
    @actor.int += (BlizzCFG::INT_DP_COST > 0 ?
        @spent[5] / BlizzCFG::INT_DP_COST : @spent[5] * -BlizzCFG::INT_DP_COST)
    if Youkai::Sum_HP_SP
      @actor.hp += (BlizzCFG::HP_DP_COST > 0 ?
        @spent[0] / BlizzCFG::HP_DP_COST : @spent[0] * -BlizzCFG::HP_DP_COST)
    @actor.sp += (BlizzCFG::SP_DP_COST > 0 ?
        @spent[1] / BlizzCFG::SP_DP_COST : @spent[1] * -BlizzCFG::SP_DP_COST)
    end
    @actor.dp -= @spent.sum
    self.actor = @actor
  end
 
  def refresh
    self.contents.clear
    (0...@item_max).each {|i| draw_item(i)}
  end
 
  def draw_item(i)
    y = i * 32
    self.contents.fill_rect(0, y, self.contents.width, 32, Color.new(0, 0, 0, 0))
    self.contents.font.color = system_color
    self.contents.draw_text(4, y, 80, 32, @words[i])
    if $game_switches[Youkai::Switch_ID] || i > 1
      self.contents.draw_text(344, y, 40, 32, BlizzCFG::DPName)
      self.contents.draw_text(180, y, 12, 32, '/', 1)
      self.contents.draw_text(192, y, 64, 32, @current[i].to_s)
      self.contents.font.color = normal_color
      if BlizzCFG::ExchangeRates[i] > 0
        self.contents.draw_text(276, y, 64, 32,
            BlizzCFG::ExchangeRates[i].to_s, 2)
      elsif BlizzCFG::ExchangeRates[i] < 0
        self.contents.draw_text(276, y, 64, 32,
            "1/" + (-BlizzCFG::ExchangeRates[i]).to_s, 2)
      end
      font, self.contents.font.name = self.contents.font.name, 'Arial'
      size, self.contents.font.size = self.contents.font.size, 32
      bold, self.contents.font.bold = self.contents.font.bold, true
      self.contents.draw_text(104, y - 2, 24, 32, '«')
      self.contents.draw_text(244, y - 2, 24, 32, '»', 2)
      self.contents.font.bold = bold
      self.contents.font.size = size
      self.contents.font.bold = bold
      self.contents.font.color = BlizzCFG::ColorIncreased if @spent[i] > 0
      current = @current[i]
      if BlizzCFG::ExchangeRates[i] > 0
        current = (@current[i] + @spent[i] / BlizzCFG::ExchangeRates[i])
      elsif BlizzCFG::ExchangeRates[i] < 0
        current = (@current[i] + @spent[i] * -BlizzCFG::ExchangeRates[i])
      end
      current = BlizzCFG::AttrLimits[i] if current > BlizzCFG::AttrLimits[i]
      self.contents.draw_text(116, y, 64, 32, current.to_s, 2)
    elsif !$game_switches[Youkai::Switch_ID] && i <= 1
      self.contents.font.color = knockout_color
      self.contents.draw_text(116, y, 192, 32, Youkai::Invalid_Text)
    end
  end
 
  def add_points(value)
    return false if value == 0
    if BlizzCFG::ExchangeRates[index] > 0
      limit = BlizzCFG::AttrLimits[index] -
          (@current[index] + @spent[index] / BlizzCFG::ExchangeRates[index])
      remaining = (@actor.dp - @spent.sum) / BlizzCFG::ExchangeRates[index]
      limit = remaining if limit > remaining
      value = limit if value > limit
    elsif BlizzCFG::ExchangeRates[index] < 0
      value *= -BlizzCFG::ExchangeRates[index]
      limit = BlizzCFG::AttrLimits[index] -
          (@current[index] + @spent[index] * -BlizzCFG::ExchangeRates[index])
      remaining = (@actor.dp - @spent.sum) * -BlizzCFG::ExchangeRates[index]
      limit = remaining if limit > remaining
      value = limit if value > limit
      spent = (value - BlizzCFG::ExchangeRates[index] - 1) /
          -BlizzCFG::ExchangeRates[index]
    end
    if value > 0
      if BlizzCFG::ExchangeRates[index] > 0
        @spent[index] += value * BlizzCFG::ExchangeRates[index]
      elsif BlizzCFG::ExchangeRates[index] < 0
        @spent[index] += spent
      end
      return true
    end
    return false
  end
 
  def remove_points(value)
    return false if value == 0
    if BlizzCFG::ExchangeRates[index] > 0
      limit = @spent[index] / BlizzCFG::ExchangeRates[index]
      value = limit if value > limit
    elsif BlizzCFG::ExchangeRates[index] < 0
      value = @spent[index] if value > @spent[index]
      spent = value
      value *= -BlizzCFG::ExchangeRates[index]
    end
    if value > 0
      if BlizzCFG::ExchangeRates[index] > 0
        @spent[index] -= value * BlizzCFG::ExchangeRates[index]
      elsif BlizzCFG::ExchangeRates[index] < 0
        @spent[index] -= spent
      end
      return true
    end
    return false
  end
 
  def update
    super
    return unless self.active
    if $game_switches[Youkai::Switch_ID] || self.index > 1
      if Input.press?(Input::R)
        if Input.repeat?(Input::RIGHT)
          if add_points(100)
            $game_system.se_play($data_system.cursor_se)
            draw_item(self.index)
          else
            $game_system.se_play($data_system.buzzer_se)
          end
        elsif Input.repeat?(Input::LEFT)
          if remove_points(100)
            $game_system.se_play($data_system.cursor_se)
            draw_item(self.index)
          else
            $game_system.se_play($data_system.buzzer_se)
          end
        end
      elsif Input.press?(Input::L)
        if Input.repeat?(Input::RIGHT)
          if add_points(10)
            $game_system.se_play($data_system.cursor_se)
            draw_item(self.index)
          else
            $game_system.se_play($data_system.buzzer_se)
          end
        elsif Input.repeat?(Input::LEFT)
          if remove_points(10)
            $game_system.se_play($data_system.cursor_se)
            draw_item(self.index)
          else
            $game_system.se_play($data_system.buzzer_se)
          end
        end
      elsif Input.repeat?(Input::RIGHT)
        if add_points(1)
          $game_system.se_play($data_system.cursor_se)
          draw_item(self.index)
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      elsif Input.repeat?(Input::LEFT)
        if remove_points(1)
          $game_system.se_play($data_system.cursor_se)
          draw_item(self.index)
        else
          $game_system.se_play($data_system.buzzer_se)
        end
      end
    end
  end
 
  def update_cursor_rect
    if @index < 0 || !self.active
      self.cursor_rect.empty
    else
      super
    end
  end
 
end
 
#==============================================================================
# Window_Sure
#==============================================================================

class Window_Sure < Window_Command
 
  def initialize(width, commands)
    commands = commands.clone + ['']
    super
    @item_max, self.index = commands.size - 1, 0
    self.x, self.y, self.z = 320 - self.width / 2, 240 - self.height / 2, 10000
    refresh
  end
 
  def refresh
    super
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, self.contents.width - 8, 32,
        BlizzCFG::AreYouSure, 1)
  end
 
  def draw_item(i, color)
    self.contents.font.color = color
    rect = Rect.new(4, (i + 1) * 32, self.contents.width - 8, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(rect, @commands[i], 1)
  end
 
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(32, (@index + 1) * 32, self.contents.width - 64, 32)
    end
  end
 
end
 
#==============================================================================
# Scene_Points
#==============================================================================

class Scene_Points
 
  def initialize(classe = $scene.class)
    @scene = classe
  end
 
  def main
    @command_window = Window_Command.new(224, BlizzCFG::DistroCommands)
    @command_window.y = (BlizzCFG::WINDOW_MODE ? 256 : 0)
    actor = $game_party.actors[0]
    @status_window = Window_DistributionStatus.new(actor)
    @distro_window = Window_Distribution.new(actor)
    @dp_window = Window_DistributionPoints.new(actor)
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      break if $scene != self
    end
    Graphics.freeze
    @command_window.dispose
    @status_window.dispose
    @distro_window.dispose
    @dp_window.dispose
  end
 
  def create_confirmation_window
    @sure_window = Window_Sure.new(256, BlizzCFG::AreYouSureCommands)
  end
 
  def update
    if @command_window.active
      @command_window.update
      update_main_command
    elsif @sure_window != nil
      @sure_window.update
      update_confirmation
    elsif @distro_window.active
      @distro_window.update
      update_distro
    end
  end
 
  def update_main_command
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = @scene.new
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      if @command_window.index == 0
        @command_window.active, @distro_window.active = false, true
      elsif @distro_window.spent.sum > 0
        @command_window.active = false
        create_confirmation_window
      else
        @distro_window.index = 0
        check_command_window
      end
    end
  end
 
  def update_confirmation
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @sure_window.dispose
      @sure_window, @command_window.active = nil, true
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      if @sure_window.index > 0
        @distro_window.apply_new_attributes if @sure_window.index == 1
        check_command_window
      end
      @sure_window.dispose
      @sure_window, @command_window.active = nil, true
    end
  end
 
  def check_command_window
    case @command_window.index
    when 1
      i = @status_window.actor.index + 1
      i %= $game_party.actors.size
      @status_window.actor = @distro_window.actor =
          @dp_window.actor = $game_party.actors[i]
    when 2
      i = @status_window.actor.index + $game_party.actors.size - 1
      i %= $game_party.actors.size
      @status_window.actor = @distro_window.actor =
          @dp_window.actor = $game_party.actors[i]
    when 3
      $scene = @scene.new
    end
  end
 
  def update_distro
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @command_window.active, @distro_window.active = true, false
    elsif Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @command_window.active, @distro_window.active = true, false
    elsif Input.repeat?(Input::LEFT) || Input.repeat?(Input::RIGHT)
      @dp_window.set_dp(@distro_window.spent.sum)
    end
  end
 
end

#==============================================================================
# Scene_Battle
#==============================================================================

class Scene_Battle
 
  alias main_sds_later main
  def main
    main_sds_later
    if BlizzCFG::AUTO_CALL &&
        $game_party.actors.any? {|actor| actor.dp > 0}
      $scene = Scene_Points.new
    end
  end
 
end

#==============================================================================
# Scene_Map
#==============================================================================

class Scene_Map
 
  alias main_sds_later main
  def main
    main_sds_later
    @notify.dispose if @notify != nil
  end
 
  alias upd_sds_later update
  def update
    check_icon if BlizzCFG::DISPLAY_ICON
    upd_sds_later
    if BlizzCFG::AUTO_MAP_CALL &&
        $game_party.actors.any? {|actor| actor.dp > 0}
      $scene = Scene_Points.new
    end
  end
 
  def check_icon
    if $game_party.actors.any? {|actor| actor.dp > 0}
      if @notify == nil
        @notify = RPG::Sprite.new
        if BlizzCFG::OWN_ICON
          @notify.bitmap = RPG::Cache.icon(BlizzCFG::OWN_ICON)
        else
          @notify.bitmap = Bitmap.new(24, 24)
          @notify.bitmap.fill_rect(0, 0, 24, 24, BlizzCFG::ColorWhite)
          @notify.bitmap.fill_rect(22, 1, 2, 23, BlizzCFG::ColorBlack)
          @notify.bitmap.fill_rect(1, 22, 23, 2, BlizzCFG::ColorBlack)
          @notify.bitmap.set_pixel(23, 0, BlizzCFG::ColorBlack)
          @notify.bitmap.set_pixel(0, 23, BlizzCFG::ColorBlack)
          @notify.bitmap.fill_rect(2, 2, 20, 20, BlizzCFG::ColorIcon)
          @notify.bitmap.fill_rect(4, 10, 16, 4, BlizzCFG::ColorWhite)
          @notify.bitmap.fill_rect(10, 4, 4, 16, BlizzCFG::ColorWhite)
          @notify.opacity = BlizzCFG::ICON_OPACITY
        end
        @notify.x, @notify.y = BlizzCFG::ICON_X, BlizzCFG::ICON_Y
        @notify.z = 5000
        @notify.blink_on
      end
      @notify.update
    elsif @notify != nil
      @notify.dispose
      @notify = nil
    end
  end
 
end
Saludos,
¥oukai

rpgmanumaker

avatar
Podrías hacerme un script que me permita añadir unas imágenes a la que le pueda añadir texto. También quiero que las elecciones "Nueva partida", "Continuar" y "Salir" sean imágenes que yo agregue no sé si me explico...
Si no lo entiendes dime e intento explicarlo un poco mejor XD.

youkai

avatar
Muy bien manu, me encargo de eso y perdona por responder TAN tarde, es que ando de cosas hasta...ya saben como es eso ^^
Pronto te lo pongo por aqui, no te preocupes.
Saludos,
¥oukai
EDIT:
Aqui esta el script de Title que me pediste manu, disculpa la demora, es que ando mas que liado con las pruebas y todo lo demas:
http://www.universomaker.net/t2026-youkai-custom-ace-title

Ledai

avatar
Hola!!! Vengo ha hacerte un pedido, y pregunto si podrás atendermelo, en realidad no sé si entender el pedido (tengo que pensar en como explicártelo) te costará más que hacerlo, de todos modos trata de los panoramas en el maker por si tienes idea del tema.
Dime si puedo encargártelo o si tienes tiempo ¿OK?
Saludotes y nos leemos por aquí!!!




Entérate de todas las novedades

youkai

avatar
Y bien...cual era el pedido?
Ya veo que tiene que ver con los panoramas y te puedo ayudar...siempre y cuando me digas que es lo que necesitas. Para la proxima trata de hacer el pedido completo. XDD
Por cierto, los detalles damelos por MP porque razor ya me regaño ¬¬"...
Saludos!! Espero los detalles
¥oukai

alex.fayula

avatar
Vengo con un pedido youkai. A ver trata de los siguiente:

Para el VX Ace tengo un script de título que me permite colocar una imagen antes del título en forma de Logo.

Y otro que me hace los efectos que quiero que salgan en el titulo. Los 2 son del mismo autor MOG.

El tema sería combinar estos 2 scritps, es decir que en el segundo quede exactamente igual pero que se le añada la opción del logo del primero (solo la opción del logo, el resto del primero no lo quiero para nada).

A ver si puedes hacerlo jeje

Aquí los scripts:
Logo:
Código:
#==============================================================================
# +++ MOG - Animated Title A (v1.0) +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com/
#==============================================================================
# Tela de titulo animado, com logo, imagens aleatórias e outros efeitos visuais.
#==============================================================================
# Nota - Serão necessários as seguintes imagens na pasta Graphics/Titles2/
#
#
# Firefly.png
# Logo.jpg      (Opcional - Caso for usar o efeito logo.)
#
#==============================================================================
# Para definir a imagem de texto basta selecionar no banco de dados
# a imagem do titulo numero 2 (Segunda camada)
#
#==============================================================================
module MOG_SCENE_TITLE_A
  #Definição das pictures.
  RANDOM_PICTURES = ["Title0", "Title1", "Title2", "Title3", "Title4"]
  #Tempo de duração para ativar a troca de imagens.
  RANDOM_PICTURES_DURATION = 10#(sec)
  #Seleção aleatória.
  RAMDOM_SELECTION = false
  #Posição do comando.
  COMMANDS_POS = [170 , 300]
  #Ativar Particulas.
  FIREFLY = true
  #Ativar Logo
  LOGO = true
  #Duração do logo.
  LOGO_DURATION = 2#(Sec)
end

#==============================================================================
# ■ Window TitleCommand
#==============================================================================
class Window_TitleCommand < Window_Command
  attr_reader :list
end

#==============================================================================
# ■ FireFly
#==============================================================================
class Firefly < Sprite
 
 #--------------------------------------------------------------------------
 # ● Initialize
 #--------------------------------------------------------------------------           
  def initialize(viewport = nil)
      super(viewport)
      self.bitmap = Cache.title2("Firefly")
      reset_setting
  end 
 
 #--------------------------------------------------------------------------
 # ● Reset Setting
 #--------------------------------------------------------------------------             
  def reset_setting
      zoom = (50 + rand(100)) / 100.1
      self.zoom_x = zoom
      self.zoom_y = zoom
      self.x = rand(544)
      self.y = rand(416 + self.bitmap.height)
      self.opacity = 0
      self.angle = rand(360)
      self.blend_type = 1
      @speed_x = 0
      @speed_y = [[rand(4), 4].min, 1].max
      @speed_a = rand(3)
  end
 
 #--------------------------------------------------------------------------
 # ● Dispose
 #--------------------------------------------------------------------------             
  def dispose
      super
      self.bitmap.dispose
  end 
 
 #--------------------------------------------------------------------------
 # ● Update
 #--------------------------------------------------------------------------             
  def update
      super
      self.x += @speed_x
      self.y -= @speed_y
      self.angle += @speed_a     
      self.opacity += 5
      reset_setting if self.y < 0
  end 
 
end

#==============================================================================
# ■ Scene Title
#==============================================================================
class Scene_Title < Scene_Base
 include MOG_SCENE_TITLE_A
 
 #--------------------------------------------------------------------------
 # ● Start
 #--------------------------------------------------------------------------         
 def start
    super
    SceneManager.clear
    @phase = 1
    @phase_time = -1
    create_logo if LOGO   
    create_command_window
    create_commands
    create_background
    create_light
    play_title_music unless LOGO
 end 
 
 #--------------------------------------------------------------------------
 # ● Create_Logo
 #--------------------------------------------------------------------------         
 def create_logo
    @phase = 0
    @logo = Sprite.new
    @logo.bitmap = Cache.title2("Logo")
    @logo.opacity = 0
    @logo_duration = 180 + (LOGO_DURATION * 60)
 end
 
 #--------------------------------------------------------------------------
 # ● Create Commands
 #--------------------------------------------------------------------------         
 def create_commands
    @command_window.visible = false
    @commands_index_old = -1
    @commands = []
    @commands_shake_duration = 0
    index = 0
    for com in @command_window.list
        sprite = Sprite.new
        sprite.bitmap = Bitmap.new(200,32)
        sprite.bitmap.font.size = 24
        sprite.bitmap.font.bold = true
        sprite.bitmap.font.italic = true
        sprite.bitmap.draw_text(0, 0, 200, 32, com[:name].to_s,1)
        sprite.x = COMMANDS_POS[0] - 100 - (index * 20)
        sprite.y = index * sprite.bitmap.height + COMMANDS_POS[1]
        sprite.z = 100 + index
        sprite.opacity = 0
        index += 1
        @commands.push(sprite)
    end
    @command_max = index 
 end
 
  #--------------------------------------------------------------------------
  # ● create_background
  #--------------------------------------------------------------------------
  def create_background
      @rand_title_duration = 120
      @old_back_index = 0
      @sprite1 = Plane.new
      @sprite1.opacity = 0
      if RAMDOM_SELECTION
        execute_random_picture(false)
      else
        execute_random_picture(true)
      end
      @sprite2 = Plane.new
      @sprite2.bitmap = Cache.title2($data_system.title2_name)
      @sprite2.z = 100
      @sprite2.opacity = 0
  end
 
  #--------------------------------------------------------------------------
  # ● Create Light
  #-------------------------------------------------------------------------- 
  def create_light
      return unless FIREFLY
      @light_viewport = Viewport.new(-32, -32, 576, 448)
      @light_bitmap =[]
      for i in 0...20
          @light_bitmap.push(Firefly.new(@light_viewport))
      end 
  end
   
  #--------------------------------------------------------------------------
  # ● dispose Background1
  #--------------------------------------------------------------------------
  def dispose_background1
      @sprite1.bitmap.dispose
      @sprite1.bitmap = nil
      @sprite1.dispose
      @sprite1 = nil
  end
 
 #--------------------------------------------------------------------------
 # ● Dispose Background2
 #--------------------------------------------------------------------------               
  def dispose_background2
      if @sprite2.bitmap != nil
        @sprite2.bitmap.dispose
        @sprite2.bitmap = nil
        @sprite2.dispose
        @sprite2 = nil
      end
  end
   
 #--------------------------------------------------------------------------
 # ● Dispose Light
 #--------------------------------------------------------------------------             
  def dispose_light
      return unless FIREFLY
      if @light_bitmap != nil
        for i in @light_bitmap
            i.dispose
        end
        @light_viewport.dispose
        @light_bitmap = nil
      end     
  end   
 
 #--------------------------------------------------------------------------
 # ● Dispose Logo
 #--------------------------------------------------------------------------           
 def dispose_logo
    return unless LOGO
    @logo.bitmap.dispose
    @logo.dispose
 end 
 
 #--------------------------------------------------------------------------
 # ● Terminate
 #--------------------------------------------------------------------------           
 def terminate
    super
    dispose_background1
    dispose_background2
    dispose_light
    dispose_logo
    for com in @commands
        com.bitmap.dispose
        com.dispose
    end 
 end 
 
 #--------------------------------------------------------------------------
 # ● Update
 #--------------------------------------------------------------------------           
 def update
    super
    update_logo
    update_initial_animation
    update_command
    update_background
    update_light
 end
 
 #--------------------------------------------------------------------------
 # ● Update Logo
 #--------------------------------------------------------------------------           
 def update_logo
    return if @phase != 0
    loop do
        break if  @logo_duration == 0
        execute_logo
        Graphics.update
    end
    play_title_music
 end
 
 #--------------------------------------------------------------------------
 # ● Execute Logo
 #--------------------------------------------------------------------------           
 def execute_logo
    @logo_duration -= 1
    if @logo_duration > 120
        @logo.opacity += 5
    else
        @logo.opacity -= 5
    end
    if @logo.opacity <= 0
        @logo_duration = 0
        @phase = 1
    end   
 end
 
 #--------------------------------------------------------------------------
 # ● Update Background
 #--------------------------------------------------------------------------             
 def update_background
    @sprite2.opacity += 5
    return if RANDOM_PICTURES.size == 1
    @rand_title_duration -= 1
    if @rand_title_duration <= 0
        @sprite1.opacity -= 5
    else
        @sprite1.opacity += 5
    end 
    return if @sprite1.opacity != 0
    execute_random_picture
 end
 
 #--------------------------------------------------------------------------
 # ● Execute Random Picture
 #--------------------------------------------------------------------------             
 def execute_random_picture(initial = false)
    @rand_title_duration = [[60 * RANDOM_PICTURES_DURATION, 9999].min, 60].max
    if @sprite1.bitmap != nil
        @sprite1.bitmap.dispose
        @sprite1.bitmap = nil
    end
    if RAMDOM_SELECTION
        rand_pic = rand(RANDOM_PICTURES.size)
        if rand_pic == @old_back_index
            rand_pic += 1
            rand_pic = 0 if rand_pic >= RANDOM_PICTURES.size
        end
        @old_back_index = rand_pic 
    else
        @old_back_index += 1 unless initial
        @old_back_index = 0 if @old_back_index >= RANDOM_PICTURES.size
    end
    pic = RANDOM_PICTURES[@old_back_index]   
    @sprite1.bitmap = Cache.title1(pic)
 end
 
 #--------------------------------------------------------------------------
 # ● Update Light
 #--------------------------------------------------------------------------             
 def update_light
    return unless FIREFLY
    if @light_bitmap != nil
        for i in @light_bitmap
            i.update
        end 
    end 
 end
   
 #--------------------------------------------------------------------------
 # ● Update Initial Animation
 #--------------------------------------------------------------------------             
 def update_initial_animation
    return if @phase != 1
    @phase_time -= 1 if @phase_time > 0
    if @phase_time == 0
        @phase = 2
        @phase_time = 30
    end 
    for i in @commands
        index = 0
        if i.x < COMMANDS_POS[0]
          i.x += 5 + (2 * index)
          i.opacity += 10
          if i.x >= COMMANDS_POS[0]
              i.x = COMMANDS_POS[0]
              i.opacity = 255
              if @phase_time < 15 / 2
                @phase_time = 15
              end 
          end 
        end
        index += 1
    end 
 end 
 
 #--------------------------------------------------------------------------
 # ● Update Command
 #--------------------------------------------------------------------------             
 def update_command
    return if @phase != 2 
    update_command_slide
 end
 
 #--------------------------------------------------------------------------
 # ● Update Command Slide
 #--------------------------------------------------------------------------             
 def update_command_slide
    if @commands_index_old != @command_window.index
        @commands_index_old = @command_window.index
        @commands_shake_duration = 30
    end
    return if @commands_shake_duration == 0
    @commands_shake_duration -= 1 if @commands_shake_duration > 0     
    for i in @commands
      if (i.z - 100) == @command_window.index
          i.opacity += 10
          i.x = COMMANDS_POS[0] + rand(@commands_shake_duration)
      else 
          i.opacity -= 7 if i.opacity > 100
          i.x = COMMANDS_POS[0]
      end
    end 
 end

end

$mog_rgss3_animated_title_a = true

Y el bueno en sí xD
Código:
#==============================================================================
# +++ MOG - Madoka Title Screen (v1.0) +++ /人◕ ‿‿ ◕人\
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com/
#==============================================================================
# Tela de titulo animado com o tema do anime Puella Magi Madoka Magica.
# Naturalmente você pode colocar qualquer personagem.
#==============================================================================
module MOG_MADOKA_TITLE_SCREEN
  #Posição do titulo.
  TITLE_POSITION = [40,70]
  #Velocidade de deslize da imagem de fundo.
  BACKGROUND_SCROLL_SPEED = [1,0]
  #Posição do circulo mágico
  CIRCLE_POSITION = [-30,-30]
  #Valor do zoom do circulo mágico. (Valores altos causam Lag)
  CIRCLE_ZOOM_RANGE = 3
  #Definição do tipo de blend do circulo mágico.
  CIRCLE_BLEND_TYPE = 0
  #Imagens dos characteres que terão o efeito de Zoom.
  # CHARACTES_SPRITES_ZOOM_EFFECT = [0,2,5]
  CHARACTES_SPRITES_ZOOM_EFFECT = [4]
  #Prioridade dos personagens 
  CHARACTER_Z = 10
  # Ativar Partículas.
  PARTICLES = true
  # Numero de partículas.
  PARTICLE_NUMBER = 15
  # Ativar Cores Aleatórias.
  PARTICLE_RANDOM_COLOR = true
  # Definição do tipo de blend. (0,1,2)
  PARTICLE_BLEND_TYPE = 0
  #Definição do limite de velocidade das partículas.
  PARTICLE_MOVEMENT_RANGE_X = 0
  PARTICLE_MOVEMENT_RANGE_Y = 3
  PARTICLE_ANGLE_RANGE = 3 
  PARTICLE_Z = 25
  #Posição do comando
  COMMAND_POSITION = [20,50]
  #Prioridade do comando
  COMMNAND_Z = 100
end

#==============================================================================
# ■ Particle Title
#==============================================================================
class Particle_Title < Sprite
 
  include MOG_MADOKA_TITLE_SCREEN
 
 #--------------------------------------------------------------------------
 # ● Initialize
 #--------------------------------------------------------------------------           
  def initialize(viewport = nil)
      super(viewport)
      self.bitmap = Cache.title1("Particle")
      self.tone.set(rand(255),rand(255), rand(255), 255) if PARTICLE_RANDOM_COLOR
      self.blend_type = PARTICLE_BLEND_TYPE
      self.z = PARTICLE_Z
      @cw = self.bitmap.width
      @ch = self.bitmap.height
      @nx = PARTICLE_MOVEMENT_RANGE_X
      @ny = PARTICLE_MOVEMENT_RANGE_Y
      reset_setting
  end 
 
 #--------------------------------------------------------------------------
 # ● Reset Setting
 #--------------------------------------------------------------------------             
  def reset_setting
      zoom = (50 + rand(100)) / 100.1
      self.zoom_x = zoom
      self.zoom_y = zoom
      self.x = (rand(576) -32)
      self.y = rand(448 + @ch)
      self.opacity = 0
      self.angle = rand(360)
      nx2 = rand(@nx).abs
      nx2 = 1 if (@nx != 0 and nx2 < 1)     
      @speed_x = @nx > 0 ? nx2 : @nx < 0 ? -nx2 : 0       
      ny2 = rand(@ny).abs
      ny2 = 1 if (@ny != 0 and ny2 < 1)     
      @speed_y = @ny > 0 ? ny2 : @ny < 0 ? -ny2 : 0 
      @speed_a = [[rand(PARTICLE_ANGLE_RANGE), PARTICLE_ANGLE_RANGE].min, 0].max
  end
 
 #--------------------------------------------------------------------------
 # ● Dispose
 #--------------------------------------------------------------------------             
  def dispose
      super
      self.bitmap.dispose
  end 
 
 #--------------------------------------------------------------------------
 # ● Update
 #--------------------------------------------------------------------------             
  def update
      super
      self.x += @speed_x
      self.y -= @speed_y
      self.angle += @speed_a     
      self.opacity += 5
      reset_setting if can_reset_setting?
  end 
 
 #--------------------------------------------------------------------------
 # ● Can Reset Setting
 #--------------------------------------------------------------------------               
  def can_reset_setting?
      return true if (self.x < -64 or self.x > 592)   
      return true if (self.y < -164 or self.y > 464)
      return false
  end 
end


#==============================================================================
# ■ Scene Title
#==============================================================================
class Scene_Title < Scene_Base
 include MOG_MADOKA_TITLE_SCREEN
 
 #--------------------------------------------------------------------------
 # ● Start
 #--------------------------------------------------------------------------         
 def start
    super
    SceneManager.clear
    play_title_music
    @phase = 0
    @skip_wait = 0
    create_srites
 end   
 
 #--------------------------------------------------------------------------
 # ● トランジション速度の取得
 #--------------------------------------------------------------------------
 def transition_speed
    return 20
 end
 
 #--------------------------------------------------------------------------
 # ● Terminate
 #--------------------------------------------------------------------------
 def terminate
    super
    execute_dispose
 end
   
 #--------------------------------------------------------------------------
 # ● Update
 #--------------------------------------------------------------------------           
 def update
    super
    execute_update
 end

 #--------------------------------------------------------------------------
 # ● Create Sprites
 #--------------------------------------------------------------------------           
 def create_srites
    execute_dispose
    create_background
    create_characters_sprites
    create_title_name
    create_magic_circle
    create_particles
    create_commands
 end
 
 #--------------------------------------------------------------------------
 # ● Create Commands
 #--------------------------------------------------------------------------         
 def create_commands
    @command_wait = false
    @command_index = 0
    @command_index = 1 if DataManager.save_file_exists?
    @commands = []
    index = 0
    for i in 0..2
        @commands[index] = Sprite.new
        if index == 1 and !DataManager.save_file_exists?
            @commands[index].bitmap = Cache.title1("Command" + index.to_s + "B")
        else 
            @commands[index].bitmap = Cache.title1("Command" + index.to_s)
        end   
        @commands[index].z = COMMNAND_Z
        @commands[index].ox = @commands[index].bitmap.width / 2
        @commands[index].oy = @commands[index].bitmap.height / 2
        @commands[index].x = COMMAND_POSITION[0] + @commands[index].ox
        @commands[index].y = COMMAND_POSITION[1] + @commands[index].oy
        @commands[index].opacity = 0
        index += 1
    end
 end
 
 #--------------------------------------------------------------------------
 # ● Create Background
 #--------------------------------------------------------------------------           
 def create_background
    @background = Plane.new
    @background.bitmap = Cache.title1("Background")
    @background.z = 0
 end 
 
 #--------------------------------------------------------------------------
 # ● Create Title Name
 #--------------------------------------------------------------------------             
 def create_title_name
    @title_name_effect = [0,30]
    @title_name = Sprite.new
    @title_name.bitmap = Cache.title1("Title_Name")
    @title_name.z = 301
    @title_name.opacity = 255
    @title_name.blend_type = 0
    @title_name.ox = @title_name.bitmap.width / 2
    @title_name.oy = @title_name.bitmap.height / 2
    @title_name.x = TITLE_POSITION[0] + @title_name.ox
    @title_name.y = TITLE_POSITION[1] + @title_name.oy
 end
 
 #--------------------------------------------------------------------------
 # ● Create Magic Circle
 #--------------------------------------------------------------------------             
 def create_magic_circle
    @magic_circle = Sprite.new
    @magic_circle.bitmap = Cache.title1("Magic_Circle")
    @magic_circle.z = 100
    @magic_circle.ox = @magic_circle.bitmap.width / 2
    @magic_circle.oy =@magic_circle.bitmap.height / 2
    @magic_circle.x = @magic_circle.ox - CIRCLE_POSITION[0]
    @magic_circle.y = @magic_circle.oy - CIRCLE_POSITION[1]
    @magic_circle.z = 3
    @magic_circle.zoom_x = CIRCLE_ZOOM_RANGE
    @magic_circle.zoom_y = CIRCLE_ZOOM_RANGE
    @magic_circle.opacity = 0
    @magic_circle.blend_type = CIRCLE_BLEND_TYPE
 end 
 
 #--------------------------------------------------------------------------
 # ● Create Characters Sprites
 #--------------------------------------------------------------------------             
 def create_characters_sprites
    @magic_girls_appear_duration = 0
    @magic_girl_index = 0
    @magic_girls = []
    @magic_girls
    index = 0
    for i in 0..999
        @magic_girls[i] = Sprite.new
        @magic_girls[i].bitmap = Cache.title1("Character" + index.to_s) rescue nil
        if @magic_girls[i].bitmap == nil
            @magic_girls[i].dispose
            @magic_girls.delete(index)
            break
        end 
        @magic_girls[i].z = CHARACTER_Z + index
        @magic_girls[i].opacity = 0
        @magic_girls[i].ox = @magic_girls[i].bitmap.width / 2
        @magic_girls[i].oy = @magic_girls[i].bitmap.height / 2
        @magic_girls[i].x = @magic_girls[i].ox
        @magic_girls[i].y = @magic_girls[i].oy
        if CHARACTES_SPRITES_ZOOM_EFFECT.include?(index)
            @magic_girls[i].zoom_x = 1.5
            @magic_girls[i].zoom_y = 1.5
        end 
        index += 1
      end
      @magic_girls.pop
 end 
 
  #--------------------------------------------------------------------------
  # ● Create Particles
  #-------------------------------------------------------------------------- 
  def create_particles
      return if !PARTICLES
      @viewport_light = Viewport.new(-32, -32, 600, 480)
      @viewport_light.z = PARTICLE_Z
      @particles_bitmap =[]
      for i in 0...PARTICLE_NUMBER
          @particles_bitmap.push(Particle_Title.new, @viewport_light)
      end 
  end
   
 #--------------------------------------------------------------------------
 # ● Execute Dispose
 #--------------------------------------------------------------------------             
 def execute_dispose
    dispose_background
    dispose_title_name
    dispose_characters
    dispose_particles
    dispose_commands
    dispose_circle
 end 
 
 #--------------------------------------------------------------------------
 # ● Dispose Background
 #--------------------------------------------------------------------------             
 def dispose_background
    return if @background == nil
    @background.bitmap.dispose
    @background.dispose
    @background = nil
 end

 #--------------------------------------------------------------------------
 # ● Dispose Tittle Name
 #--------------------------------------------------------------------------             
 def dispose_title_name
    return if  @title_name == nil
    @title_name.bitmap.dispose
    @title_name.dispose
    @title_name = nil
 end 
 
 #--------------------------------------------------------------------------
 # ● Dispose Characters
 #--------------------------------------------------------------------------             
 def dispose_characters
    return if @magic_girls == nil
    for i in @magic_girls
        if i.bitmap != nil
            i.bitmap.dispose
        end 
        i.dispose
    end 
    @magic_girls = nil       
 end 
 
 #--------------------------------------------------------------------------
 # ● Dispose Particles
 #--------------------------------------------------------------------------             
  def dispose_particles
      return if @particles_bitmap == nil
      @particles_bitmap.each {|sprite| sprite.dispose }
      @particles_bitmap = nil
      @viewport_light.dispose
  end 
 
 #--------------------------------------------------------------------------
 # ● Dispose Command
 #--------------------------------------------------------------------------               
  def dispose_commands
      return if @commands == nil
      @commands.each {|sprite| sprite.dispose }
      @commands = nil
  end
 
 #--------------------------------------------------------------------------
 # ● Dispose Circle
 #--------------------------------------------------------------------------               
 def dispose_circle
    return if @magic_circle == nil
    @magic_circle.bitmap.dispose
    @magic_circle.dispose
    @magic_circle = nil
 end 
 
 #--------------------------------------------------------------------------
 # ● Execute Update
 #--------------------------------------------------------------------------             
 def execute_update
    update_characters
    update_title_name
    update_magic_circle
    update_particles
    update_command
    update_background
 end
 
 #--------------------------------------------------------------------------
 # ● Create Background
 #--------------------------------------------------------------------------             
 def update_background
    return if @background == nil
    @background.ox += BACKGROUND_SCROLL_SPEED[0]
    @background.oy += BACKGROUND_SCROLL_SPEED[1]   
 end
 
 #--------------------------------------------------------------------------
 # ● Update Characters
 #--------------------------------------------------------------------------             
 def update_characters
    return if @magic_girls == nil
    index = 0
    for i in @magic_girls
        update_magic_girls(i,index)
        index += 1
    end   
 end 
 
 #--------------------------------------------------------------------------
 # ● Update Magic Girls
 #--------------------------------------------------------------------------               
 def update_magic_girls(i,index)
    return if @magic_girl_index != index
    update_zoom_effect(i,index) if CHARACTES_SPRITES_ZOOM_EFFECT.include?(index)
    update_opactiy_effect(i,index)
 end 
 
 #--------------------------------------------------------------------------
 # ● Update Opacity Effect
 #--------------------------------------------------------------------------               
 def update_opactiy_effect(i,index)
    i.opacity += 5
    return if i.opacity < 255
    i.zoom_x = 1.00
    i.zoom_y = 1.00       
    @magic_girl_index += 1
    if @magic_girl_index == @magic_girls.size
        @phase = 1
        clear_command_sprites
    end 
 end
 
 #--------------------------------------------------------------------------
 # ● Update Zoom Effect
 #--------------------------------------------------------------------------               
 def update_zoom_effect(i,index)
    if i.zoom_x > 1.00
        i.zoom_x -= 0.01
        i.zoom_y -= 0.01
        if i.zoom_x < 1.00
          i.zoom_x = 1.00
          i.zoom_y = 1.00 
        end
    end   
 end 

 #--------------------------------------------------------------------------
 # ● Update Title Name
 #--------------------------------------------------------------------------                 
 def update_title_name
    return if @phase != 1
    return if @title_name == nil   
    @title_name.opacity += 5
    return if @title_name.opacity < 255
    @phase = 2
 end
 
 #--------------------------------------------------------------------------
 # ● Update Magic Circle
 #--------------------------------------------------------------------------                 
 def update_magic_circle
    return if @magic_circle == nil
    @magic_circle.angle += 1
 end 

 #--------------------------------------------------------------------------
 # ● Update Particles
 #--------------------------------------------------------------------------             
 def update_particles
    return if @particles_bitmap == nil   
    @particles_bitmap.each {|sprite| sprite.update }
 end

 #--------------------------------------------------------------------------
 # ● Update Command
 #--------------------------------------------------------------------------             
 def update_command
    return if @commands == nil
    update_skip_all
    index = 0
    return if @phase != 2
    update_key
    @magic_circle.opacity += 5
    for i in @commands
        if @command_index == index
            update_command_select1(i,index)
        else
            update_command_select2(i,index)
        end 
        index += 1
    end     
 end 
 
 #--------------------------------------------------------------------------
 # ● Update Key
 #--------------------------------------------------------------------------               
 def update_key
    return if @skip_wait > 0
    update_select_command
    return if @command_wait
    if Input.press?(:RIGHT) or Input.press?(:DOWN)
        add_index(1)
    elsif Input.press?(:LEFT) or Input.press?(:UP)
        add_index(-1)
    end 
 end
 
 #--------------------------------------------------------------------------
 # ● Add Index
 #--------------------------------------------------------------------------               
 def add_index(value)
    Sound.play_cursor
    index = @command_index
    index += value
    index = 0 if index > 2
    index = 2 if index < 0
    @command_index = index
 end
 
 #--------------------------------------------------------------------------
 # ● Update Select Command
 #--------------------------------------------------------------------------               
 def update_select_command
    if Input.trigger?(:C) 
      case @command_index
          when 0             
            Sound.play_ok
            command_new_game
          when 1
            if DataManager.save_file_exists?
              command_continue
            else
              Sound.play_buzzer 
            end 
          when 2
            Sound.play_ok
            command_shutdown
          end
      end   
 end
       
 #--------------------------------------------------------------------------
 # ● Update Command Select 1
 #--------------------------------------------------------------------------               
 def update_command_select1(i,index)
    return if i.opacity == 255 and i.zoom_x == 1.00
    i.opacity += 7
    if i.zoom_x > 1.00
        i.zoom_x -= 0.01
        i.zoom_y -= 0.01
        @command_wait = true
        if i.zoom_x <= 1.00
          i.opacity = 255
          @command_wait = false
        end 
    end 
 end 
 
 #--------------------------------------------------------------------------
 # ● Update Command Select 2
 #--------------------------------------------------------------------------               
 def update_command_select2(i,index)
    return if i.opacity == 0
    i.opacity -= 7
    if i.zoom_x < 1.50
        i.zoom_x += 0.01
        i.zoom_y += 0.01
        i.opacity = 0 if i.zoom_x >= 1.50
    end           
 end 
 
  #--------------------------------------------------------------------------
  # ● Command New Game
  #--------------------------------------------------------------------------
  def command_new_game
      DataManager.setup_new_game
      fadeout_all
      $game_map.autoplay
      SceneManager.goto(Scene_Map)
  end
 
  #--------------------------------------------------------------------------
  # ● Command Continue
  #-------------------------------------------------------------------------- 
  def command_continue
      Sound.play_ok
      SceneManager.call(Scene_Load)
  end 
 
  #--------------------------------------------------------------------------
  # ● Commad Shutdown
  #--------------------------------------------------------------------------
  def command_shutdown
      fadeout_all
      SceneManager.exit
  end   
 #--------------------------------------------------------------------------
 # ● Skip All
 #--------------------------------------------------------------------------               
 def update_skip_all
    @skip_wait -= 1 if @skip_wait > 0
    return if @phase > 1
    if Input.trigger?(:C) or Input.trigger?(:B)
        reset_main_sprites
        skip_sprite_effects
        clear_main_sprites
    end
 end 
 
 #--------------------------------------------------------------------------
 # ● Skip Sprites Effects
 #--------------------------------------------------------------------------               
 def skip_sprite_effects
    loop do
      @title_name.opacity += 10
      for i in @magic_girls
          i.opacity += 10
          if i.zoom_x > 1.00
              i.zoom_x -= 0.01
              i.zoom_y -= 0.01
          end 
      end
      break if @title_name.opacity >= 255
      Graphics.update
    end 
 end
     
 #--------------------------------------------------------------------------
 # ● Reset Main Sprites
 #--------------------------------------------------------------------------               
 def reset_main_sprites
    @title_name.opacity= 0
    for i in @magic_girls
        i.zoom_x = 1.00
        i.zoom_y = 1.00
    end     
 end
 
 #--------------------------------------------------------------------------
 # ● Clear All Sprites
 #--------------------------------------------------------------------------               
 def clear_main_sprites
    @title_name.opacity= 255
    for i in @magic_girls
        i.opacity = 255
        i.zoom_x = 1.00
        i.zoom_y = 1.00
    end 
    @magic_girl_index = @magic_girls.size + 1
    @phase = 2     
    clear_command_sprites
    @skip_wait = 10
    @command_wait = false
 end 
     
 #--------------------------------------------------------------------------
 # ● Clear Command Sprites
 #--------------------------------------------------------------------------                 
 def clear_command_sprites   
    index = 0
    for i in @commands
        if @command_index == index
            i.zoom_x = 1.50
            i.zoom_y = 1.50
            i.opacity = 0
        else 
            i.zoom_x = 1.50
            i.zoom_y = 1.50
            i.opacity = 0     
        end
        index += 1
    end   
  end 
 
end

$mog_rgss3_madoka_title_screen = true

PD: al necesitar imagenes te dejo los links de descarga por si las necesitaras para probarlo o hacerlo funcionar:
Spoiler:
http://www.atelier-rgss.com/RGSS/Menu/ACE_Menu09.html

http://www.atelier-rgss.com/RGSS/Menu/ACE_Menu13.html

comentame si lo puedes o no hacer etc, no creo que te resulte muy difícil, pero hablo desde mi ignorancia xD
Saludos

youkai

avatar
Hola alex.....yo ya tengo una GRAN deuda contigo...(sisi, nunca se me ha olvidado que no pude responder a mi primer pedido en este taller XDDD)
Da por hecho esto y mas ahora que he logrado dominar mejor el RGSS3.
-------------------------Un rato despues-----------------------------------------------
Bien ya termine tu script...no era nada muy complicado, lo que yesterday drink + script = microprocesador leeento XDDDD
Código:
#==============================================================================
# +++ MOG - Madoka Title Screen (v1.0) +++ /人◕ ‿‿ ◕人\
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com/
#==============================================================================
# Tela de titulo animado com o tema do anime Puella Magi Madoka Magica.
# Naturalmente você pode colocar qualquer personagem.
#==============================================================================
module MOG_MADOKA_TITLE_SCREEN
  #Posição do titulo.
  TITLE_POSITION = [40,270]
  #Velocidade de deslize da imagem de fundo.
  BACKGROUND_SCROLL_SPEED = [1,0]
  #Posição do circulo mágico
  CIRCLE_POSITION = [-30,-30]
  #Valor do zoom do circulo mágico. (Valores altos causam Lag)
  CIRCLE_ZOOM_RANGE = 3
  #Definição do tipo de blend do circulo mágico.
  CIRCLE_BLEND_TYPE = 0
  #Imagens dos characteres que terão o efeito de Zoom.
  # CHARACTES_SPRITES_ZOOM_EFFECT = [0,2,5]
  CHARACTES_SPRITES_ZOOM_EFFECT = [0]
  #Prioridade dos personagens 
  CHARACTER_Z = 10
  # Ativar Partículas.
  PARTICLES = true
  # Numero de partículas.
  PARTICLE_NUMBER = 15
  # Ativar Cores Aleatórias.
  PARTICLE_RANDOM_COLOR = false
  # Definição do tipo de blend. (0,1,2)
  PARTICLE_BLEND_TYPE = 0
  #Definição do limite de velocidade das partículas.
  PARTICLE_MOVEMENT_RANGE_X = 0
  PARTICLE_MOVEMENT_RANGE_Y = 3
  PARTICLE_ANGLE_RANGE = 3 
  PARTICLE_Z = 25
  #Posição do comando
  COMMAND_POSITION = [20,50]
  #Prioridade do comando
  COMMNAND_Z = 100
  LOGO = true
  #Duração do logo.
  LOGO_DURATION = 2#(Sec)

end

#==============================================================================
# ■ Particle Title
#==============================================================================
class Particle_Title < Sprite
 
  include MOG_MADOKA_TITLE_SCREEN
 
 #--------------------------------------------------------------------------
 # ● Initialize
 #--------------------------------------------------------------------------           
  def initialize(viewport = nil)
      super(viewport)
      self.bitmap = Cache.title1("Particle")
      self.tone.set(rand(255),rand(255), rand(255), 255) if PARTICLE_RANDOM_COLOR
      self.blend_type = PARTICLE_BLEND_TYPE
      self.z = PARTICLE_Z
      @cw = self.bitmap.width
      @ch = self.bitmap.height
      @nx = PARTICLE_MOVEMENT_RANGE_X
      @ny = PARTICLE_MOVEMENT_RANGE_Y
      reset_setting
  end 
 
 #--------------------------------------------------------------------------
 # ● Reset Setting
 #--------------------------------------------------------------------------             
  def reset_setting
      zoom = (50 + rand(100)) / 100.1
      self.zoom_x = zoom
      self.zoom_y = zoom
      self.x = (rand(576) -32)
      self.y = rand(448 + @ch)
      self.opacity = 0
      self.angle = rand(360)
      nx2 = rand(@nx).abs
      nx2 = 1 if (@nx != 0 and nx2 < 1)     
      @speed_x = @nx > 0 ? nx2 : @nx < 0 ? -nx2 : 0       
      ny2 = rand(@ny).abs
      ny2 = 1 if (@ny != 0 and ny2 < 1)     
      @speed_y = @ny > 0 ? ny2 : @ny < 0 ? -ny2 : 0 
      @speed_a = [[rand(PARTICLE_ANGLE_RANGE), PARTICLE_ANGLE_RANGE].min, 0].max
  end
 
 #--------------------------------------------------------------------------
 # ● Dispose
 #--------------------------------------------------------------------------             
  def dispose
      super
      self.bitmap.dispose
  end 
 
 #--------------------------------------------------------------------------
 # ● Update
 #--------------------------------------------------------------------------             
  def update
      super
      self.x += @speed_x
      self.y -= @speed_y
      self.angle += @speed_a     
      self.opacity += 5
      reset_setting if can_reset_setting?
  end 
 
 #--------------------------------------------------------------------------
 # ● Can Reset Setting
 #--------------------------------------------------------------------------               
  def can_reset_setting?
      return true if (self.x < -64 or self.x > 592)   
      return true if (self.y < -164 or self.y > 464)
      return false
  end 
end


#==============================================================================
# ■ Scene Title
#==============================================================================
class Scene_Title < Scene_Base
 include MOG_MADOKA_TITLE_SCREEN
 
 #--------------------------------------------------------------------------
 # ● Start
 #--------------------------------------------------------------------------         
 def start
    super
    SceneManager.clear
    @phase = 0
    @skip_wait = 0
    create_logo if LOGO 
    play_title_music
    create_srites
 end   
 
 #--------------------------------------------------------------------------
 # ● トランジション速度の取得
 #--------------------------------------------------------------------------
 def transition_speed
    return 20
 end
 
 #--------------------------------------------------------------------------
 # ● Terminate
 #--------------------------------------------------------------------------
 def terminate
    super
    dispose_logo
    execute_dispose
 end
   
 #--------------------------------------------------------------------------
 # ● Update
 #--------------------------------------------------------------------------           
 def update
    super
    execute_update
 end
 
 #--------------------------------------------------------------------------
 # ● Create_Logo
 #--------------------------------------------------------------------------       
 def create_logo
    @phase = 0
    @logo = Sprite.new
    @logo.bitmap = Cache.title2("Logo")
    @logo.opacity = 0
    @logo_duration = 180 + (LOGO_DURATION * 60)
    update_logo
 end
 
 #--------------------------------------------------------------------------
 # ● Dispose Logo
 #--------------------------------------------------------------------------         
 def dispose_logo
    return unless LOGO
    @logo.bitmap.dispose
    @logo.dispose
 end
 
 #--------------------------------------------------------------------------
 # ● Update Logo
 #--------------------------------------------------------------------------         
 def update_logo
    return unless LOGO
    loop do
        break if  @logo_duration == 0
        execute_logo
        Graphics.update
    end
    play_title_music
 end
 
 #--------------------------------------------------------------------------
 # ● Execute Logo
 #--------------------------------------------------------------------------         
 def execute_logo
    @logo_duration -= 1
    if @logo_duration > 120
        @logo.opacity += 5
    else
        @logo.opacity -= 5
    end
    if @logo.opacity <= 0
        @logo_duration = 0
    end 
 end

 #--------------------------------------------------------------------------
 # ● Create Sprites
 #--------------------------------------------------------------------------           
 def create_srites
    execute_dispose
    create_background
    create_characters_sprites
    create_title_name
    create_magic_circle
    create_particles
    create_commands
 end
 
 #--------------------------------------------------------------------------
 # ● Create Commands
 #--------------------------------------------------------------------------         
 def create_commands
    @command_wait = false
    @command_index = 0
    @command_index = 1 if DataManager.save_file_exists?
    @commands = []
    index = 0
    for i in 0..2
        @commands[index] = Sprite.new
        if index == 1 and !DataManager.save_file_exists?
            @commands[index].bitmap = Cache.title1("Command" + index.to_s + "B")
        else 
            @commands[index].bitmap = Cache.title1("Command" + index.to_s)
        end   
        @commands[index].z = COMMNAND_Z
        @commands[index].ox = @commands[index].bitmap.width / 2
        @commands[index].oy = @commands[index].bitmap.height / 2
        @commands[index].x = COMMAND_POSITION[0] + @commands[index].ox
        @commands[index].y = COMMAND_POSITION[1] + @commands[index].oy
        @commands[index].opacity = 0
        index += 1
    end
 end
 
 #--------------------------------------------------------------------------
 # ● Create Background
 #--------------------------------------------------------------------------           
 def create_background
    @background = Plane.new
    @background.bitmap = Cache.title1("Background")
    @background.z = 0
 end 
 
 #--------------------------------------------------------------------------
 # ● Create Title Name
 #--------------------------------------------------------------------------             
 def create_title_name
    @title_name_effect = [0,30]
    @title_name = Sprite.new
    @title_name.bitmap = Cache.title1("Title_Name")
    @title_name.z = 301
    @title_name.opacity = 255
    @title_name.blend_type = 0
    @title_name.ox = @title_name.bitmap.width / 2
    @title_name.oy = @title_name.bitmap.height / 2
    @title_name.x = TITLE_POSITION[0] + @title_name.ox
    @title_name.y = TITLE_POSITION[1] + @title_name.oy
 end
 
 #--------------------------------------------------------------------------
 # ● Create Magic Circle
 #--------------------------------------------------------------------------             
 def create_magic_circle
    @magic_circle = Sprite.new
    @magic_circle.bitmap = Cache.title1("Magic_Circle")
    @magic_circle.z = 100
    @magic_circle.ox = @magic_circle.bitmap.width / 2
    @magic_circle.oy =@magic_circle.bitmap.height / 2
    @magic_circle.x = @magic_circle.ox - CIRCLE_POSITION[0]
    @magic_circle.y = @magic_circle.oy - CIRCLE_POSITION[1]
    @magic_circle.z = 3
    @magic_circle.zoom_x = CIRCLE_ZOOM_RANGE
    @magic_circle.zoom_y = CIRCLE_ZOOM_RANGE
    @magic_circle.opacity = 0
    @magic_circle.blend_type = CIRCLE_BLEND_TYPE
 end 
 
 #--------------------------------------------------------------------------
 # ● Create Characters Sprites
 #--------------------------------------------------------------------------             
 def create_characters_sprites
    @magic_girls_appear_duration = 0
    @magic_girl_index = 0
    @magic_girls = []
    @magic_girls
    index = 0
    for i in 0..999
        @magic_girls[i] = Sprite.new
        @magic_girls[i].bitmap = Cache.title1("Character" + index.to_s) rescue nil
        if @magic_girls[i].bitmap == nil
            @magic_girls[i].dispose
            @magic_girls.delete(index)
            break
        end 
        @magic_girls[i].z = CHARACTER_Z + index
        @magic_girls[i].opacity = 0
        @magic_girls[i].ox = @magic_girls[i].bitmap.width / 2
        @magic_girls[i].oy = @magic_girls[i].bitmap.height / 2
        @magic_girls[i].x = @magic_girls[i].ox
        @magic_girls[i].y = @magic_girls[i].oy
        if CHARACTES_SPRITES_ZOOM_EFFECT.include?(index)
            @magic_girls[i].zoom_x = 1.5
            @magic_girls[i].zoom_y = 1.5
        end 
        index += 1
      end
      @magic_girls.pop
 end 
 
  #--------------------------------------------------------------------------
  # ● Create Particles
  #-------------------------------------------------------------------------- 
  def create_particles
      return if !PARTICLES
      @viewport_light = Viewport.new(-32, -32, 600, 480)
      @viewport_light.z = PARTICLE_Z
      @particles_bitmap =[]
      for i in 0...PARTICLE_NUMBER
          @particles_bitmap.push(Particle_Title.new, @viewport_light)
      end 
  end
   
 #--------------------------------------------------------------------------
 # ● Execute Dispose
 #--------------------------------------------------------------------------             
 def execute_dispose
    dispose_background
    dispose_title_name
    dispose_characters
    dispose_particles
    dispose_commands
    dispose_circle
 end 
 
 #--------------------------------------------------------------------------
 # ● Dispose Background
 #--------------------------------------------------------------------------             
 def dispose_background
    return if @background == nil
    @background.bitmap.dispose
    @background.dispose
    @background = nil
 end

 #--------------------------------------------------------------------------
 # ● Dispose Tittle Name
 #--------------------------------------------------------------------------             
 def dispose_title_name
    return if  @title_name == nil
    @title_name.bitmap.dispose
    @title_name.dispose
    @title_name = nil
 end 
 
 #--------------------------------------------------------------------------
 # ● Dispose Characters
 #--------------------------------------------------------------------------             
 def dispose_characters
    return if @magic_girls == nil
    for i in @magic_girls
        if i.bitmap != nil
            i.bitmap.dispose
        end 
        i.dispose
    end 
    @magic_girls = nil       
 end 
 
 #--------------------------------------------------------------------------
 # ● Dispose Particles
 #--------------------------------------------------------------------------             
  def dispose_particles
      return if @particles_bitmap == nil
      @particles_bitmap.each {|sprite| sprite.dispose }
      @particles_bitmap = nil
      @viewport_light.dispose
  end 
 
 #--------------------------------------------------------------------------
 # ● Dispose Command
 #--------------------------------------------------------------------------               
  def dispose_commands
      return if @commands == nil
      @commands.each {|sprite| sprite.dispose }
      @commands = nil
  end
 
 #--------------------------------------------------------------------------
 # ● Dispose Circle
 #--------------------------------------------------------------------------               
 def dispose_circle
    return if @magic_circle == nil
    @magic_circle.bitmap.dispose
    @magic_circle.dispose
    @magic_circle = nil
 end 
 
 #--------------------------------------------------------------------------
 # ● Execute Update
 #--------------------------------------------------------------------------             
 def execute_update
    update_characters
    update_title_name
    update_magic_circle
    update_particles
    update_command
    update_background
 end
 
 #--------------------------------------------------------------------------
 # ● Create Background
 #--------------------------------------------------------------------------             
 def update_background
    return if @background == nil
    @background.ox += BACKGROUND_SCROLL_SPEED[0]
    @background.oy += BACKGROUND_SCROLL_SPEED[1]   
 end
 
 #--------------------------------------------------------------------------
 # ● Update Characters
 #--------------------------------------------------------------------------             
 def update_characters
    return if @magic_girls == nil
    index = 0
    for i in @magic_girls
        update_magic_girls(i,index)
        index += 1
    end   
 end 
 
 #--------------------------------------------------------------------------
 # ● Update Magic Girls
 #--------------------------------------------------------------------------               
 def update_magic_girls(i,index)
    return if @magic_girl_index != index
    update_zoom_effect(i,index) if CHARACTES_SPRITES_ZOOM_EFFECT.include?(index)
    update_opactiy_effect(i,index)
 end 
 
 #--------------------------------------------------------------------------
 # ● Update Opacity Effect
 #--------------------------------------------------------------------------               
 def update_opactiy_effect(i,index)
    i.opacity += 5
    return if i.opacity < 255
    i.zoom_x = 1.00
    i.zoom_y = 1.00       
    @magic_girl_index += 1
    if @magic_girl_index == @magic_girls.size
        @phase = 1
        clear_command_sprites
    end 
 end
 
 #--------------------------------------------------------------------------
 # ● Update Zoom Effect
 #--------------------------------------------------------------------------               
 def update_zoom_effect(i,index)
    if i.zoom_x > 1.00
        i.zoom_x -= 0.01
        i.zoom_y -= 0.01
        if i.zoom_x < 1.00
          i.zoom_x = 1.00
          i.zoom_y = 1.00 
        end
    end   
 end 

 #--------------------------------------------------------------------------
 # ● Update Title Name
 #--------------------------------------------------------------------------                 
 def update_title_name
    return if @phase != 1
    return if @title_name == nil   
    @title_name.opacity += 5
    return if @title_name.opacity < 255
    @phase = 2
 end
 
 #--------------------------------------------------------------------------
 # ● Update Magic Circle
 #--------------------------------------------------------------------------                 
 def update_magic_circle
    return if @magic_circle == nil
    @magic_circle.angle += 1
 end 

 #--------------------------------------------------------------------------
 # ● Update Particles
 #--------------------------------------------------------------------------             
 def update_particles
    return if @particles_bitmap == nil   
    @particles_bitmap.each {|sprite| sprite.update }
 end

 #--------------------------------------------------------------------------
 # ● Update Command
 #--------------------------------------------------------------------------             
 def update_command
    return if @commands == nil
    update_skip_all
    index = 0
    return if @phase != 2
    update_key
    @magic_circle.opacity += 5
    for i in @commands
        if @command_index == index
            update_command_select1(i,index)
        else
            update_command_select2(i,index)
        end 
        index += 1
    end     
 end 
 
 #--------------------------------------------------------------------------
 # ● Update Key
 #--------------------------------------------------------------------------               
 def update_key
    return if @skip_wait > 0
    update_select_command
    return if @command_wait
    if Input.press?(:RIGHT) or Input.press?(:DOWN)
        add_index(1)
    elsif Input.press?(:LEFT) or Input.press?(:UP)
        add_index(-1)
    end 
 end
 
 #--------------------------------------------------------------------------
 # ● Add Index
 #--------------------------------------------------------------------------               
 def add_index(value)
    Sound.play_cursor
    index = @command_index
    index += value
    index = 0 if index > 2
    index = 2 if index < 0
    @command_index = index
 end
 
 #--------------------------------------------------------------------------
 # ● Update Select Command
 #--------------------------------------------------------------------------               
 def update_select_command
    if Input.trigger?(:C) 
      case @command_index
          when 0             
            Sound.play_ok
            command_new_game
          when 1
            if DataManager.save_file_exists?
              command_continue
            else
              Sound.play_buzzer 
            end 
          when 2
            Sound.play_ok
            command_shutdown
          end
      end   
 end
       
 #--------------------------------------------------------------------------
 # ● Update Command Select 1
 #--------------------------------------------------------------------------               
 def update_command_select1(i,index)
    return if i.opacity == 255 and i.zoom_x == 1.00
    i.opacity += 7
    if i.zoom_x > 1.00
        i.zoom_x -= 0.01
        i.zoom_y -= 0.01
        @command_wait = true
        if i.zoom_x <= 1.00
          i.opacity = 255
          @command_wait = false
        end 
    end 
 end 
 
 #--------------------------------------------------------------------------
 # ● Update Command Select 2
 #--------------------------------------------------------------------------               
 def update_command_select2(i,index)
    return if i.opacity == 0
    i.opacity -= 7
    if i.zoom_x < 1.50
        i.zoom_x += 0.01
        i.zoom_y += 0.01
        i.opacity = 0 if i.zoom_x >= 1.50
    end           
 end 
 
  #--------------------------------------------------------------------------
  # ● Command New Game
  #--------------------------------------------------------------------------
  def command_new_game
      DataManager.setup_new_game
      fadeout_all
      $game_map.autoplay
      SceneManager.goto(Scene_Map)
  end
 
  #--------------------------------------------------------------------------
  # ● Command Continue
  #-------------------------------------------------------------------------- 
  def command_continue
      Sound.play_ok
      SceneManager.call(Scene_Load)
  end 
 
  #--------------------------------------------------------------------------
  # ● Commad Shutdown
  #--------------------------------------------------------------------------
  def command_shutdown
      fadeout_all
      SceneManager.exit
  end   
 #--------------------------------------------------------------------------
 # ● Skip All
 #--------------------------------------------------------------------------               
 def update_skip_all
    @skip_wait -= 1 if @skip_wait > 0
    return if @phase > 1
    if Input.trigger?(:C) or Input.trigger?(:B)
        reset_main_sprites
        skip_sprite_effects
        clear_main_sprites
    end
 end 
 
 #--------------------------------------------------------------------------
 # ● Skip Sprites Effects
 #--------------------------------------------------------------------------               
 def skip_sprite_effects
    loop do
      @title_name.opacity += 10
      for i in @magic_girls
          i.opacity += 10
          if i.zoom_x > 1.00
              i.zoom_x -= 0.01
              i.zoom_y -= 0.01
          end 
      end
      break if @title_name.opacity >= 255
      Graphics.update
    end 
 end
     
 #--------------------------------------------------------------------------
 # ● Reset Main Sprites
 #--------------------------------------------------------------------------               
 def reset_main_sprites
    @title_name.opacity= 0
    for i in @magic_girls
        i.zoom_x = 1.00
        i.zoom_y = 1.00
    end     
 end
 
 #--------------------------------------------------------------------------
 # ● Clear All Sprites
 #--------------------------------------------------------------------------               
 def clear_main_sprites
    @title_name.opacity= 255
    for i in @magic_girls
        i.opacity = 255
        i.zoom_x = 1.00
        i.zoom_y = 1.00
    end 
    @magic_girl_index = @magic_girls.size + 1
    @phase = 2     
    clear_command_sprites
    @skip_wait = 10
    @command_wait = false
 end 
     
 #--------------------------------------------------------------------------
 # ● Clear Command Sprites
 #--------------------------------------------------------------------------                 
 def clear_command_sprites   
    index = 0
    for i in @commands
        if @command_index == index
            i.zoom_x = 1.50
            i.zoom_y = 1.50
            i.opacity = 0
        else 
            i.zoom_x = 1.50
            i.zoom_y = 1.50
            i.opacity = 0     
        end
        index += 1
    end   
  end 
 
end

$mog_rgss3_madoka_title_screen = true
Ya eso es todo, cuentame si asi esta bien o te sale algun bug o no era precisamente lo que buscabas.
Saludos,
¥oukai

alex.fayula

avatar
Gracias youkai, como siempre rápidisimo jaja, mañana lo probaré que ahora estoy en un ordenador sin el maker así que ya te diré

PD: cuando quieras volver a intentar el primer pedido, me seguirás salvando la vida ee xD o sea que si quieres ya sabes jeje (si no no pasa nada ee)

Saludos!!

EDIT: no me he podido resistir de probarlo. Perfecto Youkai, justo lo que buscaba.

Ledai

avatar
HOLA!!!! hoy vengo con Un Pedido de miniscript para hacer que un evento común de la base de datos sea mostrado antes de la pantalla de título... para poder poner ahí la presentación del grupo desarrollador y el logo, más el productor... el patrocinador, el guionista.........el............ bueno; vale, solo para el logo de creación hecho mediante imágenes y unas cuantas animaciones...




Entérate de todas las novedades

alex.fayula

avatar
Buenas vengo con otro pedido, también sencillo a mi entender jajaj

Bueno se trata de añadir la barra de Tp en un script de status obviamente con el mismo estilo que las barras de Hp y Mp. Verás que al ejecutarlo tal cual está ay un pequeño espacio debajo de las barras de Hp y Mp, quiero que la barra de tp se situe ahí. Si hace falta baja un poco la ubicación de la experiencia para que quepa bien en el hueco (no sé si cabe bien).

Aquí te dejo el script:

Código:
#==============================================================================
#  XS - Status Delux
#  Author: Nicke
#  Created: 05/08/2012
#  Edited: 28/12/2012
#  Version: 1.0c
#==============================================================================
# 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.

# This script changes the status scene to a more delux version.
# There are a few settings but bascially this is just a plug and play script.
#
# *** Only for RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-STATUS-DELUX"] = true

module XAIL
  module STATUS_DELUX
  #--------------------------------------------------------------------------#
  # * Settings
  #--------------------------------------------------------------------------#
    # FONT = [name, size, color, bold, shadow]
    FONT = [["Segoe UI", "Anklada™️","Verdana"], 18, Color.new(255,255,255), true, true]
   
    # BAR_COLOR = rgba(255,255,255,255)
    # Set the color of the bars.
    BAR_COLOR = [Color.new(100,100,40,180), Color.new(200,200,200,180)]
    BAR_HP = [Color.new(225,50,50,64), Color.new(235,75,75,175)]
    BAR_MP = [Color.new(50,50,225,64), Color.new(75,75,235,175)]
   
    # LINE_COLOR = rgba(255,255,255,255)
    # Set the color of the horizontal line.
    LINE_COLOR = [Color.new(255,255,255,200), Color.new(0,0,0,128)]
   
    # LIST_ICONS[id] = icon_id
    # Set the param icon_id. (optional)
    ICONS = []
    ICONS[0] = 4149 # HP
    ICONS[1] = 4132 # MP
    ICONS[2] = 4138 # EXP
    ICONS[3] = 4145 # ATK
    ICONS[4] = 4150 # DEF
    ICONS[5] = 4147 # MAGIC
    ICONS[6] = 4148 # RES
    ICONS[7] = 4140 # AGL
    ICONS[8] = 4131 # LUK

  end
end
# *** Don't edit below unless you know what you are doing. ***
#==============================================================================#
# ** Error Handler
#==============================================================================#
  unless $imported["XAIL-XS-CORE"]
    # // Error handler when XS - Core is not installed.
    msg = "The script %s requires the latest version of XS - Core in order to function properly."
    name = "XS - Status Delux"
    msgbox(sprintf(msg, name))
    exit
  end
#==============================================================================#
# ** Window_Status
#==============================================================================#
class Window_Status < Window_Selectable

  def refresh
    # // Method to refresh.
    contents.clear
    # // Draw icons.
    draw_icons(XAIL::STATUS_DELUX::ICONS, :vertical, 0, line_height * 2, [4138,4145])
    # // Draw actor details.
    draw_font_text(@actor.name + " " + @actor.nickname, 0, line_height * 0, 200, 0, XAIL::STATUS_DELUX::FONT[0], 22, XAIL::STATUS_DELUX::FONT[2])
    draw_font_text(@actor.class.name, 0, line_height * 0, contents.width, 2, XAIL::STATUS_DELUX::FONT[0], 22, XAIL::STATUS_DELUX::FONT[2])
    # // If XS - Fame System is imported.
    if $imported["XAIL-FAME-SYSTEM"]
      fame = "Fame: #{@actor.current_fame} (#{@actor.fame}/#{@actor.max_fame})"
      draw_font_text(fame, 0, 14, contents_width, 0, XAIL::STATUS_DELUX::FONT[0], 16, Color.new(255,255,255))
    end
    # // Draw line.
    draw_line_ex(48, line_height * 1, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor face, level, stats and icons.
    draw_actor_face(@actor, 420, line_height * 2)
    if $imported["XAIL-LVL-TITLE"]
      lvl = "#{Vocab::level_a}: #{draw_title_level(@actor)}"
    else
      lvl = "#{Vocab::level_a}: #{@actor.level}  /  #{@actor.max_level}"
    end
    draw_font_text(lvl, 240, line_height * 2, 180, 0, XAIL::STATUS_DELUX::FONT[0], 20, XAIL::STATUS_DELUX::FONT[2])
    draw_actor_icons(@actor, 240, line_height * 3)
    draw_actor_stats(@actor, :hp, 20, line_height * 2, XAIL::STATUS_DELUX::BAR_HP[0], XAIL::STATUS_DELUX::BAR_HP[1])
    draw_actor_stats(@actor, :mp, 20, line_height * 3, XAIL::STATUS_DELUX::BAR_MP[0], XAIL::STATUS_DELUX::BAR_MP[1])
    draw_exp_info(20, line_height * 4)
    # // Draw line.
    draw_line_ex(-48, line_height * 6, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor parameters.
    draw_parameters(20, line_height * 7)
    # // Draw actor equipment.
    draw_equipments(240, line_height * 7)
    # // Draw line.
    draw_line_ex(48, line_height * 13, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor description.
    draw_description(4, line_height * 14)
  end
 
 def draw_actor_stats(actor, stat, x, y, color1, color2, width = 200)
    # // Method to draw actor hp & mp.
    case stat
    when :hp
      rate = actor.hp_rate
      vocab = Vocab::hp_a
      values = [actor.hp, actor.mhp]
    when :mp
      rate = actor.mp_rate
      vocab = Vocab::mp_a
      values = [actor.mp, actor.mmp]
    end
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = 16 # // Override font size.
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_gauge_ex(x, y - 14, width, 20, rate, color1, color2)
    draw_text(x, y, width, line_height, vocab, 1)
    draw_current_and_max_values_ex(x - 8, y, width, values[0], values[1],
    XAIL::STATUS_DELUX::FONT[2], XAIL::STATUS_DELUX::FONT[2])
    reset_font_settings
  end
   
  def draw_current_and_max_values_ex(x, y, width, current, max, color1, color2)
    # // Method to draw current and max values.
    change_color(color1)
    xr = x + width
    if width < 96
      draw_text(xr - 40, y, 42, line_height, current, 0)
    else
      draw_text(32, y, 42, line_height, current, 0)
      change_color(color2)
      draw_text(xr - 36, y, 42, line_height, max, 2)
    end
  end

  def draw_parameters(x, y)
    # // Method to draw actor parameters.
    font = XAIL::STATUS_DELUX::FONT[0]
    size = 16 # // Override font size.
    c1 = XAIL::STATUS_DELUX::BAR_COLOR[0]
    c2 = XAIL::STATUS_DELUX::BAR_COLOR[1]
    c3 = XAIL::STATUS_DELUX::FONT[2]
    c4 = c3
    6.times {|i| draw_actor_param_gauge(@actor, x, y + line_height * i, 200, i + 2, font, size, c1, c2, c3, c4) }
  end

  def draw_exp_info(x, y)
    # // Method to draw exp info.
    s1 = @actor.max_level? ? "?" : @actor.exp
    s2 = @actor.max_level? ? "?" : @actor.next_level_exp - @actor.exp
    param_rate = @actor.exp / @actor.next_level_exp.to_f
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = 16
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_gauge_ex(x, y + 8, 200, 20, param_rate, XAIL::STATUS_DELUX::BAR_COLOR[0], XAIL::STATUS_DELUX::BAR_COLOR[1])
    draw_text(x + 10, y + line_height, 200, line_height, s1, 0)
    draw_text(x, y + line_height, 200, line_height, "EXP", 1)
    draw_text(x - 1, y + line_height, 200, line_height, s2, 2)
    reset_font_settings
  end

  def draw_description(x, y)
    # // Method override to draw the description.
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = XAIL::STATUS_DELUX::FONT[1]
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_text_ex(x, y, @actor.description)
    reset_font_settings
  end
 
end # END OF FILE

#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*=#

Necesitarás si no recuerdo mal este otro script, que se situa encima del anterior:
Código:
#==============================================================================
#  XaiL System - Core
#  Author: Nicke
#  Created: 07/01/2012
#  Edited: 18/12/2012
#  Version: 2.1b
#==============================================================================
# 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.
#
# Core script for XaiL System.
# Caution! This needs to be located before any other XS scripts.
#
# *** Only for RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-XS-CORE"] = true

module Colors
  #--------------------------------------------------------------------------#
  # * Colors
  #--------------------------------------------------------------------------#
  White = Color.new(255,255,255)
  LightRed = Color.new(255,150,150)
  LightGreen = Color.new(150,255,150)
  LightBlue = Color.new(150,150,255)
  DarkYellow = Color.new(225,225,20)
  Alpha = Color.new(0,0,0,128)
  AlphaMenu = 100
end
module XAIL
  module CORE
  #--------------------------------------------------------------------------#
  # * Settings
  #--------------------------------------------------------------------------#
  # Graphics.resize_screen(width, height )
  Graphics.resize_screen(544, 416)
 
  # FONT DEFAULTS:
  Font.default_name = ["VL Gothic"]
  Font.default_size = 18
  Font.default_bold = false
  Font.default_italic = false
  Font.default_shadow = true
  Font.default_outline = true
  Font.default_color = Colors::White
  Font.default_out_color = Colors::Alpha
 
  # USE_TONE = true/false:
  # Window tone for all windows ingame. Default: true.
  USE_TONE = false
 
  # SAVE
  SAVE_MAX = 20      # Default 16.
  SAVE_FILE_VIS = 4  # Default 4.
 
  end
end
# *** Don't edit below unless you know what you are doing. ***
#==============================================================================#
# ** String
#==============================================================================#
class String
 
  def to_class(parent = Kernel)
    chain = self.split "::"
    klass = parent.const_get chain.shift
    return chain.size < 1 ? (klass.is_a?(Class) ? klass : nil) : chain.join("::").to_class(klass)
    rescue
    nil
  end

end
#==============================================================================#
# ** Vocab
#==============================================================================#
class << Vocab
 
  def xparam(id)
    # // Method to return xparam name.
    case id
    when 0 ; "Hit Chance"
    when 1 ; "Evasion"
    when 2 ; "Critical Chance"
    when 3 ; "Critical Evasion"
    when 4 ; "Magic Evasion"
    when 5 ; "Magic Reflection"
    when 6 ; "Counter Attack"
    when 7 ; "HP Regeneration"
    when 8 ; "MP Regeneration"
    when 9 ; "TP Regeneration"
    end
  end
 
end
#==============================================================================
# ** Sound
#==============================================================================
class << Sound
 
  def play(name, volume, pitch, type = :se)
    # // Method to play a sound. If specified name isn't valid throw an error.
    case type
    when :se  ; RPG::SE.new(name, volume, pitch).play rescue valid?(name)
    when :me  ; RPG::ME.new(name, volume, pitch).play rescue valid?(name)
    when :bgm  ; RPG::BGM.new(name, volume, pitch).play rescue valid?(name)
    when :bgs  ; RPG::BGS.new(name, volume, pitch).play rescue valid?(name)
    end
  end
 
  def valid?(name)
    # // Method to check if specified sound name is valid.
    msgbox("Error. Unable to find sound file: " + name)
    exit
  end
 
end
#==============================================================================
# ** DataManager
#==============================================================================
class << DataManager

  def savefile_max
    # // Method override, save file max.
    return XAIL::CORE::SAVE_MAX
  end
 
end
#==============================================================================
# ** Scene_File
#==============================================================================
class Scene_File < Scene_MenuBase
 
  def visible_max
    # // Method override, visible_max for save files.
    return XAIL::CORE::SAVE_FILE_VIS
  end
 
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# Importing font fix that will remove weird characters.
# Adding new methods such as new gauge, actor param, font text, icon drawing,
# big icon drawing and a line with a shadow.
#==============================================================================
class Window_Base < Window
 
  # // Importing Custom font fix. (Credit Lone Wolf).
  alias :process_normal_character_vxa :process_normal_character
  def process_normal_character(c, pos)
    return unless c >= ' '
    process_normal_character_vxa(c, pos)
  end unless method_defined? :process_normal_character
 
  def draw_text_ex_no_reset(x, y, text)
    # // Method to draw ex text without resetting the font.
    text = convert_escape_characters(text)
    pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
    process_character(text.slice!(0, 1), text, pos) until text.empty?
  end
 
  alias xail_core_winbase_upt_tone update_tone
  def update_tone(*args, &block)
    # // Method to change tone of the window.
    return unless XAIL::CORE::USE_TONE
    xail_core_winbase_upt_tone(*args, &block)
  end
 
  def draw_gauge_ex(x, y, width, height, rate, color1, color2)
    # // Method to draw a gauge.
    fill_w = (width * rate).to_i
    gauge_y = y + line_height - 8
    contents.fill_rect(x, gauge_y, width + 1, height + 1, Color.new(255,255,255,64))
    contents.fill_rect(x, gauge_y, width, height, Color.new(0,0,0,100))
    contents.gradient_fill_rect(x, gauge_y, fill_w, height, color1, color2)
  end
 
  def draw_actor_param_gauge(actor, x, y, width, param_id, font, size, bar_color1, bar_color2, txt_color1, txt_color2)
    # // Method to draw actor parameters with a gauge.
    case param_id
    when 2 ; param_rate = actor.param(2) / actor.param_max(2).to_f
    when 3 ; param_rate = actor.param(3) / actor.param_max(3).to_f
    when 4 ; param_rate = actor.param(4) / actor.param_max(4).to_f
    when 5 ; param_rate = actor.param(5) / actor.param_max(5).to_f
    when 6 ; param_rate = actor.param(6) / actor.param_max(6).to_f
    when 7 ; param_rate = actor.param(7) / actor.param_max(7).to_f
    end
    contents.font.name = font
    contents.font.size = size
    contents.font.bold = true
    contents.font.shadow = false
    draw_gauge_ex(x, y - 14, width, 20, param_rate, bar_color1, bar_color2)
    contents.font.color = txt_color1
    draw_text(x + 10, y, 120, line_height, Vocab::param(param_id))
    contents.font.color = txt_color2
    draw_text(x + width - 38, y, 36, line_height, actor.param(param_id), 2)
    reset_font_settings
  end
 
  def draw_actor_xparam_gauge(actor, x, y, width, xparam_id, font, size, bar_color1, bar_color2, txt_color1, txt_color2)
    # // Method to draw actor xparameters with a gauge.
    case xparam_id
    when 0
      xparam_rate = actor.xparam(0) / 100.to_f
      xparam_name = Vocab.xparam(0)
    when 1
      xparam_rate = actor.xparam(1) / 100.to_f
      xparam_name = Vocab.xparam(1)
    when 2
      xparam_rate = actor.xparam(2) / 100.to_f
      xparam_name = Vocab.xparam(2)
    when 3
      xparam_rate = actor.xparam(3) / 100.to_f
      xparam_name = Vocab.xparam(3)
    when 4
      xparam_rate = actor.xparam(4) / 100.to_f
      xparam_name = Vocab.xparam(4)
    when 5
      xparam_rate = actor.xparam(5) / 100.to_f
      xparam_name = Vocab.xparam(5)
    when 6
      xparam_rate = actor.xparam(6) / 100.to_f
      xparam_name = Vocab.xparam(6)
    when 7
      xparam_rate = actor.xparam(7) / 100.to_f
      xparam_name = Vocab.xparam(7)
    when 8
      xparam_rate = actor.xparam(8) / 100.to_f
      xparam_name = Vocab.xparam(8)
    when 9
      xparam_rate = actor.xparam(9) / 100.to_f
      xparam_name = Vocab.xparam(9)
    end
    contents.font.name = font
    contents.font.size = size
    contents.font.bold = true
    contents.font.shadow = false
    draw_gauge_ex(x, y - 14, width, 20, xparam_rate, bar_color1, bar_color2)
    contents.font.color = txt_color1
    draw_text(x + 10, y, 120, line_height, xparam_name)
    contents.font.color = txt_color2
    draw_text(x + width - 38, y, 36, line_height, "#{actor.xparam(xparam_id)}%", 2)
    reset_font_settings
  end
 
  def draw_line_ex(x, y, color, shadow)
    # // Method to draw a line with a shadow.
    line_y = y + line_height / 2 - 1
    contents.fill_rect(x, line_y, contents_width, 2, color)
    line_y += 1
    contents.fill_rect(x, line_y, contents_width, 2, shadow)
  end
 
  def draw_icons(icons, alignment, x = 0, y = 0, offset_icon = [])
    # // Method to draw icons in a horizonal or vertical alignment.
    for i in icons
      # // If included in offset do extra line_height.
      for o in offset_icon
        if i == o
          y += line_height * 1 if alignment == :vertical
          x += line_height * 1 if alignment == :horizontal
        end
      end
      draw_icon(i.nil? ? nil : i, x.nil? ? 0 : x, y.nil? ? 0 : y) rescue nil
      y += line_height if alignment == :vertical
      x += line_height if alignment == :horizontal
      next if i.nil?
    end
  end
 
  def draw_big_icon(icon, x, y, width, height, opacity = 255)
    # // Method to draw a big icon.
    bitmap = Cache.system("Iconset")
    rect = Rect.new(icon % 16 * 24, icon / 16 * 24, 24, 24)
    rect2 = Rect.new(x, y, width, height)
    contents.stretch_blt(rect2, bitmap, rect, opacity)
  end
 
  def draw_font_text(value, x, y, width, alignment, font, size, color, bold = true, shadow = true)
    # // Method to draw font text.
    contents.font.name = font
    contents.font.size = size
    contents.font.color = color
    contents.font.bold = bold
    contents.font.shadow = shadow
    contents.font.out_color = Color.new(0,0,0,255)
    draw_text(x, y, width, line_height, value, alignment)
    reset_font_settings
  end
 
end
#==============================================================================#
# ** Window_Selectable
#------------------------------------------------------------------------------
#  Adding support for pageleft and pageright for window selectable.
#==============================================================================#
class Window_Selectable < Window_Base
 
  def cursor_pageright ; end
  def cursor_pageleft ; end

  alias xail_core_winselect_process_cursor_move process_cursor_move
  def process_cursor_move(*args, &block)
    # // Method to process cursor movement.
    xail_core_winselect_process_cursor_move(*args, &block)
    cursor_pageright if !handle?(:pageright) && Input.trigger?(:RIGHT)
    cursor_pageright if !handle?(:pageleft) && Input.trigger?(:LEFT)
  end
 
  alias xail_core_winselect_process_handling process_handling
  def process_handling(*args, &block)
    # // Method to process handling.
    xail_core_winselect_process_handling(*args, &block)
    return process_pageright if handle?(:pageright) && Input.trigger?(:RIGHT)
    return process_pageleft if handle?(:pageleft) && Input.trigger?(:LEFT)
  end
   
  def process_pageright
    # // Method to process page right.
    Sound.play_cursor
    Input.update
    deactivate
    call_handler(:pageright)
  end
 
  def process_pageleft
    # // Method to process page left.
    Sound.play_cursor
    Input.update
    deactivate
    call_handler(:pageleft)
  end
 
end
#==============================================================================#
# ** Window_Icon
#------------------------------------------------------------------------------
#  New Window :: Window_Icon - A window for drawing icon(s).
#==============================================================================#
class Window_Icon < Window_Base
 
  attr_accessor :enabled
  attr_accessor :alignment
 
  def initialize(x, y, window_width, hsize)
    # // Method to initialize the icon window.
    super(0, 0, window_width, window_height(hsize))
    @icons = []
    @index = 0
    @enabled = true
    @alignment = 0
    refresh
  end
 
  def window_height(hsize)
    # // Method to return the height.
    fitting_height(hsize)
  end
 
  def refresh
    # // Method to refresh the icon window.
    contents.clear
  end
 
  def draw_cmd_icons(icons, index)
    # // Draw all of the icons.
    return if !@enabled
    count = 0
    for i in icons
      align = 0
      x = 110
      next if i[index].nil?
      case @alignment
      when 1, 2 ; align = -110
      end
      draw_icon(i[index], x + align, 24 * count)
      count += 1
      break if (24 * count > height - 24)
    end
  end
 
end
#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
# Adding check item method to return a item based on the type.
#==============================================================================
class Game_Party < Game_Unit
 
  def check_item?(item, type)
    # // Method to return a item based on the type.
    case type
    when :item    ; item = $data_items[item]
    when :weapon  ; item = $data_weapons[item]
    when :armor  ; item = $data_armors[item]
    end
  end

end
#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
# Adding methods to check for comments on events.
#==============================================================================
class Game_Event < Game_Character
 
  def comment?(comment)
    # // Method to check if comment is included in event.
    unless empty? or @list.nil?
      for evt in @list
        if evt.code == 108 or evt.code == 408
          if evt.parameters[0].include?(comment)
            return true
          end
        end
      end
    end
    return false
  end
 
  def comment_int?(comment)
    # // Method to check variable integer in event.
    unless empty? or @list.nil?
      for evt in @list
        if evt.code == 108 or evt.code == 408
          if evt.parameters[0] =~ /<#{comment}:[ ]?(\d*)>?/
            return ($1.to_i > 0 ? $1.to_i : 0)
          end
        end
      end
    end
  end

end # END OF FILE

#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*=#

Espero tu respuesta con una solución, sino puedes no pasa nada ya lo sabes jajaj

Un saludo youkai!

EDIT: Youkai me ha surgido otro problemilla al probar a fondo el script:
Yo uso un script en el que añado más slots para equipar más accesorios, o más armas, etc. Entonces resulta que en el script de equipo que quiero que modifiques (el primero, el del pedido camos xD) sale una lista larga del equipo, haciendo que si añado más slots se añaden uno debajo del otro tapando la biografia del personaje que se ve por debajo de los equipos. Aquí una screen:


Lo que me gustaría saber si puedes hacer es un desplegable o similar (o sea una lista que pulsando la z en el menú de estado te lleve a la lista y con las flechas arriba/abajo se vaya desplazando por los items equipados)

si no también me valdría una reconfiguración general:
- Que no se muestra la biografia del personaje.
- Que las barras de suerte, ataque, etc. se situen 3 a izquierda y 3 a la derecha (o sea en 3 filas y 2 columnas)
- Y que el equipo se mostrara abajo en 3 columnas ampliándo las posibilidades de añadir a un número bastante mayor.

Si no se puede hacer ninguna de las 2 cosas, otra opción sería que no se mostrara el equipo.

Dime si puedes hacerlo, sino tendré que dejar de usar este script por incompatibilidad jeje.

PD: si necesitas saber que scripts utilizo para crear los slots o algo así dimelo y te los subo. Un saludo!

youkai

avatar
Primero que nada...Leda! por favor, forgive me!! Perdoname!! Sumimasen!! No habia visto tu pedido....dale gracias a alex que fue el que vi XDDDD
Asi que bueno, primero va leda:
Sustituye Main por esto, o lo puedes poner encima...como quieras XD
Código:
#==============================================================================
# ** Main
#------------------------------------------------------------------------------
#  After defining each class, actual processing begins here.
#==============================================================================

begin
  # Prepare for transition
  Graphics.freeze
    # Load database
    $data_actors        = load_data("Data/Actors.rxdata")
    $data_classes      = load_data("Data/Classes.rxdata")
    $data_skills        = load_data("Data/Skills.rxdata")
    $data_items        = load_data("Data/Items.rxdata")
    $data_weapons      = load_data("Data/Weapons.rxdata")
    $data_armors        = load_data("Data/Armors.rxdata")
    $data_enemies      = load_data("Data/Enemies.rxdata")
    $data_troops        = load_data("Data/Troops.rxdata")
    $data_states        = load_data("Data/States.rxdata")
    $data_animations    = load_data("Data/Animations.rxdata")
    $data_tilesets      = load_data("Data/Tilesets.rxdata")
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    $data_system        = load_data("Data/System.rxdata")
    # Make system object
    # Reset frame count for measuring play time
    Graphics.frame_count = 0
    # Make each type of game object
    $game_temp          = Game_Temp.new
    $game_system        = Game_System.new
    $game_switches      = Game_Switches.new
    $game_variables    = Game_Variables.new
    $game_self_switches = Game_SelfSwitches.new
    $game_screen        = Game_Screen.new
    $game_actors        = Game_Actors.new
    $game_party        = Game_Party.new
    $game_troop        = Game_Troop.new
    $game_map          = Game_Map.new
    $game_player        = Game_Player.new
    # Set up initial party
    $game_party.setup_starting_members
    # Set up initial map position
    $game_map.setup($data_system.start_map_id)
    # Move player to initial position
    $game_player.moveto($data_system.start_x, $data_system.start_y)
    # Refresh player
    $game_player.refresh
    # Run automatic change for BGM and BGS set with map
    $game_map.autoplay
    # Update map (run parallel process event)
    $game_map.update
    # Switch to map screen
    $scene = Scene_Map.new
  Font.default_name = "Tahoma"
  Font.default_size = 24
  # Call main method as long as $scene is effective
  while $scene != nil
    $scene.main
  end
  # Fade out
  Graphics.transition(20)
rescue Errno::ENOENT
  # Supplement Errno::ENOENT exception
  # If unable to open file, display message and end
  filename = $!.message.sub("No such file or directory - ", "")
  print("Unable to find file #{filename}.")
end
Esto provoca que empieces, en lugar de en el titulo, en un mapa. Asi que configura ese mapa con los eventos que quieras, prepara y pon todas las imagenes y etc que quieras y al final agregas en un comando de llamar script:

$scene = Scene_Title.new

Para que pase al titulo.
Y ahora, agrega esto encima de Main:
Código:
module Youkai
  Initial_GameMap = 2  #<-- Pon aqui el ID del mapa inicial JUGABLE
  Initial_X = 5        #<-- Pon aqui la coordenada X del mapa inicial JUGABLE
  Initial_Y = 5        #<-- Pon aqui la coordenada Y del mapa inicial JUGABLE
end

class Scene_Title
  def command_new_game
    # Play decision SE
    $game_system.se_play($data_system.decision_se)
    # Stop BGM
    Audio.bgm_stop
    # Reset frame count for measuring play time
    Graphics.frame_count = 0
    # Make each type of game object
    $game_temp          = Game_Temp.new
    $game_system        = Game_System.new
    $game_switches      = Game_Switches.new
    $game_variables    = Game_Variables.new
    $game_self_switches = Game_SelfSwitches.new
    $game_screen        = Game_Screen.new
    $game_actors        = Game_Actors.new
    $game_party        = Game_Party.new
    $game_troop        = Game_Troop.new
    $game_map          = Game_Map.new
    $game_player        = Game_Player.new
    # Set up initial party
    $game_party.setup_starting_members
    # Set up initial map position
    $game_map.setup(Youkai::Initial_GameMap)
    # Move player to initial position
    $game_player.moveto(Youkai::Initial_X, Youkai::Initial_Y)
    # Refresh player
    $game_player.refresh
    # Run automatic change for BGM and BGS set with map
    $game_map.autoplay
    # Update map (run parallel process event)
    $game_map.update
    # Switch to map screen
    $scene = Scene_Map.new
  end
end
Con eso debes de resolver tu problema XD
Ahh...no es necesario usar Eventos Comunes en este caso, puedes poner un evento en Inicio Automatico con todo dentro y ya XD como si fuese el inicio de cualquier juego.

Y ahora viene mi querido amigo alex XDDDD
Primero debo decir que el TP, si no me equivoco(no uso Ace), solo posee un valor dentro de la batalla, fuera de esta es 0. Si tienes algun script que hace que esto cambie, pues entonces si mostrara valor, de lo contrario, siempre mostrara 0 en el status. Si me equivoco en algo corrigeme y perdona la ignoracia, es que no uso(y ni pienso usar XP) Ace.
En cualquier caso, aqui esta tu pedido resuelto:
Código:
#==============================================================================
#  XS - Status Delux
#  Author: Nicke
#  Created: 05/08/2012
#  Edited: 28/12/2012
#  Version: 1.0c
#==============================================================================
# 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.

# This script changes the status scene to a more delux version.
# There are a few settings but bascially this is just a plug and play script.
#
# *** Only for RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-STATUS-DELUX"] = true

module XAIL
  module STATUS_DELUX
  #--------------------------------------------------------------------------#
  # * Settings
  #--------------------------------------------------------------------------#
    # FONT = [name, size, color, bold, shadow]
    FONT = [["Segoe UI", "Anklada™","Verdana"], 18, Color.new(255,255,255), true, true]
 
    # BAR_COLOR = rgba(255,255,255,255)
    # Set the color of the bars.
    BAR_COLOR = [Color.new(100,100,40,180), Color.new(200,200,200,180)]
    BAR_HP = [Color.new(225,50,50,64), Color.new(235,75,75,175)]
    BAR_MP = [Color.new(50,50,225,64), Color.new(75,75,235,175)]
    BAR_TP = [Color.new(50, 255, 50, 64), Color.new(75, 235, 75, 175)]
 
    # LINE_COLOR = rgba(255,255,255,255)
    # Set the color of the horizontal line.
    LINE_COLOR = [Color.new(255,255,255,200), Color.new(0,0,0,128)]
 
    # LIST_ICONS[id] = icon_id
    # Set the param icon_id. (optional)
    ICONS = []
    ICONS[0] = 4149 # HP
    ICONS[1] = 4132 # MP
    ICONS[2] = 4138 # EXP
    ICONS[3] = 4145 # ATK
    ICONS[4] = 4150 # DEF
    ICONS[5] = 4147 # MAGIC
    ICONS[6] = 4148 # RES
    ICONS[7] = 4140 # AGL
    ICONS[8] = 4131 # LUK

  end
end
# *** Don't edit below unless you know what you are doing. ***
#==============================================================================#
# ** Error Handler
#==============================================================================#
  unless $imported["XAIL-XS-CORE"]
    # // Error handler when XS - Core is not installed.
    msg = "The script %s requires the latest version of XS - Core in order to function properly."
    name = "XS - Status Delux"
    msgbox(sprintf(msg, name))
    exit
  end
#==============================================================================#
# ** Window_Status
#==============================================================================#
class Window_Status < Window_Selectable

  def refresh
    # // Method to refresh.
    contents.clear
    # // Draw icons.
    draw_icons(XAIL::STATUS_DELUX::ICONS, :vertical, 0, line_height * 2, [4138,4145])
    # // Draw actor details.
    draw_font_text(@actor.name + " " + @actor.nickname, 0, line_height * 0, 200, 0, XAIL::STATUS_DELUX::FONT[0], 22, XAIL::STATUS_DELUX::FONT[2])
    draw_font_text(@actor.class.name, 0, line_height * 0, contents.width, 2, XAIL::STATUS_DELUX::FONT[0], 22, XAIL::STATUS_DELUX::FONT[2])
    # // If XS - Fame System is imported.
    if $imported["XAIL-FAME-SYSTEM"]
      fame = "Fame: #{@actor.current_fame} (#{@actor.fame}/#{@actor.max_fame})"
      draw_font_text(fame, 0, 14, contents_width, 0, XAIL::STATUS_DELUX::FONT[0], 16, Color.new(255,255,255))
    end
    # // Draw line.
    draw_line_ex(48, line_height * 1, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor face, level, stats and icons.
    draw_actor_face(@actor, 420, line_height * 2)
    if $imported["XAIL-LVL-TITLE"]
      lvl = "#{Vocab::level_a}: #{draw_title_level(@actor)}"
    else
      lvl = "#{Vocab::level_a}: #{@actor.level}  /  #{@actor.max_level}"
    end
    draw_font_text(lvl, 240, line_height * 2, 180, 0, XAIL::STATUS_DELUX::FONT[0], 20, XAIL::STATUS_DELUX::FONT[2])
    draw_actor_icons(@actor, 240, line_height * 3)
    draw_actor_stats(@actor, :hp, 20, line_height * 2, XAIL::STATUS_DELUX::BAR_HP[0], XAIL::STATUS_DELUX::BAR_HP[1])
    draw_actor_stats(@actor, :mp, 20, line_height * 3, XAIL::STATUS_DELUX::BAR_MP[0], XAIL::STATUS_DELUX::BAR_MP[1])
    draw_actor_stats(@actor, :tp, 20, line_height * 4, XAIL::STATUS_DELUX::BAR_TP[0], XAIL::STATUS_DELUX::BAR_TP[1])
    draw_exp_info(20, line_height * 4)
    # // Draw line.
    draw_line_ex(-48, line_height * 6, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor parameters.
    draw_parameters(20, line_height * 7)
    # // Draw actor equipment.
    draw_equipments(240, line_height * 7)
    # // Draw line.
    draw_line_ex(48, line_height * 13, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor description.
    draw_description(4, line_height * 14)
  end
 
 def draw_actor_stats(actor, stat, x, y, color1, color2, width = 200)
    # // Method to draw actor hp & mp.
    case stat
    when :hp
      rate = actor.hp_rate
      vocab = Vocab::hp_a
      values = [actor.hp, actor.mhp]
    when :mp
      rate = actor.mp_rate
      vocab = Vocab::mp_a
      values = [actor.mp, actor.mmp]
    when :tp
      rate = actor.tp_rate
      vocab = Vocab::tp_a
      values = [actor.tp, 100]
    end
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = 16 # // Override font size.
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_gauge_ex(x, y - 14, width, 20, rate, color1, color2)
    draw_text(x, y, width, line_height, vocab, 1)
    draw_current_and_max_values_ex(x - 8, y, width, values[0], values[1],
    XAIL::STATUS_DELUX::FONT[2], XAIL::STATUS_DELUX::FONT[2])
    reset_font_settings
  end
 
  def draw_current_and_max_values_ex(x, y, width, current, max, color1, color2)
    # // Method to draw current and max values.
    change_color(color1)
    xr = x + width
    if width < 96
      draw_text(xr - 40, y, 42, line_height, current, 0)
    else
      draw_text(32, y, 42, line_height, current, 0)
      change_color(color2)
      draw_text(xr - 36, y, 42, line_height, max, 2)
    end
  end

  def draw_parameters(x, y)
    # // Method to draw actor parameters.
    font = XAIL::STATUS_DELUX::FONT[0]
    size = 16 # // Override font size.
    c1 = XAIL::STATUS_DELUX::BAR_COLOR[0]
    c2 = XAIL::STATUS_DELUX::BAR_COLOR[1]
    c3 = XAIL::STATUS_DELUX::FONT[2]
    c4 = c3
    6.times {|i| draw_actor_param_gauge(@actor, x, y + line_height * i, 200, i + 2, font, size, c1, c2, c3, c4) }
  end

  def draw_exp_info(x, y)
    # // Method to draw exp info.
    s1 = @actor.max_level? ? "?" : @actor.exp
    s2 = @actor.max_level? ? "?" : @actor.next_level_exp - @actor.exp
    param_rate = @actor.exp / @actor.next_level_exp.to_f
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = 16
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_gauge_ex(x, y + 8, 200, 20, param_rate, XAIL::STATUS_DELUX::BAR_COLOR[0], XAIL::STATUS_DELUX::BAR_COLOR[1])
    draw_text(x + 10, y + line_height, 200, line_height, s1, 0)
    draw_text(x, y + line_height, 200, line_height, "EXP", 1)
    draw_text(x - 1, y + line_height, 200, line_height, s2, 2)
    reset_font_settings
  end

  def draw_description(x, y)
    # // Method override to draw the description.
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = XAIL::STATUS_DELUX::FONT[1]
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_text_ex(x, y, @actor.description)
    reset_font_settings
  end
 
end # END OF FILE

#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*=#
En donde dice BAR_TP vienen los colores iniciales y finales(respectivamente) de la barra, si quieres cambiarselos, puedes hacerlo ahi. Yo le puse los colores como me parecio XD(tampoco estan mal! XDD)
Saludos,
¥oukai
PD: Bugs, errores, incoherencia, donaciones(?) me avisan XDD

Ledai

avatar
WWEEEE!!!!! Gacias, ya lo di por imposible... pensé que no se podía... gracias!!!!! gracias!!!!!!

Creo que podré hacerlo funcionar...




Entérate de todas las novedades

youkai

avatar
Muy bien alex, voy a intentarlo usando la letra Z(o la que sea xD)
Si no puedo, entonces hago el cambio de posiciones(que es mucho mas facil). En cualquier caso, cuando tenga algo o pase algo, te edito este mensaje.
Saludos,
¥oukai

EDIT: Al final...olvida la Z, iba a ser un poco tedioso intentarlo por esa forma, asi que hice lo que creo que es mas logico...separe los equipos XDDD Aqui te dejo el script, miralo por ti mismo y dime si te gusta asi.
Código:
#==============================================================================
#  XS - Status Delux
#  Author: Nicke
#  Created: 05/08/2012
#  Edited: 28/12/2012
#  Version: 1.0c
#==============================================================================
# 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.

# This script changes the status scene to a more delux version.
# There are a few settings but bascially this is just a plug and play script.
#
# *** Only for RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-STATUS-DELUX"] = true

module XAIL
  module STATUS_DELUX
  #--------------------------------------------------------------------------#
  # * Settings
  #--------------------------------------------------------------------------#
    # FONT = [name, size, color, bold, shadow]
    FONT = [["Segoe UI", "Anklada™","Verdana"], 18, Color.new(255,255,255), true, true]
 
    # BAR_COLOR = rgba(255,255,255,255)
    # Set the color of the bars.
    BAR_COLOR = [Color.new(100,100,40,180), Color.new(200,200,200,180)]
    BAR_HP = [Color.new(225,50,50,64), Color.new(235,75,75,175)]
    BAR_MP = [Color.new(50,50,225,64), Color.new(75,75,235,175)]
    BAR_TP = [Color.new(50, 255, 50, 64), Color.new(75, 235, 75, 175)]
 
    # LINE_COLOR = rgba(255,255,255,255)
    # Set the color of the horizontal line.
    LINE_COLOR = [Color.new(255,255,255,200), Color.new(0,0,0,128)]
 
    # LIST_ICONS[id] = icon_id
    # Set the param icon_id. (optional)
    ICONS = []
    ICONS[0] = 4149 # HP
    ICONS[1] = 4132 # MP
    ICONS[2] = 4138 # EXP
    ICONS[3] = 4145 # ATK
    ICONS[4] = 4150 # DEF
    ICONS[5] = 4147 # MAGIC
    ICONS[6] = 4148 # RES
    ICONS[7] = 4140 # AGL
    ICONS[8] = 4131 # LUK

  end
end
# *** Don't edit below unless you know what you are doing. ***
#==============================================================================#
# ** Error Handler
#==============================================================================#
  unless $imported["XAIL-XS-CORE"]
    # // Error handler when XS - Core is not installed.
    msg = "The script %s requires the latest version of XS - Core in order to function properly."
    name = "XS - Status Delux"
    msgbox(sprintf(msg, name))
    exit
  end
#==============================================================================#
# ** Window_Status
#==============================================================================#
class Window_Status < Window_Selectable

  def refresh
    # // Method to refresh.
    contents.clear
    # // Draw icons.
    draw_icons(XAIL::STATUS_DELUX::ICONS, :vertical, 0, line_height * 2, [4138,4145])
    # // Draw actor details.
    draw_font_text(@actor.name + " " + @actor.nickname, 0, line_height * 0, 200, 0, XAIL::STATUS_DELUX::FONT[0], 22, XAIL::STATUS_DELUX::FONT[2])
    draw_font_text(@actor.class.name, 0, line_height * 0, contents.width, 2, XAIL::STATUS_DELUX::FONT[0], 22, XAIL::STATUS_DELUX::FONT[2])
    # // If XS - Fame System is imported.
    if $imported["XAIL-FAME-SYSTEM"]
      fame = "Fame: #{@actor.current_fame} (#{@actor.fame}/#{@actor.max_fame})"
      draw_font_text(fame, 0, 14, contents_width, 0, XAIL::STATUS_DELUX::FONT[0], 16, Color.new(255,255,255))
    end
    # // Draw line.
    draw_line_ex(48, line_height * 1, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor face, level, stats and icons.
    draw_actor_face(@actor, 420, line_height * 2)
    if $imported["XAIL-LVL-TITLE"]
      lvl = "#{Vocab::level_a}: #{draw_title_level(@actor)}"
    else
      lvl = "#{Vocab::level_a}: #{@actor.level}  /  #{@actor.max_level}"
    end
    draw_font_text(lvl, 240, line_height * 2, 180, 0, XAIL::STATUS_DELUX::FONT[0], 20, XAIL::STATUS_DELUX::FONT[2])
    draw_actor_icons(@actor, 240, line_height * 3)
    draw_actor_stats(@actor, :hp, 20, line_height * 2, XAIL::STATUS_DELUX::BAR_HP[0], XAIL::STATUS_DELUX::BAR_HP[1])
    draw_actor_stats(@actor, :mp, 20, line_height * 3, XAIL::STATUS_DELUX::BAR_MP[0], XAIL::STATUS_DELUX::BAR_MP[1])
    draw_actor_stats(@actor, :tp, 20, line_height * 4, XAIL::STATUS_DELUX::BAR_TP[0], XAIL::STATUS_DELUX::BAR_TP[1])
    draw_exp_info(20, line_height * 4)
    # // Draw line.
    draw_line_ex(-48, line_height * 6, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor parameters.
    draw_parameters(20, line_height * 7)
    # // Draw actor equipment.
    draw_equipments(240, line_height * 7)
    # // Draw line.
    draw_line_ex(48, line_height * 13, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor description.
    draw_description(4, line_height * 14)
  end
 
  #--------------------------------------------------------------------------
  # ● 装備品の描画
  #--------------------------------------------------------------------------
  def draw_equipments(x, y)
    @actor.equips.each_with_index do |item, i|
      if i < 3
        draw_item_name(item, x, y + line_height * i)
      else
        draw_item_name(item, x + 150, y)
      end
    end
  end

 
 def draw_actor_stats(actor, stat, x, y, color1, color2, width = 200)
    # // Method to draw actor hp & mp.
    case stat
    when :hp
      rate = actor.hp_rate
      vocab = Vocab::hp_a
      values = [actor.hp, actor.mhp]
    when :mp
      rate = actor.mp_rate
      vocab = Vocab::mp_a
      values = [actor.mp, actor.mmp]
    when :tp
      rate = actor.tp_rate
      vocab = Vocab::tp_a
      values = [actor.tp, 100]
    end
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = 16 # // Override font size.
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_gauge_ex(x, y - 14, width, 20, rate, color1, color2)
    draw_text(x, y, width, line_height, vocab, 1)
    draw_current_and_max_values_ex(x - 8, y, width, values[0], values[1],
    XAIL::STATUS_DELUX::FONT[2], XAIL::STATUS_DELUX::FONT[2])
    reset_font_settings
  end
 
  def draw_current_and_max_values_ex(x, y, width, current, max, color1, color2)
    # // Method to draw current and max values.
    change_color(color1)
    xr = x + width
    if width < 96
      draw_text(xr - 40, y, 42, line_height, current, 0)
    else
      draw_text(32, y, 42, line_height, current, 0)
      change_color(color2)
      draw_text(xr - 36, y, 42, line_height, max, 2)
    end
  end

  def draw_parameters(x, y)
    # // Method to draw actor parameters.
    font = XAIL::STATUS_DELUX::FONT[0]
    size = 16 # // Override font size.
    c1 = XAIL::STATUS_DELUX::BAR_COLOR[0]
    c2 = XAIL::STATUS_DELUX::BAR_COLOR[1]
    c3 = XAIL::STATUS_DELUX::FONT[2]
    c4 = c3
    6.times {|i| draw_actor_param_gauge(@actor, x, y + line_height * i, 200, i + 2, font, size, c1, c2, c3, c4) }
  end

  def draw_exp_info(x, y)
    # // Method to draw exp info.
    s1 = @actor.max_level? ? "?" : @actor.exp
    s2 = @actor.max_level? ? "?" : @actor.next_level_exp - @actor.exp
    param_rate = @actor.exp / @actor.next_level_exp.to_f
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = 16
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_gauge_ex(x, y + 8, 200, 20, param_rate, XAIL::STATUS_DELUX::BAR_COLOR[0], XAIL::STATUS_DELUX::BAR_COLOR[1])
    draw_text(x + 10, y + line_height, 200, line_height, s1, 0)
    draw_text(x, y + line_height, 200, line_height, "EXP", 1)
    draw_text(x - 1, y + line_height, 200, line_height, s2, 2)
    reset_font_settings
  end

  def draw_description(x, y)
    # // Method override to draw the description.
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = XAIL::STATUS_DELUX::FONT[1]
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_text_ex(x, y, @actor.description)
    reset_font_settings
  end
 
end # END OF FILE

#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*=#

alex.fayula

avatar
Gracias youkai, pero hay un error. Los equipos que deberian salir en la segunda columna se superponen, osea, se colocan unos encima de los otros


Por otro lado si no te es mucho trabajo preferiría que la biografia no se mostrara y el equipo mostrara su espacio (lo digo porque seguramente me hagan falta más de 12 slots de equipo (que son los que caben en la segunda columna)). Lo que me gustaría sería cambiar de ubicacion las barras de agilidad, fuerza , etc. y ponerlas en 2 columnas (3 y 3) y debajo colocar la línia que sale y debajo de esta 3 columnas de slots de equipo.

Si lo consiguieras sería mi dios xD jajaja, no enserio te lo agradecería mucho, sé que es más trabajo pero creo que es como me quedaría mejor en mi proyecto.

Dime algo, sino lo consigues intenta solucionar lo de las 2 columnas pero de veras que te lo agradeceria mucho si lo consiguieras xD

PD: lo de la barra de tp perfecto y, no el valor de tp se mantiene fuera de la batalla.

Saludos!

youkai

avatar
Hola alex, disculpa la demora en responder, pero no estaba en casa. XD
Ya te tengo tu script y lo que hice fue que el por defecto creara todas las columnas que hicieran falta, cada una con 4 elementos. Elimine la biografia e hice los cambios que solicitabas XD
Y no te preocupes, que hacer eso no es trabajo...es matematicas ¬¬...que es mucho peor XDDDD
Código:
#==============================================================================
#  XS - Status Delux
#  Author: Nicke
#  Created: 05/08/2012
#  Edited: 28/12/2012
#  Version: 1.0c
#==============================================================================
# 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.

# This script changes the status scene to a more delux version.
# There are a few settings but bascially this is just a plug and play script.
#
# *** Only for RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-STATUS-DELUX"] = true

module XAIL
  module STATUS_DELUX
  #--------------------------------------------------------------------------#
  # * Settings
  #--------------------------------------------------------------------------#
    # FONT = [name, size, color, bold, shadow]
    FONT = [["Segoe UI", "Anklada™","Verdana"], 18, Color.new(255,255,255), true, true]
 
    # BAR_COLOR = rgba(255,255,255,255)
    # Set the color of the bars.
    BAR_COLOR = [Color.new(100,100,40,180), Color.new(200,200,200,180)]
    BAR_HP = [Color.new(225,50,50,64), Color.new(235,75,75,175)]
    BAR_MP = [Color.new(50,50,225,64), Color.new(75,75,235,175)]
    BAR_TP = [Color.new(50, 255, 50, 64), Color.new(75, 235, 75, 175)]
 
    # LINE_COLOR = rgba(255,255,255,255)
    # Set the color of the horizontal line.
    LINE_COLOR = [Color.new(255,255,255,200), Color.new(0,0,0,128)]
 
    # LIST_ICONS[id] = icon_id
    # Set the param icon_id. (optional)
    ICONS = []
    ICONS[0] = 4149 # HP
    ICONS[1] = 4132 # MP
    ICONS[2] = 4138 # EXP
    ICONS[3] = 4145 # ATK
    ICONS[4] = 4150 # DEF
    ICONS[5] = 4147 # MAGIC
    ICONS[6] = 4148 # RES
    ICONS[7] = 4140 # AGL
    ICONS[8] = 4131 # LUK

  end
end
# *** Don't edit below unless you know what you are doing. ***
#==============================================================================#
# ** Error Handler
#==============================================================================#
  unless $imported["XAIL-XS-CORE"]
    # // Error handler when XS - Core is not installed.
    msg = "The script %s requires the latest version of XS - Core in order to function properly."
    name = "XS - Status Delux"
    msgbox(sprintf(msg, name))
    exit
  end
#==============================================================================#
# ** Window_Status
#==============================================================================#
class Window_Status < Window_Selectable

  def refresh
    # // Method to refresh.
    contents.clear
    # // Draw icons.
    draw_icons(XAIL::STATUS_DELUX::ICONS, :vertical, 0, line_height * 2, [4138,4145])
    # // Draw actor details.
    draw_font_text(@actor.name + " " + @actor.nickname, 0, line_height * 0, 200, 0, XAIL::STATUS_DELUX::FONT[0], 22, XAIL::STATUS_DELUX::FONT[2])
    draw_font_text(@actor.class.name, 0, line_height * 0, contents.width, 2, XAIL::STATUS_DELUX::FONT[0], 22, XAIL::STATUS_DELUX::FONT[2])
    # // If XS - Fame System is imported.
    if $imported["XAIL-FAME-SYSTEM"]
      fame = "Fame: #{@actor.current_fame} (#{@actor.fame}/#{@actor.max_fame})"
      draw_font_text(fame, 0, 14, contents_width, 0, XAIL::STATUS_DELUX::FONT[0], 16, Color.new(255,255,255))
    end
    # // Draw line.
    draw_line_ex(48, line_height * 1, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor face, level, stats and icons.
    draw_actor_face(@actor, 420, line_height * 2)
    if $imported["XAIL-LVL-TITLE"]
      lvl = "#{Vocab::level_a}: #{draw_title_level(@actor)}"
    else
      lvl = "#{Vocab::level_a}: #{@actor.level}  /  #{@actor.max_level}"
    end
    draw_font_text(lvl, 240, line_height * 2, 180, 0, XAIL::STATUS_DELUX::FONT[0], 20, XAIL::STATUS_DELUX::FONT[2])
    draw_actor_icons(@actor, 240, line_height * 3)
    draw_actor_stats(@actor, :hp, 20, line_height * 2, XAIL::STATUS_DELUX::BAR_HP[0], XAIL::STATUS_DELUX::BAR_HP[1])
    draw_actor_stats(@actor, :mp, 20, line_height * 3, XAIL::STATUS_DELUX::BAR_MP[0], XAIL::STATUS_DELUX::BAR_MP[1])
    draw_actor_stats(@actor, :tp, 20, line_height * 4, XAIL::STATUS_DELUX::BAR_TP[0], XAIL::STATUS_DELUX::BAR_TP[1])
    draw_exp_info(20, line_height * 4)
    # // Draw line.
    draw_line_ex(-48, line_height * 6, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor parameters.
    draw_parameters(20, line_height * 7)
    # // Draw actor equipment.
    draw_equipments(20, line_height * 11)
    # // Draw line.
    draw_line_ex(48, line_height * 10, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor description.
 #  draw_description(4, line_height * 14)
  end
 
  #--------------------------------------------------------------------------
  # ● 装備品の描画
  #--------------------------------------------------------------------------
  def draw_equipments(x, y)
    @actor.equips.each_with_index do |item, i|
      sy = line_height * (i%4)
      sx = 150 * (i / 4)
      draw_item_name(item, x + sx, y + sy)
    end
  end

 
 def draw_actor_stats(actor, stat, x, y, color1, color2, width = 200)
    # // Method to draw actor hp & mp.
    case stat
    when :hp
      rate = actor.hp_rate
      vocab = Vocab::hp_a
      values = [actor.hp, actor.mhp]
    when :mp
      rate = actor.mp_rate
      vocab = Vocab::mp_a
      values = [actor.mp, actor.mmp]
    when :tp
      rate = actor.tp_rate
      vocab = Vocab::tp_a
      values = [actor.tp, 100]
    end
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = 16 # // Override font size.
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_gauge_ex(x, y - 14, width, 20, rate, color1, color2)
    draw_text(x, y, width, line_height, vocab, 1)
    draw_current_and_max_values_ex(x - 8, y, width, values[0], values[1],
    XAIL::STATUS_DELUX::FONT[2], XAIL::STATUS_DELUX::FONT[2])
    reset_font_settings
  end
 
  def draw_current_and_max_values_ex(x, y, width, current, max, color1, color2)
    # // Method to draw current and max values.
    change_color(color1)
    xr = x + width
    if width < 96
      draw_text(xr - 40, y, 42, line_height, current, 0)
    else
      draw_text(32, y, 42, line_height, current, 0)
      change_color(color2)
      draw_text(xr - 36, y, 42, line_height, max, 2)
    end
  end

  def draw_parameters(x, y)
    # // Method to draw actor parameters.
    font = XAIL::STATUS_DELUX::FONT[0]
    size = 16 # // Override font size.
    c1 = XAIL::STATUS_DELUX::BAR_COLOR[0]
    c2 = XAIL::STATUS_DELUX::BAR_COLOR[1]
    c3 = XAIL::STATUS_DELUX::FONT[2]
    c4 = c3
    6.times {|i| draw_actor_param_gauge(@actor, x + 216*(i%2), y + line_height * (i / 2), 200, i + 2, font, size, c1, c2, c3, c4) }
  end

  def draw_exp_info(x, y)
    # // Method to draw exp info.
    s1 = @actor.max_level? ? "?" : @actor.exp
    s2 = @actor.max_level? ? "?" : @actor.next_level_exp - @actor.exp
    param_rate = @actor.exp / @actor.next_level_exp.to_f
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = 16
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_gauge_ex(x, y + 8, 200, 20, param_rate, XAIL::STATUS_DELUX::BAR_COLOR[0], XAIL::STATUS_DELUX::BAR_COLOR[1])
    draw_text(x + 10, y + line_height, 200, line_height, s1, 0)
    draw_text(x, y + line_height, 200, line_height, "EXP", 1)
    draw_text(x - 1, y + line_height, 200, line_height, s2, 2)
    reset_font_settings
  end

  def draw_description(x, y)
    # // Method override to draw the description.
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = XAIL::STATUS_DELUX::FONT[1]
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_text_ex(x, y, @actor.description)
    reset_font_settings
  end
 
end # END OF FILE

#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*=#
Como siempre, disfruta de tu "nuevo" script y si tienes algun problema con el, aqui estoy XD
Saludos,
¥oukai

alex.fayula

avatar
Perfecto youkai, una última cosa, delante de cada barra de ataque, defesa etc. salía un icono, los iconos siguen saliendo pero invaden el terreno del equipo. Si lo puedes corregir perfecto, sino no le pondré iconos y ya está.

Y si puedes hacer que las columnas sean de 5 elementos en vez de 4 mejor

Soy muy pesado lo sé xD jajaj pero bueno así tu tmb te diviertes supongo jajaj, o eso quiero creer.

Y de verdad que está genial!, ojala tubiera yo tiempo de ponerme a aprender, a ver si en verano puedo.

Un saludo!

youkai

avatar
Pues aqui tienes una vez mas el script, rehecho con todas las cosas arregladas...
Ya tienes las columnas de 5 y los icons bien puestos(creo XD)
Código:
#==============================================================================
#  XS - Status Delux
#  Author: Nicke
#  Created: 05/08/2012
#  Edited: 28/12/2012
#  Version: 1.0c
#==============================================================================
# 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.

# This script changes the status scene to a more delux version.
# There are a few settings but bascially this is just a plug and play script.
#
# *** Only for RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-STATUS-DELUX"] = true

module XAIL
  module STATUS_DELUX
  #--------------------------------------------------------------------------#
  # * Settings
  #--------------------------------------------------------------------------#
    # FONT = [name, size, color, bold, shadow]
    FONT = [["Segoe UI", "Anklada™","Verdana"], 18, Color.new(255,255,255), true, true]
 
    # BAR_COLOR = rgba(255,255,255,255)
    # Set the color of the bars.
    BAR_COLOR = [Color.new(100,100,40,180), Color.new(200,200,200,180)]
    BAR_HP = [Color.new(225,50,50,64), Color.new(235,75,75,175)]
    BAR_MP = [Color.new(50,50,225,64), Color.new(75,75,235,175)]
    BAR_TP = [Color.new(50, 255, 50, 64), Color.new(75, 235, 75, 175)]
 
    # LINE_COLOR = rgba(255,255,255,255)
    # Set the color of the horizontal line.
    LINE_COLOR = [Color.new(255,255,255,200), Color.new(0,0,0,128)]
 
    # LIST_ICONS[id] = icon_id
    # Set the param icon_id. (optional)
    ICONS = []
    ICONS[0] = 4149 # HP
    ICONS[1] = 4132 # MP
    ICONS[2] = 4138 # EXP
    STATS_ICONS = []
    STATS_ICONS[0] = 4145 # ATK
    STATS_ICONS[1] = 4150 # DEF
    STATS_ICONS[2] = 4147 # MAGIC
    STATS_ICONS[3] = 4148 # RES
    STATS_ICONS[4] = 4140 # AGL
    STATS_ICONS[5] = 4131 # LUK

  end
end
# *** Don't edit below unless you know what you are doing. ***
#==============================================================================#
# ** Error Handler
#==============================================================================#
  unless $imported["XAIL-XS-CORE"]
    # // Error handler when XS - Core is not installed.
    msg = "The script %s requires the latest version of XS - Core in order to function properly."
    name = "XS - Status Delux"
    msgbox(sprintf(msg, name))
    exit
  end
#==============================================================================#
# ** Window_Status
#==============================================================================#
class Window_Status < Window_Selectable

  def refresh
    # // Method to refresh.
    contents.clear
    # // Draw icons.
    draw_icons(XAIL::STATUS_DELUX::ICONS, :vertical, 0, line_height * 2, [4138])
    draw_stats_icons(XAIL::STATUS_DELUX::STATS_ICONS, 0, line_height * 7)
    # // Draw actor details.
    draw_font_text(@actor.name + " " + @actor.nickname, 0, line_height * 0, 200, 0, XAIL::STATUS_DELUX::FONT[0], 22, XAIL::STATUS_DELUX::FONT[2])
    draw_font_text(@actor.class.name, 0, line_height * 0, contents.width, 2, XAIL::STATUS_DELUX::FONT[0], 22, XAIL::STATUS_DELUX::FONT[2])
    # // If XS - Fame System is imported.
    if $imported["XAIL-FAME-SYSTEM"]
      fame = "Fame: #{@actor.current_fame} (#{@actor.fame}/#{@actor.max_fame})"
      draw_font_text(fame, 0, 14, contents_width, 0, XAIL::STATUS_DELUX::FONT[0], 16, Color.new(255,255,255))
    end
    # // Draw line.
    draw_line_ex(48, line_height * 1, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor face, level, stats and icons.
    draw_actor_face(@actor, 420, line_height * 2)
    if $imported["XAIL-LVL-TITLE"]
      lvl = "#{Vocab::level_a}: #{draw_title_level(@actor)}"
    else
      lvl = "#{Vocab::level_a}: #{@actor.level}  /  #{@actor.max_level}"
    end
    draw_font_text(lvl, 240, line_height * 2, 180, 0, XAIL::STATUS_DELUX::FONT[0], 20, XAIL::STATUS_DELUX::FONT[2])
    draw_actor_icons(@actor, 240, line_height * 3)
    draw_actor_stats(@actor, :hp, 20, line_height * 2, XAIL::STATUS_DELUX::BAR_HP[0], XAIL::STATUS_DELUX::BAR_HP[1])
    draw_actor_stats(@actor, :mp, 20, line_height * 3, XAIL::STATUS_DELUX::BAR_MP[0], XAIL::STATUS_DELUX::BAR_MP[1])
    draw_actor_stats(@actor, :tp, 20, line_height * 4, XAIL::STATUS_DELUX::BAR_TP[0], XAIL::STATUS_DELUX::BAR_TP[1])
    draw_exp_info(20, line_height * 4)
    # // Draw line.
    draw_line_ex(-48, line_height * 6, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor parameters.
    draw_parameters(20, line_height * 7)
    # // Draw actor equipment.
    draw_equipments(20, line_height * 11)
    # // Draw line.
    draw_line_ex(48, line_height * 10, XAIL::STATUS_DELUX::LINE_COLOR[0], XAIL::STATUS_DELUX::LINE_COLOR[1])
    # // Draw actor description.
 #  draw_description(4, line_height * 14)
  end
 
  #--------------------------------------------------------------------------
  # ● 装備品の描画
  #--------------------------------------------------------------------------
  def draw_equipments(x, y)
    @actor.equips.each_with_index do |item, i|
      sy = line_height * (i%5)
      sx = 150 * (i / 5)
      draw_item_name(item, x + sx, y + sy)
    end
  end

 def draw_stats_icons(icons, x, y)
  ind = 0
  # // Method to draw icons in a horizonal or vertical alignment.
  for i in icons
    draw_icon(i, x + 250*(ind%2), y + line_height * (ind / 2))
  # y += line_height
    #x += line_height
    ind += 1
  end
 end
 
 def draw_actor_stats(actor, stat, x, y, color1, color2, width = 200)
    # // Method to draw actor hp & mp.
    case stat
    when :hp
      rate = actor.hp_rate
      vocab = Vocab::hp_a
      values = [actor.hp, actor.mhp]
    when :mp
      rate = actor.mp_rate
      vocab = Vocab::mp_a
      values = [actor.mp, actor.mmp]
    when :tp
      rate = actor.tp_rate
      vocab = Vocab::tp_a
      values = [actor.tp, 100]
    end
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = 16 # // Override font size.
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_gauge_ex(x, y - 14, width, 20, rate, color1, color2)
    draw_text(x, y, width, line_height, vocab, 1)
    draw_current_and_max_values_ex(x - 8, y, width, values[0], values[1],
    XAIL::STATUS_DELUX::FONT[2], XAIL::STATUS_DELUX::FONT[2])
    reset_font_settings
  end
 
  def draw_current_and_max_values_ex(x, y, width, current, max, color1, color2)
    # // Method to draw current and max values.
    change_color(color1)
    xr = x + width
    if width < 96
      draw_text(xr - 40, y, 42, line_height, current, 0)
    else
      draw_text(32, y, 42, line_height, current, 0)
      change_color(color2)
      draw_text(xr - 36, y, 42, line_height, max, 2)
    end
  end

  def draw_parameters(x, y)
    # // Method to draw actor parameters.
    font = XAIL::STATUS_DELUX::FONT[0]
    size = 16 # // Override font size.
    c1 = XAIL::STATUS_DELUX::BAR_COLOR[0]
    c2 = XAIL::STATUS_DELUX::BAR_COLOR[1]
    c3 = XAIL::STATUS_DELUX::FONT[2]
    c4 = c3
    6.times {|i| draw_actor_param_gauge(@actor, x + 256*(i%2), y + line_height * (i / 2), 200, i + 2, font, size, c1, c2, c3, c4) }
  end

  def draw_exp_info(x, y)
    # // Method to draw exp info.
    s1 = @actor.max_level? ? "?" : @actor.exp
    s2 = @actor.max_level? ? "?" : @actor.next_level_exp - @actor.exp
    param_rate = @actor.exp / @actor.next_level_exp.to_f
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = 16
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_gauge_ex(x, y + 8, 200, 20, param_rate, XAIL::STATUS_DELUX::BAR_COLOR[0], XAIL::STATUS_DELUX::BAR_COLOR[1])
    draw_text(x + 10, y + line_height, 200, line_height, s1, 0)
    draw_text(x, y + line_height, 200, line_height, "EXP", 1)
    draw_text(x - 1, y + line_height, 200, line_height, s2, 2)
    reset_font_settings
  end

  def draw_description(x, y)
    # // Method override to draw the description.
    contents.font.name = XAIL::STATUS_DELUX::FONT[0]
    contents.font.size = XAIL::STATUS_DELUX::FONT[1]
    contents.font.color = XAIL::STATUS_DELUX::FONT[2]
    contents.font.bold = XAIL::STATUS_DELUX::FONT[3]
    contents.font.shadow = XAIL::STATUS_DELUX::FONT[4]
    draw_text_ex(x, y, @actor.description)
    reset_font_settings
  end
 
end # END OF FILE

#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*=#

alex.fayula

avatar
Perfecto youkai, muchas gracias de verdad, excelente trabajo.

Cuando tenga algun otro pedido te dare la tabarra!

Saludos

rpgmanumaker

avatar
Hola, youkai XD!!
Bueno, quisiera saber si me puedes hacer este pedido... En la descripción del jugador del ACE si te pasas escribiendo el mensaje sale recortado... podrías hacer que el mensaje se moviera de derecha a izquierda para que se pueda leer entero... También pasa con las skills e Items...
¿Se podría arreglar...? Lo necesito para el ACE.

youkai

avatar
Bueno. si te fijas, el cuadro donde escribes las descripciones tiene 2 lineas, para hacer lo que pides debes de continuar la descripcion en la linea de abajo. Si las descripciones que quieres hacer son tan largas que no caben en 2 lineas....esta duro eso.....porque yo no me voy a dedicar a cambiar la estructura de TODAS las scenes para que Window_Help tenga 3 lineas de texto.
U otra cosa que se pudiese hacer es que cuando el texto sea tan largo que no quepa en 2 lineas de descripcion, que se achique el tamaño de la font.
Dime que quieres hacer, si no te gusta nada de lo que dije antes, pues entonces dime bien que es lo que buscas(en cualquer caso, el pedido no esta facil...te digo lo mismo que le dije a alex...muchas mates XDDDD) pero no te preocupes, dime que vas a hacer y vere que puedo hacer yo XD
Saludos,
¥oukai

rpgmanumaker

avatar
Em.... pues no sé... XD. Ya sabía lo de los dos renglones, pero a veces escribo más de lo que se puede... XDD. Bueno, pues si no hay otra manera, haz que la letras se hagan más pequeñas cuando supere el límite...

youkai

avatar
Hola manu, realmente es un tema algo complejo ya que la formula matematica a usar para el script es la que no me nace Ópalo Sonrisa Grande
De todas formas tengo algo hecho pero ahorita edito si se me ocurre algo mejor. De lo contrario edito con el script que tengo hecho.

EDIT: Aqui tienes lo que he hecho hasta el momento. Te digo, no es algo facil que quede todo exacto, a mi opinion lo mejor sera modificar la Window_Status cambiando un poco las coordenadas de las cosas y eso.
De todas formas, dime que te parece esto...ya te digo, no es para nada perfecto, pero algo es algo. xD
Código:
class Window_Base < Window
  def draw_text_ex(x, y, text)
    reset_font_settings
    text = convert_escape_characters(text)
    tx = text.split(/\n/)
    pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
    calc = (3 * text_size(tx[0]).width / contents_width).to_f
    calc = calc >= 3 ? calc : 0
    contents.font.size = Font.default_size - calc
    process_character(text.slice!(0, 1), text, pos) until text.empty?
  end
  def process_new_line(text, pos)
    calc = (3 * text_size(text).width / contents_width).to_f
    calc = calc >= 3 ? calc : 0
    contents.font.size = Font.default_size - calc
    pos[:x] = pos[:new_x]
    pos[:y] += pos[:height]
    pos[:height] = calc_line_height(text)
  end
end
Prueba asi, y cuentame que tal.

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 2 de 5.]

Ir a la página : Precedente  1, 2, 3, 4, 5  Siguiente

Permisos de este foro:
No puedes responder a temas en este foro.