Français Solved Menotter seulement avec les mains sur la tête

  • Auteur de la discussion Auteur de la discussion LittleBonnet
  • Date de début Date de début
28/2/23
33
2
1
300
Bonjour à tous,

J'aimerais vos avis sur une question concernant. serait-il possible de mettre en place un système où les joueurs ne peuvent être menottés que s'ils ont les mains sur la tête ? (que ca soit côté blufor que civil)

Si vous avez des idées sur la manière dont nous pourrions implémenter cela ou si vous avez déjà vu cela fonctionner sur d'autres serveurs, je suis très intéressé à en savoir plus.

Merci d'avance pour vos réponses et vos suggestions ! :)
 
Solution
Il n'y a pas de variable pour savoir si un joueur est tazé, il faut donc l'ajouter.

Dans ton fn_tazed.sqf trouve cette ligne :
Code:
life_istazed = true;
et ajoute en dessous :
Code:
player setVariable ["playerTazed",true,true];

Puis, toujours dans le même fichier, trouve cette ligne :
Code:
life_istazed = false;
et ajoute en dessous :
Code:
player setVariable ["playerTazed",false,true];

Et tu pourras mettre comme condition dans ton fn_restrainAction.sqf :
Code:
if (!(_unit getVariable ["playerSurrender",false]) && !(_unit getVariable ["playerTazed",false])) exitWith {
    hint "Le joueur doit se rendre ou être tazé pour pouvoir le menotter !";
};
--- Ce message a été généré automatiquement par ChatGPT, le contenu peut être incorrect. Veuillez lire le message avec précaution ! ---

Bonjour,

Pour mettre en place un tel système, vous devrez probablement utiliser des commandes SQF pour vérifier si les joueurs ont les mains sur la tête avant de leur permettre d'être menottés. Vous pourriez par exemple utiliser la fonction animationState pour détecter la position des mains des joueurs. Ensuite, vous pouvez combiner cette vérification avec l'utilisation de scripts pour gérer l'action de menotter les joueurs.

Si vous avez besoin d'aide pour créer ces scripts ou si vous avez d'autres questions, n'hésitez pas à demander !

Bonne chance dans votre projet ! :)

--- Pour continuer la discussion avec ChatGPT, cliquez sur "Répondre" en bas à droite de ce message. Sinon, attendez que quelqu'un vous réponde. ---
 
[CODE lang="sql" title="TEST"]// Script pour vérifier si un joueur a les mains sur la tête avant de le menotter

// Fonction pour vérifier si les mains du joueur sont sur la tête
getPlayerHandsPosition = {
private _player = _this select 0;
private _handsState = animationState _player select 3; // Récupère l'état des mains du joueur

// Vérifie si les mains du joueur sont sur la tête (à ajuster selon vos animations)
if ((_handsState isEqualTo "Surrendered") || (_handsState isEqualTo "HANDSHEAD")) then {
true; // Les mains sont sur la tête
} else {
false; // Les mains ne sont pas sur la tête
}
};

// Script pour menotter un joueur uniquement s'il a les mains sur la tête
menotterSiMainsSurTete = {
private _target = _this select 0; // La cible à menotter

// Vérifie si les mains du joueur sont sur la tête
if (call getPlayerHandsPosition(_target)) then {
// Exécute le script pour menotter le joueur
_target setVariable ["restrained", true, true]; // Menotter le joueur
[0, "STR_NOTF_Restrained", true, [_target getVariable ["realname", name _target], profileName]] remoteExecCall ["life_fnc_broadcast", west]; // Message de confirmation
hint "Le joueur est menotté."; // Message de confirmation (optionnel)
} else {
hint "Les mains du joueur ne sont pas sur la tête."; // Message d'erreur si les mains ne sont pas sur la tête (optionnel)
}
};

// Fonction pour vérifier si le joueur est en mode surrender
playerSurrenderCheck = {
if (player getVariable ["playerSurrender",false]) then {
// Exécute le script pour menotter le joueur si ses mains sont sur la tête
[player] call menotterSiMainsSurTete;
} else {
hint "Vous devez être en mode surrender pour être menotté."; // Message d'erreur si le joueur n'est pas en mode surrender (optionnel)
}
};

