VX 스크립트

이동 및 탈것
2009.01.13 18:04

VX 기차 스크립트

profile
조회 수 4473 추천 수 0 댓글 28



#==============================================================================
# ■ 人物跟随
#------------------------------------------------------------------------------
#
#   本脚本来自www.66RPG.com,使用和转载请保留此信息
#
#   作者:fukuyama  
#
#   移植:ONEWateR
#
#==============================================================================
module Train_Actor

#是否使用停止跟随的方法,也就是说,这里false改为true的时候,如果TRANSPARENT_SWITCHES_INDEX
#开关打开,跟随的人物就消失了(其实只是变成透明而已)

TRANSPARENT_SWITCH = true
TRANSPARENT_SWITCHES_INDEX = 1
#举例:第一个为true,第二个为20,则打开20号开关,后面的人都没了。

#跟随人数的最大数目,可以更改为2、3什么的。
TRAIN_ACTOR_SIZE_MAX = 4

# 定数
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_index = actor.character_index
@character_name = actor.character_name
@priority_type = 1
else
@character_name = ""
@character_index = 0
@priority_type = 1
end
# 不透明度と合成方法を初期化
@opacity = 255
@blend_type = 0
end
#--------------------------------------------------------------------------
# ● 下に移動
# turn_enabled : その場での向き変更を許可するフラグ
#--------------------------------------------------------------------------
def move_down(turn_enabled = true)
# 下を向く
if turn_enabled
turn_down
end
# 通行可能な場合
if new_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 new_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 new_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 new_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 (new_passable?(@x, @y, Input::DOWN) and new_passable?(@x, @y + 1, Input::LEFT)) or
(new_passable?(@x, @y, Input::LEFT) and new_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 (new_passable?(@x, @y, Input::DOWN) and new_passable?(@x, @y + 1, Input::RIGHT)) or
(new_passable?(@x, @y, Input::RIGHT) and new_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 (new_passable?(@x, @y, Input::UP) and new_passable?(@x, @y - 1, Input::LEFT)) or
(new_passable?(@x, @y, Input::LEFT) and new_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 (new_passable?(@x, @y, Input::UP) and new_passable?(@x, @y - 1, Input::RIGHT)) or
(new_passable?(@x, @y, Input::RIGHT) and new_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($game_party.members[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
if $game_player.dash?
character.move_speed = $game_player.move_speed*1.25
else
character.move_speed = $game_player.move_speed
end
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 new_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 new_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 new_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 new_passable?(@x, @y, Input::UP)
$game_party.move_up_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_lower_left
# 下→左、左→下 のどちらかのコースが通行可能な場合
if (new_passable?(@x, @y, Input::DOWN) and new_passable?(@x, @y + 1, Input::LEFT)) or
(new_passable?(@x, @y, Input::LEFT) and new_passable?(@x - 1, @y, Input::DOWN))
$game_party.move_lower_left_party_actors
end
super
end
def move_lower_right
# 下→右、右→下 のどちらかのコースが通行可能な場合
if (new_passable?(@x, @y, Input::DOWN) and new_passable?(@x, @y + 1, Input::RIGHT)) or
(new_passable?(@x, @y, Input::RIGHT) and new_passable?(@x + 1, @y, Input::DOWN))
$game_party.move_lower_right_party_actors
end
super
end
def move_upper_left
# 上→左、左→上 のどちらかのコースが通行可能な場合
if (new_passable?(@x, @y, Input::UP) and new_passable?(@x, @y - 1, Input::LEFT)) or
(new_passable?(@x, @y, Input::LEFT) and new_passable?(@x - 1, @y, Input::UP))
$game_party.move_upper_left_party_actors
end
super
end
def move_upper_right
# 上→右、右→上 のどちらかのコースが通行可能な場合
if (new_passable?(@x, @y, Input::UP) and new_passable?(@x, @y - 1, Input::RIGHT)) or
(new_passable?(@x, @y, Input::RIGHT) and new_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 new_passable?(new_x, new_y, 0)
$game_party.jump_party_actors(x_plus, y_plus)
end
super(x_plus, y_plus)
end
attr_accessor :move_speed
attr_accessor :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
class Game_Character
def new_passable?(x, y, d)
new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
unless $game_map.valid?(new_x, new_y)
return false
end
x = $game_map.round_x(x)                        # 横方向循环修正
y = $game_map.round_y(y)                        # 纵方向循环修正
return false unless $game_map.valid?(x, y)      # 地图外?
return true if @through or debug_through?       # 穿越 ON?
return false unless map_passable?(new_x, new_y)         # 地图不能通行?
return false if collide_with_characters?(new_x, new_y)  # 与角色冲突?
return true                                     # 可以通行
end
end





Comment '28'
  • ?
    비니 2009.01.13 19:26
    오오 재가원하던거네요 그리고 영광의 첫코
  • ?
    후르츠파르페 2009.01.14 00:36
    ㅎㅎ 좋네요.. 하지만 제게임에는 적용이 안된다는..ㅎㅎ
  • ?
    스커드 2009.01.14 13:03
    좋네요. 전 안쓸거지만..'ㅅ'
  • ?
    칼리아 2009.01.14 17:21
    ㅎㅎvx도 생겼네..
  • ?
    배군 2009.01.25 11:20
    기차스크립트가 뭔가했는데 이거였군요.....
    전에도 이거랑 똑같은 스크립트 있었는데 사람들이 처음본것처럼 말하는.....
    다만 스위치를 켜서 기차기능을 잠시 없에는 기능이 있군요.
  • ?
    훈덕 2009.01.30 08:36
    기차가 뭔가 했는데 "기차놀이" 였군요.
    동료들이 줄줄 따라오는...
  • ?
    쏘쥬맛갈비 2009.02.02 12:38
    감사합니다
  • ?
    불독 2009.02.02 14:47
    아... 기차놀이...였구나...!  난 또 무슨 새로운 탈것 스크립트라는 줄 알았네...ㅋㅋ
  • ?
    마녀씨츠 2009.02.04 09:58
    감사합니다.
  • ?
    단기천리 2009.04.06 17:15
    아 두시간 만에야 찾았다! 기차 스크립트가 이름이었군 ...  휴
  • ?
    꼬맹씨 2009.06.12 14:37

    파티원 따라다니는 스크립트랑 별 차이 없는 것 같당...

  • ?
    보라앙마 2009.06.27 20:51

    저도 타는 기차말하는줄 ; ㅎ

  • ?
    1000℃ 복숭아 2009.12.31 14:58

    안돼요 ㅠㅠ

     

  • ?
    언제나웃음 2010.01.01 19:52

    기차 기능이라길래 들어와봤더니

     이런 기능 이었군요 ㅎ

  • ?
    타락영혼 2010.01.27 14:05

    ㅋㅋ 모두들 타는기차 로 알고 들온듯

  • ?
    forest 2010.02.21 23:31

    저도.. ㅎㅎㅎ

  • ?
    에르나큘 2010.10.02 08:24

    스위치 창은 어떻게 키나요?ㅜㅜ

  • ?
    김교쿠 2010.10.17 21:01

    따봉이네 ㅎㅎ

  • ?
    자수정10 2010.11.09 19:04

    좋은거감사요..저이스크립트찾고있었는대..

  • ?
    이치노세 2010.11.29 19:12

    ㄳㄳㄳ

  • ?
    이치노세 2010.12.08 17:47

    근데 궁금한게 있는데 5명이상은 못따라오나?

  • ?
    시옷청룡 2010.12.21 20:50

    감사합니다ㅋ

  • ?
    시옷청룡 2010.12.22 18:04

    감사합니다~

  • ?
    mymy 2011.01.18 18:41

    ㄳㄳ 근데 대각선이동하면 안따라옴ㅋㅋ

    그러므로 전 패스

  • ?
    몽키우동 2011.02.16 14:59

    TRAIN_ACTOR_SIZE_MAX = 4TRAIN_ACTOR_SIZE_MAX = 7로 했는데 7명이 안따라오는데

    어떻게 하면 7명쯤 여러명이 따라오죠?

  • ?
    rsh9894 2011.05.29 17:08

    찾고있었는데 감사합니다^^ 되는지 안되는지 한번 해봐야겠네요

  • ?
    rsh9894 2011.05.30 23:44

    사실 스크립트중에서 가장 충돌과 에러가 많이 일어나는 스크립트가 기차 스크립트라고 할 수 있죠ㅎㅎ 저도 역시 안되네요ㅜ

  • ?
    good2010 2011.07.27 23:38

    오올 ㅋㅋㅋ 감사합니다 ~


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 3 습작 2012.12.24 5453
417 아이템 아이템 획득 팝업 스크립트 24 아방스 2009.01.07 3815
416 전투 VLAD ABS [액알 시스템] 65 아방스 2009.01.07 12570
» 이동 및 탈것 VX 기차 스크립트 28 아방스 2009.01.13 4473
414 상태/속성 넓어진 상태창 v1.0 11 file 아방스 2009.01.20 4540
413 메뉴 커서 모양 바꾸는 스크립트 16 아방스 2009.01.20 3960
412 메뉴 레벨업 시 자세한 정보 나오는 스크립트 23 아방스 2009.01.20 3897
411 타이틀/게임오버 타이틀 메뉴 스크립트 50 아방스 2009.01.20 7508
410 메시지 메시지 표시 시스템 [NMS3] 31 아방스 2009.01.24 6251
409 타이틀/게임오버 타이틀 업그레이드 byMOG 16 *ps인간 2009.01.26 5662
408 아이템 레벨,능력치,아이템소지갯수,소지금의 한계돌파스크립트 21 file 이탁 2009.01.28 4549
407 맵/타일 맵에 이벤트 뿌리기 입니다. 7 file 허걱 2009.01.31 3830
406 기타 책 읽기 스크립트. 19 허걱 2009.01.31 4492
405 기타 Staff Roll 13 file 허걱 2009.01.31 3524
404 미니맵 KGC 미니맵 스크립트 (한글번역) 45 file 레오 2009.02.01 6557
403 전투 사이드뷰배틀3.3 + ATB1.1 스크립트. 65 할렘 2009.02.01 10952
402 상점 보관함 스크립트 43 file 허걱 2009.02.02 5167
401 상점 상점을 색다르게 바꿔주는 스크립트 34 file 할렘 2009.02.02 6304
400 메시지 MessageSound v2.0 글자에 소리 다다닥 스크립트 21 할렘 2009.02.02 3511
399 스킬 스킬 필요 조건(번역) 23 file 훈덕 2009.02.03 4646
398 기타 VX서비스팩1 6 훈덕 2009.02.03 2808
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 32 Next
/ 32