deadcell Trouvère Follet
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
| Sujet: Caméra dynamique en combat Ven 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 | |
|
deadcell Trouvère Follet
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
| Sujet: Re: Caméra dynamique en combat Ven 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 | |
|