XP 스크립트

이동 및 탈것
2009.02.21 13:32

기차스크립트

조회 수 1757 추천 수 2 댓글 6
안녕하세요? 여기오면서 스크립트 올려봅니다 흔희 퍼저 있는 스크립트이지만 ..-ㅁ-..;;; 헉 중복이면 죄송이용;
재게임엔 아무 필요없지만 ..잘쓰세요 ^^ 펫같은거로 쓰면좋음
----------------------ㅇ----------------------------------------------------------ㅇㄴ
#==============================================================================
# ■ 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

Comment '6'
  • ?
    롤러K코스터 2010.07.25 15:33

    와~ 이것도 좋아보인다!

  • ?
    롤러K코스터 2010.07.25 15:35

    그런데 부탁이있어요...

    제가 스크립트를 하는법을가르쳐주면 않됄까요??

    부탁입니다...ㅠㅠ

  • ?
    메딕 2011.01.28 12:40

    찾고있었는데 ㄳ

  • ?
    연어 2011.01.30 17:43

    완!!!!!!!!!!!!!!!!!!!!!!!!!!!!점 감사합니당~~

  • ?
    백개의검 2011.02.09 23:44

    잘되네요 감사합니다

  • ?
    GM인온라인 2014.05.07 16:38
    죄송한데 투명 상태용 스위치는 어떻게 작동 시키나요?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6153
541 기타 다중 파노라마 사용 by Guillaume777 file 백호 2009.02.22 886
540 능력치 올리기 스크립트 21 file 아방스 2007.11.09 3447
539 기타 능력치 무한대 스크립트 (따로 넣을필요없음) 2 백호 2009.02.21 1027
538 온라인 넷플레이1.7.0+abs5.5+한챗 49 쀍뛝쒧 2009.01.24 7286
537 메뉴 넷플레이 업그레이드됀 메뉴 스크립트 4 백호 2009.02.22 2040
536 HUD 넷플레이 HUD표시 2 file 백호 2009.02.22 3094
535 넷플2.0(펌) 3번째 4 오동훈 2008.02.25 1303
534 넷플2.0(펌) 2번째 2 오동훈 2008.02.25 1498
533 넷플2.0(펌) 1 오동훈 2008.02.25 1543
532 전투 깔끔한형식의 Asan'Tear배틀시스탬 4 file 콩밥 2010.09.29 4124
» 이동 및 탈것 기차스크립트 6 백호 2009.02.21 1757
530 스킬 기술문서(스킬 습득 아이템) 7 ok하승헌 2010.02.18 2132
529 기타 기본설정 강화ㄴ 1 백호 2009.02.21 1047
528 메뉴 기본메뉴 뜯어고친것. (스샷추가) 6 file 백호 2009.02.22 4314
527 이동 및 탈것 금금님 요청 대쉬 1 백호 2009.02.22 1383
526 이동 및 탈것 그림자 스크립트 13 file 백호 2009.02.22 3540
525 이동 및 탈것 그래픽의 크기로 좁은길은 못지나가게한다. 7 file 백호 2009.02.21 1816
524 이동 및 탈것 그래픽 변경 데쉬 3 file 백호 2009.02.22 2499
523 기타 광물캐기 시스템 v2 3 백호 2009.02.22 1775
522 기타 광물캐기 스크립트 1 file 백호 2009.02.22 1850
Board Pagination Prev 1 ... 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 52 Next
/ 52