VX 스크립트

#==============================================================================
#  ■ Path Finding
#==============================================================================
# Near Fantastica
# Version 1
# 29.11.05
#==============================================================================
# Lets the Player or Event draw a path from an desonation to the source. This
# method is very fast and because the pathfinding is imbedded into the Game
# Character the pathfinding can be interrupted or redrawn at any time.
#==============================================================================
# Player :: $game_player.find_path(x,y)
# Event Script Call :: self.event.find_path(x,y)
# Event Movement Script Call :: self.find_path(x,y)
#==============================================================================
# [VX] Simple Mouse System Note: I edited the method
# character.passable?(x, y, direction) to character.passable?(x, y)
# according to change of this method in VX.
#------------------------------------------------------------------------------

class Game_Character
  #--------------------------------------------------------------------------
  alias nf_pf_game_character_initialize initialize
  alias nf_pf_game_character_update update
  #--------------------------------------------------------------------------
  attr_accessor :map
  attr_accessor :runpath
  #--------------------------------------------------------------------------
  def initialize
    nf_pf_game_character_initialize
    @map = nil
    @runpath = false
  end
  #--------------------------------------------------------------------------
  def update
    run_path if @runpath == true
    nf_pf_game_character_update
  end
  #--------------------------------------------------------------------------
  def run_path
    return if moving?
    step = @map[@x,@y]
    if step == 1
      @map = nil
      @runpath = false
      return
    end
    dir = rand(2)
    case dir
    when 0
      move_right if @map[@x+1,@y] == step - 1 and step != 0
      move_down if @map[@x,@y+1] == step - 1 and step != 0
      move_left if @map[@x-1,@y] == step -1 and step != 0
      move_up if @map[@x,@y-1] == step - 1 and step != 0
    when 1
      move_up if @map[@x,@y-1] == step - 1 and step != 0
      move_left if @map[@x-1,@y] == step -1 and step != 0
      move_down if @map[@x,@y+1] == step - 1 and step != 0
      move_right if @map[@x+1,@y] == step - 1 and step != 0
    end
  end
  #--------------------------------------------------------------------------
  def find_path(x,y)
    sx, sy = @x, @y
    result = setup_map(sx,sy,x,y)
    @runpath = result[0]
    @map = result[1]
    @map[sx,sy] = result[2] if result[2] != nil
  end
  #--------------------------------------------------------------------------
  def clear_path
    @map = nil
    @runpath = false
  end
  #--------------------------------------------------------------------------
  def setup_map(sx,sy,ex,ey)
    map = Table.new($game_map.width, $game_map.height)
    map[ex,ey] = 1
    old_positions = []
    new_positions = []
    old_positions.push([ex, ey])
    depth = 2
    depth.upto(100){|step|
      loop do
        break if old_positions[0] == nil
        x,y = old_positions.shift
        return [true, map, step] if x == sx and y+1 == sy
        if $game_player.passable?(x, y) and map[x,y + 1] == 0
          map[x,y + 1] = step
          new_positions.push([x,y + 1])
        end
        return [true, map, step] if x-1 == sx and y == sy
        if $game_player.passable?(x, y) and map[x - 1,y] == 0
          map[x - 1,y] = step
          new_positions.push([x - 1,y])
        end
        return [true, map, step] if x+1 == sx and y == sy
        if $game_player.passable?(x, y) and map[x + 1,y] == 0
          map[x + 1,y] = step
          new_positions.push([x + 1,y])
        end
        return [true, map, step] if x == sx and y-1 == sy
        if $game_player.passable?(x, y) and map[x,y - 1] == 0
          map[x,y - 1] = step
          new_positions.push([x,y - 1])
        end
      end
      old_positions = new_positions
      new_positions = []
    }
    return [false, nil, nil]
  end
end
 
class Game_Map
  #--------------------------------------------------------------------------
  alias pf_game_map_setup setup
  #--------------------------------------------------------------------------
  def setup(map_id)
    pf_game_map_setup(map_id)
    $game_player.clear_path
  end
end
 
class Game_Player
  #--------------------------------------------------------------------------
  alias pf_game_player_update update
  #--------------------------------------------------------------------------
  def update
    $game_player.clear_path if Input.dir4 != 0
    pf_game_player_update
  end
end
 
class Interpreter
  #--------------------------------------------------------------------------
  def event
    return $game_map.events[@event_id]
  end
end

-여기 까지-
메인 색쉰 위에 그냥 넣으세요.
이러면 캐릭터가 알아서 함

Comment '6'
  • ?
    제스킨 2008.10.08 17:50

    path finding..
    최소한 이 기능의 설명이나 스크린샷을 올려주셔야 어떤 스크립트 인지 알고 사용할것 아닙니까..

  • ?
    FireFighter 2008.10.09 21:13
    네... 해결 해 줄것입니다....
  • ?
    다크아머 2008.10.25 10:42
    옳소;;
  • profile
    모토키 2008.11.22 16:54
    ???
  • ?
    Soul Breaker 2009.01.07 16:15
    어떤 스크립트인가요..;
  • ?
    루시페르 2009.04.18 10:36
    마우스 시스템에서 아무데나 찍으면 주인공이 알아서
    가장 가까운 거리를 찾아가는 스크립트....
    이것만 올리시면 어떡하시라능...

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 3 습작 2012.12.24 5408
57 이동 및 탈것 VX의 기존 대쉬 기능 없애기 8 BAYONET 2008.05.18 2552
56 전투 2003식 사이드뷰 적들도 가까이와서 공격함 ㅇㅇ 51 배군 2008.05.02 6750
55 메뉴 일본에서 만든 멋있는메뉴변경 스크립트 (한글 VX에서 쓰시면 자동으로 바뀜) 45 유칸지 2008.04.09 8861
54 전투 VX]Mog Battleback XP 1.0 11 file WMN 2008.04.06 3869
53 직업 [VX] Blue Mage by Fomar0153 9 WMN 2008.04.06 2785
52 기타 [VX] Anti-Lag 1.2c by Anaryu[예제첨부] 3 file WMN 2008.04.06 2371
51 변수/스위치 VX Script Fix - Variable Operation (by Yeyinde) 8 WMN 2008.04.06 2267
50 기타 2 Players Engine 11 레이니케 2008.03.28 2294
49 이름입력 [rpg vx]한글 스크립트(저번 것보단 업그레이드 된 것입니다.^^) 17 file 레시온 2008.03.28 4736
48 그래픽 밤낮 변환 VX용 26 독도2005 2008.03.23 4314
47 메뉴 메뉴 배경화면 바꾸는 스크립트 9 독도2005 2008.03.23 4520
46 그래픽 먼가이상한데... 밤낮 변환 vx 44 작은악마 2008.03.18 3414
45 이름입력 한글 이름 입력 스크립트입니다.^^ 14 레시온 2008.03.18 4383
44 파티 최대 파티 늘리는 스크립트 59 file 아방스 2008.03.09 5431
43 메뉴 CogWheel Style Menu Bars 6 아방스 2008.03.09 2777
42 기타 rpg vx 렉 줄이는 스크립트 34 아방스 2008.03.09 4815
41 파티 파티 변경 시스템 21 file 아방스 2008.03.09 3945
40 파티 전투중 파티 변경 스크립트 21 아방스 2008.03.09 3477
39 기타 간단한 스크립트의 사용법 6 아방스 2008.03.09 4552
38 HUD 맵 이름을 띠우는 스크립트 [메시지창] 24 아방스 2008.03.09 4748
Board Pagination Prev 1 ... 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 Next
/ 32