Bonjour/Bonsoir à tous,
Maxence "chose promise chose due", voici le petit pb de sorcellerie rencontré sur notre serveur
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 :
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.
Maxence "chose promise chose due", voici le petit pb de sorcellerie rencontré sur notre serveur
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.