Derniers messages sur les forums

Une communauté de plus d'un millier de membres actifs

Zoom sur les ennemis

Voici un script permettant de faire un zoom sur les ennemis en combat. Il a été ajouter sur nos forum par link@.

Créez un nouvel emplacement au dessus de Main et nommer le Camera.

# ?¥?£?¥ 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
#--------------------------------------------------------------------------
# ?œ ƒ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

Auteur: Danny Coulombe
Créé le: 2007-12-23 13:35:30
Cette page a été vues: 2186 fois

Prenez le temps de visiter nos partenaires

Vidéos, OST, émulation Espace Emulation, le nonos de l'emulation ! Forum réservé pour makers, traitant de thème divers. iKara Rpg Maker Tout sur Kingdom Hearts, des actus, des soluces, des vidéos, des musiques et plus encore... Actualités RPG, astuces, soluce, download sur Final Fantasy, Dragon Quest et Kingdom Hearts de Square-Enix. Animes Naruto, FMA, Love Hina... Final Fantasy VII Origin est un RPG amateur dont le scénario précède FFVII. Téléchargeable gratuitement sur ce site. Rpg Maker Love dit RML c'est un ensemble de sites entretenus par Monos.

Ajouter aux favoris Ajouter à mes favoris
Abonnement à au bulletin d'informations Newsletters
Abonnement aux flux d'actualités RSS M'abonner aux flux RSS