赞 | 45 |
VIP | 0 |
好人卡 | 0 |
积分 | 146 |
经验 | 0 |
最后登录 | 2024-11-6 |
在线时间 | 2191 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 14561
- 在线时间
- 2191 小时
- 注册时间
- 2019-1-24
- 帖子
- 1123
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 miantouchi 于 2019-11-15 07:28 编辑
最近正在整理大地图传送部分,但是发现和以前用的人物跟随脚本发生了冲突,
报错内容如下图,提示没有定义那个方法并且为nil。
经过排查后发现报错行在传送脚本163行引起的
话说我把这行打上注释,暂时也能用,但是还是希望解决下冲突点,和冲突的原因
工程以上传。
#============================================================================== # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息 #============================================================================== # 自定义内容解释: # TOWNS[编号]=["地名,可以随便写",开关编号,[传送去的地图id,传送去的地图x, # 传送去的地图y],角色朝向] # # 编号请按照0、1、2、3……顺序往下排布 # 当编号的开关打开的时候,才可以选择这个传送地点 # 角色朝向,2为下,4为左,6为右,8为上,具体可以参考自己数字小键盘的方向和数字关系 # 如果是其他方向请自己改。 # # 需要制作脚本,请点击66rpg.com最底部的QQ交谈 # # 使用方法:在需要传送的传送门、传送石、传送羽毛、传送旅店一类的地方使用公共事件: # 呼叫脚本:$scene = Scene_Teleport.new # # 制作者:柳柳 #============================================================================== TOWNS=[] TOWNS[0]=["古德城堡东门",1,[1,2,3],2] TOWNS[1]=["古德城堡西门",2,[1,2,5],4] TOWNS[2]=["修道院门口",3,[3,3,6],4] TOWNS[3]=["女神遗迹南口",4,[4,2,6],4] TOWNS[4]=["圣天城骑士团练兵场",5,[5,2,6],4] TOWNS[5]=["许愿之塔",6,[6,9,6],4] #============================================================================== # ■ Window_Teleport #------------------------------------------------------------------------------ # 处理传送的窗口 #============================================================================== class Window_Teleport < Window_Selectable #-------------------------------------------------------------------------- # ● 初始化对像 #-------------------------------------------------------------------------- def initialize super(640,640,64,64) self.contents = Bitmap.new(width, height) self.opacity = 180 get_towns draw_towns @column_max = 1 end #-------------------------------------------------------------------------- # ● 获取可到达的城镇和窗口大小 #-------------------------------------------------------------------------- def get_towns @carol3_towns = [] @width_temp = 0 @cont_use = false for town in TOWNS if $game_switches[town[1]]==true @carol3_towns.push(town) if contents.text_size(town[0]).width >= @width_temp @width_temp = contents.text_size(town[0]).width end end end @item_max = @carol3_towns.size if @item_max == 0 @carol3_towns[0] = ["没有可以传送的地方",1,[1,1,1]] @width_temp = contents.text_size(@carol3_towns[0][0]).width @item_max = 1 @cont_use = true end self.width = [@width_temp+32,480].min self.height = [(@item_max+1)*32,360].min self.x = (640-self.width)/2 self.y = (480-self.height)/2 self.contents = Bitmap.new(width-32,row_max*32) end #-------------------------------------------------------------------------- # ● 描绘城镇名称 #-------------------------------------------------------------------------- def draw_towns for i in 0...@carol3_towns.size self.contents.draw_text(0,i*32,@width_temp,32,@carol3_towns[i][0],1) end end #-------------------------------------------------------------------------- # ● 返回的内容 #======================================================================== # ● 地图编号 #-------------------------------------------------------------------------- def map_id return @carol3_towns[self.index][2][0] end #-------------------------------------------------------------------------- # ● 地图x坐标 #-------------------------------------------------------------------------- def map_x return @carol3_towns[self.index][2][1] end #-------------------------------------------------------------------------- # ● 地图y坐标 #-------------------------------------------------------------------------- def map_y return @carol3_towns[self.index][2][2] end #-------------------------------------------------------------------------- # ● 角色朝向 #-------------------------------------------------------------------------- def map_direction return @carol3_towns[self.index][2][3] end #-------------------------------------------------------------------------- # ● 判断是否一个城市都没有 #-------------------------------------------------------------------------- def cant_use? return @cont_use end end #============================================================================== # ■ Scene_Teleport #------------------------------------------------------------------------------ # 处理传送执行的类 #============================================================================== class Scene_Teleport #-------------------------------------------------------------------------- # ● 主处理 #-------------------------------------------------------------------------- def main $game_system.se_play($data_system.decision_se) @carol3_trans_white = false #p "1" @carol3_map_sprite = Spriteset_Map.new #p "2" @carol3_teleport_window = Window_Teleport.new #p "3" if @carol3_teleport_window.cant_use? @carol3_teleport_window.index = -1 else @carol3_teleport_window.index = 0 end @carol3_teleport_window.active = true Graphics.transition loop do Graphics.update Input.update carol3_update if $scene != self break end end #p "4" if @carol3_trans_white==true @carol3_white_sprite = Sprite.new @carol3_white_sprite.bitmap = Bitmap.new(640,480) @carol3_white_sprite.opacity = 0 @carol3_white_sprite.bitmap.fill_rect(0, 0, 640, 480, Color.new(255,255,255,255)) for i in 0..20 @carol3_white_sprite.opacity += 15 @carol3_teleport_window.opacity -= 12 @carol3_teleport_window.contents_opacity -= 12 Graphics.update end Graphics.freeze Graphics.transition(0) Graphics.update @carol3_map_sprite.dispose $game_map.setup($game_temp.player_new_map_id) $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y) $game_player.turn_down $game_player.straighten $game_map.autoplay Graphics.frame_reset for i in 0..20 @carol3_white_sprite.opacity -= 15 Graphics.update end @carol3_white_sprite.dispose @carol3_teleport_window.dispose Graphics.freeze else Graphics.freeze @carol3_teleport_window.dispose @carol3_map_sprite.dispose end end #-------------------------------------------------------------------------- # ● 刷新画面 #-------------------------------------------------------------------------- def carol3_update @carol3_teleport_window.update if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new return end if Input.trigger?(Input::C) if @carol3_teleport_window.index == -1 $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new return else $game_temp.player_new_map_id = @carol3_teleport_window.map_id $game_temp.player_new_x = @carol3_teleport_window.map_x $game_temp.player_new_y = @carol3_teleport_window.map_y $game_temp.player_new_direction = @carol3_teleport_window.map_direction $game_temp.player_transferring = true $game_temp.transition_processing = true $game_temp.transition_name = "" $scene = Scene_Map.new @carol3_trans_white = true Audio.se_play("Audio/SE/" + "018-Teleport01",100,100) return end end end end #============================================================================== # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息 #==============================================================================
#==============================================================================
# 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
#==============================================================================
# 自定义内容解释:
# TOWNS[编号]=["地名,可以随便写",开关编号,[传送去的地图id,传送去的地图x,
# 传送去的地图y],角色朝向]
#
# 编号请按照0、1、2、3……顺序往下排布
# 当编号的开关打开的时候,才可以选择这个传送地点
# 角色朝向,2为下,4为左,6为右,8为上,具体可以参考自己数字小键盘的方向和数字关系
# 如果是其他方向请自己改。
#
# 需要制作脚本,请点击66rpg.com最底部的QQ交谈
#
# 使用方法:在需要传送的传送门、传送石、传送羽毛、传送旅店一类的地方使用公共事件:
# 呼叫脚本:$scene = Scene_Teleport.new
#
# 制作者:柳柳
#==============================================================================
TOWNS=[]
TOWNS[0]=["古德城堡东门",1,[1,2,3],2]
TOWNS[1]=["古德城堡西门",2,[1,2,5],4]
TOWNS[2]=["修道院门口",3,[3,3,6],4]
TOWNS[3]=["女神遗迹南口",4,[4,2,6],4]
TOWNS[4]=["圣天城骑士团练兵场",5,[5,2,6],4]
TOWNS[5]=["许愿之塔",6,[6,9,6],4]
#==============================================================================
# ■ Window_Teleport
#------------------------------------------------------------------------------
# 处理传送的窗口
#==============================================================================
class Window_Teleport < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(640,640,64,64)
self.contents = Bitmap.new(width, height)
self.opacity = 180
get_towns
draw_towns
@column_max = 1
end
#--------------------------------------------------------------------------
# ● 获取可到达的城镇和窗口大小
#--------------------------------------------------------------------------
def get_towns
@carol3_towns = []
@width_temp = 0
@cont_use = false
for town in TOWNS
if $game_switches[town[1]]==true
@carol3_towns.push(town)
if contents.text_size(town[0]).width >= @width_temp
@width_temp = contents.text_size(town[0]).width
end
end
end
@item_max = @carol3_towns.size
if @item_max == 0
@carol3_towns[0] = ["没有可以传送的地方",1,[1,1,1]]
@width_temp = contents.text_size(@carol3_towns[0][0]).width
@item_max = 1
@cont_use = true
end
self.width = [@width_temp+32,480].min
self.height = [(@item_max+1)*32,360].min
self.x = (640-self.width)/2
self.y = (480-self.height)/2
self.contents = Bitmap.new(width-32,row_max*32)
end
#--------------------------------------------------------------------------
# ● 描绘城镇名称
#--------------------------------------------------------------------------
def draw_towns
for i in 0...@carol3_towns.size
self.contents.draw_text(0,i*32,@width_temp,32,@carol3_towns[i][0],1)
end
end
#--------------------------------------------------------------------------
# ● 返回的内容
#========================================================================
# ● 地图编号
#--------------------------------------------------------------------------
def map_id
return @carol3_towns[self.index][2][0]
end
#--------------------------------------------------------------------------
# ● 地图x坐标
#--------------------------------------------------------------------------
def map_x
return @carol3_towns[self.index][2][1]
end
#--------------------------------------------------------------------------
# ● 地图y坐标
#--------------------------------------------------------------------------
def map_y
return @carol3_towns[self.index][2][2]
end
#--------------------------------------------------------------------------
# ● 角色朝向
#--------------------------------------------------------------------------
def map_direction
return @carol3_towns[self.index][2][3]
end
#--------------------------------------------------------------------------
# ● 判断是否一个城市都没有
#--------------------------------------------------------------------------
def cant_use?
return @cont_use
end
end
#==============================================================================
# ■ Scene_Teleport
#------------------------------------------------------------------------------
# 处理传送执行的类
#==============================================================================
class Scene_Teleport
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
$game_system.se_play($data_system.decision_se)
@carol3_trans_white = false
#p "1"
@carol3_map_sprite = Spriteset_Map.new
#p "2"
@carol3_teleport_window = Window_Teleport.new
#p "3"
if @carol3_teleport_window.cant_use?
@carol3_teleport_window.index = -1
else
@carol3_teleport_window.index = 0
end
@carol3_teleport_window.active = true
Graphics.transition
loop do
Graphics.update
Input.update
carol3_update
if $scene != self
break
end
end
#p "4"
if @carol3_trans_white==true
@carol3_white_sprite = Sprite.new
@carol3_white_sprite.bitmap = Bitmap.new(640,480)
@carol3_white_sprite.opacity = 0
@carol3_white_sprite.bitmap.fill_rect(0, 0, 640, 480, Color.new(255,255,255,255))
for i in 0..20
@carol3_white_sprite.opacity += 15
@carol3_teleport_window.opacity -= 12
@carol3_teleport_window.contents_opacity -= 12
Graphics.update
end
Graphics.freeze
Graphics.transition(0)
Graphics.update
@carol3_map_sprite.dispose
$game_map.setup($game_temp.player_new_map_id)
$game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
$game_player.turn_down
$game_player.straighten
$game_map.autoplay
Graphics.frame_reset
for i in 0..20
@carol3_white_sprite.opacity -= 15
Graphics.update
end
@carol3_white_sprite.dispose
@carol3_teleport_window.dispose
Graphics.freeze
else
Graphics.freeze
@carol3_teleport_window.dispose
@carol3_map_sprite.dispose
end
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def carol3_update
@carol3_teleport_window.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
if @carol3_teleport_window.index == -1
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
else
$game_temp.player_new_map_id = @carol3_teleport_window.map_id
$game_temp.player_new_x = @carol3_teleport_window.map_x
$game_temp.player_new_y = @carol3_teleport_window.map_y
$game_temp.player_new_direction = @carol3_teleport_window.map_direction
$game_temp.player_transferring = true
$game_temp.transition_processing = true
$game_temp.transition_name = ""
$scene = Scene_Map.new
@carol3_trans_white = true
Audio.se_play("Audio/SE/" + "018-Teleport01",100,100)
return
end
end
end
end
#==============================================================================
# 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
#==============================================================================
#========================================================================== # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息 [url]www.rgss.cn[/url] 同能网 #========================================================================== # ———————————————————————————————————— # ▼▲▼ XRXS13. パーティ列車移動 ver.1.02 ▼▲▼ # by fukuyama # # Train_Actor # # [url]http://www4.big.or.jp/~fukuyama/rgss/Train_Actor.txt[/url] # module Train_Actor #是否使用停止跟随的方法,也就是说,这里false改为true的时候,如果 #TRANSPARENT_SWITCHES_INDEX #开关打开,跟随的人物就消失了(其实只是变成透明而已) TRANSPARENT_SWITCH = true TRANSPARENT_SWITCHES_INDEX = 20 #举例:第一个为true,第二个为20,则打开20号开关,后面的人都没了。 #跟随人数的最大数目,可以更改为2、3什么的。 TRAIN_ACTOR_SIZE_MAX = 4 # 定数 #Input::DOWN = 2 #Input::LEFT = 4 #Input::RIGHT = 6 #Input::UP = 6 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 Scene_Menu_Module def setup_actor_character_sprites(characters) @spriteset.setup_actor_character_sprites(characters) end end # 物品 module Scene_Item_Module def setup_actor_character_sprites(characters) @spriteset.setup_actor_character_sprites(characters) end end # 特技 module Scene_Skill_Module def setup_actor_character_sprites(characters) @spriteset.setup_actor_character_sprites(characters) end end # 装备 module Scene_Equip_Module def setup_actor_character_sprites(characters) @spriteset.setup_actor_character_sprites(characters) end end # 状态 module Scene_Status_Module def setup_actor_character_sprites(characters) @spriteset.setup_actor_character_sprites(characters) end end # 结束 module Scene_End_Module def setup_actor_character_sprites(characters) @spriteset.setup_actor_character_sprites(characters) end end # 存档 module Scene_Save_Module def setup_actor_character_sprites(characters) @spriteset.setup_actor_character_sprites(characters) end end # 商店 module Scene_Shop_Module def setup_actor_character_sprites(characters) @spriteset.setup_actor_character_sprites(characters) end end module Scene_BestBug_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 #仿小飞侠 class Scene_Menu include Train_Actor::Scene_Menu_Module end class Scene_Item include Train_Actor::Scene_Item_Module end class Scene_Skill include Train_Actor::Scene_Skill_Module end class Scene_Status include Train_Actor::Scene_Status_Module end class Scene_Equip include Train_Actor::Scene_Equip_Module end class Scene_End include Train_Actor::Scene_End_Module end class Scene_Save include Train_Actor::Scene_Save_Module end class Scene_Shop include Train_Actor::Scene_Shop_Module end class Scene_BestBug include Train_Actor::Scene_BestBug_Module end #======================================================================= # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息 #=======================================================================
#==========================================================================
# 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息 [url]www.rgss.cn[/url] 同能网
#==========================================================================
# ————————————————————————————————————
# ▼▲▼ XRXS13. パーティ列車移動 ver.1.02 ▼▲▼
# by fukuyama
#
# Train_Actor
#
# [url]http://www4.big.or.jp/~fukuyama/rgss/Train_Actor.txt[/url]
#
module Train_Actor
#是否使用停止跟随的方法,也就是说,这里false改为true的时候,如果
#TRANSPARENT_SWITCHES_INDEX
#开关打开,跟随的人物就消失了(其实只是变成透明而已)
TRANSPARENT_SWITCH = true
TRANSPARENT_SWITCHES_INDEX = 20
#举例:第一个为true,第二个为20,则打开20号开关,后面的人都没了。
#跟随人数的最大数目,可以更改为2、3什么的。
TRAIN_ACTOR_SIZE_MAX = 4
# 定数
#Input::DOWN = 2
#Input::LEFT = 4
#Input::RIGHT = 6
#Input::UP = 6
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 Scene_Menu_Module
def setup_actor_character_sprites(characters)
@spriteset.setup_actor_character_sprites(characters)
end
end
# 物品
module Scene_Item_Module
def setup_actor_character_sprites(characters)
@spriteset.setup_actor_character_sprites(characters)
end
end
# 特技
module Scene_Skill_Module
def setup_actor_character_sprites(characters)
@spriteset.setup_actor_character_sprites(characters)
end
end
# 装备
module Scene_Equip_Module
def setup_actor_character_sprites(characters)
@spriteset.setup_actor_character_sprites(characters)
end
end
# 状态
module Scene_Status_Module
def setup_actor_character_sprites(characters)
@spriteset.setup_actor_character_sprites(characters)
end
end
# 结束
module Scene_End_Module
def setup_actor_character_sprites(characters)
@spriteset.setup_actor_character_sprites(characters)
end
end
# 存档
module Scene_Save_Module
def setup_actor_character_sprites(characters)
@spriteset.setup_actor_character_sprites(characters)
end
end
# 商店
module Scene_Shop_Module
def setup_actor_character_sprites(characters)
@spriteset.setup_actor_character_sprites(characters)
end
end
module Scene_BestBug_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
#仿小飞侠
class Scene_Menu
include Train_Actor::Scene_Menu_Module
end
class Scene_Item
include Train_Actor::Scene_Item_Module
end
class Scene_Skill
include Train_Actor::Scene_Skill_Module
end
class Scene_Status
include Train_Actor::Scene_Status_Module
end
class Scene_Equip
include Train_Actor::Scene_Equip_Module
end
class Scene_End
include Train_Actor::Scene_End_Module
end
class Scene_Save
include Train_Actor::Scene_Save_Module
end
class Scene_Shop
include Train_Actor::Scene_Shop_Module
end
class Scene_BestBug
include Train_Actor::Scene_BestBug_Module
end
#=======================================================================
# 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
#=======================================================================
|
|