SNDSEQ
Mais ações
SNDSEQ é usado para criar sequências de sons para serem usadas por portas e plataformas, ou em scripts. Se você quiser usá-las com portas e plataformas, em formatos de mapa antigos você deve usar o sound sequence thing nos setores afetados com o primeiro argumento definido para o índice da sequência; já em mapas UDMF, você pode definir a propriedade soundsequence do setor diretamente com o nome da sequência. Para tocá-las em um script, você pode usar a função SoundSequence.
A sintaxe é a seguinte:
:NomeDaSoundSequence
comandos
...
end
O nome define o identificador interno desta sequência de som. Atualmente isso é usado apenas por ACS e por SeqNode em ZScript, ou por algumas sequências de som predefinidas.
Os seguintes comandos podem ser usados em uma definição de sound sequence:
- play <soundname>
- Toca o som especificado.
- playuntildone <soundname>
- Toca o som especificado e espera até ele terminar.
- playtime <soundname> <delay>
- Toca o som especificado e espera pelo período informado. O atraso é especificado em tics (1/35 de segundo).
- playrepeat <soundname>
- Toca o som repetidamente em um loop infinito.
- playloop <soundname> <delay>
- Toca o som repetidamente com um atraso especificado entre cada repetição. O tempo é especificado em tics e corresponde ao tempo entre o início de cada loop.
- delay <time>
- Espera pelo período informado. O atraso é especificado em tics.
- delayonce <time>
- Espera pelo período informado após o início do nível para começar a tocar. O atraso é especificado em tics.
- delayrand <min> <max>
- Espera por um período aleatório. O mínimo e o máximo são especificados em tics.
- volume <volume>
- Define o volume em que todos os sons seguintes serão tocados.
- volumerel
- descrição ausente.
- volumerand <min> <max>
- Define o volume mínimo e máximo entre os quais todos os sons seguintes serão tocados. O valor exato é escolhido aleatoriamente para cada som, toda vez que ele é tocado.
- attenuation <mode>
- Define o tipo de atenuação do som. Existem os seguintes modos:
- normal
- Som “normal”. Este é o padrão.
- idle
- descrição ausente.
- static
- Este som é mais localizado. Ele se dissipa bem mais rápido conforme a distância aumenta.
- none
- O som é tocado em volume total no nível inteiro.
- surround
- O som é tocado em volume total no modo surround.
- door <index>
- Define o índice da sound sequence para uso como sequência de porta. “Porta”, neste contexto, é qualquer movimento de setor por um tipo “Door” ou por um polyobject. O índice determina qual sound sequence thing você precisa colocar no setor da porta para ouvir essa sequência. Note que Hexen predefine as primeiras 10 sequências, então para sequências customizadas em Hexen o índice deve ser maior que 10. O índice deve estar no intervalo de 0 a 4095.
- platform <index>
- Define o índice da sound sequence para uso como sequência de plataforma. “Plataforma”, neste contexto, é qualquer movimento de setor feito por um tipo “Ceiling”, “Floor”, “Elevator” ou “Plat”. Veja door para uma descrição mais detalhada de como isso funciona.
- environment <index>
- Define o índice da sound sequence para uso como sequência de ambiente. Sequências de ambiente são usadas em Heretic.
- stopsound <soundname>
- Especifica o som que é tocado quando a sound sequence é interrompida.
- nostopcutoff
- Não encerra um som que esteja tocando no momento em que a sound sequence é interrompida.
- end
- slot <slot>
- randomsequence
- restart
Exemplos:
// toca um som repetidamente :CeilingNormal playrepeat plats/pt1_mid end
// toca um som quando a sequência é interrompida :CeilingSemiSilent stopsound plats/pt1_stop end
// toca um som uma vez e não o encerra // quando a sequência é interrompida :DoorOpenNormal play doors/dr1_open nostopcutoff end
// toca um som repetidamente e // outro som quando ela é interrompida :Floor playrepeat plats/pt1_mid stopsound plats/pt1_stop end
// inicia um som; quando terminar, entra em loop com outro; // e toca um terceiro som quando a sequência é interrompida. // também usa isto como sequência 0 para portas :Seq1Door door 0 playuntildone Door1BEG playrepeat Door1MID stopsound Door1END end
// Igual ao acima, mas usa como sequência 1 // para plataformas :Seq2Plat platform 1 playuntildone Plat1BEG playrepeat Plat1MID stopsound Plat1END end
Hexen não permitia usar mais de uma sound sequence para uma porta, então ela fazia o mesmo som ao abrir e ao fechar. A sintaxe a seguir permite múltiplos sons para uma porta, mantendo compatibilidade com o sistema do Hexen de definir sound sequences usando coisas e argumentos de polyobject.
Aqui está o exemplo do Doom:
[DoorNormal 0 DoorOpenNormal 1 DoorCloseNormal 2 DoorOpenBlazing 3 DoorCloseBlazing ]
Todas as portas em Doom recebem a sound sequence DoorNormal (a menos que você sobrescreva). No entanto, existem quatro sons diferentes de porta usados por Doom. Uma sound sequence “normal” só conseguiria tocar um deles. Então, em vez de tocar algo com DoorNormal, ela é definida como uma “mini-sound sequence” que apenas lista as quatro sequências reais a tocar, dependendo de como a porta está se movendo. Além de redirecionar para as sequências reais, a única outra coisa que você pode fazer com uma mini-sound sequence é especificar um ID para os sound sequence things:
[DoorMine Door 1 0 MyDoorOpen 1 MyDoorClose 2 MyDoorFastOpen 3 MyDoorFastClose ]
Para usar a definição acima, você também precisa definir previamente as sequências MyDoorOpen, MyDoorClose, MyDoorFastOpen e MyDoorFastClose da forma normal.
A “mini sequence” acima foi alocada com o índice 1 (usando Door 1). Se um sound sequence thing que aloca o índice 1 for colocado em um setor de porta, a porta usará as seguintes sound sequences: MyDoorOpen ao abrir em velocidade normal, MyDoorClose ao fechar em velocidade normal, MyDoorFastOpen ao abrir em velocidade blazing e MyDoorFastClose ao fechar em velocidade blazing.
Se você não quiser que uma porta toque sons diferentes dependendo da velocidade, você pode fazer as sequências 2 e 3 serem as mesmas de 0 e 1:
[DoorMine Door 1 0 MyDoorOpen 1 MyDoorClose 2 MyDoorOpen 3 MyDoorClose ]