¡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 The Other Way XP y VX el Dom Sep 09, 2018 7:40 am

kyonides

avatar
The Other Way XP y VX

por Kyonides-Arkanthes


Bueno este script que hice hace tiempos, y que creí que ya lo había posteado aquí pero parece que no, que lo hice en foros de habla inglesa, sirve para confundir al jugador. ¿Cómo lo hace? Pues, haciendo que camine en dirección contraria a la deseada. Ópalo Tuerto

Tiene 2 formas de provocarse.


  • Llamado a Script de tipo asignación de valor
  • Llamado a Script de tipo configurar el tiempo


La diferencia está en que la primera durará hasta que Uds. cambien de nuevo el valor de esa variable, mientras que en la segunda eso solo duraría la cantidad de segundos que Uds. definan ahí.

$game_player.other_way = true o false
$game_player.other_way_duration(segundos)

Esos son los dos llamados, pueden usar el que gusten, pero no los combinen en un mismo evento. Escojan bien cuál les sirve y dónde les será más útil.

Hay dos opciones porque una trata de no hacer cambios drásticos al script por defecto y la otra opción le pasa por encima como camión de 20 toneladas. Ópalo Sonrisa Grande

Opción 1
Código:
# * The Other Way XP - Option 1
#   Scripter : Kyonides-Arkanthos

#   Script Calls

#   For Long Lasting Effects
#     $game_player.other_way = some_boolean
#   Booleans: true - turns right if you pressed left, false or nil - normal

#   For Temporary Effects
#     $game_player.other_way_duration(seconds)

class Game_Player
  attr_writer :other_way
  alias kyon_other_way_up update
  alias kyon_other_way_move_down move_down
  alias kyon_other_way_move_left move_left
  alias kyon_other_way_move_right move_right
  alias kyon_other_way_move_up move_up
  def initialize
    super
    @other_way_timer = 0
  end

  def update
    if @other_way_timer > 0
      @other_way_timer -= 1
      @other_way = nil if @other_way_timer == 0
    end
    kyon_other_way_up
  end

  def move_down(turn_enabled = true)
    if @other_way and !@wrong_way
      @wrong_way = true
      move_up(turn_enabled)
      return
    end
    @wrong_way = nil
    kyon_other_way_move_down(turn_enabled)
  end

  def move_left(turn_enabled = true)
    if @other_way and !@wrong_way
      @wrong_way = true
      move_right(turn_enabled)
      return
    end
    @wrong_way = nil
    kyon_other_way_move_left(turn_enabled)
  end

  def move_right(turn_enabled = true)
    if @other_way and !@wrong_way
      @wrong_way = true
      move_left(turn_enabled)
      return
    end
    @wrong_way = nil
    kyon_other_way_move_right(turn_enabled)
  end

  def move_up(turn_enabled = true)
    if @other_way and !@wrong_way
      @wrong_way = true
      move_down(turn_enabled)
      return
    end
    @wrong_way = nil
    kyon_other_way_move_up(turn_enabled)
  end

  def other_way_duration(seconds)
    @other_way = true
    @other_way_timer = seconds * Graphics.frame_rate
  end
end

Opción 2
Código:
# * The Other Way XP - Option 2
#   Scripter : Kyonides-Arkanthos

#   Script Calls

#   For Long Lasting Effects
#     $game_player.other_way = some_boolean
#   Booleans: true - turns right if you pressed left, false or nil - normal

#   For Temporary Effects
#     $game_player.other_way_duration(seconds)

#   This version might be incompatible with other custom scripts involving a
#   character's movements or visual updates.

class Game_Player
  attr_writer :other_way
  def initialize
    super
    @other_way_timer = 0
  end

  def update
    last_moving = moving? # Remember whether or not moving in local variables
    move_by_input
    last_real_x = @real_x
    last_real_y = @real_y
    super
    # If it moves down and is positioned lower than the center of the screen
    if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
      $game_map.scroll_down(@real_y - last_real_y) # Scroll map down
    end
    # If character moves left and is positioned more let on-screen than center
    if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
      $game_map.scroll_left(last_real_x - @real_x) # Scroll map left
    end
    # If it moves right and is positioned more right on-screen than center
    if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
      $game_map.scroll_right(@real_x - last_real_x) # Scroll map right
    end
    # If it moves up and is positioned higher than the center of the screen
    if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
      $game_map.scroll_up(last_real_y - @real_y) # Scroll map up
    end
    return if moving?
    if last_moving # If player was moving last time
      # Event determinant is via touch of same position event
      result = check_event_trigger_here([1,2])
      unless result # If event which started does not exist
        # Disregard if debug mode is ON and ctrl key was pressed
        unless $DEBUG and Input.press?(Input::CTRL)
          @encounter_count -= 1 if @encounter_count > 0 # Encounter countdown
        end
      end
    end
    if Input.trigger?(Input::C) # If C button was pressed
      # Same position and front event determinant
      check_event_trigger_here([0])
      check_event_trigger_there([0,1,2])
    end
  end

  def move_by_input
    if @other_way_timer > 0
      @other_way_timer -= 1
      @other_way = nil if @other_way_timer == 0
    end
    return if moving? or $game_system.map_interpreter.running?
    return if @move_route_forcing or $game_temp.message_window_showing
    # Move player in the right direction unless going the other way is enabled.
    current_direction = Input.dir4
    current_direction = 10 - current_direction if @other_way
    case current_direction
    when 2 then move_down
    when 4 then move_left
    when 6 then move_right
    when 8 then move_up
    end
  end

  def other_way_duration(seconds)
    @other_way = true
    @other_way_timer = seconds * Graphics.frame_rate
  end
end

Versión para VX
Código:
# * The Other Way VX
#  Scripter : Kyonides-Arkanthos

#  For Long Lasting Effects
#    $game_player.other_way = some_boolean
#  Booleans: true - turns right if you pressed left, false or nil - normal

#  For Temporary Effects
#    $game_player.other_way_duration(seconds)

class Game_Player
  attr_writer :other_way
  alias kyon_other_way_gm_player_init initialize
  def initialize
    @other_way_timer = 0
    kyon_other_way_gm_player_init
  end

  def move_by_input
    if @other_way_timer > 0
      @other_way_timer -= 1
      @other_way = nil if @other_way_timer == 0
    end
    return unless movable?
    return if $game_map.interpreter.running?
    current_direction = Input.dir4
    current_direction = 10 - current_direction if @other_way
    case current_direction
    when 2 then move_down
    when 4 then move_left
    when 6 then move_right
    when 8 then move_up
    end
  end

  def other_way_duration(seconds)
    @other_way = true
    @other_way_timer = seconds * Graphics.frame_rate
  end
end

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.