MV 플러그인

동료 동행 스크립트 입니다.

복사하신다음 스크립트 에디터 들어가셔서 새스크립트 만드신후 붙여넣기 하시면 됩니다.

 

#============================================================================== 

# ■ Member_Train 
#------------------------------------------------------------------------------ 
#  동료를 기차처럼 나란히 따라오게 만드는 클레스입니다. 
#============================================================================== 

module Train_Actor 

# ●투명상태용 스윗치 설정 
# true 라면 스윗치 제어를 실시한다 
# TRANSPARENT_SWITCH = true 
TRANSPARENT_SWITCH = false 

# ●투명상태용 스윗치 번호 
# TRANSPARENT_SWITCH 가 true 로 , 이 번호의 스윗치가 ON라면 투명하게 된다 
TRANSPARENT_SWITCHES_INDEX = 20 

# ●엑터의 최대수 
# 장래적으로 많은 사람 파티를 생기게 되면… 
TRAIN_ACTOR_SIZE_MAX = 4 #여기에 쓰인 숫자만큼까지의 동료가 따라다닐 수 있습니다. 

# 정수 
#Input::DOWN = 2 
#Input::LEFT = 4 
#Input::RIGHT = 6 
#Input::UP = 8 
DOWN_LEFT = 1 
DOWN_RIGHT = 3 
UP_LEFT = 7 
UP_RIGHT = 9 
JUMP = 5 

class Game_Party_Actor < Game_Character 
def initialize 
super() 
@through = true 
end 
def setup(actor) 
# 캐릭터의 파일명과 색상을 설정 
if actor != nil 
@character_name = actor.character_name 
@character_hue = actor.character_hue 
else 
@character_name = "" 
@character_hue = 0 
end 
# 불투명도와 합성 방법을 초기화 
@opacity = 255 
@blend_type = 0 
end 
def screen_z(height = 0) 
if $game_player.x == @x and $game_player.y == @y 
return $game_player.screen_z(height) - 1 
end 
super(height) 
end 
#-------------------------------------------------------------------------- 
# ● 아래에 이동 
# turn_enabled : 그 자리에서의 향해 변경을 허가하는 플래그 
#-------------------------------------------------------------------------- 
def move_down(turn_enabled = true) 
# 아래를 향한다 
if turn_enabled 
turn_down 
end 
# 통행 가능한 경우 
if passable?(@x, @y, Input::DOWN) 
# 아래를 향한다 
turn_down 
# 좌표를 갱신 
@y += 1 
end 
end 
#-------------------------------------------------------------------------- 
# ● 왼쪽으로 이동 
# turn_enabled : 그 자리에서의 향해 변경을 허가하는 플래그 
#-------------------------------------------------------------------------- 
def move_left(turn_enabled = true) 
# 왼쪽을 향한다 
if turn_enabled 
turn_left 
end 
# 통행 가능한 경우 
if passable?(@x, @y, Input::LEFT) 
# 왼쪽을 향한다 
turn_left 
# 좌표를 갱신 
@x -= 1 
end 
end 
#-------------------------------------------------------------------------- 
# ● 오른쪽으로 이동 
# turn_enabled : 그 자리에서의 향해 변경을 허가하는 플래그 
#-------------------------------------------------------------------------- 
def move_right(turn_enabled = true) 
# 오른쪽을 향한다 
if turn_enabled 
turn_right 
end 
# 통행 가능한 경우 
if passable?(@x, @y, Input::RIGHT) 
# 오른쪽을 향한다 
turn_right 
# 좌표를 갱신 
@x += 1 
end 
end 
#-------------------------------------------------------------------------- 
# ● 위에 이동 
# turn_enabled : 그 자리에서의 향해 변경을 허가하는 플래그 
#-------------------------------------------------------------------------- 
def move_up(turn_enabled = true) 
# 위를 향한다 
if turn_enabled 
turn_up 
end 
# 통행 가능한 경우 
if passable?(@x, @y, Input::UP) 
# 위를 향한다 
turn_up 
# 좌표를 갱신 
@y -= 1 
end 
end 
#-------------------------------------------------------------------------- 
# ● 좌하에 이동 
#-------------------------------------------------------------------------- 
def move_lower_left 
# 방향 고정이 아닌 경우 
unless @direction_fix 
# 오른쪽 방향이었던 경우는 왼쪽을 , 오름새였던 경우는 아래를 향한다 
@direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::UP ? Input::DOWN : @direction) 
end 
# 하→왼쪽 , 좌→하의 어느 쪽인가의 코스가 통행 가능한 경우 
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or 
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN)) 
# 좌표를 갱신 
@x -= 1 
@y += 1 
end 
end 
#-------------------------------------------------------------------------- 
# ● 우하에 이동 
#-------------------------------------------------------------------------- 
def move_lower_right 
# 방향 고정이 아닌 경우 
unless @direction_fix 
# 좌향이었던 경우는 오른쪽을 , 오름새였던 경우는 아래를 향한다 
@direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::UP ? Input::DOWN : @direction) 
end 
# 하→오른쪽 , 우→하의 어느 쪽인가의 코스가 통행 가능한 경우 
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or 
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN)) 
# 좌표를 갱신 
@x += 1 
@y += 1 
end 
end 
#-------------------------------------------------------------------------- 
# ● 좌상에 이동 
#-------------------------------------------------------------------------- 
def move_upper_left 
# 방향 고정이 아닌 경우 
unless @direction_fix 
# 오른쪽 방향이었던 경우는 왼쪽을 , 하향이었던 경우는 위를 향한다 
@direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::DOWN ? Input::UP : @direction) 
end 
# 상→왼쪽 , 좌→상의 어느 쪽인가의 코스가 통행 가능한 경우 
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or 
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP)) 
# 좌표를 갱신 
@x -= 1 
@y -= 1 
end 
end 
#-------------------------------------------------------------------------- 
# ● 우상에 이동 
#-------------------------------------------------------------------------- 
def move_upper_right 
# 방향 고정이 아닌 경우 
unless @direction_fix 
# 좌향이었던 경우는 오른쪽을 , 하향이었던 경우는 위를 향한다 
@direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::DOWN ? Input::UP : @direction) 
end 
# 상→오른쪽 , 우→상의 어느 쪽인가의 코스가 통행 가능한 경우 
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or 
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP)) 
# 좌표를 갱신 
@x += 1 
@y -= 1 
end 
end 

attr_writer :move_speed 
attr_writer :step_anime 
end 

module Spriteset_Map_Module 
def setup_actor_character_sprites? 
return @setup_actor_character_sprites_flag != nil 
end 
def setup_actor_character_sprites(characters) 
if !setup_actor_character_sprites? 
index_game_player = 0 
@character_sprites.each_index do |i| 
if @character_sprites[i].character.instance_of?(Game_Player) 
index_game_player = i 
break 
end 
end 
for character in characters.reverse 
@character_sprites.unshift( 
Sprite_Character.new(@viewport1, character) 

end 
@setup_actor_character_sprites_flag = true 
end 
end 
end 

module Scene_Map_Module 
def setup_actor_character_sprites(characters) 
@spriteset.setup_actor_character_sprites(characters) 
end 
end 

module Game_Party_Module 
def set_transparent_actors(transparent) 
@transparent = transparent 
end 
def setup_actor_character_sprites 
if @characters == nil 
@characters = [] 
for i in 1 ... TRAIN_ACTOR_SIZE_MAX 
@characters.push(Game_Party_Actor.new) 
end 
end 
for i in 1 ... TRAIN_ACTOR_SIZE_MAX 
@characters[i - 1].setup(actors[i]) 
end 
if $scene.class.method_defined?('setup_actor_character_sprites') 
$scene.setup_actor_character_sprites(@characters) 
end 
end 
def update_party_actors 
setup_actor_character_sprites 
transparent = $game_player.transparent 
if transparent == false 
if TRANSPARENT_SWITCH 
transparent = $game_switches[TRANSPARENT_SWITCHES_INDEX] 
end 
end 
for character in @characters 
character.transparent = transparent 
character.move_speed = $game_player.move_speed 
character.step_anime = $game_player.step_anime 
character.update 
end 
end 
def moveto_party_actors( x, y ) 
setup_actor_character_sprites 
for character in @characters 
character.moveto( x, y ) 
end 
if @move_list == nil 
@move_list = [] 
end 
move_list_setup 
end 
def move_party_actors 
if @move_list == nil 
@move_list = [] 
move_list_setup 
end 
@move_list.each_index do |i| 
if @characters[i] != nil 
case @move_list[i].type 
when Input::DOWN 
@characters[i].move_down(@move_list[i].args[0]) 
when Input::LEFT 
@characters[i].move_left(@move_list[i].args[0]) 
when Input::RIGHT 
@characters[i].move_right(@move_list[i].args[0]) 
when Input::UP 
@characters[i].move_up(@move_list[i].args[0]) 
when DOWN_LEFT 
@characters[i].move_lower_left 
when DOWN_RIGHT 
@characters[i].move_lower_right 
when UP_LEFT 
@characters[i].move_upper_left 
when UP_RIGHT 
@characters[i].move_upper_right 
when JUMP 
@characters[i].jump(@move_list[i].args[0],@move_list[i].args[1]) 
end 
end 
end 
end 
class Move_List_Element 
def initialize(type,args) 
@type = type 
@args = args 
end 
def type() return @type end 
def args() return @args end 
end 
def move_list_setup 
for i in 0 .. TRAIN_ACTOR_SIZE_MAX 
@move_list[i] = nil 
end 
end 
def add_move_list(type,*args) 
@move_list.unshift(Move_List_Element.new(type,args)).pop 
end 
def move_down_party_actors(turn_enabled = true) 
move_party_actors 
add_move_list(Input::DOWN,turn_enabled) 
end 
def move_left_party_actors(turn_enabled = true) 
move_party_actors 
add_move_list(Input::LEFT,turn_enabled) 
end 
def move_right_party_actors(turn_enabled = true) 
move_party_actors 
add_move_list(Input::RIGHT,turn_enabled) 
end 
def move_up_party_actors(turn_enabled = true) 
move_party_actors 
add_move_list(Input::UP,turn_enabled) 
end 
def move_lower_left_party_actors 
move_party_actors 
add_move_list(DOWN_LEFT) 
end 
def move_lower_right_party_actors 
move_party_actors 
add_move_list(DOWN_RIGHT) 
end 
def move_upper_left_party_actors 
move_party_actors 
add_move_list(UP_LEFT) 
end 
def move_upper_right_party_actors 
move_party_actors 
add_move_list(UP_RIGHT) 
end 
def jump_party_actors(x_plus, y_plus) 
move_party_actors 
add_move_list(JUMP,x_plus, y_plus) 
end 
end 

module Game_Player_Module 
def update 
$game_party.update_party_actors 
super 
end 
def moveto( x, y ) 
$game_party.moveto_party_actors( x, y ) 
super( x, y ) 
end 
def move_down(turn_enabled = true) 
if passable?(@x, @y, Input::DOWN) 
$game_party.move_down_party_actors(turn_enabled) 
end 
super(turn_enabled) 
end 
def move_left(turn_enabled = true) 
if passable?(@x, @y, Input::LEFT) 
$game_party.move_left_party_actors(turn_enabled) 
end 
super(turn_enabled) 
end 
def move_right(turn_enabled = true) 
if passable?(@x, @y, Input::RIGHT) 
$game_party.move_right_party_actors(turn_enabled) 
end 
super(turn_enabled) 
end 
def move_up(turn_enabled = true) 
if passable?(@x, @y, Input::UP) 
$game_party.move_up_party_actors(turn_enabled) 
end 
super(turn_enabled) 
end 
def move_lower_left 
# 하→왼쪽 , 좌→하의 어느 쪽인가의 코스가 통행 가능한 경우 
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or 
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN)) 
$game_party.move_lower_left_party_actors 
end 
super 
end 
def move_lower_right 
# 하→오른쪽 , 우→하의 어느 쪽인가의 코스가 통행 가능한 경우 
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or 
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN)) 
$game_party.move_lower_right_party_actors 
end 
super 
end 
def move_upper_left 
# 상→왼쪽 , 좌→상의 어느 쪽인가의 코스가 통행 가능한 경우 
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or 
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP)) 
$game_party.move_upper_left_party_actors 
end 
super 
end 
def move_upper_right 
# 상→오른쪽 , 우→상의 어느 쪽인가의 코스가 통행 가능한 경우 
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or 
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP)) 
$game_party.move_upper_right_party_actors 
end 
super 
end 
def jump(x_plus, y_plus) 
# 새로운 좌표를 계산 
new_x = @x + x_plus 
new_y = @y + y_plus 
# 가산치가 (0,0) 의 경우인가 , 점프처가 통행 가능한 경우 
if (x_plus == 0 and y_plus == 0) or passable?(new_x, new_y, 0) 
$game_party.jump_party_actors(x_plus, y_plus) 
end 
super(x_plus, y_plus) 
end 

attr_reader :move_speed 
attr_reader :step_anime 
end 

end # module Train_Actor 

class Game_Party 
include Train_Actor::Game_Party_Module 
end 

class Game_Player 
include Train_Actor::Game_Player_Module 
end 

class Spriteset_Map 
include Train_Actor::Spriteset_Map_Module 
end 

class Scene_Map 
include Train_Actor::Scene_Map_Module 
end 
 

 

출처:https://blog.naver.com/jsg110370/221414912045

Who's 델타유튜브

profile

안녕하세요 현재 RPG 만들기 VX,RPG 만들기 VX AEC, RPG 만들기 XP를 보유하고있는 델타유튜브입니다.

다른툴도 언젠가는 얻게 되겠죠? ㅋㅋ

저의 채널 많이구독해주세요 링크:https://www.youtube.com/channel/UCxzQw1sP9_1PtwIW6Ar-gbw


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 플러그인 자료 게시물 작성시 주의사항 습작 2015.10.25 593
81 기타 이벤트 생성 플러그인 15 file 러닝은빛 2015.10.31 1482
80 기타 Refresh Manager 8 file 러닝은빛 2016.05.24 877
79 기타 Battle Engine Core , Action Sequence Pack 2 [전투 관련 엔진] 7 가시밭 2015.11.20 2714
» 기타 RPG 만들기 동료 동행 스크립트 델타유튜브 2019.12.22 83
77 그래픽 전투 배경 미 설정 시 VXA와 같은 블러 효과 적용 | Battle Background Radial Blur file 러닝은빛 2018.12.18 234
76 맵/타일 RPG MAKER MV 맵타일 3D 렌더링 플러그인 유즈미짱 2019.12.08 201
75 이름입력 한글 이름 입력의 처리 21 file 러닝은빛 2015.10.20 2551
74 맵/타일 미니맵 플러그인 7 file Lukey 2018.01.27 1052
73 그래픽 애니메이션 바로 정지 2 러닝은빛 2019.05.07 413
72 메시지 메시지 Pause 표시 이미지 위치 변경 file 러닝은빛 2019.05.07 168
71 기타 게임 속도 조절 러닝은빛 2019.05.07 638
70 전투 적 HP 표시 플러그인 6 file 부초 2016.07.19 2133
69 기타 게임 스크린샷 파일을 만드는 플러그인 1 file 러닝은빛 2015.12.23 874
68 기타 텍스트 입력창 file 러닝은빛 2016.08.09 1108
67 그래픽 Wave Filter 4 러닝은빛 2016.01.14 1112
66 그래픽 Etude87 Icon Resize 습작 2016.02.27 682
65 전투 한글 데미지 표시 6 file 러닝은빛 2018.07.09 1015
64 그래픽 Simple Light 4 file 러닝은빛 2016.02.13 1361
63 메뉴 게임종료 메뉴 추가 5 file LuD 2016.01.13 1608
62 맵/타일 동적 맵 타일 수정 플러그인 1 베지테리안카카오 2018.07.17 421
Board Pagination Prev 1 2 3 4 5 Next
/ 5