질문과 답변

Extra Form

 http://avangs.info/index.php?_filter=search&mid=rgss_vx&search_target=title_content&search_keyword=2%EC%9D%B8%EC%9A%A9&document_srl=260789 이 링크 스크립트 를 적용하고싶은데 f11스크립트에디터이곳의추가에다붙여넣어야되나요? 아니면더블클릭해서 3번째 이벤트창 스크립트에다 붙여넣기 해야되요? (맵에 더블클릭시 이벤트작성을 얘기하는거애요)

Who's 나루토페인

profile
Comment '5'
  • profile
    나루토페인 2015.02.01 22:40
    어떻게 적용하는지도 좀 알려주세요
  • ?
    BeNew 2015.02.02 21:02
    #================================================
    # [VX] 2 Players Engine
    #------------------------------------------------
    # By Woratana [woratana@hotmail.com]
    # Version: 1.0
    # Date: 14/03/2008 *HAPPY PIE DAY! lol*
    #
    # CREDIT: Original XP Version by Hima

    =begin

    +[FEATURES]+
    - Create Player 2 that you can control, interact with other events in map,
    as same as Main Player.

    - Editable Input Buttons for Player 2

    - Player 2 can walk & Run 8 directions

    +[HOW TO USE]+
    To Create Player 2, use call script:
    $game_player2 = Game_Player2.new
    $game_player2.create(x, y, actor id, follow?)

    x and y = X and Y that you want new player to appear

    actor id = Character from ID of Actor that you want to use for new player
    (ID from Database)

    follow? = true (Screen follow new player), false (not follow new player)
    *NOT RECOMMEND TO USE FOLLOW*

    To Delete Player 2, use call script:
    $game_player2.delete

    =end
    #==============================================================================

    class Game_Player2 < Game_Character
    #--------------------------------------------------------------------------
    # START SETUP SCRIPT PART
    # * Constants: INPUT BUTTONS FOR Game_Player 2
    #--------------------------------------------------------------------------
    DOWN = Input::Y # S in Keyboard
    LEFT = Input::X # A in Keyboard
    RIGHT = Input::Z # D in Keyboard
    UP = Input::R # W in Keyboard
    ENTER = Input::L # Q in Keyboard
    RUN = Input::A # Shift in Keyboard
    #--------------------------------------------------------------------------
    # END SETUP SCRIPT PART
    #--------------------------------------------------------------------------

    CENTER_X = (544 / 2 - 16) * 8 # Screen center X coordinate * 8
    CENTER_Y = (416 / 2 - 16) * 8 # Screen center Y coordinate * 8
    #--------------------------------------------------------------------------
    # * Public Instance Variables
    #--------------------------------------------------------------------------
    attr_reader :vehicle_type # type of vehicle currenting being ridden
    attr_accessor :character_name
    #--------------------------------------------------------------------------
    # * Create and Set Player 2 Location
    #--------------------------------------------------------------------------
    def create(x,y,id,need_center = false)
    @actor_id = id
    moveto(x,y)
    @need_center = need_center
    refresh
    end
    #--------------------------------------------------------------------------
    # * Clear Player 2
    #--------------------------------------------------------------------------
    def delete
    @actor_id = nil
    refresh
    $game_player2 = nil
    end
    #--------------------------------------------------------------------------
    # * Object Initialization
    #--------------------------------------------------------------------------
    def initialize
    super
    @vehicle_type = -1
    @vehicle_getting_on = false # Boarding vehicle flag
    @vehicle_getting_off = false # Getting off vehicle flag
    @transferring = false # Player transfer flag
    @new_map_id = 0 # Destination map ID
    @new_x = 0 # Destination X coordinate
    @new_y = 0 # Destination Y coordinate
    @new_direction = 0 # Post-movement direction
    @walking_bgm = nil # For walking BGM memory
    end
    #--------------------------------------------------------------------------
    # * Determine if Stopping
    #--------------------------------------------------------------------------
    def stopping?
    return false if @vehicle_getting_on
    return false if @vehicle_getting_off
    return super
    end
    #--------------------------------------------------------------------------
    # * Player Transfer Reservation
    # map_id : Map ID
    # x : x-coordinate
    # y : y coordinate
    # direction : post-movement direction
    #--------------------------------------------------------------------------
    def reserve_transfer(map_id, x, y, direction)
    @transferring = true
    @new_map_id = map_id
    @new_x = x
    @new_y = y
    @new_direction = direction
    end
    #--------------------------------------------------------------------------
    # * Determine if Player Transfer is Reserved
    #--------------------------------------------------------------------------
    def transfer?
    return @transferring
    end
    #--------------------------------------------------------------------------
    # * Execute Player Transfer
    #--------------------------------------------------------------------------
    def perform_transfer
    return unless @transferring
    @transferring = false
    set_direction(@new_direction)
    if $game_map.map_id != @new_map_id
    $game_map.setup(@new_map_id) # Move to other map
    end
    moveto(@new_x, @new_y)
    end
    #--------------------------------------------------------------------------
    # * Determine if Map is Passable
    # x : x-coordinate
    # y : y-coordinate
    #--------------------------------------------------------------------------
    def map_passable?(x, y)
    case @vehicle_type
    when 0 # Boat
    return $game_map.boat_passable?(x, y)
    when 1 # Ship
    return $game_map.ship_passable?(x, y)
    when 2 # Airship
    return true
    else # Walking
    return $game_map.passable?(x, y)
    end
    end
    #--------------------------------------------------------------------------
    # * Determine if Walking is Possible
    # x : x-coordinate
    # y : y-coordinate
    #--------------------------------------------------------------------------
    def can_walk?(x, y)
    last_vehicle_type = @vehicle_type # Remove vehicle type
    @vehicle_type = -1 # Temporarily set to walking
    result = passable?(x, y) # Determine if passable
    @vehicle_type = last_vehicle_type # Restore vehicle type
    return result
    end
    #--------------------------------------------------------------------------
    # * Determine if Airship can Land
    # x : x-coordinate
    # y : y-coordinate
    #--------------------------------------------------------------------------
    def airship_land_ok?(x, y)
    unless $game_map.airship_land_ok?(x, y)
    return false # The tile passable attribute is unlandable
    end
    unless $game_map.events_xy(x, y).empty?
    return false # Cannot land where there is an event
    end
    return true # Can land
    end
    #--------------------------------------------------------------------------
    # * Determine if Riding in Some Kind of Vehicle
    #--------------------------------------------------------------------------
    def in_vehicle?
    return @vehicle_type >= 0
    end
    #--------------------------------------------------------------------------
    # * Determine if Riding in Airship
    #--------------------------------------------------------------------------
    def in_airship?
    return @vehicle_type == 2
    end
    #--------------------------------------------------------------------------
    # * Determine if Dashing
    #--------------------------------------------------------------------------
    def dash?
    return false if @move_route_forcing
    return false if $game_map.disable_dash?
    return false if in_vehicle?
    return Input.press?(RUN)
    end
    #--------------------------------------------------------------------------
    # * Determine if Debug Pass-through State
    #--------------------------------------------------------------------------
    def debug_through?
    return false unless $TEST
    return Input.press?(Input::CTRL)
    end
    #--------------------------------------------------------------------------
    # * Set Map Display Position to Center of Screen
    # x : x-coordinate
    # y : y-coordinate
    #--------------------------------------------------------------------------
    def center(x, y)
    display_x = x * 256 - CENTER_X # Calculate coordinates
    unless $game_map.loop_horizontal? # No loop horizontally?
    max_x = ($game_map.width - 17) * 256 # Calculate max value
    display_x = [0, [display_x, max_x].min].max # Adjust coordinates
    end
    display_y = y * 256 - CENTER_Y # Calculate coordinates
    unless $game_map.loop_vertical? # No loop vertically?
    max_y = ($game_map.height - 13) * 256 # Calculate max value
    display_y = [0, [display_y, max_y].min].max # Adjust coordinates
    end
    $game_map.set_display_pos(display_x, display_y) # Change map location
    end
    #--------------------------------------------------------------------------
    # * Move to Designated Position
    # x : x-coordinate
    # y : y-coordinate
    #--------------------------------------------------------------------------
    def moveto(x, y)
    super
    # center(x, y)
    make_encounter_count # Initialize encounter
    if in_vehicle? # Riding in vehicle
    vehicle = $game_map.vehicles[@vehicle_type] # Get vehicle
    vehicle.refresh # Refresh
    end
    end
    #--------------------------------------------------------------------------
    # * Increase Steps
    #--------------------------------------------------------------------------
    def increase_steps
    super
    return if @move_route_forcing
    return if in_vehicle?
    $game_party.increase_steps
    $game_party.on_player_walk
    end
    #--------------------------------------------------------------------------
    # * Get Encounter Count
    #--------------------------------------------------------------------------
    def encounter_count
    return @encounter_count
    end
    #--------------------------------------------------------------------------
    # * Make Encounter Count
    #--------------------------------------------------------------------------
    def make_encounter_count
    if $game_map.map_id != 0
    n = $game_map.encounter_step
    @encounter_count = rand(n) + rand(n) + 1 # As if rolling 2 dice
    end
    end
    #--------------------------------------------------------------------------
    # * Determine if in Area
    # area : Area data (RPG::Area)
    #--------------------------------------------------------------------------
    def in_area?(area)
    return false if area == nil
    return false if $game_map.map_id != area.map_id
    return false if @x < area.rect.x
    return false if @y < area.rect.y
    return false if @x >= area.rect.x + area.rect.width
    return false if @y >= area.rect.y + area.rect.height
    return true
    end
    #--------------------------------------------------------------------------
    # * Create Group ID for Troop Encountered
    #--------------------------------------------------------------------------
    def make_encounter_troop_id
    encounter_list = $game_map.encounter_list.clone
    for area in $data_areas.values
    encounter_list += area.encounter_list if in_area?(area)
    end
    if encounter_list.empty?
    make_encounter_count
    return 0
    end
    return encounter_list[rand(encounter_list.size)]
    end
    #--------------------------------------------------------------------------
    # * Refresh
    #--------------------------------------------------------------------------
    def refresh
    if @actor_id != nil and $game_actors[@actor_id] != nil
    actor = $game_actors[@actor_id] # Get front actor
    @character_name = actor.character_name
    @character_index = actor.character_index
    else
    @character_name = ""
    end
    end
    #--------------------------------------------------------------------------
    # * Determine if Same Position Event is Triggered
    # triggers : Trigger array
    #--------------------------------------------------------------------------
    def check_event_trigger_here(triggers)
    return false if $game_map.interpreter.running?
    result = false
    for event in $game_map.events_xy(@x, @y)
    if triggers.include?(event.trigger) and event.priority_type != 1
    event.start
    result = true if event.starting
    end
    end
    return result
    end
    #--------------------------------------------------------------------------
    # * Determine if Front Event is Triggered
    # triggers : Trigger array
    #--------------------------------------------------------------------------
    def check_event_trigger_there(triggers)
    return false if $game_map.interpreter.running?
    result = false
    front_x = $game_map.x_with_direction(@x, @direction)
    front_y = $game_map.y_with_direction(@y, @direction)
    for event in $game_map.events_xy(front_x, front_y)
    if triggers.include?(event.trigger) and event.priority_type == 1
    event.start
    result = true
    end
    end
    if result == false and $game_map.counter?(front_x, front_y)
    front_x = $game_map.x_with_direction(front_x, @direction)
    front_y = $game_map.y_with_direction(front_y, @direction)
    for event in $game_map.events_xy(front_x, front_y)
    if triggers.include?(event.trigger) and event.priority_type == 1
    event.start
    result = true
    end
    end
    end
    return result
    end
    #--------------------------------------------------------------------------
    # * Determine if Touch Event is Triggered
    # x : x-coordinate
    # y : y-coordinate
    #--------------------------------------------------------------------------
    def check_event_trigger_touch(x, y)
    return false if $game_map.interpreter.running?
    result = false
    for event in $game_map.events_xy(x, y)
    if [1,2].include?(event.trigger) and event.priority_type == 1
    event.start
    result = true
    end
    end
    return result
    end
    #--------------------------------------------------------------------------
    # * Processing of Movement via input from the Directional Buttons
    #--------------------------------------------------------------------------
    def move_by_input
    return unless movable?
    return if $game_map.interpreter.running?
    if Input.press?(DOWN)
    move_down
    end
    if Input.press?(LEFT)
    move_left
    end
    if Input.press?(RIGHT)
    move_right
    end
    if Input.press?(UP)
    move_up
    end
    end
    #--------------------------------------------------------------------------
    # * Determine if Movement is Possible
    #--------------------------------------------------------------------------
    def movable?
    return false if moving? # Moving
    return false if @move_route_forcing # On forced move route
    return false if @vehicle_getting_on # Boarding vehicle
    return false if @vehicle_getting_off # Getting off vehicle
    return false if $game_message.visible # Displaying a message
    return false if in_airship? and not $game_map.airship.movable?
    return true
    end
    #--------------------------------------------------------------------------
    # * Frame Update
    #--------------------------------------------------------------------------
    def update
    last_real_x = @real_x
    last_real_y = @real_y
    last_moving = moving?
    move_by_input
    super
    update_scroll(last_real_x, last_real_y) if @need_center
    update_vehicle
    update_nonmoving(last_moving)
    end
    #--------------------------------------------------------------------------
    # * Update Scroll
    #--------------------------------------------------------------------------
    def update_scroll(last_real_x, last_real_y)
    ax1 = $game_map.adjust_x(last_real_x)
    ay1 = $game_map.adjust_y(last_real_y)
    ax2 = $game_map.adjust_x(@real_x)
    ay2 = $game_map.adjust_y(@real_y)
    if ay2 > ay1 and ay2 > CENTER_Y
    $game_map.scroll_down(ay2 - ay1)
    end
    if ax2 < ax1 and ax2 < CENTER_X
    $game_map.scroll_left(ax1 - ax2)
    end
    if ax2 > ax1 and ax2 > CENTER_X
    $game_map.scroll_right(ax2 - ax1)
    end
    if ay2 < ay1 and ay2 < CENTER_Y
    $game_map.scroll_up(ay1 - ay2)
    end
    end
    #--------------------------------------------------------------------------
    # * Update Vehicle
    #--------------------------------------------------------------------------
    def update_vehicle
    return unless in_vehicle?
    vehicle = $game_map.vehicles[@vehicle_type]
    if @vehicle_getting_on # Boarding?
    if not moving?
    @direction = vehicle.direction # Change direction
    @move_speed = vehicle.speed # Change movement speed
    @vehicle_getting_on = false # Finish boarding operation
    @transparent = true # Transparency
    end
    elsif @vehicle_getting_off # Getting off?
    if not moving? and vehicle.altitude == 0
    @vehicle_getting_off = false # Finish getting off operation
    @vehicle_type = -1 # Erase vehicle type
    @transparent = false # Remove transparency
    end
    else # Riding in vehicle
    vehicle.sync_with_player # Move at the same time as player
    end
    end
    #--------------------------------------------------------------------------
    # * Processing when not moving
    # last_moving : Was it moving previously?
    #--------------------------------------------------------------------------
    def update_nonmoving(last_moving)
    return if $game_map.interpreter.running?
    return if moving?
    return if check_touch_event if last_moving
    if not $game_message.visible and Input.trigger?(ENTER)
    return if get_on_off_vehicle
    return if check_action_event
    end
    update_encounter if last_moving
    end
    #--------------------------------------------------------------------------
    # * Update Encounter
    #--------------------------------------------------------------------------
    def update_encounter
    return if $TEST and Input.press?(Input::CTRL) # During test play?
    return if in_vehicle? # Riding in vehicle?
    if $game_map.bush?(@x, @y) # If in bush
    @encounter_count -= 2 # Reduce encounters by 2
    else # If not in bush
    @encounter_count -= 1 # Reduce encounters by 1
    end
    end
    #--------------------------------------------------------------------------
    # * Determine Event Start Caused by Touch (overlap)
    #--------------------------------------------------------------------------
    def check_touch_event
    return false if in_airship?
    return check_event_trigger_here([1,2])
    end
    #--------------------------------------------------------------------------
    # * Determine Event Start Caused by [OK] Button
    #--------------------------------------------------------------------------
    def check_action_event
    return false if in_airship?
    return true if check_event_trigger_here([0])
    return check_event_trigger_there([0,1,2])
    end
    #--------------------------------------------------------------------------
    # * Getting On and Off Vehicles
    #--------------------------------------------------------------------------
    def get_on_off_vehicle
    return false unless movable?
    if in_vehicle?
    return get_off_vehicle
    else
    return get_on_vehicle
    end
    end
    #--------------------------------------------------------------------------
    # * Board Vehicle
    # Assumes that the player is not currently in a vehicle.
    #--------------------------------------------------------------------------
    def get_on_vehicle
    front_x = $game_map.x_with_direction(@x, @direction)
    front_y = $game_map.y_with_direction(@y, @direction)
    if $game_map.airship.pos?(@x, @y) # Is it overlapping with airship?
    get_on_airship
    return true
    elsif $game_map.ship.pos?(front_x, front_y) # Is there a ship in front?
    get_on_ship
    return true
    elsif $game_map.boat.pos?(front_x, front_y) # Is there a boat in front?
    get_on_boat
    return true
    end
    return false
    end
    #--------------------------------------------------------------------------
    # * Board Boat
    #--------------------------------------------------------------------------
    def get_on_boat
    @vehicle_getting_on = true # Boarding flag
    @vehicle_type = 0 # Set vehicle type
    force_move_forward # Move one step forward
    @walking_bgm = RPG::BGM::last # Memorize walking BGM
    $game_map.boat.get_on # Boarding processing
    end
    #--------------------------------------------------------------------------
    # * Board Ship
    #--------------------------------------------------------------------------
    def get_on_ship
    @vehicle_getting_on = true # Board
    @vehicle_type = 1 # Set vehicle type
    force_move_forward # Move one step forward
    @walking_bgm = RPG::BGM::last # Memorize walking BGM
    $game_map.ship.get_on # Boarding processing
    end
    #--------------------------------------------------------------------------
    # * Board Airship
    #--------------------------------------------------------------------------
    def get_on_airship
    @vehicle_getting_on = true # Start boarding operation
    @vehicle_type = 2 # Set vehicle type
    @through = true # Passage ON
    @walking_bgm = RPG::BGM::last # Memorize walking BGM
    $game_map.airship.get_on # Boarding processing
    end
    #--------------------------------------------------------------------------
    # * Get Off Vehicle
    # Assumes that the player is currently riding in a vehicle.
    #--------------------------------------------------------------------------
    def get_off_vehicle
    if in_airship? # Airship
    return unless airship_land_ok?(@x, @y) # Can't land?
    else # Boat/ship
    front_x = $game_map.x_with_direction(@x, @direction)
    front_y = $game_map.y_with_direction(@y, @direction)
    return unless can_walk?(front_x, front_y) # Can't touch land?
    end
    $game_map.vehicles[@vehicle_type].get_off # Get off processing
    if in_airship? # Airship
    @direction = 2 # Face down
    else # Boat/ship
    force_move_forward # Move one step forward
    @transparent = false # Remove transparency
    end
    @vehicle_getting_off = true # Start getting off operation
    @move_speed = 4 # Return move speed
    @through = false # Passage OFF
    @walking_bgm.play # Restore walking BGM
    make_encounter_count # Initialize encounter
    end
    #--------------------------------------------------------------------------
    # * Force One Step Forward
    #--------------------------------------------------------------------------
    def force_move_forward
    @through = true # Passage ON
    move_forward # Move one step forward
    @through = false # Passage OFF
    end
    end

    class Scene_Title < Scene_Base
    alias wor_twopla_scetit_cregam create_game_objects
    def create_game_objects
    wor_twopla_scetit_cregam
    $game_player2 = nil
    end
    end

    class Scene_Map < Scene_Base
    alias wor_twopla_scemap_upd update
    def update
    wor_twopla_scemap_upd
    $game_player2.update if $game_player2 != nil
    end
    end

    class Spriteset_Map
    alias wor_twopla_sprmap_crecha create_characters
    alias wor_twopla_sprmap_updcha update_characters
    def create_characters
    wor_twopla_sprmap_crecha
    @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
    @chara_two_pushed = false
    end

    def update_characters
    if !(@chara_two_pushed) and $game_player2 != nil
    @character_sprites.push(Sprite_Character.new(@viewport1, $game_player2))
    @chara_two_pushed = true
    elsif @chara_two_pushed and $game_player2 == nil
    for i in 0..@character_sprites.size
    if @character_sprites[i].character.is_a?(Game_Player2)
    @character_sprites[i].character.character_name = ""
    @character_sprites[i].update
    @character_sprites.delete_at(i)
    break
    end
    end
    @chara_two_pushed = false
    end
    wor_twopla_sprmap_updcha
    end
    end

    class Game_Map
    alias wor_twopla_gammap_passable passable?
    def passable?(x, y, flag = 0x01)
    if $game_player2 != nil and flag
    return false if $game_player2.x == x and $game_player2.y == y
    end
    wor_twopla_gammap_passable(x, y, flag)
    end
    end


    이걸 복사해서 스크립트 에디터 맨밑에다 만들어주시고
    2p 로 할 이벤트 하나 만드신후 실행옵션에 스크립트 해서
    $game_player2 = Game_Player2.new
    $game_player2.create(x, y, id, true)
    해주시고 x 랑 y는 좌표 id는 엑터의 아이디로 맞게 바꿔주세요
  • profile
    나루토페인 2015.02.02 22:29
    그럼 x랑 y를 지우고 그냥 2, 이런식으로 좌표를 써야 하나요 아니면 x2이런식으로 써야하나요 그리고 id:하고 울리카 써넣으면 되요? 한글로 영어로? 아니면 id지우고 잇던자리에 액터아이디를 쓰나요?
  • ?
    BeNew 2015.02.03 19:31
    $game_player2.create(x, y, actor id, follow?)

    x y 는 맵상의 나타낼 2p의 좌표, actor id는 케릭터 번호,
    follow에는 true나 false를 넣어주면됩니다.
    false로하면 2p의 이동은 스크린이 따라가지않습니다.

    예 (2, 2, 2, true)
  • profile
    나루토페인 2015.02.03 21:55
    감사합니다!

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12384
RMVX 이벤트의 반복/움직임 제한 오류 관련 질문 3 file Eyes! 2015.07.15 409
RMVX HP, MP만이 아닌 다른 능력치를 추가하고 싶습니다. 릿실 2015.07.15 236
RMVX srpg2 스크립트의 파티인원증가 file SIES 2015.07.07 151
RMVX 스킬장착 스크립트 제거 file SIES 2015.07.05 136
RMVX 특정 이벤트 2 나는인간∀ 2015.07.04 120
RMVX 캐릭터 생성의 제한 5 file SIES 2015.07.03 191
RMVX 에틴님의 srpg 한글화 ver.100907 스크립트 오류 3 file SIES 2015.07.02 250
RMVX srpg에서 마우스 조작 2 SIES 2015.07.01 158
RMVX 스크립트 오류 8 file SIES 2015.06.30 162
RMVX 선택창 그림으로 표시 1 KAHP 2015.06.26 199
RMVX 어떤 영역에서 아이템을 사용하면 이벤트 발생 맬비 2015.06.25 141
RMVX 실행파일이 없는거같아요 도와주세요 ㅠㅠ 1 file 쀼쀼쨩 2015.06.23 115
RMVX 맵이 움직이게 하는법좀 알려주세요 5 조르엘 2015.06.22 237
RMVX rpg vx 시작화면 음악 위치가 어딨죠? 1 피스미 2015.06.19 146
RMVX 스크립트 사용시 등록된 데이터의 초기화 톨톨 2015.06.08 153
RMVX HG_QUEST_SYSTEM n번째 액터의 얼굴 그래픽 추가 file 톨톨 2015.06.08 195
RMVX MPC와 대화후 그 MPC가 사라지게 1 spade 2015.06.08 124
RMVX 장소이동시 이벤트위치 초기화 막는 스크립트..? 2 자유천사 2015.06.05 175
RMVX 실행이벤트 오류 4 휴지통 2015.05.31 128
RMVX 이벤트 뒤치기 10 수녀갓 2015.05.28 198
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 127 Next
/ 127