Bon, j'ai mis à jour la config avec des éléments que j'avais oublié hier soir.
Je vais vite parcourir les points importants pour essayer d'éclaircir le truc.
Définition du contenu du PBO et nom du PBO
Ce premier bout défini le nom interne à ArmA de ton PBO ("MAD_addon_unite"), c'est le nom à référencer si tu dois le mettre en pré-requis d'un autre addon.
requiredAddons contient la liste des addons requis par ton addons. Comme tu fais un addons d'unité qui hérite des unités d'ArmA, il faut ajouter au minimum l'addon qui défini les unités de base.
Si par exemple tu utilises les armes du @MAS ou du @CUP, faudra ajouter l'addon en question comme pré-requis.
Code : Tout sélectionner
class CfgPatches
{
class MAD_addon_unite
{
units[] = {"MAD_Unite_F"};
weapons[] = {"MAD_U_Uniforme_1"};
requiredVersion = 0.1;
requiredAddons[] = {"A3_Characters_F_BLUFOR"};
};
};
Ajout d'une faction dans ArmA
Ce bout ci va ajouter une faction pour tes unités. Je pense que le code parle de lui-même.
Les deux points importants:
- Le nom de ta faction "MAD_Faction"
- Camp opfor: Side=0;
Code : Tout sélectionner
class CfgFactionClasses {
class MAD_Faction {
displayname = "Nom de ma faction";
flag = "\MAD_units\ui\flag_faction_co.paa";
icon = "\MAD_units\ui\icon_faction_co.paa";
priority = 10;
side = 0;
};
};
Création de la classe de l'unité
On commence par définir les classes dont héritera notre unité. Ce qui permet de ne pas redéfinir l'ensemble des valeurs liées à une unité.
Et comme ça, lorsque BIS ajoute une bisserie sur les unités, tu ne dois pas le faire, ça vient tout seul.
Code : Tout sélectionner
class CAManBase;
class SoldierEB: CAManBase
{
class EventHandlers;
class Wounds;
};
Ensuite on définit la classe de notre unité, pour faciliter la vie des scripteurs, il vaut mieux commencer les éléments d'un addon par son extension puis suivre la nomenclature de bis.
Le contenu qui défini à quoi ressemble l'unité
Code : Tout sélectionner
scope = 2;
cost = 40000;
facetype = "Man_A3";
faction = "MAD_Faction";
model = "\A3\Characters_F\Civil\c_poloshirt";
genericnames = "AfroMen";
identitytypes[] = {"Head_African", "G_CIVIL_male"};
scope = 0;
sensitivity = 3;
threat[] = {1, 0.1, 0.1};
uniformClass = "MAD_U_Uniforme_1";
vehicleclass = "Afroamerican";
Les éléments obscurs de la classe:
- scope défini la visibilité de l'unité pour ArmA, 0 et 1 signifie qu'on ne peut pas créer l'unité avec createVehicle, 2 permet de créer l'unité.
- cost c'est la valeur de l'unité pour que les IAs définissent la dangerosité de l'unité.
- model on y reviendra, mais c'est ce qui défini l'uniforme de la classe
- genericnames la gamme de noms qu'on va chercher pour l'unité, il faut un peu chercher pour trouver celles qui sont dispos
- identitytypes défini les visages et l'origine ethnique, il faut un peu chercher pour trouver celles qui sont dispos
- uniformClass on y reviendra, il faut le coupler avec le modèle défini plus haut
Définition des armes et équipements:
Code : Tout sélectionner
weapons[] = {"arifle_TRG21_F", "Throw", "Put"};
respawnweapons[] = {"arifle_TRG21_F", "Throw", "Put"};
magazines[] = {"30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "HandGrenade", "HandGrenade", "SmokeShell", "SmokeShell", "SmokeShell", "SmokeShell"};
respawnmagazines[] = {"30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "HandGrenade", "HandGrenade", "SmokeShell", "SmokeShell", "SmokeShell", "SmokeShell"};
items[] = {"FirstAidKit","FirstAidKit"};
respawnitems[] = {"FirstAidKit","FirstAidKit"};
linkeditems[] = {"V_TacVest_blk"};
respawnlinkeditems[] = {"V_TacVest_blk"};
Concernant le uniformes
Les uniformes sont un point difficile d'ArmA.
Le principe est qu'à chaque uniforme correspond un modèle 3D appliqué à l'unité. Dans notre cas, c'est celui défini dans "model".
Donc, lorsque tu vois un uniforme dans l'Arsenal, ce qui est important, ce n'est pas le nom, mais le modèle de cet uniforme.
Pour obtenir le chemin complet du modèle, le plus simple c'est de placer l'unité dans l'éditeur, lancer le script donné par l'arsenal, ensuite tu ouvres la console de débogage et tu exécutes le code suivant:
La deuxième valeur devrait te donner le chemin complet du P3D.
Une fois que tu as cette valeur, tu peux remplir le champ "model".
Vient ensuite le champ "uniformClass", là c'est un peu plus subtil.
Dans mon exemple, j'ai pris le polo/t-shirt des civils, comme c'est un vêtement civil, tu ne peux pas l'appliquer à une unité opfor.
Si l'unité que tu crées et l'uniforme sont de la même faction, c'est facile, tu mets le nom de l'uniforme. Si ce n'est pas le cas, il faut créer un uniforme dans la bonne faction. C'est ce que fait le code suivant:
Code : Tout sélectionner
class cfgWeapons
{
class Uniform_Base;
class UniformItem;
class ItemCore;
class ItemInfo;
class MAD_U_Uniforme_1: Uniform_Base {
displayname = "Nom uniforme pour rebelle";
model = "\A3\Characters_F\Common\Suitpacks\suitpack_blufor_diver";
picture = "\A3\characters_f\data\ui\icon_U_Citizen_ca.paa";
scope = 2;
class ItemInfo: UniformItem {
containerclass = "Supply30";
mass = 30;
uniformclass = "MAD_Unite_F";
uniformmodel = "-";
};
};
};
Aucunes des informations ici ne sont vraiment utiles à part:
Dans ton unité, tu as choisis un modèle, souvent ce modèle est accompagné d'une texture prédéfinie dans le modèle qu'on peut écraser par une autre texture (c'est ça le principe des addons de retextures).
Mais là on est hors sujet.
Donc, tu ne dois te soucier que d'une chose, que le nom dans "uniformclass" corresponde au nom de l'unité que tu as définie.
Ensuite, pour créer d'autres unités avec le même uniforme, il suffit d'hériter de cette première unité et d'omettre tout ce que tu ne dois pas redéfinir.
Par exemple:
Code : Tout sélectionner
class MAD_Unite_2_F: MAD_Unite_F {
weapons[] = {"arifle_TRG21_F", "Throw", "Put"};
respawnweapons[] = {"arifle_TRG21_F", "Throw", "Put"};
magazines[] = {"30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "HandGrenade", "HandGrenade", "SmokeShell", "SmokeShell", "SmokeShell", "SmokeShell"};
respawnmagazines[] = {"30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag", "HandGrenade", "HandGrenade", "SmokeShell", "SmokeShell", "SmokeShell", "SmokeShell"};
items[] = {"FirstAidKit","FirstAidKit"};
respawnitems[] = {"FirstAidKit","FirstAidKit"};
linkeditems[] = {"V_TacVest_blk"};
respawnlinkeditems[] = {"V_TacVest_blk"};
};