Aujourd’hui nous allons voir comment faire spawn (apparaître) un objet de manière aléatoire sur la carte, et de deux façons différentes.
La première très basique en utilisant des marqueurs, la deuxième un peu plus complexe en utilisant quelques lignes de codes et l’éditeur 3D (EDEN) !

A quoi cela sert?
Imaginer un scénario coop avec des caches d’armes que vous voulez faire apparaître aléatoirement à différentes positions, histoire de pouvoir rejouer la mission !
Ou encore un scénario PvP avec une bombe/cache à détruire qui apparaîtra à différents endroit pour que chaque parties soient différentes !

Méthode 01 : Utilisation de marqueurs

Très simple ici, tout ce passe sur l’éditeur :

  • Placez votre objet sur la carte, exemple une cache d’arme.
  • Placez X marqueurs vides à coté de l’objet (vide pour qu’ils ne soient pas visible une fois en jeu)
  • Groupez les marqueurs avec l’objet (avec l’outil de groupement, il faut relier les marqueurs à l’objet tout simplement)
  • Une fois les marqueurs reliés il faut les placer sur la carte la ou vous souhaitez que l’objet apparaisse en début de mission.

A savoir :
– Il y à une chance pour l’objet apparaisse sur sa position actuelle. (tout comme les marqueurs c’est une position de spawn possible pour l’objet)
– L’objet sera forcément « posé » au sol, donc il faut éviter de mettre les marqueurs dans des bâtiments, sauf si vous le voulez au RDC.

Méthode 02 : Utilisation de script + EDEN

  • En jeu, très simple avec l’éditeur 3D, placez des objets à différents endroits, la ou vous souhaitez que votre cache d’arme apparaisse. Je vous conseille d’utiliser des marqueurs 3D, je n’ai plus le nom exacte mais c’est simplement une petite flèches 3D (utilisée dans les tuto arsenal virtuel – genre ceci), ou tout autre petit objet.
  • Nommez ces objets : exemple : cachePos01, cachePos02, … (en sachant que normalement, si vous nommez le premier « cachePos01 » et le copiez/coller, la copie sera nommée « cachePos02 » automatiquement.)

Maintenant, rendez-vous dans votre init.sqf (ou tout autre script qui pourra être appelé plus tard dans la partie)

Dans un premier temps nous allons définir des « variables » :

_cache = "Box_East_Wps_F";
_cachePos = (selectRandom [cachePos01, cachePos02, cachePos03]);

Ici on crée des variables, elle permettent de gagner du temps sur la rédaction du script et de le rendre plus propre.
La première ligne défini la variable _cache : Quel vas être l’objet qui vas apparaître
La seconde ligne défini les positions possible :
_cachePos défini la position qui serra utilisée.
(selectRandom […]); est une fonction qui permet de choisir aléatoirement[cachePos01,…] sont les différents objets à choisir aléatoirement

Dans un second temps on fait spawn l’objet sur la position aléatoire (défini juste avant) puis on supprime les objets qui servent à définir les positions de spawn

 


cacheArme01 = createVehicle [_cache , _cachePos modelToWorld [0, 0, 0], [], 0, "CAN_COLLIDE"];
sleep 0.5;
{deleteVehicle _x} forEach [cachePos01, cachePos02, cachePos03];

 

Première ligne : On crée une cache d’arme qui vas s’appeler « cacheArme01 » via la fonction createVehicle.
_cache défini l’objet à créer.
_cachePos défini la position de création de l’objet.
Le reste permet de créer l’objet en prenant en compte l’environnent, de cette manière vous pouvez faire spawn votre cache au premier étage d’un bâtiment, sans ça il apparaîtrait au niveau du sol, donc au RDC.
Deuxième ligne : On attends 0.5 seconde, histoire d’être sûr que l’objet soit bien apparu
Troisième ligne :
deleteVehicle _x : On exécute la commande « deleteVehicle  » pour chaque _x (donc on vas supprimer les x véhicule)
forEach : pour chaque[cachePos01, cachePos02, cachePos03]; : on défini les véhicule à supprimer, donc _x.
Donc ici on supprime toute les positions cachePos, histoire de ne pas avoir une flèche 3D en jeu.

Récap du script complet :


_cache = "Box_East_Wps_F";
_cachePos = (selectRandom [cachePos01, cachePos02, cachePos03]);
cacheArme01 = createVehicle [_cache , _cachePos modelToWorld [0, 0, 0], [], 0, "CAN_COLLIDE"];
sleep 0.5;
{deleteVehicle _x} forEach [cachePos01, cachePos02, cachePos03];

Voilà, en toute logique vous avez une cache d’arme qui spawn sur un endroit aléatoire que vous avez choisi dans l’éditeur 3D, donc beaucoup plus précis qu’avec de simple marqueurs !
Et si vous voulez vous amusez vous pouvez utiliser cette méthode pour faire apparaître un objet aléatoire sur une position aléatoire ! (Il suffira de définir une sélection aléatoire à la première ligne, comme pour les position)