Jump to content
Rpg²S Forum

*BS e Sprites del 2K3 su XP


barlogh
 Share

Recommended Posts

Descrizione
ecco uno script per realizzare un bs laterale da usare con i battler del 2k3

autore
editato per cybersam
tradotto per Sandor

Istruzioni per l'uso
prima di tutto create una classe sopra main, chiamatela Animated_Sprite e inserite:

 

# * Animated_Sprite                                Scripted por: RPG
#                                                  Editado por: cybersam
#                                                  Traducido por: Sandor
# he quitado los complemento que no necesitaba para mi juego (cybersam)...
# todo lo demâ³ es de RPG... (aquò£Š#
#------
#  Esta es la classe para los sprites animados.
#========

class Animated_Sprite < RPG::Sprite
    #------
    # - Definiendo las variables accesibles.
    #------
    attr_accessor :frames        # Nò­¥²o de frames para la animació®Š    attr_accessor :delay        # Tiempo de espera entre frames (velocidad)
    attr_accessor :frame_width  # Anchura de cada frame
    attr_accessor :frame_height  # Altura de cada frame
    attr_accessor :offset_x      # Cordenada X del 1er frame
    attr_accessor :offset_y      # Cordenada Y para todos los frames
    attr_accessor :current_frame # Frame por defecto
    attr_accessor :moving        # Se esta moviendo el sprite?
    
    #------
    # - Iniciando la animació® ¤el sprite
    #  ver puerto : Sprite viewport
    #------
    def initialize(viewport = nil)
        super(viewport)
        @frame_width, @frame_height = 0, 0
        change    # Cambio bâ´©co para marcar las variables iniciales
        @old = Graphics.frame_count  # Para el m굯do de espera
        @goingup = true    # Incrementar animació®¿ (si el @rm2k_mode es true)
        @once = false      # Si solo la animació® ¥stᡳiendo utilizada?
        @animated = true  # Usado para parar la animació® ³i @once está¡¥n true
    end
    
    #------
    # Comentario por RPG
    #  - Cambios en la animació®®®.
    #  frames : Nò­¥²o de frames que contiene la animació®Š    #  delay : Tiempo de espera entre frames, es la velocidad de animació®Š    #  offx : Cordenada X del frame 1
    #  offy : Cordenada Y de todos los frames
    #  startf : Comenzando frame para la animació®Š    #  once : Solo se estᡵtilizando la animació®¿
    #  rm2k_mode : Patró® ¤e la animació®º 1-2-3-2 si es true, 1-2-3-1 si es false
    #
    # Comentario por Cybersam
    #
    # el rm2k_mode no se volverá¡¡ utilizar...
    # si quieres esta opcion usa el script de 2k o el script original de RPG...
    #------
    def change(frames = 0, delay = 0, offx = 0, offy = 0,
        startf = 0, once = false)
        @frames = frames
        @delay = delay
        @offset_x, @offset_y = offx, offy
        @current_frame = startf
        @once = once
        x = @current_frame * @frame_width + @offset_x
        self.src_rect = Rect.new(x, @offset_y, @frame_width, @frame_height)
        @goingup = true
        @animated = true
    end
    
    #------
    # - Actualizando animació® ¹ movimiento
    #------
    def update
        super
        if self.bitmap != nil and delay(@delay) and @animated
            x = @current_frame * @frame_width + @offset_x
            self.src_rect = Rect.new(x, @offset_y, @frame_width, @frame_height)
            @current_frame = (@current_frame + 1) unless @frames == 0
            @animated = false if @current_frame == @frames and @once
            @current_frame %= @frames
        end
    end
    
    #------
    # - Mover el sprite
    #  x : Cordenada X para el punto de destino
    #  y : Cordenada Y para el punto de destino
    #  speed : Velocidad de movimiento (0 = pausado, 1+ = mⳠrⱩdo)
    #  delay : El movimietno decrece si está¡¥n 0
    #------
    def move(x, y, speed = 1, delay = 0)
        @destx = x
        @desty = y
        @move_speed = speed
        @move_delay = delay
        @move_old = Graphics.frame_count
        @moving = true
    end
    
    #------
    # - Mover el sprite al destx y al desty
    #------
    def update_move
        return unless @moving
        movinc = @move_speed == 0 ? 1 : @move_speed
        if Graphics.frame_count - @move_old > @move_delay or @move_speed != 0
            self.x += movinc if self.x < @destx
            self.x -= movinc if self.x > @destx
            self.y += movinc if self.y < @desty
            self.y -= movinc if self.y > @desty
            @move_old = Graphics.frame_count
        end
        if @move_speed > 1  # Check if sprite can't reach that point
            self.x = @destx if (@destx - self.x).abs % @move_speed != 0 and
            (@destx - self.x).abs <= @move_speed
            self.y = @desty if (@desty - self.y).abs % @move_speed != 0 and
            (@desty - self.y).abs <= @move_speed
        end
        if self.x == @destx and self.y == @desty
            @moving = false
        end
    end
    
    #------
    # - Pausar la animació®¬ pero sigue actualizandose
    #  frames : Nò­¥²o de frames
    #------
    def delay(frames)
        update_move
        if (Graphics.frame_count - @old >= frames)
            @old = Graphics.frame_count
            return true
        end
        return false
    end
