RPG Fusion
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.



 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le deal à ne pas rater :
Réassort du coffret Pokémon 151 Électhor-ex : où l’acheter ?
Voir le deal

 

 Caméra dynamique en combat

Aller en bas 
AuteurMessage
deadcell
Trouvère Follet
Trouvère Follet
deadcell


Masculin
Nombre de messages : 625
Age : 35
Niveau Rpg Maker : Excellent Niveau
Jeux Préférés : Final Fantasy, Resident evil...
Date d'inscription : 21/03/2007

Caméra dynamique en combat Empty
MessageSujet: Caméra dynamique en combat   Caméra dynamique en combat EmptyVen 06 Juil 2007, 23:15

Ce script permet de rendre la caméra en combat plus dynamique, se déplaçant en fonction de l'action effectuée du monstre ciblé.

- Auteur : Inconnu (illisible)

- Installation :

Insérez le script avant Main et nommez-le XRXS_BP.

Code:
# �¥�£�¥ XRXS_BP 8. ƒoƒgƒ‹ƒoƒbƒN�EFull-View�{‰ֲ“®ƒJƒ�ƒ‰ ver..05d �¥�£�¥
# by �ק‰כ �“y

#==============================================================================
# �¡ Game_Battler
#==============================================================================
class Game_Battler
 #--------------------------------------------------------------------------
 # �œ ’ַ‰ֱ�EŒצŠJƒCƒ“ƒXƒ^ƒ“ƒX•ֿ�”
 #--------------------------------------------------------------------------
 attr_accessor :x_pos                    # ƒoƒgƒ‹ƒtƒB�[ƒ‹ƒh�@‰¡�@ˆֺ’u(+‚׉E�@)
 attr_accessor :y_pos                    # ƒoƒgƒ‹ƒtƒB�[ƒ‹ƒh �‚‚³ ˆֺ’u(+‚×�ד�@)
 attr_accessor :z_pos                    # ƒoƒgƒ‹ƒtƒB�[ƒ‹ƒh‰œ�s‚«ˆֺ’u(+‚׎ט‘O)
 attr_accessor :zoom                    # Œ»�‚ּƒY�[ƒ€”{—¦
end
#==============================================================================
# �¡ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
 #--------------------------------------------------------------------------
 # �œ ’ַ‰ֱ�EŒצŠJƒCƒ“ƒXƒ^ƒ“ƒX•ֿ�”
 #--------------------------------------------------------------------------
 attr_reader  :actor_in_battlefield    # ƒAƒNƒ^�[‚אƒtƒB�[ƒ‹ƒh‚ֹ
 #--------------------------------------------------------------------------
 # �œ ƒZƒbƒgƒAƒbƒv
 #--------------------------------------------------------------------------
 alias xrxs_bp8_setup setup
 def setup(actor_id)
  xrxs_bp8_setup(actor_id)
  # ‹@”\"ƒAƒNƒ^�[‚אƒtƒB�[ƒ‹ƒh‚ֹ"
  # true‚נ—D�ז‚·‚י
  @actor_in_battlefield = false if @actor_in_battlefield != true
 end
end
#==============================================================================
# �¡ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
 #--------------------------------------------------------------------------
 # �œ ’ַ‰ֱ�EŒצŠJƒCƒ“ƒXƒ^ƒ“ƒX•ֿ�”
 #--------------------------------------------------------------------------
 attr_reader  :actor_in_battlefield    # ƒAƒNƒ^�[‚אƒtƒB�[ƒ‹ƒh‚ֹ
 #--------------------------------------------------------------------------
 # �œ ƒIƒuƒWƒFƒNƒg�‰Šת‰»
 #--------------------------------------------------------------------------
 alias xrxs_bp8_initialize initialize
 def initialize(troop_id, member_index)
  @actor_in_battlefield = false
  @x_pos          =  $data_troops[troop_id].members[member_index].x - 320
  @y_pos          = -($data_troops[troop_id].members[member_index].y - 304)
  @field_x_offset = -192
  @field_y_offset = -144
  @z_pos          =    0
  @zoom          = 1.00
  xrxs_bp8_initialize(troop_id, member_index)
 end
 #--------------------------------------------------------------------------
 # �œ ƒoƒgƒ‹‰ז–ֺ X �ְ•W‚ּŽז“¾
 #--------------------------------------------------------------------------
 def screen_x
  $xcam_x = 0 if $xcam_x == nil
  return 320 - @field_x_offset + (@x_pos.to_i - $xcam_x) * @zoom
 end
 #--------------------------------------------------------------------------
 # �œ ƒoƒgƒ‹‰ז–ֺ Y �ְ•W‚ּŽז“¾
 #--------------------------------------------------------------------------
 def screen_y
  $xcam_y = 0 if $xcam_y == nil
  return 240 - @field_y_offset + (-@y_pos.to_i + 64 + $xcam_y) * @zoom
 end
