• [4.x] Menu objets


    Salut, je vous propose une traduction d’un tutoriel pour placer des objets en tant que policier et médecin.
    Le tutoriel n’est pas de moi mais de Maximum sur AltisLifeRPG.

    N’oubliez pas de faire une sauvegarde de vos fichiers avant toute modification !

    Ouvrez votre Functions.hpp et ajoutez ceci :

    class Placeables {
    file = "core\functions\placeables";
     class placeablesInit {};
     class medicPlaceablesInit {};
     class placeablesMenu {};
     class placeablesRemoveAll {};
     class placeablePlace {};
     class placeableCancel {};
     class placeablesPlaceComplete {};
    };
    

    Ouvrez votre fichier stringtable.xml et ajoutez à la fin :

    <Package name="Placeables">
            <Key ID="STR_PL_Cone">
                <Original>Cône</Original>
            </Key>
            <Key ID="STR_PL_ConeLumineux">
                <Original>Cône lumineux</Original>
            </Key>
            <Key ID="STR_PL_PetiteBarriereRoutiere">
                <Original>Petite barrière routière</Original>
            </Key>
            <Key ID="STR_PL_GrandeBarriereRoutiere">
                <Original>Grande barrière routière</Original>
            </Key>
            <Key ID="STR_PL_BarriereBeton">
                <Original>Barrière en béton</Original>
            </Key>
            <Key ID="STR_PL_BarrierePlastiqueOrange">
                <Original>Barrière en plastique orange</Original>
            </Key>
            <Key ID="STR_PL_BarrierePlastiqueJaune">
                <Original>Barrière en plastique jaune</Original>
            </Key>
            <Key ID="STR_PL_Spot">
                <Original>Spot de chantier</Original>
            </Key>
            <Key ID="STR_PL_DoubleSpot">
                <Original>Double spot de chantier</Original>
            </Key>
        </Package>
    

    Ouvrez votre configuration.sqf (dans votre dossier core) et ajoutez ceci :

    /*
    **************************************
    ****** Placeables Variables *****
    **************************************
    */
    life_definePlaceables =
    [
     "RoadCone_F",
     "RoadCone_L_F",
     "RoadBarrier_small_F",
     "RoadBarrier_F",
     "Land_CncBarrier_stripes_F",
     "PlasticBarrier_03_orange_F",
     "PlasticBarrier_02_yellow_F",
     "Land_PortableLight_single_F",
     "Land_PortableLight_double_F"
    ];
    life_bar_limit = 2500;
    

    Ouvrez votre fn_initCiv.sqf (dans votre dossier core) et ajoutez cette ligne à la fin :

    life_barrier_active = false;
    

    Ouvrez votre fn_initCop.sqf (dans votre dossier core) et ajoutez cette ligne à la fin :

    [] spawn life_fnc_placeablesInit;
    

    Ouvrez votre fn_initMedic.sqf (dans votre dossier core) et ajoutez cette ligne à la fin :

    [] spawn life_fnc_medicPlaceablesInit;
    

    Ouvrez votre fn_keyHandler.sqf (dans votre dossier core\functions) et ajoutez ceci :

    if (life_barrier_active && {speed player < 1.75}) then {
        switch (_code) do {
            //Space key
            case 57:{
                [] spawn life_fnc_placeablesPlaceComplete;
                systemChat "L'objet est placé";
            };
        };
        true;
    };
    
    //Delete key
    switch (_code) do {
        case 211: {
            if ((typeOf cursorObject) in life_definePlaceables && playerSide in [west,independent]) then {
            deleteVehicle cursorObject;
            systemChat "L'objet a été supprimé";
            };
        };
    };
    //O Key
    case 24: {
     if ({isNull(findDisplay 20000)} && playerSide in [west,independent]) then {
     0 spawn life_fnc_placeablesMenu;
     _handled = true;
     };
     _handled = true;
    };
    

    Et remplacez ceci :

    case 57: {
            if (isNil "jumpActionTime") then {jumpActionTime = 0;};
            if (_shift && {!(animationState player isEqualTo "AovrPercMrunSrasWrflDf")} && {isTouchingGround player} && {stance player isEqualTo "STAND"} && {speed player > 2} && {!life_is_arrested} && {((velocity player) select 2) < 2.5} && {time - jumpActionTime > 1.5}) then {
                jumpActionTime = time; //Update the time.
                [player] remoteExec ["life_fnc_jumpFnc",RANY]; //Global execution
                _handled = true;
            };
        };
    

    par ceci :

    if (!life_barrier_active) then {
        case 57: {
            if (isNil "jumpActionTime") then {jumpActionTime = 0;};
            if (_shift && {!(animationState player isEqualTo "AovrPercMrunSrasWrflDf")} && {isTouchingGround player} && {stance player isEqualTo "STAND"} && {speed player > 2} && {!life_is_arrested} && {((velocity player) select 2) < 2.5} && {time - jumpActionTime > 1.5}) then {
                jumpActionTime = time; //Update the time.
                [player] remoteExec ["life_fnc_jumpFnc",RANY]; //Global execution
                _handled = true;
            };
        };
    };
    

    Ouvrez votre MasterHandler.hpp (dans votre dossier dialog) et ajoutez cette ligne à la fin :

    #include "placeables.hpp"
    

    Créez un fichier placeables.hpp (dans votre dossier dialog) et collez dedans :

    class Life_Menu_Placeables {
     idd = 20000;
     name= "life_menu_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 = "Objets disponibles";
     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 = "Tout suppr";
     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 = "Placer";
     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);
     };
     };
    };
    

    Pour finir, téléchargez le dossier : placeables et ajoutez le dans le dossier functions de votre serveur.

    C’est fini !

    N’hésitez pas à me signaler si vous avez le moindre soucis, j’essayerai de vous aider du mieux que je peux.

  • Explications :

    Dans votre fichier configuration.sqf, c’est ici que vous définissez quels sont les objets qui pourront être supprimés avec la touche SUPPR de votre clavier. Il est important que la liste soit la même à celles présentes dans les fichiers fn_placeablesInit.sqf et fn_medicPlaceablesInit.sqf (dans le dossier placeables) sans quoi vous ne pourrez pas supprimer les objets que vous ajouterez.

    Dans votre fichier fn_keyHandler.sqf :

    if (life_barrier_active && {speed player < 1.75}) then {
        switch (_code) do {
            //Space key
            case 57:{
                [] spawn life_fnc_placeablesPlaceComplete;
                systemChat "L'objet est placé";
            };
        };
        true;
    };
    

    Ce code permet de placer un objet avec la touche espace, à condition d’en avoir un ‘dans les mains’ et de ne pas courir. Pourquoi ne pas courir ? Car si vous placez un objet en courant, celui ci va tomber et vous tuer, tout simplement.

    //Delete key
    switch (_code) do {
        case 211: {
            if ((typeOf cursorObject) in life_definePlaceables && playerSide in [west,independent]) then {
            deleteVehicle cursorObject;
            systemChat "L'objet a été supprimé";
            };
        };
    };
    

    Celui ci permet de supprimer les objets que vous regardez avec la touche SUPPR, à condition qu’ils soient dans la liste des life_definePlaceables présente dans votre fichier configuration.sqf et que le joueur soit un policier ou un médecin.

    //O Key
    case 24: {
     if ({isNull(findDisplay 20000)} && playerSide in [west,independent]) then {
     0 spawn life_fnc_placeablesMenu;
     _handled = true;
     };
     _handled = true;
    };
    

    Celui ci permet d’ouvrir le menu avec la touche O, à condition que le joueur soit un policier ou un médecin.

    Pour finir, dans les fichiers fn_placeablesInit.sqf et fn_medicPlaceablesInit.sqf, c’est là que vous définissez quels objets seront disponibles, fn_placeablesInit.sqf pour la police et fn_medicPlaceablesInit.sqf pour les médecins.

    Attention : La grande barrière ne se supprime pas avec la touche SUPPR, raison pour laquelle je l’ai retirée de ces fichiers.

  • Salut ton script allaire bien mais ne marche pas on peut plus avoirs accet au menu y

  • Attention le code est faut

    //O Key
    case 24: {
     if ({isNull(findDisplay 20000)} && playerSide in [west,independent]) then {
     0 spawn life_fnc_placeablesMenu;
     _handled = true;
     };
     _handled = true;
    };
    

    ceci ne veut rien dire il faut le corriger est ça pour qu’il fonctionne:

    	//enter key (entrer)
    	case 28: {
    		if (_shift && playerSide in [west,independent]) then {
    		[] spawn life_fnc_placeablesMenu;
    		_handled = true;
    		};
    		_handled = true;
    		};
    	};
    
    

    Alors moi j’ai fais que c’est la touche shift + enter donc a vous de modifier la touche que vous aimeriez.

  • fonctionne en 5.0 mais fait tous bugger 5 minutes apres

  • @warenpumba
    A part dire que ça fonctionne pas, sait-tu dire autre chose :thinking: ?
    A part installer des tutos, sait-tu faire autre chose :thinking: ?

  • @warenpumba a dit dans [4.x] Menu objets :

    fonctionne en 5.0 mais fait tous bugger 5 minutes apres

    Le probleme c est toi et pas les scripts … quand y a marque version 4.x, t etonne pas que ca marche pas en 5.0 !!

  • et il beug pas… suis en 5.0 et fonctionne IMPECCABLE. Le problème vient de toi…

Messages 8Vues 2419