end

 

 

 


dopo create un altra classe, chiamatela Battle_Animation e inserite

 

#================================================================================
#
#  Animación completa en sistema de batalla lateral (CBS) (v2.5)  por cybersam
#
#================================================================================

# bien... aquí... es desde dónde yo estoi usando el script de RPG...
# hay muchos cambios...
#
# si miras detenidamente el script observarás una línea que pone "pose(n)" #o "enemy_pose(n)"
# eso pasa porque busqué la forma de que mis sprites fueran distintos...
# por eso he añadido una opción más...a esto...
# ahora si tu añades un número después de n (la n indica a que animación #corresponde)
# por ejemplo 8... ("pose(4, 8)") esto indicaría que corresponde a la 4ª animación
# y que tiene 8 frames...
# "pose" es usado por el jugador... y "enemy_pose" por el enemigo...
# no es nada más que esto...
# aquí va una breve explicación sobre la animación de los sprites... (los números)
#
#
# 0 = moverse (durante la batalla)
# 1 = quedarse quieto
# 2 = defender
# 3 = comenzar ataque
# 4 = atacar
# 5 = usar habilidad
# 6 = muerto
# 7 = pose de victoria..idea de RPG...
#
#
# por supuesto esto es tan solo el principio del script...
# eso quiere decir que se pueden añadir muchas más animaciónes...
# pero ahora por ahora no es posible...
#
# muchas cosas han cambiado...y puede dar la sensación de que todo ya esta #hecho...
# pero por supuesto para que todo quede bien hecho y a tu gusto, debes ser tu
# el que lo edite a su parecer...
# el juego también...
#======




class Game_Actor < Game_Battler
    
    # no necesitas cambiar tu game_actor para ver al chara...
    # de lado...
    # esto a sido echo para ti... ^-^
    
    def screen_x
        if self.index != nil
            return self.index * 40 + 460
        else
            return 0
        end
    end
    
    def screen_y
        return self.index * 20 + 220
    end
    
    def screen_z
        if self.index != nil
            return self.index
        else
            return 0
        end
    end
end


class Spriteset_Battle
    #Parte de RPG...
    attr_accessor :actor_sprites
    attr_accessor :enemy_sprites
    # acaba aqui... ^-^
    
    def initialize
        @viewport0 = Viewport.new(0, 0, 640, 480)
        @viewport1 = Viewport.new(0, 0, 640, 480)
        @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
        
        @battleback_sprite = Sprite.new(@viewport0)
        # esto sirve para reservarse un enemigo y que no ataque al que tu no has #escojido...
        # esto ya fue hecho hace tiempo, ahora he añadido el comentario
        # eso ya lo sabíais... ^-^''
        @enemy_sprites = []
        for enemy in $game_troop.enemies#.reserva
            @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
        end
        
        @actor_sprites = []
        @actor_sprites.push(Sprite_Battler.new(@viewport2))
        @actor_sprites.push(Sprite_Battler.new(@viewport2))
        @actor_sprites.push(Sprite_Battler.new(@viewport2))
        @actor_sprites.push(Sprite_Battler.new(@viewport2))
        
        @weather = RPG::Weather.new(@viewport0)
        @picture_sprites = []
        for i in 51..100
            @picture_sprites.push(Sprite_Picture.new(@viewport3,
            $game_screen.pictures[i]))
        end
        @timer_sprite = Sprite_Timer.new
        update
    end
    
    
    def dispose
        if @battleback_sprite.bitmap != nil
            @battleback_sprite.bitmap.dispose
        end
        @battleback_sprite.dispose
        for sprite in @enemy_sprites + @actor_sprites
            sprite.dispose
        end
        @weather.dispose
        for sprite in @picture_sprites
            sprite.dispose
        end
        @timer_sprite.dispose
        @viewport0.dispose
        @viewport1.dispose
        @viewport2.dispose
        @viewport3.dispose
        @viewport4.dispose
    end
    
    alias original_update update
    def update
        original_update
        
        # esto hace que el personaje activo este presente... (por Missy)
        @viewport1.z = 50 and @viewport2.z = 51 if $actor_on_top == true
        @viewport1.z = 51 and @viewport2.z = 50 if $actor_on_top == false
        
        
        @viewport0.tone = $game_screen.tone
        @viewport0.ox = $game_screen.shake
        
        @viewport0.update
        
    end