end
#==============================================================================
# �¡ Sprite_Battler
#==============================================================================
class Sprite_Battler < RPG::Sprite
 #--------------------------------------------------------------------------
 # �œ ƒtƒŒ�[ƒ€�X�V
 #--------------------------------------------------------------------------
 alias xrxs_bp8_update update
 def update
  # �‰Šת‰»
  @z_offset = 0
  # –‚·
  xrxs_bp8_update
  # ƒoƒgƒ‰�[‚× nil ‚ּ�ך�‡–‚י
  return if @battler == nil
  # “G‚ּ‚‚ֹƒJƒ�ƒ‰‚׉e‹¿�B
  # Œ©•‚אƒoƒgƒ‹ƒtƒB�[ƒ‹ƒh‚ֹ‚¢‚י�ך�‡‚±‚±‚ּ if ‚נŠO‚·�B
  if (@battler.is_a?(Game_Actor) and @battler.actor_in_battlefield) or @battler.is_a?(Game_Enemy)
    # ƒY�[ƒ€—¦
    zoom = 1.00 * 185 / (($xcam_z != nil ? $xcam_z : 185) - @z_offset)
    self.zoom_x = zoom
    self.zoom_y = zoom
    @battler.zoom = zoom
    # ƒXƒvƒ‰ƒCƒg‚ּ�ְ•W‚נ�’ט
    self.x = @battler.screen_x
    self.y = @battler.screen_y
    self.z = @battler.screen_z
  end
 end
end
#==============================================================================
# �¡ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
 #--------------------------------------------------------------------------
 # �œ ƒIƒuƒWƒFƒNƒg�‰Šת‰»
 #--------------------------------------------------------------------------
 alias xrxs_bp8_initialize initialize
 def initialize
  # �‰Šת‰»
  @now_bg_x = -1
  @now_bg_y = -1
  @now_bg_z = -1
  # ’ֺ�םŽž‚ּŽְ�s
  xrxs_bp8_initialize
  # ƒrƒ…�[ƒ|�[ƒg‚נ�ל�¬
  @viewport1 = Viewport.new(-192, -144, 1024, 768)
  # ƒoƒgƒ‹ƒoƒbƒNƒXƒvƒ‰ƒCƒg‚נ�ל�¬
  @battleback_sprite = Sprite.new(@viewport1)
  @battleback_name = ""
  # ƒGƒlƒ~�[ƒXƒvƒ‰ƒCƒg‚נ�ל�¬
  @enemy_sprites = []
  for enemy in $game_troop.enemies.reverse
    @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  end
  # “VŒף‚נ�ל�¬
  @weather = RPG::Weather.new(@viewport1)
  # ƒtƒŒ�[ƒ€�X�V
  update
 end
 #--------------------------------------------------------------------------
 # �œ ƒtƒŒ�[ƒ€�X�V
 #--------------------------------------------------------------------------
 alias xrxs_bp8_update update
 def update
  # ƒoƒgƒ‹ƒoƒbƒN‚ּƒtƒ@ƒCƒ‹–¼‚׌»�‚ּ‚א‚ּ‚ֶˆב‚₪�ך�‡
  if @battleback_name != $game_temp.battleback_name
    @battleback_name = $game_temp.battleback_name
    if @battleback_sprite.bitmap != nil
      @battleback_sprite.bitmap.dispose
    end
    bg_bitmap = RPG::Cache.battleback(@battleback_name)
    bg_bitmap_stretch = Bitmap.new(1024, 768)
    bg_bitmap_stretch.stretch_blt(Rect.new(0, 0, 1024, 768), bg_bitmap, bg_bitmap.rect)
    @battleback_sprite.bitmap = bg_bitmap_stretch
  end
  # ƒJƒ�ƒ‰ˆֺ’u‚ד®‚¢‚½�ך�‡
  if @now_bg_x != $xcam_x or @now_bg_y != $xcam_y or @now_bg_z != $xcam_z
    # ƒY�[ƒ€—¦
    zoom = 1.00 * 185 / $xcam_z
    @battleback_sprite.zoom_x = zoom
    @battleback_sprite.zoom_y = zoom
    # ƒJƒ�ƒ‰z‚ֹ‚ז‚יˆֺ’u‚ּ�C�³
    maximum = 192 * (296 - $xcam_z) / 111
    $xcam_x = [[$xcam_x, -maximum].max, maximum].min
    # ”wŒiˆֺ’u�X�V
    @battleback_sprite.x = -$xcam_x * zoom - 512 * (zoom - 1)
    @battleback_sprite.y =  $xcam_y * zoom - 384 * (zoom - 1)
    # ’l�X�V
    @now_bg_x = $xcam_x
    @now_bg_y = $xcam_y
    @now_bg_z = $xcam_z
  end
  # –‚·
  xrxs_bp8_update
 end
