Menu Y objets placables cop

**Bonjours à tous ! **

Voilà donc c’est mon premier tuto, que je vais reprendre de cette personne Maximum qui a effectuer son code pour la 3.1.4.8. Fonctionnel pour la 4.3.

Merci à Thesam1798

Tout d’abord, commençons par allez dans Mpmission\Altis_life.Altis\Function.h

En-dessous de

class Dialog_Controls  
	{  
		file = "dialog\function";  
		class setMapPosition {};  
		class displayHandler {};  
		class spawnConfirm {};  
		class spawnMenu {};  
		class spawnPointCfg {};  
		class spawnPointSelected {};  
		class progressBar {};  
		class impoundMenu {};  
		class unimpound {};  
		class sellGarage {};  
		class bankDeposit {};  
		class bankWithdraw {};  
		class bankTransfer {};  
		class garageLBChange {};  
		class safeInventory {};  
		class safeOpen {};  
		class safeTake {};  
		class safeFix {};  
		class vehicleGarage {};  
		class gangDeposit {};  
		class wireTransfer {};  
		class insureCar{};  
	};  

Ajouter ce-ci :

class CopPlaceables	{  
	file = "core\cop\placeables";  
	class placeablesInit {};  
	class placeablesMenu {};  
	class placeablesRemoveAll {};  
	class placeablePlace {};  
	class placeableCancel {};  
	class placeablesPlaceComplete {};  
};  

Ensuite allez dans core\cop et créer un nouveau dossier que l’on appellera “placeables”

Et dans ce dossier nous allons rajouter 6 fichiers sqf.

Commençons par le fichier " fn_placeablesInit.sqf ", ajouter y ce-ci : ( Ici vous pouvez changer le nom de l’objet entre guillemet et l’objet en lui même )

/*   
	Author: Maximum  
	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_barrier_activeObj = ObjNull;  
life_placeables = [  
	[ "Cone", "RoadCone_F"],  
	[ "Cone lumiere blanche", "RoadCone_L_F"],  
	[ "Panneau de signalisation", "SignAd_Sponsor_F"],  
	[ "Barriere", "Land_BarGate_F"],  
	[ "Barriere routier", "Land_Crash_barrier_F"],  
	[ "Barriere en plastique orange", "PlasticBarrier_03_orange_F"],  
	[ "Barriere en plastique jaune", "PlasticBarrier_02_yellow_F"],  
	[ "Lampe simple", "Land_PortableLight_single_F"],  
	[ "Lampe double", "Land_PortableLight_double_F"],  
	[ "Drapeau De l'ONU", "Flag_UNO_F"]  
];  
life_bar_limit = 2500;  
life_bar_placey = [];  

Ensuite continuons à créer nos fichiers, avec celui ci " fn_placeablesMenu.sqf ", ajouter y ce-ci :

/*   
	Author: Maximum  
	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;  

createDialog "life_cop_placeables";  
waitUntil { !isNull(findDisplay 20000) };  
_display = findDisplay 20000;  
_placeables = _display displayCtrl 20001;  
lbClear _placeables;  

{      
	_name = _x select 0;  
    _className = _x select 1;  
    _placeables lbAdd _name;  
    _placeables lbSetData [(lbSize _placeables) - 1, _className];  
} foreach (life_placeables);  

Créer " fn_placeablesRemoveAll.sqf ", ajouter y ce-ci :

/*   
	Author: Maximum  
	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.  
*/  
{  
	deleteVehicle _x;  
} forEach (life_bar_placey);  

Créer " fn_placeablePlace.sqf ", ajouter y ce-ci :

*   
	Author: Maximum  
	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 (count life_bar_placey >= life_bar_limit) exitWith { hint "You've reached the limit of objects you can place."; };  
_display = findDisplay 20000;  
_placeables = _display displayCtrl 20001;  
_className = lbData[20001, lbCurSel (20001)];  
closeDialog 0;  
life_barrier_active = true;  
_allowMoveDistance = 50;  
_object = _className createVehicle (position player);  
life_barrier_activeObj = _object;  
_attachPos = [0, 3, 0.5];  
_object attachTo[player, _attachPos];  
_object enableSimulationGlobal false;  
_originalPos = position _object;  
_playerOriginalPos = position player;  

