#Action sur un joueur - 3198

1 messages · Page 1 of 1 (latest)

fallow lightBOT
#

Bonjour,

J'aimerais savoir comment je pourrais rajouter un action pour qu'un joueur mette un vêtement sur un autre joueur (comme une cagoule) soit une action molette soit par le KeyHandler

Merci d'avance

:arrow_right: Message envoyé par Phoenix53.
Voir le post sur le forum : https://forum.the-programmer.com/post/action-sur-un-joueur.3198/

fallow lightBOT
#

En relation à ce qu'à mis le Bot, j'ai fait quelque chose comme ça mais ca fonctionne pas

fnc_putClothingOn = {
private ["_target"];
// Récupérer le joueur cible de l'action
_target = _this select 0;
// Mettre le vêtement (cagoule) sur le joueur cible - Remplacez "cagoule" par le nom de votre vêtement
_target addHeadgear "mgsr_headbag_goggles";
};
{
if !("mgsr_headbag_goggles" in (items player)) exitWith {hint "Tu n'as pas de sac"};
if (local _x) then {
// Remplacez "Mettre la cagoule" par le texte souhaité pour l'action
_x addAction ["Mettre le sac", {[_this select 0] call fnc_putClothingOn}];
}
if ((cameraView == "External") && ((vehicle player) == player)) then {
player switchCamera "Internal";
};
sleep 0.2;
} forEach playableUnits;

:arrow_right: Message envoyé par Phoenix53.

fallow lightBOT
#

