¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3378 miembros registrados.
El último usuario registrado es Max003.

Nuestros miembros han publicado un total de 79744 mensajes en 11241 argumentos.
Navega con Google Chrome
[DESCARGA]

Battle zoom y animations

 :: RPG Maker :: Ayuda RPG

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Battle zoom y animations

Mensaje por sinfonic86 el 2013-05-24, 20:39

Busco el script de zoom de batalla cuando recibe golpes el enemigo o el hèroe.

Y si hay alguna forma de agregar mas de una animacion para las habilidades de los enemigs.

Ej: enemigo tirando rayo - animacion 1
enemigo estirando extremidad - animacion 2

Todo esto con el sistema de combate por defecto del xp

Chau y gracias...

sinfonic86
Novato
Novato

0/3

Créditos 66

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: Battle zoom y animations

Mensaje por Wecoc el 2013-05-25, 01:38

Sobre lo primero, está en la recopilación de scripts como "Centrar Battle" (no sé por qué el autor del topic le puso ese nombre, pero bueno xD)

Aquí está:

Código:
#==============================================================================
# Center_Battler
#------------------------------------------------------------------------------

class Game_System
  alias init_tons_of_addons1_later initialize
  def initialize
    init_tons_of_addons1_later
 
    @CENTER_BATTLER    = true
  end
  attr_accessor :CENTER_BATTLER
end

$x_off = 50


class Sprite_Battler < RPG::Sprite
  alias upd_center_battler_later update
  def update
    upd_center_battler_later
    if $game_system.CENTER_BATTLER && @battler != nil
      if @battler.is_a?(Game_Actor)
        self.x = case $game_party.actors.size
          when 1 then @battler.screen_x + 240
          when 2 then @battler.screen_x + 80 + @battler.index * 160
          when 3 then @battler.screen_x + 80
          when 4 then @battler.screen_x
        end
      elsif @battler.is_a?(Game_Enemy)
        self.x = @battler.screen_x
      end
      self.y, self.z = @battler.screen_y, @battler.screen_z
    end
  end
end

class Scene_Battle
  alias upd_center_battler_later update
  def update
    if $game_system.CENTER_BATTLER && @lvlup_windows != nil
      @lvlup_windows.each_index {|i|
          @lvlup_windows[i].x = case $game_party.actors.size
          when 1 then 240
          when 2 then 80 + i * 320
          when 3 then 80 + i * 160
          when 4 then i * 160
          end}
    end
    upd_center_battler_later
  end
  alias phase3_setup_command_window_center_battler_later phase3_setup_command_window
  def phase3_setup_command_window
    phase3_setup_command_window_center_battler_later
    if $game_system.CENTER_BATTLER
      @actor_command_window.x = case $game_party.actors.size
      when 1 then 240
      when 2 then 80 + @actor_index * 320
      when 3 then 80 + @actor_index * 160
      when 4 then @actor_index * 160
      end
      @actor_command_window.index = 0
    end
  end
end

class Arrow_Actor < Arrow_Base
  alias upd_center_battler_later update
  def update
    upd_center_battler_later
    if $game_system.CENTER_BATTLER && self.actor != nil
      self.x = case $game_party.actors.size
      when 1 then 240 + self.actor.screen_x
      when 2 then 2 * self.actor.screen_x
      when 3 then 80 + self.actor.screen_x
      when 4 then self.actor.screen_x
      end
      self.y = self.actor.screen_y
    end
  end

end

class Window_BattleStatus < Window_Base
  alias refresh_center_battler_later refresh
  def refresh(number = nil)
    unless $game_system.CENTER_BATTLER
      if number == nil
        refresh_center_battler_later
      else
        refresh_center_battler_later(number)
      end
      return
    end
    self.contents.clear
    @item_max = $game_party.actors.size
    $game_party.actors.each_index {|i|
    actor = $game_party.actors[i]
    actor_x = case $game_party.actors.size
    when 1 then 4 + 240
    when 2 then 4 + 80 + i * 320
    when 3 then 4 + 80 + i * 160
    when 4 then 4 + i * 160
    end
    draw_actor_name(actor, actor_x, 0)
    draw_actor_hp(actor, actor_x, 32, 120)
    draw_actor_sp(actor, actor_x, 64, 120)
    if @level_up_flags[i]
      self.contents.font.color = normal_color
      self.contents.draw_text(actor_x, 96, 120, 32, 'LEVEL UP!')
    else
      draw_actor_state(actor, actor_x, 96)
    end}
  end
end

class Game_Battler
  def elements_correct(elements)
    multiplier = size = 0
#    elements.each {|i|
#        unless $DUMMY_ELEMENTS.include?(i)
#          multiplier += self.element_rate(i)
#          size += 1
#        end}
    return (size == 0 ? 100 : multiplier/size)
  end
end

Y si no te funcionara bien, encontré una alternativa:

