Delete

Started by Geust, June 05, 2010, 11:46:52 am

Previous topic - Next topic

nathmatt

well im going to need a demo because i just tryed that and the charactors follow me btw blizzards tons of add-ons v3.9b is really out dated updating might fix ur problem
Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


nathmatt

Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


nathmatt

i still need the demo if you want me to try and fix it because i made a new project put nothing put the script i gave you and tons turn on the caterpillar script and the characters all followed me not the event
Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


nathmatt

click file then compress data to do click encrypt and upload the file to sendspace
Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


nathmatt

Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


nathmatt

i emailed you back with it fixed ant telling you how to use it
Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


SBR*

Quote from: nathmatt on June 07, 2010, 07:51:04 pm
click file then compress data to do click encrypt and upload the file to sendspace


I thought encrypting meant that you CAN'T view the file?

nathmatt

it does but he zipped it so it instead so it didn't matter
but i meant to say don't press it
Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


nathmatt

how are you tracking it ?
Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


nathmatt

June 09, 2010, 07:37:15 pm #29 Last Edit: June 09, 2010, 08:25:54 pm by nathmatt
the problem was when i turned it back into an event is was returning to its original location here add this to what ever method ur using to check its location !$game_event.events[id].moving?
Spoiler: ShowHide
class Event
 

 def on(id)
   @id = id
   @map = $game_map.map.events[@id]
   character = @event = $game_map.events[@id]
   $game_map.events[@id] = Game_Event_Player.new(@map)
   $scene.spriteset.character_sprites.each {|sprite|
   # if sprite found
   if sprite.character == character
     # set new character
     sprite.character = $game_map.events[@id]
     # update sprite
     sprite.update
     # event found, stop here
     break
   end}
   $game_player.following = true
   $game_player.center(@event.y,@event.y)
 end
 
 def off
   player = $game_map.events[@id]
   @map.x = player.x
   @map.y = player.y
   character = $game_map.events[@id] = @event
   $game_map.events[@id].moveto(player.x,player.y)
   $game_map.map.events[@id] = @map
   character = $game_map.events[@id] = @event
   $scene.spriteset.character_sprites.each {|sprite|
   # if sprite found
   if sprite.character == character
     # set new character
     sprite.dispose
     sprite.character = player
     # update sprite
     sprite.update
     # event found, stop here
     break
   end}
   $game_player.following = false
   $game_player.center($game_player.y,$game_player.y)
 end
 
end

class Scene_Map
 def reset
   @spriteset = Spriteset_Map.new
 end
end

$event = Event.new

