Jump to content
Rpg²S Forum
  • 0

Help


Squall_Leonheart
 Share

Question

Dunque gente,mi serviva aiuto con l'animazione del minkoff(almeno della mia versione)

Allora il problema è che quando il pg è in fin di vita lo script richiama la posa di quando è morto ora vi posto l oscript dell'animazione + il battler,per favore vorrei sapere come fare :biggrin:

 

 

 

 

 

 

 

#======================================================================

========

# ** Sprite_Battler

#------------------------------------------------------------------------------

# Animated Battlers by Minkoff

#==============================================================================

 

class Sprite_Battler < RPG::Sprite

#--------------------------------------------------------------------------

# * Initialize

#--------------------------------------------------------------------------

alias cbs_initialize initialize

def initialize(viewport, battler = nil)

@speed = 7

@frames = 4

@poses = 10

@stationary_enemies = true

@stationary_actors = false

@calculate_speed = true

@phasing = true

@frame = 0

@pose = 0

@last_time = 0

@last_move_time = 0

cbs_initialize(viewport, battler)

viewport.z = 99

end

#--------------------------------------------------------------------------

# * Update

#--------------------------------------------------------------------------

alias cbs_update update

def update

return unless @battler

 

# Regular Update

cbs_update

 

# Start Routine

unless @started

@width = @width / @frames

@height = @height / @poses

@display_x = @battler.screen_x

@display_y = @battler.screen_y

@destination_x = @display_x

@destination_y = @display_y

end

 

# Setup Sprite

self.src_rect.set(@width * @frame, @height * @pose, @width, @height)

self.mirror = @battler.is_a?(Game_Enemy) unless @started

 

# Position Sprite

self.x = @display_x

self.y = @display_y

self.z = @display_y

self.ox = @width / 2

self.oy = @height

 

# Setup Animation

time = Graphics.frame_count / (Graphics.frame_rate / @speed)

if @last_time < time

@frame = (@frame + 1) % @frames

if @frame == 0 or @reload

if @freeze

@frame = @frames - 1

return

end

@pose = state

end

end

@last_time = time

 

# Move It

move if moving

 

# Finish Up

@started = true

end

#--------------------------------------------------------------------------

# * Current State

#--------------------------------------------------------------------------

def state

# Damage State

if [nil,{}].include?(@battler.damage)

# Battler Fine

@state = 0

# Battler Wounded

@state = 2 if @battler.hp < @battler.maxhp / 4

# Battler Dead

@state = 2 if @battler.dead?

end

# Guarding State

@state = 3 if @battler.guarding?

# Moving State

if moving

# Battler Moving Left

@state = 4 if moving.eql?(0)

# Battler Moving Right

@state = 5 if moving.eql?(1)

end

# Return State

return @state

end

#--------------------------------------------------------------------------

# * Move

#--------------------------------------------------------------------------

def move

time = Graphics.frame_count / (Graphics.frame_rate.to_f / (@speed * 5))

if @last_move_time < time

 

# Pause for Animation

return if @pose != state

 

# Phasing

if @phasing

d1 = (@display_x - @original_x).abs

d2 = (@display_y - @original_y).abs

d3 = (@display_x - @destination_x).abs

d4 = (@display_y - @destination_y).abs

self.opacity = [255 - ([d1 + d2, d3 + d4].min * 1.75).to_i, 0].max

end

 

# Calculate Difference

difference_x = (@display_x - @destination_x).abs

difference_y = (@display_y - @destination_y).abs

 

# Done? Reset, Stop

if [difference_x, difference_y].max.between?(0, 8)

@display_x = @destination_x

@display_y = @destination_y

@pose = state

return

end

 

# Calculate Movement Increments

increment_x = increment_y = 1

if difference_x < difference_y

increment_x = 1.0 / (difference_y.to_f / difference_x)

elsif difference_y < difference_x

increment_y = 1.0 / (difference_x.to_f / difference_y)

end

 

# Calculate Movement Speed

if @calculate_speed

total = 0; $game_party.actors.each{ |actor| total += actor.agi }

speed = @battler.agi.to_f / (total / $game_party.actors.size)

increment_x *= speed

increment_y *= speed

end

 

# Multiply and Move

multiplier_x = (@destination_x - @display_x > 0 ? 8 : -8)

multiplier_y = (@destination_y - @display_y > 0 ? 8 : -8)

@display_x += (increment_x * multiplier_x).to_i

@display_y += (increment_y * multiplier_y).to_i

end

@last_move_time = time

