| Dernières réponses | | ca marche la je vient de le re tester |
| | moi je l'ai essaye qu'un petit moment alors je sais pas dire |
| | merci pour ce script je vais le tester et vous dire ce que ca donne je l'est tester mais il ya trop de bug je vais essayer de reparer
Message édité le 13-09-2005 à 19:32:45 par dante |
| | Il suffit de créer un script "Game_Party_Actor" et de coller ce code dedans : il faut le mettre en dessou de main # # # Train_Actor # # fukuyama@alles.or.jp # http://www4.big.or.jp/~fukuyama/ # # ●透明状態用スイッチ設定 # true だとスイッチ制御を行う # TRAIN_ACTOR_TRANSPARENT_SWITCH = false TRAIN_ACTOR_TRANSPARENT_SWITCH = true # ●透明状態用スイッチ番号 # この番号のスイッチがONだと透明になる TRAIN_ACTOR_TRANSPARENT_SWITCHES_INDEX = 20 # 定数 #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 def set_move_speed(move_speed) @move_speed = move_speed end end class Spriteset_Map 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 class Scene_Map def setup_actor_character_sprites(characters) @spriteset.setup_actor_character_sprites(characters) end end class Game_Party def set_transparent_actors(transparent) @transparent = transparent end def setup_actor_character_sprites if @characters == nil @characters = [] for i in 1 .. 4 @characters.push(Game_Party_Actor.new) end end if @actors_chach == nil @actors_chach = [] end if @actors_chach != @actors @actors_chach = @actors.clone for i in 1 .. 4 @characters[i - 1].setup(actors[i]) end end if $scene.instance_of?(Scene_Map) $scene.setup_actor_character_sprites(@characters) end end def update_party_actors setup_actor_character_sprites transparent = $game_player.transparent if transparent == false if TRAIN_ACTOR_TRANSPARENT_SWITCH transparent = $game_switches[TRAIN_ACTOR_TRANSPARENT_SWITCHES_INDEX] else transparent = $game_player.transparent end end for character in @characters character.transparent = transparent character.set_move_speed($game_player.get_move_speed) 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 for i in 0 .. 10 @move_list[i] = nil end end def move_party_actors if @move_list == nil @move_list = [] for i in 0 .. 10 @move_list[i] = nil end 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 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 ) super $game_party.moveto_party_actors( 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 # ----------------------------------------------- # move_speed を外から見れるように # ----------------------------------------------- def get_move_speed return @move_speed end end class Game_Player include Game_Player_Module end
Message édité le 13-09-2005 à 19:16:36 par myk22 |
|
|