조회 수 439 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

횡스크롤 스크립트는 이걸사용해요


#===============================================================================

# Pixel Platformer v1.0 by G@MeF@Ce 7/11/2011 "GPLAT 1 of 2" www.gameface101.com

#-------------------------------------------------------------------------------

# Original Pixel Movement Script by Cogwheel from 66rpg.com

# special thanks to mr_wiggles and moghunter for RGSS support

#

# *free to use, must give credit to www.gameface101.com

# Do not post this script on any other site

#==============================================================================


module G101_GPLAT

  #--------------------------------------------------------------------------

  # * configure settings

  #--------------------------------------------------------------------------


  GPLAT_DISABLE_SWITCH = 1        # switch ID to disable gravity switch

  #

  PIXEL_MOVE = true                # pixel movement & jump

  

  #SPRITE settings

  UP    = 48                      #default 48 (0 < UP < 63)

  DOWN  = 0                      #default 16 (0 < DOWN <63)

  SIDE  = 32                      #default 32 (0 < SIDE <63)

  

  #SPEED settings

  DASH_BUTTON = Input::C          # dash button

  WALK_SPEED = 4.5                # set the walk speed

  DASH_SPEED = 5.0                # set the dash speed

  

  #JUMP settings

  JUMP_BUTTON = Input::A          # jump button

  JUMP_SPRITE = "_jump"            # jump graphic character name suffix

  JUMP_ANIMATION_ID  = 0        # animation ID when jump

  JUMP_ADD = 4                    # height of single jump

  JUMP_SOUND = "017-Jump03"    # Play Sound when jump

  JUMP_VOLUME = 70                # set volume for jump sound

  JUMP_PITCH = 100                # set the pitch for jump sound


  #AIR JUMP settings

  AIR_JUMP_VAR = 1                # variable ID to set value for air jumps

  AIR_JUMP_ANIMATION_ID = 230       # aniamtion ID when air jump

  

end


#==============================================================================

# Game_Player

#==============================================================================

class Game_Player < Game_Character

  include G101_GPLAT

  #--------------------------------------------------------------------------

  # ● public instances

  #--------------------------------------------------------------------------

  attr_reader  :event                    

  attr_accessor :move_speed

  attr_accessor :revise_x

  attr_accessor :revise_y


  #--------------------------------------------------------------------------

  # ● Initialize

  #--------------------------------------------------------------------------

  def initialize

    super

    @jumpnow = 0 

    @twojump = 0

    @apassed = false

    @revise_x = 0

    @revise_y = 0

    @move = false

    @correct_height = false

  end

  #--------------------------------------------------------------------------

  # ● Update

  #--------------------------------------------------------------------------

  alias :update_original :update

  def update

    

    @walk  = WALK_SPEED

    @dash  = DASH_SPEED

    @event_run = 4 #testing...

    @dot_m = PIXEL_MOVE

#-------------------------------------------------------------------------------

    unless moving? or $game_system.map_interpreter.running? or

            @move_route_forcing or $game_temp.message_window_showing

            

      if @walk != @dash

        if Input.press?(DASH_BUTTON)

          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

    @correct_height = false

  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

          $game_switches[GPLAT_DISABLE_SWITCH] ? move_lower_left_p : move_left_p

        when 2

          move_down_p if $game_switches[GPLAT_DISABLE_SWITCH] 

        when 3

        $game_switches[GPLAT_DISABLE_SWITCH] ? move_lower_right_p : move_right_p

        when 4

          move_left_p

        when 6

          move_right_p

        when 7

        $game_switches[GPLAT_DISABLE_SWITCH] ? move_upper_left_p : move_left_p

        when 8

        move_up_p if $game_switches[GPLAT_DISABLE_SWITCH] 

        when 9

        $game_switches[GPLAT_DISABLE_SWITCH] ? move_upper_right_p : move_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 == true

        if (last_real_x / 128.0).round != @x and

            (last_real_y / 128.0).round != @y

          if @direction == 2 or @direction == 8

            if (last_real_x / 128.0).round > @x

              turn_left

            else

              turn_right

            end

          else

            if (last_real_y / 128.0).round > @y

              turn_up

            else

              turn_down

            end

          end

        elsif (last_real_x / 128.0).round > @x

          turn_left

        elsif (last_real_x / 128.0).round < @x

          turn_right

        elsif (last_real_y / 128.0).round > @y

          turn_up

        elsif (last_real_y / 128.0).round < @y

          turn_down

        end

      end

      if result == false

        unless $DEBUG and Input.press?(Input::CTRL)

          if @encounter_count > 0

            @encounter_count -= 1

          end

        end

      end

    end

        jump_max = (JUMP_ADD + 6) * 10

