Tutoriel scripting
Un article de WolfArea's Wiki.
Sommaire |
Introduction au scripting
Comment débuter dans le scripting
Pour commencer n'utilisez plus (ou pas) le fichier etconfig.cfg se trouvant dans le dossier profile : ce fichier se réinitialise si son contenu dépasse 16ko.
Nous allons donc créer un autre fichier appelé autoexec.cfg qui lui se place dans le dossier etmain et qui, comme son nom l'indique, s'exécutera automatiquement à chaque démarrage du jeu.
Création de votre autoexec.cfg
Pour créer votre fichier, il vous suffit simplement de créer un document texte que vous renommez en .cfg.
Si vous ne voyez pas les extension, pas de panique ! Enregistrez directement votre document texte en .cfg.
En cas de complication, ne vous cassez pas la tête et copiez/renommez votre etconfig.cfg en autoexec.cfg que vous placerez dans votre dossier etmain.
Ouvrez et éditez ce fichier à l'aide de n'importe quel éditeur de texte : Notepad (Bloc-notes), Wordpad, ...
Le jeu n'apprécie guère les gros fichiers, donc si vous dépassez 16ko il vous faudra peut-être l'exécuter manuellement de la manière suivante :
Dans le jeu, ouvrez la console à l'aide de la touche ² et tapez la commande suivante :
- /exec autoexec
Lorsque l'on exécute un fichier, l'extension .cfg n'est pas obligatoire.
Créer un fichier a partir de votre configuration :
- /writeconfig nom_du_fichier.extension
Exemple :
- /writeconfig ma_super_config.cfg
Différence entre .cfg et console
Dans la console :
- /command
Dans les fichier .cfg :
- command
Pour les set et bind à plus d'une commande vous devrez les encadrer de guillemets, comme suit :
- bind X "Say Salut; vstr haha"
Les seta avant les commandes ne sont pas obligatoires.
Lexique
- FPS (Frames par Second). Si RTCW affiche par exemple 50 FPS chez vous, c'est que votre machine est en mesure d'afficher 50 images par seconde. On dit que 25 FPS suffisent pour jouer aisément, "Parce qu'une télévision rafraîchie l'écran 25 fois par secondes"... Oui, une image de télé fonctionne avec seulement 25 FPS, mais la technologie utilisé pour les moniteurs de PC est complètement différente et permet d'afficher des résolutions supérieures à celle d'une télévision (640*480 / 25fps en théorie). Dès 50 FPS, on peut parler à mon avis d'un jeu suffisamment fluide, je préfère personnellement avoir 100 FPS. Plus le FPS est élevé, plus votre machine traitera aisément les données, au détriment de la qualité graphique sur certaines configurations.
- script - un script est un ensemble de commandes exécutées dans un ordre bien précis (pour imager, c'est comme si j'affectai l'allumage automatique de ma télé et la fermeture des volets sur le bouton qui me sert à allumer la lumière de mon salon, ce qui serait bien pratique et me permettrai de gagner quelques minutes le soir quand je rentre tard, vivement le script-binding-domotique...). Dans un script , nous avons la possibilité de configurer une touche pour effectuer plusieurs événements (lancer une grenade, prévenir mes équipiers de dégager le secteur et revenir à l'arme principale, le tout sur une seule touche, d'où l'exemple du bouton de lumière de mon salon). Avec cela, beaucoup de manipulations à exécuter dans le jeu (par exemple le changement d'arme) deviennent plus facile.
Scripting
Le langage
Bind : permet d'associer une touche à une commande. (Ex: /bind TOUCHE "COMMANDE") Unbind : Libère une touche. (Ex: /unbind TOUCHE) UnbindAll : Libère toutes les touches. echo : affiche un texte dans le chat.
Set (ou seta) : Permet de créer une variable et d'associer une ou plusieurs commande à celle-ci. (Ex: /Set NOM_DE_LA_VARIABLE "COMMAND")
Vstr : Exécute une variable. (Ex: /vstr NOM_DE_LA_VARIABLE) +vstr : Exécute 2 variable, s'associe de préférence avec bind, pression = variable_1, relâcher = variable_2 (Ex: /bind X "+vstr variable_1 Variable_2")
Toggle : Permet d'alterner les valeurs 0-1, 1-0 d'une commande, attention uniquement pour les commande n'ayant que les valeur 0 et 1. (Ex: /toggle cg_drawgun)
Cycle : Permet de changer les valeurs de la façon suivante :
- bind X "cycle cg_fov 90 120"
Ceci va, par chaque pression de la touche X, augmenter de 1 la valeur actuelle. Arrivé à 120 il recommencera a partir de 90 et ainsi de suite.
- bind X "cycle cg_fov 90 120 15"
Ceci va, par chaque pression de la touche X, augmenter de 15 la valeur actuelle. Arrivé à 120 il recommencera a partir de 90 et ainsi de suite.
Analyse d’un script
Ces commandes sont la base de tout script, c'est sûrement la chose la plus importante que vous devrez apprendre. Pour vous les expliquer plus facilement nous allons décrypter un script utilisant ces variables:
- set fov90 "cg_fov 90; set fovtoggle vstr fov115;echo fov 90"
- set fov115 "cg_fov 115; set fovtoggle vstr fov90;echo fov 115"
- set fovtoggle "vstr fov90"
- bind x "vstr fovtoggle"
Ce script relativement simple permet grâce à un bind sur la touche "x" de permuter entre un angle de vue de 90 et de 115 degrés.
- set fov90 - donne un nom à la première variable
Ensuite nous allons lui dire quelles variables il doit exécuter (attention, il exécute toute les variables situe entre les " " comme une seule et même variable)
- cg_fov 90 - fixe la variable d'angle de vue sur 90°
- ; - sépare les différentes variables (attention a laisser un espace entre ";" et la variable suivante)
- set fovtoggle vstr fov115 - permute l'exécution de la variable "fovtoggle" de la variable "fov90" sur la variable "fov115".
Pour expliquer plus facilement, après la première pression sur la touche, l'angle de vue se met a 90°, maintenant il faut que lors de la suivante il passe a 115°, donc la variable exécuté passe de "fov90" a "fov115", ce que fais fovtoggle.
echo fov 90 - affiche sur l'écran le texte "fov 90" a l'exécution de la variable
set fov115 - donne un nom à la deuxième variable
cg_fov 115 - fixe la variable d'angle de vue sur 115°
set fovtoggle vstr fov90 - permute l'exécution de la variable "fovtoggle" de la variable "fov115" sur la variable "fov90"
echo fov 115 - affiche sur l'écran le texte "fov 90" a l'exécution de la variable
set fovtoggle - donne un nom à la troisième variable
vstr fov90 - lie l'exécution de la variable "fov90" a celle de "fovtoggle"
bind x "vstr fovtoggle" - attacher exécution de la variable "fovtoggle" à la touche "x"
Attention : Dès que vous avez fixé une valeur, il ne suffit pas d'effacer la ligne simplement dans Wordpad pour annuler le changement. Au lieu de cela vous devez remettre la valeur par défaut pour revenir aux réglages d'origines de ET.
La commande wait
- Wait - Attente d'une instruction.
Cette commande est relativement complexe, mais indispensable dans beaucoup de scripts.
Lors de exécution d'un script, l'ordinateur exécute les différentes commandes à une vitesse généralement trop rapide pour qu’elles s’enchaînent normalement.
Par exemple si vous faites un script pour, à l'aide d'une touche, passer de votre arme à votre pack d'ammo, prendre des munitions et revenir à son arme sans utiliser "wait" :
- Bind X "weaponbank 6; +attack; -attack; weaponbank 3"
Le jeu exécutera les variables à la volée, ce qui fera que le temps de sortir le pack d'ammo dans le jeu, le script sera déjà fini et vous vous retrouvez avec votre pack en mains.
Il faut donc marquer une pause entre chaque commande pour laisser le temps au jeu de l'exécuter.
Là où ça se complique, c'est que la durée du "wait" dépend de la performance de votre machine.
Si vous utilisez par exemple "wait 120", et que votre ordinateur est capable d'afficher 60 FPS (60 images secondes), le système va se mettre en pause pendant 2 secondes.
Pour rajouter une couche, tout ceux qui jouent avec le nombre de FPS à l'écran ont remarqué qu'ils ne sont pas constants, leur nombre varie constamment.
Pour remédier à cela il faut utiliser la variable com_maxfps "valeur", qui limite le nombre de FPS.
Disons que votre ordinateur est capable d'afficher une moyenne de 100 FPS, et qu'il ne descend jamais sous 75. Nous allons faire des pauses d'une seconde entre chaque variable pour que le script s'exécute normalement.
- Bind X "weaponbank 6;set com_maxfps 60;wait 60;+attack; wait 60; -attack; weaponbank 3; set com_maxfps 0"
Mettre com_maxfps sur "0" enlève la limite de 60 FPS et revient à l'affichage maxi de votre ordinateur.
Il faut très bien gérer le "wait" dans un script, car pendant la pause, vous êtes complètement immobile, incapable d'exécuter la moindre action.
Touches "bindables"
Si vous donnez des fonctions aux touches, il est important de savoir comment ces touches doivent être indiquées.
Touches / Nom à mettre dans la config :
Touches de fonctions
F1 / f1
F2 / f2
F3 / f3
F4 / f4
F5 / f5
F6 / f6
F7 / f7
F8 / f8
F9 / f9
F10 / f10
F11 / f11
F12 / f12
Touches de navigations
Inser / ins
Home / home
Page Up / pgup
Page Down / pgdn
Suppr / del
Fin / end
Touches de direction
haut / uparrow
bas / downarrow
gauche / leftarrow
droite / rightarrow
Pavé numérique
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
Point / kp_del
Entre / kp_enter
Plus / kp_plus
Moins / kp_minus
Asterisk / *
Slash / kp_slash
Souris
Bouton gauche / mouse1
Bouton droit / mouse2
Boutton milieu / mouse3
Roulette Scroll Up / mwheelup
Roulette Scroll Down / mwheeldown
Touches alphabétiques
a / a
b / b
c / c
d / d
e / e
f / f
g / g
h / h
i / i
j / j
k / k
l / l
m / m
n / n
o / o
p / p
q / q
r / r
s / s
t / t
u / u
v / v
w / w
x / x
y / y
z / z
Touches numériques
0 / 0
1 / 1
2 / 2
3 / 3
4 / 4
5 / 5
6 / 6
7 / 7
8 / 8
9 / 9
Joystick
seta in_joystick "1"
LES BINDS (pour le déplacement)
Les valeurs pour le joystick sont :
avant : uparrow
arrière : downarrow
gauche : leftarrow
droite : rightarrow
(Attention, selon vos préférences, certains joy sont configurés à l'envers d'un manche à balai d'avion, il faudra alors inverser uparrow et downarrow ...).
Tout le reste est configuré avec des valeurs de bouton, ce qui peut mener loin.
Par exemple, sur un sidewinder 3D pro :
Les 8 boutons sont reconnus de JOY1 (tir) à JOY8.
Le pallonier était reconnu comme JOY 18 et JOY19.
Quant au bouton "hat" et ses 8 directions, ils sont reconnus comme JOY21 à JOY29.
Pour connaître la valeur de bouton attribuée par le jeu à chaque commande du joystick, le mieux est encore d'aller dans le menu du jeu, puis "options">"controls" et passer en revue toutes les commandes du joystick en les attribuants à une action, et de noter ce qui apparaît.
Voici la config de test :
//Pour le Joystick : seta in_joystick "1" seta joy_threshold "0.15" seta in_joyBallScale "0.02" //Pour les axes : bind rightarrow "+moveright" bind leftarrow "+moveleft" bind uparrow "+forward" bind downarrow "+back" //Sur l'axe pallonier : bind JOY18 "+leanleft" bind JOY19 "+leanright" //Les boutons bind JOY1 "+sprint" bind JOY2 "+moveup" bind JOY3 "+prone" bind JOY4 "+movedown //Sur le "hat" : bind JOY28 "weaponbank 2" bind JOY24 "weaponbank 6" bind JOY22 "+activate" bind JOY26 "+reload" //Sur la souris : bind MOUSE1 "+attack" bind MOUSE2 "weapalt" bind MOUSE3 "weaponbank 3" bind MWHEELDOWN "weaponbank 5" bind MWHEELUP "weaponbank 4"
Deux commandes permettent encore d'affiner les réglages du Joystick, livrées avec leur valeur par défaut :
- seta joy_threshold "0.15"
- seta in_joyBallScale "0.02"
La première commande (joy_threshold) sert à régler la "zone morte" du joystick, c'est à dire la distance que doit parcourir la manette avant que l'information soit transmise à l'ordinateur. La valeur par défaut (0.15) rend le joystick très sensible, c'est limite si on ne se déplace pas sans le vouloir. A (0.5), on commence à sentir un petit temps mort entre les straffes ou l'avant-arrière. A vous de la régler à votre convenance selon la sensibilité que vous attendez de votre manette.
La seconde commande, je n'ai pas encore trouvé à quoi elle correspondait. je l'ai triturée dans tous les sens sans voir de différence dans le jeu. Mon niveau d'anglais (joyballscale = échelle de la boule du joystick ???) et de Google font que si une bonne âme veut se dévouer... Enfin, visiblement cela n'a pas l'air d'être une commande indispensable...
"Bonne âme dans le coin"!!! La seconde commande: joyballScale correspond au calibrage d'un trackball. (à vérifier mais même principe que le joystick pour régler la sensibilité).CS.
Source : http://www.enemyterritory.fr/forums/index.php?showtopic=1656
Autres
Caps Lock / capslock
Pause / Pause
Tab / tab
Entre / enter
Espace / space
Single / Quote '
Hyphen / -
Slash / /
Semicolon / semicolon
Egal / =
Guillemet gauche / [
Guillement droit / ]
Backslash /
Virgule / ,
Period / .
Alt / alt
Ctrl / ctrl
Shift / shift
Escape / esc
Attention aux touches "A" , "Q" , "Z" et "W" si les réglages du jeu sont sur "English".
Pseudo
- Seta name "mon nom" - Modifier le pseudo
Sous ET, on a la possibilité de mettre des couleurs dans son pseudo. Voilà quelques codes pour les couleurs (il en existe bien d'autres !) :
^0 = noir
^1 = rouge
^2 = vert
^3 = jaune
^4 = bleu foncé
^5 = bleu clair
^6 = lilas
^7 = blanc
^8 = orange
^9 = gris
