Envie de parler avec les autres membres de la communauté ? Alors venez vous connecter, vous vous sentirez moins seul !
Envie de parler avec les autres membres de la communauté ? Alors venez vous connecter, vous vous sentirez moins seul !
Rejoignez-nous sur le discord Urban Terror France !
Statistiques globales et en temps réel de la totalité des serveurs d'Urban Terror. Suivez l'évolution du nombre de joueurs sur Urban Terror !
Guide rapide concernant l'inscription sur le site officiel du jeu. Créez ainsi votre compte joueur qui permet d'être authentifié sur les serveurs de jeu de la 4.2 !
Il est conseillé avant tout la lecture de ce tutoriel sur la gestion des fichiers de configuration.
Le scripting sous Urban Terror permet l'écriture de fichiers de configuration qui complètent les fonctionnalités de base du jeu, et offrent certaines améliorations du gameplay, dont la seule limite est la créativité du joueur. Vous n'apprendrez pas de scripts tout prêts ici : seulement comment rédiger vos propres scripts. Vous pouvez trouver une liste de scripts pré-rédigés ici.
Pour bien comprendre le fonctionnement d'une ligne de script, il convient d'analyser une ligne basique.
En voici une :
bind KP_INS "say_team Flag IN DANGER."
Cette ligne est tirée de ma .cfg. Elle permet d'annoncer en teamchat que le drapeau risque d'être pris par un attaquant. J'ai enlevé les codes couleurs pour plus de lisibilité, mais vous pouvez les utiliser comme expliqué dans ce tutoriel.
Analysons :
Les guillemets permettent de délimiter l'exécution de la commande. N'oubliez pas : il ne peut y avoir qu'une seule paire de guillemets par ligne, même lorsque plusieurs commandes sont définies sur une même ligne.
Bind est bien sûr une commande majeure, que vous connaissez déjà si vous avez suivi le tutoriel sur les binds radios. Ici, j'ai utilisé un say_team simple, puisqu'il n'existe pas de séquence radio prédéfinie qui corresponde à ce dont j'ai besoin, et d'une manière générale, je préfère utiliser des say_team silencieux à des ut_radio qui ont tendance à polluer l'environnement sonore et agacer les coéquipiers.
Enfin, le KP_INS correspond en réalité à la touche "zéro" de la zone numérique à droite d'un clavier classique.
Astuce : comment obtenir le nom d'une touche
Selon votre système d'exploitation et votre clavier, Urban Terror ne va pas reconnaître les touches de la même manière. C'est ce qu'on appelle le mappage d'un clavier, et il est très spécial sur Linux par exemple.
Pour obtenir le nom que le jeu utilise pour reconnaître une touche, il suffit d'aller dans le menu contextuel du jeu, dans le panneau des commandes, puis de sélectionner une action au hasard, et pressez la touche comme si vous vouliez l'assigner. Le nom de la touche telle qu'Urban Terror la reconnaît s'affichera, et c'est exactement ce nom qu'il faudra utiliser dans votre configuration.
Dans l'exemple ci-dessous, on apprend que sur la plupart des systèmes Windows, la touche "M" s'appelle "SEMICOLON".
Il est également possible de faire exécuter par le même script plusieurs actions, avec l'utilisation du point-virgule, comme ceci :
Comme indiqué plus haut, il n'est possible que d'utiliser un seul jeu de guillemets par ligne : dans notre exemple, on a utilisé une chaîne de caractères après le say_team, mais il faut tout de même laisser cette chaîne sans guillemets. Le jeu saura qu'il faut interpréter tout ce qu'il y a après la commande say_team comme la phrase à afficher, jusqu'au prochain point-virgule ou le guillemet fermant.
La commande ut_itemdrop est une commande spéciale qui permet de lâcher l'item sélectionné ou demandé. Ici, l'item demandé est "flag", donc le drapeau. Cette ligne de script permet donc de lâcher le drapeau, et en même temps, d'afficher une ligne à ses coéquipiers pour les avertir que le drapeau a été lâché.
Le Q3 engine reconnaît de nombreuses commandes, qui pour certaines peuvent se révéler très utiles.
- bind : nous venons de la voir, c'est la commande principe qui permet de créer un bind, c'est-à-dire assigner une touche à une ou plusieurs actions spécifiques.
- exec : cette commande est expliquée plus en détails dans ce tutoriel. Elle permet d'exécuter un fichier de configuration déterminé. Elle peut être utilisée naturellement dans un script.
- wait : il s'agit d'une commande qui permet d'indiquer au jeu d'attendre un certain temps (indiqué en millisecondes) avant d'effectuer l'action suivante. Elle doit être utilisée avec parcimonie, car pendant tout le temps spécifié, vous ne pourrez "rien" faire, votre personnage sera bloqué.
- echo et ut_echo : ces commandes permettent d'afficher un message à destination de l'utilisateur uniquement. echoaffiche un message dans la console (intérêt assez limité), et ut_echo permet d'afficher un message en haut de l'écran. Ces messages sont visibles uniquement par vous, et n'apparaissent même pas dans les démos. Ils vous permettent d'obtenir confirmation de l'exécution d'un script par exemple. Personnellement je les utilise lorsque je switch entre mes différentes configurations. L'utilisation de codes couleur est possible.
- toggle : c'est une commande très intéressante. Elle permet de créer une sorte de touche "marche / arrêt" pour une option qui est normalement activée ou désactivée. Ainsi, toutes les variables qui peuvent avoir comme valeur "0" ou "1" (ce qu'on appelle pompeusement un booléen) peuvent être actionnées par un toggle. Ainsi, si comme moi vous n'avez pas besoin d'un affichage constant du netgraphe, il vous suffit de réperer la variable qui gère l'affiche du netgraphe : c'est cg_lagometer.
La commande qui permet de toggler l'affichage du netgraphe sera donc :
bind x "toggle cg_lagometer"
Autre exemple : si vous voulez faire en sorte qu'en appuyant sur une touche, votre personnage ne fasse que marcher, et en réappuyant dessus, il ne fasse que courir. La variable à utiliser est cl_run.
La commande sera donc :
bind x "toggle cl_run"
Simple, non ? Dans l'exemple précédent, l'avantage est une économie de touches est une plus grande simplicité, car il ne sera pas nécessaire de maintenir le bouton marche enfoncée lorsque l'on souhaite marcher plutôt que courir (utile également pour les clavier ne disposant pas d'un antighosting).
À noter que dans les deux exemples indiqués, il faut remplacer "x" par la touche de votre choix.
- weapon : c'est une des très nombreuses commandes qui vous seront utiles en scripting. weapon permet de directement sélectionner une arme par son numéro d'identification. Reportez-vous à cette page pour obtenir les numéros relatifs à chacune des armes.
- ut_weaptoggle : c'est également une autre commande de sélection d'arme. Personnellement, je la préfère, car elle est plus générique et plus efficace. Elle vous permet de sélectionner l'arme qui correspond à la catégorie spécifiée (et comme vous ne pouvez jamais avoir qu'une seule arme par catégorie, vous comprenez l'intérêt...). Les différentes catégories possibles sont primary (arme principale), secondary (arme secondaire), sidearm (arme de poing), grenade,bomb (utile pour prendre directement la bombe en BM) et knife (le couteau).
Ainsi, la commande que tous les jours ont dans leur .cfg est en général :
bind x "ut_weaptoggle knife"
(Il n'est en effet pas possible de sélectionner directement le couteau par le scroll, ce qui explique la nécessité d'un bind.)
À ce stade, je vous conseille fortement la lecture de la documentation traduite en français pour en apprendre plus sur les différentes commandes du jeu.
Voyons maintenant comme utiliser des scripts plus complexes, et qui permettent d'exécuter plusieurs commandes de façon successive, avec l'utilisation de la même touche. Toutefois, le scripting sous Quake 3 n'est pas une programmation évènement (déclencher tel script lors de tel ou tel évènement), et ne permet pas les booléens ou les comparaisons (techniques bien connues des développeurs : if, or, etc.). Il n'est possible que d'exécuter des scripts écrits avec des variables connues à l'avance, de façon très linéaire.
Toutefois, vous verrez qu'il permet de créer des scripts vraiment très utiles.
Deux commandes sont à connaître :
- set : Elle permet simplement de définir une variable. Vous pouvez la trouver dans votre q3config.cfg, sous la forme de "seta". Il s'agit de la même commande, bien que seta est généralement utilisé dans les fichiers principaux de configuration, puisque "seta" indique au moteur de déclarer la variable et de l'archiver (alors que "set" n'archive pas la variable). [Il existe également les commandes "sets" qui marque la variable comme une information serveur, "sett" qui déclare la variable comme un outil ("tool") et "setu" qui déclare la variable comme une information utilisateur : ces commandes ne sont toutefois pas utilisées sous UrT de nos jours.]
- vstr : Cette commmande permet d'assigner à une variable le contenu d'une commande, et non une simple chaîne de caractères ou une valeur, comme on l'a pu voir dans la partie 1 de ce tutoriel.
Il n'est pas aisé de comprendre le principe de prime abord, mais il vous suffira de bien lire les exemples ci-dessous pour rapidement en assimiler le fonctionnement. Il vous sera peut-être nécessaire de relire plusieurs fois.
Je vous conseille également pour la rédaction de vos propres scripts de faire un brouillon à la main sur une feuille de papier, en séparant bien les différentes parties, pour vous assurer qu'elles coïncident les unes avec les autres.
Voyons un premier exemple.
Il s'agit d'un script extrêmement simple, qui permet d'activer l'enregistrement d'une démo avec la touche F12. Une fois l'enregistrement entamé, il est possible d'arrêter cet enregistrement, et ce avec la même touche. En effet, le principe même d'un script est de faire évoluer le contenu d'une variable ligne après ligne, en exécutant à chaque fois une commande différente. Cela permet plus de simplicité pour l'utilisateur, et surtout d'économiser des touches. On aurait pu ainsi utiliser deux touches à la place d'un script plus avancé : une touche pour lancer l'enregistrement, l'autre pour l'arrêter. Voyons comment rédiger un tel script.
Voici le script en brut :
set record_demo "vstr record_demo_start"
set record_demo_start "set record_demo vstr record_demo_stop ; recorddemo"
set record_demo_stop "set record_demo vstr record_demo_start ; stoprecord"
bind F12 "vstr record_demo"
La première ligne permet de déclarer la variable record_demo, qui sera ce que j'appelle la variable "navette" : elle permet de passer d'une ligne à l'autre du script, à chaque fois que l'on appuie sur le bind en question, car c'est à chaque fois cette variable qui est modifiée pour contenir la ligne suivante. Ceci est rendu possible grâce à l'utilisation de la commande vue plus haut "vstr".
La dernière ligne contient le bind qui va activer l'ensemble du script. En réalité, c'est bien le contenu de la seule variable record_demo qui est exécuté à chaque fois.
Il faut bien avoir à l'esprit que toutes les variables existent en même temps pour le jeu (ici : record_demo,record_demo_start et record_demo_stop), car elles sont toutes déclarées d'emblée à l'exécution du fichier .cfg. C'est simplement la variable navette qui va "recevoir" le contenu des deux autres variables, qui elles-mêmes contiennent les commandes que l'on souhaite exécuter (ici : recorddemo pour lancer l'enregistrement, et stoprecord pour l'arrêter : ce sont toutes les deux des commandes internes à Urban Terror).
Les numéros en orange vous indiquent dans quel ordre est en fait exécuté le script en jeu (d'abord par le bind, puis par les lignes, une à une).
Maintenant, compliquons un peu les choses, avec l'analyse d'un script qui mélange deux séries de variables. Il s'agit d'un script que j'aime beaucoup (inspiré par Kaolian), et qui permet en fait de modifier son pseudo sans passer effectivement par tous les pseudos contenus dans le script. En clair, vous pouvez afficher en interne les différents pseudos et ne mettre que celui que vous désirez (les autres personnes sur le serveurs ne verront donc pas vos autres alias ou tags).
Le voici :
set navette "vstr nick_1"
set changement_nick "vstr nick_1"
set nick_1 "set navette vstr nick_2 ; set changement_nick set name Jean-Michel ; ut_echo Jean-Michel"
set nick_2 "set navette vstr nick_3 ; set changement_nick set name Marcel ; ut_echo Marcel"
set nick_3 "set navette vstr nick_1 ; set changement_nick set name Gerard ; ut_echo Gerard"
bind F9 "vstr navette"
bind F10 "vstr changement_nick"
Avec l'analyse ci-dessous, vous en comprendrez facilement le fonctionnement. La touche F9 permet de faire exécuter les lignes les unes après les autres, en affichant automatiquement le nom actuellement "en sélection" au moyen de la commande ut_echo. La touche F10 actionne ladite variable, qui elle-même fait changer la valeur de la variable "name" (variable interne) avec le pseudo souhaité, ce qui a pour effet de changer votre pseudo en jeu.
Certaines commandes peuvent, ou doivent être utilisées avec un + (ou un -) devant leur nom dans les binds. C'est notamment le cas de la commande +attack. Le rajout du + devant le nom de la commande dans un bind signifie que l'action doit être effectuée tant que l'on appuie sur la touche en question.
Exemple :
bind MOUSE1 "+attack"
Dans ce bind, la commande +attack est effectuée tant que l'on appuie sur MOUSE1, et elle s'arrête dès que l'on relâche ce bouton.
Lorsque que l'on utilise un + devant une commande ailleurs que dans un bind, par exemple dans une ligne d'un script, la commande sera effectuée tant qu'elle ne sera pas annulée. C'est à ça que sert le -.
Exemple, si vous tapez dans la console :
/+attack
La commande +attack sera effectuée indéfiniment tant qu'on ne l'aura pas annulée, en tapant /-attack.
Cela peut par exemple être utilisé dans un script pour exécuter des actions pendant un certain temps.
Le + peut également être utilisé avec vstr. Dans ce cas la syntaxe devient +vstr <variable1> <variable2>. Cela permet d'effectuer les actions définies dans variable1 (avec set comme vu précédemment) tant que l'on appuie, puis d'effectuer les actions définies dans variable2 lorsque l'on relâche.
Exemple :
set zoom1 "ut_zoomin"
set zoom2 "ut_zoomreset"
bind MOUSE2 "+vstr zoom1 zoom2"
Ce script permet donc de zoomer lorsque l'on appuie sur MOUSE2, et de dézoomer lorsque l'on relâche MOUSE2.
Voilà, avec l'aide de la documentation, vous devriez être capable de rédiger vos propres scripts. N'hésitez pas à demander de l'aide sur le forum !
Ce bref tutoriel va vous expliquer les bases du scripting sous Q3 Urban Terror (versions 4.x). Il part des bases de l'écriture d'une ligne de configuration, jusqu'à l'explication de scripts récursifs.
None »
62.210.116.236:27964
Carte actuelle : None
None / None joueurs connectés
Dernière mise à jour : il y a 4 ans, 12 mois