Français Solved Comment éviter les glitchs d'objets dupliqués dans l'inventaire?

  • Auteur de la discussion Auteur de la discussion Robinox
  • Date de début Date de début
Solution
Je n'ai pas la possibilité de tester, mais tu peux essayer d'ajouter à la ligne 41 de ton fn_inventoryOpened.sqf :
Code:
Développer Réduire Copier
_inUse = _x getVariable ["vehicle_inventory_in_use",false];
if (_inUse) exitWith {
    hint "Une personne utilise déjà l'inventaire de ce véhicule.";
    true breakOut "main";
};
_x setVariable ["vehicle_inventory_in_use",true,true];
Comme ça :
1707071205882.png

Et à la fin de ton fn_inventoryClosed.sqf :
Code:
Développer Réduire Copier
if (KINDOF_ARRAY(_container, ["LandVehicle", "Ship", "Air"])) then {
    _container setVariable ["vehicle_inventory_in_use",false,true];
};
--- Ce message a été généré automatiquement par ChatGPT, le contenu peut être incorrect. Veuillez lire le message avec précaution ! ---

Salut,
Pour empêcher l'accès simultané au menu I physique, tu peux utiliser une variable globale en SQF. Voici un exemple de code qui peut t'aider :

Code:
Développer Réduire Copier
// Dans le fichier init.sqf ou dans le script d'initialisation de ton addon
monMenuOuvert = false;

// Dans le fichier qui gère l'ouverture et la fermeture du menu I
if (!monMenuOuvert) then {
    monMenuOuvert = true;
    // Code pour ouvrir le menu I
} else {
    hint "Le menu I est déjà ouvert. Veuillez fermer le menu actuel avant d'en ouvrir un autre.";
}

