XP 스크립트


동료가 기차처럼 따라다니는 스크립트!



Main을 오른쪽클릭해서 삽입을 한후
붙여넣으세요....................






#==============================================================================
# ■ 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


Who's 백호

?

이상혁입니다.

http://elab.kr

Atachment
첨부 '1'
Comment '7'

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6153
481 기타 다중 파노라마 사용 by Guillaume777 file 백호 2009.02.22 886
480 이동 및 탈것 대쉬 밑에 꺼 MP가 깍기는거 1 백호 2009.02.22 1467
479 전투 대전게임 Fighter 1 file 백호 2009.02.21 1436
478 기타 대화 글씨가 한글자씩 나오는 스크립트 2 백호 2009.02.22 2464
477 기타 대화창 글자 한글자씩뜨는 스크립트 7 백호 2009.02.22 2185
476 메시지 대화창에 얼굴 그래픽 띠우기 73 아방스 2007.11.09 7119
475 이름입력 대화창에 얼굴, 이름 띄우기 37 킬라롯 2008.11.09 7496
474 기타 대화창에 얼굴그래픽 스크립트 25 file 백호 2009.02.21 4137
473 기타 더블애니메이션 스크립트 1 백호 2009.02.22 1593
472 미니맵 던전용 미니맵 스크립트[사용법 추가] 16 file 배포 2008.03.02 3443
471 전투 데미지 출력 스크립트 6 백호 2009.02.22 1810
470 기타 데미지 출력 스크립트 예제 9 file 백호 2009.02.22 1559
469 전투 데미지 폰트변경 7 카르닉스 2010.02.26 2600
468 전투 데미지 표시 개조 8 file 백호 2009.02.21 2532
467 전투 데미지마루 백호 2009.02.21 1163
466 이동 및 탈것 데쉬 기능 스크립트 8 file 백호 2009.02.21 1508
465 기타 데이터베이스 자체 제한 해체 XP Ver. 13 THE풀잎 2010.07.04 2171
464 이동 및 탈것 도트이동 5 file 허걱 2009.08.19 2889
463 이동 및 탈것 동료들끼리 따라오는 스크립트 41 file ◐아이흥행 2010.01.23 3714
» 기타 동료들이 기차처럼 줄줄 따라온다!? 7 file 백호 2009.02.21 1990
Board Pagination Prev 1 ... 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ... 52 Next
/ 52