Français Solved Comment ajouter un bouton pour supprimer un objet placé?

20/11/20
243
4
6
1 100
Bonsoir. Je me permet de mettre un poste sur le forum pour savoir si quelqu'un serait comment rajouter une action roulette de souris (saisir l'objet) se qui le supprimera définitivement. Savez vous comment faire?
 
Solution
D'accord, je vais faire autrement, oublie le post précédent, tu peux enlever les modifications et faire celles-ci plutôt.
J'ai modifié l'emplacement du bouton, l'objet le plus proche dans un rayon de 5 mètres sera supprimé, pas forcément en face et peut importe le joueur qui l'a posé.

Tu peux ajouter un nouveau bouton dans ton placeables.hpp, en dessous de cette ligne :
Code:
class controls {
tu peux ajouter :
Code:
class DeleteNearest : Life_RscButtonMenu {
    idc = -1;
    text = "Supprimer le plus proche";
    colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5}...
Salut, tu dois ajouter un addAction, exemple :


Code:
if (playerSide isEqualTo west) then {
    player addAction ["Detruire l'objet ",{deleteVehicle cursorObject},"",0,false,false,"",""];
};

Ceci n'est qu'un exemple fonctionnel mais dangereux
 
Tu as 2 { ouverts mais seulement 1 } du coup ça ne fonctionne pas :
1617360954679.png
Ce n'est pas utile de mettre la condition if de side, dans le case west.
Voici le fn_setupActions.sqf corrigé :
Code:
life_actions = [];

switch (playerSide) do {
    case civilian: {
        life_actions pushBack (player addAction[localize "STR_pAct_DropFishingNet",life_fnc_dropFishingNet,"",0,false,false,"",'(surfaceisWater (getPos vehicle player)) && (vehicle player isKindOf "Ship") && life_carryWeight < life_maxWeight && speed (vehicle player) < 2 && speed (vehicle player) > -1 && !life_net_dropped ']);
        life_actions pushBack (player addAction[localize "STR_pAct_RobPerson",life_fnc_robAction,"",0,false,false,"",'!isNull cursorObject && player distance cursorObject < 3.5 && isPlayer cursorObject && animationState cursorObject == "Incapacitated" && !(cursorObject getVariable ["robbed",false]) ']);
    };

    case west: {
        life_actions pushBack (player addAction ["Detruire l'objet ",{deleteVehicle cursorObject},"",0,false,false,"",""]);
        life_actions pushBack (player addAction["Monter en conducteur",{player moveInDriver cursorObject},"",0,false,false,"",'((cursorObject isKindOf "Car") && ((locked cursorObject) isEqualTo 2))']);
    };

    case independent: { 
        life_actions pushBack (player addAction["Monter en conducteur",{player moveInDriver cursorObject},"",0,false,false,"",'((cursorObject isKindOf "Car") && ((locked cursorObject) isEqualTo 2))']);
    };
};

---

Par la même occasion, tu as toujours la version 3.0 de The-Programmer Core qui est trop ancienne et ne fonctionnera plus d'ici quelques heures. Je t'invite à faire la mise à jour 3.1 qui a été publiée il y a 3 semaines et communiquée par email et sur notre discord : https://discord.com/channels/381427590419972097/381427768157798401/819254428649259018
1617361135799.png
 
Hello merci pour votre aide sa fonctionne. Comment rajouter une condition du type ne pas détruire un bâtiment... et le mettre en couleur?
 
Dernière édition:
Hello merci pour votre aide sa fonctionne. Comment rajouter une condition du type ne pas détruire un bâtiment... et le mettre en couleur?
Pour mettre une couleur, tu peux mettre des tags XML de couleur, par exemple en rouge :
Code:
player addAction ["<t color='#FF0000'>Détruire l'objet</t>",{deleteVehicle cursorObject},"",0,false,false,"",""];

Et pour mettre une condition, il vaudrait mieux autoriser que certain objets (d'où la mention "dangereuse" dans la solution proposée), comme ceci :
Code:
player addAction ["<t color='#FF0000'>Détruire l'objet</t>",{deleteVehicle cursorObject},"",0,false,false,"","((typeOf cursorObject) in ['type_1','type_2'])"];

Il faut modifier type_1 et type_2 par les classnames des objets qu'ils peuvent supprimer, tu peux en mettre + évidemment.
Tu peux trouver la classname facilement en éditeur sur arma ou avec la debug console en regardant l'objet :
Code:
(typeOf cursorObject)


------------
Je les mis à jour mais je ne peux plus me co au serveur
Je t'invite à ouvrir un ticket ici https://theprogrammer.freshdesk.com/ ou sur notre discord https://discord.the-programmer.com pour qu'on regarde ça en détail, mais je suis convaincu que la mise à jour n'a pas de rapport :)
 
J'ai testé de mon côté, ça fonctionne seulement pour les objets qui peuvent être placés sur le mapping. Donc pour les barrières, les cônes, les lampes etc ça devrait être bon.
Mais les munitions ou les armes au sol n'ont pas de classname, donc ça ne peut pas marcher. Par contre il peut simplement la ramasser pour la stocker dans le commissariat par exemple
 
La meilleure solution, c'est d'ajouter une variable sur les objets que tu pose avec ton script. Comme ça, il serais impossible de supprimer l'objet SI il n'as pas la variable et donc, éviter de supprimer un objet qui à le même classname mais qui a été posée en SQM ou même directement sur la map.
[CODE title="player addAction ["Détruire l'objet",{deleteVehicle cursorObject},"",0,false,false,"","((typeOf cursorObject) in ['type_1','type_2'])"]player addAction ["<t color='#FF0000'>Détruire l'objet</t>",{deleteVehicle cursorObject},"",0,false,false,"","cursorObject getVariable ['poserbyplayer',false]"];[/CODE]

Et dans ton scripts ou ils pose l'objet, tu fait un truc du style :
Code:
_object setvariable ["poserbyplayer",true,false];
 
Dernière édition par un modérateur:
Bonjour. Non j'ai fait ça:
[CODE title="fn_placeablesInit.sqf"]/*
Author: Maximum, Adapté par Sharywan
Description: Placeables for the cop\medic sides.
Disclaimer: Don't be a asshole and pass this off as your own or become a KAI and sell it for profit, Im releasing this for FREE… Credits: Killerty69 for a second pare of eyes when mine got to sleepy
P.S. - Don't be a faggot like i know some of you all will be.
*/
life_barrier_active = false;
life_object setvariable ["poserbyplayer",true,false];
life_barrier_activeObj = ObjNull;
life_placeables = [
[ "Panneaux 30", "p30temp"],
[ "Panneaux 50", "p50temp"],
[ "Barrière", "barriere"],
[ "Barrière X3", "barriere3"],
[ "Borne d'incendie", "PI"],
[ "Cone", "cone"],
[ "Cône Drapeaux", "coneflag"],
[ "Cône X4", "cone4"],
[ "Danger", "dangertemp"],
[ "Déviation à Gauche", "deviga"],
[ "Déviation à Doite", "devidr"],
[ "Temporaire Gauche", "tmpgauche"],
[ "Temporaire Droite", "tmpdroite"],
[ "Fin Interdiction", "fininttemp"],
[ "Halte Gendarmerie", "tmpgn"],
[ "Cône Flash", "coneflash"],
[ "Cône Flash X4", "coneflash4"],
[ "Triflash Accident", "triflash"],
[ "Triflash Danger", "triflashdng"],
[ "Lampe simple", "Land_PortableLight_single_F"],
[ "Lampe double", "Land_PortableLight_double_F"],
[ "Trousse de secours", "Land_FirstAidKit_01_open_F"],
[ "Lampe Héliport", "PortableHelipadLight_01_white_F"]
];
life_bar_limit = 2500;
life_bar_placey = []; [/CODE]
[CODE title="fn_setupActions.sqf"]life_actions = [];

switch (playerSide) do {
case civilian: {
life_actions pushBack (player addAction[localize "STR_pAct_DropFishingNet",life_fnc_dropFishingNet,"",0,false,false,"",'(surfaceisWater (getPos vehicle player)) && (vehicle player isKindOf "Ship") && life_carryWeight < life_maxWeight && speed (vehicle player) < 2 && speed (vehicle player) > -1 && !life_net_dropped ']);
life_actions pushBack (player addAction[localize "STR_pAct_RobPerson",life_fnc_robAction,"",0,false,false,"",'!isNull cursorObject && player distance cursorObject < 3.5 && isPlayer cursorObject && animationState cursorObject == "Incapacitated" && !(cursorObject getVariable ["robbed",false]) ']);
};

case west: {
life_actions pushBack (player addAction["<t color='#FF0000'>Saisir l'objet</t>",{deleteVehicle cursorObject},"",0,false,false,"","cursorObject getVariable ['poserbyplayer',false]"]);
life_actions pushBack (player addAction["<t color='#266ff7'>Déverouiller le véhicule</t>",{cursorObject lock false;},"",0,false,false,"",'((cursorObject isKindOf "Car") && ((locked cursorObject) isEqualTo 2))']);
life_actions pushBack (player addAction["<t color='#266ff7'>Vérouiller le véhicule</t>",{cursorObject lock true;},"",0,false,false,"",'((cursorObject isKindOf "Car") && ((locked cursorObject) isEqualTo 0))']);
life_actions pushBack (player addAction["<t color='#266ff7'>Descendre</t>",{player action ["Eject",(vehicle player)];},"",0,false,false,"",'(((vehicle player) isKindOf "Car") && ((locked (vehicle player)) isEqualTo 2))']);
life_actions pushBack (player addAction["<t color='#FF0000'>Prendre l'objet</t>",{deleteVehicle cursorObject},"",0,false,false,"","cursorObject getVariable ['poserbyplayer',false]"]);
};

case independent: {
life_actions pushBack (player addAction["<t color='#FF0000'>Saisir l'objet</t>",{deleteVehicle cursorObject},"",0,false,false,"","cursorObject getVariable ['poserbyplayer',false]"]);
life_actions pushBack (player addAction["<t color='#266ff7'>Déverouiller le véhicule</t>",{cursorObject lock false;},"",0,false,false,"",'((cursorObject isKindOf "Car") && ((locked cursorObject) isEqualTo 2))']);
life_actions pushBack (player addAction["<t color='#266ff7'>Vérouiller le véhicule</t>",{cursorObject lock true;},"",0,false,false,"",'((cursorObject isKindOf "Car") && ((locked cursorObject) isEqualTo 0))']);
life_actions pushBack (player addAction["<t color='#266ff7'>Descendre</t>",{player action ["Eject",(vehicle player)];},"",0,false,false,"",'(((vehicle player) isKindOf "Car") && ((locked (vehicle player)) isEqualTo 2))']);
life_actions pushBack (player addAction["<t color='#FF0000'>Prendre l'objet</t>",{deleteVehicle cursorObject},"",0,false,false,"","cursorObject getVariable ['poserbyplayer',false]"]);
};
};[/CODE]
Mais sa ne fonctionne pas
 
Dans le fn_placeablesInit.sqf il ne faut pas mettre cette ligne :
Code:
life_object setvariable ["poserbyplayer",true,false];

Mais plutôt dans le fn_placeablePlaceComplete.sqf, tu peux ajouter en dessous de :
Code:
life_bar_placey pushBack life_barrier_activeObj;
cette ligne :
Code:
life_barrier_activeObj setvariable ["poserbyplayer",true,false];
 
Bonjour je n'est pas trouver le fichier fn_placeablePlaceComplete.sqf j'ai que ça:
j'y et mis dans le:

[CODE title="fn_placeablecomplete.sqf"]/*
Author: Maximum, Adapté par Sharywan
Description: Placeables for the cop\medic sides.
Disclaimer: Don't be a asshole and pass this off as your own or become a KAI and sell it for profit, Im releasing this for FREE... Credits: Killerty69 for a second pare of eyes when mine got to sleepy
P.S. - Don't be a faggot like i know some of you all will be.
*/
disableSerialization;
if (!life_barrier_active) exitWith {};
if (life_barrier_activeObj == ObjNull) exitWith {};

_currentPos = getPosATL life_barrier_activeObj;
detach life_barrier_activeObj;
life_barrier_activeObj setPos[(getPos life_barrier_activeObj select 0), (getPos life_barrier_activeObj select 1), 0];
life_barrier_activeObj enableSimulationGlobal true;
life_bar_placey pushBack life_barrier_activeObj;
life_barrier_activeObj setvariable ["poserbyplayer",true,false];
life_barrier_active = false;
life_barrier_activeObj = ObjNull;[/CODE]
 

Fichiers joints

  • j'ai pas.PNG
    j'ai pas.PNG
    64.9 KB · Affichages: 64
Dernière édition: