Mundo Maker
¡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
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Últimos temas
» preguntas sobre script
por orochii Hoy a las 03:45

» Maratón Maker - del 27 al 30 de Octubre
por orochii Hoy a las 03:24

» Algunas dudas resueltas por MP
por Wecoc Hoy a las 01:13

» [XP] Custom Prices
por xXIsrael0499Xx Ayer a las 23:55

» [XP] Precisión
por rurukawaii Ayer a las 18:20

» Saludos, aquí Kaltritter
por orochii Ayer a las 03:04

» Ayuda, Busco artistas para mi juego de suspenso x accion (?)
por Kaltritter Ayer a las 00:56

» Si necesitas un dibujo entra aqui
por THESHINYMISTERXD 2017-10-20, 18:37

» [VX Ace] gameover menu
por CuteXiora 2017-10-20, 13:24

» Batallas Laterales Animadas (Ace)
por Dariel Lopez 2017-10-19, 23:57

Afiliados
Estadísticas
Tenemos 4197 miembros registrados.
El último usuario registrado es FosForium.

Nuestros miembros han publicado un total de 85243 mensajes en 12136 argumentos.

Magic Scroll

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.
avatar
Malcom
Iniciado
Iniciado

0/3

Créditos 50

Gracias : 0

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.