Hi!

Wie kann ich zwei unterschiedliche Skripte verwenden, wenn diese die gleichen Variable benutzen müssen? Ich bin Neu-Einsteiger in Skripte schreiben und habe angefangen Ruby zu lernen. Am Besten füge ich die beiden Skripte hier ein:

Code:
#==============================================================================
# ¡ Zelda-Style Map Scrolling
#------------------------------------------------------------------------------
# Script by Minkoff
#==============================================================================
class New_Game_Player < Game_Character
 #--------------------------------------------------------------------------
 # œ Update
 #--------------------------------------------------------------------------
 def update
   last_moving = moving?
   unless moving? or $game_system.map_interpreter.running? or
          @move_route_forcing or $game_temp.message_window_showing or @disable_input
     case Input.dir4
     when 2
       move_down
     when 4
       move_left
     when 6
       move_right
     when 8
       move_up
     end
   end
   super
   #------------------------------------------------------------------------
   if @direction == 6 and # Player Facing Right
   @real_x % 2560 == 0 and
   @real_x > $game_map.display_x and
   $game_map.display_x != @last_display_x
     @last_display_x = $game_map.display_x
     $game_map.scroll_right(128)
     @disable_input = true
   elsif @direction == 4 and # Player Facing Left
   @real_x % (2560 - 128) == 0 and
   ($game_map.display_x - @real_x).abs < (2560 - 128) and
   $game_map.display_x != @last_display_x
     @last_display_x = $game_map.display_x
     $game_map.scroll_left(128)
     @disable_input = true
   elsif @direction == 2 and # Player Facing Down
   @real_y % 1920 == 0 and
   @real_y > $game_map.display_y and
   $game_map.display_y != @last_display_y
     @last_display_y = $game_map.display_y
     $game_map.scroll_down(128)
     @disable_input = true
   elsif @direction == 8 and # Player Facing Up
   @real_y % (1920 - 128) == 0 and
   ($game_map.display_y - @real_y).abs < (1920 - 128) and
   $game_map.display_y != @last_display_y
     @last_display_y = $game_map.display_y
     $game_map.scroll_up(128)
     @disable_input = true
   else
     @disable_input = false
     @last_display_x = nil
     @last_display_y = nil
   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
end
Code:
# http://members.jcom.home.ne.jp/cogwheel/
#==============================================================================
# Game_Player
#==============================================================================
class Game_Player < Game_Character
UP      = 0
DOWN  = 0
SIDE  = 0
SLANT = false
#--------------------------------------------------------------------------
attr_reader   :event
attr_accessor :move_speed
#--------------------------------------------------------------------------
alias :update_original :update
def update
  @walk  = 4
  @dash  = 5
  @event = 4
  @dot_m = true
  unless moving? or $game_system.map_interpreter.running? or
                  @move_route_forcing or $game_temp.message_window_showing
        if @walk != @dash
          if Input.press?(Input::C)
                if @move_speed != @dash
                  @move_speed = @dash
                end
          else
                if @move_speed != @walk
                  @move_speed = @walk
                end
          end
        end
  end
  if @revise_x == nil and @revise_y == nil
        @revise_x = 0
        @revise_y = 0
  end
  unless @dot_m
        update_original
        return
  end
  if @move_route_forcing
        last_moving = moving?
        last_real_x = @real_x
        last_real_y = @real_y
        if (@revise_x != 0 or @revise_y != 0) and not jumping? and @move == true
          if @revise_x != @real_x - @x * 128 or @revise_y != @real_y - @y * 128
                @revise_x = @real_x - @x * 128
                @revise_y = @real_y - @y * 128
          end
          distance1 = 2 ** @move_speed
          distance2 = Math.sqrt(@revise_x ** 2 + @revise_y ** 2)
          if distance1 > distance2
                @real_x = @real_x - @revise_x
                @real_y = @real_y - @revise_y
                @revise_x = 0
                @revise_y = 0
                anime_update
          else
                @real_x -= (distance1 * @revise_x / distance2).round
                @real_y -= (distance1 * @revise_y / distance2).round
                @revise_x = @real_x - @x * 128
                @revise_y = @real_y - @y * 128
                anime_update
          end
        else
          super
        end
  else
        @move = false
        unless moving? or $game_system.map_interpreter.running? or
                   @move_route_forcing or $game_temp.message_window_showing
          @event_run = false
          case Input.dir8
          when 1
                move_lower_left_p
          when 2
                move_down_p
          when 3
                move_lower_right_p
          when 4
                move_left_p
          when 6
                move_right_p
          when 7
                move_upper_left_p
          when 8
                move_up_p
          when 9
                move_upper_right_p
          end
        end
        last_real_x = @real_x
        last_real_y = @real_y
        @real_x = @x * 128 + @revise_x
        @real_y = @y * 128 + @revise_y
        last_moving = moving?
        move_on
        if (last_real_x != @real_x or last_real_y != @real_y)
          @move_distance = 0 if @move_distance == nil
          @move_distance += Math.sqrt((last_real_x - @real_x) ** 2 +
                                                                        (last_real_y - @real_y) ** 2)
          if @move_distance >= 128
                @move_distance %= 128
                increase_steps
          end
          anime_update
        else
          @pattern = 0
        end
  end
  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
  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
