This article's documentation is for anything that uses the Source engine. Click here for more information.

Inputs and Outputs

From Valve Developer Community
Jump to navigation Jump to search
English (en)Deutsch (de)Español (es)Polski (pl)Português do Brasil (pt-br)Русский (ru)中文 (zh)Translate (Translate)

Entradas e Saídas (coletivamente "E/S") são os meios pelos quais entidades(en) se comunicam entre si em mapas(en). Entidades têm dois métodos de comunicação: enviar uma "saída" para outra entidade ou receber uma "entrada" de outra entidade. Por exemplo, uma entidade pode enviar uma saída quando é morta para a entrada de outra entidade, o que faz com que ela mude de cor. Essa mesma saída também pode ser usada para disparar a entrada de geração de outra entidade. As saídas são correspondidas às entradas por meio de uma "conexão", que controla quais dados extras são retransmitidos para o receptor, quanto atraso há antes que a saída seja recebida e se a saída deve ser permitida para ser enviada novamente mais tarde. As saídas podem ser vinculadas a qualquer entrada e vice-versa. Isso permite interações complexas e poderosas entre entidades.

Considere uma entidade logic_timer(en). Ela pode ser configurada para "disparar" sua saída OnTimer quando atinge seu limite de tempo, o que "dispara" (ou "chama") a entrada ShowSprite de um env_sprite(en). Quando o timer atinge seu limite, o sprite aparece. Usando as propriedades de conexão, você também pode fazer com que a saída seja disparada após um atraso de dois segundos, ou disparada uma vez, mas nunca mais.

Entradas

Entradas são comandos que fazem com que uma entidade altere o que está fazendo. Eles são "acionados" (ou "chamados") por saídas - eles não podem ser manipulados diretamente.

Você pode visualizar uma lista de eventos de entrada que uma entidade está recebendo na aba Entradas do diálogo de propriedades do objeto(en). Clicar no botão "marcar" levará você à entidade da qual a entrada está sendo recebida.

  1. use(en)

Saídas

Caixa de diálogo "Propriedades do objeto" do Hammer

Saídas são eventos que disparam quando o estado de uma entidade muda. Por exemplo, um timer(en) terá uma saída para atingir seu fim, um button(en) uma saída para ser pressionado e uma door(en) uma saída para fechar.

Os eventos de saída são criados na aba Saídas do object properties dialog(en). Esta interface fornece uma lista das saídas já emitidas da entidade, campos de configuração para as selecionadas no momento e botões para criar novas e excluir as antigas. Finalmente, o botão no canto inferior esquerdo rotulado como "mark" levará você para a entidade de destino da saída atual.

Os campos de configuração de saída são:

Nome da saída
Qual evento faz com que a saída dispare. Por exemplo, uma entidade trigger_multiple(en) pode disparar uma saída OnTrigger quando um jogador pisa nela.
Entidade de destino
O targetname(en) ou classname(en) da entidade que receberá a entrada. Aceita o caractere * como curinga de pesquisa.
  • Um nome em negrito significa que o targetname aponta para várias entidades
  • Um nome vermelho significa que o targetname não aponta para nada
    Icon-Bug.pngErro:Valores válidos de classname e curinga e special targetnames(en) também aparecerão em vermelho. Não se preocupe: o mecanismo os reconhecerá!  [todo tested in ?]
Nome da entrada
A entrada na entidade de destino que será acionada. Isso também será sensível ao contexto. Por exemplo, se estiver enviando uma saída para uma entidade Porta, algumas das entradas disponíveis serão "Fechar" ou "Abrir".
Parâmetros
Você pode passar dados para a entidade de destino com parâmetros. Um parâmetro pode ser qualquer coisa: quão alto tocar a sound(en), o targetname(en) de outra entidade ou talvez a color(en). Tudo depende do que a entrada aceita. Se não aceitar nada, este campo ficará acinzentado.
Algumas saídas, como o OutValue do math_counter(en), geram parâmetros por si mesmas. Para usar um parâmetro gerado, deixe o campo com a leitura <none>.
Note.pngNota:Se o valor de saída for um targetname(en), lembre-se de que ele pode não ser exclusivo!
Atraso de tempo
O número de segundos para esperar após o evento de saída ocorrer antes de disparar.
Disparar apenas uma vez
A saída será excluída após disparar se esta opção estiver marcada.

