Français Solved Problème de nombre d'items avec le gutAnimal.sqf

  • Auteur de la discussion Auteur de la discussion cadwella
  • Date de début Date de début

cadwella

User
17/2/24
119
5
2
800
Hello !
J'essaie de mettre en place un système de craft/chasse améliorer en récoltant plusieurs items sur les animaux tuer lors d'une chasse.
Dans mon fn_gutAnimal.sqf j'ai mis ceci par ex :
case "Edaly_Crocodile": {_displayName = localize "STR_ANIM_Croco"; _item = "croco_raw","croco_skin";};

Mes items sont bien renseigner dans mon config_vitems.hpp :
class croco_raw {
variable = "crocoRaw";
displayName = "STR_Item_CrocoRaw";
weight = 2;
buyPrice = -1;
sellPrice = 95;
illegal = true;
edible = -1;
drinkable = -1;
icon = "\026_core\icons\ico_rabbitRaw.paa";
};

class croco_skin {
variable = "crocoSkin";
displayName = "STR_Item_CrocoSkin";
weight = 2;
buyPrice = -1;
sellPrice = 95;
illegal = true;
edible = -1;
drinkable = -1;
icon = "\026_core\icons\ico_crocoskin.paa";
};

Mais quand je chasse le croco je n'ai que l'item croco_raw qui m'est donné.
De plus comment faire pour que plusieurs items soit donné au joueurs ?
Par ex 2 croco_raw et 3 croco_skin
Merci pour votre aide 🙂

Posté par @.mikelima via discord.
 
Solution
Hello! La syntaxe n'est pas bonne ici : _item = "croco_raw","croco_skin";

Pour en mettre plusieurs il faudrait modifier tous les items comme ça :
Code:
_items = [[ "ITEM" , QUANTITEE ]];
Pour ton exemple :
Code:
_items = [["croco_raw",2],["croco_skin",3]];

Puis à la fin de ton fn_gutAnimal.sqf trouve ces lignes :
Code:
if ([true,_item,1] call life_fnc_handleInv) then {
    deleteVehicle _animalCorpse;
    titleText[format [(localize "STR_NOTF_Guttingfinish"),_displayName],"PLAIN"];
} else {
    titleText[(localize "STR_NOTF_InvFull"),"PLAIN"];
};
et remplace-les par :
Code:
_gotItem = false;

{
    _class = _x select 0;
    _qty = _x select 1;
    if ([true,_class,_qty] call life_fnc_handleInv) then {...
--- Ce message a été généré automatiquement par ChatGPT, le contenu peut être incorrect. Veuillez lire le message avec précaution ! ---

Bonjour @.mikelima,

Il semble que votre script actuel ne donne que l'objet "croco_raw" lorsque vous chassez un crocodile. Pour obtenir plusieurs articles, vous devez modifier votre script pour générer un nombre aléatoire d'articles ou spécifier explicitement la quantité. Vous pouvez le faire en utilisant la fonction "setVariable" pour définir le nombre d'articles que le joueur reçoit.

Voici un exemple de code pour vous aider :
Code:
case "Edaly_Crocodile": {
    _displayName = localize "STR_ANIM_Croco";
    _items = ["croco_raw", "croco_raw", "croco_skin", "croco_skin", "croco_skin"];
    {
        _item = _x;
        _player addItem _item;
    } forEach _items;
};

N'oubliez pas d'adapter le script à vos besoins spécifiques. J'espère que cela vous sera utile. Bonne chasse !

--- Pour continuer la discussion avec ChatGPT, cliquez sur "Répondre" en bas à droite de ce message. Sinon, attendez que quelqu'un vous réponde. ---
 
Hello! La syntaxe n'est pas bonne ici : _item = "croco_raw","croco_skin";

Pour en mettre plusieurs il faudrait modifier tous les items comme ça :
Code:
_items = [[ "ITEM" , QUANTITEE ]];
Pour ton exemple :
Code:
_items = [["croco_raw",2],["croco_skin",3]];

Puis à la fin de ton fn_gutAnimal.sqf trouve ces lignes :
Code:
if ([true,_item,1] call life_fnc_handleInv) then {
    deleteVehicle _animalCorpse;
    titleText[format [(localize "STR_NOTF_Guttingfinish"),_displayName],"PLAIN"];
} else {
    titleText[(localize "STR_NOTF_InvFull"),"PLAIN"];
};
et remplace-les par :
Code:
_gotItem = false;

{
    _class = _x select 0;
    _qty = _x select 1;
    if ([true,_class,_qty] call life_fnc_handleInv) then {
        deleteVehicle _animalCorpse;
        titleText[format [(localize "STR_NOTF_Guttingfinish"),_displayName],"PLAIN"];
        _gotItem = true;
    };
} forEach _items;

if !(_gotItem) then {
    titleText[(localize "STR_NOTF_InvFull"),"PLAIN"];
};
 
Solution
Hello! Merci pour ton aide !
J'ai fait les modifcations que tu m'a envoyée, mais maintenant je ne peux plus collecter les vitems des animaux tués. quand je fait touche win, j'ai la barre de chargement et à la fin ça me dit "vous n'avez plus de place dans votre inventaire" et ce avec n'importe quels animaux dispo à la chasse.
j'ai pourtant la place dans mon inventaire Y et j'ai même essayer différents sac/tenues pour voir
Cela n'aurais pas un lien avec les dernières lignes du fichiers ?
Voici mon fn_gutAnimals.sqf : Paste-Me

Posté par @.mikelima via discord.
 
Il faut adapter le format de tous les items, comme ça :
Code:
_items = [];
switch (typeOf _animalCorpse) do {
    case "Hen_random_F": {_displayName = localize "STR_ANIM_chicken"; _items = [["hen_raw",1]];};
    case "Cock_random_F": {_displayName = localize "STR_ANIM_Rooster"; _items = [["rooster_raw",1]];};
    case "Goat_random_F": {_displayName = localize "STR_ANIM_Goat"; _items = [["goat_raw",1]];};
    case "Sheep_random_F": {_displayName = localize "STR_ANIM_Sheep"; _items = [["sheep_raw",1]];};
    case "Rabbit_F": {_displayName = localize "STR_ANIM_Rabbit"; _items = [["rabbit_raw",1]];};
    case "Edaly_Crocodile": {_displayName = localize "STR_ANIM_Croco"; _items = [["croco_raw",2],["croco_skin",3]];};
    case "Edaly_Boar": {_displayName = localize "STR_ANIM_Boar"; _items = [["boar_raw",1]];};
    case "Edaly_Cattle": {_displayName = localize "STR_ANIM_Cattle"; _items = [["cattle_raw",1]];};
    default {_displayName = ""; _items = [];};
};