Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP] Battleback planes

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] Battleback planes

Mensaje por Wecoc el 2017-03-22, 00:22

Éste script modifica el modo en el que se visualizan los fondos de batalla.

Permite insertar battlebacks más pequeños de 640x320 de modo que tilearan para rellenar la viewport de pantalla (similar a los panoramas)
Además permite usar más de un battleback a la vez uno encima de otro, similar a como funcionan en VX, Ace y MV.

Y por último permite definir algunas nuevas propiedades al battleback:
- Desplazamiento horizontal y vertical idéntico al de las fog
- Zoom
- Opacidad
- Paleta (normal, fusionado, inverso)
- Tono

Se hace así, para asignar un battleback especial se hace desde Llamar script:
$game_map.set_battleback(ID, name)
Detrás del nombre de modo opcional puedes poner los parámetros mencionados antes:
$game_map.set_battleback(ID, name, sx, sy, zoom_x, zoom_y, opacity, blend_type, tone)

Ejemplo:
$game_map.set_battleback(0, "002-Woods01", 0, 0, 1.0, 1.0, 255, 0, Tone.new(20, -20, 0, 0))
Para poner otra encima, se le asignará ID 1 y así hasta tantos como se quiera.
Nota: Ese código no cabe en una sola línea en Llamar script pero se puede partir la línea después de cada coma.

Ponedlo encima de main

Código:
#==============================================================================
# ** [XP] Battleback Planes v1.0
#------------------------------------------------------------------------------
# Autor: Wecoc (no requiere créditos)
#==============================================================================

#==============================================================================
# ** Game_Map
#==============================================================================

class Game_Map
  attr_accessor :battlebacks
  alias wec_battlebacks_setup setup unless $@
  #--------------------------------------------------------------------------
  # * Setup
  #--------------------------------------------------------------------------
  def setup(map_id)
    wec_battlebacks_setup(map_id)
    @battlebacks = []
    set_battleback(0, @battleback_name)
  end
  #--------------------------------------------------------------------------
  # * Set battleback
  #     Parameters: sx, sy, zoom_x, zoom_y, opacity, blend_type, tone
  #--------------------------------------------------------------------------
  def set_battleback(id, *parameters)
    p = [0, 0, 1.0, 1.0, 255, 0, Tone.new(0, 0, 0, 0)]
    result = parameters + p[(parameters.size-1)..p.size]
    @battlebacks[id] = result
    return result
  end
end

#==============================================================================
# ** Interpreter
#==============================================================================

class Interpreter
  #--------------------------------------------------------------------------
  # * Change Map Settings
  #--------------------------------------------------------------------------
  alias wec_battleback_204 command_204
  def command_204
    wec_battleback_204
    if @parameters[0] == 2
      $game_map.set_battleback(0, @parameters[1])
    end
    return true
  end
end

#==============================================================================
# ** Spriteset_Battle
#==============================================================================