end

#========
# Sprite Battler for the Costum Battle System
#========

class Sprite_Battler < Animated_Sprite
    
    attr_accessor :battler
    attr_reader  :index
    attr_accessor :target_index
    attr_accessor :frame_width
    
    
    def initialize(viewport, battler = nil)
        super(viewport)
        @battler = battler
        @pattern_b = 0 #
        @counter_b = 0 #
        @index = 0    #
        
        # esto es para la animación del estado...
        # NO LO CAMBIES escepto que sepas lo que haces!...
        $noanimation = false
        
        @frame_width, @frame_height = 48, 48
        # comienzo del sprite
        @battler.is_a?(Game_Enemy) ? enemy_pose(1) : pose(1)
        
        @battler_visible = false
        if $target_index == nil
            $target_index = 0
        end
    end
    
    def index=(index) #
        @index = index  #
        update          #
    end              #
    
    def dispose
        if self.bitmap != nil
            self.bitmap.dispose
        end
        super
    end
    
    def enemy                                            #
        $target_index += $game_troop.enemies.size
        $target_index %= $game_troop.enemies.size
        return $game_troop.enemies[$target_index]          #
    end                                                  #
    
    def actor                                            #
        $target_index += $game_party.actors.size
        $target_index %= $game_party.actors.size
        return $game_party.actors[$target_index]            #
    end        
    
    #========
    # aquí puedes agregar más poses para el chara..si es que tienes... ^-^
    #========
    def pose(number, frames = 3)
        case number
        when 0  # Magia
            change(frames, 5, 0, @frame_height * 6)
        when 1  # Para
            change(frames, 5, 0, @frame_height* 10)
        when 2 # Colpito
            change(frames, 5, 0, @frame_height )
        when 3 # Morto
            change(frames, 5, 0, @frame_height * 2)
        when 4 # Status
            change(frames, 5, 0, @frame_height * 9, 0, true)
        when 5 # Vince
            change(frames, 5, 0, 0)
        when 6 # Corre
            change(frames, 5, 0, @frame_height * 3)
        when 7 # Corre
            change(frames, 5, 0, @frame_height * 5)
        when 8 # Pugno
            change(frames, 5, 0, @frame_height * 8)
        when 9 # Pugno
            change(frames, 5, 0, @frame_height * 9)
        when 10 # Vince 2
            change(frames, 5, 0, @frame_height * 10)
            #when 8
            # change(frames, 5, 0, @frame_height * 9)
            # ...etc.
        else
            change(frames, 5, 0, 0)
        end
    end
    
    #------
    # - Aquí van las poses de los enemigos
    #  number : indica el número de la pose
    #------
    def enemy_pose(number ,enemy_frames = 3)
        case number
        when 0  # correr
            change(enemy_frames, 5, 0, @frame_height * 6)
        when 1  # esperar
            change(enemy_frames, 5, 0, @frame_height* 10)
        when 2 # defender
            change(enemy_frames, 5, 0, @frame_height )
        when 3 # Herido
            change(enemy_frames, 5, 0, @frame_height * 2)
        when 4 # Atacar
            change(enemy_frames, 5, 0, @frame_height * 9, 0, true)
        when 5 # habilidad
            change(enemy_frames, 5, 0, 0)
        when 6 # muerto
            change(enemy_frames, 5, 0, @frame_height * 3)
        when 7 # victória
            change(enemy_frames, 5, 0, @frame_height * 5)
        when 8 # victória
            change(enemy_frames, 5, 0, @frame_height * 8)
        when 9 # victória
            change(enemy_frames, 5, 0, @frame_height * 9)
        when 10 # victória
            change(enemy_frames, 5, 0, @frame_height * 10)
            # ...etc.
        else
            change(enemy_frames, 5, 0, 0)
        end
    end
    
    def default_pose
        pose(1)
        
        # aquí se cambian las poses según el estado del personaje
        # no lo pongas por encima de 75 % del maximo hp
        
        # si HP es muy bajo (- 25%)
        if (@battler.hp * 100) /@battler.maxhp  < 25
            pose(9)
            # si HP es muy bajo (- 50%)
        elsif (@battler.hp * 100) /@battler.maxhp  < 50
            pose(9)
            # si HP es muy bajo (- 75%)
        elsif (@battler.hp * 100) /@battler.maxhp  < 75
            pose(9)
        end
        
        
        # aquí se cambian las poses si el personaje es inflinjido por
        # venenos o otro tipo de cosas como dormido, paralizado, confuso,etc...
        # solo he añadido envenenado y dormido, puedes agregar más ...
        if @battler.state?(3) # envenenado
            # el (3) indica el número del estado, en la BD 3 es envenenado...
            # (no tengo muchos sprites por lo tanto he utilizado la pose 2, que es defender)
            # si tienes más sprites para estados, añadelos en poses y luego define a...
            #que estado pertenece..., pose (2) indíca que el sprite será el de defender
            pose(2)
        elsif @battler.state?(7) #dormido
            # cambiar pose por muerto
            pose(6)
        end
    end
    #========
    # Fin de las poses...
    #========
    
    
    def update
        super
        
        if @battler == nil                                                    
            self.bitmap = nil                                                  
            loop_animation(nil)                                                
            return                                                              
        end
        
        if @battler.battler_name != @battler_name
            @battler.battler_hue != @battler_hue
            
            @battler_hue = @battler.battler_hue
            @battler_name = @battler.battler_name
            self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
            @width = bitmap.width
            @height = bitmap.height
            self.ox = @frame_width / 2
            self.oy = @frame_height
            
            if @battler.dead? or @battler.hidden
                self.opacity = 0
            end
            self.x = @battler.screen_x
            self.y = @battler.screen_y
            self.z = @battler.screen_z
        end
        
        if $noanimation == false
            if @battler.damage == nil and
                @battler.state_animation_id != @state_animation_id
                @state_animation_id = @battler.state_animation_id
                loop_animation($data_animations[@state_animation_id])
            end
        else
            dispose_loop_animation
        end
        
        
        if @battler.is_a?(Game_Actor) and @battler_visible
            if $game_temp.battle_main_phase
                self.opacity += 3 if self.opacity < 255
            else
                self.opacity -= 3 if self.opacity > 207
            end
        end
        
        if @battler.blink
            blink_on
        else
            blink_off
        end
        
        unless @battler_visible
            if not @battler.hidden and not @battler.dead? and
                (@battler.damage == nil or @battler.damage_pop)
                appear
                @battler_visible = true
            end
            if not @battler.hidden and
                (@battler.damage == nil or @battler.damage_pop) and
                @battler.is_a?(Game_Actor)
                appear
                @battler_visible = true
            end
        end
        if @battler_visible
            if @battler.hidden
                $game_system.se_play($data_system.escape_se)
                escape
                @battler_visible = false
            end
            if @battler.white_flash
                whiten
                @battler.white_flash = false
            end
            if @battler.animation_id != 0
                animation = $data_animations[@battler.animation_id]
                animation(animation, @battler.animation_hit)
                @battler.animation_id = 0
            end
            if @battler.damage_pop
                damage(@battler.damage, @battler.critical)
                @battler.damage = nil
                @battler.critical = false
                @battler.damage_pop = false
            end
            if @battler.damage == nil and @battler.dead?
                if @battler.is_a?(Game_Enemy)
                    $game_system.se_play($data_system.enemy_collapse_se)
                    collapse
                    @battler_visible = false
                else
                    $game_system.se_play($data_system.actor_collapse_se) unless @dead
                    @dead = true
                    pose(6)
                end
            else
                @dead = false
            end
        end                                                                #
    end
