Jump to content

aussie battler

Member
  • Content Count

    134
  • Joined

  • Last visited

  • Medals

Posts posted by aussie battler


  1. Hi

     

    Not sure if this is the right section. I have a problem getting my home test server on development branch. I have done a clean install of Arma3 server & verified the install. 

     

    I right click on Arma3 server, go to Betas & it is in creatordlc - Creator DLC Build. When I start my server it is still on Stable :

    Type: Public
    Build: Stable
    Version: 1.92.145639

     

    Am I suppose to enter a code to load V1.95? I have bought contact. I noticed it hasnt even got the Enoch folder in the server folder. 

     

    I remember with Malden I had to load Argo to get that going in Development Branch. What am I missing?

     

    cheers

     

     


  2. Hey @GEORGE FLOROS GR

    Great work on the upgrade to zombies spawn script. I have noticed the FPS pickup up & I can spawn lots more zombies now. The old script would search for a safe position to spawn near a player, this one hits up a town straight away. 

    The script is very lightweight &  kind to system resources. You were right about removing zombies throwing grenades, players complained straight away.

     

    Zombies spawn in straight away, near the player, nice work.
    20190622195144_1.jpg

     

    Zombies track a player & are drawn to them.

    20190622195111_1.jpg

     

    The different outfits make every zombie look individual, love it.
    20190622194815_1.jpg 

     

    10 out of 10 for this script buddy. Thanks for sharing it and getting Max Zombies to work with it.

    • Thanks 1

  3. Hey George

     

    Max Zombies are already on side east. Your new zombie spawner script leaves them on side east (even when I change the config).

    I think you were just missing this in GF_Zombie_Spawner_Types.sqf:    ( [_unit] JoinSilent _Group; )
     

    Spoiler


    //________________    Author : GEORGE FLOROS [GR]    ___________    19.06.19    _____________


    /*
    ________________ GF Zombie Spawner Script - Mod    ________________

    Not Published yet    SOON !

    Please keep the Credits or add them to your Diary

    https://community.bistudio.com/wiki/SQF_syntax
    Don't try to open this with the simple notepad.
    For everything that is with comment  //  in front  or between /*
    means that it is disabled , so there is no need to delete the extra lines.

    You can open this ex:
    with notepad++
    https://notepad-plus-plus.org/

    ArmA 3 | Notepad ++ SQF tutorial
    https://www.youtube.com/watch?v=aI5P7gp3x90

    and also use the extra pluggins
    (this way will be better , it will give also some certain colors to be able to detect ex. problems )
    http://www.armaholic.com/page.php?id=8680

    or use any other program for editing .

    For the Compilation List of my GF Scripts , you can search in:
    https://forums.bohemia.net/forums/topic/215850-compilation-list-of-my-gf-scripts/

    BI Forum Ravage Club Owner :
    https://forums.bohemia.net/clubs/73-bi-forum-ravage-club/
    */
    private["_pos","_Group","_unit","_stalked","_Buildings","_Building","_buildingpos","_buildingpos","_buildingPositions","_count"];

    if(GF_ZS_Systemchat_info)then{
        systemchat "GF_Zombie_Spawner_Types Script - Mod initializing";            
    };    

    if(GF_ZS_diag_log_info)then{
        diag_log "//________________    GF_Zombie_Spawner_Types Script - Mod initializing    ________________";
    };


    //___________________    GF_ZS_No_WP_Unit    ___________________

    GF_ZS_No_WP_Unit = {

        if(count allUnits < GF_ZS_Enemy_Max_Number)then{

            _pos = GF_ZS_pos;

            if!(_pos isEqualTo [0,0,0])then{
                _Group = createGroup GF_ZS_Enemy_Side;

                _unit = _Group createUnit [selectrandom GF_ZS_Enemy_array,_pos,[],0,"NONE"];
                [_unit] JoinSilent _Group;
                _unit setVariable["Var_GF_ZS_Spawn",true];
                if(GF_ZS_Change_Loadout)then{_unit spawn GF_ZS_Loadout;};
                _unit spawn    GF_ZS_Cleaner;
            };
        };
    };


    //___________________    GF_ZS_Stalk_Unit    ___________________

    GF_ZS_Stalk_Unit = {

        if(count allUnits < GF_ZS_Enemy_Max_Number)then{

            _pos = GF_ZS_pos;

            if!(_pos isEqualTo [0,0,0])then{
                _Group = createGroup GF_ZS_Enemy_Side;

                _unit = _Group createUnit [selectrandom GF_ZS_Enemy_array,_pos,[],0,"NONE"];
                [_unit] JoinSilent _Group;
                _unit setVariable["Var_GF_ZS_Spawn",true];
                if(GF_ZS_Change_Loadout)then{_unit spawn GF_ZS_Loadout;};
                _unit spawn    GF_ZS_Cleaner;
                
                _Group setBehaviour "AWARE";
                _Group setCombatMode "RED";

                if (isMultiplayer) then {    
                    _stalked = selectrandom GF_ZS_allPlayers;
                    [_Group,group _stalked] spawn BIS_fnc_stalk;
                }else{
                    [_Group,group player] spawn BIS_fnc_stalk;
                };
            };
        };
    };


    //___________________    GF_ZS_Garrison_Unit    ___________________

    GF_ZS_Garrison_Excluded_Buildings = [
        "Building_Classname_here",
        "Building_Classname_here"
    ];


    GF_ZS_Garrison_Unit = {

        if(count allUnits < GF_ZS_Enemy_Max_Number)then{

        _Buildings = nearestObjects [GF_ZS_Pos,["House", "Building"],GF_ZS_Garrison_Area_Distance];
        if(typeName _Buildings != "ARRAY") exitWith {};
            
            if(count _Buildings > 0)then{
            _Building = selectRandom _Buildings;

                if(!(typeOf _Building in GF_ZS_Garrison_Excluded_Buildings))then{

                    _buildingPositions = [_Building]call BIS_fnc_buildingPositions;
                    _count = count _buildingPositions;
                    
                    if(_count > 0)then{
                        _buildingpos = selectRandom _buildingPositions;
                        _buildingpos = [(_buildingpos select 0),(_buildingpos select 1),(_buildingpos select 2)];
                    
                        if !(_buildingpos isEqualTo [0,0,0])then{
                            _Group = createGroup GF_ZS_Enemy_Side;
                            _unit = _Group createUnit [selectrandom GF_ZS_Enemy_array,_buildingpos,[],0,"NONE"];
                            [_unit] JoinSilent _Group;
                            _unit setVariable["Var_GF_ZS_Spawn",true];
                            if(GF_ZS_Change_Loadout)then{_unit spawn GF_ZS_Loadout;};
                            _unit spawn    GF_ZS_Cleaner;
                        };
                    };
                };
            };
        };
    };


    //___________________    GF_ZS_No_WP_Group    ___________________

    GF_ZS_No_WP_Group= {

        if(count allUnits < GF_ZS_Enemy_Max_Number)then{

            _pos = GF_ZS_pos;

            if!(_pos isEqualTo [0,0,0])then{
                _Group = createGroup GF_ZS_Enemy_Side;
                
                for "_x" from 0 to(GF_ZS_Squad_Members + random GF_APZ_Squad_Members_random)do{
                    _unit = _Group createUnit [selectrandom GF_ZS_Enemy_array,_pos,[],0,"NONE"];
                    [_unit] JoinSilent _Group;
                    _unit setVariable["Var_GF_ZS_Spawn",true];
                    if(GF_ZS_Change_Loadout)then{_unit spawn GF_ZS_Loadout;};
                    _unit spawn    GF_ZS_Cleaner;
                };
            };
        };
    };


    //___________________    GF_ZS_Stalk_Group    ___________________

    GF_ZS_Stalk_Group = {

        if(count allUnits < GF_ZS_Enemy_Max_Number)then{

            _pos = GF_ZS_pos;

            if!(_pos isEqualTo [0,0,0])then{
                _Group = createGroup GF_ZS_Enemy_Side;
                
                for "_x" from 0 to(GF_ZS_Squad_Members + random GF_APZ_Squad_Members_random)do{
                    _unit = _Group createUnit [selectrandom GF_ZS_Enemy_array,_pos,[],0,"NONE"];
                    //nul = [_pos,50,1,"random"] spawn zombie_anim_FNC_create_zombies;
                    //nul = [_location,_distance,Zombies_numb,zombies_type] spawn zombie_anim_FNC_create_zombies;
                    [_unit] JoinSilent _Group;
                    _unit setVariable["Var_GF_ZS_Spawn",true];
                    if(GF_ZS_Change_Loadout)then{_unit spawn GF_ZS_Loadout;};
                    _unit spawn    GF_ZS_Cleaner;
                };
                
                _Group setBehaviour "AWARE";
                _Group setCombatMode "RED";

                if (isMultiplayer) then {    
                    _stalked = selectrandom GF_ZS_allPlayers;
                    [_Group,group _stalked] spawn BIS_fnc_stalk;
                }else{
                    [_Group,group player] spawn BIS_fnc_stalk;
                };
            };
        };
    };


    if(GF_ZS_Systemchat_info)then{
        systemchat "GF_Zombie_Spawner_Types Script - Mod initialized";            
    };    

    if(GF_ZS_diag_log_info)then{
        diag_log "//________________    GF_Zombie_Spawner_Types Script - Mod initialized    ________________";
    };

     

    Comment out the monster & dogs from units array:
     

    Spoiler


    GF_ZS_Max_zombies = [

        //  Max_Zombies  classnames
        
        //"max_zombie_dog ",
        "Max_zombie",
        "Max_zombie_female1_2",
        "Max_zombie_female1_5",
        "Max_zombie_female1_4",
        "Max_zombie_female1_3",
        "Max_zombie_female1_1",
        "Max_zombie_female1",
        "Max_zombie_female2_2",
        "Max_zombie_female2_5",
        "Max_zombie_female2_4",
        "Max_zombie_female2_3",
        "Max_zombie_female2_1",
        "Max_zombie_female2",
        //"Max_zombie_monster",
        //"Max_zombie_monster5",
        //"Max_zombie_monster4",
        //"Max_zombie_monster3",
        //"Max_zombie_monster1",
        "Max_zombie_4",
        "Max_zombie_3",
        "Max_zombie1_5",
        "Max_zombie1_4",
        "Max_zombie1_1",
        "Max_zombie2",
        "Max_zombie2_2",
        "Max_zombie2_5",
        "Max_zombie2_1",
        "Max_zombie3_2",
        "Max_zombie3_4",
        "Max_zombie4_3",
        "Max_zombie4_1",
        "Max_zombie4",
        //"Max_zombie_monster2",
        "Max_zombie1",
        "Max_zombie3_5",
        "Max_zombie3_3",
        "Max_zombie3_1",
        "Max_zombie3",
        "Max_zombie4_2",
        "Max_zombie4_5",
        "Max_zombie4_4",
        "Max_zombie_2",
        "Max_zombie_5",
        "Max_zombie_1",
        "Max_zombie1_2",
        "Max_zombie1_3",
        "Max_zombie2_4",
        "Max_zombie2_3"
        ];

     

    In GF_Zobie_Spawner_list.sqf I think GF_ZS_Stalk_Unit is working. Zombies are tracking and coming after me. You can uncomment that one, I still have to test GF_ZS_Stalk_Group
     

    Spoiler


    GF_ZS_Spawner_List = {
        
        _Unit = selectRandom [
        
            GF_ZS_Stalk_Unit,    //    Might not work with Max Mod
            GF_ZS_No_WP_Unit,
            GF_ZS_Garrison_Unit
        ];
        
        _Group = selectRandom [

            GF_ZS_Stalk_Group,    //    Might not work with Max Mod
            GF_ZS_No_WP_Group
        ];
       

     

    I'll keep experimenting & give you more results on what is working.

    • Thanks 1

  4. Ok making progress. Thanks for the new spawner code, it seems to use less resources.

    The problem was with the dog & monster ai not spawning + adding gear (I think it is the uniform).

    Max Zombies work without dogs, monsters & adding gear. When you dont add gear there is a zombie avatar in place of the uniform. When I try and add the zombie avatar to myself the game crashed.

    I'll try adding loot without adding a uniform (maybe just a vest + backpack). I'll add the code here when I get something that works.

    Max Zombies are on side East, Im trying to get them off that.

     

    20190620233528_1.jpg

    • Thanks 1

  5. @GEORGE FLOROS GR I may have found the problem, I think it is the zombie dogs & monsters. Your new script worked fine for a few minutes and then froze.

    RPT error:
    Cannot create non-ai vehicle Max_zombie_monster,
    Cannot create non-ai vehicle max_zombie_dog ,

    The zombie dogs are created in with helipads (createvehicle) and then have the models attached to the empty helipad:

    Spoiler

    _DS = "Land_HelipadEmpty_F" createvehicle getpos _D;    
    _S = ["zdm1","zdm2","zdm3"] call BIS_fnc_selectRandom;
     [[_DS, _S], "S_M", true] spawn BIS_fnc_MP;



    The other zombies are created with createUnit (cant see where the monsters are created):

    Spoiler

    _grp = Creategroup east;
    _zb = _grp createUnit [_zombie,_pos, [], 0, "NONE"];

     

    I am going to try to spawn the zombies using code from Maxjoiner's mod config & swap it into GF Zombie Spawner:
     

    Spoiler

                            //_Unit = _Group createunit [selectrandom GF_ZS_Enemy_array,_buildingpos,[],0,"Can_collide"];
                            _Group = createGroup GF_ZS_Enemy_Side;

                           _Group setVariable [GF_ZS_Enemy_Side];

                           _Unit =  [_pos,10,1,"random"] spawn zombie_anim_FNC_create_zombies;        
                            //Max's spawn notes: nul = [_location,_distance,Zombies_numbers,zombies_type] spawn zombie_anim_FNC_create_zombies;         

                           [_Unit] joinSilent grpNull;
                           [_Unit] joinSilent _Group;              
                            _Unit setVariable["Var_GF_ZS_Spawn",true];
                            _Unit spawn    GF_ZS_Cleaner;
                            if (_unit isEqualTo "Max_zombie_monster", "max_zombie_dog") exitWith {}; // I dont think the dogs & monster are going to wear uniforms because they are created by createVehicle.
                            if(GF_ZS_Change_Loadout)then{_unit spawn GF_ZS_Loadout;};


    No need to answer, I know you are short on time. I am just trouble shooting.

    • Thanks 1

  6. Great work on this script @GEORGE FLOROS GR, I can see you have put allot of time & effort into it. 

     

    Is it just me or do @maxjoiner 's zombies not really work with this script?

    I find that the fast zombies are the only ones you need to be aware of. The others (slow / medium zombies) don't move (they seem stuck on one spot). They will still do the zombie animation & deal damage if you get close.

    I have removed Vcom just in case that was messing with them.

    Ryan Zombies & Demons work fine.

    20190619011852_1.jpg

     

    Maybe they are on a smoko break?



    EDIT: Maybe its because I am adding GF loot to the Zombies that is stuffing up Max Zombie behavior. Ill try it without & see if that gets them going.

    • Like 1

  7. dog.JPG

     

    @GEORGE FLOROS GR hope everything works itself out for you.The legend @maca134 kindly added Max_Zombies to A3 Launcher 🙂

    For those wanting zombie dogs:


     

    In Units_Array.sqf search for GF_APZ_Max_zombies and add:

     

    "max_zombie_dog",

    should look like this:
     

    Spoiler

    GF_APZ_Max_zombies = [

        //  Max_Zombies  classnames
        

        "max_zombie_dog",  

        "Max_zombie",
        "Max_zombie_female1_2",
        "Max_zombie_female1_5",
        "Max_zombie_female1_4",
        "Max_zombie_female1_3",
        "Max_zombie_female1_1",
        "Max_zombie_female1",
        "Max_zombie_female2_2",
        "Max_zombie_female2_5",
        "Max_zombie_female2_4",
        "Max_zombie_female2_3",
        "Max_zombie_female2_1",
        "Max_zombie_female2",
        "Max_zombie_monster",
        "Max_zombie_monster5",
        "Max_zombie_monster4",
        "Max_zombie_monster3",
        "Max_zombie_monster1",
        "Max_zombie_4",
        "Max_zombie_3",
        "Max_zombie1_5",
        "Max_zombie1_4",
        "Max_zombie1_1",
        "Max_zombie2",
        "Max_zombie2_2",
        "Max_zombie2_5",
        "Max_zombie2_1",
        "Max_zombie3_2",
        "Max_zombie3_4",
        "Max_zombie4_3",
        "Max_zombie4_1",
        "Max_zombie4",
        "Max_zombie_monster2",
        "Max_zombie1",
        "Max_zombie3_5",
        "Max_zombie3_3",
        "Max_zombie3_1",
        "Max_zombie3",
        "Max_zombie4_2",
        "Max_zombie4_5",
        "Max_zombie4_4",
        "Max_zombie_2",
        "Max_zombie_5",
        "Max_zombie_1",
        "Max_zombie1_2",
        "Max_zombie1_3",
        "Max_zombie2_4",
        "Max_zombie2_3"
        ];



     

    • Thanks 1

  8. Hey @NeoArmageddon

    Loving Escape, we cycle through 7 maps at the moment on our server.

    I am testing out Diyala & everything works except for random town ai spawning in. I noticed that the VillageMarkers.sqf code was a bit different from other Escape 10 missions.

     

    Diyala code: a3e_villageMarkers set [0, [[517.986,555.911,0], 205.146, "RECTANGLE", [14.6549,35.8956]]];
    Other code: a3e_villageMarkers set [0, [[5704.45,8215.09,0], -98.5552, "RECTANGLE", [40,40]]];

    The [14.6549,35.8956] is rounded off in other missions.  I tried to round it off to [80,80] but still no ai in towns.

    Would it be better to if I did the positions again or do you think that I am looking in the wrong place?

    The server log error:
     

    Spoiler

    _group createUnit [_infantryType, _spawnPos, []>
      Error position: <createUnit [_infantryType, _spawnPos, []>
      Error Type Number,Not a Number, expected Number
    File functions\DRN\fn_AmbientInfantry.sqf [drn_fnc_AmbientInfantry], line 129
    Error in expression < units _this select 0;




    I would love to see the map port tutorial by scruffy, the first page link sends my back on a loop.
     

    Tipps, Tricks and Tutorials

     

    Port to another terrains by Scruffy



    EDIT: my bad.....

     

    I was using TADST to run the test server & it caused issues with ai spawning. Put the same files on the dedicated box & ai were everywhere 🙂


  9. 7 hours ago, jpmisme1998 said:

    I am currently having an issue with the mod. I played this a while ago with my friend and decided to play it again. Reinstalled Arma and our mods. CUP, Arma Enhanced Movement, RHS, and CBA. I host the server on my pc. I load in to the game just fine. But my friend always ends up spawning in the air and falls to his death instantly. He even got stuck under the map a few times. Anyone have any possible reasons why this shit keeps happening?


    Did you copy the mission.sqm correctly, the part where players spawn in? Grab it here & compare the "groups" section to your own misson.sqm: http://escape.anzp.de/co10_Escape_1.9.7z

     

    What map are you playing? Does it happen every time he spawns in or sometimes? Some maps (like the rocks on Malden or around the underground tunnels in Esseker) are glitchy as fook. The game tries to get ground level but the maps ground level config is a bit messed up. I am guessing you have a map problem nothing to do with escape.

    • Like 1

  10. Thanks @topden

    Add your custom logo to the base flags:
     

    + Create a folder "flag" in the root directory of your misson file. Drop in your paa logo & call it logo.paa (jpg might work, PAA is the best).
    + open each template in Escape.Ruha\functions\Templates
    + search for flag & add this line after the flag is created: _object forceFlagTexture "flag\logo.paa";

    + Make sure you change the first word to _obj or _object (depending on what the flag is called).
     

    example:
     

    Spoiler

        _pos = [(_middlePos select 0) + 3.2, (_middlePos select 1) - 6.5, 0];
        //_object = "Flag_CSAT_F" createVehicle _pos;
        _object = createVehicle ["FlagPole_F", _pos, [], 0, "NONE"];
        _object setPos _pos;
        _object setDir 90;
        _object forceFlagTexture "flag\logo.paa";

     

    or

    Spoiler

    _pos = [_center,_center vectorAdd [-0.351563,-4.73633,0],_rotation] call _fnc_rotatePos;
    _obj = "Flag_Altis_F" createvehicle _pos;
    _obj setVectorDirAndUp [[0.684954,-0.728586,0],[0,-0,1]];
    _obj setdir ((getdir _obj) + _rotation);
    _obj setPosATL _pos;
    _obj forceFlagTexture "flag\logo.paa";

     

    To create a flag .paa:
    + save your logo as a png 512x256px @ 72dpi.

    + open the png in Texture Viewer http://www.armaholic.com/page.php?id=14435
    + Save the file as logo.paa

     

    20190326020020_1.jpg

    • Like 1

  11. @topden Are you exporting the escape base template with relative position & dropping them into the templates like this?

     

    Spoiler

            private _objects = [
        ["Land_AncientHead_01_F",[-0.447754,-12.2441,0],180,[true,false]],
        ["Land_AncientStatue_01_F",[-14.0044,-0.165527,0],284.614,[true,false]],
        ["Land_AncientStatue_01_F",[12.9238,2.74658,0],80.3488,[true,false]],
        ["Land_AncientStatue_01_F",[0.0488281,15.7905,0],5.83839,[true,false]],
        ["Land_AncientStatue_02_F",[-6.80859,-12.3301,0],269.078,[true,false]],
        ["Land_AncientStatue_02_F",[7.09717,-13.1284,0],91.2094,[true,false]],
        ["CUP_A2_p_fiberplant_ep1",[12.9282,2.64453,0],0,[true,false]],
        ["CUP_A2_p_fiberplant_ep1",[-13.062,-0.0585938,0],0,[true,false]],
        ["CUP_A2_p_fiberplant_ep1",[-6.83789,-11.8901,0],0,[true,false]],
        ["CUP_A2_p_fiberplant_ep1",[0.144531,15.3569,0],0,[true,false]],
        ["CUP_A2_p_fiberplant_ep1",[6.91992,-13.3188,0],0,[true,false]],
        ["GraveCross1",[-9.59521,10.9609,0],0,[true,false]],
        ["GraveCross1",[8.21924,11.3696,0],0,[true,false]]
    ];

    private _center = [_position select 0, _position select 1, 0];
    {
        private _object = (_x select 0) createVehicle [0,0,0];
        _object setDir (_x select 2);
        _object setPosATL (_center vectorAdd (_x select 1));
        _object enableSimulationGlobal ((_x select 3) select 0);
        _object allowDamage ((_x select 3) select 1);
    } forEach _objects;
    };

     

    Or are you using @NeoArmageddon's Arma3 Eden addon?


  12. @faistaff with the latest compass version you can press alt & look over your shoulder to get a compass reading from behind:


    init.sqf
     

    Spoiler

    //_____________________________ Voyager Compass _____________________________
    [] execVM "Scripts\fn_voyagerCompass1_1.sqf";


    In Scripts\fn_voyagerCompass1_1.sqf

     

    Spoiler

    fnc_removeString =
    {
      params ["_from", "_to", "_string"];
      _stringArray = _string splitString "";

      _stringArray deleteRange [_from, _to];

      _stringArray = _stringArray joinString "";
      private _returnMe = _stringArray;
      _returnMe
    };

    fnc_loadSettings =
    {
      systemchat "init fnc_loadSettings";

      _nc_settings = profileNamespace getVariable "nc_settings";

      if (isNil "_nc_settings") then {
        _nc_settings = [0.499889,0.0346965,3.16098,1.86439,0,1.18143,"C0",0.753254,"PuristaLight",0,1,1,-0.0340903,5,1,0,"B1B1","FFFFFF"];
      };

      private _returnMe = _nc_settings;
      _returnMe;
    };

    fnc_saveSettings =
    {
      systemchat "init fnc_saveSettings";

      params ["_ncX", "_ncY","_ncW","_ncSpan","_ncType","_ncFontSize","_ncAlpha","_ncAlphaNr","_ncFontOption","_ncInvert","_ncShadow","_ncMarkerVisibility","_ncMarkerY","_ncFontOptionNr","_ncColorNr","_ncTypeNr","_ncColorCustom","_ncColor"];

      profileNamespace setVariable ["nc_settings",[_ncX,_ncY,_ncW,_ncSpan,_ncType,_ncFontSize,_ncAlpha,_ncAlphaNr,_ncFontOption,_ncInvert,_ncShadow,_ncMarkerVisibility,_ncMarkerY,_ncFontOptionNr,_ncColorNr,_ncTypeNr,_ncColorCustom,_ncColor]];
      saveProfileNamespace;

      systemchat "saving complete";
    };

    fnc_showSettings =
    {
      systemchat "init fnc_showSettings";

      disableSerialization;

      ncColorOption = "f9f9f9";
      nc_lb_colorOption = [
      ncColorOption,
      "FFFFFF",
      "000000"];
      nc_lb_fontOption = [
      "EtelkaMonospacePro",
      "EtelkaMonospaceProBold",
      "EtelkaNarrowMediumPro",
      "LucidaConsoleB",
      "PuristaBold",
      "PuristaLight",
      "PuristaMedium",
      "PuristaSemiBold",
      "RobotoCondensed",
      "RobotoCondensedBold",
      "RobotoCondensedLight",
      "TahomaB"];

      folder = [] call fnc_loadSettings;
      if (isNil "folder") then {
        folder = [0.499889,0.0346965,3.16098,1.86439,0,1.18143,"C0",0.753254,"PuristaLight",0,1,1,-0.0340903,5,1,0,"B1B1","FFFFFF"];
      };

      ncX                 = folder select 0;
      ncY                 = folder select 1;
      ncW                 = folder select 2;
      ncSpan              = folder select 3;
      ncType              = folder select 4;
      ncFontSize          = folder select 5;
      ncAlpha             = folder select 6;
      ncAlphaNr           = folder select 7;
      ncFontOption        = folder select 8;
      ncInvert            = folder select 9;
      ncShadow            = folder select 10;
      ncMarkerVisibility  = folder select 11;
      ncMarkerY           = folder select 12;
      ncFontOptionNr      = folder select 13;
      ncColorNr           = folder select 14;
      ncTypeNr            = folder select 15;

      ncColor             = folder select 17;

      nc_barOffsetX       = (ncX * safezoneW + safezoneX);
      nc_barOffsetY       = (ncY * safezoneH + safezoneY);
      nc_marker_offset    = ncMarkerY + nc_barOffsetY;

      nc_dialog_controls = [
          [1000,"nc_background",[1,"",[0.29375 * safezoneW + safezoneX,0.225 * safezoneH + safezoneY,0.170156 * safezoneW,0.759 * safezoneH],[-1,-1,-1,-1],[0.07,0.07,0.07,1],[-1,-1,-1,-1],"","RscText"],[]],
        [1004,"nc_background_char",[1,"",[0.304062 * safezoneW + safezoneX,0.489 * safezoneH + safezoneY,0.149531 * safezoneW,0.264 * safezoneH],[-1,-1,-1,-1],[0.03,0.03,0.03,1],[-1,-1,-1,-1],"","RscText"],[]],
        [1001,"nc_background_pos",[1,"",[0.304062 * safezoneW + safezoneX,0.28 * safezoneH + safezoneY,0.149531 * safezoneW,0.154 * safezoneH],[-1,-1,-1,-1],[0.03,0.03,0.03,1],[-1,-1,-1,-1],"","RscText"],[]],
        [1007,"nc_background_features",[1,"",[0.304062 * safezoneW + safezoneX,0.808 * safezoneH + safezoneY,0.149531 * safezoneW,0.11 * safezoneH],[-1,-1,-1,-1],[0.03,0.03,0.03,1],[-1,-1,-1,-1],"","RscText"],[]],
        [1002,"nc_background_title_pos",[1,"STAND & SPOT",[0.304062 * safezoneW + safezoneX,0.247 * safezoneH + safezoneY,0.149531 * safezoneW,0.033 * safezoneH],[-1,-1,-1,-1],[0.11,0.11,0.11,1],[-1,-1,-1,-1],"","RscText"],[]],
          [1103,"nc_background_pos_x",[1,"X",[0.314375 * safezoneW + safezoneX,0.291 * safezoneH + safezoneY,0.0154688 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[0,0,0,0],[-1,-1,-1,-1],"HORIZONTAL POSITION. Set the correct horizontal position you desire.","RscStructuredText"],[]],
          [1104,"nc_background_pos_y",[1,"Y",[0.314375 * safezoneW + safezoneX,0.324 * safezoneH + safezoneY,0.0154688 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[0,0,0,0],[-1,-1,-1,-1],"VERTICAL POSITION. Set the correct vertical position you desire.","RscStructuredText"],[]],
        [1106,"nc_background_pos_w",[1,"W",[0.314375 * safezoneW + safezoneX,0.357 * safezoneH + safezoneY,0.0154688 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[0,0,0,0],[-1,-1,-1,-1],"WIDTH. Exact range of visibility for points.","RscStructuredText"],[]],
        [1107,"nc_background_pos_s",[1,"S",[0.314375 * safezoneW + safezoneX,0.39 * safezoneH + safezoneY,0.0154688 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[0,0,0,0],[-1,-1,-1,-1],"SPAN. Change the distance between the points.","RscStructuredText"],[]],
          [1003,"nc_background_title_char",[1,"CHARACTERISTICS",[0.304062 * safezoneW + safezoneX,0.456 * safezoneH + safezoneY,0.149531 * safezoneW,0.033 * safezoneH],[-1,-1,-1,-1],[0.11,0.11,0.11,1],[-1,-1,-1,-1],"","RscText"],[]],
        [1100,"nc_background_fontSize",[1,"sS",[0.314375 * safezoneW + safezoneX,0.544 * safezoneH + safezoneY,0.020625 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[0,0,0,0],[-1,-1,-1,-1],"SIZE-FONT. Determines the size of the individual cardinal points.","RscStructuredText"],[]],
        [1102,"nc_background_fontAlpha",[1,"A",[0.314375 * safezoneW + safezoneX,0.577 * safezoneH + safezoneY,0.0154688 * safezoneW,0.022 * safezoneH],[1,1,1,0.5],[0,0,0,0],[-1,-1,-1,-1],"TRANSPARENCY. Set the visibility of the whole compass.","RscStructuredText"],[]],
        [1109,"nc_background_fontColor",[1,"#",[0.314375 * safezoneW + safezoneX,0.621 * safezoneH + safezoneY,0.0154688 * safezoneW,0.022 * safezoneH],[1,0,0,1],[0,0,0,0],[-1,-1,-1,-1],"COLOR-CODE. put #HEX color here for custom color.","RscStructuredText"],[]],
        [1110,"nc_background_shadow",[1,"Shadow",[0.402031 * safezoneW + safezoneX,0.709 * safezoneH + safezoneY,0.0360937 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[0,0,0,0],[-1,-1,-1,-1],"SHADOW. Enable the dropshadow for the cardinal points.","RscStructuredText"],[]],
          [1111,"nc_background_invert",[1,"Invert",[0.355625 * safezoneW + safezoneX,0.709 * safezoneH + safezoneY,0.0309375 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[0,0,0,0],[-1,-1,-1,-1],"INVERT. Switch between the option of the needles being at the top or bottom of the cardinal points.","RscStructuredText"],[]],
        [1006,"nc_background_title_features",[1,"MARKERS & FEATURES",[0.304062 * safezoneW + safezoneX,0.775 * safezoneH + safezoneY,0.149531 * safezoneW,0.033 * safezoneH],[-1,-1,-1,-1],[0.11,0.11,0.11,1],[-1,-1,-1,-1],"","RscText"],[]],
          [1112,"nc_background_pos_markerY",[1,"Y",[0.314375 * safezoneW + safezoneX,0.83 * safezoneH + safezoneY,0.0154688 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[0,0,0,0],[-1,-1,-1,-1],"VERTICAL OFFSET. Set the correct vertical offset you desire.","RscStructuredText"],[]],
          [1113,"nc_background_visibility",[1,"Visbility",[0.402031 * safezoneW + safezoneX,0.874 * safezoneH + safezoneY,0.0360937 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[0,0,0,0],[-1,-1,-1,-1],"VISIBILITY. Toggle it.","RscStructuredText"],[]],
        [1114,"nc_background_info_soon",[1,"more features soon",[0.314375 * safezoneW + safezoneX,0.874 * safezoneH + safezoneY,0.0825 * safezoneW,0.022 * safezoneH],[1,1,1,0.3],[0,0,0,0],[-1,-1,-1,-1],"INFO. Future updates coming. Stay tuned","RscText"],[]],
          [1115,"nc_background_impressum",[1,"Voyager Compass 1.1",[0.304062 * safezoneW + safezoneX,0.94 * safezoneH + safezoneY,0.0825 * safezoneW,0.022 * safezoneH],[1,1,1,0.3],[0,0,0,0],[-1,-1,-1,-1],"Creator: Unknown_GTX & Flax","RscText"],[]],
        [2400,"nc_save",[1,"SAVE",[0.412344 * safezoneW + safezoneX,0.94 * safezoneH + safezoneY,0.04125 * safezoneW,0.022 * safezoneH],[0.07,0.07,0.07,1],[0.93,0.93,0.93,1],[0.07,0.07,0.07,1],"Permanently save changes. (stays even after restarting the game)","RscButton"],[],
        ["profileNamespace setVariable ['nc_settings',folder]; saveProfileNamespace;"]],
          [2401,"nc_close",[1,"X",[0.391719 * safezoneW + safezoneX,0.94 * safezoneH + safezoneY,0.0154688 * safezoneW,0.022 * safezoneH],[0.07,0.07,0.07,1],[0.93,0.93,0.93,1],[-1,-1,-1,-1],"Close without save.","RscButton"],[],
        ["(uiNamespace getVariable 'nc_dialogDisplay') closeDisplay 2"]],
          [2800,"ncShadow",[1,"",[0.391719 * safezoneW + safezoneX,0.709 * safezoneH + safezoneY,0.0103125 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],"SHADOW. Enable the dropshadow for the cardinal points.","RscCheckBox"],[],
          [ncShadow, "folder set [10, (_this select 1)]; switch (_this select 1) do { case (0): { ncShadow = 0; }; case (1): { ncShadow = 2; };};  _comp = [ncType, ncInvert, ncFontSize, ncShadow, ncFontOption, ncAlpha, ncColorOption] call fnc_compileCompass;"]],

          [1901,"ncX",[1,"",[0.340156 * safezoneW + safezoneX,0.302 * safezoneH + safezoneY,0.0979687 * safezoneW,0.011 * safezoneH],[-1,-1,-1,-1],[1,1,1,1],[-1,-1,-1,-1],"HORIZONTAL POSITION. Set the correct horizontal position you desire.","RscSlider"],[],
          [[/*range*/0,1, ncX], "folder set [0, (_this select 1)]; nc_barOffsetX = ((_this select 1) * safezoneH + safezoneY)"]],

          [1900,"nc_y",[1,"",[0.340156 * safezoneW + safezoneX,0.335 * safezoneH + safezoneY,0.0979687 * safezoneW,0.011 * safezoneH],[-1,-1,-1,-1],[1,1,1,1],[-1,-1,-1,-1],"VERTICAL POSITION. Set the correct vertical position you desire.","RscSlider"],[],
          [[/*range*/0,1, ncY], "folder set [1, (_this select 1)]; nc_barOffsetY = ((_this select 1) * safezoneH + safezoneY); nc_marker_offset = ncMarkerY + nc_barOffsetY;"]],

          [1902,"nc_w",[1,"",[0.340156 * safezoneW + safezoneX,0.368 * safezoneH + safezoneY,0.0979687 * safezoneW,0.011 * safezoneH],[-1,-1,-1,-1],[1,1,1,1],[-1,-1,-1,-1],"WIDTH. Exact range of visibility for points.","RscSlider"],[],
          [[/*range*/0,5, ncW], "folder set [2, (_this select 1)]; ncW = (_this select 1)"]],

          [1903,"nc_s",[1,"",[0.340156 * safezoneW + safezoneX,0.401 * safezoneH + safezoneY,0.0979687 * safezoneW,0.011 * safezoneH],[-1,-1,-1,-1],[1,1,1,1],[-1,-1,-1,-1],"SPAN. Change the distance between the points.","RscSlider"],[],
          [[/*range*/1,3, ncSpan], "folder set [3, (_this select 1)]; ncSpan = (_this select 1)"]],

          [2100,"nc_type",[1,"",[0.319531 * safezoneW + safezoneX,0.511 * safezoneH + safezoneY,0.118594 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],"TYPE. Work in progress.","RscCombo"],[],
          [["Battlegrounds","Arma 3"], "folder set [15, (_this select 1)]; ncType = (_this select 1)", ncTypeNr]],

          [1904,"nc_fontSize",[1,"",[0.340156 * safezoneW + safezoneX,0.555 * safezoneH + safezoneY,0.0979687 * safezoneW,0.011 * safezoneH],[-1,-1,-1,-1],[1,1,1,1],[-1,-1,-1,-1],"SIZE-FONT. Determines the size of the individual cardinal points.","RscSlider"],[],
          [[/*range*/0.8,1.4, ncFontSize], "folder set [5, (_this select 1)]; ncFontSize = (_this select 1); _comp = [ncType, ncInvert, ncFontSize, ncShadow, ncFontOption, ncAlpha, ncColorOption] call fnc_compileCompass;"]],

          [1905,"nc_fontAlpha",[1,"",[0.340156 * safezoneW + safezoneX,0.588 * safezoneH + safezoneY,0.0979687 * safezoneW,0.011 * safezoneH],[-1,-1,-1,-1],[1,1,1,1],[-1,-1,-1,-1],"TRANSPARENCY. Set the visibility of the whole compass.","RscSlider"],[],
          [[/*range*/0,1,ncAlphaNr], "folder set [7, (_this select 1)]; _clr = [0,0,0,(_this select 1)] call BIS_fnc_ColorRGBAtoHTML; _cutBelow = [0,1, _clr] call fnc_removeString; _cutAbove = [2,6, _cutBelow] call fnc_removeString; folder set [6, _cutAbove]; ncAlpha = _cutAbove; _comp = [ncType, ncInvert, ncFontSize, ncShadow, ncFontOption, ncAlpha, ncColorOption] call fnc_compileCompass;"]],

          [2103,"nc_font",[1,"",[0.319531 * safezoneW + safezoneX,0.665 * safezoneH + safezoneY,0.118594 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[1,1,1,1],[-1,-1,-1,-1],"FONT.  Switch between different looks with the font.","RscCombo"],[],
        [["EtelkaMonospacePro","EtelkaMonospaceProBold","EtelkaNarrowMediumPro","LucidaConsoleB","PuristaBold","PuristaLight","PuristaMedium","PuristaSemiBold","RobotoCondensed","RobotoCondensedBold","RobotoCondensedLight","TahomaB"],
        "folder set [13, (_this select 1)];folder set [8, (nc_lb_fontOption select (_this select 1))]; ncFontOptionNr = (_this select 1); ncFontOption = nc_lb_fontOption select (_this select 1);  _comp = [ncType, ncInvert, ncFontSize, ncShadow, ncFontOption, ncAlpha, ncColorOption] call fnc_compileCompass;", ncFontOptionNr]],

        [1005,"ncColor_code",[1,"",[0.326719 * safezoneW + safezoneX,0.621 * safezoneH + safezoneY,0.04125 * safezoneW,0.022 * safezoneH],[1,1,1,1],[0.03,0.03,0.03,1],[-1,-1,-1,-1],"","RscEdit"],[]],
          [2102,"ncColor",[1,"",[0.371094 * safezoneW + safezoneX,0.621 * safezoneH + safezoneY,0.0670312 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],"COLOR. Choose between predefined colors.","RscCombo"],[],
          [["Custom","White","Black"], "folder set [14, (_this select 1)]; folder set [17, (nc_lb_colorOption select (_this select 1))]; ncColorOption = nc_lb_colorOption select (_this select 1);  _comp = [ncType, ncInvert, ncFontSize, ncShadow, ncFontOption, ncAlpha, ncColorOption] call fnc_compileCompass;", ncColorNr]],

          [2801,"nc_invert",[1,"",[0.345312 * safezoneW + safezoneX,0.709 * safezoneH + safezoneY,0.0103125 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],"INVERT. Switch between the option of the needles being at the top or bottom of the cardinal points.","RscCheckBox"],[],
          [ncInvert, "folder set [9, (_this select 1)]; ncInvert = (_this select 1);  _comp = [ncType, ncInvert, ncFontSize, ncShadow, ncFontOption, ncAlpha, ncColorOption] call fnc_compileCompass;"]],

          [1906,"nc_markerY",[1,"",[0.340156 * safezoneW + safezoneX,0.841 * safezoneH + safezoneY,0.0979687 * safezoneW,0.011 * safezoneH],[-1,-1,-1,-1],[1,1,1,1],[-1,-1,-1,-1],"VERTICAL OFFSET. Set the correct vertical offset you desire.","RscSlider"],[],
          [[/*range*/-2,2, ncMarkerY], "folder set [12, (_this select 1)]; nc_marker_offset = (_this select 1) + nc_barOffsetY; ncMarkerY = (_this select 1);"]],

          [2802,"nc_visibility",[1,"",[0.391719 * safezoneW + safezoneX,0.874 * safezoneH + safezoneY,0.0103125 * safezoneW,0.022 * safezoneH],[-1,-1,-1,-1],[-1,-1,-1,-1],[-1,-1,-1,-1],"VISIBILITY. Toggle it.","RscCheckBox"],[],
          [ncMarkerVisibility, "folder set [11, (_this select 1)]; ncMarkerVisibility = (_this select 1)"]]
          ];

      with uiNamespace do {
        nc_dialogDisplay = findDisplay 46 createDisplay "RscDisplayEmpty";
      };
      {
        _idc  = _x select 0;
        _type = (_x select 2) select 7;
        _pos  = (_x select 2) select 2;

        _tooltip = (_x select 2)select 6;
        _background_color = (_x select 2) select 4;
        _txt  = (_x select 2) select 1;

        _display = uiNamespace getVariable "nc_dialogDisplay";

        switch (_type) do {
          case ("RscText"): {
            _ctrl = _display ctrlCreate [_type, _idc];
            _ctrl ctrlSetText _txt;
            //hint format ["x: %1, x: %2, x: %3, x: %4", _posx, _posy, _posw, _posh];
            _ctrl ctrlSetTextColor [1, 1, 1, 1];
            _ctrl ctrlSetBackgroundColor _background_color;
          };
          case ("RscStructuredText"): {
            _ctrl = _display ctrlCreate [_type, _idc];
            _ctrl ctrlSetText _txt;
            _ctrl ctrlSetTextColor [1, 1, 1, 1];
            _ctrl ctrlSetBackgroundColor _background_color;
          };
          case ("RscSlider"): {
            _sliderRange_start = ((_x select 4) select 0) select 0;
            _sliderRange_end = ((_x select 4) select 0) select 1;
                  _sliderPos = ((_x select 4) select 0) select 2;
            _func = compile ((_x select 4) select 1);

            _ctrl = _display ctrlCreate [_type, _idc];
            _ctrl sliderSetRange [_sliderRange_start, _sliderRange_end];
                  _ctrl sliderSetPosition _sliderPos;
            _ctrl ctrlAddEventHandler ["SliderPosChanged",_func];
          };
          case ("RscCombo"): {
            _ctrl = _display ctrlCreate [_type, _idc];
            _func = compile ((_x select 4) select 1);
            for "_i" from 0 to (count ((_x select 4) select 0)-1) do
            {
              _lbItem = ((_x select 4) select 0) select _i;
              _index = _ctrl lbAdd _lbItem;
            };
                  _indexy = (_x select 4) select 2;
                  _ctrl lbSetCurSel _indexy;
            _ctrl ctrlAddEventHandler ["LBSelChanged",_func];
          };
          case ("RscCheckBox"): {
            _ctrl = _display ctrlCreate [_type, _idc];
            if ((_x select 4) select 0 == 1) then {
              _ctrl cbSetChecked true;
            };
            _func = compile ((_x select 4) select 1);
            _ctrl ctrlAddEventHandler ["CheckedChanged",_func];
                  if (ncInvert == 1) then {
                    _ctrl ctrlSetChecked true;
                  }else{_ctrl ctrlSetChecked false;};
          };
          case ("RscButton"): {
            _ctrl = _display ctrlCreate [_type, _idc];
            _ctrl ctrlSetText _txt;
            _func = compile ((_x select 4) select 0);
                  _ctrl ctrlAddEventHandler ["ButtonClick",_func];
          };
          case ("RscEdit"): {
            _ctrl = _display ctrlCreate [_type, _idc];
            _ctrl ctrlSetTextColor [1, 1, 1, 1];
            _ctrl ctrlSetBackgroundColor [0, 0, 0, 1];
                  _ctrl ctrlAddEventHandler ["KeyUp",{ncColorOption =  ctrlText ((uiNamespace getVariable "nc_dialogDisplay") displayCtrl 1005);  _comp = [ncType, ncInvert, ncFontSize, ncShadow, ncFontOption, ncAlpha, ncColorOption] call fnc_compileCompass;}];
                  _ctrl ctrlSetText ncColorOption;
              };
        };
        _ctrl = _display displayCtrl _idc;
        _ctrl ctrlSetPosition _pos;
        _ctrl ctrlCommit 0;
        _ctrl ctrlSetTooltip _tooltip;
      } forEach nc_dialog_controls;
    };

    fnc_showCompass =
    {
      systemchat "init fnc_showCompass";

      disableSerialization;

      _nc_settings = [] call fnc_loadSettings;
      if (isNil "_nc_settings") then {
        _nc_settings = [0.499889,0.0346965,3.16098,1.86439,0,1.18143,"C0",0.753254,"PuristaLight",0,1,1,-0.0340903,5,1,0,"B1B1","FFFFFF"];
      };

      ncX                   = _nc_settings select 0;
      ncY                   = _nc_settings select 1;
      ncW                   = _nc_settings select 2;
      ncSpan                = _nc_settings select 3;
      ncType                = _nc_settings select 4;
      ncFontSize            = _nc_settings select 5;
      ncAlpha               = _nc_settings select 6;

      ncFontOption          = _nc_settings select 8;
      ncInvert              = _nc_settings select 9;
      ncShadow              = _nc_settings select 10;
      ncMarkerVisibility    = _nc_settings select 11;
      ncMarkerY             = _nc_settings select 12;

      ncColorOption         = "f9f9f9";

      nc_barOffsetX         = (ncX * safezoneW + safezoneX);
      nc_barOffsetY         = (ncY * safezoneH + safezoneY);
      nc_marker_offset      = ncMarkerY + nc_barOffsetY;


      ("compassTitle" call BIS_fnc_rscLayer) cutRsc ["RscTitleDisplayEmpty", "PLAIN"];


      switch (ncShadow) do { case (0): { ncShadow = 0; }; case (1): { ncShadow = 2; };};

      _comp = [ncType, ncInvert, ncFontSize, ncShadow, ncFontOption, ncAlpha, ncColorOption] call fnc_compileCompass;

      /// rendering of compass
      allUserMarkers = [];
      currentMarkers = [];
      combMarkers = [];


      ["0", "onEachFrame",{

        _compassNeedle = ((uiNamespace getVariable "RscTitleDisplayEmpty") displayCtrl 3399);
        _compassNeedle ctrlSetPosition [nc_barOffsetX - (0.1/2),nc_barOffsetY,0.1,0.015 * safezoneH];
        _compassNeedle ctrlCommit 0;

        {
          _ctrl = _x select 0;
          _pos = (_x select 1) / 100;
          _degreeControl = ((uiNamespace getVariable "RscTitleDisplayEmpty") displayCtrl _ctrl);

          _sPos = screenToWorld [0.5,0.5];
          _pPos = getPos player;
          _playerDir = (((((_sPos select 0) - (_pPos select 0)) atan2 ((_sPos select 1) - (_pPos select 1))) + 360) % 360)/100;


          _controlPos = (ctrlPosition _degreeControl) select 0;

          if (_controlPos > ((ncW / 10 * safezoneW + safezoneX) - (0.1/2)) && _controlPos < (1 - ((ncW / 10 * safezoneW + safezoneX))- (0.1/2))) then {
            _degreeControl ctrlSetPosition [ nc_barOffsetX + ((_pos - _playerDir) / ncSpan) - (0.1/2),nc_barOffsetY,0.1,0.4];
          }else{
            _degreeControl ctrlSetPosition [ nc_barOffsetX + ((_pos - _playerDir) / ncSpan) - (0.1/2),nc_barOffsetY,0.0,0.4];
          };
          _degreeControl ctrlCommit 0;
        } forEach compass_pos;


        {
          _ctrl  = _x select 0;
          _marker = _x select 1;
          _ctrl2 = _ctrl + 100;

          _playerDir = (getDir player)/100;
          _relativeDir = ([player, markerPos _marker] call BIS_fnc_relativeDirTo)/100;

          _MarkerControl  = ((uiNamespace getVariable "RscTitleDisplayEmpty") displayCtrl _ctrl);
          _MarkerControl2 = ((uiNamespace getVariable "RscTitleDisplayEmpty") displayCtrl _ctrl2);

          _controlPos = (ctrlPosition _MarkerControl) select 0;
          _controlPos2 = (ctrlPosition _MarkerControl2) select 0;

          if (_controlPos > (((ncW / 10 * safezoneW + safezoneX) - (0.1/2)) * ncMarkerVisibility) && _controlPos < (((1 - (ncW / 10 * safezoneW + safezoneX))- (0.1/2)) * ncMarkerVisibility)) then {
            _MarkerControl  ctrlSetPosition [ nc_barOffsetX + (_relativeDir / ncSpan)            - (0.05/2),nc_marker_offset,0.05,0.09];
          }else{
            _MarkerControl  ctrlSetPosition [ nc_barOffsetX + (_relativeDir / ncSpan)                   - (0.05/2),nc_marker_offset,0.00,0.09];
          };

          if (_controlPos2 > (((ncW / 10 * safezoneW + safezoneX) - (0.1/2)) * ncMarkerVisibility) && _controlPos2 < ((((1 - (ncW / 10 * safezoneW + safezoneX))- (0.1/2))) * ncMarkerVisibility)) then {
            _MarkerControl2 ctrlSetPosition [ nc_barOffsetX + (_relativeDir / ncSpan) - (3.6/ncSpan)  - (0.05/2),nc_marker_offset,0.05,0.09];
          }else{
            _MarkerControl2 ctrlSetPosition [ nc_barOffsetX + (_relativeDir / ncSpan) - (3.6/ncSpan)  - (0.05/2),nc_marker_offset,0.00,0.09];
          };

          _MarkerControl  ctrlCommit 0;
          _MarkerControl2 ctrlCommit 0;
        } forEach combMarkers;

        //hint format ["degr: %1", getDir player];
      }] call BIS_fnc_addStackedEventHandler;
      ///

      waitUntil {ncMarkerVisibility == 1;};

      while {true} do {
        /// create user array [marker]
        {
          if !(_x in currentMarkers) then {
            _a = toArray _x;
            _a resize 15;
            if (toString _a == "_USER_DEFINED #") then {
              allUserMarkers pushBack _x;
            };
          };
        } forEach allMapMarkers;
        ///
        /// create double array ([marker], [idc,marker])
        {
          if !(_x in currentMarkers) then {
            _display = uiNamespace getVariable "RscTitleDisplayEmpty";
            _index = allUserMarkers find _x;
            _idc = 5500 + _index;

            _edit  = _display ctrlCreate ["RscStructuredText", _idc];
            _edit2 = _display ctrlCreate ["RscStructuredText", _idc + 100];
            _edit ctrlSetPosition [-2, -2, 0.05, 0.05];
            _edit2 ctrlSetPosition [-2, -2, 0.05, 0.05];

            _img =  getText (configfile >> "cfgMarkers" >> markerType _x >> "icon");
            _txt = parseText format ["<img image='%1' align='center'/>", _img];
            _edit ctrlSetStructuredText _txt;
            _edit2 ctrlSetStructuredText _txt;

            _edit  ctrlCommit 0;
            _edit2 ctrlCommit 0;


              currentMarkers pushBack _x;
              combMarkers pushBack [_idc, _x];
            //};
            systemChat format ["created: %1", _x];
          };
        } forEach allUserMarkers;
        ///

        /// delete IF marker from [idc,marker] aint alive anymore
        {
          if !(_x in allMapMarkers) then {
            allUserMarkers = allUserMarkers - [_x];
            currentMarkers = currentMarkers - [_x];
          };
        } forEach allUserMarkers;
        {
          if !((_x select 1) in allUserMarkers) then {
            _display = uiNamespace getVariable "RscTitleDisplayEmpty";
            ctrlDelete (_display displayCtrl (_x select 0));
            ctrlDelete (_display displayCtrl ((_x select 0)+100));
            combMarkers = combMarkers - [_x];
          };
        } forEach combMarkers;
        ///
        sleep 0.2;
      };
    };

    fnc_compileCompass =
    {

      /// coordinates of compass angles
      compass_pos = [
      [3400, -225   ,"SE" ],
      [3401, -210   ,"140"],
      [3402, -195   ,"165"],

      [3403, -180    ,"S" ],

      [3405, -165   ,"195"],
      [3406, -150   ,"210"],
      [3407, -135   ,"SW" ],
      [3408, -120   ,"240"],
      [3409, -105   ,"255"],

      [3410, -090    ,"W" ],

      [3421, -075   ,"285"],
      [3422, -060   ,"300"],
      [3423, -045   ,"NW" ],
      [3424, -030   ,"330"],
      [3425, -015   ,"345"],

      [3426, 0       ,"N" ],

      [3427, 015   ,"15"  ],
      [3428, 030   ,"30"  ],
      [3429, 045   ,"NE"  ],
      [3430, 060   ,"60"  ],
      [3431, 075   ,"75"  ],

      [3432, 090   ,"E"   ],

      [3433, 105   ,"105" ],
      [3434, 120   ,"120" ],
      [3435, 135   ,"SE"  ],
      [3436, 150   ,"150" ],
      [3437, 165   ,"165" ],

      [3438, 180   ,"S"   ],

      [3439, 195   ,"195" ],
      [3440, 210   ,"210" ],
      [3441, 225   ,"SW"  ],
      [3442, 240   ,"240" ],
      [3443, 255   ,"255" ],

      [3445, 270   ,"W"   ],

      [3446, 285   ,"285" ],
      [3447, 300   ,"300" ],
      [3448, 315   ,"NW"  ],
      [3449, 330   ,"330" ],
      [3450, 345   ,"345" ],

      [3451, 360   ,"N"   ],

      [3452, 375   ,"15"  ],
      [3453, 390   ,"30"  ],
      [3454, 405   ,"NE"  ],
      [3455, 420   ,"60"  ],
      [3456, 435   ,"75"  ],

      [3457, 450   ,"E"   ],

      [3458, 465   ,"105" ],
      [3459, 480   ,"120" ],
      [3460, 495   ,"SE"  ],
      [3461, 510   ,"150" ],
      [3462, 525   ,"165" ],

      [3463, 540   ,"S"   ],

      [3464, 555   ,"195" ],
      [3465, 570   ,"210" ],
      [3466, 585  ,"SW"   ]
      ];
      compass_pos_a3 = [
      [3410, 0       ,"no" ]
      ];
      ///

      _nc_lb_type = [compass_pos, compass_pos_a3];


      disableSerialization;
      params ["_compassType", "_ncNeedle","_ncFontSize","_ncShadow","_ncFontOption", "_ncAlpha", "_ncColorOption"];

      switch (_ncShadow) do { case (0): { _ncShadow = 0; }; case (1): { _ncShadow = 2; }; default { _ncShadow = 2; };};

      _display = uiNamespace getVariable "RscTitleDisplayEmpty";

      for "_i" from 3399 to 3499 do
      {
        ctrlDelete (_display displayCtrl _i);
      };
      _compass = _nc_lb_type select _compassType;
      _compassNeedle = _display ctrlCreate ["RscStructuredText", 3399];
      _compassNeedle ctrlSetPosition [-2, -2, 0.05, 0.05];

      _compassNeedle ctrlSetStructuredText parseText format["<t shadow=2><t shadowColor='#ff0000' align='center' size='%1' color='#f9f9f9'>|</t>", 0.65];

      for "_i" from 0 to (count _compass - 1) do
      {
        _idc = ((_compass select _i) select 0);
        _dir = ((_compass select _i) select 2);
        _arrayIndex = _i;//_compassType find _x;

        nc_sizeX = 0.65 * _ncFontSize;
        if (_arrayIndex % 6 == 3) then
        {
          nc_sizeX = 1 * _ncFontSize;
        };
        if (_arrayIndex % 6 == 0) then
        {
          nc_sizeX = 0.8 * _ncFontSize;
        };
        _edit = _display ctrlCreate ["RscStructuredText", _idc];
        _edit ctrlSetPosition [-2, -2, 0.05, 0.05];

        _var_needle = "";
        switch (_ncNeedle) do {
          case (1): {
            _var_needle = _dir + "<br />|</t>";
          };
          case (0): {
            _var_needle = "|<br />" + _dir + "</t>";
          };
        };
        _edit ctrlSetStructuredText parseText ("<t shadow=" + str _ncShadow + "><t shadowColor='#000000' align='center' size='" + str nc_sizeX + "' font='" + _ncFontOption + "' color='#" + _ncAlpha + _ncColorOption + "'>" + _var_needle);
        _edit ctrlCommit 0;
      };
    };

    waitUntil {!isNull player};
    [] spawn fnc_showCompass;

    [] spawn
    {
     while {true} do
     {
       waitUntil {!isNull (findDisplay 49)};

       disableSerialization;
       _display = findDisplay 49;
       _ctrl = _display ctrlCreate ["RscButton", 3399];
       _ctrl ctrlSetPosition [
       (1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)),
       (2.2 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + safezoneY),
       (15 * (((safezoneW / safezoneH) min 1.2) / 40)),
       (1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))];
       _ctrl ctrlSetActiveColor [0.204,0.286,0.369,1];
       _ctrl ctrlSetText "COMPASS OPTIONS";
       _ctrl ctrlCommit 0;
       _ctrl buttonSetAction "(findDisplay 49) closeDisplay 1; [] call fnc_showSettings;";

       waitUntil{isNull (findDisplay 49)};
     };
    };

     

    Credits to the great @Unknown_GTX
     

     


  13. 13 hours ago, Grim5667 said:

    Hey so I seem to be unable to load an Esseker map for your framework since apperently I'm missing mods yet i think i have all the mods. Heres the output 
     

      Hide contents

    "-servermod=@co10_Escape_RHS;@Esseker;@CUP Terrains - Core;@CUP Terrains - Maps;@RHS_AFRF;@RHS_USAF;@CUP_Units;@CUP_Vehicles;@CUP_Weapons;@CBA_A3" "-mod=" -malloc=tbb4 -enableHT -world=empty -autoinit -maxMem=6144

     

    Original output filename: Arma3Retail_Server

    Exe timestamp: 2019/02/25 11:24:12

    Current time: 2019/03/07 13:37:30

     

    Type: Public

    Build: Stable

    Version: 1.90.145381

     

    Allocator: Dll\tbb4malloc_bi.dll [2017.0.0.0] [2017.0.0.0]

    PhysMem: 64 GiB, VirtMem : 4.0 GiB, AvailPhys : 40 GiB, AvailVirt : 3.9 GiB, AvailPage : 41 GiB

    =====================================================================

     

    13:37:30 SteamAPI initialization failed. Steam features won't be accessible!

    13:37:30 Cannot register unknown string STR_3DEN_CAMERA_NAME

    13:37:30 Cannot register unknown string STR_DIFF_SCENE_ONLY

    13:37:30 Cannot register unknown string STR_DIFF_SCENE_AND_MAP

    13:37:31 Initializing stats manager.

    13:37:31 Stats config disabled.

    13:37:31 sessionID: d79fc2cb1e463ed27d89fe03d53f98ea9bfaadb5

    13:37:58 Item str_a3_to_c01_m02_036_ta_mechanized_briefing_SOLDIERC_0 listed twice

    13:38:00 Unsupported language English in stringtable

    13:38:00 Unsupported language English in stringtable

    13:38:00 Unsupported language English in stringtable

    13:38:01 Unsupported language English in stringtable

    13:38:01 Unsupported language English in stringtable

    13:38:01 Item str_dn_2b14 listed twice

    13:38:01 Item str_mn_pg9 listed twice

    13:38:01 Item str_mn_og9 listed twice

    13:38:01 Item str_mn_igla listed twice

    13:38:01 Item str_dn_ags30 listed twice

    13:38:01 Item str_mn_at13 listed twice

    13:38:01 Item str_mn_9k32 listed twice

    13:38:01 Item str_dn_at13 listed twice

    13:38:01 Item str_dn_at13launchersingle listed twice

    13:38:01 Item STR_DN_D30 listed twice

    13:38:01 Item str_dn_dshkm listed twice

    13:38:01 Item str_dn_dshkm_minitripod listed twice

    13:38:01 Item str_lib_m2_mg listed twice

    13:38:01 Item str_lib_m119 listed twice

    13:38:01 Item str_lib_kord listed twice

    13:38:01 Item str_lib_dshkm listed twice

    13:38:01 Item STR_LIB_D30 listed twice

    13:38:01 Item str_lib_ags30 listed twice

    13:38:01 Item str_dn_igla_aa_pod_east listed twice

    13:38:01 Item str_dn_igla_twice listed twice

    13:38:01 Item str_dn_kord listed twice

    13:38:01 Item str_dn_kord_low listed twice

    13:38:01 Item str_dn_m119 listed twice

    13:38:01 Item str_dn_tow_tripod listed twice

    13:38:01 Item str_dn_tow listed twice

    13:38:01 Item str_dn_spg9 listed twice

    13:38:01 Item str_dn_m252 listed twice

    13:38:01 Item str_dn_m2hd_minitripod listed twice

    13:38:01 Item str_dn_m2_mg listed twice

    13:38:01 Item str_dn_mk19_tripod listed twice

    13:38:01 Item str_dn_zu23 listed twice

    13:38:01 Item str_lib_2b14 listed twice

    13:38:01 Item str_lib_at13 listed twice

    13:38:01 Item str_lib_m252 listed twice

    13:38:01 Item str_lib_spg9 listed twice

    13:38:01 Unsupported language English in stringtable

    13:38:11 Warning Message: Addon 'CUP_Editor_Plants_Config' requires addon 'CUP_CA_Plants_PMC'

     



    You have mixed up your commandline. Try this:

    --mod=@co10_Escape_RHS;@Esseker;@CUP Terrains - Core;@RHS_AFRF;@RHS_USAF;@CUP_Units;@CUP_Vehicles;@CUP_Weapons;@CBA_A3" "servermod="

    You dont need ;@CUP Terrains - Maps Esseker is only dependent on Cup Terrains Core.
     

    • Thanks 1
×