Últimos temas
» Taller del BGM
por ZororoWhite Hoy a las 12:48 pm

» Concurso de screens - Mayo/Junio 2017 [Resultados]
por ZororoWhite Hoy a las 12:44 pm

» Ayuda cob Interruptores
por KRiZaLiD Hoy a las 7:02 am

» Ayuda - Quitar opción de atravesar todo RPG VX ACE
por KRiZaLiD Hoy a las 6:57 am

» KUnits XP 2017
por kyonides Hoy a las 5:37 am

» Evento Comunes...todavía no la cazo bien con algo
por Calayax Ayer a las 8:50 pm

» Guía de trucos para ACE
por Pokefanmati Ayer a las 8:03 am

» Que el personaje desaparezca al usar habilidad [ayuda] [MV]
por Dream Ayer a las 5:53 am

» KyoDiscounts MV
por cebmetal Lun Jul 17, 2017 3:50 pm

» KUnits VX - Grupos de Héroes
por kyonides Lun Jul 17, 2017 6:07 am

» Mega Galeria de Dibujos 2da Actualizacion 16/7/17
por kyonides Lun Jul 17, 2017 5:43 am

» Ayuda con scripts.
por Pokefanmati Sáb Jul 15, 2017 9:07 pm


KRespawnPoint XP

Ver el tema anterior Ver el tema siguiente Ir abajo

KRespawnPoint XP

Mensaje por kyonides el Vie Jul 14, 2017 12:57 am

KRespawnPoint XP
v 1.1.2
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.



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


Código:
#   KRespawnPoint XP
#   v 1.1.2 - 2016-12-14
#   v 1.0.0 - 2012-12-06
#   Scripter : Kyonides-Arkanthos

#   Este Script les permite configurar un punto de retorno específico para sus
#   héroes. Sirve para cuando sus héroes hayan muerto en batalla o para llevar
#   al grupo donde un NPC que los pueda restaurar.

#   También incluye la opción de mostrar una transición en caso de que deseen
#   mostrar alguna clase de imagen de fondo que tenga que ver con su juego.

#   ¡ATENCIÓN! Si la constante LOSEEXPPERCENT tiene un valor de 0 o superior
#             los héroes perderán algo de experiencia al revivir.

#   Llamados a Script

#     Para ir al Punto de Retorno en Situación Normal o Derrota Inevitable
#       KRP.to_respawn_point  o  KRP.to_respawn_point(true)

#     Para Visitar al Sanador : (Sin afectar el Punto de Retorno)
#       KRP.visit_healer

#     Para Visitar el Mapa Anterior luego de ir donde el Sanador
#       KRP.visit_previous_map

#     Especifica un Nuevo Punto de Retorno (de ser necesario)
#       Método 1 - KRP.set_respawn_point(ID_Mapa, x, y)
#       Método 2 - $game_system.set_respawn_point(ID_Mapa, x, y)

module KRP
  HEALERMAPIDXY = [1, 1, 1] # Sanador: ID Mapa, Coord-X, Coord-Y
  PLAYERDIRECTION = 8
  HPRECOVERYPERCENT = 0.1 # Valor entre 0.01 y 1 (1 es igual a 100%)
  LOSEEXPPERCENT = 0.1 # Valor entre 0.01 y 1
  LOSEGOLDPERCENT = 0.1 # Valor entre 0.01 y 1
  RESPAWNOPTIONS = ['Punto de Encuentro', 'Visitar a un Sanador',
                   'Volver a Luchar', 'Cargar Partida', 'Morir en paz...']
  NONARPGBATTLE = true # true - Batalla No Tipo Zelda, nil - Batalla Tipo Zelda
  USETRANSITION = true
  TRANSITIONBG = '001-Title01' # Imagen de Fondo para Transición
  TRANSITIONFRAMES = 40
  class << self
    attr_accessor :gameover_disabled, :items, :hp, :sp
    def set_respawn_point(id,x,y) $game_system.set_respawn_point(id,x,y) end
  end
  module_function
  def to_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 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 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 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 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

  def clear
    return unless @hp
    @hp.clear
    @sp.clear
    @items.clear
    @items = @hp = @sp = 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 Game_Party; attr_accessor :items end

class Window_RespawnKommand < Window_Selectable
  attr_reader :item_max
  def initialize
    size = KRP::NONARPGBATTLE ? 5 : 4
    h = size * 32 + 32
    super(210, 240 - h / 2, 220, h)
    @commands = KRP::RESPAWNOPTIONS.dup
    @symbols = [:respawn, :healer, :battle, :load, :gameover]
    if size == 3
      @commands.delete_at(2)
      @symbols.delete_at(2)
    end
    @item_max = @commands.size
    self.contents = Bitmap.new(width - 32, @item_max * 32)
    refresh
    self.index = 0
  end

  def refresh
    self.contents.clear
    @item_max.times {|i| draw_item(i) }
  end

  def draw_item(index, enabled=true)
    contents.font.color.alpha = enabled ? 255 : 128
    rect = Rect.new(4, 32 * index, contents.width - 8, 32)
    contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    contents.draw_text(rect, @commands[index])
  end

  def symbol() @symbols[@index] end
end

class Scene_Battle
  alias kyon_krp_scn_battle_start_ph1 start_phase1
  def start_phase1
    KRP.items = $game_party.items.dup
    KRP.hp = $game_party.actors.map {|a| a.hp }
    KRP.sp = $game_party.actors.map {|a| a.sp }
    kyon_krp_scn_battle_start_ph1
  end
end

class Scene_Gameover
  def initialize() $game_temp = Game_Temp.new end
  def main
    @spriteset = Spriteset_Map.new
    @command_window = Window_RespawnKommand.new
    if KRP.no_respawn_point(sprintf("%03d", $game_system.map_id))
      @command_window.draw_item(0, nil)
      @no_respawn_point = true
    end
    if Dir.glob("Save*.rxdata").empty?
      pos = @command_window.item_max - 2
      @command_window.draw_item(pos, nil)
      @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)
      return $scene = nil if @cancel_enabled
      $game_system.se_play($data_system.cancel_se)
      KRP.clear
      terminate
    elsif Input.trigger?(Input::C)
      return $scene = nil if @cancel_enabled
      case @command_window.symbol
      when :respawn # Al Punto de Regeneración
        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 :healer # Visitar al Sanador
        $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 :battle # Volver a Enfrentar al Enemigo
        $game_system.se_play($data_system.decision_se)
        if KRP.hp
          actors = $game_party.actors
          actors.size.times {|n| actors[n].hp = KRP.hp[n]
            actors[n].mp = KRP.mp[n] }
          $game_party.items = KRP.items.dup
        end
        $scene = Scene_Battle.new
      when :load # Cargar Partida Guardada
        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 :gameover # Game Over y Finalizar Juego
        $game_system.se_play($data_system.decision_se)
        terminate
      end
      KRP.clear
    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

kyonides
PJ de Quest
PJ de Quest

Masculino
Costa Rica
RPG Maker : Xp
Mensajes : 38
Monedas : 136
Reputación : 1

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.