Código:
#__END__
module Battle_Cam
  # the power of the parallax effect (0 - 1)
  #  note - don't use anything too high or it will look a bit weird
  PARALLAX_AMOUNT = 0.3
  # how fast to transition between targets (1 - 10)
  TRANSITION_SPEED = 7
  # how much to zoom in on the currently targeted battler
  TARGET_ZOOM = 1.3
  # how much to zoom in on the active battler
  ACTIVE_ZOOM = 1.2
  # how much to zoom in if there are multiple targets
  MULTI_ZOOM = 1.1
end

class Spriteset_Battle
  alias tdks_3d_cam_init initialize
  def initialize
    @cx = 320
    @cy = 160
    @zoom = 1
    @frames = 0
    @target_ind = -1
    tdks_3d_cam_init
  end
 
  def set_battler(battler = nil, tz = Battle_Cam::ACTIVE_ZOOM, speed = Battle_Cam::TRANSITION_SPEED)
    @target_pos = nil
    pind = @target_ind
    if battler.nil?
      @target_ind = -1
      @tz = 1
    else
      sprite = @enemy_sprites.detect { |i| i.battler == battler }
      @target_ind = @enemy_sprites.index(sprite)
    end
    unless @target_ind == pind and @tz == tz and @target_pos.nil?
      @tz = tz
      @frames = 100 / speed
    end
  end
 
  def set_index(ind = nil, tz = Battle_Cam::ACTIVE_ZOOM, speed = Battle_Cam::TRANSITION_SPEED)
    @target_pos = nil
    unless @target_ind == ind and @tz == tz and @target_pos.nil?
      @target_ind = ind.nil? ? -1 : ind
      @tz = tz
      @frames = 100 / speed
    end
    @tz = 1 if ind.nil?
  end
 
  def set_pos(tx = 320, ty = 160, tz = Battle_Cam::ACTIVE_ZOOM, speed = Battle_Cam::TRANSITION_SPEED)
    unless tx == @target_pos[0] and ty == @target_pos[1] and tz == @target_pos[2]
      @target_pos = [tx, ty]
      @tz = tz
      @frames = 100 / speed
    end
  end
 
  def effect?
    return true if @frames > 0
    # Return true if even 1 effect is being displayed
    for sprite in @enemy_sprites + @actor_sprites
      return true if sprite.effect?
    end
    return false
  end
 
  alias tdks_3d_cam_updt update
  def update
    tdks_3d_cam_updt
    update_3d_camera
  end
 
  def update_3d_camera
    unless @battleback_sprite.bitmap.nil?
      amnt = Battle_Cam::PARALLAX_AMOUNT
      @battleback_sprite.ox = @cx
      @battleback_sprite.oy = @cy
      @battleback_sprite.x, @battleback_sprite.y = 320, 160
      @battleback_sprite.x += (@cx - 320) * amnt * @zoom
      @battleback_sprite.y += (@cy - 160) * amnt * @zoom
      @battleback_sprite.zoom_x = @battleback_sprite.zoom_y = @zoom
    end
    pframes = @frames
    if @frames > 0 and !@target_ind.nil?
      if @target_ind == -1
        tx = 320
        ty = 160
      else
        sprite = @enemy_sprites[@target_ind]
        tx = sprite.battler.screen_x
        height = sprite.bitmap.nil? ? 0 : sprite.bitmap.height
        ty = sprite.battler.screen_y - height / 2
      end
      @frames -= 1
      @cx = @cx * @frames / (@frames + 1.0) + tx / (@frames + 1.0)
      @cy = @cy * @frames / (@frames + 1.0) + ty / (@frames + 1.0)
      @zoom = @zoom * @frames / (@frames + 1.0) + @tz / (@frames + 1.0)
    end
    @enemy_sprites.each { |sprite|
      height = sprite.bitmap.nil? ? 0 : sprite.bitmap.height
      width = sprite.bitmap.nil? ? 0 : sprite.bitmap.width
      tmpz = @zoom
      tmpy = (sprite.battler.screen_y - height / 2 - @cy) * @zoom + 160
      tmpx = (sprite.battler.screen_x - @cx) * @zoom + 320
      tmpoy = height / 2
      tmpox = width / 2
      if Module.constants.include?("Transitions") and Transitions.transitioning_out?(sprite)
        type = Transitions.transition_type(sprite)[1]
        if [3, 4].include?(type) or (type == 2 and Transitions.sprite(sprite)[7])
          sprite.zoom_x *= tmpz
          sprite.zoom_y *= tmpz
        else
          sprite.zoom_x = sprite.zoom_y = tmpz
        end
        if [0, 7].include?(type)
          sprite.ox += tmpox
          sprite.oy += tmpoy
        elsif type == 8
          sprite.ox = tmpox
          sprite.oy = (Transitions.sprite(sprite)[3].height - height) * @zoom / 2 + height / 2.0
        else
          sprite.ox, sprite.oy = tmpox, tmpoy
        end
        sprite.x, sprite.y = tmpx, tmpy
      else
        sprite.zoom_x = sprite.zoom_y = tmpz
        sprite.x, sprite.y = tmpx, tmpy
        sprite.ox, sprite.oy = tmpox, tmpoy
      end
    }
    if $scene.instance_variables.include?('@enemy_arrow') and pframes > 0
      arrow = $scene.instance_variable_get(:@enemy_arrow)
      arrow.update unless arrow.nil?
    end
  end
