¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1 [RPG Maker XP] Super Advanced Motion 1.0 el Sáb Dic 17, 2011 11:54 pm

Neoking-Jaas

avatar
Super Advanced Motion
Hola gente, bueno aquí les dejo un script que planeo usar en el sistema de batalla que estoy desarrollando. Se trata de un sistema de movimiento avanzado para el héroe.

Características:
-Movimiento en 8 direcciones
-Correr
-Saltar (incluyendo en 8 direcciones)
-Cambio de gráfico cuando corre, se mueve en diagonal, salta, salta en diagonal, corre en diagonal.

Una imagen de como se vería un salto en diagonal
Spoiler:




Aquí el script:
Código:

#-------------------------------------------------------------------------------
#-------------------------Super- Advanced Motion XP------------------------------
# By:Super Shooter
# 17/12/2011 - V 1.1
# Permite mover al heroe en 8 direcciones, correr, saltar y saltar corriendo

#-------------------------------------------------------------------------------
# Editar para personalizar, instruciones en los comentarios.
#-------------------------------------------------------------------------------
module SuperAdvanceMotion
  ActiveRun = 1            #Interruptor que al estar activo permite correr
  NormalSpeed = 3.5        #Velocidad normal del heroe
  RunningSpeed = 4.5        #Velocidad del heroe corriendo
  RunningKey = Input::X    #Tecla que hace que el heroe corra
  RunningImg = '_running'  #Fin del nombre del character del heroe cuando corre
  Diagonal = true          #Movimiento en diagonal? true = si false = no
  DiagonalImg = '_diagonal' #Fin del nombre del character del heroe cuando va en diagonal
  JumpSwitch = 2            #Interruptor que activa el sistema de salto
  JumpKey = Input::Y        #Tecla qee al pulsarla el heroe saltara
  NormalJump = 2            #Salto cuando no se corre
  RunningJump = 4          #Salto cuando se corre
  JumpImg = '_jump'        #Fin del nombre del character del heroe cuando salta
end

