Ciao a tutti, come scritto nel titolo avrei bisogno di una mano con uno script di charlie fleed, ovvero un particolare tipo di bs laterale. Quello che vorrei avere in pratica, è una piccola modifica nello script della battaglia, quando i personaggi fanno magie, ad esempio quando con un mago faccio una magia,fa qualche passo in avanti , fa l'animazione della magia, però dopo che ha fatto l'animazione quando deve tornare al suo posto, non fa un passo indietro, ma mi fa tutta l'animazione come quando attacca e deve tornare al suo posto, spiego meglio con uno screen: http://tinypic.com/view.php?pic=2jaww1s&s=6 Ecco, a me fa questo e rimane bloccato per un paio di secondi. Quello che vorrei che facesse invece e fare solo un passo indietro.
ecco lo script spriteset_battle
#============================================================================== # ** Custom Battle System (CTB) by Charlie Fleed # # Version: 3.1 # Author: Charlie Fleed #==============================================================================
#============================================================================== # ■ GAME ENEMY #============================================================================== class Game_Enemy alias custom_pos_screen_y screen_y def screen_y return custom_pos_screen_y*1.5 end end
#============================================================================== # ** STRETCHED BATTLE-BACKGROUND #------------------------------------------------------------------------------ #============================================================================== # ** Spriteset_Battle #------------------------------------------------------------------------------ # This class brings together battle screen sprites. It's used within # the Scene_Battle class. #============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_reader :viewport1 # enemy viewport attr_reader :viewport2 # actor viewport #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize # Make viewports @viewport1 = Viewport.new(0, 0, 640, 480) # Charlie @viewport2 = Viewport.new(0, 0, 640, 480) @viewport3 = Viewport.new(0, 0, 640, 480) @viewport4 = Viewport.new(0, 0, 640, 480) @viewport2.z = 101 @viewport3.z = 200 @viewport4.z = 5000 # Make battleback sprite @battleback_sprite = Sprite.new(@viewport1)
# Make enemy sprites @enemy_sprites = [] for enemy in $game_troop.enemies.reverse @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy)) end
# Modified by Charlie # Make actor sprites @actor_sprites = [] for i in 0...$game_party.actors.size @actor_sprites.push(Sprite_Battler.new(@viewport1)) end # END OF CHANGES
# Make weather @weather = RPG::Weather.new(@viewport1) # Make picture sprites @picture_sprites = [] for i in 51..100 @picture_sprites.push(Sprite_Picture.new(@viewport3, $game_screen.pictures)) end # Make timer sprite @timer_sprite = Sprite_Timer.new # Frame update update end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update # Update actor sprite contents (corresponds with actor switching) # Modified by Charlie # keep the number of sprites equal to the number of party actors if $game_party.actors.size > @actor_sprites.size #print("aggiunti "+($game_party.actors.size - @actor_sprites.size).to_s+" sprites") add_sprites($game_party.actors.size - @actor_sprites.size) elsif $game_party.actors.size < @actor_sprites.size #print("rimossi "+($game_party.actors.size - @actor_sprites.size).to_s+" sprites") remove_sprites(@actor_sprites.size - $game_party.actors.size) end for i in 0...$game_party.actors.size @actor_sprites.battler = $game_party.actors end # END OF CHANGES # If battleback file name is different from current one if @battleback_name != $game_temp.battleback_name @battleback_name = $game_temp.battleback_name if @battleback_sprite.bitmap != nil @battleback_sprite.bitmap.dispose end @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name) # Charlie @battleback_sprite.zoom_y = 480.0 / @battleback_sprite.bitmap.height @battleback_sprite.src_rect.set(0, 0, 640, 480) # Charlie end # Update battler sprites for sprite in @enemy_sprites + @actor_sprites sprite.update end # Update weather graphic @weather.type = $game_screen.weather_type @weather.max = $game_screen.weather_max @weather.update # Update picture sprites for sprite in @picture_sprites sprite.update end # Update timer sprite @timer_sprite.update # Set screen color tone and shake position @viewport1.tone = $game_screen.tone @viewport1.ox = $game_screen.shake # Set screen flash color @viewport4.color = $game_screen.flash_color # Update viewports @viewport1.update @viewport2.update @viewport4.update end #-------------------------------------------------------------------------- # * Determine if Effects are Displayed #-------------------------------------------------------------------------- def actor_effect? # Return true if even 1 effect is being displayed for sprite in @actor_sprites return true if sprite.effect? end return false end end
class Spriteset_Battle #-------------------------------------------------------------------------- # * #-------------------------------------------------------------------------- def add_sprites(n=1) added_sprites=[] for i in 1..n actor_sprite=Sprite_Battler.new(@viewport1) @actor_sprites.push(actor_sprite) added_sprites.push(actor_sprite) # print("add_sprite") end return added_sprites end #-------------------------------------------------------------------------- # * #-------------------------------------------------------------------------- def add_sprite_in_pos(pos) actor_sprite=Sprite_Battler.new(@viewport1) actor_sprite.appear @actor_sprites.insert(pos, actor_sprite) return actor_sprite # print("add_sprite") end #-------------------------------------------------------------------------- # * #-------------------------------------------------------------------------- def remove_sprites(n=1) for i in 1..n # print("remove sprite") sprite=@actor_sprites.pop sprite.battler=nil sprite.dispose end end #-------------------------------------------------------------------------- # * #-------------------------------------------------------------------------- def remove_sprite_in_pos(pos) sprite=@actor_sprites.delete_at(pos) sprite.battler=nil sprite.dispose end end
Question
kecco_shadow
Ciao a tutti, come scritto nel titolo avrei bisogno di una mano con uno script di charlie fleed, ovvero un particolare tipo di bs laterale.
Quello che vorrei avere in pratica, è una piccola modifica nello script della battaglia, quando i personaggi fanno magie, ad esempio quando con un mago faccio una magia,fa qualche passo in avanti , fa l'animazione della magia, però dopo che ha fatto l'animazione quando deve tornare al suo posto, non fa un passo indietro, ma mi fa tutta l'animazione come quando attacca e deve tornare al suo posto, spiego meglio con uno screen: http://tinypic.com/view.php?pic=2jaww1s&s=6
Ecco, a me fa questo e rimane bloccato per un paio di secondi.
Quello che vorrei che facesse invece e fare solo un passo indietro.
ecco lo script spriteset_battle
#==============================================================================
# ** Custom Battle System (CTB) by Charlie Fleed
#
# Version: 3.1
# Author: Charlie Fleed
#==============================================================================
#==============================================================================
# ■ GAME ENEMY
#==============================================================================
class Game_Enemy
alias custom_pos_screen_y screen_y
def screen_y
return custom_pos_screen_y*1.5
end
end
#==============================================================================
# ** STRETCHED BATTLE-BACKGROUND
#------------------------------------------------------------------------------
#==============================================================================
# ** Spriteset_Battle
#------------------------------------------------------------------------------
# This class brings together battle screen sprites. It's used within
# the Scene_Battle class.
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :viewport1 # enemy viewport
attr_reader :viewport2 # actor viewport
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
# Make viewports
@viewport1 = Viewport.new(0, 0, 640, 480) # Charlie
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport4 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 101
@viewport3.z = 200
@viewport4.z = 5000
# Make battleback sprite
@battleback_sprite = Sprite.new(@viewport1)
# Make enemy sprites
@enemy_sprites = []
for enemy in $game_troop.enemies.reverse
@enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
end
# Modified by Charlie
# Make actor sprites
@actor_sprites = []
for i in 0...$game_party.actors.size
@actor_sprites.push(Sprite_Battler.new(@viewport1))
end
# END OF CHANGES
# Make weather
@weather = RPG::Weather.new(@viewport1)
# Make picture sprites
@picture_sprites = []
for i in 51..100
@picture_sprites.push(Sprite_Picture.new(@viewport3,
$game_screen.pictures))
end
# Make timer sprite
@timer_sprite = Sprite_Timer.new
# Frame update
update
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Update actor sprite contents (corresponds with actor switching)
# Modified by Charlie
# keep the number of sprites equal to the number of party actors
if $game_party.actors.size > @actor_sprites.size
#print("aggiunti "+($game_party.actors.size - @actor_sprites.size).to_s+" sprites")
add_sprites($game_party.actors.size - @actor_sprites.size)
elsif $game_party.actors.size < @actor_sprites.size
#print("rimossi "+($game_party.actors.size - @actor_sprites.size).to_s+" sprites")
remove_sprites(@actor_sprites.size - $game_party.actors.size)
end
for i in 0...$game_party.actors.size
@actor_sprites.battler = $game_party.actors
end
# END OF CHANGES
# If battleback file name is different from current one
if @battleback_name != $game_temp.battleback_name
@battleback_name = $game_temp.battleback_name
if @battleback_sprite.bitmap != nil
@battleback_sprite.bitmap.dispose
end
@battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
# Charlie
@battleback_sprite.zoom_y = 480.0 / @battleback_sprite.bitmap.height
@battleback_sprite.src_rect.set(0, 0, 640, 480) # Charlie
end
# Update battler sprites
for sprite in @enemy_sprites + @actor_sprites
sprite.update
end
# Update weather graphic
@weather.type = $game_screen.weather_type
@weather.max = $game_screen.weather_max
@weather.update
# Update picture sprites
for sprite in @picture_sprites
sprite.update
end
# Update timer sprite
@timer_sprite.update
# Set screen color tone and shake position
@viewport1.tone = $game_screen.tone
@viewport1.ox = $game_screen.shake
# Set screen flash color
@viewport4.color = $game_screen.flash_color
# Update viewports
@viewport1.update
@viewport2.update
@viewport4.update
end
#--------------------------------------------------------------------------
# * Determine if Effects are Displayed
#--------------------------------------------------------------------------
def actor_effect?
# Return true if even 1 effect is being displayed
for sprite in @actor_sprites
return true if sprite.effect?
end
return false
end
end
#==============================================================================
# ■ SPRITESET BATTLE
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# *
#--------------------------------------------------------------------------
def add_sprites(n=1)
added_sprites=[]
for i in 1..n
actor_sprite=Sprite_Battler.new(@viewport1)
@actor_sprites.push(actor_sprite)
added_sprites.push(actor_sprite)
# print("add_sprite")
end
return added_sprites
end
#--------------------------------------------------------------------------
# *
#--------------------------------------------------------------------------
def add_sprite_in_pos(pos)
actor_sprite=Sprite_Battler.new(@viewport1)
actor_sprite.appear
@actor_sprites.insert(pos, actor_sprite)
return actor_sprite
# print("add_sprite")
end
#--------------------------------------------------------------------------
# *
#--------------------------------------------------------------------------
def remove_sprites(n=1)
for i in 1..n
# print("remove sprite")
sprite=@actor_sprites.pop
sprite.battler=nil
sprite.dispose
end
end
#--------------------------------------------------------------------------
# *
#--------------------------------------------------------------------------
def remove_sprite_in_pos(pos)
sprite=@actor_sprites.delete_at(pos)
sprite.battler=nil
sprite.dispose
end
end
grazie in anticipo :smile:
Link to comment
Share on other sites
3 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