class Game_Event_Player < Game_Character
 
 attr_accessor :off
 
 def initialize(event)
 super()
   moveto(event.x,event.y)
   $scene.reset
   @last_event = event
   refresh
 end
 #--------------------------------------------------------------------------
 # ● 定数
 #--------------------------------------------------------------------------
 CENTER_X = (320 - 16) * 4   # 画面中央の X 座標 * 4
 CENTER_Y = (240 - 16) * 4   # 画面中央の Y 座標 * 4
 #--------------------------------------------------------------------------
 # ● 通行可能判定
 #     x : X 座標
 #     y : Y 座標
 #     d : 方向 (0,2,4,6,8)  ※ 0 = 全方向通行不可の場合を判定 (ジャンプ用)
 #--------------------------------------------------------------------------
 def passable?(x, y, d)
   # 新しい座標を求める
   new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
   new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
   # 座標がマップ外の場合
   unless $game_map.valid?(new_x, new_y)
     # 通行不可
     return false
   end
   # デバッグモードが ON かつ CTRL キーが押されている場合
   if $DEBUG and Input.press?(Input::CTRL)
     # 通行可
     return true
   end
   super
 end
 #--------------------------------------------------------------------------
 # ● 画面中央に来るようにマップの表示位置を設定
 #--------------------------------------------------------------------------
 def center(x, y)
   max_x = ($game_map.width - 20) * 128
   max_y = ($game_map.height - 15) * 128
   $game_map.display_x = [0, [x * 128 - CENTER_X, max_x].min].max
   $game_map.display_y = [0, [y * 128 - CENTER_Y, max_y].min].max
 end
 def starting
   return false
 end
 def need_update?
   return false
 end
 #--------------------------------------------------------------------------
 # ● 指定位置に移動
 #     x : X 座標
 #     y : Y 座標
 #--------------------------------------------------------------------------
 def moveto(x, y)
   super
   # センタリング
   center(x, y)
   # エンカウント カウントを作成
   make_encounter_count
 end
 #--------------------------------------------------------------------------
 # ● 歩数増加
 #--------------------------------------------------------------------------
 def increase_steps
   super
   # 移動ルート強制中ではない場合
   unless @move_route_forcing
     # 歩数増加
     $game_party.increase_steps
     # 歩数が偶数の場合
     if $game_party.steps % 2 == 0
       # スリップダメージチェック
       $game_party.check_map_slip_damage
     end
   end
 end
 #--------------------------------------------------------------------------
 # ● エンカウント カウント取得
 #--------------------------------------------------------------------------
 def encounter_count
   return @encounter_count
 end
 #--------------------------------------------------------------------------
 # ● エンカウント カウント作成
 #--------------------------------------------------------------------------
 def make_encounter_count
   # サイコロを 2 個振るイメージ
   if $game_map.map_id != 0
     n = $game_map.encounter_step
     @encounter_count = rand(n) + rand(n) + 1
   end
 end
 #--------------------------------------------------------------------------
 # ● リフレッシュ
 #--------------------------------------------------------------------------
 def refresh
   @character_name = @last_event.pages[0].graphic.character_name
   @character_hue  = @last_event.pages[0].graphic.character_hue
   # 不透明度と合成方法を初期化
   @opacity = 255
   @blend_type = 0
 end
 #--------------------------------------------------------------------------
 # ● 同位置のイベント起動判定
 #--------------------------------------------------------------------------
 def check_event_trigger_here(triggers)
   result = false
   # イベント実行中の場合
   if $game_system.map_interpreter.running?
     return result
   end
   # 全イベントのループ
   return result
 end
 #--------------------------------------------------------------------------
 # ● 正面のイベント起動判定
 #--------------------------------------------------------------------------
 def check_event_trigger_there(triggers)
   result = false
   # イベント実行中の場合
   if $game_system.map_interpreter.running?
     return result
   end
   # 正面の座標を計算
   new_x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
   new_y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
   # 全イベントのループ
   for event in $game_map.events.values
     # イベントの座標とトリガーが一致した場合
     if event.x == new_x and event.y == new_y and
        triggers.include?(event.trigger)
       # ジャンプ中以外で、起動判定が正面のイベントなら
       if not event.jumping? and not event.over_trigger?
         event.start
         result = true
       end
     end
   end
   # 該当するイベントが見つからなかった場合
   if result == false
     # 正面のタイルがカウンターなら
     if $game_map.counter?(new_x, new_y)
       # 1 タイル奥の座標を計算
       new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
       new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
       # 全イベントのループ
       for event in $game_map.events.values
         # イベントの座標とトリガーが一致した場合
         if event.x == new_x and event.y == new_y and
            triggers.include?(event.trigger)
           # ジャンプ中以外で、起動判定が正面のイベントなら
           if not event.jumping? and not event.over_trigger?
             event.start
             result = true
           end
         end
       end
     end
   end
   return result
 end
 #--------------------------------------------------------------------------
 # ● 接触イベントの起動判定
 #--------------------------------------------------------------------------
 def check_event_trigger_touch(x, y)
   result = false
   # イベント実行中の場合
   if $game_system.map_interpreter.running?
     return result
   end
   # 全イベントのループ
   for event in $game_map.events.values
     # イベントの座標とトリガーが一致した場合
     if event.x == x and event.y == y and [1,2].include?(event.trigger)
       # ジャンプ中以外で、起動判定が正面のイベントなら
       if not event.jumping? and not event.over_trigger?
         event.start
         result = true
       end
     end
   end
   return result
 end
 #--------------------------------------------------------------------------
 # ● フレーム更新
 #--------------------------------------------------------------------------
 def update
   # ローカル変数に移動中かどうかを記憶
   last_moving = moving?
   # 移動中、イベント実行中、移動ルート強制中、
   # メッセージウィンドウ表示中のいずれでもない場合
   unless moving? or $game_system.map_interpreter.running? or
          @move_route_forcing or $game_temp.message_window_showing
     # 方向ボタンが押されていれば、その方向へプレイヤーを移動
     case Input.dir4
     when 2
       move_down
     when 4
       move_left
     when 6
       move_right
     when 8
       move_up
     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
         # デバッグモードが ON かつ CTRL キーが押されている場合を除き
         unless $DEBUG and Input.press?(Input::CTRL)
           # エンカウント カウントダウン
           if @encounter_count > 0
             @encounter_count -= 1
           end
         end
       end
     end
     # C ボタンが押された場合
     if Input.trigger?(Input::C)
       # 同位置および正面のイベント起動判定
       check_event_trigger_here([0])
       check_event_trigger_there([0,1,2])
     end
   end
 end
end