#--------------------------------------------------------------------------
def initialize
  @revise_x = 0
  @revise_y = 0
  @move == false
  super
end
#--------------------------------------------------------------------------
def moving?
  unless @dot_m
        result = super
        return result
  end
  if @move_route_forcing
        if @move == false
          return false
        end
        super
  else
        return (@x != (@real_x / 128.0).round or @y != (@real_y / 128.0).round)
  end
end
#--------------------------------------------------------------------------
def moving_a?
  if @move == false
        if (@move_route.list[@move_route_index].code <= 14 or
                @move_route.list[@move_route_index].code == 25)
          @move = true
        end
        return false
  end
  moving?
end
#--------------------------------------------------------------------------
def update_jump
  @jump_count -= 1
  @real_x = (@real_x * @jump_count + @x * 128) / (@jump_count + 1)
  @real_y = (@real_y * @jump_count + @y * 128) / (@jump_count + 1)
  if @jump_count == 0
        @revise_x = 0
        @revise_y = 0
  end
end
#--------------------------------------------------------------------------
def move_type_custom
  unless @dot_m
        super
        return
  end
  if jumping? or moving_a?
        return
  end
  while @move_route_index < @move_route.list.size
        command = @move_route.list[@move_route_index]
        if command.code == 0
          if @move_route.repeat
                @move_route_index = 0
          end
          unless @move_route.repeat
                if @move_route_forcing and not @move_route.repeat
                  @move_route_forcing = false
                  @move_route = @original_move_route
                  @move_route_index = @original_move_route_index
                  @original_move_route = nil
                end
                @stop_count = 0
          end
          return
        end
        if command.code <= 14
          case command.code
          when 1
                move_down
          when 2
                move_left
          when 3
                move_right
          when 4
                move_up
          when 5
                move_lower_left
          when 6
                move_lower_right
          when 7
                move_upper_left
          when 8
                move_upper_right
          when 9
                move_random
          when 10
                move_toward_player
          when 11
                move_away_from_player
          when 12
                move_forward
          when 13
                move_backward
          when 14
                jump(command.parameters[0], command.parameters[1])
          end
          if not @move_route.skippable and not moving? and not jumping?
                return
          end
          @move_route_index += 1
          return
        end
        if command.code == 15
          @wait_count = command.parameters[0] * 2 - 1
          @move_route_index += 1
          return
        end
        if command.code >= 16 and command.code <= 26
          case command.code
          when 16
                turn_down
          when 17
                turn_left
          when 18
                turn_right
          when 19
                turn_up
          when 20
                turn_right_90
          when 21
                turn_left_90
          when 22
                turn_180
          when 23
                turn_right_or_left_90
          when 24
                turn_random
          when 25
                turn_toward_player
          when 26
                turn_away_from_player
          end
          @move_route_index += 1
          return
        end
        if command.code >= 27
          case command.code
          when 27
                $game_switches[command.parameters[0]] = true
                $game_map.need_refresh = true
          when 28
                $game_switches[command.parameters[0]] = false
                $game_map.need_refresh = true
          when 29
                @move_speed = command.parameters[0]
          when 30
                @move_frequency = command.parameters[0]
          when 31
                @walk_anime = true
          when 32
                @walk_anime = false
          when 33
                @step_anime = true
          when 34
                @step_anime = false
          when 35
                @direction_fix = true
          when 36
                @direction_fix = false
          when 37
                @through = true
          when 38
                @through = false
          when 39
                @always_on_top = true
          when 40
                @always_on_top = false
          when 41
                @tile_id = 0
                @character_name = command.parameters[0]
                @character_hue = command.parameters[1]
                if @original_direction != command.parameters[2]
                  @direction = command.parameters[2]
                  @original_direction = @direction
                  @prelock_direction = 0
                end
                if @original_pattern != command.parameters[3]
                  @pattern = command.parameters[3]
                  @original_pattern = @pattern
                end
          when 42
                @opacity = command.parameters[0]
          when 43
                @blend_type = command.parameters[0]
          when 44
                $game_system.se_play(command.parameters[0])
          when 45
                result = eval(command.parameters[0])
          end
          @move_route_index += 1
          return
        end
  end
