Scripts

Hop, ici on parle des scripts qui permettent de lancer des lots d’actions d’une seule touche et de toutes les petites choses qui peuvent nous simplifier la vie!

Bonjour :slight_smile:

je voulais faire un petit post concernant les scripts parce que quand j’ai commencé j’ai eu du mal a comprendre comment il fonctionnait ou est-ce qu’on les activait etc et aujourd’hui on me pose ces questions donc je me disais que ca pouvait etre utile.

Dans le principe un script c’est une suit de commande. Sachant que ces commandes peuvent etre n’importe quoi (tirer, construire une tourelle, changer d’équipe, de serveur, changer un raccourci clavier, mes options graphiques etc…) et qu’on peux les organiser de manière très complexes (presque comme un mini programme avec des pause, des conditions).

Alors évidement taper toute une suite de commande dans la console en plein milieu d’une partie c’est pas forcément le plus simple :crying:

Donc Valve a prévu qu’on puisse lancer les scripts depuis de joli fichier texte (donc créer avec le bloc-notes par exemple) en changeant simplement l’extension .txt par .cfg. (a stocker dans C:\Program Files\Steam\steamapps\USERNAME\team fortress 2\tf\cfg ).

De plus il existe 2 fichiers de scripts qui sont executés a chaque lancement du jeu: config.cfg dans lequelle sont stockés toutes les options du jeu (nottament tout vos raccourci claviers) et autoexec.cfg qui n’existe pas lors de l’installation du jeu mais que chaque joueur peux créer et qui sera executé s’il existe (il est possible de le créer et de le laisser vide).

Enfin il existe un fichier par classe qui est lancé lorsque le joueur choisi cette classe dans le jeu.

Ensuite pour lancer un fichier de script la commande est: exec nomduscript.cfg

Les scripts sont principalement utilisé pour les alias. Les alias sont des miniscripts auquel on va attribuer un nom pour pouvoir les attribuer a une touche (grace a la commande « bind »).

Un exemple d’alias simple est le « Spy attack&last disguise ». Un script utile en spy qui permet après une attaque de reprendre automatiquement le dernier déguisement utilisé. La commande pour attaquer est attack et celle pour reprendre son dernier déguisement est « last_disguise ». Pour séparer 2 commandes au sein d’un meme attribut on utilise le point-virgule ; . Pour cet exemple on nommera notre alias « spy_attackdisguise ». Ce qui donne:

alias +spy_attackdisguise "+attack" alias -spy_attackdisguise "-attack; lastdisguise"

Le + et le - correspondent a l’appui ou au relachage de la touche qui sera bindé a cet alias.

Pour achever cet exemple on va bindé notre alias au bouton 1 de la souris:

bind "MOUSE1" +spy_attackdisguise

Dorénavant lorsqu’on appuiera sur Mouse1 notre spy se mettra a attaquer jusqu’a ce qu’on relache la touche « Mouse1 » (si on n’avait pas mis +attack notre spy aurait donné une unique attaque à chaque préssion de la touche) puis dès qu’on relachera la touche il cessera d’attaquer et reprendra le dernier deguisement utilisé.

En copiant ces 3 lignes dans l’autoexec.cfg ce script sera lancé a chaque lancement du jeu. Du coup il y aura un bug lorsqu’on ne jouera pas un spy si on appuie sur la touche « mouse1 ». Pour empecher cela 2 possibilités: soit l’on attribue un bouton spécial à l’action « spy_attackdisguise » ce qui n’est pas forcément pratique quand on joue soit on place ce script dans un fichier dédié a la classe de spy (spy.cfg) et qui se lancera seulement quand on joue spy.

Le problème alors est qu’il faut « effacer » les binds créé pour une classe spécifique lorsqu’on repasse sur une autre classe.

Pour cela on crée un script appellé cleanup.cfg dans ce fichier devra figurer « l’inverse » de ce qui se trouve dans vos fichiers de config. Par exemple on a créer dans le fichier spy.cfg un alias qu’on a bindé sur « mouse1 ». On devra donc dans le cleanup.cfg mettre

bind "MOUSE1" +attack

Pour que lorsqu’on choisi une autre classe que spy le bouton « mouse1 » ai bien l’effet attaquer.

