Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

Kyonides's Respawn Point XP VX VX ACE

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Kyonides's Respawn Point XP VX VX ACE

Mensaje por kyonides-arkanthos el 2015-06-30, 10:29

Kyonides's Respawn Point
XP, VX y VX ACE
v 1.1.0

por Kyonides-Arkanthos


Este sencillo script les permitirá no solo configurar cuál será el punto de encuentro (o resurrección) de sus héroes en caso de morir en batalla o por un estado de salud precario como el estar envenenados sino que también les ofrece otras dos cosas más. Pueden configurarlo para que los héroes pierdan una parte de la experiencia obtenida o para que les muestre una imagen de transición entre el citado menú y el mapa donde revivirán. (Dicha imagen puede servir como alguna clase de propaganda...)

Por si surgen dudas sobre sus características, aquí se las listaré en orden.


  • Les permite revivir a sus héroes en el lugar donde eligieron hacerlo en caso de ser derrotados. (Si no lo han elegido y no hay una partida guardada, pues, pierden.)
  • Pueden utilizar una imagen de transición, no de figuras geométricas sino de propaganda o meras ilustraciones que quizás estén relacionadas con su proyecto, su trama, etc.
  • Pueden perder algo de puntos de experiencia por revivir de esta manera.
  • Pueden perder algo de dinero (Oro o Gil o Zeny) por revivir de esta manera.
  • Pueden optar por visitar a un Sanador. Opcionalmente este puede reenviarlos al mapa donde murieron.


LLAMADOS A SCRIPT

  • Regresar al Punto de Encuentro o Respawn Point sin ver el menú de mi script

    KRP.moveto_respawn_point

    (Daría error si nunca lo configuraron...)

  • Visitar a un Sanador

    KRP.visit_healer

  • Volver al mapa en el que murieron despuès de que hablaron con el Sanador

    KRP.visit_previous_map


Configurar cuál será el Punto de Encuentro

Método # 1
KRP.set_respawn_point(ID_mapa, x, y)

Método # 2
$game_system.set_respawn_point(ID_mapa, x, y)

Método # 3
Variables de Control [Primer ID] : ID de Mapa
Variables de Control [Segundo ID] : Coordenada X
Variables de Control [Tercer ID] : Coordenada Y


CONFIGURACIÓN DEL SCRIPT

# ID del Mapa, Coordenada X, Coordenada Y del Sanador a visitar
HEALERMAPIDXY = [1, 1, 1]

# ID de Variables para guardar ID de Mapa, Coordenada X, Coordenada Y - Optional
RESPAWNVARIDS = [1, 2, 3]

# Dirección en la que debe ver el personaje (Vean los números en teclado numérico)
PLAYERDIRECTION = 8

# Porcentaje de Recuperación de PV - Valor entre 0.01 y 1 (incluidos)
HPRECOVERYPERCENT = 0.1

# Porcentaje de Pérdida de EXP - Valor entre 0 y 1 incluidos (en decimales si no es 0 o 1)
LOSEEXPPERCENT = 0.1

# Porcentaje de Pérdida de Dinero - Valor entre 0 y 1 incluidos (en decimales si no es 0 o 1)
LOSEGOLDPERCENT = 0.1

# Texto de Opciones para Menú de Respawn
RESPAWNOPTIONS = ['Punto de Encuentro', 'Cargar Partida', 'Morir en paz...']

# Usar Transición : true o false
USETRANSITION = true

# Nombre de la Imagen de la Transición
TRANSITIONBG = '001-Title01'

# Número de Cuadros o Frames de Espera
TRANSITIONFRAMES = 40


SCRIPT Versión XP

Código:
#   Kyonides's Respawn Point XP
#   v 1.1.0 - 2012-12-25
#   v 1.0.0 - 2012-12-06
#   Scripter : Kyonides-Arkanthos

#   This script will let you set a respawn point at some specific point and
#   go back to that place. You can use it whenever your heroes die in battle or
#   you specifically ask some NPC to teleport your team there.

#   You may also configure it to show a transition screen that would let you
#   display any picture you like.

#   WARNING : If the LOSEEXPPERCENT constant value is greater than 0 your
#             heroes will lose some experience points after respawning.

#   Script Calls

#     Return to Respawn Point :
#       KRP.moveto_respawn_point

#     Visit a Healer : (The respawn point will not be modified by this)
#       KRP.visit_healer

#     Visit Previous Map after visiting the healer
#       KRP.visit_previous_map

#     Set your Respawn Point :
#       Method 1 - KRP.set_respawn_point(map_id, x, y)

#       Method 2 - $game_system.set_respawn_point(map_id, x, y)

#       Method 3 - Control Variables [1st ID] : Map ID
#                  Control Variables [2nd ID] : Player's Map X
#                  Control Variables [3rd ID] : Player's Map Y

