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
Question
FenriX`
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 endEcco 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
«NEWS!!» http://img123.imageshack.us/img123/24/89057157.png
http://img115.imageshack.us/img115/5350/19481487.png
http://img407.imageshack.us/img407/2696/45573607.png
http://img185.imageshack.us/img185/373/70775921.png
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
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 accountSign in
Already have an account? Sign in here.
Sign In Now