Enfin il faudra placer au début de chaque classe.cfg (spy.cfg scout.cfg etc…) la commande exec cleanup.cfg de manière à « nettoyer » les binds avant de les réattribuer pour la classe en question.

Les scripts offrent d’innombrables possibilités pour se simplifier le jeu et il en existe pour a peu près toutes les classes. Certains rendent automatique la rotation des canons du heavy ou permettent d’attribuer une touche a chaque batiment de l’ingé (pour construire/détruire rapidement), de couper les sons du jeu lorsque vous parlez dans le micro (obligatoire pour ceux qui jouent avec des enceintes) etc…Tout le monde a forcément un script qui lui rendra service et d’ailleurs Valve s’inspire souvent des scripts de la communauté pour améliorer son jeu (le script du medigun qui reste lorsqu’on relache le bouton existe depuis la sortie du jeu).

Je joint a ce post un zip qui contient mon propre dossier /cfg. vous y trouverez quelques scripts pour l’ingé et le spy ainsi que le class loader (qui permet de changer de classe grace à a une touche)et le cleanup qui va avec que je viens de refaire après le nouveau patch (j’ai remplacé les nom de fichier .spy.cfg scout.cfg etc par des numero pour viter les conflits avec les fichiers de valve).

Et surtout la principale ressource concernant les scripts TF2: http://www.tf2wiki.net/wiki/Community_Scripts

Voila j’espere que ca sera utile a certains. Si vous avez d’autre questions ou si vous avez besoin d’un coup de main, mes maigres connaissances sont à votre service (à défaut de savoir dessiner :cry: ).

Ah bah ça c’est du post, merci je vais enfin m’y mettre du coup.

rah oué purée

Surement pas mal de modif a venir suite aux patchs et au message de TopperHarley qui m’a donné pas mal d’idée :slight_smile:

Nottament degagement du class loader qui sers plus vraiment.

Pour commencer, voici mon autoexec.cfg:

[code]//Class Config switcher.
alias cc1 "exec scout.cfg;echo ::Scout Config Loaded::"
alias cc2 "exec soldier.cfg;echo ::Soldier Config Loaded::"
alias cc3 "exec pyro.cfg;echo ::Pyro Config Loaded::"
alias cc4 "exec demoman.cfg;echo :emoman Config Loaded::"
alias cc5 "exec heavy.cfg;echo ::Heavy Config Loaded::"
alias cc6 "exec engineer.cfg;echo ::Engineer Config Loaded::"
alias cc7 "exec medic.cfg;echo ::Medic Config Loaded::"
alias cc8 "exec sniper.cfg;echo ::Sniper Config Loaded::"
alias cc9 "exec spy.cfg;echo ::Spy Config Loaded::"
alias cc0 "exec config.cfg;echo ::EXEC CLEANED::"
bind KP_END "cc1"
bind KP_DowNARROW "cc2"
bind KP_PGDN "cc3"
bind KP_LEFTARROW "cc4"
bind KP_5 "cc5"
bind KP_RIGHTARROW "cc6"
bind KP_HOME "cc7"
bind KP_UPARROW "cc8"
bind KP_PGUP "cc9"
bind KP_INS “cc0”

//Rotating Voice Menu
alias r1 voice_menu_1
alias r2 voice_menu_2
alias r3 voice_menu_3
alias “rcbind1” "bind 1 rs1; bind 2 rs2; bind 3 rs3; bind 4 rs4; bind 5 rs5"
alias “rcbind2” "bind 6 rs6; bind 7 rs7; bind 8 rs8; bind 9 rs9; bind 0 rs10"
alias “rcbind” "rcbind1; rcbind2"
alias “rs1” "slot1; alias radiocyc rc1; rebind"
alias “rs2” "slot2; alias radiocyc rc1; rebind"
alias “rs3” "slot3; alias radiocyc rc1; rebind"
alias “rs4” "slot4; alias radiocyc rc1; rebind"
alias “rs5” "slot5; alias radiocyc rc1; rebind"
alias “rs6” "slot6; alias radiocyc rc1; rebind"
alias “rs7” "slot7; alias radiocyc rc1; rebind"
alias “rs8” "slot8; alias radiocyc rc1; rebind"
alias “rs9” "slot9; alias radiocyc rc1; rebind"
alias “rs10” "slot10; alias radiocyc rc1; rebind"
alias “radiocyc” "rc1"
alias “rc1” "r1; alias radiocyc rc2; rcbind"
alias “rc2” "r2; alias radiocyc rc3; rcbind"
alias “rc3” "r3; alias radiocyc rc1; rcbind"
alias “rebind1” "bind 1 slot1; bind 2 slot2; bind 3 slot3; bind 4 slot4; bind 5 slot5"
alias “rebind2” "bind 6 slot6; bind 7 slot7; bind 8 slot8; bind 9 slot9; bind 0 slot10"
alias “rebind” "rebind1; rebind2"
bind “a” “radiocyc”
//End

