Question sur une fonction "mystère" pour la création d'un script

Bonjour à toutes et à tous,

j’ai actuellement une petite question donc je viens demander de l’aide à quelqu’un qui aurait peut-être trouvé une fonction pour ce que je souhaiterais faire.

Je créer actuellement un petit script où mon but est de faire spawn des items avec une valeur random dans différents objets (par classname).

Après plusieurs recherches je suis parti sur une fonction CBA

CBA_fnc_addMagazineCargo

qui semble pas trop mal et fonctionnelle mais à condition de faire spawn des items sur un objet nommé, hors ce n’est pas mon objectif.

Actuellement mon script ressemble à ceci :

_random = random 10;
_item = "6Rnd_GreenSignal_F";
_object = "IG_supplyCrate_F"; // Non fonctionnel avec le classname

while {true} do {
    if (_object  canAdd _item ) then {
       [_object , _item, _random , false] call CBA_fnc_addMagazineCargo;
    };
sleep 150;
};

Donc je souhaitais savoir s’il y avait une fonction Arma 3 qui permettait de faire spawn des items via classname ou alors trouver une alternative ^^

Merci d’avance :wink:

Bonsoir @Vescoze.
Je pense que ce que tu recherche est par là
AddItemCargo
AddItemCargoGlobal

Bonsoir @147panda :wink: Merci pour ta réponse.

J’avais déjà essayé les fonctions:

AddItemCargo
et
AddItemCargoGlobal

Mais malheureusement c’est non fonctionnel dans ma situation.

Il faut dans un premier temps crée l’objet avec le classname que tu veut avant de pouvoir lui mettre des items dedans.
CreateVehicle

J’avais compris ça ^^ cependant je souhaiterais spawn des items dans des objets qui sont déjà spawn (si c’est possible).

Les objets sont spawn comment ? Script ou placée via l’éditeur ?

Sur une map de base.

On te reclame un obj, pas un className … il faut designer une cible, une entite.
https://community.bistudio.com/wiki/allMissionObjects
https://community.bistudio.com/wiki/nearestObject
https://community.bistudio.com/wiki/cursorTarget

indique un obj puis :

If (typeof _object isEqualTo "IG_supplyCrate_F") then ...

exemple :

_random = random 10;
_item = "6Rnd_GreenSignal_F";
_object = cursortaget; // l objet vise par ton player

while {typeof _object isEqualTo "IG_supplyCrate_F"} do {
    if (_object  canAdd _item ) then {
       [_object , _item, _random , false] call CBA_fnc_addMagazineCargo;
    };
sleep 150;
};

Merci pour la précision. Je vais voir ce que je peux faire avec tes indications mais je pense avoir une idée. Bonne soirée :wink:

Le “typeOf” te permets justement d’utiliser une Var.

Pas vraiement, le typeOf te permet de recuperer le classname de l objet en string … dans notre pour le comparer au classname de l obj qui nous interesse:

tant que {(recuperation du classname  de l objet vise) est =
"IG_supplyCrate_F"} faire { ....

Et pourquoi pas récupérer l’objet par une global variable ?
Un peu à la fedBank, plus simple et au moins le script pourra tourner en boucle comme il le souhaite :smiley:

Tout depend ce qu il cherche a faire …

L inconvenient d une global, c est qu elle est stocke en memoire ! Et pour l opti, c est pas top.
L interet d une global, c est si tu l appel dans un autre script, sinon c est une perte de performance pour du vent, surtout dans une boucle …

Perso j utiliserai une local avec https://community.bistudio.com/wiki/allMissionObjects

  _obj = allMissionObjects typeOf  "IG_supplyCrate_F"

avec un magnifique
foreach
https://community.bistudio.com/wiki/forEach