end

#--------------------------------------------------------------------------

# * Set Movement

#--------------------------------------------------------------------------

def setmove(destination_x, destination_y)

unless (@battler.is_a?(Game_Enemy) and @stationary_enemies) or

(@battler.is_a?(Game_Actor) and @stationary_actors)

@original_x = @display_x

@original_y = @display_y

@destination_x = destination_x

@destination_y = destination_y

end

end

#--------------------------------------------------------------------------

# * Movement Check

#--------------------------------------------------------------------------

def moving

if (@display_x != @destination_x and @display_y != @destination_y)

return (@display_x > @destination_x ? 0 : 1)

end

end

#--------------------------------------------------------------------------

# * Set Pose

#--------------------------------------------------------------------------

def pose=(pose)

@pose = pose

@frame = 0

end

#--------------------------------------------------------------------------

# * Freeze

#--------------------------------------------------------------------------

def freeze

@freeze = true

end

#--------------------------------------------------------------------------

# * Fallen Pose

#--------------------------------------------------------------------------

def collapse

return

end

end

 

#==============================================================================

# ** Game_Actor

#==============================================================================

 

class Game_Actor

#--------------------------------------------------------------------------

# * Actor X Coordinate

#--------------------------------------------------------------------------

def screen_x

if self.index != nil

return self.index * 45 + 450

else

return 0

end

end

#--------------------------------------------------------------------------

# * Actor Y Coordinate

#--------------------------------------------------------------------------

def screen_y

return self.index * 35 + 200

end

#--------------------------------------------------------------------------

# * Actor Z Coordinate

#--------------------------------------------------------------------------

def screen_z

return screen_y

end

end

 

#==============================================================================

# ** Scene_Battle

#==============================================================================

 

class Scene_Battle

#--------------------------------------------------------------------------

# * Action Animation, Movement

#--------------------------------------------------------------------------

alias cbs_update_phase4_step3 update_phase4_step3

def update_phase4_step3(battler = @active_battler)

@rtab = !@target_battlers

target = (@rtab ? battler.target : @target_battlers)[0]

@moved = {} unless @moved

return if @spriteset.battler(battler).moving

case battler.current_action.kind

when 0 # Attack

if not (@moved[battler] or battler.guarding?)

offset = (battler.is_a?(Game_Actor) ? 40 : -40)

@spriteset.battler(battler).setmove(target.screen_x + offset, target.screen_y)

@moved[battler] = true

return

elsif not battler.guarding?

@spriteset.battler(battler).pose = 6 + rand(2)

@spriteset.battler(battler).setmove(battler.screen_x, battler.screen_y)

end

when 1 # Skill

@spriteset.battler(battler).pose = 8

when 2 # Item

@spriteset.battler(battler).pose = 8

end

@moved[battler] = false

@rtab ? cbs_update_phase4_step3(battler) : cbs_update_phase4_step3

end

#--------------------------------------------------------------------------

# * Hit Animation

#--------------------------------------------------------------------------

alias cbs_update_phase4_step4 update_phase4_step4

def update_phase4_step4(battler = @active_battler)

for target in (@rtab ? battler.target : @target_battlers)

damage = (@rtab ? target.damage[battler] : target.damage)

if damage.is_a?(Numeric) and damage > 0

@spriteset.battler(target).pose = 1

end

end

@rtab ? cbs_update_phase4_step4(battler) : cbs_update_phase4_step4

end

#--------------------------------------------------------------------------

# * Victory Animation

#--------------------------------------------------------------------------

alias cbs_start_phase5 start_phase5

def start_phase5

for actor in $game_party.actors

return if @spriteset.battler(actor).moving

end

for actor in $game_party.actors

unless actor.dead?

@spriteset.battler(actor).pose = 9

@spriteset.battler(actor).freeze

end

end

cbs_start_phase5

end

#--------------------------------------------------------------------------

# * Change Arrow Viewport

#--------------------------------------------------------------------------

alias cbs_start_enemy_select start_enemy_select

def start_enemy_select

cbs_start_enemy_select

@enemy_arrow.dispose

@enemy_arrow = Arrow_Enemy.new(@spriteset.viewport2)

@enemy_arrow.help_window = @help_window

end

end

 

#==============================================================================

# ** Spriteset_Battle

#==============================================================================

 

class Spriteset_Battle

#--------------------------------------------------------------------------

# * Change Enemy Viewport

#--------------------------------------------------------------------------

alias cbs_initialize initialize

def initialize

cbs_initialize

