Scripting
Scripting é o uso de arquivos de configuração para criar novos "binds" e "aliases" automatizando ações complexas e comandos do console.
- Keybinds conectam uma tecla a um comando do console, como escolher um compartimento de arma ou dizer um texto pré-escrito no chat.
- Aliases controem novos comandos ao executar uma série de comandos do console sempre que são utilizados. Um alias pode definir pular e agachar num só comando de pular-agachar, que pode ser definido a uma tecla só.
Estes scripts variam em complexidade de simples listas de comandos a loops no próprio comando e aliases amontoados que redefinem um ao outro. Com o tempo e o esforço suficiente, você pode usar essas ferramentas para criar quase qualquer comportamento ao cliente ao apertar uma só tecla.
Índice
- 1 Arquivos de Scripting Básicos
- 2 Sintaxe
- 3 Keybinds (Ligações com Teclas)
- 4 Comandos Básicos
- 5 Incrementvar
- 6 Os Comandos + e -
- 7 Comando Wait
- 8 Aliases
- 9 Comandos de Script Úteis
- 10 Veja Também
- 11 Links Externos
Arquivos de Scripting Básicos
Team Fortress 2 automaticamente lê diversos arquivos de jogo e executa quaisquer keybinds e aliases nele. Aqui há uma lista com estes arquivos:
- config.cfg - Este é o arquivo de configuração padrão que o jogo edita sempre que você usa os menus dentro do jogo para usar binds em teclas ou mudar configurações de vídeo. Apesar de ser seguro editar o arquivo, é melhor não mecher nele.
- autoexec.cfg - Este é o arquivo de configuração padrão para executar keybinds e aliases customizados. Você pode colocar keybinds diretamente neste arquivo, mas geralmente é mais fácil criar arquivos .cfg separados para scripts diferentes, os quais você pode executar com este arquivo.
- <classe>.cfg - Cada classe tem seu próprio arquivo de configuração que roda automaticamente ao mudar para aquela classe. Você pode colocar keybinds diretamente neste arquivo, mas é mais fácil criar arquivos .cfg separados para scripts diferentes, os quais você pode executar com estes arquivos.
Sintaxe
Aqui há uma lista de regras sintáticas:
- Para que qualquer keybind ou alias funcione, você deve seguir esse formato:
- comando <argumento1> <argumento2>
- comando is é o tipo de script que você quer usar. Você tem três escolhas:
- bind - Usado para ligar comandos a teclas.
- alias - Usado para executar comandos quando é executado.
- exec - Usado para executar comandos quando um arquivo de configuração é executado.
- <argumento1> é a tecla sendo ligada ou o nome do alias sendo criado.
- <argumento2> é o comando sendo ligado ou o comando do alias sendo criado.
- Para rodar vários comandos, você deve colocar o argumento inteiro entre aspas e separar os comandos com ponto-e-vírgula. Exemplo:
- alias "salvesequempuder" "+attack; wait 500; -attack"
- bind "mouse3" "salvesequempuder"
- Ao ser executado, o alias faz com que o jogador atire com a arma, continue por 500 quadros físicos (aproximadamente cinco segundos num servidor que roda a 100 quadros por segundo) e pare de atirar. O alias está ligado a uma tecla, de modo que ele é executado assim que você aperta o botão do meio do mouse.
- Para encerrar algo entre aspas que já está entre aspas, você deve "proteger" as aspas internas ao usar duas aspas consecutivas ("") ao invés de uma.
- alias "digaalgumacoisa" "say ""Alguma Coisa..."""
- Se você escrever digaalgumacoisa no console, você vai dizer "Alguma Coisa..." no bate-papo. Sem as aspas internasno comando, a janela de bate-papo só vai mostrar "Alguma".
Keybinds (Ligações com Teclas)
Team Fortress 2 permite que scripts e aliases sejam ligados a qualquer tecla do teclado. A tecla que você deseja ligar a um comando é colocada entre o comando de bind e a ação que você quer que a tecla execute, como visto na seção acima. A maior parte das teclas é fácil de compreender, já que teclas alfanuméricas (a-z e 0-9) e funcionais são nomeadas com o que está escrito sobre a tecla ("bind a" vai ligar a tecla 'A', "bind 5" vai ligar a tecla '5' e "bind F7" vai ligar a tecla 'F7'). Outras teclas precisam de nomes específicos no seu arquivo .cfg para serem acessadas e seus nomes não são tão óbvios. Abaixo há uma lista dessas teclas:
Lista dos Nomes das Teclas
- Tecla do Teclado: Nome da Tecla Usada na Ligação
- Shift Esquerdo: SHIFT
- Ctrl Esquerdo: CTRL
- Alt Esquerdo: ALT
- Shift Direito: RSHIFT
- Contro Direitol: RCTRL
- Alt Direito: RALT
- Tab: TAB
- Backspace: BACKSPACE
- ---
- Insert: INS
- Scroll Lock: SCROLLLOCK
- Pause/Break: NUMLOCK
- ---
- Home: HOME
- End: END
- Delete: DEL
- Page Up: PGUP
- Page Down: PGDN
- ---
- Seta para Cima: UPARROW
- Seta para Baixo: DOWNARROW
- Seta para a Esquerda: LEFTARROW
- Seta para a Direita: RIGHTARROW
- Teclas do Teclado Numérico: Nome da Tecla Usada na Ligação
- 0: KP_INS
- 1: KP_END
- 2: KP_DOWNARROW
- 3: KP_PGDN
- 4: KP_LEFTARROW
- 5: KP_5
- 6: KP_RIGHTARROW
- 7: KP_HOME
- 8: KP_UPARROW
- 9: KP_PGUP
- Enter: KP_ENTER
- ".": KP_DEL
- "+": KP_PLUS
- "-": KP_MINUS
- "*": KP_MULTIPLY
- "/":KP_SLASH
- Direção da Roda do Mouse: Nome da Tecla Usada na Ligação
- Roda do Mouse para Cima: MWHEELUP
- Roda do Mouse para Baixo: MWHEELDOWN
Usando os nomes de teclas acima, você pode colocar o comando de exemplo a seguir num de seus arquivos de configuração: <bind KP_ENTER "voicemenu 0 1">. Ao apertar 'Enter' no seu teclado numérico no jogo, você vai ativar o comando de voz de "Obrigado".
Comandos Básicos
A maior parte dos comandos aceita um só argumento, que é o valor que você deseja executar.
bind "q" "sv_alltalk 1"
Um bocado de argumentos importantes aceita múltiplos argumentos. Aqui há alguns exemplos:
- disguise X Y - O Spy se disfarça. X é o número da classe do disfarce de 1 a 9, enquanto Y é o número do time, que pode ser 1 ou 2.
- voicemenu X Y - Um comando de voz é executado. X é o número do menu primário, enquanto Y é a posição do comando no menu.
Exemplo: "voicemenu 1 1" é o comando de voz de "Spy", então:
bind "t" "voicemenu 1 1"
Este comando faz com que sua personagem grite Spy sempre que você apertar a tecla.
Incrementvar
O comando circula por uma faixa de valores especificados sempre que for executado e aplica tais valores a outro comando. Ele é utilizado como:
- comando "<argumento1>" "incrementvar <argumento2> X Y Z"
- X e Y representam a faixa de valores que você quer que sejam executados para o <argumento2>.
- Z é o variação entre cada valor na faixa.
Se você quiser uma faixa de valores de 1 a 10 e quiser aumentar o valor em 2 toda vez que o comando for executado, você mudaria X Y Z para 1 10 2. Sempre que for executado, <argumento2> vai aumentar com um valor aumentando no padrão 2, 4, 6, 8, 10, 2, 4, 6, 8, 10...
Aqui há um exemplo real de um incrementvar em ação:
- bind "n" "incrementvar net_graphpos 1 3 1"
Isto liga a tecla "n" a um ciclo para a próxima posição entre as 3 posições do net_graph possíveis.
Os Comandos + e -
Estes comandos têm dois estados. Enquanto a tecla ligada estiver apertada, o comando de + é executado. Quando a tecla é solta, o comando de - é executado.
Exemplo:
- bind "c" "+duck"
Este comando de + está ligado à tecla "c" de modo que, enquanto a tecla estiver pressionada, o jogador estará agachado. Quando a tecla for solta, "+duck" é trocado por "-duck" e o jogador para de agachar.
Geralmente, se um comando ou um alias for ligado a uma tecla, um + faz com que o jogo rode o comando enquanto a tecla estiver apertada. De modo parecido, se um comando ou alias estiver ligado a uma tecla, um - diz ao jogo que rode um comando quando a tecla for largada.
Se um alias for definido com um + na frente, o alias será usado quando a tecla for pressionada. O comando de - vai então rodar assim que a tecla deixar de ser pressionada.
Comando Wait
Se você quiser que o jogo espere um período de tempo durante um alias, ou quiser evitar que o jogo trave ao executar muitos comandos em pouco tempo, use o comando wait.
O comando de wait diz ao jogo para atrasar o próximo comando em um quadro físico, que equivale a um turno completo nas regras do TF2. Ele aceita valores como "wait 50" para dizer ao jogo que espere cinquenta quadros físicos antes de prosseguir com o alias. "wait 100" é aproximadamente um segundo num servidor de 100 quadros por segundo.
Alguns servidores desabilitam o comando de wait. Ao jogar neles, comandos de wait serão ignorados, o que pode fazer com que alguns scripts travem. Um script que possui uma repetição indeterminada separada por comandos de wait vai imediatamente travar durante seu uso em tais servidores.
Aliases
Um alias se assemelha a uma variável que guarda uma série de comandos que podem ser executados como um conjunto. Um alias simples se assemelha a este exemplo:
alias "nomedoalias" "comando1; comando2; comando3"
Você pode executar os comandos com uma ligação à uma tecla:
bind "tecla" "nomedoalias"
Sempre que a tecla for apertada, "comando1", "comando2" e "comando3" vão ser executados nesta ordem.
Aliases Complexos
Aliases podem executr quaisquer outros comandos, inclusive outros aliases. Logo, um alias pode executar um alias para redefinir os comandos daquele alias. Isto permite que você crie ciclos de aliases. Aqui há um exemplo bem simples:
bind "tecla" ciclodenomes
alias ciclodenomes "primeironome"
alias primeironome "setinfo nome "Primeiro_Nome"; alias ciclodenomes segundonome"
alias segundonome "setinfo name "Segundo_Nome"; alias ciclodenomes terceironome"
alias terceironome "setinfo name "Terceiro_Nome"; alias ciclodenomes primeironome"
Isto é bem difícil de ler, então vamos separar o código em seções:
- A primeira linha liga "tecla" ao alias "ciclodenomes" que ainda não foi definido.
- A segunda linha cria o alias "ciclodenomes", que executa o comando "primeironome"
- A terceira linha define o alias "primeironome" como dois comandos:
- O primeiro comando redefine seu nome no jogo para "Primeiro_Nome"
- O segundo comando redefine o alias "ciclodenomes" para executar o alias "segundonome"
- A quarta linha define "segundonome" do mesmo modo. Um nome de jogo diferente é definido e "ciclodenomes" é redefinido para outro alias, "terceironome"
- A quinta linha define "terceiro nome" assim como as outras duas, com uma diferença: ela redefine o alias "ciclodenomes" para executar o alias "primeironome".
Isto completa um ciclo. Cada vez que a tecla for apertada, um comando será executado e o alias ligado à tecla será redefinido, de modo que da próxima vez que for pressionada, vai executar um comando diferente. Se não houvesse um ciclo, o alias "ciclodenomes" não teria outro alias para ser executado cada vez que a tecla fosse apertada.
Aliases Infinitos
Aliases podem ser usados em conjunto com o comando wait para criar aliases infinitos.
Cuidado: Não usar o wait no lugar certo ou usar este comando num servidor com wait desabilitado fará com que este exemplo trave o TF2.
alias "Infinito" "echo Repetindo a cada 150 quadros.;wait 150;Infinito"
Infinito
Vamos quebrar o código em componentes:
Linha 1
O echo mostra a mensagem no console para você ter certeza que funciona.
O comando de wait cria um atraso de 150 quadros entre as interações
Infinito executa o alias mais uma vez, reiniciando a partir do echo.
Linha 2
Infinito inicia o alias infinito.
Você também pode criar aliases infinitos com mais de um comando de alias, como no exemplo:
alias "Infinito1" "echo Infinito 1;wait 150;Infinito2"
alias "Infinito2" "echo Infinito 2;wait 150;Infinito1"
Infinito1 chama o Infinito2 que, por sua vez, chama o Infinito1 etc...
Este método também pode ser utilizado para quebrar um alias infinito sem ter que limpar o código:
alias "Infinito1" "echo Infinito;wait 150;Infinito2"
alias "Infinito2" "Infinito1"
Isto criaria um ciclo infinito, e então
alias "Infinito2"
quebraria-o ao limpar o alias Infinito2.
Você pode usá-los para apertos de botão (com os prefixos de botão +/- mostrados anteriormente) deste modo:
alias "Infinito2" "Infinito1"
alias "Infinito1" "echo Infinito;wait 150;Infinito2"
alias "+Infinito" "alias Infinito2 Infinito1;Infinito2"
alias "-Infinito" "alias Infinito2"
bind "<tecla>" "+Infinito"
Na ordem de ações:
Infinito2 aponta para Infinito1
Faça Infinito1 mostrar 'Infinito' no console, espere 150 quadros e execute o Infinito2
Faça +Infinito apontar Infinito2 para Infinito1 e abra o comando Infinito2
Faça -Infinito encerrar a ligação de Infinito2, quebrando o alias infinito
Comandos de Script Úteis
Há literalmente centenas de argumentos diferentes para seu script que podem fazer quase qualquer coisa. Aqui há uma lista de alguns deles.
Comandos de Voz
Um comando de voz permite que a sua classe diga algo, que é geralmente usado no jogo para fornecer informações ou só para brincar um pouco.
Comandos de voz são utilizados com a seguinte sintaxe:
voicemenu <número_do_menu> <número_da_frase>
Onde <número_do_menu> é um de 3 menus onde os comandos de voz se encontram e <número_da_frase> é um dos 7 comandos de voz que estão em cada menu.
Argumentos para Comandos de Voz
- 0 <número_da_frase>
- 0: Medic
- 1: Obrigado
- 2: Vai
- 3: Movam
- 4: Para a Esquerda
- 5: Para a Direita
- 6: Sim
- 7: Não
- 1 <número_da_frase>
- 0: Aproximam-se
- 1: Spy
- 2: Sentry à Frente
- 3: Teleporter Aqui
- 4: Dispenser Aqui
- 5: Sentry Aqui
- 6: Ativar ÜberCarga
- 7: (Só o Medic) ÜberCarga Pronta
- 2 <número_da_frase>
- 0: Ajuda
- 1: Grito de Guerra
- 2: Vivas
- 3: Vaias
- 4: Positivo
- 5: Negativo
- 6: Bom Tiro
- 7: Bom Trabalho
Disfarces de Spy Rápidos
Com estes comandos rápidos e fáceis, você pode ligar teclas a disfarces específicos ao invés de ter que ir ao menu de disfarce.
Comandos de disfarce são utilizados com a sintaxe a seguir:
disguise <número_da_classe> <número_do_time>
Onde <número_da_classe> é o número da classe que você quer se disfarçar como e <número_do_time> é o número do time que você quer se disfarçar como.
Argumentos para Disfarces de Spy Rápidos
- 1 <número_da_classe>
- 1: Scout
- 2: Sniper
- 3: Soldier
- 4: Demoman
- 5: Medic
- 6: Heavy
- 7: Pyro
- 8: Spy
- 9: Engineer
- 2 <número_do_time>
- 1: Time BLU
- 2: Time RED
- -1: Time Inimigo
- -2: Seu Time
Construções de Engineer Rápidas
De modo semelhante ao disfarce rápido do Spy, isto permite que Engineers passem direto pela interface do PDA e destruam qualquer construção instantaneamente, enquanto preparam uma nova construção do mesmo tipo.
Comandos de construções seguem a seguinte sintaxe:
build <número_da_construção>
destroy <número_da_construção>
Onde <número_da_construção> é o número da construção que você deseja destruir ou preparar para construir.
Argumentos para Construções de Engineer Rápidas
- Número: Construção
- 0: Dispenser
- 1: Entrada de Teleporter
- 2: Sentry Gun/Minisentry
- 3: Saída de Teleporter
Veja um exemplo de como implementar a sintaxe acima:
alias sentry "destroy 2; build 2" alias dispenser "destroy 0; build 0" alias entrada "destroy 1; build 1" alias saida "destroy 3; build 3" bind f1 sentry bind f2 dispenser bind f3 entrada bind f4 saida
Neste exemplo, construções estão ligadas às teclas F1 a F4 para não interferirem com as teclas da seleção de armas. Ao ser ativado, o script vai instantanea e irreversivelmente destruir a construção do tipo listado, enquanto preparando a próxima construção do Engineer para ser rapidamente colocada. Este script ainda vai funcionar se um ou dois tipos de construção estiverem sendo usados (caso você queira ligar uma construção de Sentry rápida a uma só tecla).
Chamada de Medic Automática
O jogador pode controlar a chamada de outros jogadores por um Medic com ligações do tipo keybinds. O comando é:
hud_medicautocallersthreshold <porcentagem>
A <porcentagem> é a porcentagem de vida que ativa a chamada automática; 0 não mostrará nada, enquanto 150 vai mostrar todos os companheiros de equipe próximos (já que 150% é o máximo de vida possível).
Este comando pode ser usado para fazer o famoso script de "Radar de Medic": Este conjunto de aliases e comandos vai temporariamente aumentar a chamada automática do Medic/pt-br para 150% (um jogador com sobrecura máxima) desde que uma tecla esteja pressionada, permitindo que o jogador veja todos os seus colegas pelos seus balões de fala de chamadas por Medic caso ele esteja sozinho.
alias "chamada_padrao" "hud_medicautocallersthreshold "75""
alias "chamada_total" "hud_medicautocallersthreshold "150""
alias "+radar" "chamada_total"
alias "-radar" "chamada_padrao"
bind mouse3 "+radar"
O valor de porcentagem de vida de chamada padrão quando este comando não está sendo utilizado pode ser ajustado para qualquer número (neste caso, está definido como 75%) e a ligação pode ser modificada para qualquer outra tecla (o exemplo usa MOUSE3).
==Scripts Notáveis== Estes são vários scripts notáveis que afetam a jogabilidade. Alguns foram corrigidos em atualizações, enquanto outros ainda funcionam.
Scripts Corrigidos
Scripts de Pistola
A princípio, a Pistola poderia ser atirada na mesma velocidade que uma pessoa poderia apertar uma tecla. Ao perceber isso, alguns jogadores criaram scripts que faziam com que a Pistola atirasse o mais rápido possível desde que o botão de disparo estivesse pressionado. Isto só não fazia com que o Scout e o Engineer atirassem com maior rapidez do que a maioria das pessoas conseguia, como também mirassem com maior facilidade, já que não era necessário ficar apertando quaisquer teclas repetidamente.
A Valve eventualmente igualou o nível de jogo. Ela corrigiu a Pistola para ter uma taxa máxima de disparo menor, que seria alcançada ao apertar e segurar a tecla de disparo. Os scripts de Pistola já não eram mais necessários.
Scripts para Virar com a Targe
No começo, os comandos do teclado para virar seu ponto de vista para a direita e esquerda não eram iguais aos comandos do mouse. A Chargin' Targe foi a primeira arma a restringir a rapidez com que você poderia virar seu campo de visão, portanto a Valve colocou um limite na velocidade de giro do mouse, mas esqueceu de aplicar as mesmas restrições ao comando do teclado que realizava a mesma ação.
Jogadores criaram scripts que religavam teclas sempre que um jogador investia, permitindo que eles virassem à velocidade total. Os exemplos mais sofisticados religavam as entradas do eixo-x do mouse aos comandos de giro do teclado e então desligavam quando o jogador atacasse no final da investida.
A Valve eventualmente modificou os comandos de giro do teclado do mesmo jeito que fez com os do mouse, consequentemente eliminando quaisquer vantagens daqueles que usavam o script.
Porém, ainda é possível escrever um script que vai alterar a sensibilidade para valores extremamente altos ao investir e valores normais quando o jogador ataca. Também é possível virar facilmente ao usar bastões analógicos de um gamepad.
Scripts para Agachar no Ar
Originalmente, você poderia agachar quantas vezes você quisesse num só pulo. Ao ligar um script que fazia com que você agachasse e voltasse ao normal numa velocidade bem rápida, era possível explorar o motor, dificultando o registro correto de tiros em alvos aéreos.
A Valve corrigiu isso para que só se possa agachar duas vezes num só pulo.
Scripts Atuais
Scripts para Ocultar as Armas
Há um grande número de scripts que habilitam e desabilitam a opção de exibir armas de acordo com o compartimento de arma selecionado para tal classe. Jogadores geralmente deixam suas armas invisíveis para limpar a tela, mas deixam armas corpo-a-corpo, PDAs, relógios etc visíveis porque seus modelos indicam informações vitais. Por exemplo, o Spy depende muito de seu modelo para ver quando está invisível, quando sua camuflagem é afetada e quando o Dead Ringer é ativado. Outras classes usam as animações de corpo-a-corpo para verificar quando seus ataques atingirão o alvo.
Scripts para Sentry Jumping
Desde a Atualização do Engineer, Engineers podem pegar e carregar suas Sentry Guns. Ao mesmo tempo, o Wrangler permite que Engineers pratiquem Sentry jumps com os foguetes de sua Sentry. Com entradas extremamente rápidas, descobriu-se que um jogador poderia dar um Sentry jump e pegar a sua Sentry antes de ser lançado.
Mesmo que uma pessoa possa realizar isto, tal tarefa é difícil e inconsistente às vezes. Alguns jogadores criaram scripts que executariam os comandos na ordem correta no tempo exato. Eles podem fazer Sentry jumps enquanto carregam sua Sentry consigo sempre.
Scripts de Gunslinger
Já que pode ser difícil destruir uma Mini-Sentry de Combate no meio da batalha com o PDA, alguns jogadores tranformaram a destruição e a reconstrução de sua Mini-Sentry de Combate em um script que requer um ou dois cliques dos botões do mouse.
Scripts de Sensitividade e Controle
Alguns jogadores preferem sensibilidades de mouse diferentes e esquemas de controle para algumas classes. (Por exemplo, para mudar do Demoman, que não requer uma boa mira, para o Sniper, que encoraja o uso de baixa sensibilidade para mirar com precisão para que um movimento brusco com a mão não arruine muito a sua mira) Estes scripts alteram seus esquemas de controle e configurações numa base por classe, ou ainda por arma.
Scripts para a Investida da Targe
Já que sincronizar a investida e o pulo pode ser difícil, algumas pessoas podem usar um script rápido que liga as duas ações a um botão para que a investida cubra a maior distância possível. Porém, o jogador ainda terá que disparar com sua arma corpo-a-corpo para encerrar a investida.
Scripts de Quickscope
Muitos jogadores acham difícil mirar e atirar logo em seguida para conseguir um headshot rápido. Há scripts que vão dar um zoom e atirar com o simples toque de um botão. Pode ser difícil mirar para algumas pessoas, já que deve-se mirar sem o zoom, mas isto acelera a velocidade com a qual você pode dar um tiro se você souber mirar bem.
Veja Também
- Lista de comandos úteis para o console
- Personalizando - config_default.cfg: As keybinds padrões do TF2.
Links Externos
- Steam Users' Forums - TF2 Scripting Tutorial (em inglês). Isto cobre o básico sobre scripting, usando numerosos exemplos úteis e fáceis de entender.
- TF2 scripting tutorial - Warrior Nation Network (em inglês) Este é um artigo muito mais avançado, que requer conhecimento antemão da sintaxe básica de scripting.
- Gamebanana.com - TF2 scripts (em inglês). Centenas de exemplos de scripting para o TF2.