end
#--------------------------------------------------------------------------
def move_down_p
  turn_down
  distance = 2 ** @move_speed
  down1(((@x * 128 + @revise_x) / 128.0).round,
                ((@y * 128 + @revise_y) / 128.0).round, distance, true)
end
#--------------------------------------------------------------------------
def down1(x, y, distance, down = false)
  result = down2(x, y, distance)
  if result == false
        @event_run = check_event_trigger_touch(x, y+1)
        return result
  end
  if @revise_x < -SIDE
        result = down2(x, y + 1, distance, 4)
        result &= down2(x - 1, y, distance)
        if result == false
          if down
                move_lower_right_p
                if @revise_x > SIDE
                  @revise_x = SIDE
                end
          end
          return result
        end
  elsif @revise_x > SIDE
        result = down2(x, y + 1, distance, 6)
        result &= down2(x + 1, y, distance)
        if result == false
          if down
                move_lower_left_p
                if @revise_x < -SIDE
                  @revise_x = -SIDE
                end
          end
          return result
        end
  end
  @revise_y += distance
  return result
end
#--------------------------------------------------------------------------
def down2(x, y, distance, d = 2)
  if @revise_y + distance > DOWN
        unless passable?(x, y, d)
          if @revise_y < DOWN
                @revise_y = DOWN
          end
          return false
        end
  end
  return true
end
#--------------------------------------------------------------------------
def move_left_p
  turn_left
  distance = 2 ** @move_speed
  left1(((@x * 128 + @revise_x) / 128.0).round,
                ((@y * 128 + @revise_y) / 128.0).round, distance, true)
end
#--------------------------------------------------------------------------
def left1(x, y, distance, left = false)
  result = left2(x, y, distance)
  if result == false
        @event_run = check_event_trigger_touch(x-1, y)
        return result
  end
  if @revise_y < -UP
        result = left2(x - 1, y, distance, 8)
        result &= left2(x, y - 1, distance)
        if result == false
          if left
                move_lower_left_p
                if @revise_y > DOWN
                  @revise_y = DOWN
                end
          end
          return result
        end
  elsif @revise_y > DOWN
        result = left2(x - 1, y, distance, 2)
        result &= left2(x, y + 1, distance)
        if result == false
          if left
                move_upper_left_p
                if @revise_y < -UP
                  @revise_y = -UP
                end
          end
          return result
        end
  end
  @revise_x -= distance
  return result
end
#--------------------------------------------------------------------------
def left2(x, y, distance, d = 4)
  if @revise_x - distance < -SIDE
        unless passable?(x, y, d)
          if @revise_x > -SIDE
                @revise_x = -SIDE
          end
          return false
        end
  end
  return true
end
#--------------------------------------------------------------------------
def move_right_p
        turn_right
  distance = 2 ** @move_speed
  right1(((@x * 128 + @revise_x) / 128.0).round,
                  ((@y * 128 + @revise_y) / 128.0).round, distance, true)
end
#--------------------------------------------------------------------------
def right1(x, y, distance, right = false)
  result = right2(x, y, distance)
  if result == false
        @event_run = check_event_trigger_touch(x+1, y)
        return result
  end
  if @revise_y < -UP
        result = right2(x + 1, y, distance, 8)
        result &= right2(x, y - 1, distance)
        if result == false
          if right
                move_lower_right_p
                if @revise_y > DOWN
                  @revise_y = DOWN
                end
          end
          return result
        end
  elsif @revise_y > DOWN
        result = right2(x + 1, y, distance, 2)
        result &= right2(x, y + 1, distance)
        if result == false
          if right
                move_upper_right_p
                if @revise_y < -UP
                  @revise_y = -UP
                end
          end
          return result
        end
  end
  @revise_x += distance
  return result