#-------------------------------------------------------------------------------

    unless moving? or $game_system.map_interpreter.running? or

        @move_route_forcing or $game_temp.message_window_showing

        

    if Input.press?(JUMP_BUTTON) and not $game_switches[GPLAT_DISABLE_SWITCH]

      @twojump = 1 if @twojump == 0 and down1(((@x * 128 + @revise_x) / 128.0).round,

          ((@y * 128 + @revise_y) / 128.0).round, 5, true)

      if (not @apassed) and @twojump <= $game_variables[AIR_JUMP_VAR]

        

        if @twojump > 0

          $game_player.animation_id = AIR_JUMP_ANIMATION_ID

        elsif

          $game_player.animation_id = JUMP_ANIMATION_ID

        end


        @apassed = true

        @jumpnow = jump_max 

        @twojump += 1


        # Play jump sound

        $game_system.se_play(RPG::AudioFile.new(JUMP_SOUND, JUMP_VOLUME, JUMP_PITCH))

      else

        @jumpnow += 3

      end

    else

      @apassed = false

    end

    end

#-------------------------------------------------------------------------------

    if not $game_switches[GPLAT_DISABLE_SWITCH]

      @jumpnow -= 10 

      if @jumpnow < 0

        actor = $game_party.actors[0]

        @character_name = actor.character_name #change graphic back to normal

        @jumpnow = [@jumpnow, -jump_max].max

        if not down1(((@x * 128 + @revise_x) / 128.0).round,

          ((@y * 128 + @revise_y) / 128.0).round, -@jumpnow, true)

          @jumpnow = 0

          @twojump = 0

        end

      elsif @jumpnow > 0

        actor = $game_party.actors[0]

        @character_name = actor.character_name + JUMP_SPRITE#change to jump graphic

        @jumpnow = [@jumpnow, jump_max].min

        if not up1(((@x * 128 + @revise_x) / 128.0).round,

          ((@y * 128 + @revise_y) / 128.0).round, @jumpnow, true)

          @jumpnow = 0

        end

      end

    end