end


#========
# Scene_Battle personalizado...
#========

class Scene_Battle
    
    
    def update_phase4
        case @phase4_step
        when 1
            update_phase4_step1
        when 2
            update_phase4_step2
        when 3
            update_phase4_step3
        when 4
            update_phase4_step4
        when 5
            update_phase4_step5
        when 6
            update_phase4_step6
        when 7
            update_phase4_step7
        end
    end
    
    
    def update_phase4_step1
        
        # Cambia las poses del actor por las default
        #if @active_battler.is_a?(Game_Actor)
        #  @spriteset.actor_sprites[@active_battler.index].default_pose
        
        #end
        for i in 0...$game_party.actors.size
            actor = $game_party.actors[i]
            @spriteset.actor_sprites[i].default_pose unless actor.dead?
        end
        
        @help_window.visible = false
        if judge
            return
        end
        if $game_temp.forcing_battler == nil
            setup_battle_event
            if $game_system.battle_interpreter.running?
                return
            end
        end
        if $game_temp.forcing_battler != nil
            @action_battlers.delete($game_temp.forcing_battler)
            @action_battlers.unshift($game_temp.forcing_battler)
        end
        if @action_battlers.size == 0
            start_phase2
            return
        end
        @animation1_id = 0
        @animation2_id = 0
        @common_event_id = 0
        @active_battler = @action_battlers.shift
        if @active_battler.index == nil
            return
        end
        if @active_battler.hp > 0 and @active_battler.slip_damage?
            @active_battler.slip_damage_effect
            @active_battler.damage_pop = true
        end
        @active_battler.remove_states_auto
        @status_window.refresh
        @phase4_step = 2
    end
    
    
    def make_basic_action_result
        
        if @active_battler.is_a?(Game_Actor)
            $actor_on_top = true
        elsif @active_battler.is_a?(Game_Enemy)
            $actor_on_top = false
        end
        
        if @active_battler.current_action.basic == 0
            #======
            # WEAPONS START...
            #======
            #
            #=== Armas distintas con animaciones distintas
            #
            # si quieres utilizar más... remplaza el "@weapon_sprite_enemy = 4"
            # con estas líneas... (pero deberás editarlas)
            #
            #        if @active_battler.weapon_id == 1 # <--  número ID del arma
            #          @weapon_sprite_enemy = 4 # <-- animación de batalla
            #        elsif @active_battler.weapon_id == 5 # <-- número ID del arma
            #          @weapon_sprite_enemy = 2 # <-- animación de batalla
            #        elsif @active_battler.weapon_id == 9 # <-- número ID del arma
            #          @weapon_sprite_enemy = 0 # <-- animación de batalla
            #        elsif @active_battler.weapon_id == 13 # <-- número ID del arma
            #          @weapon_sprite_enemy = 6 # <-- animación de batalla
            #        else
            #          @weapon_sprite_enemy = 4
            #        end
            #
            #=== FIN
            
            if @active_battler.is_a?(Game_Actor)
                if @active_battler.weapon_id == 1 # <--  número ID del arma
                    @weapon_sprite = 4 # <-- animación de batalla
                elsif @active_battler.weapon_id == 5 # <-- número ID del arma
                    @weapon_sprite = 2 # <-- animación de batalla
                elsif @active_battler.weapon_id == 9 # <-- número ID del arma
                    @weapon_sprite = 0 # <-- animación de batalla
                elsif @active_battler.weapon_id == 13 # <-- número ID del arma
                    @weapon_sprite = 6 # <-- animación de batalla
                else
                    @weapon_sprite = 4
                end
                
                # la sección de monstruos esta aquí... ^-^
                
                else# @active_battler.is_a?(Game_Enemy)
                @weapon_sprite_enemy = 4
            end
            
            #
            #=======
            # LAS ARMAS FINALIZAN....
            #=======
            
            
            @animation1_id = @active_battler.animation1_id
            @animation2_id = @active_battler.animation2_id
            if @active_battler.is_a?(Game_Enemy)
                if @active_battler.restriction == 3
                    target = $game_troop.random_target_enemy
                elsif @active_battler.restriction == 2
                    target = $game_party.random_target_actor
                else
                    index = @active_battler.current_action.target_index
                    target = $game_party.smooth_target_actor(index)
                end
                #===== aquí están las propiedades del movimiento y la animación...
                x = target.screen_x - 32
                @spriteset.enemy_sprites[@active_battler.index].enemy_pose(0)
                @spriteset.enemy_sprites[@active_battler.index]
                .move(x, target.screen_y, 10)
                #=== el 10 indíca la velocidad de movimietno...
            end
            if @active_battler.is_a?(Game_Actor)
                if @active_battler.restriction == 3
                    target = $game_party.random_target_actor
                elsif @active_battler.restriction == 2
                    target = $game_troop.random_target_enemy
                else
                    index = @active_battler.current_action.target_index
                    target = $game_troop.smooth_target_enemy(index)
                end
                #==== lo mismo para el jugador... ^-^
                x = target.screen_x + 32
                @spriteset.actor_sprites[@active_battler.index].pose(0)
                @spriteset.actor_sprites[@active_battler.index]
                .move(x, target.screen_y, 10)
            end
            @target_battlers = [target]
            for target in @target_battlers
                target.attack_effect(@active_battler)
            end
            return
        end
        if @active_battler.current_action.basic == 1
            if @active_battler.is_a?(Game_Actor)
                @spriteset.actor_sprites[@active_battler.index].pose(2) #defence
            else
                @spriteset.enemy_sprites[@active_battler.index].enemy_pose(2) #defence
            end
            @help_window.set_text($data_system.words.guard, 1)
            return
        end
        if @active_battler.is_a?(Game_Enemy) and
            @active_battler.current_action.basic == 2
            @help_window.set_text("Escapar", 1)
            @active_battler.escape
            return
        end
        if @active_battler.current_action.basic == 3
            $game_temp.forcing_battler = nil
            @phase4_step = 1
            return
        end
        
        if @active_battler.current_action.basic == 4
            if $game_temp.battle_can_escape == false
                $game_system.se_play($data_system.buzzer_se)
                return
            end
            $game_system.se_play($data_system.decision_se)
            update_phase2_escape
            return
        end
    end
    #------
    # acciones de las habilidades...
    #------
    def make_skill_action_result
        
        @skill = $data_skills[@active_battler.current_action.skill_id]
        unless @active_battler.current_action.forcing
            unless @active_battler.skill_can_use?(@skill.id)
                $game_temp.forcing_battler = nil
                @phase4_step = 1
                return
            end
        end
        @active_battler.sp -= @skill.sp_cost
        @status_window.refresh
        @help_window.set_text(@skill.name, 1)
        
        #=======
        # COMIENZAN LOS SPRITES DE LAS HABILIDADES
        #=======
        
        if @active_battler.is_a?(Game_Actor)
            if @skill.name == "Heal" # <-- nombre de la primera habilidad
                @spriteset.actor_sprites[@active_battler.index].pose(5) # <-- número de sprite
            elsif @skill.name == "Cross Cut" # <-- nombre de la segunda habilidad
                @spriteset.actor_sprites[@active_battler.index].pose(6) # <-- sprite number
            elsif @skill.name == "Fire" # <-- nombre de la tercera habilidad
                @spriteset.actor_sprites[@active_battler.index].pose(6) # <-- sprite number
            end
        else
            if @skill.name == "Heal" # <-- nombre de la primera habilidad
                @spriteset.enemy_sprites[@active_battler.index].enemy_pose(5) # <-- número de sprite
            elsif @skill.name == "Cross Cut" # <-- nombre de la segunda habilidad
                @spriteset.enemy_sprites[@active_battler.index].enemy_pose(6) # <-- número de sprite
            elsif @skill.name == "Fire" # <-- nombre de la tercera habilidad
                @spriteset.enemy_sprites[@active_battler.index].enemy_pose(6) # <-- número de sprite
            end
        end
        #=======
        # FINALIZAN LOS SPRITES DE LAS HABILIDADES
        #=======
        
        @animation1_id = @skill.animation1_id
        @animation2_id = @skill.animation2_id
        @common_event_id = @skill.common_event_id
        set_target_battlers(@skill.scope)
        for target in @target_battlers
            target.skill_effect(@active_battler, @skill)
        end
    end
    #------
    # aquícreamos el uso de las habilidades
    #------
    def make_item_action_result
        
        if @active_battler.is_a?(Game_Actor)
            @spriteset.actor_sprites[@active_battler.index].pose(1)
        else
            @spriteset.enemy_sprites[@active_battler.index].enemy_pose(1)
        end
        
        @item = $data_items[@active_battler.current_action.item_id]
        unless $game_party.item_can_use?(@item.id)
            @phase4_step = 1
            return
        end
        if @item.consumable
            $game_party.lose_item(@item.id, 1)
        end
        @help_window.set_text(@item.name, 1)
        @animation1_id = @item.animation1_id
        @animation2_id = @item.animation2_id
        @common_event_id = @item.common_event_id
        index = @active_battler.current_action.target_index
        target = $game_party.smooth_target_actor(index)
        set_target_battlers(@item.scope)
        for target in @target_battlers
            target.item_effect(@item)
        end
    end
    
    #========
    # here again.... snipplet from RPG's script
    #========
    
    
    def start_phase5
        @phase = 5
        $game_system.me_play($game_system.battle_end_me)
        $game_system.bgm_play($game_temp.map_bgm)
        exp = 0
        gold = 0
        treasures = []
        for enemy in $game_troop.enemies
            unless enemy.hidden
                exp += enemy.exp
                gold += enemy.gold
                if rand(100) < enemy.treasure_prob
                    if enemy.item_id > 0
                        treasures.push($data_items[enemy.item_id])
                    end
                    if enemy.weapon_id > 0
                        treasures.push($data_weapons[enemy.weapon_id])
                    end
                    if enemy.armor_id > 0
                        treasures.push($data_armors[enemy.armor_id])
                    end
                end
            end
        end
        treasures = treasures[0..5]
        for i in 0...$game_party.actors.size
            actor = $game_party.actors[i]
            $noanimation = true
            @spriteset.actor_sprites[i].pose(7) unless actor.dead? # {=====}
            if actor.cant_get_exp? == false
                last_level = actor.level
                actor.exp += exp
                if actor.level > last_level
                    @status_window.level_up(i)
                end
            end
        end
        $game_party.gain_gold(gold)
        for item in treasures
            case item
            when RPG::Item
                $game_party.gain_item(item.id, 1)
            when RPG::Weapon
                $game_party.gain_weapon(item.id, 1)
            when RPG::Armor
                $game_party.gain_armor(item.id, 1)
            end
        end
        @result_window = Window_BattleResult.new(exp, gold, treasures)
        @phase5_wait_count = 100
    end
    #  =*****=
    
    #------
    # actualizando el movimiento
    #------
    def update_phase4_step3
        if @active_battler.current_action.kind == 0 and
            @active_battler.current_action.basic == 0
            # aquí tenemos todas las animaciones de armas del jugador y enemigo...
            if @active_battler.is_a?(Game_Actor)
                @spriteset.actor_sprites[@active_battler.index].pose(@weapon_sprite)
            elsif @active_battler.is_a?(Game_Enemy)
                @spriteset.enemy_sprites[@active_battler.index].enemy_pose(@weapon_sprite_enemy)
            end
        end
        if @animation1_id == 0
            @active_battler.white_flash = true
        else
            @active_battler.animation_id = @animation1_id
            @active_battler.animation_hit = true
        end
        @phase4_step = 4
    end
    
    def update_phase4_step4
        # esto es para la animación del golpe...
        for target in @target_battlers
            if target.is_a?(Game_Actor) and !@active_battler.is_a?(Game_Actor)
                if target.guarding?
                    @spriteset.actor_sprites[target.index].pose(2)
                else
                    @spriteset.actor_sprites[target.index].pose(3)
                end
            elsif target.is_a?(Game_Enemy) and !@active_battler.is_a?(Game_Enemy)
                if target.guarding?
                    @spriteset.enemy_sprites[target.index].enemy_pose(2)
                else
                    @spriteset.enemy_sprites[target.index].enemy_pose(3)
                end
            end
            target.animation_id = @animation2_id
            target.animation_hit = (target.damage != "Miss")
        end
        @wait_count = 8
        @phase4_step = 5
    end
    
    def update_phase4_step5
        if @active_battler.hp > 0 and @active_battler.slip_damage?
            @active_battler.slip_damage_effect
            @active_battler.damage_pop = true
        end
        
        @help_window.visible = false
        @status_window.refresh
        
        if @active_battler.is_a?(Game_Actor)
            @spriteset.actor_sprites[@active_battler.index].pose(1)
        else
            @spriteset.enemy_sprites[@active_battler.index].enemy_pose(1)
        end
        for target in @target_battlers
            if target.damage != nil
                target.damage_pop = true
                if @active_battler.is_a?(Game_Actor)
                    @spriteset.actor_sprites[@active_battler.index].pose(1)
                else
                    @spriteset.enemy_sprites[@active_battler.index].enemy_pose(1)
                end
            end
        end
        @phase4_step = 6
    end
    #------
    # ? ?????? (??????? ???? 6 : ??????)
    #------
    def update_phase4_step6
        
        # aquí preguntamos si el personaje esta muerto, y si es jugador o enemigo...
        # estas líneas son para correr hacía detrás o quedarse en espera....
        if @active_battler.is_a?(Game_Actor) and !@active_battler.dead?
            @spriteset.actor_sprites[@active_battler.index]
            .move(@active_battler.screen_x, @active_battler.screen_y, 20)
            @spriteset.actor_sprites[@active_battler.index].pose(0)
        elsif !@active_battler.dead?
            @spriteset.enemy_sprites[@active_battler.index]
            .move(@active_battler.screen_x, @active_battler.screen_y, 20)
            @spriteset.enemy_sprites[@active_battler.index].enemy_pose(0)
        end
        for target in @target_battlers
            if target.is_a?(Game_Actor) and !target.dead?
                @spriteset.actor_sprites[target.index].pose(1)
            elsif !target.dead?
                @spriteset.enemy_sprites[target.index].enemy_pose(1)
            end
        end
        $game_temp.forcing_battler = nil
        if @common_event_id > 0
            common_event = $data_common_events[@common_event_id]
            $game_system.battle_interpreter.setup(common_event.list, 0)
        end
        @phase4_step = 7
    end
    
    def update_phase4_step7
        
        # aquí preguntamos si el personaje esta muerto, y si es jugador o enemigo...
        # estas líneas son para correr hacía detrás o quedarse en espera....
        if @active_battler.is_a?(Game_Actor) and !@active_battler.dead?
            @spriteset.actor_sprites[@active_battler.index].pose(1)
        elsif !@active_battler.dead?
            @spriteset.enemy_sprites[@active_battler.index].enemy_pose(1)
        end
        
        $game_temp.forcing_battler = nil
        if @common_event_id > 0
            common_event = $data_common_events[@common_event_id]
            $game_system.battle_interpreter.setup(common_event.list, 0)
        end
        @phase4_step = 1
    end
    
    # esto ya es un extra... sin esta línea la animación no funcionará correctamente...
    
    def update
        if $game_system.battle_interpreter.running?
            $game_system.battle_interpreter.update
            if $game_temp.forcing_battler == nil
                unless $game_system.battle_interpreter.running?
                    unless judge
                        setup_battle_event
                    end
                end
                if @phase != 5
                    @status_window.refresh
                end
            end
        end
        $game_system.update
        $game_screen.update
        if $game_system.timer_working and $game_system.timer == 0
            $game_temp.battle_abort = true
        end
        @help_window.update
        @party_command_window.update
        @actor_command_window.update
        @status_window.update
        @message_window.update
        @spriteset.update
        if $game_temp.transition_processing
            $game_temp.transition_processing = false
            if $game_temp.transition_name == ""
                Graphics.transition(20)
            else
                Graphics.transition(40, "Graphics/Transitions/" +
                $game_temp.transition_name)
            end
        end
        if $game_temp.message_window_showing
            return
        end
        if @spriteset.effect?
            return
        end
        if $game_temp.gameover
            $scene = Scene_Gameover.new
            return
        end
        if $game_temp.to_title
            $scene = Scene_Title.new
            return
        end
        if $game_temp.battle_abort
            $game_system.bgm_play($game_temp.map_bgm)
            battle_end(1)
            return
        end
        if @wait_count > 0
            @wait_count -= 1
            return
        end
        
        # esta parte bloquea las acciones cúando el personaje se mueve
        for actor in @spriteset.actor_sprites
            if actor.moving
                return
            end
        end
        # y esta es para el enemigo...
        for enemy in @spriteset.enemy_sprites
            if enemy.moving# and $game_system.animated_enemy
                return
            end
        end
        
        if $game_temp.forcing_battler == nil and
            $game_system.battle_interpreter.running?
            return
        end
        case @phase
        when 1
            update_phase1
        when 2
            update_phase2
        when 3
            update_phase3
        when 4
            update_phase4
        when 5
            update_phase5
        end
    end
    
    #========
    # Creado por: RPG
    # Modificado por: Cybersam
    # Traducido por: Sandor
    # Web's de interés: http://www.rmxp.net
    #                  http://www.rpgsystem.net
    #========
end

 

 



ecco uno screen:
http://img28.imageshack.us/img28/5350/antaprima9sj.png


buon making a tutti

Link to comment
Share on other sites

  • 1 month later...

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