VX 스크립트

이동 및 탈것
2009.01.13 18:04

VX 기차 스크립트

profile
조회 수 4467 추천 수 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 5398
237 스킬 미완성 구버전. 2칸 위에 있는 글을 이용해주세요. 7 Last H 2009.02.23 1925
236 전투 반사 스테이트 -KGC 4 카르와푸딩의아틀리에 2009.09.12 2661
235 스킬 발상의전환 : 스킬과 아이템의 공격횟수를 동시에 증가시키기 14 star211 2010.02.16 3179
234 그래픽 밤낮 변환 VX용 26 독도2005 2008.03.23 4314
233 그래픽 밤낮 변환 스크립트 18 kram3 2008.01.31 3762
232 기타 밤낮의 변화에 따른 전투배경의 변화 스크립트 10 file 카르와푸딩의아틀리에 2009.07.01 2948
231 장비 방어구 착용시 최대HP, MP증가 스크립트(턴알) 3 file 기관차 2014.11.06 1222
230 전투 방어를 했을경우 hp / mp 회복 되도록 하는 스크립트 15 아방스 2008.01.22 3746
229 전투 방패가없어? 그럼 방어못하게하는 스크립트. 16 file 할렘 2009.02.07 3425
228 기타 배틀신에서 곡 넘기기 2 rukan 2009.07.02 1757
227 배틀할때 몬스터의 HP표시 !! 5 file 미카엘 2008.08.17 7517
226 기타 범용 게이지 묘화 - KGC 14 file 카르와푸딩의아틀리에 2009.08.19 3476
225 베틀 스크린 톤 체인지?? 무슨 말? 4 Man... 2008.10.28 1616
224 HUD 변수 표시 HUD 8 Tofuman 2009.02.15 2469
223 상점 보관함 스크립트 43 file 허걱 2009.02.02 5161
222 이동 및 탈것 부드럽게 이동, 8 방향이동 스크립트 25 file 사람이라면? 2010.08.16 3795
221 전투 불사신(무적) 스크립트 9 file 미얼 2009.10.29 3198
220 기타 블랙잭, 룰렛, 포커 스크립트 종합 9 file 도심 2010.08.22 2643
219 기타 블록 미니게임 11 file 사람이라면? 2010.08.15 2269
218 기타 빛 이펙트 71 file DEVIL<Li Patanis Roni Kraudus> 2008.06.06 5861
Board Pagination Prev 1 ... 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 32 Next
/ 32