//Highjump
alias “+jumpeh” "+jump; +duck"
alias “-jumpeh” "-duck; -jump"
bind “space” “+jumpeh”[/code]

On a donc l’appel des scripts par classe sur le pavé numérique, un voice menu rotatif (genre pour faire battlecry je fais A A A 3), et le highjump (saut plus s’accroupir, pratique pour un ingé pour monter sur sa tourelle sans se louper)

Après, j’ai des configs par classe (mais pas pour toutes pour l’instant).
On peut noter:

[code]soldier.cfg

//Rocket Jump
alias +rocketjump "+jump;+duck;wait;+attack"
alias -rocketjump "-jump;-attack;wait;wait;wait;-duck"
bind mouse2 “+rocketjump”[/code]

[code]pyro.cfg (je n’ai pas encore testé ce script, c’est prévu pour ce soir)

//pyro panic
alias “battlecry” “voicemenu 2 1”;
alias “+panic” “battlecry; cl_yawspeed 3000; +left; +attack”;
alias “-panic” “-attack; -left; cl_yawspeed 210”;
bind “mouse5” “+panic”;[/code]

[code]heavy.cfg

//gattling spinning pour éviter de maintenir mouse2

alias +togglespinning "+spin"
alias -togglespinning “-spin”

alias toggle "stop"
alias start "alias toggle stop; alias -togglespinning -spin"
alias stop “alias toggle start; alias -togglespinning -nspin”

alias +spin "use tf_weapon_minigun"
alias -spin "+attack2;toggle"
alias -nspin “-attack2;toggle”

bind “MOUSE1” "+attack"
bind “MOUSE2” “+togglespinning”[/code]

C’est censé faire cl_yawspeed 3000 ?

Merci Coldo, je t’ai piqué la partie Highjump (j’ai un mal fou en spy à passer par dessus les tourelles/distrib).
Et j’ai rajouté ça à mon autoexec :
[codebox]// Spy Quick Disguise
// ==================
alias spy_cycle_r2 "disguise 3 0; alias spy_cycleup spy_cycle_r3; alias spy_cycledn spy_cycle_r8; alias spy_colorswap spy_cycle_b2; spy_red"
alias spy_cycle_r3 "disguise 7 0; alias spy_cycleup spy_cycle_r4; alias spy_cycledn spy_cycle_r2; alias spy_colorswap spy_cycle_b3; spy_red"
alias spy_cycle_r4 "disguise 4 0; alias spy_cycleup spy_cycle_r5; alias spy_cycledn spy_cycle_r3; alias spy_colorswap spy_cycle_b4; spy_red"
alias spy_cycle_r5 "disguise 6 0; alias spy_cycleup spy_cycle_r6; alias spy_cycledn spy_cycle_r4; alias spy_colorswap spy_cycle_b5; spy_red"
alias spy_cycle_r6 "disguise 9 0; alias spy_cycleup spy_cycle_r7; alias spy_cycledn spy_cycle_r5; alias spy_colorswap spy_cycle_b6; spy_red"
alias spy_cycle_r7 "disguise 5 0; alias spy_cycleup spy_cycle_r8; alias spy_cycledn spy_cycle_r6; alias spy_colorswap spy_cycle_b7; spy_red"
alias spy_cycle_r8 “disguise 2 0; alias spy_cycleup spy_cycle_r2; alias spy_cycledn spy_cycle_r7; alias spy_colorswap spy_cycle_b8; spy_red”

