
Pas grand chose mais on ne sait jamais !

[TUTO][Script] Spawn un objet de manière aléatoire
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.
- 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.)
Dans un premier temps nous allons définir des "variables" :
Code : Tout sélectionner
_cache = "Box_East_Wps_F";
_cachePos = (selectRandom [cachePos01, cachePos02, cachePos03]);
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
Code : Tout sélectionner
cacheArme01 = createVehicle [_cache , _cachePos modelToWorld [0, 0, 0], [], 0, "CAN_COLLIDE"];
sleep 0.5;
{deleteVehicle _x} forEach [cachePos01, cachePos02, cachePos03];
_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 :
Code : Tout sélectionner
_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];
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)