Français Not solved Problème d'ouverture aléatoire du garage personnel dans config Ace

  • Auteur de la discussion Auteur de la discussion Joe Dalton
  • Date de début Date de début
  • Bonjour Visiteur ! Les sujets de cette catégorie sont clos. Si vous souhaitez réouvrir, merci de nous contacter en précisant le lien du post à réouvrir !

    Hello Visiteur ! The topics in this category are closed. If you wish to reopen, please contact us with the link of the post you wish to reopen !

Joe Dalton

User
6/9/20
46
7
600
Bonjour/Bonsoir à tous,


Maxence "chose promise chose due", voici le petit pb de sorcellerie rencontré sur notre serveur :geek:

Problème : Ma condition mise en place dans mon config Ace, pour l'ouverture du garage perso, fonctionne aléatoirement sans que je parvienne à comprendre la ou les raisons.

[CODE lang="cpp" title="Condition en question :"](((cursorTarget getVariable ['house_owner',['00000000000000000000','Pierre Jambon']]) select 0) isEqualTo (getPlayerUID player)) && (getNumber (missionConfigFile >> 'Housing' >> worldName >> (typeOf cursorTarget) >> 'canGarage') isEqualTo 1) OR (((cursorTarget getVariable ['house_owner',['00000000000000000000','Pierre Jambon']]) select 0) isEqualTo (getPlayerUID player)) && (((typeOf cursorTarget) in ['Land_i_Garage_V1_F','Land_i_Garage_V2_F']))[/CODE]

[CODE lang="cpp" title="Contexte :"]class ACE_SelfActions {

class ACE_CivHouseinteraction {
displayName = "Propriété";
distance = 40;
condition = "(((cursorTarget getVariable ['house_owner',['00000000000000000000','Pierre Jambon']]) select 0) isEqualTo (getPlayerUID player))";
statement = "";
showDisabled = 0;
priority = 10;
icon = "";
//ok
class ACE_LockStorage {
displayName = "Verrouiller Meuble";
distance = 20;
condition = "(((cursorTarget getVariable ['house_owner',['00000000000000000000','Pierre Jambon']]) select 0) isEqualTo (getPlayerUID player)) && !(cursorObject getVariable ['locked',false]))";
statement = "[cursorTarget] call life_fnc_lockHouse;";
showDisabled = 0;
priority = 11;
};
//ok
class ACE_UnlockStorage {
displayName = "Déverrouiller Meuble";
distance = 20;
condition = "(((cursorTarget getVariable ['house_owner',['00000000000000000000','Pierre Jambon']]) select 0) isEqualTo (getPlayerUID player)) && (cursorObject getVariable ['locked',true]))";
statement = "[cursorTarget] call life_fnc_lockHouse;";
showDisabled = 0;
priority = 12;
};
//ok
class ACE_LightsOn {
displayName = "Eclairage";
distance = 20;
condition = "(((cursorTarget getVariable ['house_owner',['00000000000000000000','Pierre Jambon']]) select 0) isEqualTo (getPlayerUID player))";
statement = "[cursorTarget] call life_fnc_lightHouseAction;";
showDisabled = 0;
priority = 13;
};
//A TESTER
class ACE_Garage {
displayName = "Ouvrir Garage";
distance = 20;
condition = "(((cursorTarget getVariable ['house_owner',['00000000000000000000','Pierre Jambon']]) select 0) isEqualTo (getPlayerUID player)) && (getNumber (missionConfigFile >> 'Housing' >> worldName >> (typeOf cursorTarget) >> 'canGarage') isEqualTo 1) OR (((cursorTarget getVariable ['house_owner',['00000000000000000000','Pierre Jambon']]) select 0) isEqualTo (getPlayerUID player)) && (((typeOf cursorTarget) in ['Land_i_Garage_V1_F','Land_i_Garage_V2_F']))";
statement = "[cursorTarget,'Car','personnel'] spawn life_fnc_vehicleGarage;";
showDisabled = 0;
priority = 14;
};
//A TESTER
class ACE_RangerGarage {
displayName = "Ranger->Garage";
distance = 20;
condition = "(((cursorTarget getVariable ['house_owner',['00000000000000000000','Pierre Jambon']]) select 0) isEqualTo (getPlayerUID player)) && (getNumber (missionConfigFile >> 'Housing' >> worldName >> (typeOf cursorTarget) >> 'canGarage') isEqualTo 1) OR (((cursorTarget getVariable ['house_owner',['00000000000000000000','Pierre Jambon']]) select 0) isEqualTo (getPlayerUID player)) && (((typeOf cursorTarget) in ['Land_i_Garage_V1_F','Land_i_Garage_V2_F']))";
statement = "[cursorTarget,player,'personnel'] spawn life_fnc_storeVehicle;";
showDisabled = 0;
priority = 15;
};
};

class ACE_Copinteraction {
displayName = "Propriété";
distance = 20;
condition = "playerSide isEqualTo west || playerSide isEqualTo east";
statement = "";
showDisabled = 1;
priority = 3.2;
icon = "";
};
};[/CODE]


Et là ...
Bah moi çà fonctionne impeccable :

Garage Arma ou garage de maison moddée, j'ai accès sans aucune erreur ni dans la console, ni quand je check chacune des conditions via F3 ; "Getplayer UID..." me ressort bien le nom du propriétaire, "...canGarage.. OU "curObject=garage_V1" is true.

