Battle Maker

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte para criação de Jogos


    Transições de Batalha

    jiraya
    jiraya
    Administrador
    Administrador


    Mensagens : 1299
    Credibilidade : 54

    Transições de Batalha Empty Transições de Batalha

    Mensagem por jiraya Sáb Out 09, 2010 10:39 pm

    POR: Alex Crosslight
    TRANSIÇÕES DE BATALHA
    Por Alex Crosslight


    INTRODUÇÃO
    Para comemorar o meu aniversário, criei esse script que propõe três diferentes transições dinâmicas de batalha, todas feitas com ajuda de artefatos que encontrei net a fora.
    DESCRIÇÃO

    3 transições de batalha dinâmicas.
    DEMO
    Não necessária
    SCRIPTS
    Cada transição necessita de um script para seu funcionamento.
    Código:
    #==================================
    # Cross Transition battle
    #==================================
    # Por Alex Crosslight
    #==================================
    # Para comemorar o meu aniversário, estou trazendo esse
    # script o qual trabalhei em cima de algumas das mil engenhocas
    # do meu amigo Zé Colméia e de mais alguns scripters net a fora.
    #
    # O script possibilita tipos de transições para inicio de batalha,
    # todas fazendo algum efeito dinâmico.
    #
    # É necessário a dll screenshot instalada no diretório de seu projeto.
    #
    #
    # ID da transição:
    #
    # 1 - Flip: Faz um giro do mapa que dá lugar ao fundo de batalha.
    # 2 - Efeito Wave: o mapa se distorçe e dá lugar ao fundo de batalha.
    # 3 - Derramamento: o mapa perde opacidade aos poucos e é "derramado" na tela.
    #
    # Para o efeito 1, é necessária a presença do script Rotate Sprite, por zé colméia.
    # Para o efeito 2, é necessária a presença do script Wave Effect, por Zé Colméia.
    # Para o efeito 3, é necessária a presença dos scritps Rotate Sprite por Zé Colméia.
    #==================================
    module Cross
    ID_TRANSITION = 3  # ID da transição (Lista acima)
    BATTLEBACK_AP = true # mostrar battleback de fundo durante a ação? Se sim,
                        # ao invés do fundo ficar preto, ele ja mostra o
                        # battleback atual.
    #-------------------------
    # Os efeitos 1 e 3 só são habilitados caso BATTLEBACL_AP = true.
    #-------------------------
     
    end

    #===============================================================================
    #Permite que você adicione a função screenshot, aperte o botão
    #F5 para capturar a imagem, é necessário o arquivo screenshot.dll
    #################################################################
    # Screenshot V2
    # Screenshot Script v1 & screenshot.dll v1            created by: Andreas21
    # Screenshot Script v2                                created/edit by: cybersam
    #===============================================================================
    module Screen
     
      @screen = Win32API.new 'screenshot', 'Screenshot', %w(l l l l p l l), ''
      @readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
      @findwindow = Win32API.new 'user32', 'FindWindowA', %w(p p), 'l'
      module_function
      def shot(file = "screenshot", typ = 2)
        if typ == 0
          typname = ".bmp"
        elsif typ == 1
          typname = ".jpg"
        elsif typ == 2
          typname = ".png"
        end
        file_index = 0
        dir = "Graphics/Pictures/"
        file_name = dir + file.to_s + typname.to_s
        @screen.call(0,0,640,480,file_name,handel,typ)
      end
      def handel
        game_name = "\0" * 256
        @readini.call('Game','Title','',game_name,255,".\\Game.ini")
        game_name.delete!("\0")
        return @findwindow.call('RGSS Player',game_name)
      end
    end
    #===============
    # Inicio do script.
    #===============
    class Scene_Map
     
        def call_battle
        # Limpar flag de chamada de batalha
        $game_temp.battle_calling = false
        # Limpar flag de chamda de menu
        $game_temp.menu_calling = false
        $game_temp.menu_beep = false
        # Criar um contador de encontros
        $game_player.make_encounter_count
        # Memmorizar a BGM do mapa e parar a BGM
        $game_temp.map_bgm = $game_system.playing_bgm
        $game_system.bgm_stop
        # Reproduzir SE de Batalha
        $game_system.se_play($data_system.battle_start_se)
        # Reproduzir BGM de Batalha
        $game_system.bgm_play($game_system.battle_bgm)
        # Alinhar a posição do Jogador
        $game_player.straighten
        # Alternar para a tela de Batalha
        $scene = Scene_Teste.new
      end
    end
    class Scene_Teste
     
      def main
        Screen::shot
        @raver = 0
        case Cross::ID_TRANSITION
        when 1
        @sprite1 = Rotate.new
        @sprite1.mirror2 = false
        @sprite1.ppf = 20
        @sprite1.x2 = 0
        @sprite1.y = 0
        @sprite1.angle = 0
        @sprite1.zoom_x2 = 1
        @sprite1.zoom_y = 1
        @sprite1.bitmap = RPG::Cache.picture("screenshot")
        @sprite1.bitmap2 = RPG::Cache.battleback($game_map.battleback_name) if Cross::BATTLEBACK_AP
        when 2
        @sprite = Sprite.new
        @sprite.bitmap = RPG::Cache.battleback($game_map.battleback_name) if Cross::BATTLEBACK_AP
        @sprite1 = Sprite.new
        @sprite1.bitmap = RPG::Cache.picture("screenshot")
        @sprite1.x = 0
        @sprite1.wave_amp = 30
        @sprite1.wave_length = 120
        @sprite1.wave_phase = 90
        @sprite1.wave_speed = 60
        when 3
        @sprite = Sprite.new
        @sprite.bitmap = RPG::Cache.battleback($game_map.battleback_name) if Cross::BATTLEBACK_AP
        @sprite1 = Rotate.new
        @sprite1.x2 = 5
        @sprite1.y = 0
        @sprite1.zoom_x2 = 1
        @sprite1.zoom_y = 1
        @sprite1.bitmap = RPG::Cache.picture("screenshot")
        when 4
        @sprite1 = Rotate.new
        @sprite1.x = 0
        @sprite1.y = 0
        @sprite1.angle = 0
        @sprite1.bitmap = RPG::Cache.picture("screenshot")
        end
        # Executar transição
        Graphics.transition
        # Loop principal
        loop do
          # Atualizar a tela de jogo
          Graphics.update
          # Atualizar a entrada de informações
          Input.update
          # Atualizar Frame
          update
          # Abortar loop se a tela for alterada
          if $scene != self
            break
          end
        end
        # Preparar para transiçõa
        Graphics.freeze
        @sprite.dispose if Cross::ID_TRANSITION == 2
        @sprite.dispose if Cross::ID_TRANSITION == 3
        @sprite1.bitmap.dispose
        @sprite1.dispose
      end
      def update
        @sprite1.update
        if Cross::ID_TRANSITION == 2
          @sprite1.x -= 10
          @sprite1.opacity -= 5
          @sprite1.wave_amp += 10
          @sprite1.wave_length += 10
          @sprite1.wave_phase += 20
          @sprite1.wave_speed += 20
        end
        if Cross::ID_TRANSITION == 3
        @sprite1.zoom_x2 += 0.5
        @sprite1.zoom_y += 0.5
        @sprite1.opacity -= 5
        end
        if Cross::ID_TRANSITION == 4
          @sprite1.angle += 10
          @sprite1.x += 50
          @sprite1.y += 50
        end
        @raver += 10
          if @raver > 630
            File.delete("Graphics/Pictures/screenshot.png")
            $scene = Scene_Battle.new
          end
      end
    end
    Wave Effect (Por Zé Colméia), requesitada pela transição 2
    Spoiler:
    Rotate Sprite (Por Zé Colméia), requesitada pelas transições 1 e 3
    Spoiler:
    INSTRUÇÕES

    > Cole o script de transição acima do main e o habilite da maneira desejada. Não se esqueça de colar também o script requesitado para que tenha total funcionamento do efeito.
    > Cole também a dll screenshot que pode ser baixada aqui na pasta de seu projeto (Onde fica o game.exe).
    IMAGENS
    Transições de Batalha Efeito-2-300x237
    Transições de Batalha Efeito-3-300x237
    AGRADECIMENTOS

    Zé Colméia pelos seus excelentes scripts de efeito Wave e rotate sprite, os quais foram essenciais para criar as transições.
    Andreas21 e CyberSam por criarem a função screenshot.
    Criado por Alexander Ernest Crosslight.

      Data/hora atual: Sáb Abr 27, 2024 7:19 pm