Sign in to follow this  
Followers 0
speedweasel

[Release] View Distance Shortcut Keys

2 posts in this topic

Posted (edited)

I've added four shortcut keys that quickly change your view distance (and object view distance) in Exile.  When you transition between wilderness and urban areas you can reduce your view distance in towns and get moar frames!  How many frames?  On my aging i7 920 (3.7Ghz) with a GTX 970, I go from about 32 FPS in the middle of Chernogorsk to over 70 FPS if I change it to minimum view distance.

Remember actual server object view distance will be set on the server, so even though you might set your client to draw stuff further out than the server setting, you might not be see objects beyoud what the server will let you see.

I've selected these distances to suit my server which is running Chernarus but you can change the numbers after the setViewDistance and the setObjectViewDistance to whatever values you like.

I've also selected the F1 - F4 shortcut keys because they're handy.  Feel free to select any other keys you like using the DIK values for Arma3. https://www.google.com.au/search?q=dik+values+for+Arma+3&oq=dik+values+for+Arma3

As always, use the CustomCode feature in your mission config.cpp to overwrite your ExileClient_gui_hud_event_onKeyUp function.

ExileClient_gui_hud_event_onKeyUp.sqf:

Spoiler

/**
 * ExileClient_gui_hud_event_onKeyUp
 *
 * Exile Mod
 * www.exilemod.com
 * © 2015 Exile Mod Team
 *
 * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. 
 * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
 */
 
