¡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 3399 miembros registrados.
El último usuario registrado es agapitovillaporca_803.

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

Magic Scroll

 :: RPG Maker :: Scripts

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker VX Magic Scroll

Mensaje por Malcom el 2011-08-13, 17:29

Magic Scroll

by Malcom
ver 1.0

Presentación
Script que realiza un scroll del mapa desde un evento inicio hasta un evento destino con la velocidad elegida, a diferencia del scroll normal en que solamente puedes elegir dirección, distancia y velocidad.
Es mi primer script decente y no funciona del todo bien pero para eso es la versión 1.0.

Imagen

Script
Código:
#==============================================================================
# ■ Magic Scroll 1.0
#
#  by Malcom
#
#------------------------------------------------------------------------------
#
#  Realiza un scroll del mapa desde un evento inicio hasta un
#  evento destino con la velocidad elegida.
#
#  ◦ Scroll original -> dirección, distancia y velocidad.
#
#  ◦ Magic Scroll -> Evento inicio, evento fin y velocidad.
#
#
#  Instrucciones de uso:
#
#    Para llamar al script hay que hacer un "Llamar Script" en la
#    tercera pestaña de los comandos de eventos y poner:
#
#      o = ($game_player o $game_map.events[número de evento])
#      d = ($game_player o $game_map.events[número de evento])
#      v = (velocidad)
#      $game_map.start_magic_scroll(o, d, v)
#
#    Ejemplo: Queremos hacer una sequencia en que el personaje
#    principal habla con el evento 3 y queremos que se realice
#    un scroll del mapa hacia ese evento a velocidad 4. Escribiremos
#    las siguientes lineas en un "Llamar Script".
#
#      o = $game_player
#      d = $game_map.events[3]
#      v = 4
#      $game_map.start_magic_scroll(o, d, v)
#
#    Para saber cuando acaba el scroll se puede hacer un"Condiciones
#    y Efectos" de la primera pestaña. Como condición pondremos con
#    el comando script de la cuarta pestaña lo siguiente:
#
#      $game_map.magic_scrolling?
#
#    Esto nos indicará si está haciendo el scroll (true) o si ya ha
#    acabado (false). Todo lo que hay que hacer es un bucle (Ciclo)
#    que al $game_map.magic_scrolling? == false acabe el "Ciclo".
#
#  PD: Este script no es compatible con mapas con scroll infinito.
#
#==============================================================================
class Game_Map
 
  alias setup_magic_scroll setup_scroll
  def setup_scroll
    @scroll_rest_x = 0
    @scroll_rest_y = 0
    @scroll_speed_x = 0
    @scroll_speed_y = 0
    @destino = nil
    setup_magic_scroll
  end
 
  def start_magic_scroll(origen, destino, speed)
    @destino = destino
    distancia_x = (destino.real_x - origen.real_x)
    distancia_y = (destino.real_y - origen.real_y)
    div = (Math.sqrt((distancia_y.abs^2) + (distancia_x.abs^2)))*16.0
    div = 1 if div == 0
    @scroll_speed_x = (distancia_x.abs * 4 * speed).to_f / div.to_f
    @scroll_speed_y = (distancia_y.abs * 4 * speed).to_f / div.to_f
    @scroll_rest_x = distancia_x
    @scroll_rest_y = distancia_y
    @scroll_direction = 1
    @scroll_speed = speed
  end
 
  def magic_scrolling?
    return ((@scroll_rest_x != 0) or (@scroll_rest_y != 0))
  end
 
  def scroll_magic(distancex, distancey)
    if @scroll_rest_x != 0
      if distancex < 0
        last_x = @display_x
        @display_x = [@display_x - distancex.abs, 0].max
        @parallax_x += @display_x - last_x
      else
        last_x = @display_x
        @display_x = [@display_x + distancex.abs, (width - 17) * 256].min
        @parallax_x += @display_x - last_x
      end
    end
    if @scroll_rest_y != 0
      if distancey > 0
        last_y = @display_y
        @display_y = [@display_y - distancey.abs, 0].max
        @parallax_y += @display_y - last_y
      else
        last_y = @display_y
        @display_y = [@display_y + distancey.abs, (height - 13) * 256].min
        @parallax_y += @display_y - last_y
      end
    end
  end
 
  def update_scroll
    if @scroll_rest > 0 or @scroll_rest_x != 0 or @scroll_rest_y != 0
      distance = 2 ** @scroll_speed
      case @scroll_direction
     
      when 1
        distance_aux_x = @scroll_speed_x
        distance_aux_y = @scroll_speed_y
        distancex = distance_aux_x if @scroll_rest_x > 0
        distancey = distance_aux_y if @scroll_rest_y < 0
        distancex = -distance_aux_x if @scroll_rest_x < 0
        distancey = -distance_aux_y if @scroll_rest_y > 0
        distancex = 0 if @scroll_rest_x == 0
        distancey = 0 if @scroll_rest_y == 0
        scroll_magic(distancex, distancey)
       
      when 2
        scroll_down(distance)
      when 4
        scroll_left(distance)
      when 6
        scroll_right(distance)
      when 8
        scroll_up(distance)
      end
     
      if @scroll_direction != 1
        @scroll_rest -= distance
      else
        @scroll_rest_x -= distancex
        @scroll_rest_y += distancey
        max = 2*@scroll_speed
        if @scroll_rest_x < 0 and distancex > 0
          @scroll_rest_x = 0
        end
        if @scroll_rest_x > 0 and distancex < 0
          @scroll_rest_x = 0
        end
        if @scroll_rest_y < 0 and distancey < 0
          @scroll_rest_y = 0
        end
        if @scroll_rest_y > 0 and distancey > 0
          @scroll_rest_y = 0
        end
        if @destino != nil
          if @destino.screen_x > 272-max and @destino.screen_x < 272+max
            @scroll_rest_x = 0
          end
          if @destino.screen_y > 208-max and @destino.screen_y < 208+max
            @scroll_rest_y = 0
          end
        end
      end
    end
  end
end

Instrucciones
Todo aparece explicado y con un ejemplo en el script. Si no queda claro, está la demo.

Descargar Demo
Magic Scroll 1.0

Notas del autor
Espero que os sirva el script y que no surjan muchos errores.

Malcom
Iniciado
Iniciado

0/3

Créditos 50

Gracias : 0

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Scripts

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