@enemy_sprites = []

for enemy in $game_troop.enemies.reverse

@enemy_sprites.push(Sprite_Battler.new(@viewport2, enemy))

end

end

#--------------------------------------------------------------------------

# * Find Sprite From Battler Handle

#--------------------------------------------------------------------------

def battler(handle)

for sprite in @actor_sprites + @enemy_sprites

return sprite if sprite.battler == handle

end

return false

end

end

 

#==============================================================================

# ** Arrow_Base

#==============================================================================

 

class Arrow_Base < Sprite

#--------------------------------------------------------------------------

# * Reposition Arrows

#--------------------------------------------------------------------------

alias cbs_initialize initialize

def initialize(viewport)

cbs_initialize(viewport)

self.ox = 14 # 32

self.oy = 10 # 40

end

end

 

 

 

 

 

 

 

Poi http://img155.imageshack.us/img155/9958/safiyp0.th.png

 

 

 

In pratica usa il terzo frame sia quando è in fin di vita sia quando è morto...Vorrei che ci fosse un undicesima posa che sia quella da morto...Aiuti?^^

Iscriviti sul mio canale youtube -

https://www.youtube.com/channel/UCYOxXExvlXiOFfYD1fTFpww?view_as=subscriber

Seguimi su Instagram -

https://www.instagram.com/ancestralguitarist/

---------------------------------------------------------------------------------------------------------------------------------------
Contest vinti
---------------------------------------------------------------------------------------------------------------------------------------

FACE CONTEST # 3
BANNER CONTEST #69

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

prova questo, compare:

 

 

#==============================================================================
# ** Sprite_Battler
#------------------------------------------------------------------------------
#  Animated Battlers by Minkoff, Updated by DerVVulfman
#==============================================================================

class Sprite_Battler < RPG::Sprite
 #--------------------------------------------------------------------------
 # * Initialize
 #--------------------------------------------------------------------------
 alias cbs_initialize initialize
 def initialize(viewport, battler = nil)

# Configuration
@speed			  = 6	  # Framerate speed of the battlers
@frames			 = 4	  # Number of frames in each pose
@poses			  = 11	 # Number of poses (stances) in the template
@mirror_enemies	 = true   # Enemy battlers use reversed image
@stationary_enemies = false  # If the enemies don't move while attacking
@stationary_actors  = false  # If the actors don't move while attacking
@calculate_speed	= false   # System calculates a mean/average speed
@phasing			= false   # Characters fade in/out while attacking
@default_collapse   = true  # Restores the old 'red fade' effect to enemies
# Array that holds the id # of weapons that forces the hero to be stationary
@stationary_weapons = [10, 11, 12] # (examples are bows & guns)
@enemy_sprites = []
# DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU'RE DOING
@frame, @pose = 0, 0
@last_time = 0
@last_move_time = 0
cbs_initialize(viewport, battler)
#	self.mirror = !!battler and @mirror_enemies
viewport.z = 99
 end
 #--------------------------------------------------------------------------
 # * Update
 #--------------------------------------------------------------------------
 alias cbs_update update
 def update
return unless @battler

# Regular Update
cbs_update

# Start Routine
unless @started
  @pose = state
  @width = @width / @frames
  @height = @height / @poses
  @display_x = @battler.screen_x
  @display_y = @battler.screen_y
  @destination_x = @display_x
  @destination_y = @display_y
  @started = true
end

# Cut Out Frame
self.src_rect.set(@width * @frame, @height * @pose, @width, @height)

# Position Sprite
self.x = @display_x
self.y = @display_y
self.z = @display_y
self.ox = @width / 2
self.oy = @height
 if $game_system.sideview_mirror == 1
  if @battler.is_a?(Game_Actor)
	self.mirror = !!battler
  else
	if not @mirror_enemies
	  self.mirror = !!battler
	end
  end
else
  if @battler.is_a?(Game_Enemy)
	if @mirror_enemies
	  self.mirror = !!battler
	end
  end
end
# Setup Animation
time = Graphics.frame_count / (Graphics.frame_rate / @speed)
if @last_time < time
  @frame = (@frame + 1) % @frames
  if @frame == 0
	if @freeze
	  @frame = @frames - 1
	  return
	end
	@pose = state
  end
end
@last_time = time

# Move It
move if moving
 end
 #--------------------------------------------------------------------------
 # * Current State
 #--------------------------------------------------------------------------
 def state
# Damage State
if [nil,{}].include?(@battler.damage)
  # Battler Fine
  @state = 0
  # Battler Wounded
  @state = 2 if @battler.hp < @battler.maxhp / 4

  if @default_collapse
	# Battler Dead (Red-Out Collapse)
	if @battler.dead? and @battler.is_a?(Game_Actor)
	  @state = 10
	  # Fix Opacity
	  self.opacity = 255
	end
  else
	# Battler Dead (Pose-Type Collapse)
	if @battler.dead?
	  @state = 10
	  # Fix Opacity
	  self.opacity = 255
	end
  end
end
# Guarding State
@state = 3 if @battler.guarding?
# Moving State
if moving
  # If enemy battler moving
  if @battler.is_a?(Game_Enemy) 
	# Battler Moving Left
	@state = 5 if moving.eql?(0)
	# Battler Moving Right
	@state = 4 if moving.eql?(1)
  # Else actor battler moving
  else
	# Battler Moving Left
	@state = 4 if moving.eql?(0)
	# Battler Moving Right
	@state = 5 if moving.eql?(1)
  end
end
# Return State
return @state
 end
 #--------------------------------------------------------------------------
 # * Move
 #--------------------------------------------------------------------------
 def move
time = Graphics.frame_count / (Graphics.frame_rate.to_f / (@speed * 5))
if @last_move_time < time

  # Pause for Animation
  return if @pose != state

  # Phasing
  if @phasing
	d1 = (@display_x - @original_x).abs
	d2 = (@display_y - @original_y).abs
	d3 = (@display_x - @destination_x).abs
	d4 = (@display_y - @destination_y).abs
	self.opacity = [255 - ([d1 + d2, d3 + d4].min * 1.75).to_i, 0].max
  end

  # Calculate Difference
  difference_x = (@display_x - @destination_x).abs
  difference_y = (@display_y - @destination_y).abs

  # Done? Reset, Stop
  if [difference_x, difference_y].max.between?(0, 8)
	@display_x = @destination_x
	@display_y = @destination_y
	@pose = state
	return
  end

  # Calculate Movement Increments
  increment_x = increment_y = 1
  if difference_x < difference_y
	increment_x = 1.0 / (difference_y.to_f / difference_x)
  elsif difference_y < difference_x
	increment_y = 1.0 / (difference_x.to_f / difference_y)
  end
  
  # Calculate Movement Speed
  if @calculate_speed
	total = 0; $game_party.actors.each{ |actor| total += actor.agi }
	speed = @battler.agi.to_f / (total / $game_party.actors.size)
	increment_x *= speed
	increment_y *= speed
  end
  
  # Multiply and Move
  multiplier_x = (@destination_x - @display_x > 0 ? 8 : -8)
  multiplier_y = (@destination_y - @display_y > 0 ? 8 : -8)
  @display_x += (increment_x * multiplier_x).to_i
  @display_y += (increment_y * multiplier_y).to_i
end
@last_move_time = time
 end
 #--------------------------------------------------------------------------
 def setmove(destination_x, destination_y)
unless (@battler.is_a?(Game_Enemy) and @stationary_enemies) or 
	   (@battler.is_a?(Game_Enemy) and @battler.id == 6) or
	   (@battler.is_a?(Game_Actor) and @stationary_actors)
  unless @stationary_weapons.include?(@battler.weapon_id)
	@original_x = @display_x
	@original_y = @display_y
	@destination_x = destination_x
	@destination_y = destination_y
  end
end
 end
 #--------------------------------------------------------------------------
 def moving
if (@display_x != @destination_x and @display_y != @destination_y and !@battler.dead?)
  return (@display_x > @destination_x ? 0 : 1)
end
 end
 #--------------------------------------------------------------------------
 # * Set Pose
 #--------------------------------------------------------------------------
 def pose=(pose)
@pose = pose
@frame = 0
 end
 #--------------------------------------------------------------------------
 # * Freeze
 #--------------------------------------------------------------------------
 def freeze
@freeze = true
 end
 #--------------------------------------------------------------------------
 # * Fallen Pose
 #--------------------------------------------------------------------------
 alias cbs_collapse collapse
 def collapse
if @default_collapse
  cbs_collapse if @battler.is_a?(Game_Enemy)
  end
end
 end

#==============================================================================
# ** Game_Actor
#==============================================================================

class Game_Actor
 #--------------------------------------------------------------------------
 # * Actor X Coordinate
 #--------------------------------------------------------------------------
 def screen_x
if self.index != nil
	 return self.index * 45 + 450
else
  return 0
end
 end
 #--------------------------------------------------------------------------
 # * Actor Y Coordinate
 #--------------------------------------------------------------------------
 def screen_y
return self.index * 35 + 220
 end
 #--------------------------------------------------------------------------
 # * Actor Z Coordinate
 #--------------------------------------------------------------------------
 def screen_z
return screen_y
 end
end

#==============================================================================
# ** Scene_Battle
#==============================================================================

class Scene_Battle
 #--------------------------------------------------------------------------
 # * Action Animation, Movement
 #--------------------------------------------------------------------------
 alias cbs_update_phase4_step3 update_phase4_step3
 def update_phase4_step3(battler = @active_battler)
@rtab = !@target_battlers
target = (@rtab ? battler.target : @target_battlers)[0]
@moved = {} unless @moved
return if @spriteset.battler(battler).moving
case battler.current_action.kind
when 0 # Attack
  if not (@moved[battler] or battler.guarding?)
	offset = (battler.is_a?(Game_Actor) ? 40 : -40)
	@spriteset.battler(battler).setmove(target.screen_x + offset, target.screen_y)
	@moved[battler] = true
	return
  elsif not battler.guarding?
	@spriteset.battler(battler).pose = 6 + rand(2)
	@spriteset.battler(battler).setmove(battler.screen_x, battler.screen_y)
  end
when 1 # Skill
  @spriteset.battler(battler).pose = 8
when 2 # Item
  @spriteset.battler(battler).pose = 8
end
@moved[battler] = false
@rtab ? cbs_update_phase4_step3(battler) : cbs_update_phase4_step3
 end
 #--------------------------------------------------------------------------
 # * Hit Animation
 #--------------------------------------------------------------------------
 alias cbs_update_phase4_step4 update_phase4_step4
 def update_phase4_step4(battler = @active_battler)
for target in (@rtab ? battler.target : @target_battlers)
  damage = (@rtab ? target.damage[battler] : target.damage)
  if damage.is_a?(Numeric) and damage > 0
	@spriteset.battler(target).pose = 1
  end
end
@rtab ? cbs_update_phase4_step4(battler) : cbs_update_phase4_step4
 end
 #--------------------------------------------------------------------------
 # * Victory Animation
 #--------------------------------------------------------------------------
 alias cbs_start_phase5 start_phase5
 def start_phase5
for actor in $game_party.actors
  return if @spriteset.battler(actor).moving
end
for actor in $game_party.actors
  unless actor.dead?
	@spriteset.battler(actor).pose = 9
	@spriteset.battler(actor).freeze
  end
end
cbs_start_phase5
 end
 #--------------------------------------------------------------------------
 # * Change Arrow Viewport
 #--------------------------------------------------------------------------
end


#==============================================================================
# ** Spriteset_Battle
#==============================================================================

class Spriteset_Battle
 #--------------------------------------------------------------------------
 # * Change Enemy Viewport
 #--------------------------------------------------------------------------
 alias cbs_initialize initialize
 def initialize
cbs_initialize
@enemy_sprites = []
for enemy in $game_troop.enemies.reverse
  @enemy_sprites.push(Sprite_Battler.new(@viewport2, enemy))
end
 end
 #--------------------------------------------------------------------------
 # * Find Sprite From Battler Handle
 #--------------------------------------------------------------------------
 def battler(handle)
for sprite in @actor_sprites + @enemy_sprites
  return sprite if sprite.battler == handle
end
 end
end

#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
#  This class handles data surrounding the system. Backround music, etc.
#  is managed here as well. Refer to "$game_system" for the instance of 
#  this class.
#==============================================================================

class Game_System
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_accessor   :sideview_mirror
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 alias initialize_cbs_customize initialize
 def initialize
# Call original initialization process
initialize_cbs_customize
@sideview_mirror = 0
 end
end  

#==============================================================================
# ** Game_Enemy
#------------------------------------------------------------------------------
#  This class handles enemies. It's used within the Game_Troop class
#  ($game_troop).
#==============================================================================

class Game_Enemy < Game_Battler
 def screen_x
if self.index != nil
  if $game_system.sideview_mirror == 1
	return 640 - $data_troops[@troop_id].members[@member_index].x
  else
	return $data_troops[@troop_id].members[@member_index].x
  end
end
 end
end

 

 

non so cosa ci sia di diverso, oltre ad un numero (@poses = 11, invece che 10). mai letto il listato completo.

in questo modo devi usare battler a 11 pose appunto. l'11/a posa è quella del chara morto, le altre rimangono le stesse.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...