#-------------------------------------------------------------------------------
#Instrucciones adicionales:
#Si el grafico del heroe el determinado movimiento no esta, no importa, no tirara
#error.
#Por defecto al correr en diagonal el grafico deberia terminar en
#'_running_diagonal', es decir RunningImg + DiagonalImg
#Caso similar con los saltos en diagonal donde es JumpImg + DiagonalImg
#Si el salto no puede ser completado buscara saltar a una posicion anterior a
#esa
#Para cambiar el grafico del jugador en el mapa se debera cambiar con
#'Cambiar grafico del heroe' que esta en la pagina 3 y no con 'Mover evento'
#Ya que este no funciona.
#-------------------------------------------------------------------------------
class Game_Player
  include SuperAdvanceMotion
  def initialize
    @running, @diagonal = false
    super
  end
 
  def update
    last_moving = moving?
    unless moving? or $game_system.map_interpreter.running? or
          @move_route_forcing or $game_temp.message_window_showing
    if Diagonal
      case Input.dir8
      when 1
        move_left
        move_down
        @diagonal = true
      when 2
          move_down
          @diagonal = false
      when 3
          move_down
          move_right
          @diagonal = true
      when 4
          move_left
          @diagonal = false
      when 6   
          move_right
        @diagonal = false
      when 7
          move_up
          move_left
          @diagonal = true
      when 8
          move_up
          @diagonal = false
      when 9
          move_right
          move_up
          @diagonal = true
      else
          @diagonal = false
      end
        else
      case Input.dir4
        when 2
          move_down
        when 4
          move_left
        when 6
            move_right
        when 8
            move_up
        else
          @character_name = $game_party.actors[0].character_name
        end
      end
    end
   
    last_real_x = @real_x
    last_real_y = @real_y
   
    super
   
    if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
      $game_map.scroll_down(@real_y - last_real_y)
    end
   
    if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
      $game_map.scroll_left(last_real_x - @real_x)
    end
   
    if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
      $game_map.scroll_right(@real_x - last_real_x)
    end
   
    if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
      $game_map.scroll_up(last_real_y - @real_y)
    end
   
    unless moving?
      if last_moving
        result = check_event_trigger_here([1,2])
      if result == false
          unless $DEBUG and Input.press?(Input::CTRL)
            if @encounter_count > 0
              @encounter_count -= 1
            end
          end
        end
      end
     
      if Input.trigger?(Input::C)
        check_event_trigger_here([0])
        check_event_trigger_there([0,1,2])
      end
    end
    unless $game_system.map_interpreter.running? or
          @move_route_forcing or $game_temp.message_window_showing
    jump2 if Input.trigger?(JumpKey)and $game_switches[JumpSwitch]
  end
 
    actor = $game_party.actors[0]
    if Input.press?(RunningKey)
      @move_speed = RunningSpeed
      @running = true
    else
      @move_speed  = NormalSpeed
      @running = false
    end if $game_switches[ActiveRun]
   
    if @running and @diagonal and run_diagonal_exists? and !jumping?
      @character_name = actor.character_name + RunningImg + DiagonalImg
    elsif @running and run_exists? and !jumping?
      @character_name = actor.character_name + RunningImg
    elsif @diagonal and !@running and diagonal_exists?
      @character_name = actor.character_name + DiagonalImg
    elsif jumping? and @diagonal and jum_diagonal_exists?
      @character_name = actor.character_name + JumpImg + DiagonalImg
  elsif jumping? and @running and jum_exists?
      @character_name = actor.character_name + JumpImg
    elsif jumping? and jum_exists?
      @character_name = actor.character_name + JumpImg
    else
      @character_name = actor.character_name
    end
  end
 
  def jump2
    power = @running ? RunningJump : NormalJump
    if @diagonal
      case @direction
      when 2
        until jumping?
        jump(-(power), power)
        power -= 1
        break if power <= 0
        end
      when 4
        dir = @direction
        @direction = 2
        until jumping?
        jump(-(power), -(power))
        power -= 1
        break if power <= 0
        end
        @direction = dir
      when 6
        dir = @direction
        @direction = 4
        until jumping?
        jump(power, power)
        power -= 1
        break if power <= 0
        end
        @direction = dir
      when 8
        until jumping?
        jump(power, -(power))
        power -= 1
        break if power <= 0
        end
      end
      else
      case @direction
        when 2
          until jumping?
          jump(0, power)
          power -= 1
          break if power <= 0
          end
        when 4
          until jumping?
          jump(-(power), 0)
          power -= 1
          break if power <= 0
          end
        when 6
          until jumping?
          jump(power, 0)
          power -= 1
          break if power <= 0
          end
        when 8
          until jumping?
          jump(0, -(power))
          power -= 1
          break if power <= 0
          end
        end
      end unless jumping?
  end
  def run_exists?(actor = $game_party.actors[0])
    RPG::Cache.character(actor.character_name + RunningImg, actor.character_hue) rescue return false
      return true
    end
  def run_diagonal_exists?(actor = $game_party.actors[0])
    RPG::Cache.character(actor.character_name + RunningImg + DiagonalImg, actor.character_hue) rescue return false
    return true
  end
  def diagonal_exists?(actor = $game_party.actors[0])
    RPG::Cache.character(actor.character_name + DiagonalImg, actor.character_hue) rescue return false
    return true
  end
  def jum_diagonal_exists?(actor = $game_party.actors[0])
    RPG::Cache.character(actor.character_name + JumpImg + DiagonalImg, actor.character_hue) rescue return false
    return true
  end
  def jum_exists?(actor = $game_party.actors[0])
    RPG::Cache.character(actor.character_name + JumpImg, actor.character_hue) rescue return false
    return true
  end
end
Por ultimo:
Descargar demo 1.0

Que lo disfruten, favor comentar los fallos, para poder solucionarlo que no quiero que queden en el battle system que incluirá el script, aunque sera una versión mas estilo xas hero.

-----------------------------------------------------------------------------------------------------------------------------------------------

Update: Esta nueva versión la 1.2 incluye algunas considerables mejoras, tales como reproducción de SE al saltar, salto en la misma posición si no se esta en movimiento o no puede saltar hasta otro punto. Ademas de un par de correcciones.

Descargar demo 1.2

Nueva versión del script:
Código:

#-------------------------------------------------------------------------------
#------------------------Super- Advanced Motion XP------------------------------
# By:Super Shooter
# 06/01/2011 - V 1.2
# Permite mover al heroe en 8 direcciones, correr, saltar y saltar corriendo