#-------------------------------------------------------------------------------

    if Input.trigger?(Input::C)

      check_event_trigger_here([0])

      check_event_trigger_there([0,1,2])

    end

  end


  #--------------------------------------------------------------------------

  # ● Moving?

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● moving_a?

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● update_jump

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● move type custom

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● move down p

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● move down aaaagq  ???

  #--------------------------------------------------------------------------  

  def move_down_aaaagq

    distance = 2 ** @move_speed

    down1(((@x * 128 + @revise_x) / 128.0).round,

          ((@y * 128 + @revise_y) / 128.0).round, distance, true)

  end


  #--------------------------------------------------------------------------

  # ● down1

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● down2

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● move left p

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● left 1

  #--------------------------------------------------------------------------  

  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 and $game_switches[GPLAT_DISABLE_SWITCH]

      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 and $game_switches[GPLAT_DISABLE_SWITCH]

      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


  #--------------------------------------------------------------------------

  # ● left2

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● move right p

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● right1

  #--------------------------------------------------------------------------

  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 and $game_switches[GPLAT_DISABLE_SWITCH]

      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 and $game_switches[GPLAT_DISABLE_SWITCH]

      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


  #--------------------------------------------------------------------------

  # ● right2

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● move up p

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● move up aaaagq ???

  #--------------------------------------------------------------------------  

  def move_up_aaaagq

    distance = 2 ** @move_speed

    up1(((@x * 128 + @revise_x) / 128.0).round,

        ((@y * 128 + @revise_y) / 128.0).round, distance, true)

  end


  #--------------------------------------------------------------------------

  # ● up1

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● up2

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● move lower left p

  #--------------------------------------------------------------------------

  def move_lower_left_p

    unless @direction_fix

      @direction = (@direction == 6 ? 4 : @direction == 8 ? 2 : @direction)

    end

    distance = (2 ** @move_speed) / Math.sqrt(2)

    if @direction == 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

    else

      turn_down unless left1(((@x * 128 + @revise_x) / 128.0).round,

                              ((@y * 128 + @revise_y) / 128.0).round, distance)

      turn_left if @event_run

      unless @event_run

        if last_move?(@real_x, @real_y, 4, distance)

          result = check_event_trigger_here([1,2], false)

          if result == true

            return

          end

        end

        move_on

        if  @revise_x + distance> SIDE and -SIDE > @revise_x

          @revise_x = -SIDE

        end

        turn_left unless down1(((@x * 128 + @revise_x) / 128.0).round,

                              ((@y * 128 + @revise_y) / 128.0).round, distance)

        turn_down if @event_run

      end

    end

  end


  #--------------------------------------------------------------------------

  # ● move lower right p

  #--------------------------------------------------------------------------

  def move_lower_right_p

    unless @direction_fix

      @direction = (@direction == 4 ? 6 : @direction == 8 ? 2 : @direction)

    end

    distance = (2 ** @move_speed) / Math.sqrt(2)

    if @direction == 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

    else

      turn_down unless right1(((@x * 128 + @revise_x) / 128.0).round,

                              ((@y * 128 + @revise_y) / 128.0).round, distance)

      turn_right if @event_run

      unless @event_run

        if last_move?(@real_x, @real_y, 6, distance)

          result = check_event_trigger_here([1,2], false)

          if result == true

            return

          end

        end

        move_on

        if @revise_x > SIDE and -SIDE > @revise_x - distance

          @revise_x = SIDE

        end

        turn_right unless down1(((@x * 128 + @revise_x) / 128.0).round,

                              ((@y * 128 + @revise_y) / 128.0).round, distance)

        turn_down if @event_run

      end

    end

  end


  #--------------------------------------------------------------------------

  # ● move upper left p

  #--------------------------------------------------------------------------

  def move_upper_left_p

    unless @direction_fix

      @direction = (@direction == 6 ? 4 : @direction == 2 ? 8 : @direction)

    end

    distance = (2 ** @move_speed) / Math.sqrt(2)

    if @direction == 8

      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

    else

      turn_up unless left1(((@x * 128 + @revise_x) / 128.0).round,

                            ((@y * 128 + @revise_y) / 128.0).round, distance)

      turn_left if @event_run

      unless @event_run

        if last_move?(@real_x, @real_y, 4, distance)

          result = check_event_trigger_here([1,2], false)

          if result == true

            return

          end

        end

        move_on

        if @revise_x > SIDE and -SIDE > @revise_x - distance

          @revise_x = SIDE

        end

        turn_left unless up1(((@x * 128 + @revise_x) / 128.0).round,

                              ((@y * 128 + @revise_y) / 128.0).round, distance)

        turn_up if @event_run

      end

    end

  end


  #--------------------------------------------------------------------------

  # ● move upper right p

  #--------------------------------------------------------------------------

  def move_upper_right_p

    unless @direction_fix

      @direction = (@direction == 4 ? 6 : @direction == 2 ? 8 : @direction)

    end

    distance = (2 ** @move_speed) / Math.sqrt(2)

    if @direction == 8

      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

    else

      turn_up unless right1(((@x * 128 + @revise_x) / 128.0).round,

                            ((@y * 128 + @revise_y) / 128.0).round, distance)

      turn_right if @event_run

      unless @event_run

        if last_move?(@real_x, @real_y, 6, distance)

          result = check_event_trigger_here([1,2], false)

          if result == true

            return

          end

        end

        move_on

        if @revise_x > SIDE and -SIDE > @revise_x - distance

          @revise_x = SIDE

        end

        turn_right unless up1(((@x * 128 + @revise_x) / 128.0).round,

                              ((@y * 128 + @revise_y) / 128.0).round, distance)

        turn_up if @event_run

      end

    end

  end


  #--------------------------------------------------------------------------

  # ● check event triggers

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● move on

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● anime update

  #--------------------------------------------------------------------------

  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


  #--------------------------------------------------------------------------

  # ● move to aliased

  #--------------------------------------------------------------------------

  alias :moveto_original :moveto

  def moveto(x, y)

    @revise_x = 0

    @revise_y = 0

    moveto_original(x, y)

  end


  #--------------------------------------------------------------------------

  # ● last move?

  #--------------------------------------------------------------------------

  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