alias spy_cycle_b2 "disguise 3 1; alias spy_cycleup spy_cycle_b3; alias spy_cycledn spy_cycle_b8; alias spy_colorswap spy_cycle_r2; spy_blu"
alias spy_cycle_b3 "disguise 7 1; alias spy_cycleup spy_cycle_b4; alias spy_cycledn spy_cycle_b2; alias spy_colorswap spy_cycle_r3; spy_blu"
alias spy_cycle_b4 "disguise 4 1; alias spy_cycleup spy_cycle_b5; alias spy_cycledn spy_cycle_b3; alias spy_colorswap spy_cycle_r4; spy_blu"
alias spy_cycle_b5 "disguise 6 1; alias spy_cycleup spy_cycle_b6; alias spy_cycledn spy_cycle_b4; alias spy_colorswap spy_cycle_r5; spy_blu"
alias spy_cycle_b6 "disguise 9 1; alias spy_cycleup spy_cycle_b7; alias spy_cycledn spy_cycle_b5; alias spy_colorswap spy_cycle_r6; spy_blu"
alias spy_cycle_b7 "disguise 5 1; alias spy_cycleup spy_cycle_b8; alias spy_cycledn spy_cycle_b6; alias spy_colorswap spy_cycle_r7; spy_blu"
alias spy_cycle_b8 “disguise 2 1; alias spy_cycleup spy_cycle_b2; alias spy_cycledn spy_cycle_b7; alias spy_colorswap spy_cycle_r8; spy_blu”

alias spy_red "alias spy2 spy_cycle_r2;alias spy3 spy_cycle_r3;alias spy4 spy_cycle_r4;alias spy5 spy_cycle_r5;alias spy6 spy_cycle_r6;alias spy7 spy_cycle_r7;alias spy8 spy_cycle_r8"
alias spy_blu “alias spy2 spy_cycle_b2;alias spy3 spy_cycle_b3;alias spy4 spy_cycle_b4;alias spy5 spy_cycle_b5;alias spy6 spy_cycle_b6;alias spy7 spy_cycle_b7;alias spy8 spy_cycle_b8”

spy_cycle_b8 // Initialize script and disguise as a Blue Sniper. Alter to taste.

bind “MWHEELUP” “spy_cycleup” // Cycles disguise in the current color up a class by number.
bind “MWHEELDOWN” “spy_cycledn” // Cycles disguise in the current color down a class by number.
bind “END” “spy_colorswap” // Swaps to the other team color and starts a disguise of the last class you selected.
bind “KP_DOWNARROW” “spy2” // Disguise as Current Color Soldier
bind “KP_PGDN” “spy3” // Disguise as Current Color Pyro
bind “KP_LEFTARROW” “spy4” // Disguise as Current Color Demoman
bind “KP_5” “spy5” // Disguise as Current Color Heavy
bind “KP_RIGHTARROW” “spy6” // Disguise as Current Color Engineer
bind “KP_HOME” “spy7” // Disguise as Current Color Medic
bind “KP_UPARROW” “spy8” // Disguise as Current Color Sniper
bind “KP_INS” “spy_colorswap” // Swap to opposite color.[/codebox]
J’en profite pour poser quelques questions : j’aimerai mettre les déguisements adverses les utiles (pyro/demo/ingé) sur les touches F1/2/3. Pour cela, j’ai juste à changer les lignes en bind “xxx” en bind “F1” ? Car j’ai l’impression que la partie supérieure joue aussi dans l’attribution des touches…

Tiens, question à 2 centimes : quelqu’un connait des scripts utiles pour le demoman ? J’en avais trouvé seulement pour automatiser le sticky-jump, ce qui n’est pas d’une grande utilité… J’ai pas l’impression qu’il y’ait beaucoup de trucs à scripter et qui servent à quelque chose, mais quelqu’un a peut être eu une idée géniale.

Kel_Thalas> Dans ton script les touche du pavé numerique 2 à 8 servent à se déguiser dans une des 7 classes (scout et spy sont absentes) dans la couleur Bleu.

A partir de la si tu appuies sur 0 ou 1 du pavé numérique ton déguisement changeras de couleur. Et si tu fais tourner ta molette vers le haut ou le bas tu changeras de déguisement (sans changer de couleur) d’un cran vers le haut ou le bas.

tu peux réattribuer certains bind vers F1/F2/F3 mais si tu cherches uniquement a te déguiser dans ces 3 déguisement et de la couleur adverses tu n’as surement pas besoin d’un tel script (assez compliqué et un poil lourd).

