#============================================================================== # 本脚本来自[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],使用和转载请保留此信息 #=======================================================================
报错截图.png (64.03 KB, 下载次数: 11)
198.83 KB, 下载次数: 49
if characters!=nil @spriteset.setup_actor_character_sprites(characters) end
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |