Jump to content
Rpg²S Forum
  • 0

Creazione animazioni sulla base del minkoff (Script allegato)


FenriX`
 Share

Question

Ola gente... Non uccidetemi X| è gia il 4 o 5 topic che ho aperto su questa sezione XD quindi

richiesta per i moderatori: eliminate i mieie vecchi topic, sono tutte questioni risolte XD non voglio riempire questa sezione :\

Ad ogni modo... via alla richiesta XD

 

#==============================================================================
# ** Sprite_Battler
#------------------------------------------------------------------------------
#  Animated Battlers by Minkoff
#==============================================================================

class Sprite_Battler < RPG::Sprite
 #--------------------------------------------------------------------------
 # * Initialize
 #--------------------------------------------------------------------------
 alias cbs_initialize initialize
 def initialize(viewport, battler = nil)
@speed = 12
@frames = 8
@poses = 10
@stationary_enemies = true
@stationary_actors = false
@calculate_speed = false
@phasing = false
@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 = 7 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 + 80
else
  return 0
end
 end
 #--------------------------------------------------------------------------
 # * Actor Y Coordinate
 #--------------------------------------------------------------------------
 def screen_y
return self.index * 35 + 320
 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_x = (battler.is_a?(Game_Actor) ? 60 : -40)
	offset_y = (battler.is_a?(Game_Actor) ? 40 : -40)
	@spriteset.battler(battler).setmove(target.screen_x - offset_x, target.screen_y + offset_y)
	@moved[battler] = true
	return
  elsif not battler.guarding?
	@spriteset.battler(battler).pose = 6
	@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

Ecco lo script, questo è lo script riferito alle animazioni del minkoff

La domanda è questa: qualcuno sarebbe in grado di creare sulla base di questo script un'altro script dove si possa definire un'immagine sorgente con tipo @immagine = sprite.new e @immagine.bitmap = RGS::cache.picture('immagine') in modo che venga divisa in tot righe con tot frame e con un animazione dei frame riga per riga con velocità definita da una variabile e con la possibilità di impostare volta per volta la X e la Y relative?

Non so se sono stato chiaro :\ credo di si Oo

ad ogni modo qualunque cosa sempre sulla base di questo script, ho visto che all'inizio ci stanno un sacco di sezioni riferite a numero di frame di pose velocità e tutto il resto, per favore aiutatemi che fatto questo posso impostare le ultime 2 cazzate sul main menù e postare anche screen XD (poi rimane il problema sulla sezione relativa alla sferografia e alle status T.T ma questi sono problemi futuri XD) ad ogni modo grazie in anticipo per l'aiuto che sicuramente non arriverà T.T (ma mi serve quindi smentitemi XD) e scusate ancora per riempire questa sezione del forum con topic su topic XD quindi ricordo ancora che potete cancellare i vecchi topic XD a meno che non servano a qualcun altro ma non credo Oo

A presto gente :D

 

 

Membro # 8-8-8 [Hachi] della:

http://img3.imageshack.us/img3/9636/bannergm.png

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

lol xD

sistemo io xDD

Progetti:

 http://i.imgur.com/jmLkIqi.png

http://i54.tinypic.com/2rh4ojq.png

https://github.com/ProGM

 

Crea anche tu il tuo gioco per Game Boy!
http://rpg2s.net/gif/SCContest3Oct.gifhttp://www.rpg2s.net/img/fablecontest1st.pnghttp://i43.tinypic.com/1zokd2s.png


http://i.imgur.com/BEu6G.gif

http://i.imgur.com/H1ARhq7.gif

http://i.imgur.com/Af6ijZN.gif

AOT: Associazione Odiamo la Telecom:

http://i.imgur.com/aYJs89E.png

"4 gattini... 4 stelline... E le 4 paperelle non ci stavano :3"

Flame


http://i30.tinypic.com/i27ypj.png

Link to comment
Share on other sites

  • 0

Allora mi dai una mano tu ProGM? :o grazie grazie XD

ad ogni modo Alato per quanto riguarda l'apprendimento io apprendo vedendo gli script... se non so da dove partire come lo realizzo e cosa imparo? XD grazie per l'interessamento della mia competenza cmq :)

 

 

Membro # 8-8-8 [Hachi] della:

http://img3.imageshack.us/img3/9636/bannergm.png

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...