module KRP
  HEALERMAPIDXY = [1, 1, 1] # Healer's Map ID, X-coord, Y-coord
  RESPAWNVARIDS = [1, 2, 3] # Map ID, X-coord, Y-coord - Optional
  PLAYERDIRECTION = 8
  HPRECOVERYPERCENT = 0.1 # Value between 0.01 and 1 inclusive
  LOSEEXPPERCENT = 0.1 # Value between 0 and 1 inclusive
  LOSEGOLDPERCENT = 0.1 # Value between 0 and 1 inclusive
  RESPAWNOPTIONS = ['Punto de Encuentro', 'Visitar a un Sanador',
                    'Cargar Partida', 'Morir en paz...']
  USETRANSITION = true
  TRANSITIONBG = '001-Title01' # Transition Background Image
  TRANSITIONFRAMES = 40

  def self.gameover_disabled() @gameover_disabled end
  def self.gameover_disabled=(bool) @gameover_disabled = bool end
  def self.set_respawn_point(id,x,y) $game_system.set_respawn_point(id,x,y) end

  def self.moveto_respawn_point(reset=nil)
    $game_map.setup($game_system.map_id)
    $game_player.moveto($game_system.map_x, $game_system.map_y)
    $game_player.direction = PLAYERDIRECTION
    self.reload_map_player(true)
    $scene = USETRANSITION ? Scene_KRPTransition.new : Scene_Map.new
  end

  def self.visit_healer
    @omapid = $game_system.map_id
    @ox, @oy = $game_system.map_x, $game_system.map_y
    $game_map.setup(HEALERMAPIDXY[0])
    $game_player.moveto(HEALERMAPIDXY[1], HEALERMAPIDXY[2])
    self.reload_map_player(true)
    $scene = USETRANSITION ? Scene_KRPTransition.new : Scene_Map.new
  end
    
  def self.visit_previous_map
    $game_map.setup(@omapid)
    $game_player.moveto(@ox, @oy)
    @omapid = @ox = @oy = nil
    self.reload_map_player
    $scene = USETRANSITION ? Scene_KRPTransition.new : Scene_Map.new
  end

  def self.reload_map_player(reset=nil)
    $game_player.refresh
    $game_map.autoplay
    $game_map.update
    return unless reset
    $game_temp = Game_Temp.new
    $game_system.reset_interpreters
  end

  def self.no_respawn_point(map_id)
    !File.exist?("Data/Map#{map_id}.rxdata") or
      $game_system.map_x == nil or $game_system.map_y == nil
  end
end

class Game_System
  attr_accessor :map_id, :map_x, :map_y
  alias kyon_krp_gm_sys_init initialize
  def initialize
    kyon_krp_gm_sys_init
    @map_id, @map_x, @map_y = 0, nil, nil
  end

  def set_respawn_point(id, x, y) @map_id, @map_x, @map_y = id, x, y end

  def reset_interpreters
    @map_interpreter = Interpreter.new(0, true)
    @battle_interpreter = Interpreter.new(0, false)
  end
end

class Game_Actor
  def lose_exp
    return if @level == 1
    self.exp -= (@exp_list[@level] * KRP::LOSEEXPPERCENT).round
  end
end

class Game_Player; attr_writer :direction end

class Scene_Gameover
  def initialize; $game_temp = Game_Temp.new end
  def main
    @spriteset = Spriteset_Map.new
    @command_window = Window_Command.new(220, KRP::RESPAWNOPTIONS)
    @command_window.x, @command_window.y = 210, 240 - @command_window.height / 2
    if KRP.no_respawn_point(sprintf("%03d", $game_system.map_id))
      $game_system.map_id = $game_variables[KRP::RESPAWNVARIDS[0]]
      $game_system.map_x = $game_variables[KRP::RESPAWNVARIDS[1]]
      $game_system.map_y = $game_variables[KRP::RESPAWNVARIDS[2]]
      KRP::RESPAWNVARIDS.each {|varid| $game_variables[varid] = 0 }
      if KRP.no_respawn_point(sprintf("%03d", $game_system.map_id))
        @command_window.disable_item(0)
        @no_respawn_point = true
      end
    end
    if Dir.glob("Save?.rxdata").empty?
      @command_window.disable_item(1)
      @no_savedata = true
    end
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      break if $scene != self
    end
    Graphics.freeze
    @command_window.dispose if @command_window
    @spriteset.bitmap.dispose if @spriteset.is_a?(Sprite)
    @spriteset.dispose
  end

  def update
    @command_window.update if @command_window
    if Input.trigger?(Input::B)
      ($scene = nil; return) if @cancel_enabled
      $game_system.se_play($data_system.cancel_se)
      terminate
    elsif Input.trigger?(Input::C)
      ($scene = nil; return) if @cancel_enabled
      case @command_window.index
      when 0 # To Respawn Point
        if @no_respawn_point
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        $game_system.se_play($data_system.decision_se)
        $game_party.actors.each {|actor| actor.lose_exp
          actor.hp = (actor.maxhp * KRP::HPRECOVERYPERCENT).round }
        $game_party.lose_gold(($game_party.gold * KRP::LOSEGOLDPERCENT).round)
        KRP.moveto_respawn_point(true)
      when 1
        $game_system.se_play($data_system.decision_se)
        $game_party.actors.each {|actor| actor.lose_exp }
        $game_party.lose_gold(($game_party.gold * KRP::LOSEGOLDPERCENT).round)
        KRP.visit_healer
      when 2 # Load Saved Game
        if @no_savedata
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Load.new
      when 3 # Game Over and Shutdown
        $game_system.se_play($data_system.decision_se)
        terminate
      end
    end
  end

  def terminate
    @cancel_enabled = true
    @command_window.visible = @command_window.active = nil
    Graphics.freeze
    @spriteset.dispose
    @spriteset = Sprite.new
    @spriteset.bitmap = RPG::Cache.gameover($data_system.gameover_name)
    $game_system.bgm_play(nil)
    $game_system.bgs_play(nil)
    Graphics.transition(60)
  end
