• Dépanneurs améliorés (version addAction)


    Bonjour à toutes et à tous!

    Je vous présente ma dernière petite activité, basée sur le travail de Warnerm14 :

    https://www.altisliferpg.com/topic/350-warners-barriers-place-cones-bar-gates-barriers-and-more-v3/

    1./ Principe de fonctionnement:

    Dans le but de mettre un peu plus en avant le métier de dépanneur, je souhaitais imposer aux joueurs le fait d’appeler un dépanneur sans pour autant les brider.

    Dans ce script, on prend en compte le fait que les dépanneurs se trouvent chez les Indépendants et qu’il n’y a ni licence ou niveau dans la base de données. Si vous souhaitez ajouter cela, faites le par vous même, je ne vous offre que la mécanique de base

    Lorsqu’un indépendant visera un véhicule, celui-ci pourra accéder à un menu d’action lui permettant de pouvoir réparer les différentes partie d’un véhicule terrestre.

    Si au moins 5 indépendants sont connectés sur le serveur, les civils ne pourront réparer leur véhicule au-delà de 50% (orange), de plus, toutes les parties du véhicule seront à 50%. Si leur véhicule n’était plus fonctionnel, il pourra rouler mais mieux vaut ne pas entamer une course poursuite!

    Si il y a moins de 5 indépendants de connectés sur le serveur, les trousses à outil fonctionneront normalement.

    Il est important de définir au préalable des tarifs de réparations n’excédant pas les prix de sortie des véhicules afin que les joueurs jouent le jeu.

    Le script est libre de droit et openSource, merci de laisser la patte de l’auteur

    Je vous invite également à lire les codes avant de copier-coller bêtement et essayer de comprendre ce qu’il se passe. Il n’y a rien de compliqué et vous pourrez facilement moduler les codes comme ça vous arrange!

    2./ Application:

    Aller dans \core\functions et créer un nouveau fichier que vous appellerez fn_repairDep.sqf.

    Insérez dedans:

    /*
    	Auteur: Protogun
    	Fichier: fn_repairDep.sqf
    
    	Vous pouvez utiliser ce script autant que vous le souhaitez, mon travail est openSource, merci néanmoins de laisser le nom de l'auteur
    	Je me suis basé sur le travail de Warnerm14 pour son fichier fn_barrier.sqf dont voici les crédits:
    
    		Author: Warnerm14
    		Contact: https://steamcommunity.com/id/Warnerm14/ or https://twitter.com/Warnerm14
    		Desc: Warner's Barriers for Altis Life
    		Permission: Feel free to adapt to work best for your server. Do not remove this comment block.
    		Version 3
    		Oct 2016
    */
    
    player removeAction depWheel;
    player removeAction depFuel;
    player removeAction depEngine;
    player removeAction depBody;	
    player removeaction depHull;
    player removeAction depClose;
    player removeAction depGlass;
    player removeAction depDirect;
    
    repdepOpen = 1;
    
    repdepWheel = {
    	cursorTarget setHitPointDamage ["HitLFWheel", 0];
    	cursorTarget setHitPointDamage ["HitLF2Wheel", 0];
    	cursorTarget setHitPointDamage ["HitRFWheel", 0];
    	cursorTarget setHitPointDamage ["HitRF2Wheel", 0];
    };
    
    repdepFuel = {
    	cursorTarget setHitPointDamage ["HitFuel", 0];
    };
    
    repdepEngine = {
    	cursorTarget setHitPointDamage ["HitEngine", 0];
    };
    
    repdepBody = {
    	cursorTarget setHitPointDamage ["HitBody", 0];
    };
    
    repdepHull = {
    	cursorTarget setHitPointDamage ["HitHull", 0];
    };
    
    repdepGlass = {
    	cursorTarget setHitPointDamage ["HitGlass1", 0];
    	cursorTarget setHitPointDamage ["HitGlass2", 0];
    	cursorTarget setHitPointDamage ["HitGlass3", 0];
    	cursorTarget setHitPointDamage ["HitGlass4", 0];
    	cursorTarget setHitPointDamage ["HitGlass5", 0];
    	cursorTarget setHitPointDamage ["HitGlass6", 0];
    	cursorTarget setHitPointDamage ["HitRGlass", 0];
    	cursorTarget setHitPointDamage ["HitLGlass", 0];
    };
    
    repdepDirect = {
    	cursorTarget setHitPointDamage ["HitLBWheel", 0];
    	cursorTarget setHitPointDamage ["HitLMWheel", 0];
    	cursorTarget setHitPointDamage ["HitRBWheel", 0];
    	cursorTarget setHitPointDamage ["HitRMWheel", 0];
    };
    
    depWheel = player addaction [("<t color=""#00ced1"">" + ("Changer les roues") +"</t>"),{call repdepWheel;},[""],0.1,false,true,"",'(cursorTarget isKindOf "Car")'];
    depFuel = player addaction [("<t color=""#00ced1"">" + ("Changer le réservoir") +"</t>"),{call repdepFuel;},[""],0.1,false,true,"",'(cursorTarget isKindOf "Car")'];
    depEngine = player addaction [("<t color=""#00ced1"">" + ("Changer le moteur") +"</t>"),{call repdepEngine;},[""],0.1,false,true,"",'(cursorTarget isKindOf "Car")'];
    depBody = player addaction [("<t color=""#00ced1"">" + ("Refaire la carrosserie") +"</t>"),{call repdepBody;},[""],0.1,false,true,"",'(cursorTarget isKindOf "Car")'];
    depHull = player addaction [("<t color=""#00ced1"">" + ("Refaire le châssis") +"</t>"),{call repdepHull;},[""],0.1,false,true,"",'(cursorTarget isKindOf "Car")'];
    depGlass = player addaction [("<t color=""#00ced1"">" + ("Changer les vitres") +"</t>"),{call repdepGlass;},[""],0.1,false,true,"",'(cursorTarget isKindOf "Car")'];
    depDirect = player addaction [("<t color=""#00ced1"">" + ("Refaire la direction") +"</t>"),{call repdepDirect;},[""],0.1,false,true,"",'(cursorTarget isKindOf "Car")'];
    depClose = player addaction [("<t color=""#FF3300"">" + ("Fermer") +"</t>"),{
    
    	player removeAction depWheel;
    	player removeAction depFuel;
    	player removeAction depEngine;
    	player removeAction depBody;	
    	player removeaction depHull;
    	player removeAction depClose;
    	player removeAction depGlass;
    	player removeAction depDirect;
    
    	repdepOpen = 0;
    }];
    

    Sauvegarder et fermer.

    Aller à la racine de votre mission et ouvrez Functions.hpp

    Sous class Functions { insérez ceci:

    		class repairDep {};
    

    Comme ceci:

        class Functions {
            file = "core\functions";
            class AAN {};
            class accType {};
            class actionKeyHandler {};
            class animSync {};
            ...
    	class repairDep {};
        };
    

    Ouvrez initPlayerLocal.sqf

    Ajoutez ceci tout à la fin :

    repdepOpen = 0;
    

    Rendez-vous à présent dans \core et ouvrez fn_setupActions.sqf :

    Ajoutez la case independent si ce n’est pas déjà fait et insérez ceci :

    player addaction ["Réparer le véhicule",life_fnc_repairDep,[""],0,false,true,"","vehicle player == player and repdepOpen == 0 and (cursorTarget isKindOf ""car"")"];
    

    Comme ceci:

    /*
        File: fn_setupActions.sqf
        Author:
    
        Description:
        Master addAction file handler for all client-based actions.
    */
    switch (playerSide) do {
        case civilian: {
            //Drop fishing net
            life_actions = [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 ']];
            //Rob person
            life_actions = life_actions + [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 independent: {
    		 player addaction ["Réparer le véhicule",life_fnc_repairDep,[""],0,false,true,"","vehicle player == player and repdepOpen == 0 and (cursorTarget isKindOf ""car"")"];
    	};
    };
    

    Pour finir rendez-vous dans \core\actions et ouvrez fn_repairTruck.sqf

    Trouvez, vers la fin du fichier :

            _veh setDamage 0;
            titleText[localize "STR_NOTF_RepairedVehicle","PLAIN"];
    

    Remplacez par:

            _dep = (independent countSide playableUnits);
    
    		If ((_dep < 5) || (_veh isKindOf "Ship") || (_veh isKindOf "Air")) Then {
    			_veh setDamage 0;
    			hint "Vous avez réparé votre véhicule avec succès car il y a moins de 5 membres du service public de connecté.";
    		} else {
    			_veh setDamage 0.5;
    			hint "Vos compétences laborieuses en mécanique vous ont permis de rendre le véhicule plus ou moins en état de rouler. Vous devriez contacter un dépanneur.";
    		};
        };
    

    Voilà c’est tout pour aujourd’hui! Amusez-vous bien^^

  • J’ai ajouté un oubli à la fin du tuto^^ Désolé pour les gens que j’aurais embrouillé^^

  • @Proto-LEDG
    Franchement, ça serait plus propre avec une interface

    => version addaction, tu vas faire une seconde version ?

    Cdt.

  • C’est propre! C’est un menu qui déploie un sous-menu^^

    Comme dit je préfère les addAction car ça n’ouvre pas de boîte de dialogue et ça conserve l’immersion^^

    Bah déjà je sais qu’il y a plusieurs projet en cours à ce sujet donc on sait jamais^^

    Et comme en ce moment je m’amuse un peu avec les boite de dialogue c’est pas impossible que je fasse une version 2.0^^

  • @Cameron_gaming garde juste le player addAction dans “case civilian” (avec ses paramètres bien entendu) et à la fin il faudra ceci:

    "vehicle player == player and repdepOpen == 0 and (cursorTarget isKindOf ""car"" and license_civ_Depanneur)"
    

    Cela suffira^^

    A savoir que le point d’exclamation devant inverse. Donc tu indiques que c’est pour tous ceux qui n’ont pas la licence^^

  • @Proto-LEDG je pensses que le tuto devrais être supprimer, il n’est pas du tout fonctionnel.

  • @Xonderv Fais une demande d’aide et support car pour ma part il a très bien marché et si tu rencontres un souci n’accuse pas le tuto mais plutôt la couche ICC^^

  • Mise à jour du tuto! Je viens de voir que je m’étais planter dans le call de mes addAction!!!

    Ceci est corrigé à présent^^

  • Mis à jour pour mon serv et donc il est Fonctionnel en 5.0 . Impeccable et un grand merci. ;)

  • Bonjour,

    Apres avoir installer sur mon serveur en V5 seul mon indépendant peut réparer les autres classe on l’option réparer avec la touche win mais aucune action ne ce passe??
    J’ai chercher de mon coté j’au aussi contrôle l’installation mais pas réussi a trouver d’ou cela pouvais venir.
    Sauriez vous me dire d’ou cela pourrai venir??

  • @psycho-tn Ouvre un nouveau post dans “aide et support”… cela sera mieux… en suivant le modéle.

  • Bonjour, et’il possible de méttre les civiles a la place des independents ?

  • @miller-stan oui, regarde + haut il me semble…

  • @Cameron_gaming la ligne doit bien etre comme ceci ?

    switch (playerSide) do {
        case civilian: {
        //Présenter son passeport  
            life_actions = life_actions + [player addAction["<t color='#00FF00'>Présenter son passeport</t>",life_fnc_civShowLicense,"",1,false,true,"",' playerSide == civilian && !isNull cursorTarget && cursorTarget isKindOf "Man" ']];  
    		
    		life_actions pushBack (player addAction["<t color = '#D660D6'>Attacher votre ceinture</t>",life_fnc_seatbelt,"",7,false,false,"",' !life_seatbelt && vehicle player != player ']);
    		life_actions pushBack (player addAction["<t color = '#D660D6'>Détacher votre Ceinture</t>",life_fnc_seatbelt,"",7,false,false,"",' life_seatbelt && vehicle player != player ']);
    		
    		//ICI
    		player addaction["Réparer le véhicule",life_fnc_repairDep,[""],0,false,true,"","vehicle player == player and repdepOpen == 0 and (cursorTarget isKindOf ""car"" and license_civ_dir)"```
  • Il te suffis de remonter un peux dans le sujet !

    @ a dit dans Dépanneurs améliorés (version addAction) :

    @Cameron_gaming garde juste le player addAction dans “case civilian” (avec ses paramètres bien entendu) et à la fin il faudra ceci:

    "vehicle player == player and repdepOpen == 0 and (cursorTarget isKindOf ""car"" and license_civ_Depanneur)"
    

    Cela suffira^^

    A savoir que le point d’exclamation devant inverse. Donc tu indiques que c’est pour tous ceux qui n’ont pas la licence^^

    et ajoute un ]; a la fin …

  • @brutalzic justement j’ai regardé et j’ai pas vraiment compris car le code est pas complet

  • c est ce qu il faut ajouter dans le addaction:
    https://community.bistudio.com/wiki/addAction

  • Bonjour, je cherche à mettre les dépanneurs du coté civil et du coup je voulais savoir si il étais possible qu’au lieu que le script compte les independant, il compte les personne ayant la licence dépanneur ( qui sont en civil )

  • @julien9085 a dit dans Dépanneurs améliorés (version addAction) :

    je voulais savoir si il étais possible qu’au lieu que le script compte les independant, il compte les personne ayant la licence dépanneur ( qui sont en civil )

    Oui c est possible !

  • @brutalzic Est ce que ceci pourrai marcher, merci de ta réponse ^^ : _dep = (civillian && license_civ_dep countSide playableUnits);

Messages 27Vues 5971