Scripting
Le Scripting est l'utilisation des fichiers de configuration afin de créer de nouvelles attributions de touches, d'automatiser des comportements complexes, et des séquences de commandes de la console.
- Attribuer une touche du clavier (keybind) à une commande de la console, comme le choix d'une arme ou l'affichage d'un message préparé à l'avance dans le chat.
- Configurer de nouvelles commandes, ou commandes personnalisées (aliases) exécutant une série de commandes de la console lorsqu'elle sont utilisées. Ces configurations peuvent par exemple vous permettre de sauter et de vous baisser avec une unique commande de la console, qui peut ensuite être attribuée à une touche.
Ces scripts peuvent aller d'une simple liste de commandes à une boucle auto-référentielle se référant les unes aux autres. Avec assez de temps et d'efforts, vous pouvez utiliser ces outils afin de créer n'importe quel configuration attribuée aux touches de votre choix.
Sommaire
- 1 Fichiers de scripts basiques
- 2 Syntaxe
- 3 Attributions de touches
- 4 Commandes basiques
- 5 Incrementvar
- 6 Commandes en "+" et "-"
- 7 Commandes d'attente
- 8 Commandes personnalisées (Aliases)
- 9 Commandes de scripts utiles
- 10 Scripts particuliers
- 11 Voir aussi
- 12 Liens externes
Fichiers de scripts basiques
Team Fortress 2 lit automatiquement différents fichiers du jeu, et exécute n'importe quelle configuration de touche et de commandes. Voici la liste de ces fichiers :
- config.cfg - Fichier de configuration par défaut, que le jeu créé si vous utilisez le menu du jeu pour attribuer les touches ou changer les préférences vidéos. Même s'il est sans danger de modifier ce fichier, il est plus simple de le laisser tel quel.
- autoexec.cfg - Fichier de configuration par défaut pour l'exécution des attributions de touches personnalisées. Vous devrez mettre vos attributions directement dans ce fichier, mais il est souvent plus facile de créer un fichier .cfg pour chaque nouveau script, que vous exécuterez dans ces fichiers.
- <class>.cfg - Chaque classe a un fichier de configuration qui est exécuté lorsque vous jouez la classe en question. Vous devrez mettre vos attributions de touches directement dans ce fichier, mais il est souvent plus facile de créer des fichiers .cfg pour chaque script différents, que vous exécuterez dans ces fichiers.
Syntaxe
Voici une liste de règles syntaxiques :
- Pour que vos attributions de touches ou vos nouvelles commandes fonctionnent, vous devez respecter ce format :
- commande <argument1> <argument2>
- commande est le type de script que vous voulez. Vous avez trois choix :
- bind - Utilisé pour attribuer une commande à une touche.
- alias - Utilisé pour exécuter les commandes lorsque la nouvelle commande est exécutée.
- exec - Utilisé pour exécuter automatiquement une commande lorsque le fichier de configuration est chargé.
- <argument1> : Touche attribuée ou le nom de la commande créée.
- <argument2> : Commande attribuée ou la commande exécutée par la commande créée.
- Pour exécuter de multiples commandes, vous devez entrer l'argument entier entre guillemets, et séparer les commandes avec des points virgules, comme ci dessous :
- alias "spraynpray" "+attack; wait 500; -attack"
- bind "mouse3" "spraynpray"
- Lorsqu'elles sont exécutées, ces commandes commencent par faire tirer les armes du joueur, continuent pendant 500 périodes (frames) du moteur physique (ce qui équivaut approximativement à 5 secondes si le serveur fonctionne à 100 périodes par seconde) et enfin arrête de tirer. Cette commande est exécutée lorsque vous pressez le bouton du milieu de la souris.
Attributions de touches
Team Fortress 2 autorise les scripts à être attribués à n'importe quelle touche du clavier. La touche que vous souhaitez attribuer à une commande est placée après votre commande d'attribution, et avant l'action que vous voulez exécuter, tout comme dans la section ci dessus. La plupart des touches se passent d'explication, alpha-numériques (a-z, 0-9), et une configuration de touche est simplement créée en tapant cette touche ("bind a" attribue une touche à "a", "bind 5" attribue une touche à "5", et "bind f7" attribue une touche à "f7"). D'autres touches nécessitent que vous tapiez des noms spécifiques dans votre fichier .cfg de façon à y accéder, et ces noms ne sont pas tous évidents. Voici une liste de ces touches. :
Liste de noms de touches
- Lettres/chiffres : Tels quels
- Left Shift : SHIFT
- Left Ctrl: CTRL
- Left Alt : ALT
- Right Shift : RSHIFT
- Right Control : RCTRL
- Right Alt : 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
- ---
- Up Arrow : UPARROW
- Down Arrow : DOWNARROW
- Left Arrow : LEFTARROW
- Right Arrow : RIGHTARROW
- Numpad Keys : Noms des touches
- 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
- Mouse Wheel Direction : Noms des touches
- Mouse Wheel Up : MWHEELUP
- Mouse Wheel Down : MWHEELDOWN
Utiliser ces noms de touches vous permet de placer l'exemple suivant dans l'un de vos fichiers .cfg : <bind KP_ENTER "voicemenu 0 1">. Lorsque vous pressez Entrée sur votre clavier en jeu, vous utiliserez la commande vocale "Merci".
Commandes basiques
La plupart des commandes acceptent un argument seul, qui est de la valeur que vous souhaitez exécuter.
bind "q" "sv_alltalk 1"
Une poignée d'importantes commandes acceptent de multiples arguments. En voici quelques exemples :
- disguise X Y - Ceci déguise le Spy. X est la classe numérotée de 1 à 9, et Y est l'équipe numérotée 1 ou 2.
- voicemenu X Y - Ceci exécute une commande vocale. X est le nombre du menu primaire. Y est la position de la commande vocale dans ce menu.
Exemple: "voicemenu 1 1" est la commande pour crier "Spy", donc :
bind "t" "voicemenu 1 1"
Cette commande fera crier "Spy" à votre personnage lorsque vous presserezla touche "t".
Incrementvar
Cette commande fonctionne grâce à une plage de valeurs spécifiées lorsque elle exécute et applique ces valeurs à une autre commande. Cette commande est de la forme suivante :
- command "<argument1>" "incrementvar <argument2> X Y Z"
- X et Y représentent la plage de valeurs que vous voulez exécuter avec <argument2>.
- Z est la taille des étapes que vous voulez effectuer pendant que vous parcourez la plage de valeurs.
Si vous voulez une plage de valeurs de 1 à 10, parcourue de 2 en 2 à chaque fois que la commande est utilisée, X Y Z deviennent 1 10 2. Ainsi, à chaque fois que la commande est exécutée, <argument2> s'exécutera dans les valeurs 2, 4, 6, 8, 10, 2, 4, 6, 8, 10...
Voici un exemple concret de l'incrementvar en action :
- bind "n" "incrementvar net_graphpos 1 3 1"
Ceci attribue la touche "n" à faire tourner les positions suivantes sur les 3 disponibles du net_graph.
Commandes en "+" et "-"
Ces commandes ont deux états. Lorsque la touche liée est pressée, la commande en "+" est exécutée. Lorsque la touche est relâchée, le commande en "-" est exécutée et continue de l'être.
Exemple :
- bind "c" "+duck"
Cette commande attribue à "c" l'action de se baisser lorsqu'elle est pressée. Lorsque la touche est relâchée, +duck est changé en -duck, et le joueur arrête de se baisser.
En général, si une commande est attribuée à une touche, un "+" fait comprendre au jeu d'appliquer la commande tant que la touche est pressée. Inversement, si une commande est attribuée à une touche, un "-" fait comprendre au jeu d'appliquer la commande tant que la touche est relâchée.
Si une commande personnalisée est définie avec un "+" au début, la commande sera appliquée lorsque la touche est pressée. Inversement, une commande commençant par "-" sera appliquée lorsque la touche est relâchée.
Commandes d'attente
Si vous voulez que le jeu établisse un délai pendant une commande personnalisée, ou si vous voulez éviter les crashes du client causés par de trop rapides exécutions de commandes, utilisez la commande "wait".
"wait" fait comprendre au jeu d'établir un délai avant la prochaine commande dans le script, par une période physique dans les règles de TF2. Cette commande accepte des valeurs comme "wait 50", ce qui demande au jeu d'attendre cinquante périodes avant que la commande ne s'applique. "wait 100" représente à peu près une seconde sur un serveur fonctionnant à 100 FPS.
Certains serveurs désactivent cette commande. Lorsque vous jouez sur l'un d'eux, les commande d'attente seront ignorées, ce qui pourrait faire crasher certains de vos scripts. Un script contenant une boucle indéterminée espacées par des commandes d'attente sera toujours immédiatement bloquée sur ces serveurs.
Commandes personnalisées (Aliases)
Une commande personnalisée est un groupe de commande exécutées ensembles dans un but commun. Une simple nouvelle commande prend cette forme :
alias "aliasname" "command1; command2; command3"
Vous pouvez alors exécuter les commandes par l'intermédiaire de la bonne touche :
bind "key" "aliasname"
Lorsque la touche est pressée, command1, command2, and command3 sont exécutées dans l'ordre.
Commandes personnalisées complexes
Les commandes personnalisées peuvent exécuter n'importe quelle autre commande, y compris d'autres commandes personnalisées. De plus, une commande personnalisée peut exécuter une autre commande de ce type de façon à la redéfinir. Ceci vous autorise à créer des commandes qui changent de fonction. Voici un exemple simple. :
bind "key" namescroll
alias namescroll "firstname"
alias firstname "setinfo name "First_name"; alias namescroll secondname"
alias secondname "setinfo name "Second_name"; alias namescroll thirdname"
alias thirdname "setinfo name "Third-_name"; alias namescroll firstname"
Ceci est difficile à lire, référez vous alors au résumé ci dessous :
- La première ligne attribue une touche "key" à une nouvelle commande "namescroll" qui doit maintenant être définie.
- La deuxième ligne créée la nouvelle commande "namescroll" qui exécute la commande "firstname"
- La troisième ligne définit la nouvelle commande "firtsname" en deux commandes :
- La première commande applique votre nom dans le jeu en "First_name"
- La deuxième commande redéfinit la nouvelle commande "namescroll" en une commande personnalisée exécutant la commande "secondname"
- La quatrième ligne définit "secondname" de la même manière. Un nom différent est alors exécuté dans le jeu, et "namescroll" est redéfini en "thirdname"
- La cinquième ligne définit "thirdname" juste comme les deux précédentes, mais avec une différence. Elle redéfinit la commande personnalisée "namescroll" en exécutant la commande "firstname".
Cela complète une boucle. Chaque pression sur la touche exécute une commande et redéfinit la commande personnalisée à la touche, de sorte que lors de sa prochaine pression elle exécute une commande différente. S'il n'y a pas de boucle, la commande personnalisée "namescroll" n'aura pas toujours d'autres commandes à exécuter à chaque pression.
Boucles de commandes personnalisées
Les commandes personnalisées peuvent être utilisées en conjonction avec la commande d'attente, pour créer des boucles.
Attention : Ne pas avoir de "wait" en place, ou jouer sur un serveur qui les désactive, peut causer des crashes de TF2.
alias "Loop" "echo Looping every 150 ticks.;wait 150;Loop"
Loop
Divisons cette ligne pour mieux la comprendre :
Ligne 1
L'écho (echo) affiche un message dans la console, vous informant du fonctionnement de la commande.
L'attente (wait) demande d'attendre 150 périodes avant d'être exécutée.
La boucle (Loop) fait recommencer la commande, et l'écho.
Ligne 2
La boucle (Loop) commence la boucle de la commande.
Vous pouvez aussi créer des boucles de commandes personnalisées, comme ci dessous :
alias "Loop1" "echo Loop 1;wait 150;Loop2"
alias "Loop2" "echo Loop 2;wait 150;Loop1"
Loop1 appelle Loop 2 qui en retour appelle Loop1, etc...
Cette méthode peut aussi être utilisée pour terminer une boucle sans effacer la commande personnalisée.
alias "Loop1" "echo Loop1;wait 150;Loop2"
alias "Loop2" "Loop1"
Ce qui créée une boucle, et donc
alias "Loop2"
la terminerait, en effaçant la commande personnalisée Loop2.
Vous pouvez utiliser cette méthode pour les pressions de touches ( via les préfixes "+" et "-" ) comme ci dessous :
alias "Loop2" "Loop1"
alias "Loop1" "echo Loop1;wait 150;Loop2"
alias "+Loop" "alias Loop2 Loop1;Loop2"
alias "-Loop" "alias Loop2"
bind "<Key>" "+Loop"
Dans l'ordre d'exécution :
Loop2 appelle Loop1
Loop1 répond "Loop1" à la console, attend 150 périodes, puis appelle Loop2
+Loop appelle Loop2 et Loop1, et exécute Loop2
-Loop efface le lien de Loop2, ce qui casse la boucle.
Commandes de scripts utiles
Il y a des centaines d'arguments différents pour vos scripts qui peuvent exécuter n'importe quelle tâche. Voici une liste de certains d'entre eux :
Commandes vocales
La commande vocale est l'acte de faire parler votre classe, ce qui est souvent utilisé dans le jeu pour donner des informations ou juste pour le fun.
Les commandes vocales sont utilisées dans la syntaxe suivante :
voicemenu <menu_number> <phrase_number>
Où <menu_number> est l'un des trois menus où les commandes vocales sont affichées, <phrase_number> est l'une des 7 commandes vocales présentes sur chaque menu <menu_number>.
Arguments pour commandes vocales
- 0 <phrase_number>
- 0 : Medic
- 1 : Merci
- 2 : En avant
- 3 : Bougez
- 4 : Gauche
- 5 : Droite
- 6 : Oui
- 7: Non
- 1 <phrase_number>
- 0 : Ils arrivent
- 1 : Spy
- 2 : Mitrailleuse droit devant
- 3 : Téléporter ici
- 4 : Distributeur ici
- 5 : Mitrailleuse ici
- 6 : Active l'ÜberCharge
- 7 : (Medic seulement) ÜberCharge prête
- 2 <phrase_number>
- 0 : À l'aide
- 1 : Cris de bataille
- 2 : Félicitations
- 3 : Huées
- 4 : Positif
- 5 : Négatif
- 6 : Joli tir
- 7 : Bon travail
Déguisements rapides du Spy
Avec ces commandes rapides et faciles, vous pouvez attribuer des touches à un déguisement spécial sans avoir à passer par le menu de déguisement.
Les commandes de déguisement sont utilisées dans la syntaxe suivante :
disguise <class_number> <team_number>
Où <class_number> est le numéro de la classe dont vous voulez prendre l'apparence, et <team_number> le numéro de l'équipe choisi.
Arguments pour les commandes de déguisement
- 1 <class_number>
- 1 : Scout
- 2 : Sniper
- 3 : Soldier
- 4 : Demoman
- 5 : Medic
- 6 : Heavy
- 7 : Pyro
- 8 : Spy
- 9 : Engineer
- 2 <team_number>
- 1 : Équipe BLU
- 2 : Équipe RED
- -1 : Équipe opposée
- -2 : Équipe opposée
Constructions rapides de l'Engineer
De la même façon que le déguisement rapide du Spy, vous pouvez utiliser des commandes autorisant l'Engineer à passer outre son PDA et à instantanément détruire les bâtiments tout étant en train de choisir un emplacement de construction.
Les commandes de construction sont utilisées dans la syntaxe suivante :
build <building_number>'
destroy <building number>
Où <building_number> est le nombre du bâtiment que vous voulez détruire ou construire.
Arguments pour les commandes de construction
- Number: Construire/Détruire
- 0 : Distributeur
- 1 : Entrée de téléporteur
- 2 : Mitrailleuse / Mini-Mitrailleuse de Combat
- 3 : Sortie de téléporteur
Exemple de la méthode :
alias sentry "destroy 2; build 2"
alias Dispenser "destroy 0; build 0"
alias entrance "destroy 1; build 1"
alias exit "destroy 3; build 3"
bind f1 Sentry Gun
bind f2 Dispenser
bind f3 entrance
bind f4 exit
Dans cet exemple, les bâtiments sont attribués aux touches f1 à f4, elles n'interfèrent pas avec les touches de selection des armes. Lorsqu'activé, le script détruit instantanément le bâtiment dont vous souhaitez construire une autre version, afin d'accèlérer le processus de construction.
Radar du Medic
Cette configuration de commande personnalisée améliore temporairement l'appel automatique du Medic jusqu'à 150% (un joueur bénéficiant d'un bonus de santé) tant qu'ils gardent une touche appuyée, l'autorisant à voir où sont ses alliés grâce aux bulles d'appel automatique, au cas où il se retrouverait seul.
alias "autocall_default" "hud_medicautocallersthreshold "75""
alias "autocall_all" "hud_medicautocallersthreshold "150""
alias "+radar" "autocall_all"
alias "-radar" "autocall_default"
bind mouse3 "+radar"
La valeur par défaut de l'appel automatique lorsque la commande n'est pas utilisée 7, peut être ajustée jusqu'au nombre désiré (par exemple pour 75% de santé), et l'attribution de touche peut être configurée (ici sur mouse3).
Scripts particuliers
Il existe certains scripts notables affectant le gameplay. Certains ont été corrigés, d'autres sont toujours possibles.
Scripts corrigés
Scripts du Pistolet
À la base, le Pistolet pouvait tirer aussi rapidement qu'une main humaine pouvait presser une touche. Prenant conscience de ce fait, certaines personnes ont alors créé des scripts faisant tirer le Pistolet aussi rapidement que possible. Il n'est pas autorisé que le Scout et l'Engineer puissent tirer si rapidement par rapport aux autres joueurs, surtout qu'il est plus facile de viser sans avoir à marteler frénétiquement une touche.
Valve corrigea alors ce scripts. Ils appliquèrent une cadence de tir maximum pouvant être atteinte en restant appuyé sur la touche de tir. Le script est donc désormais inutile.
Scripts du changement de direction avec le Bouclier Bélier
À la base, la commande du clavier pour tourner n'était pas traité de la même façon que les commandes de la souris. Le Bouclier Bélier était la première arme à créer une restriction de la vitesse de changement de direction de la vision, car Valve appliqua une limite à cette vitesse pour la souris, mais oublia de l'appliquer à celle du clavier.
Le joueurs configurèrent alors des scripts utilisant la vitesse du clavier pour pourvoir changer de direction en pleine charge. Les exemples les plus sophistiqués appliquèrent l'axe x aux commandes de changement de direction du clavier, et les enlevait lorsque le joueur attaquait à la fin de la charge.
Valve copia alors la commande de changement de direction de la souris à celle du clavier, ce qui rendît les scripts inutiles.
Cependant, il est toujours possible d'écrire un script augmentant énormément la sensibilité de la souris pendant la charge, et la baisser au moment de l'attaque. Il est aussi possible de tourner facilement en utilisant les stick analogiques d'une manette.
Scripts pour se baisser en l'air
À la base, vous pouviez vous baisser autant de fois que vous le vouliez pendant un même saut. En attribuant un script à l'action de se baisser et de se relever aussi rapidement que possible, les joueurs pouvaient rendre leur comportement en l'air très imprévisible, ce qui les rendait très difficiles à toucher.
Valve a par la suite fait en sorte que le joueur ne puisse se baisser dans les airs 2 fois au maximum.
Scripts applicables
Script cachant les armes
Il existe un large nombre de scripts configurant l'affichage de l'arme, en fonction de l'arme séléctionnée. Les joueurs rendent souvent leurs armes invisibles pour pouvoir voir l'ensemble de l'écran, mais rendent invisibles les informations à l'écran de certaines armes, comme les armes de corps à corps, les PDAs ou les montres. Par exemple, le Spy doit compter sur le modèle visible de son bras pour déterminer quand il est invisible, quand l'invisibilité est perturbée, ou quand sa Dead Ringer est activée. D'autres classes utilisent leur animation de corps à corps pour juger lorsque leur attaque atteint la cible.
Sauts propulsés de Mitrailleuses
Depuis la Mise à Jour de l'Engineer, les Engineers peuvent transporter leurs Mitrailleuses. De plus, le Dompteur leur permet d'effectuer des sauts propulsés avec les roquettes de leurs Mitrailleuses. Avec une configuration très extrêmement rapide, il a été découvert qu'un joueur peut effectuer un saut propulsé, et attraper sa Mitrailleuse pour la transporter avant qu'il ne soit envoyé trop loin.
Un humain peut répéter cette action, mais elle est très difficile à exécuter. Certains joueurs ont configurés des scripts leur permettant de grandement leur simplifier la tâche. Ils peuvent ainsi être assuré de réussir la manoeuvre à chaque fois.
Scripts du Flingueur
Détruire puis recontruire une Mini-Mitrailleuse de Combat peut être générateur de problèmes dans le feu de l'action. Certains joueurs ont scripté la destruction puis la reconstruction de leur Mini Mitrailleuse de Combat en l'attribuant à un bouton.
Scripts de la sensibilité de la souris
Certains joueurs préfèrent jouer certaines classes avec des sensibilités différentes (par exemple, augmenter la sensibilité du Scout pour le rendre plus nerveux, et baisser celle du Sniper, le rendant plus précis). Ces scripts changent le schéma des contrôles et la configuration de la souris classe par classe.
Voir aussi
- Liste de commandes utiles dans la console
- Personnaliser - config_default.cfg : L'attribution de touche par défaut de TF2.
Liens externes
- Steam Users' Forums - TF2 Scripting Tutorial. Couvre les bases du scripting, avec de nombreux exemples.
- TF2 scripting tutorial - Warrior Nation Network. Article plus avancé, requiert un certain savoir-faire vis à vis de la syntaxe du scripting.
- FPSBanana.com - TF2 scripts. Des centaines d'exemples de scripting pour TF2.