O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

MBS - Som por Aproximação

Iniciado por Brandt, 15/02/2014 às 14:22

[box2 class=titlebg title=MBS - Som por Aproximação]

[box2 class=titlebg title=Introdução]Esse script foi feito a pedido do Kauzz (Two) na fábrica de RGSS3, na MRM.

Ele é uma tradução do script original do Near Fantástica, postado pelo Akime na Arena Livre (link)[/box2]

[box2 class=titlebg title=Características]O script faz com que um evento possa ser uma fonte de som, assim, quanto mais próximo do evento, mais alto o som fica[/box2]

[box2 class=titlebg title=Instruções]No script, qualquer dúvida avisem[/box2]

[box2 class=titlebg title=Script]
#==============================================================================
##############################   View Range   #################################
#==============================================================================
# Autor - Near Fantastica
# Editado por Masked
#------------------------------------------------------------------------------
#Script adiciona o sistema de alcance de som.
#Para ativar o script devemos entrar no Comandos de Eventos e
#selecionar o comando script adicionando o código abaixo:
#  $view_range.event_sound(1,"Nome do Arquivo")
#------------------------------------------------------------------------------
#Onde está o numero 1 é o ID do evento, e o que está entre
#aspas é o nome do arquivo de som na pasta BGS
#NOTA - Não coloque 2 ou mais eventos um perto do outro ou vai dar lag
#==============================================================================
class View_Range
 #--------------------------------------------------------------------------
 # ● Range system works by sereching the area of a circle for the Player's xy
 #    The Veiw is set in each event and is the radius of the circle
 #    The Eaquation used is (Px-EX)^2 + (Py-Ey)^2 = radius^2
 #    If the Radius is less than or equal to the View the Player is inside the circle
 #--------------------------------------------------------------------------
 def initialize
   @playing_bgs = []
   @bgs = RPG::BGS.new
   @bgs.pitch = 100
   @event_id = 0
   @event_locial_switch = ""
   @view_range = 0
   @playerx = 0
   @playery = 0
   @eventx = 0
   @eventy = 0
   @event_direction = 0
 end
 #--------------------------------------------------------------------------
 #     Max Sound Effect Range is 8 units DO NOT OVER LAP
 #     or it will go into super lag mode you have been warned
 #     This is because you are trying to play 2 different sound
 #     effects and will cycles between them
 #
 #     Note : This overrides the maps default sound effect
 #--------------------------------------------------------------------------
 def event_sound(event_id, bgs_name)
   @bgs.name = "Audio/BGS/#{bgs_name}"
   @event_id = event_id
   @playerx = $game_player.x
   @playery = $game_player.y
   @eventx = $game_map.events[@event_id].x
   @eventy = $game_map.events[@event_id].y
   @event_direction = $game_map.events[@event_id].direction
   radius = (@playerx-@eventx)*(@playerx-@eventx) + (@playery-@eventy)*(@playery-@eventy)
   if radius > 64
     if @playing_bgs[event_id] != nil
       @playing_bgs[event_id] = nil
       Audio.bgs_fade(1) 
       return
     end
   elsif radius <= 64 and radius > 49
     if @playing_bgs[event_id] == nil
       Audio.bgs_play(@bgs.name, 30)
       @playing_bgs[event_id] = @bgs
       return
     end
     @bgs.volume = 30
     if @bgs.volume != @playing_bgs[event_id].volume or
         @bgs.name != @playing_bgs[event_id].name
       @playing_bgs[event_id] = @bgs
       $game_system.bgs_play(@bgs)
       return
     end
   elsif radius <= 49 and radius > 36
     Audio.bgs_play(@bgs.name, 40)
     @playing_bgs[event_id] = @bgs
     return
   elsif radius <= 36 and radius > 25
     Audio.bgs_play(@bgs.name, 50)
     @playing_bgs[event_id] = @bgs
     return
   elsif radius <= 25 and radius > 16
     Audio.bgs_play(@bgs.name, 60)
     @playing_bgs[event_id] = @bgs
     return
   elsif radius <= 16 and radius > 9
     Audio.bgs_play(@bgs.name, 70)
     @playing_bgs[event_id] = @bgs
     return
   elsif radius <= 9 and radius > 4
     Audio.bgs_play(@bgs.name, 80)
     @playing_bgs[event_id] = @bgs
     return
   elsif radius <= 4 and radius > 1
     Audio.bgs_play(@bgs.name, 90)
     @playing_bgs[event_id] = @bgs
     return
   elsif radius = 1
     Audio.bgs_play(@bgs.name, 100)
     @playing_bgs[event_id] = @bgs
     return
   end
 end
 #--------------------------------------------------------------------------
 def enemies_view(event_id, view_range, els)
   @event_id = event_id
   @view_range = view_range
   @event_locial_switch = els
   @playerx = $game_player.x
   @playery = $game_player.y
   @eventx = $game_map.events[@event_id].x
   @eventy = $game_map.events[@event_id].y
   @event_direction = $game_map.events[@event_id].direction
   if @event_direction == 2
     if @playery >= @eventy
       radius = (@playerx-@eventx)*(@playerx-@eventx) + (@playery-@eventy)*(@playery-@eventy)
       if radius <= @view_range
         key=[$game_map.map_id, @event_id, @event_locial_switch]
         $game_self_switches[key] = true
         $game_map.need_refresh = true
       end
     end
   end
   if @event_direction == 4
     if @playerx <= @eventx
       radius = (@playerx-@eventx)*(@playerx-@eventx) + (@playery-@eventy)*(@playery-@eventy)
       if radius <= @view_range
         key=[$game_map.map_id, @event_id, @event_locial_switch]
         $game_self_switches[key] = true
         $game_map.need_refresh = true
       end
     end
   end
   if @event_direction == 6
     if @playerx >= @eventx
       radius = (@playerx-@eventx)*(@playerx-@eventx) + (@playery-@eventy)*(@playery-@eventy)
       if radius <= @view_range
         key=[$game_map.map_id, @event_id, @event_locial_switch]
         $game_self_switches[key] = true
         $game_map.need_refresh = true
       end
     end
   end
   if @event_direction == 8
     if @playery <= @eventy
       radius = (@playerx-@eventx)*(@playerx-@eventx) + (@playery-@eventy)*(@playery-@eventy)
       if radius <= @view_range
         key=[$game_map.map_id, @event_id, @event_locial_switch]
         $game_self_switches[key] = true
         $game_map.need_refresh = true
       end
     end
   end
 end
end
#======================================================
class Scene_Title
 #--------------------------------------------------------------------------
 alias vr_scene_title_update update
 #--------------------------------------------------------------------------
def update
  $view_range = View_Range.new
  vr_scene_title_update
end
end
#======================================================
class Game_System
   attr_accessor :playing_bgs
end
#======================================================
class Game_Map
 #--------------------------------------------------------------------------
 attr_accessor :map
end

Apenas cole acima do Main[/box2]

[box2 class=titlebg title=Créditos e Agradecimentos]- A mim, por adaptar para VX Ace e disponibilizar
- Ao Near Fantástica, por criar o original, para XP
- Ao Akime, por postar na SRM (Arena Livre)
- Ao Kauzz (Two) pela ideia[/box2][/box2]
~ Masked

Muito bom cara, dá pra usar em diferentes situações e projetos!

Magnífico! Sempre quis algo do gênero. e_e
Era o sistema que faltava para mim! Hahaha.


Safety and Peace.
ALGUÉM FALOU EM JAIMES DESING?!

// -> cHEAT .exeKUTIVE OFF-ice ~~//