Mais pour la plupart des bêta testeurs, c'est pas du tout le cas :

  • L'un ayant aussi les accès Infistar, l'adminlevel max, ne rencontre aucun problème avec ses garages, quel que soit le type.
  • L'autre, ayant l'adminlevel max sans Infistar, lyi ne peut rien ouvrir niveau garage, et de temps en temps a accès juste à "Propriété" avec le statement du meuble.
  • Et un joueur sans aucun accès admin... que dalle.

Les 2 derniers cas de figure, avec la console la commande CursorTarget getVariable "house_owner" retourne bien is true, et GetUID retourne bien leurs noms
L'adminlevel étant présent dans aucune ligne dans les scripts concernés, on a pas plus insisté de ce côté là niveau debug.

Bref, avec et grâce à l'aide précieuse de Yuri, j'ai un peu tout tenter et à force j'en ai oublié la moitié de que j'ai pu tester pour tenter de résoudre ce m....

Un grand merci d'avance pour toutes les idées de débug 🥰

PS : les params ['Car','personnel'] sont pour l'adaptation à Ace du script "Garages de position" by Mathis.
 
Hey!
Dans ACE comme tu bouges ton curseur pour sélectionner l'action que tu veux faire dans le menu, il ne sera plus forcément sur la maison et cursorTarget pourrait ne pas exister.
De mémoire dans ACE tu as juste à remplacer cursorTarget par :
Code:
_target
Qui prendra la cible au moment d'ouvrir le menu et pas au moment de faire l'action.

J'espère que le soucis vient de là 😅
 
  • Like
Les réactions: Joe Dalton
Ah moi aussi j'espère que ça vienne de là 😅
Prochaine maj, je teste de remettre _target, remettre oui parce qu'à la base il y était et remplacé pour je ne sais plus quelle raison 😇
Et ça a du sens cette hypothèse, parce qu'on est "rares" a utiliser le ACE avec le menu en vertical au lieu de celui par défaut en radial.
Je te tiens au courant très vite, merci Maxence 👍
 
  • Like
Les réactions: Maxence
Bonjour Joe Dalton Joe Dalton ! Je n'ai pas remarqué d'activité sur ce post depuis quelques semaines, est-ce que le problème est résolu ?
Bonjour et pardon pour la non réponse, je me suis un peu mis en "retraite" du "dev' " d'Arma.

Le problème est toujours existant :

Après test par un remplacement de CursorTarget par _target, y'a tout simplement plus rien qui fonctionne. :confused:
R404 marcussmith a pris le relais sur le dev', je lui laisse prendre le relais des tests et du message.

Un grand merci à Maxence Maxence, Yuri Zoko Yuri Zoko 😘🥰 et toute l'équipe de TP pour l'ensemble de votre œuvre pour notre serveur d'une part, mais aussi pour le RP Arma 💪, ce fût un immense plaisir de vous croiser sur les chemins abrupts du codage FORCE A VOUS ❤️
 
  • Heart
Les réactions: Yuri Zoko et Maxence
Bonjour, du coup je confirme ce que Joe Dalton Joe Dalton à dit juste au dessus.
Nous avons essayé de remplacé le CursorTarget par _target :

Code:
 class ACE_Garage {
          displayName = "Ouvrir Garage";
          distance = 20;
          condition = "(((_target getVariable ['house_owner',['00000000000000000000','Pierre Jambon']]) select 0) isEqualTo (getPlayerUID player)) && (getNumber (missionConfigFile >> 'Housing' >> worldName >> (typeOf Cursortarget) >> 'canGarage') isEqualTo 1) OR (((_target getVariable ['house_owner',['00000000000000000000','Pierre Jambon']]) select 0) isEqualTo (getPlayerUID player)) && (((typeOf Cursortarget) in ['Land_i_Garage_V1_F','Land_i_Garage_V2_F']))";
          statement = "[_target,'Car','personnel'] spawn life_fnc_vehicleGarage;";
          showDisabled = 0;
          priority = 14;
        };
       
        class ACE_RangerGarage {
          displayName = "Ranger->Garage";
          distance = 20;
          condition = "(((_target getVariable ['house_owner',['00000000000000000000','Pierre Jambon']]) select 0) isEqualTo (getPlayerUID player)) && (getNumber (missionConfigFile >> 'Housing' >> worldName >> (typeOf Cursortarget) >> 'canGarage') isEqualTo 1) OR (((_target getVariable ['house_owner',['00000000000000000000','Pierre Jambon']]) select 0) isEqualTo (getPlayerUID player)) && (((typeOf Cursortarget) in ['Land_i_Garage_V1_F','Land_i_Garage_V2_F']))";
          statement = "[_target,player,'personnel'] spawn life_fnc_storeVehicle;";
          showDisabled = 0;
          priority = 15;
        };
      };

Mais rien ne fonctionne :(
 
Pour le storeVehicle, tu peux remplacer ton statement par celui-ci :
Code:
[player,player,'personnel'] spawn life_fnc_storeVehicle;
Le target n'est pas vraiment utile ici, tant que c'est un objet ça fonctionnera donc avec player ça devrait être bon.



Pour le vehicleGarage, je te propose d'ajouter des logs pour savoir si c'est bien la variable attendue. Pour ça dans ton fn_vehicleGarage.sqf, tu peux remplacer cette ligne :
Code:
_className = typeOf _garageObj;
par :
Code:
systemChat str [_garageObj];
_className = typeOf _garageObj;
systemChat _className;

Et envoie moi une capture d'écran du chat après avoir tenté d'ouvrir le garage