Surtout je trouve “étonnant” de sacrifier sa molette pour les costumes du spy (mais tu peux retirer juste ces binds la si tu le souhaites).

tu peux aussi tout a fait rajouter 3 lignes avec:

bind "F1" "spy3" bind "F2" "spy4" bind "F3" "spy6"

Directement à la suite de ton script puisque un alias peut etre bindé à plein de touches.

Ca augmente à donf la sensibilité horizontale (tourner) de la souris, pour faire plein de tours sur toi-même super rapidement :slight_smile:
Donc avec le script, tu tournes super vite sur toi-même dans le sens trigonométrique, lance flamme activé, et battlecry!

Non y a rien. Enfin j’ai rien trouvé. Mais moi j’utilise roulette haut pour le lance grenade, roulette bas pour le lance sticky et Mouse2 pour l’arme de mélée.

[quote=« Coldorak, post:10, topic: 36708 »]Ca augmente à donf la sensibilité horizontale (tourner) de la souris, pour faire plein de tours sur toi-même super rapidement smile.gif
Donc avec le script, tu tournes super vite sur toi-même dans le sens trigonométrique, lance flamme activé, et battlecry![/quote]

Ca doit être terrible pour enflammer tout le monde.

Au début l’absence de molette m’embêtait, mais ca fait plus de 2 semaines que je joue sans, et honnêtement je joue sans aucun problème. J’ai même l’impression qu’il est plus rapide de passer par le 1/2/3/4 que par la molette, donc :slight_smile: (surtout que pouvoir passer très rapidement d’un costume à l’autre devrait pouvoir me permettre de survivre plus aisément.

Et j’avais vraiment pas pensé à rajouter des binds. Les idées les plus simples…

Edit : >Topper : mais tu fais comment pour faire péter les stickies ? Tu as mis une autre touche ?

Si t’as plein de méchants autour de toi à portée de lance-flamme, grave :slight_smile:

Kel Thalas>tu peux tout a fait mettre ce script dans ton spy.cfg et mettre

bind "MWHEELUP" "invprev" bind "MWHEELDOWN" "invnext"

Dans tout les autres .cfg (ou meme mettre ca dans un cleanup.cfg et mettre “exec cleanup.cfg” dans tout tes .cfg)

Ainsi tu conserve ton changement de costume a la molette poru ton spy et tu conserve ta molette pour toute les autres classes.

Kel_Thalas > Ah oui c’est vrai j’y avais plus pensé. Donc pour les classes Spy, Medic, Démo, Sniper et Heavy tu utilises le code de Nashan juste en dessus.

Re-merci Nashan, même si il va falloir que je me réhabitue à la molette, sauf en spy :slight_smile:

Ouai, la molette pour changer de déguisement, bof :/. Je la garde pour pour les armes.
Le seul truc qui me manque c’est de pouvoir changer de couleur. C’est pénible, je veux juste un bouton pour ça, et y’a que des scripts qui reconfigurent toutes les touches :S.

Si j’ai bien compris :
bind “touche de ton choix” “spy_colorswap” // Swap to opposite color.
Ca devrait marcher (au pire essaye de mettre un déguisement et d’ensuite d’appuyer sur la touche correspondante)

mais je suis le seul à ne pas utiliser un seul script ?

vous me faites peur là ! :slight_smile:

en plus, j’ai l’impression que j’ai pas particulièrement besoin d’eux…

[quote=« Kel_Thalas, post:18, topic: 36708 »]Si j’ai bien compris :
bind « touche de ton choix » « spy_colorswap » // Swap to opposite color.
Ca devrait marcher (au pire essaye de mettre un déguisement et d’ensuite d’appuyer sur la touche correspondante)[/quote]

Non ça ne fonctionne pas :/. Ca ne fonctionne qu’avec le script « entier » :confused: (c’est un alias).

[quote=« Ldoud, post:19, topic: 36708 »]mais je suis le seul à ne pas utiliser un seul script ?

vous me faites peur là ! :slight_smile:

en plus, j’ai l’impression que j’ai pas particulièrement besoin d’eux…[/quote]

Au début je n’en utilisais pas non plus, mais ça simplifie la vie pour quelques détails.