¡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] Movimiento diagonal el Mar Nov 08, 2011 4:28 pm

shaoran_hyku

avatar
Hola de nuevo Makers.
Hoy os traigo un script muy usado, básicamente, permite que vuestros personajes se puedan mover
en diagonal; es tan sencillo como crear un chara con la sub extensión "_diagonal", por ejemplo, si tenemos
un chara llamado PATATIN.png, el diagonal debería quedar PATATIN_diagonal.png
NOTA: Para ver un ejemplo de como debería de quedar la imagen_diagonal, descarga la demo.

Demo: Link

Script (Por si le da pereza descargar la demo):
Spoiler:
Código:
#===============================================================================
# Creado por: Northro
# Para: RPG Maker XP
# Nombre del Script: Movement Diagonal
# Versión del Script: 1.0
# Descripción: Mueve el personaje diagonalmente.
#===============================================================================

#===============================================================================
# Instrucciones: Pegar arriba del script "Main", para
#                poner a un personaje el character que
#                va a usar cuando se mueva en diagonal
#                debes ponerle el nombre del character
#                más "_diagonal".
#===============================================================================

#===============================================================================
# Clase "Game_Player"
#===============================================================================

class Game_Player < Game_Character
  def update
    actor = $game_party.actors[0]
    if @character_diagonal and graphic_movement_diagonal(actor)
      @character_name = actor.character_name + "_diagonal"
    else
      @character_name = actor.character_name
    end
    last_moving = moving?
    unless moving? or $game_system.map_interpreter.running? or
      @move_route_forcing or $game_temp.message_window_showing
      x = $game_player.x
      y = $game_player.y
      d = 0
      case Input.dir8
      when 1
        @through == true ? through = true : through = false
        if passable?(x - 1, y + 1, d)
          @character_diagonal = true
          @through = true if through == false
          move_left
          move_down
        end
        @through = false if through == false
      when 2
        @character_diagonal = false
        move_down
      when 3
        @through == true ? through = true : through = false
        if passable?(x + 1, y + 1, d)
          @character_diagonal = true
          @through = true if through == false
          move_down
          move_right
        end
        @through = false if through == false
      when 4
        @character_diagonal = false
        move_left
      when 6
        @character_diagonal = false
        move_right
      when 7
        @through == true ? through = true : through = false
        if passable?(x - 1, y - 1, d)
          @character_diagonal = true
          @through = true if through == false
          move_up
          move_left
        end
        @through = false if through == false
      when 8
        @character_diagonal = false
        move_up
      when 9
        @through == true ? through = true : through = false
        if passable?(x + 1, y - 1, d)
          @character_diagonal = true
          @through = true if through == false
          move_right
          move_up
        end
        @through = false if through == false
      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
  end
  def graphic_movement_diagonal(actor)
    if moving?
      RPG::Cache.character(actor.character_name + "_diagonal", actor.character_hue) rescue return false
    end
  end
end

Créditos: Northro

Si tenéis problemas al crear vuestro chara en diagonal, D.A.C os lo puede hacer en su taller por unas makedas: [RMXP / RMVX] Taller de grafismo / sprites

Esto es todo, si hay alguna duda o el link se cae, avisadme por MP, que no es molestia.

EDITO: Ahora me di cuenta que ~Doku ya había posteado este script antes, en realidad lo único que aporte fue la demo; que un moderador o admin haga lo que crea que sea mejor.

Saludos y suerte

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.