Bonjour, va dans "Altis_Life.Altis/core/fn_setupActions.sqf" puis ajoute ceci dans case civilian :
life_actions pushBack (player addAction["Mettre la cagoule",life_fnc_bagAction,"",0,false,false,"",'
!isNull cursorObject && player distance cursorObject < 3.5 && isPlayer cursorObject && cursorObject getVariable "restrained" && !cursorObject getVariable "haveBag");

life_actions pushBack (player addAction["Retirer la cagoule",life_fnc_bagAction,"",0,false,false,"",'
!isNull cursorObject && player distance cursorObject < 3.5 && isPlayer cursorObject && cursorObject getVariable "restrained" && cursorObject getVariable "haveBag");

Puis, créer un fichier nomée = "fn_bagAction" dans "Altis_Life.Altis/core/actions/" et dedans met :
private ["_target"];
_target = cursorObject;

_bagItem = "mgsr_headbag_goggles";

//Error checks
if (isNull _target) exitWith {};
if (!isPlayer _target) exitWith {};

_targetHaveBag = _target getVariable "haveBag";

if (!_targetHaveBag || isNil "_targetHaveBag") then {
_getLastItem = headgear _target;

_target addHeadgear _bagItem;
_target setVariable ["haveBag",true];

titleCut ["", "BLACK FADED", 999];

_target setVariable ["lastItemBeforeBag",_getLastItem];

} else {
_getLastItem = _target getVariable "lastItemBeforeBag";

_target addHeadgear _getLastItem;
_target setVariable ["haveBag",false];

titlecut ["","BLACK IN",2];

_target setVariable ["lastItemBeforeBag", ""];

};

Enfin, dans "Altis_Life.Altis/Functions.hpp", ajoute dans la class Actions à la fin (après "class unrestrain {};") ceci :
class bagAction {};

Tiens moi au courant si cela fonctionne, je n'ai pas pu l'essayer.

:arrow_right: Message envoyé par Liliannismo33.

fallow lightBOT
#

Bonjour, va dans "Altis_Life.Altis/core/fn_setupActions.sqf" puis ajoute ceci dans case civilian :
life_actions pushBack (player addAction["Mettre la cagoule",life_fnc_bagAction,"",0,false,false,"",'
!isNull cursorObject && player distance cursorObject < 3.5 && isPlayer cursorObject && cursorObject getVariable "restrained" && !cursorObject getVariable "haveBag");

life_actions pushBack (player addAction["Retirer la cagoule",life_fnc_bagAction,"",0,false,false,"",'
!isNull cursorObject && player distance cursorObject < 3.5 && isPlayer cursorObject && cursorObject getVariable "restrained" && cursorObject getVariable "haveBag");

Puis, créer un fichier nomée = "fn_bagAction" dans "Altis_Life.Altis/core/actions/" et dedans met :
private ["_target"];
_target = cursorObject;

_bagItem = "mgsr_headbag_goggles";

//Error checks
if (isNull _target) exitWith {};
if (!isPlayer _target) exitWith {};

_targetHaveBag = _target getVariable "haveBag";

if (!_targetHaveBag || isNil "_targetHaveBag") then {
_getLastItem = headgear _target;

_target addHeadgear _bagItem;
_target setVariable ["haveBag",true];

titleCut ["", "BLACK FADED", 999];

_target setVariable ["lastItemBeforeBag",_getLastItem];

} else {
_getLastItem = _target getVariable "lastItemBeforeBag";

_target addHeadgear _getLastItem;
_target setVariable ["haveBag",false];

titlecut ["","BLACK IN",2];

_target setVariable ["lastItemBeforeBag", ""];

};

Enfin, dans "Altis_Life.Altis/Functions.hpp", ajoute dans la class Actions à la fin (après "class unrestrain {};") ceci :
class bagAction {};

Tiens moi au courant si cela fonctionne, je n'ai pas pu l'essayer.

Merci pour tout ces renseignement, je vais tester et je te redis , tu sais si on peut forcer la personne qui se...

:arrow_right: Message envoyé par Phoenix53.

#

Là je t'ai mis un écran noir lorsqu'elle as la cagoule. Je sais pas si ca te convient ?

:arrow_right: Message envoyé par Liliannismo33.

#

Là je t'ai mis un écran noir lorsqu'elle as la cagoule. Je sais pas si ca te convient ?

Ca fera l'affaire pour le test mais c'était pour savoir vu qu'il y a une vision "cagoule" quand on l'a sur la tête à la première personne

:arrow_right: Message envoyé par Phoenix53.

#

Euh, je peux t'expliquer, mais là j'ai pas trop le temps de le coder.
En gros faut que tu fasse un peu dans le même système que le rob dans altis life.

Faut ajouter un truc dans le genre après les set variable dans ton fichier bagAction : [player] remoteExecCall ["life_fnc_bagVision",_target];

Tu créer un fichier bagVision, dans le dossier qui te convient le mieux et tu le relie dans le function.hpp.

Et dans bagvision, tu met un script similaire au script de bloquage de première personne en combat. Et tu remplace les "life_combatTime" par le boolean de la variable "haveBag".

J'espère ca te sera utile.

:arrow_right: Message envoyé par Liliannismo33.

fallow lightBOT
#

Bonjour, va dans "Altis_Life.Altis/core/fn_setupActions.sqf" puis ajoute ceci dans case civilian :
life_actions pushBack (player addAction["Mettre la cagoule",life_fnc_bagAction,"",0,false,false,"",'
!isNull cursorObject && player distance cursorObject < 3.5 && isPlayer cursorObject && cursorObject getVariable "restrained" && !cursorObject getVariable "haveBag");

life_actions pushBack (player addAction["Retirer la cagoule",life_fnc_bagAction,"",0,false,false,"",'
!isNull cursorObject && player distance cursorObject < 3.5 && isPlayer cursorObject && cursorObject getVariable "restrained" && cursorObject getVariable "haveBag");

Puis, créer un fichier nomée = "fn_bagAction" dans "Altis_Life.Altis/core/actions/" et dedans met :
private ["_target"];
_target = cursorObject;

_bagItem = "mgsr_headbag_goggles";

//Error checks
if (isNull _target) exitWith {};
if (!isPlayer _target) exitWith {};

_targetHaveBag = _target getVariable "haveBag";

if (!_targetHaveBag || isNil "_targetHaveBag") then {
_getLastItem = headgear _target;

_target addHeadgear _bagItem;
_target setVariable ["haveBag",true];

titleCut ["", "BLACK FADED", 999];

_target setVariable ["lastItemBeforeBag",_getLastItem];

} else {
_getLastItem = _target getVariable "lastItemBeforeBag";

_target addHeadgear _getLastItem;
_target setVariable ["haveBag",false];

titlecut ["","BLACK IN",2];

_target setVariable ["lastItemBeforeBag", ""];

};

Enfin, dans "Altis_Life.Altis/Functions.hpp", ajoute dans la class Actions à la fin (après "class unrestrain {};") ceci :
class bagAction {};

Tiens moi au courant si cela fonctionne, je n'ai pas pu l'essayer.

Après test, je n'est pas d'intéraction quand je suis devant la personne menottée avec une cagoule sur moi

:arrow_right: Message envoyé par Phoenix53.

fallow lightBOT
#

Après test, je n'est pas d'intéraction quand je suis devant la personne menottée avec une cagoule sur moi

Il y a des variables à changer dans le bagAction à part le nom de l'objet ?

Et j'utilise le "restrain system" ca ne change rien dans l'appellation du menottage ?

:arrow_right: Message envoyé par Phoenix53.

fallow lightBOT
#

Salut, essaye cette petite modification que j'ai apporté, et autrement si tu n'as rien quand tu roule la molette, c'est que cela doit venir des conditions pour que le addaction s'affiche. Donc soit c'est (!cursorObject getVariable "haveBag" || isNil "cursorObject getVariable ""haveBag""") qui pose problème, soit en effet le restrain qui n'est pas le même que celui de base, et là j'avoue ne pas connaître les scripts de TP, donc je pourrais pas vraiment t'aider sur ce point. Essaye de chercher l'alternative au "cursorObject getVariable "restrained"" sur ton script. Parcours des fichiers où la conditions d'être menoté s'applique et trouve la variable qui définit quand on est menotté.

life_actions pushBack (player addAction["Mettre la cagoule",life_fnc_bagAction,"",0,false,false,"",'
!isNull cursorObject && player distance cursorObject < 3.5 && isPlayer cursorObject && cursorObject getVariable "restrained" && (!cursorObject getVariable "haveBag" || isNil "cursorObject getVariable ""haveBag"""));

:arrow_right: Message envoyé par Liliannismo33.

fallow lightBOT
#

Restrain System utilise les mêmes variable qu'Altislife, ça ne devrait pas avoir d'impact :

Pour éviter les cas où la variable "restrained" ou "haveBag" est indéfinie, tu peux mettre une variable par défaut au getVariable comme ceci :

life_actions pushBack (player addAction["Mettre la cagoule",life_fnc_bagAction,"",0,false,false,"",'
(!(isNull cursorObject) && (player distance cursorObject < 3.5) && (isPlayer cursorObject) && (cursorObject getVariable ["restrained",false]) && !(cursorObject getVariable ["haveBag",false]))']);

life_actions pushBack (player addAction["Retirer la cagoule",life_fnc_bagAction,"",0,false,false,"",'
(!(isNull cursorObject) && (player distance cursorObject < 3.5) && (isPlayer cursorObject) && (cursorObject getVariable ["restrained",false]) && (cursorObject getVariable ["haveBag",false]));']);

:arrow_right: Message envoyé par Maxence.

fallow lightBOT
#

Après test, j'ai bien l'interaction "Mettre la Cagoule", mais rien ne se passe alors que la personne est menottée et que j'ai une cagoule sur moi

:arrow_right: Message envoyé par Phoenix53.

fallow lightBOT
#

Est-ce que tu peux envoyer tes logs client ?

Il faut peut être modifier cette ligne du fn_bagAction.sqf :

_targetHaveBag = _target getVariable "haveBag";

pour lui ajouter une valeur par défaut :

_targetHaveBag = _target getVariable ["haveBag",false];

:arrow_right: Message envoyé par Maxence.