Français Afficher les Markers avec le zoom

  • Auteur de la discussion Auteur de la discussion BastienWolf
  • Date de début Date de début
29/12/19
320
45
61
1 100
25
Bonjour à tous.
Je vous partage un petit script que j'ai réalisé très rapidement la nuit dernière. Ce script vous permet d'afficher les markers seulement si vous zoomez sur la map.
Plutôt pratique quand vous avez beaucoup de markers au même endroit.
Voici un petit exemple :
https://gyazo.com/576b7503b8facdf82bd9ae1671b76c83
Installation du script :
  • Dans votre fichier function.hpp, ajoutez en dessous de file = "dialog\function"; :
    Code:
    class mapZoom {};
  • Dans votre fichier core/fn_setupEVH.sqf , remplacer :
    Code:
    addMissionEventHandler ["Map", {_this call life_fnc_checkMap}]
    par :
    Code:
    addMissionEventHandler ["Map", {_this call life_fnc_checkMap; _this call life_fnc_mapZoom;}];
  • Maintenant, rendez vous dans dialog/function puis créer un fichiez nommé : fn_mapZoom.sqf et insérez ceci à l'intérieur :
    Code:
    params [ ["_mapOpen",false,[false]]
    ];
    
    if (_mapOpen) then {
    uiNamespace getVariable "RscDiary" displayCtrl 51 ctrlAddEventHandler [ "MouseZChanged", {
    params[ "_ctrl" ];
    
    _markerShowMinMax = [ 0.01, 0.1 ]; //select 0 = Min , Select 1 = Max (Entre 0 et 1)
    _zoom = ctrlMapScale _ctrl;
    _show = _zoom > ( _markerShowMinMax select 0 ) && _zoom < ( _markerShowMinMax select 1 );
    
    {
    _x setMarkerAlphaLocal ( parseNumber _show );
    } forEach allMapMarkers;
    
    }];
    };
  • Si vous voulez faire en sorte que cela fonctionne seulement pour certains markers alors faites comme ceci :

    Code:
     params [ ["_mapOpen",false,[false]]
    ];
    _markers = ["Marker_Name1","Marker_name2"]; //Remplacer par vos markeurs
    if (_mapOpen) then {
    uiNamespace getVariable "RscDiary" displayCtrl 51 ctrlAddEventHandler [ "MouseZChanged", {
    params[ "_ctrl" ];
    
    _markerShowMinMax = [ 0.01, 0.1 ]; //select 0 = Min , Select 1 = Max (Entre 0 et 1)
    _zoom = ctrlMapScale _ctrl;
    _show = _zoom > ( _markerShowMinMax select 0 ) && _zoom < ( _markerShowMinMax select 1 );
    
    {
    _x setMarkerAlphaLocal ( parseNumber _show );
    } forEach _markers;
    
    }];
    };

    Et voilà, bon développement à vous.
 
Dernière édition:
Code:
 params [ ["_mapOpen",false,[false]]
];
_markers = ["Marker_Name1","Marker_name2"]; //Remplacer par vos markeurs
if (_mapOpen) then {
uiNamespace getVariable "RscDiary" displayCtrl 51 ctrlAddEventHandler [ "MouseZChanged", {
params[ "_ctrl" ];

_markerShowMinMax = [ 0.01, 0.1 ]; //select 0 = Min , Select 1 = Max (Entre 0 et 1)
_zoom = ctrlMapScale _ctrl;
_show = _zoom > ( _markerShowMinMax select 0 ) && _zoom < ( _markerShowMinMax select 1 );

{
_x setMarkerAlphaLocal ( parseNumber _show );
} forEach _markers;

}];
};

Ceci ne fonctionne pas pour moi
 
Code:
_markers = ["Marker_Name1","Marker_name2"]; //Remplacer par vos markeurs

Vue que tu l'as collé comme ça, tu as bien modifié le nom de tes markeurs / changé la variable ?
 
Oui tout est ok genre quand je met celui-ci :
Code:
params [ ["_mapOpen",false,[false]]
];
if (_mapOpen) then {
uiNamespace getVariable "RscDiary" displayCtrl 51 ctrlAddEventHandler [ "MouseZChanged", {
params[ "_ctrl" ];
_markerShowMinMax = [ 0.01, 0.1 ]; //select 0 = Min , Select 1 = Max (Entre 0 et 1)
_zoom = ctrlMapScale _ctrl;
_show = _zoom > ( _markerShowMinMax select 0 ) && _zoom < ( _markerShowMinMax select 1 );
{
_x setMarkerAlphaLocal ( parseNumber _show );
} forEach allMapMarkers;

}];

};

Mais l'autre non et oui j'ai bien changer le nom des marker la j'ai juste copié coller celui de Bastien
 
C'est bon sa fonctionne finalement j'ai trouvé.
Alors je sais pas pourquoi sa ne fonctionne pas de manière traditionnel mais voici ce que j'ai du faire :

Code:
params [ ["_mapOpen",false,[false]]
];

if (_mapOpen) then {
uiNamespace getVariable "RscDiary" displayCtrl 51 ctrlAddEventHandler [ "MouseZChanged", {
params[ "_ctrl" ];

_markerShowMinMax = [ 0.01, 0.1 ]; //select 0 = Min , Select 1 = Max (Entre 0 et 1)
_zoom = ctrlMapScale _ctrl;
_show = _zoom > ( _markerShowMinMax select 0 ) && _zoom < ( _markerShowMinMax select 1 );

{
_x setMarkerAlphaLocal ( parseNumber _show );
} forEach ["Marker_Name1","Marker_name2"]; //Plutôt que les déclarer dans un variable j'ai du les mettre ici directement.

}];
};

Voilà !
 
  • Like
Les réactions: Nirawin