class Spriteset_Battle
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    # Make viewports
    @viewport1 = Viewport.new(0, 0, 640, 320)
    @viewport2 = Viewport.new(0, 0, 640, 480)
    @viewport3 = Viewport.new(0, 0, 640, 480)
    @viewport4 = Viewport.new(0, 0, 640, 480)
    @viewport2.z = 101
    @viewport3.z = 200
    @viewport4.z = 5000
    # Make battleback sprites
    @battleback_sprites = []
    @battlebacks = $game_map.battlebacks.clone
    for i in 0...@battlebacks.size
      battleback_name = @battlebacks[i][0]
      battleback = Plane.new(@viewport1)
      battleback.bitmap = RPG::Cache.battleback(battleback_name)
      @battleback_sprites.push(battleback)
      battleback.zoom_x     = @battlebacks[i][3]
      battleback.zoom_y     = @battlebacks[i][4]
      battleback.opacity    = @battlebacks[i][5]
      battleback.blend_type = @battlebacks[i][6]
      battleback.tone = @battlebacks[i][7].clone
    end
    # Make enemy sprites
    @enemy_sprites = []
    for enemy in $game_troop.enemies.reverse
      @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
    end
    # Make actor sprites
    @actor_sprites = []
    @actor_sprites.push(Sprite_Battler.new(@viewport2))
    @actor_sprites.push(Sprite_Battler.new(@viewport2))
    @actor_sprites.push(Sprite_Battler.new(@viewport2))
    @actor_sprites.push(Sprite_Battler.new(@viewport2))
    # Make weather
    @weather = RPG::Weather.new(@viewport1)
    # Make picture sprites
    @picture_sprites = []
    for i in 51..100
      @picture_sprites.push(Sprite_Picture.new(@viewport3,
        $game_screen.pictures[i]))
    end
    # Make timer sprite
    @timer_sprite = Sprite_Timer.new
    # Frame update
    update
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    # Dispose of battleback sprite
    for sprite in @battleback_sprites
      sprite.dispose
    end
    # Dispose of enemy sprites and actor sprites
    for sprite in @enemy_sprites + @actor_sprites
      sprite.dispose
    end
    # Dispose of weather
    @weather.dispose
    # Dispose of picture sprites
    for sprite in @picture_sprites
      sprite.dispose
    end
    # Dispose of timer sprite
    @timer_sprite.dispose
    # Dispose of viewports
    @viewport1.dispose
    @viewport2.dispose
    @viewport3.dispose
    @viewport4.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update actor sprite contents (corresponds with actor switching)
    @actor_sprites[0].battler = $game_party.actors[0]
    @actor_sprites[1].battler = $game_party.actors[1]
    @actor_sprites[2].battler = $game_party.actors[2]
    @actor_sprites[3].battler = $game_party.actors[3]
    # Update battleback sprites
    for i in 0...@battlebacks.size
      battleback = @battleback_sprites[i]
      if @battlebacks[i] != $game_map.battlebacks[i]
        @battlebacks[i] = $game_map.battlebacks[i].clone
        battleback_name = @battlebacks[i][0]
        battleback.bitmap = RPG::Cache.battleback(battleback_name)
        battleback.ox = 0
        battleback.oy = 0
        battleback.zoom_x     = @battlebacks[i][3]
        battleback.zoom_y     = @battlebacks[i][4]
        battleback.opacity    = @battlebacks[i][5]
        battleback.blend_type = @battlebacks[i][6]
        battleback.tone = @battlebacks[i][7].clone
      end
      battleback.ox -= @battlebacks[i][1] / 8.0
      battleback.oy -= @battlebacks[i][2] / 8.0
    end
    # Update battler sprites
    for sprite in @enemy_sprites + @actor_sprites
      sprite.update
    end
    # Update weather graphic
    @weather.type = $game_screen.weather_type
    @weather.max = $game_screen.weather_max
    @weather.update
    # Update picture sprites
    for sprite in @picture_sprites
      sprite.update
    end
    # Update timer sprite
    @timer_sprite.update
    # Set screen color tone and shake position
    @viewport1.tone = $game_screen.tone
    @viewport1.ox = $game_screen.shake
    # Set screen flash color
    @viewport4.color = $game_screen.flash_color
    # Update viewports
    @viewport1.update
    @viewport2.update
    @viewport4.update
  end
end

Ojalá os sea de utilidad.
avatar
Wecoc
Administrador
Administrador



Créditos 12204

Gracias : 632

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Battleback planes

Mensaje por orochii el 2017-03-23, 01:17

Está guay, se podría también hacer uno de esos clásicos hashes de opciones, con configuraciones iniciales.
Ej. "nombreBattleback" => [[name, sx, sy, zoom_x, zoom_y, opacity, blend_type, tone], (...)]

Otra opción es, al menos para agregar battlebacks extras, uno puede hacer que busque si existe por ejemplo battleback_01...battleback_0n, o nombres específicos (battleback_scrollingBack). Y también soportar battlebacks que queden sobre las cosas (sí, es malo poner cosas sobre la acción, pero quiza en aditivo xD?).

Anyway, ideas pls no steal xD. Salut!
avatar
orochii
Reportero

0/3

Créditos 7712

Gracias : 434

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.