XP 스크립트

Maplinks script by Wachunga@rmxp.net  (이 @이 e-mail주소를 가리키는 것이 아니란 것을 염두에 두시길)

  스크립트를 이용해서 맵의 가장자리로 갔을 때 다음 맵으로 워프하게 하는 것입니다.(맵의 가장자리를 이벤트로 도배하는 것보다 효율적이다?)


=begin

 ============

  Maplinks - version 0.95 (2005-11-10)

 ============

  by Wachunga


 This script simplifies linking maps together: a single event sets up an

 entire edge of the map as a teleport to another map. Players trying to

 leave that edge of the current map are automatically teleported.


 (This can also be achieved with many copies of teleport events along the edges

 of a map or with a parallel-process event that sets variables and uses them to

 teleport, but these methods are not optimal -- causing lag and/or inconvenience

 for the mapper.)


 To link a map with another on a specific edge (north, east, south or west),

 create an event with <maplink> included in its name on the appropriate edge of

 the map. (To avoid confusion, maplink events on corners of the map are

 not valid.) Then, add a teleport ("Transfer Player") command to the event

 to specify the destination map and other details (e.g. player direction,

 fading on/off). If the destination is an east or west edge, then the Y

 coordinate is calculated based on the player's Y coordinate when

 teleporting; likewise, the X coordinate is calculated automatically when

 the destination is a north or south edge.

 

 Note: unlike normal teleport events, maplinks are activated when the player

 tries to leave the screen instead of when stepping on the last tile. This

 behaviour could be changed, but I feel that it's more natural this way:

 it leaves the whole map open for actual exploration, instead of "wasting"

 the outer tiles of a map.


=end


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


class Game_Event < Game_Character

  alias ml_ge_init initialize

  def initialize(map_id, event)

    ml_ge_init(map_id, event)

    if @event.name.upcase.include?('<MAPLINK>')

      dir = nil

      if @event.y == $game_map.height-1

        dir = 2 unless @event.x == 0 or @event.x == $game_map.width-1

      elsif @event.x == 0

        dir = 4 unless @event.y == 0 or @event.y == $game_map.height-1

      elsif @event.x == $game_map.width-1

        dir = 6 unless @event.y == 0 or @event.y == $game_map.height-1

      elsif @event.y == 0

        dir = 8 unless @event.x == 0 or @event.x == $game_map.width-1

      end

      if dir != nil

        @list.each { |command|

          if command.code == 201

            # make sure new location isn't be specified by variables

            if command.parameters[0] == 0

              $game_map.maplinks[dir] = Maplink.new(command.parameters)

              break

            end

          end

        }

      end

    end

  end

end


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


class Game_Map

  attr_accessor :maplinks

 

  alias ml_gm_setup setup

  def setup(map_id)

    @maplinks = {}

    ml_gm_setup(map_id)

  end

 

  def width(map_id = @map_id)

    if map_id == @map_id

      return @map.width

    else

      return load_data(sprintf("Data/Map%03d.rxdata", map_id)).width     

    end

  end 


  def height(map_id = @map_id)

    if map_id == @map_id

      return @map.height

    else

      return load_data(sprintf("Data/Map%03d.rxdata", map_id)).height

    end

  end   

 

end


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


class Maplink

 

  def initialize(parameters)

    @param = parameters

  end


  def activate

    width = $game_map.width(@param[1])

    height = $game_map.height(@param[1])

    # modify x (p[2]) or y (p[3]) coordinates appropriately

    if @param[2] == 0 or @param[2] == width-1

      @param[3] = $game_player.y

    elsif @param[3] == 0 or @param[3] == height-1

      @param[2] = $game_player.x

    end

    # set up a dummy interpreter just for teleport

    interpreter = Interpreter.new

    interpreter.parameters = @param

    interpreter.index = 0

    interpreter.command_201

  end

 

end


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


class Game_Player


  alias ml_cett check_event_trigger_touch

  def check_event_trigger_touch(x, y)

    check_maplinks(x,y)

    ml_cett(x,y)

  end

 

  def check_maplinks(x,y)

    if $game_map.valid?(x, y) then return end

    dir = nil

    if y == $game_map.height then dir = 2

    elsif x == -1 then dir = 4

    elsif x == $game_map.width then dir = 6

    elsif y == -1 then dir = 8

    end

    if dir != nil

      if $game_map.maplinks[dir] != nil

        $game_map.maplinks[dir].activate

      end

    end

  end


end


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


class Interpreter

  attr_accessor :parameters

  attr_accessor :index

end

Who's 백호

?

이상혁입니다.

http://elab.kr


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6203
821 장비 장비창을 다른거로 바꾸기 [헬악이님 제공] 10 file 아방스 2007.11.09 3051
820 전투 심플액알 더더 수정(스위치, 변수) 17 file 백호 2009.02.21 3046
819 타이틀/게임오버 게임오버 화면 에서 커맨드 윈도우 스크립트 12 file 백호 2009.02.21 3031
818 메뉴 제가 쓰고있는 메뉴 13 file 백호 2009.02.21 3030
817 키입력 AInput Module 3.10 by vgvgf (전체키, 마우스 입력) 6 file Alkaid 2010.09.01 3030
816 전투 GTBS 1.4 스크립트 9 아방스 2009.02.05 3028
815 메뉴 링 메뉴 소지금,플레이시간 추가 버젼 17 Neowitch* 2008.04.20 3022
814 메시지 한글자씩 뜨는 스크립트 6 백호 2009.02.21 3004
813 아이템 아이템획득스크립트 ps인간 2009.01.23 2993
812 HUD 맵이름 넣기(bs님의 강의랑 다르게 스크립트로) 16 file 아방스 2007.11.09 2982
811 전투 횡스크롤형식의 스크립트 7 백호 2009.02.21 2982
810 전투 CTB by Charlie Fleed 3.1 - FF10 스타일의 전투시스템 6 Alkaid 2010.09.10 2975
809 이동 및 탈것 캐릭터 이동 프레임? 증가 스크립트 9 백호 2009.02.21 2971
808 아이템 [신기술 체험] 인벤토리 8 file 백호 2009.02.22 2963
807 맵/타일 World Map version 1.2 11 백호 2009.02.22 2962
806 메뉴 메뉴 단축키 스크립트 14 백호 2009.02.22 2961
805 그래픽 WhiteFlute - BitmapEX 4 file JACKY 2012.12.10 2955
804 메뉴 Mog-메뉴업그레이드? ps인간 2009.01.23 2948
803 전투 Mr.mo's SBABS Lite 5 6 아방스마니아 2010.11.14 2947
802 HUD 맵 이름을 표시해주는 스크립트입니다. 25 임희성 2011.02.12 2941
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 52 Next
/ 52