private["_stopPropagation","_caller","_keyCode","_shiftState","_controlState","_altState","_posObject","_step"];
_stopPropagation = false;
_caller = _this select 0;
_keyCode = _this select 1;
_shiftState = _this select 2;
_controlState = _this select 3;
_altState = _this select 4;
if (_keyCode in (actionKeys "TacticalView")) exitWith {true};
if (_keyCode in (actionKeys "User1") && !(_keyCode isEqualTo 0x02)) exitWith 
{
    if !(ExileClientIsHandcuffed) then 
    {
        call ExileClient_object_vehicle_interaction_keyLock;
    };
    true
};
if (_keyCode in (actionKeys "User2")) exitWith
{
    if (ExileClientAllowPartyMarkers) then 
    {
        if !(ExileClientPartyID isEqualTo -1) then 
        {
            if !(ExileClientIsHandcuffed) then 
            {
                call ExileClient_system_party_updateMyMarker;    
            };
        };
    };
    true
};
switch (_keyCode) do  

    case 0x29:    
    { 
        call ExileClient_gui_hud_toggleStatsBar;
        _stopPropagation = true; 
    }; 
    case 0x11,
    case 0x1E,
    case 0x1F,
    case 0x20:
    {
        if (ExileClientIsAutoRunning) then
        {
            call ExileClient_system_autoRun_stop;
            _stopPropagation = true; 
        };
    };
    case 0x0B:         
    { 
        if !(ExileClientIsHandcuffed) then 
        {
            call ExileClient_system_autoRun_toggle;
        };
        _stopPropagation = true; 
    };
    case 0x08:     { _stopPropagation = true; };
    case 0x09:     { _stopPropagation = true; };
    case 0x0A:     { _stopPropagation = true; };
    
    
    
    case 0x3B:     { setViewDistance 600;
                setObjectViewDistance 600;
                hint "NEAR View Distance (600m)";
                _stopPropagation = true; };
    case 0x3C:     { setViewDistance 1200;
                setObjectViewDistance 1200;
                hint "MEDIUM View Distance (1200m)";
                _stopPropagation = true; };
    case 0x3D:    { setViewDistance 1800;
                setObjectViewDistance 1800;
                hint "FAR View Distance (1800m)";
                _stopPropagation = true; };
    case 0x3E:    { setViewDistance 2400;
                setObjectViewDistance 2400;
                hint "MAX View Distance (2400m)";
                _stopPropagation = true; };
    case 0x41:     { _stopPropagation = true; };
    case 0x42:    { _stopPropagation = true; };
    case 0x43:     { _stopPropagation = true; };
    case 0x44:    { _stopPropagation = true; };
    case 0x57:     { _stopPropagation = true; };
    case 0x58:     { _stopPropagation = true; };
    case 0x0E:     { _stopPropagation = true; };
    case 0x02:     
    { 
        if !(ExileClientIsHandcuffed) then 
        {
            if (ExileClientIsInConstructionMode) then
            {
                ExileClientConstructionObject setObjectTextureGlobal [0, "#(argb,2,2,1)color(0.7,0.93,0,0.6,ca)"];
                ExileClientConstructionCurrentSnapToObject = objNull;
                ExileClientConstructionIsInSelectSnapObjectMode = false;
                ExileClientConstructionPossibleSnapPositions = [];
                ExileClientConstructionMode = 1; 
                [] call ExileClient_gui_constructionMode_update;
            }
            else 
            {
                if (primaryWeapon player != "") then
                {
                    if (primaryWeapon player != currentWeapon player) then
                    {
                        player selectWeapon (primaryWeapon player);
                    };
                };
            };
        };
        _stopPropagation = true; 
    };
    case 0x03:     
    { 
        if !(ExileClientIsHandcuffed) then 
        {
            if (ExileClientIsInConstructionMode) then
            {
                ExileClientConstructionObject setObjectTextureGlobal [0, "#(argb,2,2,1)color(0.7,0.93,0,0.6,ca)"];
                ExileClientConstructionCurrentSnapToObject = objNull;
                ExileClientConstructionIsInSelectSnapObjectMode = false;
                ExileClientConstructionPossibleSnapPositions = [];
                ExileClientConstructionMode = 2; 
                [] call ExileClient_gui_constructionMode_update;
            }
            else 
            {
                if (handgunWeapon player != "") then
                {
                    if (handgunWeapon player != currentWeapon player) then
                    {
                        player selectWeapon (handgunWeapon player);
                    };
                };
            };
        };
        _stopPropagation = true; 
    };
    case 0x04:     
    { 
        if !(ExileClientIsHandcuffed) then 
        {
            if (ExileClientIsInConstructionMode) then
            {
                if (ExileClientConstructionSupportSnapMode) then
                {
                    if (ExileClientConstructionMode != 3) then 
                    {
                        ExileClientConstructionCurrentSnapToObject = objNull; 
                        ExileClientConstructionPossibleSnapPositions = [];
                        hintSilent "Look at the object you want to snap to, press SPACE to lock on it and then move your object next to a snap point. Press SPACE again to place object.";
                    };
                    ExileClientConstructionMode = 3; 
                    ExileClientConstructionIsInSelectSnapObjectMode = true;
                    [] call ExileClient_gui_constructionMode_update;
                };
            }
            else 
            {
                if (secondaryWeapon player != "") then
                {
                    if (secondaryWeapon player != currentWeapon player) then
                    {
                        player selectWeapon (secondaryWeapon player);
                    };
                };
            };
        };
        _stopPropagation = true; 
    };
    case 0x05:     
    { 
        if !(ExileClientIsHandcuffed) then 
        {
            if (ExileClientIsInConstructionMode) then
            {
                ExileClientConstructionModePhysx = !ExileClientConstructionModePhysx;
                [] call ExileClient_gui_constructionMode_update;
            }
            else
            {
                if (currentWeapon player != "") then
                {
                    ExileClientPlayerHolsteredWeapon = currentWeapon player;
                    player action["switchWeapon", player, player, 100];
                }
                else 
                {
                    if (ExileClientPlayerHolsteredWeapon != "") then
                    {
                        player selectWeapon ExileClientPlayerHolsteredWeapon;
                    };
                };
            };
        };
        _stopPropagation = true;
    };
    case 0x06:
    {
        if (ExileClientIsInConstructionMode) then
        {
            ExileClientConstructionShowHint = !ExileClientConstructionShowHint;
            [] call ExileClient_gui_constructionMode_update;
        }
        else 
        {
            call ExileClient_system_music_earplugs_toggle;
        };
        _stopPropagation = true;
    };
    case 0x07:
    {
        if (ExileClientIsInConstructionMode) then
        {
            if(ExileClientConstructionLock)then
            {
                ExileClientConstructionLock = false;
                _posObject = position ExileClientConstructionObject;
                ExileClientConstructionOffset = player worldToModel _posObject;
                ExileClientConstructionRotation = (getDir ExileClientConstructionObject) - (getDir player);
            }
            else
            {
                ExileClientConstructionLock = true;
            };    
        }
        else
        {
            if (!ExileClientXM8IsVisible) then
            {
                if ("Exile_Item_XM8" in (assignedItems player)) then
                {
                    if (alive player) then
                    {
                        [] call ExileClient_gui_xm8_show;
                    };    
                };
            };
        };
        _stopPropagation = true;
    };
    case 0x39:
    {
        if (ExileClientIsInConstructionMode) then
        {
            if (ExileClientConstructionMode == 3) then 
            {
                if (ExileClientConstructionIsInSelectSnapObjectMode) then 
                {
                    if !(isNull ExileClientConstructionCurrentSnapToObject) then
                    {
                        ExileClientConstructionIsInSelectSnapObjectMode = false;
                        [] call ExileClient_gui_constructionMode_update;
                    };
                }
                else 
                {
                    if (ExileClientConstructionCanPlaceObject) then
                    {
                        ExileClientConstructionResult = 1;
                    };
                };
            }
            else 
            {
                if (ExileClientConstructionCanPlaceObject) then
                {
                    ExileClientConstructionResult = 1;
                };
            };
            _stopPropagation = true;
        };
    };
    case 0x01:
    {
        if (ExileClientIsInConstructionMode) then
        {
            _stopPropagation = true;
        };
    };
    case 0x10:
    {
        if (ExileClientIsInConstructionMode) then
        {
            _step = 45;
            if (_shiftState) then 
            {
                _step = 90;
            }
            else 
            {
                if (_controlState) then
                {
                    _step = 22.5;
                };
            };
            ExileClientConstructionRotation = (ExileClientConstructionRotation - _step + 360) % 360;    
            [] call ExileClient_gui_constructionMode_update;
            _stopPropagation = true;
        };
    };
    case 0x12:
    {
        if (ExileClientIsInConstructionMode) then
        {
            _step = 45;
            if (_shiftState) then 
            {
                _step = 90;
            }
            else 
            {
                if (_controlState) then
                {
                    _step = 22.5;
                };
            };
            ExileClientConstructionRotation = (ExileClientConstructionRotation + _step + 360) % 360;    
            [] call ExileClient_gui_constructionMode_update;
            _stopPropagation = true;
        };
    };
    case 0x19:
    {
        if (ExileClientIsInBush) then
        {
            call ExileClient_object_bush_detach;
            _stopPropagation = true;
        };
    };
    case 0x31:
    {
        if!(isNull ExileClientCameraParentObject)then
        {
            if(ExileClientCameraNVG)then
            {
                camUseNVG false;
            }
            else
            {
                camUseNVG true;
            };    
            ExileClientCameraNVG = !ExileClientCameraNVG;
            _stopPropagation = true;
        };
    };
    case 0xC9: 
    {
        if (ExileClientIsInConstructionMode) then
        {
            _step = 0.25;
            if (_shiftState) then 
            {
                _step = 1;
            }
            else 
            {
                if (_controlState) then
                {
                    _step = 0.025;
                };
            };
            ExileClientConstructionOffset set [2, ((((ExileClientConstructionOffset select 2) + _step) min 6) max -3) ];
            [] call ExileClient_gui_constructionMode_update;
            _stopPropagation = true;
        };
    };
    case 0xD1: 
    {
        if (ExileClientIsInConstructionMode) then
        {
            _step = 0.25;
            if (_shiftState) then 
            {
                _step = 1;
            }
            else 
            {
                if (_controlState) then
                {
                    _step = 0.025;
                };
            };
            ExileClientConstructionOffset set [2, ((((ExileClientConstructionOffset select 2) - _step) min 6) max -3) ];
            [] call ExileClient_gui_constructionMode_update;
            _stopPropagation = true;
        };
    };
    case 0xC7: 
    {
        if (ExileClientIsInConstructionMode) then
        {
            _step = 0.25;
            if (_shiftState) then 
            {
                _step = 1;
            }
            else 
            {
                if (_controlState) then
                {
                    _step = 0.025;
                };
            };
            ExileClientConstructionOffset set [1, (((ExileClientConstructionOffset select 1) + _step) min 6) max ExileClientConstructionBoundingRadius ];
            [] call ExileClient_gui_constructionMode_update;
            _stopPropagation = true;
        };
    };
    case 0xCF: 
    {
        if (ExileClientIsInConstructionMode) then
        {
            _step = 0.25;
            if (_shiftState) then 
            {
                _step = 1;
            }
            else 
            {
                if (_controlState) then
                {
                    _step = 0.025;
                };
            };
            ExileClientConstructionOffset set [1, (((ExileClientConstructionOffset select 1) - _step) min 6) max ExileClientConstructionBoundingRadius ];
            [] call ExileClient_gui_constructionMode_update;
            _stopPropagation = true;
        };
    };
    case 0xDB:
    {
        switch (ExilePartyEspMode) do 
        {
            case 0:         { ExilePartyEspMode = 1; };
            case 1:     { ExilePartyEspMode = 2; };
            case 2:             { ExilePartyEspMode = 0; };
        };
        _stopPropagation = true;
    };
};
_stopPropagation

 

Edited by speedweasel
1 person likes this

Share this post


Link to post
Share on other sites
Advertisement

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.