#-------------------------------------------------------------------------------
# Editar para personalizar, instruciones en los comentarios.
#-------------------------------------------------------------------------------
module SuperAdvanceMotion
  ActiveRun = 1            #Interruptor que al estar activo permite correr
  NormalSpeed = 3.5        #Velocidad normal del heroe
  RunningSpeed = 4.5        #Velocidad del heroe corriendo
  RunningKey = Input::X    #Tecla que hace que el heroe corra
  RunningImg = '_running'  #Fin del nombre del character del heroe cuando corre
  Diagonal = true          #Movimiento en diagonal? true = si false = no
  DiagonalImg = '_diagonal' #Fin del nombre del character del heroe cuando va en diagonal
  JumpSwitch = 2            #Interruptor que activa el sistema de salto
  JumpKey = Input::Y        #Tecla qee al pulsarla el heroe saltara
  NormalJump = 2            #Salto cuando no se corre
  RunningJump = 3          #Salto cuando se corre
  JumpImg = '_jump'        #Fin del nombre del character del heroe cuando salta
  JumpSe = '016-Jump02'
end

#-------------------------------------------------------------------------------
#Instrucciones adicionales:
#Si el grafico del heroe el determinado movimiento no esta, no importa, no tirara
#error.
#Por defecto al correr en diagonal el grafico deberia terminar en
#'_running_diagonal', es decir RunningImg + DiagonalImg
#Caso similar con los saltos en diagonal donde es JumpImg + DiagonalImg
#Si el salto no puede ser completado buscara saltar a una posicion anterior a
#esa.
#-------------------------------------------------------------------------------
class Game_Player
  include SuperAdvanceMotion
  def initialize
    @running, @diagonal = false
    super
  end
 
  def update
    last_moving = moving?
    unless moving? or $game_system.map_interpreter.running? or
          @move_route_forcing or $game_temp.message_window_showing
    if Diagonal
      case Input.dir8
      when 1
        move_left
        move_down
        @diagonal = true
      when 2
          move_down
          @diagonal = false
      when 3
          move_down
          move_right
          @diagonal = true
      when 4
          move_left
          @diagonal = false
      when 6   
          move_right
        @diagonal = false
      when 7
          move_up
          move_left
          @diagonal = true
      when 8
          move_up
          @diagonal = false
      when 9
          move_right
          move_up
          @diagonal = true
      else
          @diagonal = false
      end
        else
      case Input.dir4
        when 2
          move_down
        when 4
          move_left
        when 6
            move_right
        when 8
            move_up
        else
          @character_name = $game_party.actors[0].character_name
        end
      end
    end
   
    last_real_x = @real_x
    last_real_y = @real_y
   
    super
   
    if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
      $game_map.scroll_down(@real_y - last_real_y)
    end
   
    if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
      $game_map.scroll_left(last_real_x - @real_x)
    end
   
    if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
      $game_map.scroll_right(@real_x - last_real_x)
    end
   
    if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
      $game_map.scroll_up(last_real_y - @real_y)
    end
   
    unless moving?
      if last_moving
        result = check_event_trigger_here([1,2])
      if result == false
          unless $DEBUG and Input.press?(Input::CTRL)
            if @encounter_count > 0
              @encounter_count -= 1
            end
          end
        end
      end
     
      if Input.trigger?(Input::C)
        check_event_trigger_here([0])
        check_event_trigger_there([0,1,2])
      end
    end
    unless $game_system.map_interpreter.running? or
          @move_route_forcing or $game_temp.message_window_showing
    jump2 if Input.trigger?(JumpKey)and $game_switches[JumpSwitch]
  end 
    actor = $game_party.actors[0]
    if Input.press?(RunningKey)
      @move_speed = RunningSpeed
      @running = true
    else
      @move_speed  = NormalSpeed
      @running = false
    end if $game_switches[ActiveRun]
   
    if @running and @diagonal and run_diagonal_exists? and !jumping?
      @character_name = actor.character_name + RunningImg + DiagonalImg
    elsif @running and run_exists? and !jumping?
      @character_name = actor.character_name + RunningImg
    elsif @diagonal and !@running and diagonal_exists?
      @character_name = actor.character_name + DiagonalImg
    elsif jumping? and @diagonal and jum_diagonal_exists?
      @character_name = actor.character_name + JumpImg + DiagonalImg
    elsif jumping? and @running and jum_exists?
      @character_name = actor.character_name + JumpImg
    elsif jumping? and jum_exists?
      @character_name = actor.character_name + JumpImg
    else
      @character_name = actor.character_name
    end unless $game_system.map_interpreter.running? or
          @move_route_forcing or $game_temp.message_window_showing
  end
 
  def jump2
    power = @running ? RunningJump : NormalJump
    unless moving?
      Audio.se_play('Audio/SE/' + JumpSe, 50)
      jump(0, 0)
      return
    end
    if @diagonal
      Audio.se_play('Audio/SE/' + JumpSe, 80)
      case @direction
      when 2
        until jumping?
        jump(-(power), power)
        power -= 1
        end
      when 4
        dir = @direction
        @direction = 2
        until jumping?
        jump(-(power), -(power))
        power -= 1
        end
        @direction = dir
      when 6
        dir = @direction
        @direction = 4
        until jumping?
        jump(power, power)
        power -= 1
        end
        @direction = dir
      when 8
        until jumping?
        jump(power, -(power))
        power -= 1
        end
      end
    else
      Audio.se_play('Audio/SE/' + JumpSe, 80)
      case @direction
        when 2
          until jumping?
          jump(0, power)
          power -= 1
          end
        when 4
          until jumping?
          jump(-(power), 0)
          power -= 1
          end
        when 6
          until jumping?
          jump(power, 0)
          power -= 1
          end
        when 8
          until jumping?
          jump(0, -(power))
          power -= 1 
          end
        end
      end unless jumping?
  end
  def run_exists?(actor = $game_party.actors[0])
    RPG::Cache.character(actor.character_name + RunningImg, actor.character_hue) rescue return false
      return true
    end
  def run_diagonal_exists?(actor = $game_party.actors[0])
    RPG::Cache.character(actor.character_name + RunningImg + DiagonalImg, actor.character_hue) rescue return false
    return true
  end
  def diagonal_exists?(actor = $game_party.actors[0])
    RPG::Cache.character(actor.character_name + DiagonalImg, actor.character_hue) rescue return false
    return true
  end
  def jum_diagonal_exists?(actor = $game_party.actors[0])
    RPG::Cache.character(actor.character_name + JumpImg + DiagonalImg, actor.character_hue) rescue return false
    return true
  end
  def jum_exists?(actor = $game_party.actors[0])
    RPG::Cache.character(actor.character_name + JumpImg, actor.character_hue) rescue return false
    return true
  end