end
#--------------------------------------------------------------------------
def right2(x, y, distance, d = 6)
  if @revise_x + distance > SIDE
        unless passable?(x, y, d)
          if @revise_x < SIDE
                @revise_x = SIDE
          end
          return false
        end
  end
  return true
end
#--------------------------------------------------------------------------
def move_up_p
  turn_up
  distance = 2 ** @move_speed
  up1(((@x * 128 + @revise_x) / 128.0).round,
          ((@y * 128 + @revise_y) / 128.0).round, distance, true)
end
#--------------------------------------------------------------------------
def up1(x, y, distance, up = false)
  result = up2(x, y, distance)
  if result == false
        @event_run = check_event_trigger_touch(x, y-1)
        return result
  end
  if @revise_x < -SIDE
        result = up2(x, y - 1, distance, 4)
        result &= up2(x - 1, y, distance)
        if result == false
          if up
                move_upper_right_p
                if @revise_x > SIDE
                  @revise_x = SIDE
                end
          end
          return result
        end
  elsif @revise_x > SIDE
        result = up2(x, y - 1, distance, 6)
        result &= up2(x + 1, y, distance)
        if result == false
          if up
                move_upper_left_p
                if @revise_x < -SIDE
                  @revise_x = -SIDE
                end
          end
          return result
        end
  end
  @revise_y -= distance
  return result
end
#--------------------------------------------------------------------------
def up2(x, y, distance, d = 8)
  if @revise_y - distance < -UP
        unless passable?(x, y, d)
          if @revise_y > -UP
                @revise_y = -UP
          end
          return false
        end
  end
  return true
end
#--------------------------------------------------------------------------
def move_lower_left_p
  unless @direction_fix
        @direction = (@direction == 6 ? 4 : @direction == 8 ? 2 : @direction)
  end
  distance = (2 ** @move_speed) / Math.sqrt(2)
  turn_left unless down1(((@x * 128 + @revise_x) / 128.0).round,
                                                  ((@y * 128 + @revise_y) / 128.0).round, distance)
  turn_down if @event_run
  unless @event_run
        if last_move?(@real_x, @real_y, 2, distance)
          result = check_event_trigger_here([1,2], false)
          if result == true
                return
          end
        end
        move_on
        if @revise_y > DOWN and -UP > @revise_y - distance
          @revise_y = DOWN
        end
        turn_down unless left1(((@x * 128 + @revise_x) / 128.0).round,
                                                  ((@y * 128 + @revise_y) / 128.0).round, distance)
        turn_left if @event_run
  end
end
#--------------------------------------------------------------------------
def move_lower_right_p
  unless @direction_fix
        @direction = (@direction == 4 ? 6 : @direction == 8 ? 2 : @direction)
  end
  distance = (2 ** @move_speed) / Math.sqrt(2)
  turn_right unless down1(((@x * 128 + @revise_x) / 128.0).round,
                                                  ((@y * 128 + @revise_y) / 128.0).round, distance)
  turn_down if @event_run
  unless @event_run
        if last_move?(@real_x, @real_y, 2, distance)
          result = check_event_trigger_here([1,2], false)
          if result == true
                return
          end
        end
        move_on
        if @revise_y > DOWN and -UP > @revise_y - distance
          @revise_y = DOWN
        end
        turn_down unless right1(((@x * 128 + @revise_x) / 128.0).round,
                                                  ((@y * 128 + @revise_y) / 128.0).round, distance)
        turn_right if @event_run
  end
end
#--------------------------------------------------------------------------
def move_upper_left_p
  unless @direction_fix
        @direction = (@direction == 6 ? 4 : @direction == 2 ? 8 : @direction)
  end
  distance = (2 ** @move_speed) / Math.sqrt(2)
  turn_left unless up1(((@x * 128 + @revise_x) / 128.0).round,
                                                ((@y * 128 + @revise_y) / 128.0).round, distance)
  turn_up if @event_run
  unless @event_run
        if last_move?(@real_x, @real_y, 8, distance)
          result = check_event_trigger_here([1,2], false)
          if result == true
                return
          end
        end
        move_on
        if @revise_y + distance > DOWN and -UP > @revise_y
          @revise_y = -UP
        end
        turn_up unless left1(((@x * 128 + @revise_x) / 128.0).round,
                                                  ((@y * 128 + @revise_y) / 128.0).round, distance)
        turn_left if @event_run
  end
