Jump to content
Rpg²S Forum

barlogh

Utenti
  • Posts

    2
  • Joined

  • Last visited

Posts posted by barlogh

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

×
×
  • Create New...