Configurando um gatilho simples

Este é um exemplo de como fazer um gatilho simples usando entradas e saídas, para que um som seja reproduzido quando o jogador entra em uma área específica.

Abra um mapa e adicione um ambient_generic(en) (no campo Nome, digite "ambient_1"). Vá em suas Propriedades do Objeto e escolha um arquivo de som para ele reproduzir, e na aba Sinalizadores defina como "Iniciar Silencioso". Selecione a textura "tools/toolstrigger" e crie um pincel de cubo com esta textura. Clique com o botão direito neste pincel e usando o comando "Tie to Entity(en)", transforme-o em uma entidade trigger_once(en). Vá para a aba Saídas e clique no botão Adicionar....

Defina "Minha saída chamada" como "OnStartTouch". Isso faz com que a saída (e, portanto, o gatilho) ocorra quando o jogador começa a tocar neste pincel no jogo.

Defina "Targets entities named" como "ambient_1" usando a seta suspensa. Isso faz com que a saída do gatilho tenha como alvo o ambient_generic que você colocou anteriormente.

Defina "Via this input" como "PlaySound". Isso escolhe a ação PlaySound da lista de ações do ambient_generic de destino, o que, é claro, faz com que seu som comece a tocar.

Clique no botão Aplicar para salvar suas alterações no gatilho e feche-o. Agora temos o gatilho configurado para que, assim que o jogador o tocar, ele envie um comando para o ambient_generic que o faça começar a tocar seu som.

Se você abrir as propriedades para o ambient_generic, você pode ver como a Saída do gatilho foi automaticamente convertida para uma Entrada para o ambient_generic.

Se você quiser compilar e testar seu novo gatilho, certifique-se de ter todos os fundamentos (início do player, iluminação, etc.) e de ter atribuído um efeito sonoro ao ambient_generic.

Depuração

O Source fornece várias ferramentas de depuração para quando uma cadeia de E/S não está funcionando como esperado.

A mais importante delas é a própria caixa de diálogo de propriedades do objeto. Entradas e saídas inválidas são destacadas em vermelho na lista de entradas ou saídas da entidade; os ícones de E/S na parte inferior da caixa de diálogo também mudam de acordo. Saídas inválidas também aparecem em Check For Problems(en) (Alt+P). É uma boa ideia verificar se há problemas antes de cada compilação.

Icon-Bug.pngErro:Valid classname e wildcard values(en) serão sinalizados como erros. Não se preocupe: o mecanismo os reconhecerá!  [todo tested in ?]

Fora do Hammer, há uma série de comandos e variáveis ​​console(en) que ajudarão você a detectar erros enquanto seu mapa estiver em execução:

developer <0-2>
Developer mode(en) relata todas as E/S de entidade para o console, e a menos que você esteja jogando em um servidor dedicado(en) que habilite cheats(en) (que é necessário para todos os comandos abaixo). Se você estiver no developer 2, você também verá as últimas oito linhas do console exibidas na parte superior da tela.
ent_messages_draw <bool(en)>
Isso exibe as mesmas informações do modo de desenvolvedor, exceto que em vez de aparecer no console, é desenhado no mundo 3D no local das entidades em questão.
ent_fire <targetname(en) ou classname(en)> <input> <parameter>
Este comando extremamente útil permite que você dispare manualmente entradas em qualquer entidade a qualquer momento. Se você quiser destrancar uma porta antes do tempo, você digitaria ent_fire my_door unlock, seguido se você estiver com preguiça por ent_fire my_door open.
Assim como o campo "output target" no Hammer, ent_fire suporta nomes de classe e curingas. Se você quiser ent_fire npc_* ignite, você pode!
Tip.pngDica:ent_fire é onde o especial !picker(en) targetname entra. Use-o para mirar em qualquer coisa que esteja sob sua mira.
ent_pause
Este comando pausa todas as entidades no mapa, exceto o jogador; envie-o novamente para despausar. Ele foi projetado para uso com ent_step.
ent_step <número de passos>
Quando usado com ent_pause, este comando faz com que as entidades executem um número especificado de passos de E/S antes de pausar novamente (o padrão é 1).

Veja também