Sign in to follow this  
Followers 0
speedweasel

[Release] Improved View Distance Shortcut Keys for Version 0.9.8

1 post in this topic

Posted (edited)

I'm half posting this to mess with  @Taylor Swift  The other half of the post contains an updated view distance script that you can trigger using Function Keys (F1 - F4)  This *Improved Version* makes use of the Toast messages in Exile 0.9.8.  Mmmm.... toast.

If you want to steer clear of the controversy surrounding the many versions of a view distance app in the XM8.  Or if you simply want to change your view distance without to navigating a virtual tablet, this is the script for you.  No more taking your eyes off your crosshair; more frags, guaranteed.

Overwrite your ExileClient_gui_hud_event_onKeyUp function using Exile's  CustomCode feature.  (Standard stuff.  Just Google "Exile CustomCode.")

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 400;
                setObjectViewDistance 400;               
                ["SuccessTitleAndText", ["View Distance", "NEAR View Distance (400m)"]] call ExileClient_gui_toaster_addTemplateToast;
                _stopPropagation = true; };
    case 0x3C:     { setViewDistance 800;
                setObjectViewDistance 800;
                ["SuccessTitleAndText", ["View Distance", "MID View Distance (800m)"]] call ExileClient_gui_toaster_addTemplateToast;
                _stopPropagation = true; };
    case 0x3D:    { setViewDistance 1200;
                setObjectViewDistance 1200;
                ["SuccessTitleAndText", ["View Distance", "FAR View Distance (1200m)"]] call ExileClient_gui_toaster_addTemplateToast;
                _stopPropagation = true; };
    case 0x3E:    { setViewDistance 1600;
                setObjectViewDistance 1600;
                 ["SuccessTitleAndText", ["View Distance", "MAX View Distance (1600m)"]] call ExileClient_gui_toaster_addTemplateToast;
                _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 || ExileIsPlayingRussianRoulette) 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 || ExileIsPlayingRussianRoulette) 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 || ExileIsPlayingRussianRoulette) then 
        {
            if (ExileClientIsInConstructionMode) then
            {
                if (ExileClientConstructionSupportSnapMode) then
                {
                    if (ExileClientConstructionMode != 3) then 
                    {
                        ExileClientConstructionCurrentSnapToObject = objNull; 
                        ExileClientConstructionPossibleSnapPositions = [];
                        ["InfoTitleAndText", ["Snap Mode", "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 the object."]] call ExileClient_gui_toaster_addTemplateToast;
                    };
                    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 || ExileIsPlayingRussianRoulette) then 
        {
            if (ExileClientIsInConstructionMode) then
            {
                if !(ExileClientConstructionKitClassName isEqualTo "Exile_Item_Flag") 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 (ExileIsPlayingRussianRoulette) then
        {
            if (ExileRussianRouletteCanFire) then 
            {
                [] spawn ExileClient_system_russianRoulette_fire;
            };
        }
        else 
        {
            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 (ExileIsPlayingRussianRoulette) then 
        {
            _stopPropagation = true;
        }
        else 
        {
            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

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.