end
#==============================================================================
# �¡ Scene_Battle
#==============================================================================
class Scene_Battle
 #--------------------------------------------------------------------------
 # �œ ƒ�ƒCƒ“�ˆ—�
 #--------------------------------------------------------------------------
 alias xrxs_bp8_main main
 def main
  # ƒJƒ�ƒ‰�‰Šתˆֺ’uŒˆ’ט
  $xcam_x = 0
  $xcam_y = 0
  $xcam_z = 295
  # ƒJƒ�ƒ‰‚ּ�ֵ�‰‚ּ–“I’l
  @xcam_x_destination = 0
  @xcam_y_destination = 0
  @xcam_z_destination = 185
  # �¡�A’�–ƒoƒgƒ‰�[‚ֽ–³‚µ�B
  @xcam_watch_battler = nil
  # �‰Šת‰»
  @wait_count_xcam = 0
  # –‚·
  xrxs_bp8_main
 end
Revenir en haut Aller en bas
deadcell
Trouvère Follet
Trouvère Follet
deadcell


Masculin
Nombre de messages : 625
Age : 35
Niveau Rpg Maker : Excellent Niveau
Jeux Préférés : Final Fantasy, Resident evil...
Date d'inscription : 21/03/2007

Caméra dynamique en combat Empty
MessageSujet: Re: Caméra dynamique en combat   Caméra dynamique en combat EmptyVen 06 Juil 2007, 23:16

Suite et fin du code :

