[Dispondo] Lampião Customizável

    jiraya
    jiraya
    Administrador
    Administrador

    Mensagens : 1299
    Credibilidade : 54

     [Dispondo] Lampião Customizável Empty [Dispondo] Lampião Customizável

    Mensagem por jiraya em Seg Set 20, 2010 11:43 pm

    Por: Madajuv
    Lampião Customizável
    Breve Descrição:
    O script cria uma zona de luz em volta do personagem enquanto o restante do mapa permanece escuro, sem o uso de imagens adicionais. Para ativar/desativar o efeito usa-se uma switch. A luz do lampião é totalmente customizável, além da escuridão em volta. Contudo, quanto mais realista e quanto maior o raio do efeito de luz maior será o tempo de transição entre os mapas.
    Demo:
    Creio que desnecessária.
    Screen de Exemplo:
     [Dispondo] Lampião Customizável Ss2
     [Dispondo] Lampião Customizável Ss
    Versão 1.0:
    Código:
    #===============================================================
    # Lampião Customizável
    # Autor: Madajuv
    # Agradecimentos:
    # Ao autor de Nakiri Dungeon, pelo código para desenhar círculos.
    #===============================================================
    # O script faz com que uma pequena área em volta do personagem
    # fique iluminada, enquanto o restante fica escuro.
    # Não precisa de imagens.
    #===============================================================
    # Edite Aqui:
    #---------------------------------------------------------------
    module Mada
      # O raio da circunferência de luz que o lampião cria
      # Quanto maior, mais demora a transição entre mapas
      LAMP_Raio_max = 150
      # A opacidade da escuridão fora da luz
      #(0 = Muito claro/255 = Muito escuro)
      LAMP_Escuridao = 250
      # Quantidade de camadas de transição entre a luz do lampião e a escuridão
      # Quanto mais, mais demora a transição entre mapas
      LAMP_Camadas = 5
      # "Distância" de opacidade entre a luz do lampião e
      # a escuridão, quanto mais próximo do zero melhor o efeito.
      LAMP_Dist = 0
      # Switch que ativa o efeito.
      LAMP_Switch = 1
    end
    #---------------------------------------------------------------
    # Fim da edição
    #===============================================================
    class Bitmap
      # Método para desenhar círculos,
      # crédito ao autor de Nakiri Dungeon
      def draw_circle(x, y, r, color)
        for ax in 0..r
          for ay in 0..r
            set_pixel(x + ax, y + ay, color) if Math.hypot((r/2) - ax, (r/2) - ay) < r/2
          end
        end
      end
    end
    class Spriteset_Map
      alias mada_lamp initialize
      def initialize
        if Mada::LAMP_Raio_max > 400
          p 'O raio escolhido para o lampião é muito grande.'
          $scene = nil
          mada_lamp
          return
        end
        @viewport2 = Viewport.new(0, 0, 640, 480)
        @viewport2.z = 200
        @lampiao = Plane.new(@viewport2)
        @lampiao.bitmap = Bitmap.new(960, 720)
        @lampiao.bitmap.fill_rect(Rect.new(0, 0, 960, 720), Color.new(0,0,0,Mada::LAMP_Escuridao))
        aux = Mada::LAMP_Camadas + 1
        aux1 = Mada::LAMP_Raio_max.to_f/aux.to_f
        aux2 = aux1/2.0
        aux3 = Mada::LAMP_Escuridao-Mada::LAMP_Dist
        for i in 0..aux
          @lampiao.bitmap.draw_circle(480.0+i.to_f*aux2, 360+i.to_f*aux2,
          Mada::LAMP_Raio_max.to_f-i.to_f*aux1, Color.new(0,0,0,aux3-i*aux1))
        end
        aux4 = (Mada::LAMP_Raio_max-100).to_f/2.0
        @lamp_x = 530 + aux4
        @lamp_y = 430 + aux4
        @lampiao.ox = @lamp_x - $game_player.screen_x
        @lampiao.oy = @lamp_y - $game_player.screen_y
        mada_lamp
      end
      alias mada_lamp_d dispose
      def dispose
        unless Mada::LAMP_Raio_max > 400
          @lampiao.bitmap.dispose
          @lampiao.dispose
        end
        mada_lamp_d
      end
      alias mada_t update
      def update
        @lampiao.visible = $game_switches[Mada::LAMP_Switch]
        if $game_player.moving?
          @lampiao.ox = @lamp_x - $game_player.screen_x
          @lampiao.oy = @lamp_y - $game_player.screen_y
        end
        mada_t
      end
    end
    Versão 2.0:
    Código:
    #===============================================================
    # Lampião Customizável 2.0
    # Autor: Madajuv
    # Agradecimentos:
    # Ao autor de Nakiri Dungeon, pelo código para desenhar círculos.
    #===============================================================
    # Versão 1.0:
    #---------------------------------------------------------------
    # O script faz com que uma pequena área em volta do personagem
    # fique iluminada, enquanto o restante fica escuro.
    # Não precisa de imagens.
    #---------------------------------------------------------------
    # Versão 2.0
    #---------------------------------------------------------------
    # A imagem do lampião é criada antes do título e somente uma vez,
    # há uma opção de colocar uma tela de loading.
    #===============================================================
    # Edite Aqui:
    #---------------------------------------------------------------
    module Mada
      # O raio da circunferência de luz que o lampião cria
      # Quanto maior, mais demora o loading
      LAMP_Raio_max = 300
      # A opacidade da escuridão fora da luz
      #(0 = Muito claro/255 = Muito escuro)
      LAMP_Escuridao = 250
      # Quantidade de camadas de transição entre a luz do lampião e a escuridão
      # Quanto mais, mais demora o loading
      LAMP_Camadas = 50
      # "Distância" de opacidade entre a luz do lampião e
      # a escuridão, quanto mais próximo do zero melhor o efeito.
      LAMP_Dist = 0
      # Switch que ativa o efeito.
      LAMP_Switch = 1
      # Mostrar tela de load?
      LAMP_Load = true # true = sim / false = não
      # Mensagem da barra de load.
      LAMP_Mensa = 'Colocando óleo no lampião... Aguarde.'
    end
    #---------------------------------------------------------------
    # Fim da edição
    #===============================================================
    class Bitmap
      # Método para desenhar círculos,
      # crédito ao autor de Nakiri Dungeon
      def draw_circle(x, y, r, color)
        for ax in 0..r
          for ay in 0..r
            set_pixel(x + ax, y + ay, color) if Math.hypot((r/2) - ax, (r/2) - ay) < r/2
          end
        end
      end
    end
    def desenhar_lamp
      @load_bar_fundo = Sprite.new
      @load_bar_fundo.bitmap = Bitmap.new(480, 64)
      @load_bar_fundo.bitmap.fill_rect(Rect.new(0, 0, 480, 64), Color.new(150,150,150))
      @load_bar_fundo.bitmap.fill_rect(Rect.new(1, 1, 478, 62), Color.new(100,100,100))
      @load_bar = Sprite.new
      @load_bar.bitmap = Bitmap.new(478, 62)
      @load_bar_fundo.x = 80; @load_bar.x = 81
      @load_bar_fundo.y = 208; @load_bar.y = 209
      $lamp_d = Bitmap.new(960, 720)
      $lamp_d.fill_rect(Rect.new(0, 0, 960, 720), Color.new(0,0,0,Mada::LAMP_Escuridao))
      aux = Mada::LAMP_Camadas + 1
      aux1 = Mada::LAMP_Raio_max.to_f/aux.to_f
      aux2 = aux1/2.0
      aux3 = Mada::LAMP_Escuridao-Mada::LAMP_Dist
      if Mada::LAMP_Load
        for i in 0..aux
          @load_bar.bitmap.clear
          @load_bar.bitmap.fill_rect(Rect.new(0, 0, 478*i/aux, 62), Color.new(255-(i*255/aux),(i*255/aux),0))
          @load_bar.bitmap.draw_text(@load_bar.bitmap.rect, Mada::LAMP_Mensa, 1)
          $lamp_d.draw_circle(480.0+i.to_f*aux2, 360+i.to_f*aux2,
          Mada::LAMP_Raio_max.to_f-i.to_f*aux1, Color.new(0,0,0,aux3-i*aux1))
          Graphics.update
        end
      else
        for i in 0..aux
          $lamp_d.draw_circle(480.0+i.to_f*aux2, 360+i.to_f*aux2,
          Mada::LAMP_Raio_max.to_f-i.to_f*aux1, Color.new(0,0,0,aux3-i*aux1))
        end
      end
      @load_bar.bitmap.dispose
      @load_bar.dispose
      @load_bar_fundo.bitmap.dispose
      @load_bar.dispose
    end
    desenhar_lamp
    class Spriteset_Map
      alias mada_lamp initialize
      def initialize
        if Mada::LAMP_Raio_max > 400
          p 'O raio escolhido para o lampião é muito grande.'
          $scene = nil
          mada_lamp
          return
        end
        @viewport2 = Viewport.new(0, 0, 640, 480)
        @viewport2.z = 200
        @lampiao = Plane.new(@viewport2)
        @lampiao.bitmap = $lamp_d
        @lamp_x = 530 + (Mada::LAMP_Raio_max-100).to_f/2.0
        @lamp_y = 430 + (Mada::LAMP_Raio_max-100).to_f/2.0
        @lampiao.ox = @lamp_x - $game_player.screen_x
        @lampiao.oy = @lamp_y - $game_player.screen_y
        mada_lamp
      end
      alias mada_lamp_d dispose
      def dispose
        unless Mada::LAMP_Raio_max > 400
          @lampiao.dispose
        end
        mada_lamp_d
      end
      alias mada_t update
      def update
        @lampiao.visible = $game_switches[Mada::LAMP_Switch]
        if $game_player.moving?
          @lampiao.ox = @lamp_x - $game_player.screen_x
          @lampiao.oy = @lamp_y - $game_player.screen_y
        end
        mada_t
      end
    end
    SkywalkeR
    SkywalkeR
    Membro
    Membro

    Mensagens : 7
    Credibilidade : 0

     [Dispondo] Lampião Customizável Empty Re: [Dispondo] Lampião Customizável

    Mensagem por SkywalkeR em Qui Nov 18, 2010 6:18 pm

    Este script será muito bem aproveitado em meu projeto, só estou com dificuldades para colocar ele online :T

    se alguém puder me ajudar...
    jiraya
    jiraya
    Administrador
    Administrador

    Mensagens : 1299
    Credibilidade : 54

     [Dispondo] Lampião Customizável Empty Re: [Dispondo] Lampião Customizável

    Mensagem por jiraya em Sex Nov 19, 2010 12:10 pm

    é realmente em alguns net play ele naum funciona pelomenos no master v2 aki ele naum funciono mais eu vo dar uma olhada...
    SkywalkeR
    SkywalkeR
    Membro
    Membro

    Mensagens : 7
    Credibilidade : 0

     [Dispondo] Lampião Customizável Empty Re: [Dispondo] Lampião Customizável

    Mensagem por SkywalkeR em Sab Nov 20, 2010 8:55 am

    Obrigado Confiante
    bruce-lee
    bruce-lee
    Membro Experiente
    Membro Experiente

    Mensagens : 84
    Credibilidade : 2

     [Dispondo] Lampião Customizável Empty Re: [Dispondo] Lampião Customizável

    Mensagem por bruce-lee em Sab Nov 27, 2010 1:17 pm

    Oia legalzinho esse script gostei hein!
    Mas o de lanterna que usaram no Fatal Frame Zero é bom também.^^

    T+
    SkywalkeR
    SkywalkeR
    Membro
    Membro

    Mensagens : 7
    Credibilidade : 0

     [Dispondo] Lampião Customizável Empty Re: [Dispondo] Lampião Customizável

    Mensagem por SkywalkeR em Sab Nov 27, 2010 1:18 pm

    verdade.

    Conteúdo patrocinado

     [Dispondo] Lampião Customizável Empty Re: [Dispondo] Lampião Customizável

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Dom Ago 18, 2019 8:30 am