Jump to content
Antman2o1o

Working On A Player Mini Map Like in Squad

Recommended Posts

Hey, folks super stuck here maybe one of you Arma Dev Gods can help finish this off.

PURPOSE OF CODE:

I am trying to build a mini-map like in the game Squad. So you don't have to come out of the game to check your map.

WHY:

This would be extremely helpful to folks who are flying in jets so they don't crash when they come out of the game to check their map.

I have most of the map working to include positioning.  I just can't figure out how to create an open and close feature to call the map.  I am not sure how to bind a key to open or close the map.

There is also a map line marker error I can't figure out as well. So maybe someone with more skill can finish this out and share the code.

 

THOUGHTS:

This would have to work multiplayer for each faction player.  Maybe triggered from onPlayerRespawn.sqf

 

Credit Goes To Larrow for map code

Any help highly appreciated

ANT

 

CODE BELOW:

init.sqf

fnc_updateMiniMap = {
_map = _this select 0;
_map ctrlMapAnimAdd [0, 0.05, player];
ctrlMapAnimCommit _map;
};

waitUntil { time > 0 };

//Show MiniMap
( [ "myMiniMap" ] call BIS_fnc_rscLayer ) cutRsc [ "myMap", "PLAIN", 1, false ];

 

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

description.ext

 

#include "basedefines.hpp"

 

class RscTitles
{
     #include "minimap.hpp"
};

 

_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

 

minimap.hpp

 

class myMap
{

idd = 20000;
duration = 1e10;
fadein = 0;
fadeout = 0;

class controlsBackground
{

    class theMiniMap : RscMapControl
    {

        idc = 38555;
        type = 101;
        style = 48;
        moveOnEdges = 0;
        x = 0.2 * safeZoneX;
        y = 0.2 * safeZoneY;
        w = 0.6 * safeZoneW;
        h = 0.6 * safeZoneH;
                widthRailWay = 1;

        onDraw = "_this call fnc_updateMiniMap";
    };

};
};

 

____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

basedefines.hpp

 

///////////////////////////////////////////////////////////////////////////
/// Styles
///////////////////////////////////////////////////////////////////////////

// Control types

#define CT_MAP_MAIN       101

#define ST_PICTURE        48


///////////////////////////////////////////////////////////////////////////
/// Base Classes
///////////////////////////////////////////////////////////////////////////