#end 


근데 사다리를 못타겠네요 ㅠㅠ

  • ?
    닉네임이없습니다 2011.10.16 11:09

    죄송합니다만...

    질문글은 이곳에 올리는게 아닙니다.

     

    게시판 상단에 나와있듯, 글 이동시킬 수 있다고하네요

     


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 질문전에 반드시 읽어주세요! 독도2005 2009.05.14 597
521 XP압축파일 실행오류와 스크립트에디터 한국어 부분... 소소 2012.01.11 559
520 커먼이벤트, 1회 발동 후에 영구삭제 하는 법? 2 Scarf 2012.01.04 297
519 아디안 서버 제작오류 관련.. Scarf 2011.12.29 278
518 액션알피지 만드는법 1 강군의신 2011.12.17 419
517 액션알피지 만들던 중...... file XP 팬 2011.12.10 299
516 아오오니 처럼 방 넘어가도 따라가는거 어떻게하죠?쉽게.. wnsdn1535 2011.12.06 460
515 게임을 제작중일때도 BGM이 안들리고, 게임을 테스트할때도 BGM이 안들립니다. 2 초코빵! 2011.11.27 229
514 해결 부탁해 주세요. 송현승 2011.11.17 276
513 계속 스크립트 오류가 뜹니다. 올려놓을테니 한번 보십시오 챔피언 2011.11.16 329
512 타이틀 시자하기 전에 사진이나 그림 넣는 방법 1 챔피언 2011.11.08 348
511 게시판에 그림 첨부 방법 1 jjolla22 2011.11.01 325
510 배틀러그래픽 1 file gardsfg 2011.10.31 335
509 주인공 말고 이벤트가 다른 이벤트에 갈 수는 없나요? 1 jjolla22 2011.10.30 340
508 Rpg들이 안깔림100Nio겁니다. 1 광명-_竅 2011.10.20 258
» 사다리타는법좀요 ㅠㅠ 1 상훈 2011.10.15 439
506 처음시작할때직업선택방법..;; 1 알피지만들러옴 2011.10.11 397
505 RPG VX에서 저장, 세이브 화면에 주인공 이름 출력 어떻게 하죠? 1 file LCS 2011.10.09 904
504 RPG XP로 만든 게임을 상대방이 RTP 없이 실행할 수 있게 할 수 있나요? 1 LCS 2011.10.03 560
503 착용템마다 다른 캐릭터 1 상훈 2011.10.03 324
502 제작 오류입니다..오류 메세지가 뜨네요.. 2 file 은하계 2011.08.22 217
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 30 Next
/ 30

Copyright ⓒ Nioting All Rights Reserved. (since 1999)    개인정보
        

Fatal error: Cannot access property sessionController::$lifetime in /web/old/xe/modules/session/session.controller.php on line 45