스크립터: BigEd781
보통 게임을 만들 때, 이벤트의 위치가 이동을 할 때가 있죠.
하지만 그 위치가 다른 맵에 갔다가 다시 돌아오면 처음에 지정되어 있던 위치로
다시 바껴있는 경우가 허다해, 스위치를 이용해 새 이벤트를 만들어야만 했던
귀찮았던 때가 있었죠.
이제 이 스크립트로 그 문제를 해결하세요!! (무슨 홈쇼핑 광고 같다...)
그렇다고 이 스크립트는 무작정 이벤트의 위치가 전에 있던 것으로 옮겨주는 건 아니고...
이 스크립트에 해당되는 스위치를 켜야 활성화가 됩니다.
한마디로 필요하지 않을 땐 그냥 스위치를 끄면 간단하게 OK!!
또 이벤트에다 주석으로 'no mem'이라고 적으면 그 이벤트 역시 그 장소를 저장하지 않습니다!!!!!! (놀랍네요!)
스위치 지정은
alias :eds_old_pre_mem_setup :setup
def setup(map_id)
save_positions if $game_switches[1]
eds_old_pre_mem_setup(map_id)
restore_positions if $game_switches[1]
end
이 부분을 찾으셔서
$game_switches[1] 라고 적혀 있는 곳에 있는 [ ] 안에
원하는 스위치 id를 지정하세요. (참고로 두부분이 있고, 두부분 모두 바꿔줘야 합니다..)
설명 끝 -0-;
#-----------------------------------------------------------------------
# Memorize Event Positions
# BigEd781
#-----------------------------------------------------------------------
class Game_System
alias :eds_old_pre_mem_intialize :initialize
def initialize
eds_old_pre_mem_intialize
@event_pos_data = {}
end
def save_event_position_data(map_id, data)
@event_pos_data[map_id] = data
end
def get_event_position_data(map_id)
return @event_pos_data[map_id].nil? ? [] : @event_pos_data[map_id]
end
end
class Game_Event < Game_Character
def comment?(comment)
unless @list.nil?
@list.each { |line|
next if line.code != 108
return true if line.parameters[0].upcase == comment.upcase }
end
return false
end
end
class Game_Map
#스위치 지정하는 곳
alias :eds_old_pre_mem_setup :setup
def setup(map_id)
save_positions if $game_switches[1]
eds_old_pre_mem_setup(map_id)
restore_positions if $game_switches[1]
end
def save_positions
return if @events.nil? || @events == { }
data = []
@events.values.each { |event| data += [[ event.id, event.x, event.y, event.direction ]] }
$game_system.save_event_position_data(@map_id, data)
end
def restore_positions
return if @events.nil? || @events == { }
$game_system.get_event_position_data(@map_id).each { |data|
event = @events[data[0]]
unless event.nil? || event.comment?('no mem')
x, y, direction = data[1], data[2], data[3]
event.moveto(x, y) unless event.pos?(x, y)
event.set_direction(direction)
end
}
end
end
출처: rpgrevolution.com
보통 게임을 만들 때, 이벤트의 위치가 이동을 할 때가 있죠.
하지만 그 위치가 다른 맵에 갔다가 다시 돌아오면 처음에 지정되어 있던 위치로
다시 바껴있는 경우가 허다해, 스위치를 이용해 새 이벤트를 만들어야만 했던
귀찮았던 때가 있었죠.
이제 이 스크립트로 그 문제를 해결하세요!! (무슨 홈쇼핑 광고 같다...)
그렇다고 이 스크립트는 무작정 이벤트의 위치가 전에 있던 것으로 옮겨주는 건 아니고...
이 스크립트에 해당되는 스위치를 켜야 활성화가 됩니다.
한마디로 필요하지 않을 땐 그냥 스위치를 끄면 간단하게 OK!!
또 이벤트에다 주석으로 'no mem'이라고 적으면 그 이벤트 역시 그 장소를 저장하지 않습니다!!!!!! (놀랍네요!)
스위치 지정은
alias :eds_old_pre_mem_setup :setup
def setup(map_id)
save_positions if $game_switches[1]
eds_old_pre_mem_setup(map_id)
restore_positions if $game_switches[1]
end
이 부분을 찾으셔서
$game_switches[1] 라고 적혀 있는 곳에 있는 [ ] 안에
원하는 스위치 id를 지정하세요. (참고로 두부분이 있고, 두부분 모두 바꿔줘야 합니다..)
설명 끝 -0-;
#-----------------------------------------------------------------------
# Memorize Event Positions
# BigEd781
#-----------------------------------------------------------------------
class Game_System
alias :eds_old_pre_mem_intialize :initialize
def initialize
eds_old_pre_mem_intialize
@event_pos_data = {}
end
def save_event_position_data(map_id, data)
@event_pos_data[map_id] = data
end
def get_event_position_data(map_id)
return @event_pos_data[map_id].nil? ? [] : @event_pos_data[map_id]
end
end
class Game_Event < Game_Character
def comment?(comment)
unless @list.nil?
@list.each { |line|
next if line.code != 108
return true if line.parameters[0].upcase == comment.upcase }
end
return false
end
end
class Game_Map
#스위치 지정하는 곳
alias :eds_old_pre_mem_setup :setup
def setup(map_id)
save_positions if $game_switches[1]
eds_old_pre_mem_setup(map_id)
restore_positions if $game_switches[1]
end
def save_positions
return if @events.nil? || @events == { }
data = []
@events.values.each { |event| data += [[ event.id, event.x, event.y, event.direction ]] }
$game_system.save_event_position_data(@map_id, data)
end
def restore_positions
return if @events.nil? || @events == { }
$game_system.get_event_position_data(@map_id).each { |data|
event = @events[data[0]]
unless event.nil? || event.comment?('no mem')
x, y, direction = data[1], data[2], data[3]
event.moveto(x, y) unless event.pos?(x, y)
event.set_direction(direction)
end
}
end
end
출처: rpgrevolution.com