Code:
#--------------------------------------------------------------------------
 # �œ ƒtƒŒ�[ƒ€�X�V
 #--------------------------------------------------------------------------
 alias xrxs_bp8_update update
 def update
  # ƒJƒ�ƒ‰ˆֺ’u‚ּ�X�V�B
  if @wait_count_xcam > 0
    # ƒEƒFƒCƒgƒJƒEƒ“ƒg‚נŒ¸‚ח‚·
    @wait_count_xcam -= 1
  else
    # ƒJƒ�ƒ‰: Z �ְ•W
    if $xcam_z != @xcam_z_destination
      if $xcam_z < @xcam_z_destination
        distance = [(@xcam_z_destination - $xcam_z)/8, 1].max
      else
        distance = [(@xcam_z_destination - $xcam_z)/8, -1].min
      end
      $xcam_z = [[$xcam_z + distance, 74].max, 296].min
    end
    # ƒJƒ�ƒ‰: X �ְ•W
    if @xcam_watch_battler != nil
      if $xcam_x != @xcam_watch_battler.x_pos
        if ($xcam_x - @xcam_watch_battler.x_pos).abs < 8
          distance = @xcam_watch_battler.x_pos - $xcam_x
        elsif $xcam_x < @xcam_watch_battler.x_pos
          distance = [(@xcam_watch_battler.x_pos - $xcam_x)/8, 8].max
        else
          distance = [(@xcam_watch_battler.x_pos - $xcam_x)/8, -8].min
        end
        maximum = 192 * (296 - $xcam_z) / 111
        $xcam_x = [[$xcam_x + distance, -maximum].max, maximum].min
      end
    elsif $xcam_x != @xcam_x_destination
      if ($xcam_x - @xcam_x_destination).abs < 8
        distance = @xcam_x_destination - $xcam_x
      elsif $xcam_x < @xcam_x_destination
        distance = [(@xcam_x_destination - $xcam_x)/8, 8].max
      else
        distance = [(@xcam_x_destination - $xcam_x)/8, -8].min
      end
      maximum = 192 * (296 - $xcam_z) / 111
      $xcam_x = [[$xcam_x + distance, -maximum].max, maximum].min
    end
    # ƒJƒ�ƒ‰: Y �ְ•W
    if @xcam_watch_battler != nil
      y = @xcam_watch_battler.y_pos/2
      if $xcam_y != y
        if ($xcam_y - y).abs < 8
          distance = y - $xcam_y
        elsif $xcam_y < y
          distance = [(y - $xcam_y)/8, 8].max
        else
          distance = [(y - $xcam_y)/8, -8].min
        end
        maximum = 144 * (296 - $xcam_z) / 111
        $xcam_y = [[$xcam_y + distance, -maximum].max, maximum].min       
      end
    elsif $xcam_y != @xcam_y_destination
      if $xcam_y < @xcam_y_destination
        distance = [(@xcam_y_destination - $xcam_y)/8, 1].max
      else
        distance = [(@xcam_y_destination - $xcam_y)/8, -1].min
      end
      maximum = 164 * (296 - $xcam_z) / 111
      $xcam_y = [[$xcam_y + distance, -maximum].max, maximum].min
    end
  end
  # ’ֺ�םŽְ�s
  xrxs_bp8_update
 end
 #--------------------------------------------------------------------------
 # �œ ƒp�[ƒeƒBƒRƒ}ƒ“ƒhƒtƒF�[ƒYŠJŽn
 #--------------------------------------------------------------------------
 alias xrxs_bp8_start_phase2 start_phase2
 def start_phase2
  # ƒJƒ�ƒ‰�FƒZƒ“ƒ^ƒŠƒ“ƒO
  @xcam_watch_battler = nil
  @xcam_x_destination = 0
  @xcam_z_destination = 185
  # –‚·
  xrxs_bp8_start_phase2
 end
 #--------------------------------------------------------------------------
 # �œ ƒtƒŒ�[ƒ€�X�V (ƒAƒNƒ^�[ƒRƒ}ƒ“ƒhƒtƒF�[ƒY)
 #--------------------------------------------------------------------------
 alias xrxs_bp8_update_phase3 update_phase3
 def update_phase3
  # ƒJƒ�ƒ‰‚נƒLƒƒƒ‰ˆֺ’u‚ײ
  if @active_battler != nil and @active_battler.actor_in_battlefield
    @xcam_x_destination = @active_battler.x_pos
    @xcam_z_destination = 175
  end
  xrxs_bp8_update_phase3
 end
 #--------------------------------------------------------------------------
 # �œ ƒtƒŒ�[ƒ€�X�V (ƒAƒNƒ^�[ƒRƒ}ƒ“ƒhƒtƒF�[ƒY : ƒGƒlƒ~�[‘I‘נ)
 #--------------------------------------------------------------------------
 alias xrxs_bp8_update_phase3_enemy_select update_phase3_enemy_select
 def update_phase3_enemy_select
  # ƒJƒ�ƒ‰�F“Gƒ^�[ƒQƒbƒg‚נƒY�[ƒ€ƒAƒbƒv
  @xcam_x_destination = $game_troop.enemies[@enemy_arrow.index].x_pos * $game_troop.enemies[@enemy_arrow.index].zoom
  @xcam_z_destination = 175
  # –‚·
  xrxs_bp8_update_phase3_enemy_select
 end
 #--------------------------------------------------------------------------
 # �œ ƒGƒlƒ~�[‘I‘נ�I—¹
 #--------------------------------------------------------------------------
 alias xrxs_bp8_end_enemy_select end_enemy_select
 def end_enemy_select
  # ƒJƒ�ƒ‰�F’†�S‚ײ
  @xcam_x_destination = 0
  @xcam_z_destination = 185
  # –‚·
  xrxs_bp8_end_enemy_select
 end
 #--------------------------------------------------------------------------
 # �œ ƒtƒŒ�[ƒ€�X�V (ƒ�ƒCƒ“ƒtƒF�[ƒY ƒXƒeƒbƒv 2 : ƒAƒNƒVƒ‡ƒ“ŠJŽn)
 #--------------------------------------------------------------------------
 alias xrxs_bp8_update_phase4_step2 update_phase4_step2
 def update_phase4_step2
  # –‚·
  xrxs_bp8_update_phase4_step2
  # ƒXƒeƒbƒv 3 ‚ֹˆ�s‚·‚י�ך�‡
  if @phase4_step == 3
    if @active_battler.is_a?(Game_Enemy) or @active_battler.actor_in_battlefield
      # ƒJƒ�ƒ‰�F�s“®ƒoƒgƒ‰�[‚ײ‚ּƒY�[ƒ€ƒAƒbƒv‚נ—\–ס
      @xcam_x_destination = @active_battler.x_pos * @active_battler.zoom if @active_battler.x_pos != nil
      @xcam_z_destination = 175
    end
    # �ֵ’ב 20 ƒtƒŒ�[ƒ€‘ׂ‚ֲ
    @wait_count = 20
  end
 end
 #--------------------------------------------------------------------------
 # �œ ƒtƒŒ�[ƒ€�X�V (ƒ�ƒCƒ“ƒtƒF�[ƒY ƒXƒeƒbƒv 3 : �s“®‘₪ƒAƒjƒ��[ƒVƒ‡ƒ“)
 #--------------------------------------------------------------------------
 alias xrxs_bp8_update_phase4_step3 update_phase4_step3
 def update_phase4_step3
  # –‚·
  xrxs_bp8_update_phase4_step3
  if @target_battlers.size > 0 and
    (@target_battlers[0].is_a?(Game_Enemy) or @target_battlers[0].actor_in_battlefield)
    # ƒJƒ�ƒ‰�Fƒ^�[ƒQƒbƒg‚ײ‚ּƒY�[ƒ€ƒAƒbƒv‚נ—\–ס
    @xcam_x_destination = @target_battlers[0].x_pos * @target_battlers[0].zoom if @target_battlers[0] != nil
    @xcam_z_destination = 185
    # ‚א‚µ‘־�ƒAƒjƒ�‚×�uˆֺ’u�F‰ז–ֺ�v‚ּ‚א‚ּ‚ּ�ך�‡
    if @animation2_id > 0 and $data_animations[@animation2_id].position == 3
      # ƒJƒ�ƒ‰‚נƒZƒ“ƒ^ƒŠƒ“ƒO
      @xcam_x_destination = 0
      # ƒY�[ƒ€ƒAƒEƒg‚‚ֵ‚ג‚ֱ‚¿‚ב‚₪¥w¥
      @xcam_z_destination = 222
    end
  end
  # �ֵ’ב 20 ƒtƒŒ�[ƒ€‘ׂ‚ֲ
  @wait_count = 20
 end
 #--------------------------------------------------------------------------
 # �œ ƒAƒtƒ^�[ƒoƒgƒ‹ƒtƒF�[ƒYŠJŽn
 #--------------------------------------------------------------------------
 alias xrxs_bp8_start_phase5 start_phase5
 def start_phase5
  @xcam_z_destination = 185
  xrxs_bp8_start_phase5
 end