end

Saludos y que la disfruten.



Última edición por Neoking-Jaas el Vie Ene 06, 2012 5:10 pm, editado 1 vez

#2 Re: [RPG Maker XP] Super Advanced Motion 1.0 el Dom Dic 18, 2011 1:11 am

~thekiller

avatar
Oh muy bueno el script de verdad que me agrado bastante, lo malo es que si quieres que haga todo esos movimientos supongo que necesitas la imagenes ¿no? Pero en fin muy buen aporte n.n

¡¡¡Un saludo!!!

#3 Re: [RPG Maker XP] Super Advanced Motion 1.0 el Dom Dic 18, 2011 1:43 am

Neoking-Jaas

avatar
~thekiller escribió:Oh muy bueno el script de verdad que me agrado bastante, lo malo es que si quieres que haga todo esos movimientos supongo que necesitas la imagenes ¿no? Pero en fin muy buen aporte n.n

¡¡¡Un saludo!!!

No, la imagen es opcional, sino esta deja la imagen normal del héroe e igual hará el movimiento.

#4 Re: [RPG Maker XP] Super Advanced Motion 1.0 el Dom Dic 18, 2011 2:11 am

JMB GISOKA

avatar
Es una pena que no valga para RMVX intentare ponerlo para el RMVX aver si lo consigo
espero que no te moleste voy haver si puedo

#5 Re: [RPG Maker XP] Super Advanced Motion 1.0 el Dom Dic 18, 2011 2:29 am

~thekiller

avatar
Neoking-Jaas escribió:
~thekiller escribió:Oh muy bueno el script de verdad que me agrado bastante, lo malo es que si quieres que haga todo esos movimientos supongo que necesitas la imagenes ¿no? Pero en fin muy buen aporte n.n

¡¡¡Un saludo!!!

No, la imagen es opcional, sino esta deja la imagen normal del héroe e igual hará el movimiento.

Ha si yo lo se, pero me referia que no es igual sin los charas en las diferentes posiciones XD porque obviamente se ve mejor con las imagenes pero aun asi ya tenias ese detalle pensado asi que mis felicitaciones!!!

Y un saludo!!

#6 Re: [RPG Maker XP] Super Advanced Motion 1.0 el Dom Dic 18, 2011 4:22 am

Faye Valentine

avatar
Ah eso se hace con un simple engine XD...

No se por que hacen Scripts cuya funcion es algo tan basico que se hace en un engine en menos de 10 minutos... será para los novatos XD

#7 Re: [RPG Maker XP] Super Advanced Motion 1.0 el Dom Dic 18, 2011 5:45 am

~thekiller

avatar
Blues escribió:Ah eso se hace con un simple engine XD...

No se por que hacen Scripts cuya funcion es algo tan basico que se hace en un engine en menos de 10 minutos... será para los novatos XD

Un poco pues emmm no se.. Tu comentario, porque aunque si es muy facil hacerlo (eso no te lo niego XD), pero el scripts pues ahorra peso de los eventos que usas para hacer el engine, ademas no deberias despreciar el script XD seguro a Neoking le costo hacerlo o quiza no XD

#8 Re: [RPG Maker XP] Super Advanced Motion 1.0 el Dom Dic 18, 2011 5:02 pm

Neoking-Jaas

avatar
Con un engine no lograras que te quede también como el script y como dice ~thekiller así se ahorra peso en los eventos, ya que todo esta directamente en el jugador.
Con un engine es difícil hacer que si el héroe no puede saltar a la posición máxima (del alcance del salto), porque este bloqueada, salte a una anterior, cosa que con el script si se logra.

#9 Re: [RPG Maker XP] Super Advanced Motion 1.0 el Dom Dic 18, 2011 5:31 pm

Razor

avatar
A mí me parece que todo aporte es bien valorado, es más, muchas personas buscan la facilidad, y el script da mas facilidades que un engine, es por ello que muchos usuarios nuevos en el RPG Maker pasan metidos en la sección de scripts y no en la de engines.

Me parece muy bien logrado tu script Jaas, espero ver mas creaciones.
PD: ¿Blues, antes eras KoJ?

¡Saludos!
Out~





Todos mis aportes por Mediafire tienen contraseña, esa es: www.universomaker.net
Esto es para evitar plagio, asegúrense de copiar y pegar la contraseña.

#10 Re: [RPG Maker XP] Super Advanced Motion 1.0 el Dom Dic 18, 2011 5:40 pm

PeriikOne

avatar
El script esta muy bien, lastima que yo no use el XP.
Lo unico malo es que tienes que tener la imagen del chara en diagonal para que quede bien, pero igualmente muy buen script.

Salu2.

#11 Re: [RPG Maker XP] Super Advanced Motion 1.0 el Lun Dic 19, 2011 5:51 am

Neoking-Jaas

avatar
PeriikOne escribió:El script esta muy bien, lastima que yo no use el XP.
Lo unico malo es que tienes que tener la imagen del chara en diagonal para que quede bien, pero igualmente muy buen script.

Salu2.

Si no quieren movimientos en diagonal se pueden desactivar desde el script.

#12 Re: [RPG Maker XP] Super Advanced Motion 1.0 el Lun Dic 19, 2011 6:13 pm

Faye Valentine

avatar
Con un engine no lograras que te quede también como el script y como dice ~thekiller así se ahorra peso en los eventos, ya que todo esta directamente en el jugador.
Con un engine es difícil hacer que si el héroe no puede saltar a la posición máxima (del alcance del salto), porque este bloqueada, salte a una anterior, cosa que con el script si se logra.

Oh vamos, un engine de eso no pesa nada, cualquier evento no pesa nada, ningun evento pesa algo, por dios. Lo que pesa e influye en el peso final del juego son las imagenes, musicas, charas y demás recursos, ni siquiera los scripts causan pesos.

Es cierto que es dificil de hacer, en eso si tienes razon, pero se puede. Aunque, es mas facil con un script XD.

¿Blues, antes eras KoJ?

See XD TKOJ oe... 'T'KoJ e.e

#13 Re: [RPG Maker XP] Super Advanced Motion 1.0 el Mar Dic 20, 2011 8:35 pm

Neoking-Jaas

avatar
me refiero a que con eventos causas lag, un evento de este tipo debe permanecer en proceso paralelo, que comparado con el script ocupa mucha mas memoria, claro esto solo se nota en ordenadores de bajos recursos.

#14 Re: [RPG Maker XP] Super Advanced Motion 1.0 el Vie Ene 06, 2012 5:11 pm

Neoking-Jaas

avatar
Actualizo a la versión 1.2 que podrán encontrar al final del post principal.

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

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