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
497 장비 KGC장비종류 추가 스크립트. 36 file 루시페르 2009.03.28 4674
496 제작도구 최대한 한글로 변혁 했음Window Maker V1.0(대박) 15 Man... 2008.10.29 4673
495 스킬 스킬 필요 조건(번역) 23 file 훈덕 2009.02.03 4644
494 기타 아이디를 띄우기 20 12345678 2011.11.07 4627
493 전투 VX SRPG3d 수정본(1) 12 아이미르 2011.10.19 4620
492 이동 및 탈것 점프를 제한 하는 스크립트 15 아방스 2008.01.31 4605
491 메시지 [완성]RPG Maker VX용 한글 조사 자동결정 10 file 시릴캣 2009.08.13 4598
490 퀘스트 오메가7 퀘스트 스크립트 한글화,사용법,데모게임 직접제작 32 file DH Games 2010.02.14 4578
489 메뉴 기본메인 메뉴 아이콘 추가 10 아방스 2010.12.11 4573
488 기타 간단한 스크립트의 사용법 6 아방스 2008.03.09 4552
487 아이템 레벨,능력치,아이템소지갯수,소지금의 한계돌파스크립트 21 file 이탁 2009.01.28 4547
486 상태/속성 넓어진 상태창 v1.0 11 file 아방스 2009.01.20 4536
485 메뉴 스타일 크로노 트리거 메뉴 31 file 콩밥 2010.07.19 4536
484 전투 스킬 커맨드 스크립트 16 아방스 2009.02.05 4535
483 타이틀/게임오버 까만화면으로 시작하기 27 file 허걱 2009.07.04 4528
482 아이템 아이템입수 화면 16 file RPGbooster 2008.10.08 4526
481 메뉴 메뉴 배경화면 바꾸는 스크립트 9 독도2005 2008.03.23 4520
480 전투 Target 몬스터 플래시 스크립트 16 아방스 2008.01.24 4517
479 기타 책 읽기 스크립트 44 file 히류 2010.10.05 4506
478 상점 스킬합성 상점 스크립트 23 file 미얼 2009.10.29 4498
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 32 Next
/ 32