end

#==============================================================================
# �ž RPG::�ִ’ט‹`�u�ם“¬’†‚ּ"‰ז–ֺ"ƒAƒjƒ�‚ּˆֺ’u�C�³�v
#==============================================================================
module RPG
 class Sprite < ::Sprite
  def animation_set_sprites(sprites, cell_data, position)
    for i in 0..15
      sprite = sprites[i]
      pattern = cell_data[i, 0]
      if sprite == nil or pattern == nil or pattern == -1
        sprite.visible = false if sprite != nil
        next
      end
      sprite.visible = true
      sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
      if position == 3
        if self.viewport != nil
          if $scene.is_a?(Scene_Battle)
            sprite.x = self.viewport.rect.width / 2
            sprite.y = 304
          else
            sprite.x = self.viewport.rect.width / 2
            sprite.y = self.viewport.rect.height - 160
          end
        else
          sprite.x = 320
          sprite.y = 240
        end
      else
        sprite.x = self.x - self.ox + self.src_rect.width / 2
        sprite.y = self.y - self.oy + self.src_rect.height / 2
        sprite.y -= self.src_rect.height / 4 if position == 0
        sprite.y += self.src_rect.height / 4 if position == 2
      end
      sprite.x += cell_data[i, 1]
      sprite.y += cell_data[i, 2]
      sprite.z = 2000
      sprite.ox = 96
      sprite.oy = 96
      sprite.zoom_x = cell_data[i, 3] / 100.0
      sprite.zoom_y = cell_data[i, 3] / 100.0
      sprite.angle = cell_data[i, 4]
      sprite.mirror = (cell_data[i, 5] == 1)
      sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
      sprite.blend_type = cell_data[i, 7]
    end
  end
 end
end
Revenir en haut Aller en bas
 
Caméra dynamique en combat
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Script de combat CTB(combat en tour de battement) de FF X ^^
» Combat vue de dos
» Combat vue de dos
» Combat FinalFantesy 1
» Combat a la moghunter

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Fusion :: BANQUE DU CODE :: Antre des Scripts :: Combat-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser