Script de Sombra

    tecao98
    tecao98
    Membro Experiente
    Membro Experiente

    Mensagens : 146
    Credibilidade : 17

    Script de Sombra Empty Script de Sombra

    Mensagem por tecao98 em Qua Maio 30, 2012 3:47 pm

    Introdução:

    Bom, depois de um tempo um pouco morto no fórum eu estou de volta, parei um pouco devido problemas tecnicos no meu pc e provas.
    Agora vamos logo ao que interessa voltei hoje já postando um script de sombra este dar sombra aos eventos e seu personagem.
    Este script é bom se tiver os raios solares utilizados na area de mapeamento não faz sentindo o personagem ter sombra sem sol né ?

    Screens:


    Spoiler:
    Script de Sombra Sombraq

    Script de Sombra Sopx
    Script:


    Spoiler:
    Código:
    #==============================================================================
    # Efeito de Sombra        || Por Mendesx
    #------------------------------------------------------------------------------
    #  Este script cria uma sombra perto do herói e de eventos. A
    # sombra é fiel ao formato do gráfico.
    #==============================================================================
    module CONF # Configurações
      # Angulo da sombra
      ANGLE = 210
      # Cor da sombra
      COLOR = [30, 20, 30, 255] # Em RGB
      # Opacidade das sombras
      OPA = 180
    end




    class Sprite_Character_S < RPG::Sprite
      attr_accessor :character               
      def initialize(viewport, character = nil)
        super(viewport)
        @character = character
        update
      end
      def update
        super
        if @tile_id != @character.tile_id or
          @character_name != @character.character_name or
          @character_hue != @character.character_hue
          @tile_id = @character.tile_id
          @character_name = @character.character_name
          @character_hue = @character.character_hue
          if @tile_id >= 384
            self.bitmap = RPG::Cache.tile($game_map.tileset_name,
              @tile_id, @character.character_hue)
            self.src_rect.set(0, 0, 32, 32)
            self.ox = 16
            self.oy = 32
          else
            self.bitmap = RPG::Cache.character(@character.character_name,
              @character.character_hue)
            @cw = bitmap.width / 4
            @ch = bitmap.height / 4
            self.ox = @cw / 2
            self.oy = @ch
            self.angle = CONF::ANGLE
          end
        end
        self.visible = (not @character.transparent)
        if @tile_id == 0
          sx = @character.pattern * @cw
          sy = (@character.direction - 2) / 2 * @ch
          self.src_rect.set(sx, sy, @cw, @ch)
        end
        self.x = @character.screen_x
        self.y = @character.screen_y - 5
        self.z = @character.screen_z
        self.opacity = CONF::OPA
        self.color.set(CONF::COLOR[0], CONF::COLOR[1], CONF::COLOR[2], CONF::COLOR[3])
        self.blend_type = @character.blend_type
        self.bush_depth = @character.bush_depth
        if @character.animation_id != 0
          animation = $data_animations[@character.animation_id]
          animation(animation, true)
          @character.animation_id = 0
        end
      end
    end

    class Sprite_Shadow < RPG::Sprite
      attr_accessor :character               
      def initialize(viewport, character = nil)
        super(viewport)
        @character = character
        update
      end
      def update
        super
        if @tile_id != @character.tile_id or
          @character_name != @character.character_name or
          @character_hue != @character.character_hue
          @tile_id = @character.tile_id
          @character_name = @character.character_name
          @character_hue = @character.character_hue
          if @tile_id >= 384
            self.bitmap = RPG::Cache.tile($game_map.tileset_name,
              @tile_id, @character.character_hue)
            self.src_rect.set(0, 0, 32, 32)
            self.ox = 16
            self.oy = 32
          else
            self.bitmap = RPG::Cache.character(@character.character_name,
              @character.character_hue)
            @cw = bitmap.width / 4
            @ch = bitmap.height / 4
            self.ox = @cw / 2
            self.oy = @ch
            self.angle = CONF::ANGLE
          end
        end
        self.visible = (not @character.transparent)
        if @tile_id == 0
          sx = @character.pattern * @cw
          sy = (@character.direction - 2) / 2 * @ch
          self.src_rect.set(sx, sy, @cw, @ch)
        end
        self.x = @character.screen_x
        self.y = @character.screen_y - 5
        self.z = @character.screen_z
        self.color.set(CONF::COLOR[0], CONF::COLOR[1], CONF::COLOR[2], CONF::COLOR[3])
        self.opacity = CONF::OPA
        self.blend_type = @character.blend_type
        self.bush_depth = @character.bush_depth
        if @character.animation_id != 0
          animation = $data_animations[@character.animation_id]
          animation(animation, true)
          @character.animation_id = 0
        end
      end
    end

    class Spriteset_Map
      alias sh initialize
      alias dh dispose
      alias uh update
      def initialize
        sh
        @character_shadows = []
        for i in $game_map.events.keys.sort
          shadow = Sprite_Shadow.new(@viewport1, $game_map.events[i])
          @character_shadows.push(shadow)
        end
        @character_shadows.push(Sprite_Character_S.new(@viewport1, $game_player))
      end
      def dispose
        for shadow in @character_shadows
          shadow.dispose
        end
        dh
      end
      def update
        return if @character_shadows == nil
        for shadow in @character_shadows
          shadow.update
        end
        uh
      end
    end

    Creditos:


    MendesX criador do script
    Eu, simplesmente por disponibilizar
    jiraya
    jiraya
    Administrador
    Administrador

    Mensagens : 1299
    Credibilidade : 54

    Script de Sombra Empty Re: Script de Sombra

    Mensagem por jiraya em Qua Maio 30, 2012 5:46 pm

    Muito obrigado por postar, realmente um ótimo script. Radiante
    Eu tenho ele adaptado pr net play acho que vo postar depois Idéia
    +1 crédito pra voce.

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