end

class Scene_KRPTransition
  def main
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.picture(KRP::TRANSITIONBG)
    $scene = Scene_Map.new
    Graphics.transition(KRP::TRANSITIONFRAMES)
    KRP::TRANSITIONFRAMES.times { Graphics.update }
    Graphics.freeze
    @sprite.bitmap.dispose
    @sprite.dispose
    Graphics.transition(KRP::TRANSITIONFRAMES)
  end
end

DESCARGA LOS SCRIPTS
avatar
kyonides-arkanthos
Principiante
Principiante

0/3

Créditos 572

Gracias : 85

Volver arriba Ir abajo

RPG Maker XP Re: Kyonides's Respawn Point XP VX VX ACE

Mensaje por kyonides-arkanthos el 2015-07-11, 14:03

Bueno ya encontré los archivos de las otras versiones de este script mío, así que aprovecho para informarles que está disponible para todos los RPG Makers que incluyen editor de scripts.
avatar
kyonides-arkanthos
Principiante
Principiante

0/3

Créditos 572

Gracias : 85

Volver arriba Ir abajo

RPG Maker XP Re: Kyonides's Respawn Point XP VX VX ACE

Mensaje por Metalero el 2015-07-15, 02:03

LOGRO OBTENIDO POR EL CONTENIDO DE ESTE POST: +1 Scripter de Plata 

_________________
avatar
Metalero
Administrador
Administrador



Créditos 1709

Gracias : 100

Volver arriba Ir abajo

RPG Maker XP Re: Kyonides's Respawn Point XP VX VX ACE

Mensaje por demon088 el 2015-12-15, 02:25

Disculpa pero me aparece este error al momento de perder experiencia.


Me aparece este error en este fragmento:

Código:
class Game_Actor
  def lose_exp
    return if @level == 1
    self.exp -= (@exp_list[@level] * KRP::LOSEEXPPERCENT).round
  end
end

Quisiera que me ayudaras a saber cual es el problema, porque tu script le queda hermoso a mi juego, solamente que me salta este error. Gracias
avatar
demon088
Iniciado
Iniciado

0/3

Créditos 11

Gracias : 3

Volver arriba Ir abajo

RPG Maker XP Re: Kyonides's Respawn Point XP VX VX ACE

Mensaje por kyonides-arkanthos el 2015-12-15, 06:49

Pues está difícil responderte si ni siquiera sé en qué versión te ocurre. Recuerda que yo lo dejé disponible para los 3 Makers con RGSS...

Siempre estaría la opción de que me pases un demo con mi script y algún otro script que creas que puede interferir con el mío. Un ejemplo sería cualquier script fuera del mío que también modifique la clase Game_Actor.
avatar
kyonides-arkanthos
Principiante
Principiante

0/3

Créditos 572

Gracias : 85

Volver arriba Ir abajo

RPG Maker XP Re: Kyonides's Respawn Point XP VX VX ACE

Mensaje por demon088 el 2015-12-16, 16:54

El error me aparece en la version vx ace incluso sin otros scripts que interfieran, sólo si el actor tiene xp 0 regresa al punto de encuentro, si se trata de bajar exp al regresar me sale ese error. Las otras opciones funcionan, en el caso del sanador, ocurre lo mismo si hay exp de por medio. Gracias
PD: gracias por tu script, es muy bueno

-----------

Hacía tiempo que no pasaba por aquí, te dejaré el demo con tu script para rpg VX Ace, para ver si me puedes ayudar a reparar el error que aparece.
Te dejo el link de 4S: http://www.4shared.com/rar/DlXoB6Mnce/Respawn_Script.html
Gracias.
avatar
demon088
Iniciado
Iniciado

0/3

Créditos 11

Gracias : 3

Volver arriba Ir abajo

RPG Maker XP Re: Kyonides's Respawn Point XP VX VX ACE

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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