class Game_Player
 attr_accessor :following
 #--------------------------------------------------------------------------
 # ● フレーム更新
 #--------------------------------------------------------------------------
 def update
   # ローカル変数に移動中かどうかを記憶
   last_moving = moving?
   # 移動中、イベント実行中、移動ルート強制中、
   # メッセージウィンドウ表示中のいずれでもない場合
   if !@following
     unless moving? or $game_system.map_interpreter.running? or
            @move_route_forcing or $game_temp.message_window_showing
       # 方向ボタンが押されていれば、その方向へプレイヤーを移動
       case Input.dir4
       when 2
         move_down
       when 4
         move_left
       when 6
         move_right
       when 8
         move_up
       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
   else
     super
   end
   # 移動中ではない場合
   unless moving?
     # 前回プレイヤーが移動中だった場合
     if last_moving
       # 同位置のイベントとの接触によるイベント起動判定
       result = check_event_trigger_here([1,2])
       # 起動したイベントがない場合
       if result == false
         # デバッグモードが ON かつ CTRL キーが押されている場合を除き
         unless $DEBUG and Input.press?(Input::CTRL)
           # エンカウント カウントダウン
           if @encounter_count > 0
             @encounter_count -= 1
           end
         end
       end
     end
     # C ボタンが押された場合
     if Input.trigger?(Input::C)
       # 同位置および正面のイベント起動判定
       check_event_trigger_here([0])
       check_event_trigger_there([0,1,2])
     end
   end
 end
end


fixed
to walk through them just click through
Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


nathmatt

Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


nathmatt

Spoiler: ShowHide
class Event
 

  def on(id)
    @id = id
    @map = $game_map.map.events[@id]
    character = @event = $game_map.events[@id]
    $game_map.events[@id] = Game_Event_Player.new(@map)
    $scene.spriteset.character_sprites.each {|sprite|
    # if sprite found
    if sprite.character == character
      # set new character
      sprite.character = $game_map.events[@id]
      # update sprite
      sprite.update
      # event found, stop here
      break
    end}
    $game_player.following = true
    $game_player.center(@event.y,@event.y)
  end
 
  def off
    player = $game_map.events[@id]
    @map.x = player.x
    @map.y = player.y
    character = $game_map.events[@id] = @event
    $game_map.events[@id].moveto(player.x,player.y)
    $game_map.map.events[@id] = @map
    character = $game_map.events[@id] = @event
    $scene.spriteset.character_sprites.each {|sprite|
    # if sprite found
    if sprite.character == character
      # set new character
      sprite.dispose
      sprite.character = player
      # update sprite
      sprite.update
      # event found, stop here
      break
    end}
    $game_player.following = false
    $game_player.center($game_player.y,$game_player.y)
  end
 
end

$event = Event.new