end
#--------------------------------------------------------------------------
def move_upper_right_p
  unless @direction_fix
        @direction = (@direction == 4 ? 6 : @direction == 2 ? 8 : @direction)
  end
  distance = (2 ** @move_speed) / Math.sqrt(2)
  turn_right unless up1(((@x * 128 + @revise_x) / 128.0).round,
                                                ((@y * 128 + @revise_y) / 128.0).round, distance)
  turn_up if @event_run
  unless @event_run
        if last_move?(@real_x, @real_y, 8, distance)
          result = check_event_trigger_here([1,2], false)
          if result == true
                return
          end
        end
        move_on
        if @revise_y + distance > DOWN and -UP > @revise_y
          @revise_y = -UP
        end
        turn_up unless right1(((@x * 128 + @revise_x) / 128.0).round,
                                                  ((@y * 128 + @revise_y) / 128.0).round, distance)
        turn_right if @event_run
  end
end
#--------------------------------------------------------------------------
def check_event_trigger_here(triggers, run = true)
  result = false
  if $game_system.map_interpreter.running?
        return result
  end
  for event in $game_map.events.values
        if event.x == ((@x * 128 + @revise_x) / 128.0).round and
                event.y == ((@y * 128 + @revise_y) / 128.0).round and
                triggers.include?(event.trigger)
          if not event.jumping? and event.over_trigger?
                if event.list.size > 1
                  if run == true
                        event.start
                  end
                  result = true
                end
          end
        end
  end
  return result
end
#--------------------------------------------------------------------------
def move_on
  if @y < (@y + @revise_y / 128.0).round
        @y += 1
        @revise_y -= 128
  end
  if @x > (@x + @revise_x / 128.0).round
        @x -= 1
        @revise_x += 128
  end
  if @x < (@x + @revise_x / 128.0).round
        @x += 1
        @revise_x -= 128
  end
  if @y > (@y + @revise_y / 128.0).round
        @y -= 1
        @revise_y += 128
  end
end
#--------------------------------------------------------------------------
def anime_update
  if @walk_anime
        @anime_count += 1.5
  elsif @step_anime
        @anime_count += 1
  end
  if @anime_count > 18 - @move_speed * 2
        if not @step_anime and @stop_count > 0
          @pattern = @original_pattern
        else
          @pattern = (@pattern + 1) % 4
        end
        @anime_count = 0
  end
end
#--------------------------------------------------------------------------
alias :moveto_original :moveto
def moveto(x, y)
  @revise_x = 0
  @revise_y = 0
  moveto_original(x, y)
end
#--------------------------------------------------------------------------
def last_move?(x, y, direction, distance)
  if direction == 2 or direction == 6
        distance *= -1
  end
  if (direction == 2 or direction == 8) and
          (y / 128.0).round != ((y - distance) / 128.0).round
        return true
  end
  if (direction == 4 or direction == 6) and
          (x / 128.0).round != ((x - distance) / 128.0).round
        return true
  end
  return false
end
end

#==============================================================================
# Game_Character
#==============================================================================
class Game_Character
def update_move
  distance = 2 ** @move_speed
  if @x * 128 != @real_x and @y * 128 != @real_y and Game_Player::SLANT
        distance /= Math.sqrt(2)
  end
  if @y * 128 > @real_y
        @real_y = [@real_y + distance, @y * 128].min
  end
  if @x * 128 < @real_x
        @real_x = [@real_x - distance, @x * 128].max
  end
  if @x * 128 > @real_x
        @real_x = [@real_x + distance, @x * 128].min
  end
  if @y * 128 < @real_y
        @real_y = [@real_y - distance, @y * 128].max
  end
  if @walk_anime
        @anime_count += 1.5
  elsif @step_anime
        @anime_count += 1
  end
end
end
#==============================================================================
# Game_Event
#==============================================================================
class Game_Event < Game_Character
def start
  if @list.size > 1
        if $game_player.event != 0
          $game_player.move_speed = $game_player.event
        end
        @starting = true
  end
end
end