¡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] Caminar en ocho direcciones. el Jue Mar 31, 2011 9:46 pm

~Doku


Aquí aporto un script para caminar en diagonal.

Nombre: Caminar en ocho direcciones.
Autor: Northro
Versión: 1.0

Código:
#==========================================================================
# Nombre del Script: Caminar en ocho direcciones.
# Autor: Northro
# Versión del Script: 1.0
# Descripción: Mueve el personaje diagonalmente.
#==========================================================================
# 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

Instrucciones:
  1. Copiar el script encima de 'Main'.
  2. Renombrar el nombre de la imagen del personaje que váis a usar añadiéndole "_diagonal" (sin las comillas) al final.

No requiere imágenes. Espero que les guste.
Saludos.

Post editado correctamente por D.A.C.

the-terror-of_death

avatar
mmmm...no produce error con algunos script¨por que copie uno alguna ves y me tiraba conflicto con otro¨vere si hace conflicto con algunos codigo de mi juego.
GRACIAS POR SUPUESTO DKNINJA

danielgris

avatar
Hola muchas gracias me sirve para mi proyecto solo tengo una duda puedo cambiar la velocidad del personaje cuando anda en diagonal?¿?.
Muchas gracias por todo

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.