Il suffit de définir la variable monMenuOuvert en tant que false dans le fichier init.sqf (ou dans le script d'initialisation de ton addon) et de vérifier sa valeur avant d'ouvrir le menu I. Si monMenuOuvert est déjà à true, cela signifie que le menu I est déjà ouvert et un message d'avertissement sera affiché. N'oublie pas de réinitialiser monMenuOuvert à false lorsque le menu I est fermé.
J'espère que cela t'aidera !


--- 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,

Est-ce que tu pourrais faire une courte vidéo qui montre glitch pour bien comprendre comment tu fais ?
Le voici, le debut est un peu couper mais au debut on appui en meme prend pour prendre le sac a dos. Le seul moyen de corriger le bug c'est pas acceder au coffre I en meme temps
 
Je n'ai pas la possibilité de tester, mais tu peux essayer d'ajouter à la ligne 41 de ton fn_inventoryOpened.sqf :
Code:
Développer Réduire Copier
_inUse = _x getVariable ["vehicle_inventory_in_use",false];
if (_inUse) exitWith {
    hint "Une personne utilise déjà l'inventaire de ce véhicule.";
    true breakOut "main";
};
_x setVariable ["vehicle_inventory_in_use",true,true];
Comme ça :
1707071205882.png

Et à la fin de ton fn_inventoryClosed.sqf :
Code:
Développer Réduire Copier
if (KINDOF_ARRAY(_container, ["LandVehicle", "Ship", "Air"])) then {
    _container setVariable ["vehicle_inventory_in_use",false,true];
};
 
Dernière édition:
Solution
Je n'ai pas la possibilité de tester, mais tu peux essayer d'ajouter à la ligne 41 de ton fn_inventoryOpened.sqf :
Code:
Développer Réduire Copier
_inUse = _x getVariable ["vehicle_inventory_in_use",false];
if (_inUse) exitWith {
    hint "Une personne utilise déjà l'inventaire de ce véhicule.";
    true breakOut "main";
};
_x setVariable ["vehicle_inventory_in_use",true,true];
Comme ça :
Voir la pièce jointe 4533

Et à la fin de ton fn_inventoryClosed.sqf :
Code:
Développer Réduire Copier
if (KINDOF_ARRAY(_container, ["LandVehicle", "Ship", "Air"])) exitWith {
    _container setVariable ["vehicle_inventory_in_use",false,true];
};
Salut, on peu toujours l'ouvrir a deux en meme temps et aucun message s'affiche // Aucun message d'erreur LOGS
 
Je n'ai pas la possibilité de tester, mais tu peux essayer d'ajouter à la ligne 41 de ton fn_inventoryOpened.sqf :
Code:
Développer Réduire Copier
_inUse = _x getVariable ["vehicle_inventory_in_use",false];
if (_inUse) exitWith {
    hint "Une personne utilise déjà l'inventaire de ce véhicule.";
    true breakOut "main";
};
_x setVariable ["vehicle_inventory_in_use",true,true];
Comme ça :
Voir la pièce jointe 4533

Et à la fin de ton fn_inventoryClosed.sqf :
Code:
Développer Réduire Copier
if (KINDOF_ARRAY(_container, ["LandVehicle", "Ship", "Air"])) exitWith {
    _container setVariable ["vehicle_inventory_in_use",false,true];
};
Edit,
J'ai ca comme erreur :

Error in expression <TON_fnc_vehicleUpdate",2];};};};if("Air"])) exitWith{_container setVariable["veh>
Error position: <])) exitWith{_container setVariable["veh>
Error Missing )
File mpmissions\__cur_mp.Malden\ЮЖТÐ\ \ЩЗЛÐЖ\ ..., line 1
Error in expression <TON_fnc_vehicleUpdate",2];};};};if("Air"])) exitWith{_container setVariable["veh>
Error position: <])) exitWith{_container setVariable["veh>
Error Missing )
 
Est-ce que tu peux envoyer les 2 fichiers que tu as modifié ?

Si tu as la debug console en jeu, tu peux vérifier si la variable est bien définie sur "true" quand un joueur est dans l'inventaire, en regardant le véhicule :
Code:
Développer Réduire Copier
(cursorObject getVariable ["vehicle_inventory_in_use",false])
 
Est-ce que tu peux envoyer les 2 fichiers que tu as modifié ?

Si tu as la debug console en jeu, tu peux vérifier si la variable est bien définie sur "true" quand un joueur est dans l'inventaire, en regardant le véhicule :
Code:
Développer Réduire Copier
(cursorObject getVariable ["vehicle_inventory_in_use",false])
Salut, voici les deux fichiers,
fn_inventoryOpened fn_inventoryClosed Paste-Me

Merci, je test la ligne juste apres
 
Est-ce que tu peux envoyer les 2 fichiers que tu as modifié ?

Si tu as la debug console en jeu, tu peux vérifier si la variable est bien définie sur "true" quand un joueur est dans l'inventaire, en regardant le véhicule :
Code:
Développer Réduire Copier
(cursorObject getVariable ["vehicle_inventory_in_use",false])
j'arrive p&as faire la manip
 
Ah effectivement, tu n'as pas le fn_inventoryOpened.sqf de base, voici ton fichier adapté : Paste-Me

Par contre l'erreur que tu as cité n'a pas l'air d'être lié à ces deux fichiers, le code ne correspond pas à l
Ok, maintenant j'ai un soucis, j'arriver a aller dans l'inventaire I sauf que quand je part et que je souhaite le réouvrir , cela me dit qu'il est déja utiliser.
 
Pourtant il y a bien la modification dans le fn_inventoryClosed.sqf qui devrait réinitialiser la variable pour éviter ça 🤔

Pour vérifier si elle est bien définie, tu peux ajouter des logs dans le chat à la fin du fichier :
Code:
Développer Réduire Copier
systemChat format ["DEBUG type : %1",(typeOf _container)];
systemChat format ["DEBUG condition : %1",(KINDOF_ARRAY(_container, ["LandVehicle", "Ship", "Air"]))];
systemChat format ["DEBUG variable : %1",(_container getVariable ["vehicle_inventory_in_use","not defined"])];

Si ça fonctionne bien, la première ligne affiche la classname du véhicule, la deuxième "true", et la troisième "false".
Sinon, tu peux m'envoyer une screenshot de ce que ça affiche :)
 
Essaye de remplacer cette ligne :
Code:
Développer Réduire Copier
if (KINDOF_ARRAY(_container, ["LandVehicle", "Ship", "Air"])) exitWith {
par :
Code:
Développer Réduire Copier
if (KINDOF_ARRAY(_container, ["LandVehicle", "Ship", "Air"])) then {

J'ai corrigé ma réponse au-dessus
 
Activité
Pour l'instant, il n'y a personne ici