class Game_Event_Player < Game_Character
 
  attr_accessor :off
 
  def initialize(event)
  super()
    moveto(event.x,event.y)
    @last_event = event
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 定数
  #--------------------------------------------------------------------------
  CENTER_X = (320 - 16) * 4   # 画面中央の X 座標 * 4
  CENTER_Y = (240 - 16) * 4   # 画面中央の Y 座標 * 4
  #--------------------------------------------------------------------------
  # ● 通行可能判定
  #     x : X 座標
  #     y : Y 座標
  #     d : 方向 (0,2,4,6,8)  ※ 0 = 全方向通行不可の場合を判定 (ジャンプ用)
  #--------------------------------------------------------------------------
  def passable?(x, y, d)
    # 新しい座標を求める
    new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
    new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
    # 座標がマップ外の場合
    unless $game_map.valid?(new_x, new_y)
      # 通行不可
      return false
    end
    # デバッグモードが ON かつ CTRL キーが押されている場合
    if $DEBUG and Input.press?(Input::CTRL)
      # 通行可
      return true
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● 画面中央に来るようにマップの表示位置を設定
  #--------------------------------------------------------------------------
  def center(x, y)
    max_x = ($game_map.width - 20) * 128
    max_y = ($game_map.height - 15) * 128
    $game_map.display_x = [0, [x * 128 - CENTER_X, max_x].min].max
    $game_map.display_y = [0, [y * 128 - CENTER_Y, max_y].min].max
  end
  def starting
    return false
  end
  def need_update?
    return false
  end
  #--------------------------------------------------------------------------
  # ● 指定位置に移動
  #     x : X 座標
  #     y : Y 座標
  #--------------------------------------------------------------------------
  def moveto(x, y)
    super
    # センタリング
    center(x, y)
    # エンカウント カウントを作成
    make_encounter_count
  end
  #--------------------------------------------------------------------------
  # ● 歩数増加
  #--------------------------------------------------------------------------
  def increase_steps
    super
    # 移動ルート強制中ではない場合
    unless @move_route_forcing
      # 歩数増加
      $game_party.increase_steps
      # 歩数が偶数の場合
      if $game_party.steps % 2 == 0
        # スリップダメージチェック
        $game_party.check_map_slip_damage
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● エンカウント カウント取得
  #--------------------------------------------------------------------------
  def encounter_count
    return @encounter_count
  end
  #--------------------------------------------------------------------------
  # ● エンカウント カウント作成
  #--------------------------------------------------------------------------
  def make_encounter_count
    # サイコロを 2 個振るイメージ
    if $game_map.map_id != 0
      n = $game_map.encounter_step
      @encounter_count = rand(n) + rand(n) + 1
    end
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    @character_name = @last_event.pages[0].graphic.character_name
    @character_hue  = @last_event.pages[0].graphic.character_hue
    # 不透明度と合成方法を初期化
    @opacity = 255
    @blend_type = 0
  end
  #--------------------------------------------------------------------------
  # ● 同位置のイベント起動判定
  #--------------------------------------------------------------------------
  def check_event_trigger_here(triggers)
    result = false
    # イベント実行中の場合
    if $game_system.map_interpreter.running?
      return result
    end
    # 全イベントのループ
    return result
  end
  #--------------------------------------------------------------------------
  # ● 正面のイベント起動判定
  #--------------------------------------------------------------------------
  def check_event_trigger_there(triggers)
    result = false
    # イベント実行中の場合
    if $game_system.map_interpreter.running?
      return result
    end
    # 正面の座標を計算
    new_x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
    new_y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
    # 全イベントのループ
    for event in $game_map.events.values
      # イベントの座標とトリガーが一致した場合
      if event.x == new_x and event.y == new_y and
         triggers.include?(event.trigger)
        # ジャンプ中以外で、起動判定が正面のイベントなら
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    # 該当するイベントが見つからなかった場合
    if result == false
      # 正面のタイルがカウンターなら
      if $game_map.counter?(new_x, new_y)
        # 1 タイル奥の座標を計算
        new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
        new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
        # 全イベントのループ
        for event in $game_map.events.values
          # イベントの座標とトリガーが一致した場合
          if event.x == new_x and event.y == new_y and
             triggers.include?(event.trigger)
            # ジャンプ中以外で、起動判定が正面のイベントなら
            if not event.jumping? and not event.over_trigger?
              event.start
              result = true
            end
          end
        end
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ● 接触イベントの起動判定
  #--------------------------------------------------------------------------
  def check_event_trigger_touch(x, y)
    result = false
    # イベント実行中の場合
    if $game_system.map_interpreter.running?
      return result
    end
    # 全イベントのループ
    for event in $game_map.events.values
      # イベントの座標とトリガーが一致した場合
      if event.x == x and event.y == y and [1,2].include?(event.trigger)
        # ジャンプ中以外で、起動判定が正面のイベントなら
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # ローカル変数に移動中かどうかを記憶
    last_moving = moving?
    # 移動中、イベント実行中、移動ルート強制中、
    # メッセージウィンドウ表示中のいずれでもない場合
    unless moving? or $game_system.map_interpreter.running? or
           @move_route_forcing or $game_temp.message_window_showing
      # 方向ボタンが押されていれば、その方向へプレイヤーを移動
      case Input.dir4
      when 2
        move_down
      when 4
        move_left
      when 6
        move_right
      when 8
        move_up
      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
          # デバッグモードが ON かつ CTRL キーが押されている場合を除き
          unless $DEBUG and Input.press?(Input::CTRL)
            # エンカウント カウントダウン
            if @encounter_count > 0
              @encounter_count -= 1
            end
          end
        end
      end
      # C ボタンが押された場合
      if Input.trigger?(Input::C)
        # 同位置および正面のイベント起動判定
        check_event_trigger_here([0])
        check_event_trigger_there([0,1,2])
      end
    end
  end
end


class Game_Player
  attr_accessor :following
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # ローカル変数に移動中かどうかを記憶
    last_moving = moving?
    # 移動中、イベント実行中、移動ルート強制中、
    # メッセージウィンドウ表示中のいずれでもない場合
    if !@following
      unless moving? or $game_system.map_interpreter.running? or
             @move_route_forcing or $game_temp.message_window_showing
        # 方向ボタンが押されていれば、その方向へプレイヤーを移動
        case Input.dir4
        when 2
          move_down
        when 4
          move_left
        when 6
          move_right
        when 8
          move_up
        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
    else
      super
    end
    # 移動中ではない場合
    unless moving?
      # 前回プレイヤーが移動中だった場合
      if last_moving
        # 同位置のイベントとの接触によるイベント起動判定
        result = check_event_trigger_here([1,2])
        # 起動したイベントがない場合
        if result == false
          # デバッグモードが ON かつ CTRL キーが押されている場合を除き
          unless $DEBUG and Input.press?(Input::CTRL)
            # エンカウント カウントダウン
            if @encounter_count > 0
              @encounter_count -= 1
            end
          end
        end
      end
      # C ボタンが押された場合
      if Input.trigger?(Input::C)
        # 同位置および正面のイベント起動判定
        check_event_trigger_here([0])
        check_event_trigger_there([0,1,2])
      end
    end
  end
end


missed that error fixed note make the other events through not the 1 your controlling
Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


nathmatt

fixed

Spoiler: ShowHide
class Event
  attr_reader   :id

  def on(id)
    @id = id
    @map = $game_map.map.events[@id]
    character = @event = $game_map.events[@id]
    $game_map.events[@id] = Game_Event_Player.new(@map)
    $scene.spriteset.character_sprites.each {|sprite|
    # if sprite found
    if sprite.character == character
      # set new character
      sprite.character = $game_map.events[@id]
      # update sprite
      sprite.update
      # event found, stop here
      break
    end}
    $game_player.following = true
    $game_player.center(@event.y,@event.y)
  end
 
  def off
    player = $game_map.events[@id]
    @map.x = player.x
    @map.y = player.y
    character = $game_map.events[@id] = @event
    $game_map.events[@id].moveto(player.x,player.y)
    $game_map.map.events[@id] = @map
    character = $game_map.events[@id] = @event
    $scene.spriteset.character_sprites.each {|sprite|
    # if sprite found
    if sprite.character == character
      # set new character
      sprite.dispose
      sprite.character = player
      # update sprite
      sprite.update
      # event found, stop here
      break
    end}
    $game_player.following = false
    $game_player.center($game_player.y,$game_player.y)
  end
 
end

$event = Event.new

class Game_Event_Player < Game_Character
 
  attr_accessor :off
 
  def initialize(event)
  super()
    moveto(event.x,event.y)
    @last_event = event
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 定数
  #--------------------------------------------------------------------------
  CENTER_X = (320 - 16) * 4   # 画面中央の X 座標 * 4
  CENTER_Y = (240 - 16) * 4   # 画面中央の Y 座標 * 4
  #--------------------------------------------------------------------------
  # ● 通行可能判定
  #     x : X 座標
  #     y : Y 座標
  #     d : 方向 (0,2,4,6,8)  ※ 0 = 全方向通行不可の場合を判定 (ジャンプ用)
  #--------------------------------------------------------------------------
  def passable?(x, y, d)
    # 新しい座標を求める
    new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
    new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
    # 座標がマップ外の場合
    unless $game_map.valid?(new_x, new_y)
      # 通行不可
      return false
    end
    # デバッグモードが ON かつ CTRL キーが押されている場合
    if $DEBUG and Input.press?(Input::CTRL)
      # 通行可
      return true
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● 画面中央に来るようにマップの表示位置を設定
  #--------------------------------------------------------------------------
  def center(x, y)
    max_x = ($game_map.width - 20) * 128
    max_y = ($game_map.height - 15) * 128
    $game_map.display_x = [0, [x * 128 - CENTER_X, max_x].min].max
    $game_map.display_y = [0, [y * 128 - CENTER_Y, max_y].min].max
  end
  def starting
    return false
  end
  def need_update?
    return false
  end
  #--------------------------------------------------------------------------
  # ● 指定位置に移動
  #     x : X 座標
  #     y : Y 座標
  #--------------------------------------------------------------------------
  def moveto(x, y)
    super
    # センタリング
    center(x, y)
    # エンカウント カウントを作成
    make_encounter_count
  end
  #--------------------------------------------------------------------------
  # ● 歩数増加
  #--------------------------------------------------------------------------
  def increase_steps
    super
    # 移動ルート強制中ではない場合
    unless @move_route_forcing
      # 歩数増加
      $game_party.increase_steps
      # 歩数が偶数の場合
      if $game_party.steps % 2 == 0
        # スリップダメージチェック
        $game_party.check_map_slip_damage
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● エンカウント カウント取得
  #--------------------------------------------------------------------------
  def encounter_count
    return @encounter_count
  end
  #--------------------------------------------------------------------------
  # ● エンカウント カウント作成
  #--------------------------------------------------------------------------
  def make_encounter_count
    # サイコロを 2 個振るイメージ
    if $game_map.map_id != 0
      n = $game_map.encounter_step
      @encounter_count = rand(n) + rand(n) + 1
    end
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    @character_name = @last_event.pages[0].graphic.character_name
    @character_hue  = @last_event.pages[0].graphic.character_hue
    # 不透明度と合成方法を初期化
    @opacity = 255
    @blend_type = 0
  end
  #--------------------------------------------------------------------------
  # ● 同位置のイベント起動判定
  #--------------------------------------------------------------------------
  def check_event_trigger_here(triggers)
    result = false
    # イベント実行中の場合
    if $game_system.map_interpreter.running?
      return result
    end
    # 全イベントのループ
    return result
  end
  #--------------------------------------------------------------------------
  # ● 正面のイベント起動判定
  #--------------------------------------------------------------------------
  def check_event_trigger_there(triggers)
    result = false
    # イベント実行中の場合
    if $game_system.map_interpreter.running?
      return result
    end
    # 正面の座標を計算
    new_x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
    new_y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
    # 全イベントのループ
    for event in $game_map.events.values
      # イベントの座標とトリガーが一致した場合
      if event.x == new_x and event.y == new_y and
         triggers.include?(event.trigger)
        # ジャンプ中以外で、起動判定が正面のイベントなら
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    # 該当するイベントが見つからなかった場合
    if result == false
      # 正面のタイルがカウンターなら
      if $game_map.counter?(new_x, new_y)
        # 1 タイル奥の座標を計算
        new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
        new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
        # 全イベントのループ
        for event in $game_map.events.values
          # イベントの座標とトリガーが一致した場合
          if event.x == new_x and event.y == new_y and
             triggers.include?(event.trigger)
            # ジャンプ中以外で、起動判定が正面のイベントなら
            if not event.jumping? and not event.over_trigger?
              event.start
              result = true
            end
          end
        end
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ● 接触イベントの起動判定
  #--------------------------------------------------------------------------
  def check_event_trigger_touch(x, y)
    result = false
    # イベント実行中の場合
    if $game_system.map_interpreter.running?
      return result
    end
    # 全イベントのループ
    for event in $game_map.events.values
      # イベントの座標とトリガーが一致した場合
      if event.x == x and event.y == y and [1,2].include?(event.trigger)
        # ジャンプ中以外で、起動判定が正面のイベントなら
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # ローカル変数に移動中かどうかを記憶
    last_moving = moving?
    # 移動中、イベント実行中、移動ルート強制中、
    # メッセージウィンドウ表示中のいずれでもない場合
    unless moving? or $game_system.map_interpreter.running? or
           @move_route_forcing or $game_temp.message_window_showing
      # 方向ボタンが押されていれば、その方向へプレイヤーを移動
      case Input.dir4
      when 2
        move_down
      when 4
        move_left
      when 6
        move_right
      when 8
        move_up
      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
          # デバッグモードが ON かつ CTRL キーが押されている場合を除き
          unless $DEBUG and Input.press?(Input::CTRL)
            # エンカウント カウントダウン
            if @encounter_count > 0
              @encounter_count -= 1
            end
          end
        end
      end
      # C ボタンが押された場合
      if Input.trigger?(Input::C)
        # 同位置および正面のイベント起動判定
        check_event_trigger_here([0])
        check_event_trigger_there([0,1,2])
      end
    end
  end