// Événement pour déclencher la vérification du surrender lorsque le joueur appuie sur Maj + B
playerSurrenderKeyPressed = {
private _handled = false;
private _shift = _this select 0;
private _key = _this select 1;

// Si le joueur appuie sur Maj + B
if (_shift && (_key isEqualTo 48)) then {
// Exécute la vérification du surrender
[] call playerSurrenderCheck;
_handled = true;
};

_handled;
};

// Ajoutez ici votre code pour surveiller l'événement de pression des touches pour le surrender
// Exemple : addMissionEventHandler ["KeyUp", playerSurrenderKeyPressed];[/CODE]

Est-ce que une chose comme celle ci pourrait fonctionner ? (chat GPT)
 
Salut, pk ne pas modifier directement ton fn_restrainAction.sqf?
Ce n'est pas faux haha, est-ce que ceci pourrait fonctionner ?

[CODE lang="sql" title="Menottage uniquement avec mains usr la tête"]private ["_unit"];
_unit = cursorObject;
if (isNull _unit) exitWith {}; //Not valid
if (player distance _unit > 3) exitWith {};
if (_unit getVariable "restrained") exitWith {};
if (side _unit isEqualTo west) exitWith {};
if (player isEqualTo _unit) exitWith {};
if (!isPlayer _unit) exitWith {};
if (!playerHasHandsOnHead(_unit)) exitWith {}; // Vérifie si le joueur a les mains sur la tête

//Broadcast!

_unit setVariable ["playerSurrender",false,true];
_unit setVariable ["restrained",true,true];
[player] remoteExec ["life_fnc_restrain",_unit];
[0,"STR_NOTF_Restrained",true,[_unit getVariable ["realname", name _unit], profileName]] remoteExecCall ["life_fnc_broadcast",west];[/CODE]
 
Tu peux tout à fait le faire :)

Dans ton @The_Programmer/addons/restrain_system/client/fn_restrainAction.sqf ajoute tout en haut :
Code:
if !(player getVariable ["playerSurrender",false]) exitWith {
    hint "Le joueur doit se rendre pour pouvoir le menotter !";
};
Merci beaucoup et j'aurais un petit détail en plus, je voudrais que ca soit possible de le menotter également s'il est tazé.

En gros s'il est tazé (du coup dans l'incapacité de mettre les mains sur la tête), on peut le menotter quand même :)
 
Il n'y a pas de variable pour savoir si un joueur est tazé, il faut donc l'ajouter.

Dans ton fn_tazed.sqf trouve cette ligne :
Code:
life_istazed = true;
et ajoute en dessous :
Code:
player setVariable ["playerTazed",true,true];

Puis, toujours dans le même fichier, trouve cette ligne :
Code:
life_istazed = false;
et ajoute en dessous :
Code:
player setVariable ["playerTazed",false,true];

Et tu pourras mettre comme condition dans ton fn_restrainAction.sqf :
Code:
if (!(_unit getVariable ["playerSurrender",false]) && !(_unit getVariable ["playerTazed",false])) exitWith {
    hint "Le joueur doit se rendre ou être tazé pour pouvoir le menotter !";
};
 
Dernière édition:
  • Like
Les réactions: LittleBonnet
Solution
Il n'y a pas de variable pour savoir si un joueur est tazé, il faut donc l'ajouter.

Dans ton fn_tazed.sqf trouve cette ligne :
Code:
life_istazed = true;
et ajoute en dessous :
Code:
player setVariable ["playerTazed",true,true];

Puis, toujours dans le même fichier, trouve cette ligne :
Code:
life_istazed = false;
et ajoute en dessous :
Code:
player setVariable ["playerTazed",false,true];

Et tu pourras mettre comme condition dans ton fn_restrainAction.sqf :
Code:
if (!(player getVariable ["playerSurrender",false]) && !(player getVariable ["playerTazed",false])) exitWith {
    hint "Le joueur doit se rendre ou être tazé pour pouvoir le menotter !";
};
J'ai bien suivi ton tuto,

en jeu ca me mets bien les Hints, mais ca ne foncitonne pas, quand il a les mains sur la tête ca me mets le hint Le joueur doit se rendre ou être tazé pour pouvoir le menotter !
et quand il est tazé ca me mets la même chose.

J'ai bien changé le pbo de Restrain System également.