Français Traqueur sur vehicules

  • Auteur de la discussion Auteur de la discussion Zomblard
  • Date de début Date de début

Zomblard

User
11/6/20
194
9
19
800
Salut nouveau tuto pour la 5.0 :

Réadapter pour la v5.0 fait par Poseidon

Ceci permet a ce qui y ont accès de poser des traqueur sur les véhicules.

Rendez vous dans config\Config_vItems.hpp :
Rajouter ceci dans les shop ou vous voulez qu'il puisse l'acheter attention au virgule :
Code:
"gpstracker"

En dessous de class VirtualItems { rajoutez :
Code:
class gpstracker {
        variable = "gpstracker";
        displayName = "STR_Item_tracker";
        weight = 2;
        buyPrice = 7500;
        sellPrice = -1;
        illegal = false;
        edible = -1;
        drinkable = -1;
        icon = "icons\tracker.paa";
    };

Rendez-vous dans stringtable.xml
sous :
Code:
<Key ID="STR_Item_Pickaxe">
            <Original>Pioche</Original>
        </Key>
Ajoutez :
Code:
<Key ID="STR_Item_tracker">
            <Original>Traqueur GPS</Original>
        </Key>

Rendez-vous maintenant dans Functions.hpp
Dans class Items {
Rajoutez : class gpsTracker {};

Créer le fichier fn_gpsTracker.sqf dans core\items
Code:
/*
    File: fn_gpsTracker.sqf
    Author: Poseidon
    Description: Attaches a gps tracker to selected vehicle
*/
private["_unit"];
_unit = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
if(isNull _unit) exitWith {};
if(!(_unit isKindOf "AllVehicles")) exitWith {hint "Vous ne pouvez pas utiliser le traceur GPS ici."};
if(player distance _unit > 7) exitWith {hint "Vous devez vous tenir plus près du véhicule!"};
if(!([false,"gpstracker",1] call life_fnc_handleInv)) exitWith {};
closeDialog 0;
life_action_inUse = true;
player playMove "AinvPknlMstpSnonWnonDnon_medic_1";
sleep 4;
life_action_inUse = false;
if(player distance _unit > 7) exitWith {titleText["Vous n'êtes pas à proximité d'un véhicule!","PLAIN"];};
titleText["Vous avez attaché un traceur GPS à ce véhicule.","PLAIN"];
[_unit] spawn {
    _veh = _this select 0;
    _markerName = format["%1_gpstracker",_veh];
    _marker = createMarkerLocal [_markerName, visiblePosition _veh];
    _marker setMarkerColorLocal "ColorRed";
    _marker setMarkerTypeLocal "Mil_dot";
    _marker setMarkerTextLocal "Traceur "+getText(configFile >> "CfgVehicles" >> typeof _veh >> "displayName");
    _marker setMarkerPosLocal getPos _veh;
    while {true} do {
        if(not alive _veh) exitWith {deleteMarkerLocal _markerName;};
        _marker setMarkerPosLocal getPos _veh;
        sleep 2;//Si vous voulez qu'il actualise plus ou moins vite modifier ici
    };
};

Rendez-vous dans core\pmenu\fn_useItem.sqf
En dessous de
Code:
case "boltcutter": {
        [cursorObject] spawn life_fnc_boltcutter;
        closeDialog 0;
    };
ajoutez :
Code:
 case "gpstracker": {
        [cursorTarget] spawn life_fnc_gpsTracker;
    };

Pour finir ajoutez dans votre dossier icons tracker.paa
Et voila
 

Fichiers joints

Dernière édition:
Hello ! Pense à rajouter les sources
 
Bonne initiative de partager ce script.
Mais comme le dit Daniels Morris Daniels Morris, il serait beaucoup plus intéressant de travailler avec les events handler plutôt qu’une boucle infinie :)
 
Dono52 Dono52
  1. Dans le shop où tu as ajouter "gpstracker" (1ere Étape), tu va acheter le GPS Tracker
  2. Tu t'approche d'un véhicule en le visant
  3. Tu ouvre le menu Y
  4. Tu sélectionne le GPS Tracker
  5. Tu clique sur Utiliser

Une fois le GPS Tracker placé, quand tu ouvre ta map, tu verra un marqueur relié au GPS Tracker, qui s'actualisera toutes les 2 secondes.
 
  • Like
Les réactions: Dono52
Oula la vilaine boucle, un eventhandler existe pour
Je suis d'accord, l'eventHandler serais top.
Par contre, il sera obligé de faire une boucle s'il fait comme ça. S'il veut que quand la map est open le marker change d'emplacement.
Un Draw aurais fait un bon taf je pense :D
 
Bonjour, merci pour le tutoriel. Est-ce que c'est possible que cela soit save en db pendant 5 jours ? Je trouve le système cool surtout pour la Police.

Salutations.
 
Bien sûr, tout est possible en soit. Mais pour le coup c'est vraiment pas simple. Dans les grandes lignes il faudra :
  • Ajouter dans ta base de données une colonne pour la personne qui a placé le traqueur, et une autre pour la date d'expiration du traqueur
  • Créer un fichier (+ définir la fonction et autoriser le remoteExec) dans le life_server pour sauvegarder dans la base de données le placement du traqueur, en calculant la date d'expiration de celui-ci
  • Modifier le fn_getVehicles.sqf pour qu'il définisse une variable avec l'id du joueur qui a placé un traqueur
  • A la connexion du joueur, vérifier tous les véhicules sortis sur la carte et si y'en a un dont le joueur a un traqueur dessus, alors il faut afficher les marqueurs
  • Modifier le fn_spawnVehicle.sqf pour que le marqueur soit visible par le joueur si le véhicule est sorti du garage après la connexion du joueur qui a mis le traqueur
 
  • Like
Les réactions: hwe
bonjour a tous , pour sa fonctionne correctement j ai fait une petit modiff :

Rendez-vous dans core\pmenu\fn_useItem.sqf
En dessous de
Code:
case "boltcutter": {
        [cursorObject] spawn life_fnc_boltcutter;
        closeDialog 0;
};
ajoutez :
Code:
    case (_item isEqualTo "gpstracker"): {
        [cursorTarget] spawn life_fnc_gpsTracker;
    };
 
Dernière édition par un modérateur:
C'est un peu étonnant :unsure:
Dans ton fn_useItem.sqf tu as un :
Code:
switch (_item) do {
ou :
Code:
switch (true) do {
oui car j ai fait la manip avant faire ma modif sa fonctionnait pas du gout j ai bien regarde et j ai vue sur les autre ligne il avait : case (_item isEqualTo / du gout j ai testé et sa fonctionne bien , si tu veux testé sa va fonctionne :D
 
  • Ok
Les réactions: Maxence