end


class Game_Player
  attr_accessor :following
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # ローカル変数に移動中かどうかを記憶
    last_moving = moving?
    # 移動中、イベント実行中、移動ルート強制中、
    # メッセージウィンドウ表示中のいずれでもない場合
    if !@following
      unless moving? or $game_system.map_interpreter.running? or
             @move_route_forcing or $game_temp.message_window_showing
        # 方向ボタンが押されていれば、その方向へプレイヤーを移動
        case Input.dir4
        when 2
          move_down
        when 4
          move_left
        when 6
          move_right
        when 8
          move_up
        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
    else
      super
    end
    # 移動中ではない場合
    unless moving?
      # 前回プレイヤーが移動中だった場合
      if last_moving
        # 同位置のイベントとの接触によるイベント起動判定
        result = check_event_trigger_here([1,2])
        # 起動したイベントがない場合
        if result == false
          # デバッグモードが ON かつ CTRL キーが押されている場合を除き
          unless $DEBUG and Input.press?(Input::CTRL)
            # エンカウント カウントダウン
            if @encounter_count > 0
              @encounter_count -= 1
            end
          end
        end
      end
      # C ボタンが押された場合
      if Input.trigger?(Input::C)
        # 同位置および正面のイベント起動判定
        check_event_trigger_here([0])
        check_event_trigger_there([0,1,2])
      end
    end
  end
end

class Game_Character
 
  #--------------------------------------------------------------------------
  # ● プレイヤーの方を向く
  #--------------------------------------------------------------------------
  def turn_toward_player
    t = ($game_player.following ? $game_map.events[$event.id] : $game_player)
    # プレイヤーの座標との差を求める
    sx = @x - t.x
    sy = @y - t.y
    # 座標が等しい場合
    if sx == 0 and sy == 0
      return
    end
    # 横の距離のほうが長い場合
    if sx.abs > sy.abs
      # 左右方向でプレイヤーのいるほうを向く
      sx > 0 ? turn_left : turn_right
    # 縦の距離のほうが長い場合
    else
      # 上下方向でプレイヤーのいるほうを向く
      sy > 0 ? turn_up : turn_down
    end
  end
 
end
Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script


nathmatt

fixed

Spoiler: ShowHide
class Event
  attr_reader   :id

  def on(id)
    @id = id
    @map = $game_map.map.events[@id]
    character = @event = $game_map.events[@id]
    $game_map.events[@id] = Game_Event_Player.new(@map)
    $scene.spriteset.character_sprites.each {|sprite|
    # if sprite found
    if sprite.character == character
      # set new character
      sprite.character = $game_map.events[@id]
      # update sprite
      sprite.update
      # event found, stop here
      break
    end}
    $game_player.following = true
  end
 
  def off
    player = $game_map.events[@id]
    @map.x = player.x
    @map.y = player.y
    character = $game_map.events[@id] = @event
    $game_map.events[@id].moveto(player.x,player.y)
    $game_map.map.events[@id] = @map
    character = $game_map.events[@id] = @event
    $scene.spriteset.character_sprites.each {|sprite|
    # if sprite found
    if sprite.character == character
      # set new character
      sprite.dispose
      sprite.character = player
      # update sprite
      sprite.update
      # event found, stop here
      break
    end}
    $game_player.following = false
    $game_player.center($game_player.y,$game_player.y)
  end
 
end

$event = Event.new

class Game_Event_Player < Game_Character
 
  attr_accessor :off
 
  def initialize(event)
  super()
    moveto(event.x,event.y)
    center(event.x,event.y)
    @last_event = event
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 定数
  #--------------------------------------------------------------------------
  CENTER_X = (320 - 16) * 4   # 画面中央の X 座標 * 4
  CENTER_Y = (240 - 16) * 4   # 画面中央の Y 座標 * 4
  #--------------------------------------------------------------------------
  # ● 通行可能判定
  #     x : X 座標
  #     y : Y 座標
  #     d : 方向 (0,2,4,6,8)  ※ 0 = 全方向通行不可の場合を判定 (ジャンプ用)
  #--------------------------------------------------------------------------
  def passable?(x, y, d)
    # 新しい座標を求める
    new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
    new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
    # 座標がマップ外の場合
    unless $game_map.valid?(new_x, new_y)
      # 通行不可
      return false
    end
    # デバッグモードが ON かつ CTRL キーが押されている場合
    if $DEBUG and Input.press?(Input::CTRL)
      # 通行可
      return true
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● 画面中央に来るようにマップの表示位置を設定
  #--------------------------------------------------------------------------
  def center(x, y)
    max_x = ($game_map.width - 20) * 128
    max_y = ($game_map.height - 15) * 128
    $game_map.display_x = [0, [x * 128 - CENTER_X, max_x].min].max
    $game_map.display_y = [0, [y * 128 - CENTER_Y, max_y].min].max
  end
  def starting
    return false
  end
  def need_update?
    return false
  end
  #--------------------------------------------------------------------------
  # ● 指定位置に移動
  #     x : X 座標
  #     y : Y 座標
  #--------------------------------------------------------------------------
  def moveto(x, y)
    super
    # センタリング
    center(x, y)
    # エンカウント カウントを作成
    make_encounter_count
  end
  #--------------------------------------------------------------------------
  # ● 歩数増加
  #--------------------------------------------------------------------------
  def increase_steps
    super
    # 移動ルート強制中ではない場合
    unless @move_route_forcing
      # 歩数増加
      $game_party.increase_steps
      # 歩数が偶数の場合
      if $game_party.steps % 2 == 0
        # スリップダメージチェック
        $game_party.check_map_slip_damage
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● エンカウント カウント取得
  #--------------------------------------------------------------------------
  def encounter_count
    return @encounter_count
  end
  #--------------------------------------------------------------------------
  # ● エンカウント カウント作成
  #--------------------------------------------------------------------------
  def make_encounter_count
    # サイコロを 2 個振るイメージ
    if $game_map.map_id != 0
      n = $game_map.encounter_step
      @encounter_count = rand(n) + rand(n) + 1
    end
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    @character_name = @last_event.pages[0].graphic.character_name
    @character_hue  = @last_event.pages[0].graphic.character_hue
    # 不透明度と合成方法を初期化
    @opacity = 255
    @blend_type = 0
  end
  #--------------------------------------------------------------------------
  # ● 同位置のイベント起動判定
  #--------------------------------------------------------------------------
  def check_event_trigger_here(triggers)
    result = false
    # イベント実行中の場合
    if $game_system.map_interpreter.running?
      return result
    end
    # 全イベントのループ
    return result
  end
  #--------------------------------------------------------------------------
  # ● 正面のイベント起動判定
  #--------------------------------------------------------------------------
  def check_event_trigger_there(triggers)
    result = false
    # イベント実行中の場合
    if $game_system.map_interpreter.running?
      return result
    end
    # 正面の座標を計算
    new_x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
    new_y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
    # 全イベントのループ
    for event in $game_map.events.values
      # イベントの座標とトリガーが一致した場合
      if event.x == new_x and event.y == new_y and
         triggers.include?(event.trigger)
        # ジャンプ中以外で、起動判定が正面のイベントなら
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    # 該当するイベントが見つからなかった場合
    if result == false
      # 正面のタイルがカウンターなら
      if $game_map.counter?(new_x, new_y)
        # 1 タイル奥の座標を計算
        new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
        new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
        # 全イベントのループ
        for event in $game_map.events.values
          # イベントの座標とトリガーが一致した場合
          if event.x == new_x and event.y == new_y and
             triggers.include?(event.trigger)
            # ジャンプ中以外で、起動判定が正面のイベントなら
            if not event.jumping? and not event.over_trigger?
              event.start
              result = true
            end
          end
        end
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ● 接触イベントの起動判定
  #--------------------------------------------------------------------------
  def check_event_trigger_touch(x, y)
    result = false
    # イベント実行中の場合
    if $game_system.map_interpreter.running?
      return result
    end
    # 全イベントのループ
    for event in $game_map.events.values
      # イベントの座標とトリガーが一致した場合
      if event.x == x and event.y == y and [1,2].include?(event.trigger)
        # ジャンプ中以外で、起動判定が正面のイベントなら
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # ローカル変数に移動中かどうかを記憶
    last_moving = moving?
    # 移動中、イベント実行中、移動ルート強制中、
    # メッセージウィンドウ表示中のいずれでもない場合
    unless moving? or $game_system.map_interpreter.running? or
           @move_route_forcing or $game_temp.message_window_showing
      # 方向ボタンが押されていれば、その方向へプレイヤーを移動
      case Input.dir4
      when 2
        move_down
      when 4
        move_left
      when 6
        move_right
      when 8
        move_up
      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
          # デバッグモードが ON かつ CTRL キーが押されている場合を除き
          unless $DEBUG and Input.press?(Input::CTRL)
            # エンカウント カウントダウン
            if @encounter_count > 0
              @encounter_count -= 1
            end
          end
        end
      end
      # C ボタンが押された場合
      if Input.trigger?(Input::C)
        # 同位置および正面のイベント起動判定
        check_event_trigger_here([0])
        check_event_trigger_there([0,1,2])
      end
    end
  end
