====== Création d'un botobject ======
On désigne sous le terme de botobject les objets dont le datasheet est de type .creature sans IA particulière ni interaction prévue, qui servent généralement à placer du décor.
{{ :fr:tonneaux.jpg?direct&400 |Georges, tout content de ses nouveaux tonneaux}}
Nous allons prendre un exemple de botobject très simple, un classique du genre, un tonneau. Puis envisager le cas où nous aurons à en créer plus d'un, de façon à améliorer notre flux de production et, également, économiser sur les tailles des fichiers.
===== Création simple =====
Pour pouvoir le faire apparaître, il suffit d'indiquer ces renseignements :
Nous allons détailler ci-dessous les différents éléments que nous avons indiqués.
==== MovementSpeeds ====
=== Walkspeed ===
Vu que c'est un objet statique, on met la valeur à 0.
=== Runspeed ===
Vu que c'est un objet statique, on met la valeur à 0.
==== Equipment ====
=== Body ===
== Item ==
C'est là qu'on indique le fichier 3D qui sera appelé pour représenter notre botobject. Ici, ce sera ''barrel_01.shape''. On peut, le cas échéant utiliser un système de particules.
== Texture ==
Cette entrée n'est pas obligatoire si le shape n'a qu'une texture ou si on applique à un objet multitexturé sa texture de base. Dans le cas contraire (voir le [[fr:multitexturage|multitexturage ici]]), on peut indiquer les variation (selon le nombre de textures dans le shape). Les valeurs possibles nous sont indiquées par [[fr:rcdstyp_creature_texture_equipment]] :
* "Season" (valeur=-1)
* "Default" (valeur=0)
* "Lacustre/Low Quality/Young" (valeur=0)
* "Desert/Medium Quality/Normal" (valeur=1)
* "Jungle/High Quality/Old" (valeur=2)
* "PrimR" (valeur=3)
* "goo" (valeur=4)
Nous choisissons la valeur "Desert/Medium Quality/Normal" pour que notre tonneau ait la seconde texture, vu que c'est un fichier multitexturé.
==== Fame ====
Vu qu'aucune interaction n'est prévue avec notre tonneau, pas besoin de s'encombrer des renommées, on indique "none"
==== 3d data ====
Cette section semble un peu capricieuse, des tests complémentaires sont nécessaires.
=== Display OSD ===
La valeur "false" permet de ne pas afficher le botobject sur l'OSD.
=== DisplayInRadar ===
La valeur "false" permet de ne pas afficher le botobject dans le radar.
=== DisplayName ===
La valeur "false" permet de ne pas afficher le nom du botobject au-dessus de lui.
=== DisplayBars ===
La valeur "false" permet de ne pas afficher les caractéristiques du botobject au-dessus de lui.
==== Collision ====
=== NotTraversable ===
La valeur "true" permet de bloquer le passage à travers ce botobject.
=== CollisionRadius ===
On indique en mètres le rayon de collision, si notre objet est cylindrique pour celle-ci. Sinon on remplit les deux champs suivants.
=== Length ===
On indique en mètre la longueur de notre objet, si il est parallélépipédique.
=== Width ===
On indique en mètre la largeur de notre objet, si il est parallélépipédique.
=== Height===
On indique en mètre la hauteur de notre objet.
==== Properties ====
=== Selectable ===
La valeur false permet d'empêcher la sélection du botobject.
=== Attackable ===
La valeur false permet d'empêcher l'attaque du botobject.
=== Curativable ===
La valeur false permet d'empêcher de soigner le botobject.
=== Turn ===
La valeur false permet de faire que l'objet ne tourne pas quand on clique dessus (pour une mission par exemple).
Et voilà nous avons un magnifique tonneau prêt à apparaître dans le Khanat.
===== L'héritage =====
Si on veut faire un second tonneau, avec une texture différente (vu que le shape en contient plusieurs), ce serait dommage de devoir copier l'intégralité des indications vu que les deux tonneaux en partagent pas mal (toutes, sauf celle de la texture en fait). Mais on peut en profiter pour créer un parent qui sera partagé par tous les botobjects de base, vu que seul le shape, et les tailles de collision changent.
==== Création du parent ====
On va donc créer un parent qui contient toutes les informations constantes pour les botobjects.Cela ne nous empêchera pas de modifier quelques paramètres au sein d'un botobject, la valeur héritée du parent étant toujours écrasée par celle de l'enfant en cas de redondance.
On pourra donc rendre un botobject sélectionnable en mettant la valeur [[#selectable]] à "true" dans sa datasheet enfant.
Par convention, on utilise un underscore comme premier caractère de nom. Ainsi, on sait qu'il ne sert à rien d'utiliser directement cette datasheet dans une primitive ou un script, les informations sur la créature ne sont pas complètes.
==== Création des enfants ====
Nous pouvons créer deux tonneaux (vu que notre shape contient deux textures) qui hériteront de ce parent juste en indiquant le nom du parent au début de la datasheet :
Le second avec la seconde texture (et pas celle par défaut) :
On pourrait aller encore plus loin, si on prévoyait d'avoir énormément de types de tonneaux, en faisant un parent _parent_tonneau.creature, qui hériterait de _parent_botobject.creature et qui comporterait toutes les informations sauf celles de texture. Il n'y aurait plus qu'à créer alors les différents tonneaux héritant de _parent_tonneau.creature, mais ayant le paramètre ''texture'' indiqué pour chaque.
===== L'affichage du nom =====
Une fois toutes ces opérations effectuées, il est préférable de pourvoir notre objet d'un nom dans les différentes langues. On veillera donc à créer une entrée dans ''creature_words_wk.txt'' dans le répertoire ''work'' avant de lancer le pipeline de traduction. L'Id de cette entrée est le nom de notre fichier, sans son extension. Pour nos deux tonneaux, nous aurons donc deux entrées :
* barrel_powder
* barrel_closed
{{tag>creature}}