class RscMapControl
{
moveOnEdges = 0;
shadow = 0;
ptsPerSquareSea = 5;
ptsPerSquareTxt = 20;
ptsPerSquareCLn = 10;
ptsPerSquareExp = 10;
ptsPerSquareCost = 10;
ptsPerSquareFor = 9;
ptsPerSquareForEdge = 9;
ptsPerSquareRoad = 6;
ptsPerSquareObj = 9;
showCountourInterval = 0;
scaleMin = 0.001;
scaleMax = 1.0;
scaleDefault = 0.16;
maxSatelliteAlpha = 0.85;
alphaFadeStartScale = 2;
alphaFadeEndScale = 2;
colorBackground[] = {0.969,0.957,0.949,1.0};
colorText[] = {0,0,0,0};
colorSea[] = {0.467,0.631,0.851,0.5};
colorForest[] = {0.624,0.78,0.388,0.5};
colorForestBorder[] = {0.0,0.0,0.0,0.0};
colorRocks[] = {0.0,0.0,0.0,0.3};
colorRocksBorder[] = {0.0,0.0,0.0,0.0};
colorLevels[] = {0.286,0.177,0.094,0.5};
colorMainCountlines[] = {0.572,0.354,0.188,0.5};
colorCountlines[] = {0.572,0.354,0.188,0.25};
colorMainCountlinesWater[] = {0.491,0.577,0.702,0.6};
colorCountlinesWater[] = {0.491,0.577,0.702,0.3};
colorPowerLines[] = {0.1,0.1,0.1,1.0};
colorRailWay[] = {0.8,0.2,0.0,1.0};
colorNames[] = {0.1,0.1,0.1,0.9};
colorInactive[] = {1.0,1.0,1.0,0.5};
colorOutside[] = {0.0,0.0,0.0,1.0};
colorTracks[] = {0.84,0.76,0.65,0.15};
colorTracksFill[] = {0.84,0.76,0.65,1.0};
colorRoads[] = {0.7,0.7,0.7,1.0};
colorRoadsFill[] = {1.0,1.0,1.0,1.0};
colorMainRoads[] = {0.9,0.5,0.3,1.0};
colorMainRoadsFill[] = {1.0,0.6,0.4,1.0};
colorGrid[] = {0.1,0.1,0.1,0.6};
colorGridMap[] = {0.1,0.1,0.1,0.6};
font = "TahomaB";
sizeEx = 0.040000;
fontLabel = "PuristaMedium";
sizeExLabel = "(            (            (            ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontGrid = "TahomaB";
sizeExGrid = 0.02;
fontUnits = "TahomaB";
sizeExUnits = "(            (            (            ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontNames = "EtelkaNarrowMediumPro";
sizeExNames = "(            (            (            ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8) * 2";
fontInfo = "PuristaMedium";
sizeExInfo = "(            (            (            ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
fontLevel = "TahomaB";
sizeExLevel = 0.02;
text = "#(argb,8,8,3)color(1,1,1,1)";
class Legend
{
    x = "SafeZoneX +                     (            ((safezoneW / safezoneH) min 1.2) / 40)";
    y = "SafeZoneY + safezoneH - 4.5 *                     (            (            ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
    w = "10 *                     (            ((safezoneW / safezoneH) min 1.2) / 40)";
    h = "3.5 *                     (            (            ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
    font = "PuristaMedium";
    sizeEx = "(            (            (            ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
    colorBackground[] = {1,1,1,0.5};
    color[] = {0,0,0,1};
};
class Task
{
    icon = "\A3\ui_f\data\map\mapcontrol\taskIcon_CA.paa";
    iconCreated = "\A3\ui_f\data\map\mapcontrol\taskIconCreated_CA.paa";
    iconCanceled = "\A3\ui_f\data\map\mapcontrol\taskIconCanceled_CA.paa";
    iconDone = "\A3\ui_f\data\map\mapcontrol\taskIconDone_CA.paa";
    iconFailed = "\A3\ui_f\data\map\mapcontrol\taskIconFailed_CA.paa";
    color[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_A',0.8])"};
    colorCreated[] = {1,1,1,1};
    colorCanceled[] = {0.7,0.7,0.7,1};
    colorDone[] = {0.7,1,0.3,1};
    colorFailed[] = {1,0.3,0.2,1};
    size = 27;
    importance = 1;
    coefMin = 1;
    coefMax = 1;
};
class Waypoint {
    icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa";
    color[] = {0.00, 0.00, 0.00, 1.00};
    size = 24;
    importance = 1.00;
    coefMin = 1.00;
    coefMax = 1.00;
};
class WaypointCompleted {
    icon = "\A3\ui_f\data\map\mapcontrol\waypointCompleted_ca.paa";
    color[] = {0.00, 0.00, 0.00, 1.00};
    size = 24;
    importance = 1.00;
    coefMin = 1.00;
    coefMax = 1.00;
};
class ActiveMarker {
    color[] = {0.30, 0.10, 0.90, 1.00};
    size = 50;
};
class CustomMark
{
    icon = "\A3\ui_f\data\map\mapcontrol\custommark_ca.paa";
    size = 24;
    importance = 1;
    coefMin = 1;
    coefMax = 1;
    color[] = {0,0,0,1};
};
class Command
{
    icon = "\A3\ui_f\data\map\mapcontrol\waypoint_ca.paa";
    size = 18;
    importance = 1;
    coefMin = 1;
    coefMax = 1;
    color[] = {1,1,1,1};
};
class Bush
{
    icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
    color[] = {0.45,0.64,0.33,0.4};
    size = "14/2";
    importance = "0.2 * 14 * 0.05 * 0.05";
    coefMin = 0.25;
    coefMax = 4;
};
class Rock
{
    icon = "\A3\ui_f\data\map\mapcontrol\rock_ca.paa";
    color[] = {0.1,0.1,0.1,0.8};
    size = 12;
    importance = "0.5 * 12 * 0.05";
    coefMin = 0.25;
    coefMax = 4;
};
class SmallTree
{
    icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
    color[] = {0.45,0.64,0.33,0.4};
    size = 12;
    importance = "0.6 * 12 * 0.05";
    coefMin = 0.25;
    coefMax = 4;
};
class Tree
{
    icon = "\A3\ui_f\data\map\mapcontrol\bush_ca.paa";
    color[] = {0.45,0.64,0.33,0.4};
    size = 12;
    importance = "0.9 * 16 * 0.05";
    coefMin = 0.25;
    coefMax = 4;
};
class busstop
{
    icon = "\A3\ui_f\data\map\mapcontrol\busstop_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {1,1,1,1};
};
class fuelstation
{
    icon = "\A3\ui_f\data\map\mapcontrol\fuelstation_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {1,1,1,1};
};
class hospital
{
    icon = "\A3\ui_f\data\map\mapcontrol\hospital_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {1,1,1,1};
};
class church
{
    icon = "\A3\ui_f\data\map\mapcontrol\church_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {1,1,1,1};
};
class lighthouse
{
    icon = "\A3\ui_f\data\map\mapcontrol\lighthouse_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {1,1,1,1};
};
class power
{
    icon = "\A3\ui_f\data\map\mapcontrol\power_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {1,1,1,1};
};
class powersolar
{
    icon = "\A3\ui_f\data\map\mapcontrol\powersolar_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {1,1,1,1};
};
class powerwave
{
    icon = "\A3\ui_f\data\map\mapcontrol\powerwave_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {1,1,1,1};
};
class powerwind
{
    icon = "\A3\ui_f\data\map\mapcontrol\powerwind_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {1,1,1,1};
};
class quay
{
    icon = "\A3\ui_f\data\map\mapcontrol\quay_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {1,1,1,1};
};
class transmitter
{
    icon = "\A3\ui_f\data\map\mapcontrol\transmitter_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {1,1,1,1};
};
class watertower
{
    icon = "\A3\ui_f\data\map\mapcontrol\watertower_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {1,1,1,1};
};
class Cross
{
    icon = "\A3\ui_f\data\map\mapcontrol\Cross_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {0,0,0,1};
};
class Chapel
{
    icon = "\A3\ui_f\data\map\mapcontrol\Chapel_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {0,0,0,1};
};
class Shipwreck
{
    icon = "\A3\ui_f\data\map\mapcontrol\Shipwreck_CA.paa";
    size = 24;
    importance = 1;
    coefMin = 0.85;
    coefMax = 1.0;
    color[] = {0,0,0,1};
};
class Bunker
{
    icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa";
    size = 14;
    importance = "1.5 * 14 * 0.05";
    coefMin = 0.25;
    coefMax = 4;
    color[] = {0,0,0,1};
};
class Fortress
{
    icon = "\A3\ui_f\data\map\mapcontrol\bunker_ca.paa";
    size = 16;
    importance = "2 * 16 * 0.05";
    coefMin = 0.25;
    coefMax = 4;
    color[] = {0,0,0,1};
};
class Fountain
{
    icon = "\A3\ui_f\data\map\mapcontrol\fountain_ca.paa";
    size = 11;
    importance = "1 * 12 * 0.05";
    coefMin = 0.25;
    coefMax = 4;
    color[] = {0,0,0,1};
};
class Ruin
{
    icon = "\A3\ui_f\data\map\mapcontrol\ruin_ca.paa";
    size = 16;
    importance = "1.2 * 16 * 0.05";
    coefMin = 1;
    coefMax = 4;
    color[] = {0,0,0,1};
};
class Stack
{
    icon = "\A3\ui_f\data\map\mapcontrol\stack_ca.paa";
    size = 20;
    importance = "2 * 16 * 0.05";
    coefMin = 0.9;
    coefMax = 4;
    color[] = {0,0,0,1};
};
class Tourism
{
    icon = "\A3\ui_f\data\map\mapcontrol\tourism_ca.paa";
    size = 16;
    importance = "1 * 16 * 0.05";
    coefMin = 0.7;
    coefMax = 4;
    color[] = {0,0,0,1};
};
class ViewTower
{
    icon = "\A3\ui_f\data\map\mapcontrol\viewtower_ca.paa";
    size = 16;
    importance = "2.5 * 16 * 0.05";
    coefMin = 0.5;
    coefMax = 4;
    color[] = {0,0,0,1};
};
};

Share this post


Link to post
Share on other sites

Dude, code and spoiler tags!

 

inputAction in while loop or maybe event handler could help with binding a key, User1-20 for example.

 

I imagine you want a textured mini map like full sized one over vanilla GPS? Because map markers show on GPS.

  • Like 1

Share this post


Link to post
Share on other sites

You can do many things with custom minimap. Even playing with transparency:

 

  • Like 3

Share this post


Link to post
Share on other sites

Janez thanks for the suggestion...I was hoping to find someone to help with this Way beyond my current skill set.

I will try the information you posted.

 

Ant

 

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×