end


class Game_Player
  attr_accessor :following
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # ローカル変数に移動中かどうかを記憶
    last_moving = moving?
    # 移動中、イベント実行中、移動ルート強制中、
    # メッセージウィンドウ表示中のいずれでもない場合
    if !@following
      unless moving? or $game_system.map_interpreter.running? or
             @move_route_forcing or $game_temp.message_window_showing
        # 方向ボタンが押されていれば、その方向へプレイヤーを移動
        case Input.dir4
        when 2
          move_down
        when 4
          move_left
        when 6
          move_right
        when 8
          move_up
        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
    else
      super
    end
    # 移動中ではない場合
    unless moving?
      # 前回プレイヤーが移動中だった場合
      if last_moving
        # 同位置のイベントとの接触によるイベント起動判定
        result = check_event_trigger_here([1,2])
        # 起動したイベントがない場合
        if result == false
          # デバッグモードが ON かつ CTRL キーが押されている場合を除き
          unless $DEBUG and Input.press?(Input::CTRL)
            # エンカウント カウントダウン
            if @encounter_count > 0
              @encounter_count -= 1
            end
          end
        end
      end
      # C ボタンが押された場合
      if Input.trigger?(Input::C)
        # 同位置および正面のイベント起動判定
        check_event_trigger_here([0])
        check_event_trigger_there([0,1,2])
      end
    end
  end
end

class Game_Character
 
  #--------------------------------------------------------------------------
  # ● プレイヤーの方を向く
  #--------------------------------------------------------------------------
  def turn_toward_player
    t = ($game_player.following ? $game_map.events[$event.id] : $game_player)
    # プレイヤーの座標との差を求める
    sx = @x - t.x
    sy = @y - t.y
    # 座標が等しい場合
    if sx == 0 and sy == 0
      return
    end
    # 横の距離のほうが長い場合
    if sx.abs > sy.abs
      # 左右方向でプレイヤーのいるほうを向く
      sx > 0 ? turn_left : turn_right
    # 縦の距離のほうが長い場合
    else
      # 上下方向でプレイヤーのいるほうを向く
      sy > 0 ? turn_up : turn_down
    end
  end
 
end
Join Dead Frontier
Sorry, I will no longer be scripting for RMXP. I may or may not give support for my scripts. I don't have the will to script in RGSS anymore.
My script