end

class Sprite_Battler
  alias tdks_3d_cam_updt update
  def update
    tdks_3d_cam_updt
  end
end

class Arrow_Enemy
  alias tdks_3d_cam_updt update
  def update
    tdks_3d_cam_updt
    unless self.enemy.nil?
      sprite = $scene.instance_variable_get(:@spriteset).instance_variable_get(:@enemy_sprites)
      sprite = sprite.detect { |i| i.battler == self.enemy }
      self.x, self.y = sprite.x, sprite.y + sprite.bitmap.height / 2
    end
  end
end

class Scene_Battle
  alias tdks_3d_cam_strt_p2 start_phase2
  def start_phase2
    @spriteset.set_index()
    tdks_3d_cam_strt_p2
  end
 
  alias tdks_3d_cam_strt_p5 start_phase5
  def start_phase5
    @spriteset.set_index()
    tdks_3d_cam_strt_p5
  end
 
  alias tdks_3d_cam_updt_p3_eslct update_phase3_enemy_select
  def update_phase3_enemy_select
    @spriteset.set_battler($game_troop.enemies[@enemy_arrow.index], Battle_Cam::TARGET_ZOOM)
    tdks_3d_cam_updt_p3_eslct
  end
 
  alias tdks_3d_cam_end_eslct end_enemy_select
  def end_enemy_select
    @spriteset.set_index() if Input.trigger?(Input::B)
    tdks_3d_cam_end_eslct
  end
 
  alias tdks_3d_cam_p3_setup_cmd_wndw phase3_setup_command_window
  def phase3_setup_command_window
    tdks_3d_cam_p3_setup_cmd_wndw
    @spriteset.set_index()
  end
 
  alias tdks_3d_cam_updt_p4_s2 update_phase4_step2
  def update_phase4_step2
    tdks_3d_cam_updt_p4_s2
    if @target_battlers.length == 1 and @target_battlers[0].is_a?(Game_Enemy)
      @spriteset.set_battler(@target_battlers[0], Battle_Cam::TARGET_ZOOM)
    elsif @target_battlers.length > 1 and @target_battlers.any? { |i| i.is_a?(Game_Enemy) }
      @spriteset.set_index(-1, Battle_Cam::MULTI_ZOOM)
    elsif @active_battler.is_a?(Game_Enemy)
      @spriteset.set_battler(@active_battler) unless @active_battler.current_action.kind == 0 and @active_battler.current_action.basic == 3
    else
      @spriteset.set_index()
    end
  end
end

Las instrucciones estan en el script.

Sobre lo segundo lo siento pero no puedo ayudarte porque no entendí del todo, mejor que te ayude otro u_u

Wecoc
Administrador
Administrador



Créditos 8263

Gracias : 372

Volver arriba Ir abajo

RPG Maker XP Re: Battle zoom y animations

Mensaje por sinfonic86 el 2013-05-25, 02:15

Gracias Wecoc, me he quedado con el 2do script.

La otra pregunta es si un enemigo tira un rayo aparesca la animación de rayo y si tira fuego la de fuego.

Quizá se haga facil en el xp pero no se como hacer porque en la base de dato de enemigos hay una sola pestaña para poner animaciones de ataque de enemigos, como si los enemigos de 2, 3 poderes hacen las distintas habilidades o poderes con la misma animación.

sinfonic86
Novato
Novato

0/3

Créditos 66

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: Battle zoom y animations

Mensaje por silvanash el 2013-05-25, 02:21

En teoría, basta con configurar la IA de los enemigos para que usen las habilidades. Cada una de las habilidades ya tiene asignada una animación, así que cuando el enemigo use esa habilidad, ejecutará esa animación.

silvanash
Aventurero
Aventurero

0/3

Créditos 1417

Gracias : 176

Volver arriba Ir abajo

RPG Maker XP Re: Battle zoom y animations

Mensaje por sinfonic86 el 2013-05-25, 04:25

Gracias Silvanash.
Siempre es bueno tener las cosas en claro para estar seguro de lo que se puede hacer y seguir adelante con el proyecto.

Por supuesto que estarán en los creditos: Wecoc, Silvanash, Kaizer.....

Saludos amigos y crucemos nuestras espadas por el rpg.

sinfonic86
Novato
Novato

0/3

Créditos 66

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: Battle zoom y animations

Mensaje por Contenido patrocinado Hoy a las 04:38


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Ayuda RPG

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