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 4

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
On 9/11/2020 at 6:55 PM, pierremgi said:

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

 

 

Do you think it is possible to put a .paa overlay on top of the GPS UI to increase immersion? The scripts I've found completely redo the GPS system instead of just using the one from the game.

 

Basically what I need is to find the size and location of the default GPS UI so I can apply a .paa tablet background to it for example

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

×