waitUntil{  
	if (life_barrier_activeObj distance _originalPos > _allowMoveDistance || player distance _playerOriginalPos > _allowMoveDistance) then {  
		[true] call life_fnc_placeableCancel;  
    };  
    sleep 1;  
    !life_barrier_active;  
};  

Créer " fn_placeableCancel.sqf ", ajouter y ce-ci :

/*   
	Author: Maximum  
	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.  
*/  
if (!life_barrier_active) exitWith {}; //bad check?  
deleteVehicle life_barrier_activeObj;  
life_barrier_active = false;  
life_barrier_activeObj = ObjNull;  

Pour finir créer " fn_placeablesPlaceComplete.sqf ", ajouter y ce-ci :

/*   
	Author: Maximum  
	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_active = false;  
life_barrier_activeObj = ObjNull;  

Allez ensuite dans dialog\MasterHandler.h , Ajouter y : ( à la suite des autres )

#include "placeables.hpp"  

Toujours dans le dossier dialog, créer le fichier " placeables.hpp ", Ajouter y :

class Life_Cop_Placeables {  
	idd = 20000;  
    name= "life_cop_placeables";  
    movingEnable = false;  
    enableSimulation = true;  
    onLoad = "";  

	class controlsBackground {  
		class Life_RscTitleBackground: Life_RscText {  
			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])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"};  
			idc = -1;  
			x = 0.1;  
			y = 0.2;  
			w = 0.6;  
			h = (1 / 25);  
		};  

		class MainBackground: Life_RscText {  
			colorBackground[] = {0, 0, 0, 0.7};  
			idc = -1;  
			x = 0.1;  
			y = 0.2 + (11 / 250);  
			w = 0.6;  
			h = 0.6 - (22 / 250);  
		};  
    };  

	class controls {  
		class Title : Life_RscTitle {  
			colorBackground[] = {0, 0, 0, 0};  
			idc = -1;  
			text = "Available placeables";  
			x = 0.1;  
			y = 0.2;  
			w = 0.6;  
			h = (1 / 25);  
		};  

		class PlaceablesList : Life_RscListBox {  
			idc = 20001;  
			text = "";  
			sizeEx = 0.035;  
			x = 0.12;  
			y = 0.26;  
			w = 0.56;  
			h = 0.370;  
		};  

		class CloseButtonKey : Life_RscButtonMenu {  
			idc = -1;  
			text = "$STR_Global_Close";  
			onButtonClick = "closeDialog 0;";  
			x = -0.06 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH));  
			y = 0.8 - (1 / 25);  
			w = (6.25 / 40);  
			h = (1 / 25);  
		};  

		class RemoveAll : life_RscButtonMenu {  
			idc = -1;  
			text = "Remove all";  
			onButtonClick = "[] call life_fnc_placeablesRemoveAll";  
			x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH));  
			y = 0.8 - (1 / 25);  
			w = (6.25 / 40);  
			h = (1 / 25);  
		};  

		class Place : Life_RscButtonMenu {  
			idc = -1;  
			text = "Place";  
			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};  
			onButtonClick = "[] spawn life_fnc_placeablePlace;";  
			x = 0.32;  
			y = 0.69;  
			w = (6.25 / 40);  
			h = (1 / 25);  
		};  
    };  
};  

Ensuite toujours dans le même dossier, entrer dans le fichier player_inv.hpp et ajouter après ça :

class ButtonSyncData : life_RscButtonMenu {  
			idc = -1;  
			//shortcuts[] = {0x00050000 + 2};  
			text = "$STR_PM_SyncData";  
			onButtonClick = "[] call SOCK_fnc_syncData;";  
			x = 0.1;  
			y = 0.805;  
			w = (6.25 / 40);  
			h = (1 / 25);  
		};  

Ajouter ce-ci :

class ButtonPlaceables: Life_RscButtonMenu {  
	idc = 20003;  
	text = "Placeables";  
	onButtonClick = "[] spawn life_fnc_placeablesMenu; closeDialog 0;";  
	//x = 0.26 + (6.25 / 19.8) + (1 / 250 / (safezoneW / safezoneH));  
	x = 0.42 + (6.25 / 19.8) + (1 / 250 / (safezoneW / safezoneH));  
	y = 0.801;  
	w = (6.25 / 40);  
	h = (1 / 25);  
};  

Ensuite allez dans Core\pmenu\fn_p_openMenu.sqf et ajouter y

ctrlShow[20003,false];  

Pour la case Civ et Independant ( Pour ceux qu’il l’on )

Comme ce-ci :

switch(playerSide) do {  
	case west: {  
		ctrlShow[2011,false];	  
	};  

	case civilian: {  
		ctrlShow[2012,false];  
		ctrlShow[20003,false]; //<--- ajouter ici  
	};  
};  

C’est bientôt finis :stuck_out_tongue:

Allez dans votre fn_initCop.sqf dans Core

Et ajouter y ( à la fin )

[] spawn life_fnc_placeablesInit;  

Et pour finir allez dans Core\Function\KeyHandler.sqf

Allez tout à la fin et ajouter y :

case 46	: {  
            _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_active = false;  
            life_barrier_activeObj = ObjNull;  
            hint "Vous avez placé l'objet !";  
   	};  

**Pour la case 46 ( c’est la touche C ) Si vous voulez changer de lettre, allez ici **https://community.bistudio.com/wiki/DIK_KeyCodes

Et choisissez une lettre pas encore définit par bohémia de base, Par exemple ( la touche R, c’est pour recharger = donc impossible de la définir comme case )

Voilà, c’est tout pour moi !

**J’espère que cela vous a étais compréhensible ! En vous remerciant ! **

Un tuto de plus qui marche

Merci cela va être très pratique :slight_smile:

Tony_Escorto

Pas de problème :slight_smile:

Ne marche pas en 4.4, un tuto ? :stuck_out_tongue:

Merci en tous cas pour le tutoriel, j’attend une petite suite pour la convertion en 4.4

iLucas3D et Bryan Gordon

Salut merci déjà, et c’est ce que je vais faire car moi même étant passé en 4.4 il faut voir si cela fonctionne ^^ :slight_smile:

Mais avant cela pouvez me dire qu’est ce qui ne fonctionne pas en 4.4 avec cet version de fichier ?

Disons que le menu Y n’est plus disponible, j’ai rien testé d’autre

Arkeos

Bryan Gordon

Ok, Donc c’est un problème avec le Key Handler, tout fonctionnais correctement avant ?

Essai ça :

if (life_barrier_active) then {  
	switch (_code) do {  
		case 46: {  
			[] call life_fnc_placeablesPlaceComplete;  
		};  
	};  
	true;  
};  

En faite, je l’es fait aussi mais quand tu met en place et quand tu clique sur le menu placeable dans le menu y s’a te dis que l’objet à été placé mais en faite le menu c’est même pas ouvert et même avec la touche

Tiens moi au courant l’ami , je serrais vraiment intéressé par ce script :slight_smile:

!>!>!>!>!>![spoiler[spoiler]>!>!>!>!>!>!

5NBIQ-Z2D3D-54JX8

Merci en tous cas pour le tutoriel, j’attend une petite suite pour la convertion en 4.4

salut,

ce script fonctionne parfaitement sur la 4.4 , 4.4r2 et 4.4r3

J’ai bien suivi le tuto original

qui ajoute des objets placables by <= Jimbobob™ ,un boutton remove all et un boutton remove ajouter par @TheRick

et tout fonction parfaitement.

/*   
	Author: Maximum  
	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_barrier_activeObj = ObjNull;  
life_placeables = [  
	[ "Cone", "RoadCone_F"],  
	[ "Cone lumiere blanche", "RoadCone_L_F"],  
	[ "Panneau de signalisation", "SignAd_Sponsor_F"],  
	[ "Barriere", "Land_BarGate_F"],  
	[ "Barriere routier", "Land_Crash_barrier_F"],  
	[ "Barriere en plastique orange", "PlasticBarrier_03_orange_F"],  
	[ "Barriere en plastique jaune", "PlasticBarrier_02_yellow_F"],  
	[ "Lampe simple", "Land_PortableLight_single_F"],  
	[ "Lampe double", "Land_PortableLight_double_F"],  
	[ "Drapeau De l'ONU", "Flag_UNO_F"]  
        ["Concrete Barrier w/ Stripes","Land_CncBarrier_stripes_F"], by <= Jimbobob™  
        ["Concrete Barrier - No Stripes","Land_CncBarrier_F"], by <= Jimbobob™  
        ["Red-White Tape Barrier","TapeSign_F"] by <= Jimbobob™  
];  
life_bar_limit = 2500;  
life_bar_placey = [];  

SGCAtlantis

Merci de ta confirmation car je ne voyais rien d’autre et vue que je suis sur du 4.3 je ne pouvais pas réellement testé en 4.4 !

J’ai pas saisi, ce que tu veux dire par

Pour la case Civ et Independant ( Pour ceux qu’il l’on )

Je ne comprend pas, à quoi cela sert d’ajouter cette ligne aux civils :x

Bonjour,

J’ai bien suivi le tutoriel, mais je pense avoir fait une erreur. Le bouton placeables apparait bien dans le menu Y, je peux cliquer dessus, mais une fois arrivé sur “available placeables”, que je clique sur un objet, et que je fais “place”, il ne se passe absolument rien. Quelqu’un pour m’aider ?

Les logs du serveur affichent :

15:41:26 File mpmissions\Altis_Life.Altis\core\cop\placeables\fn_placeablePlace.sqf, line 1

Merci d’avance

EDIT : il manquait un / dans la première ligne du fichier :slight_smile: A editer :wink:

1 J'aime

salut,

ce script fonctionne parfaitement sur la 4.4 , 4.4r2 et 4.4r3

J’ai bien suivi le tuto original

qui ajoute des objets placables by <= Jimbobob™ ,un boutton remove all et un boutton remove ajouter par @TheRick

et tout fonction parfaitement.

/*   
	Author: Maximum  
	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_barrier_activeObj = ObjNull;  
life_placeables = [  
	[ "Cone", "RoadCone_F"],  
	[ "Cone lumiere blanche", "RoadCone_L_F"],  
	[ "Panneau de signalisation", "SignAd_Sponsor_F"],  
	[ "Barriere", "Land_BarGate_F"],  
	[ "Barriere routier", "Land_Crash_barrier_F"],  
	[ "Barriere en plastique orange", "PlasticBarrier_03_orange_F"],  
	[ "Barriere en plastique jaune", "PlasticBarrier_02_yellow_F"],  
	[ "Lampe simple", "Land_PortableLight_single_F"],  
	[ "Lampe double", "Land_PortableLight_double_F"],  
	[ "Drapeau De l'ONU", "Flag_UNO_F"]  
        ["Concrete Barrier w/ Stripes","Land_CncBarrier_stripes_F"], by <= Jimbobob™  
        ["Concrete Barrier - No Stripes","Land_CncBarrier_F"], by <= Jimbobob™  
        ["Red-White Tape Barrier","TapeSign_F"] by <= Jimbobob™  
];  
life_bar_limit = 2500;  
life_bar_placey = [];  

Salut !

Je sais que je poste longtemps après, mais après avoir vu ton tuto, je l’ai testé.

Rien à faire, j’ai accès au menu, je vois les objets, mais je ne peux pas les poser. Pourrais-tu m’aider ?

Je suis en 4.4R3

Merci d’avance.

Cordialement.

Nathan Nayer

Le tuto est pour les v4.3…

Harmshast

Sur ?

ce script fonctionne parfaitement sur la 4.4 , 4.4r2 et 4.4r3

J’ai bien suivi le tuto original