// initialize jwplayer var playerInstance = jwplayer('player'); // player dom elements var playerContainerEl = document.querySelector('.player-container'); // returns video player position from top of document function getElementOffsetTop(el) { var boundingClientRect = el.getBoundingClientRect(); var bodyEl = document.body; var docEl = document.documentElement; var scrollTop = window.pageYOffset || docEl.scrollTop || bodyEl.scrollTop; var clientTop = docEl.clientTop || bodyEl.clientTop || 0; return Math.round(boundingClientRect.top + scrollTop - clientTop); } // returns the current y scroll position function getScrollTop() { var docEl = document.documentElement; return (window.pageYOffset || docEl.scrollTop) - (docEl.clientTop || 0); } // configure jwplayer instance playerInstance.setup({ autostart: true, playlist: 'https://cdn.jwplayer.com/v2/playlists/mYdavspX', primary: 'html5', setFullscreen: true, width: '100%' }); // when jwplayer instance is ready playerInstance.on('ready', function() { var config = playerInstance.getConfig(); var utils = playerInstance.utils; // get height of player element var playerHeight = config.containerHeight; // flag determining whether close has been clicked var closed = true; // CHANGED // flag determing whether player is playing var playing = false; // ADDED // eventhandler for when close button is being pressed document.getElementsByClassName('icon-close')[0].addEventListener('click', () => { closed = true; onScrollViewHandler(); }); playerInstance.on('play', function() { closed = false; playing = true; // ADDED }).on('pause', function () { playing = false; // ADDED }).on('adPlay', function() { closed = false; // ADDED playing = true; // ADDED }).on('adPause', function() { playing = false; // ADDED }); // get player element position from top of document var playerOffsetTop = getElementOffsetTop(playerContainerEl); // set player container to match height of actual video element playerContainerEl.style.height = playerHeight + 'px'; // below we handle window scroll event without killing performance function onScrollViewHandler() { var minimized = getScrollTop() >= playerOffsetTop; if (closed && minimized) { minimized = false; jwplayer().pause(); playing = false; // ADDED } else if (!minimized && !playing) { closed = true; // ADDED } utils.toggleClass(playerContainerEl, 'player-minimize', minimized); // update the player's size so the controls are adjusted playerInstance.resize(); } // namespace for whether or not we are waiting for setTimeout() to finish var isScrollTimeout = false; // window onscroll event handler window.onscroll = function() { // skip if we're waiting on a scroll update timeout to finish if (isScrollTimeout) return; // flag that a new timeout will begin isScrollTimeout = true; // otherwise, call scroll event view handler onScrollViewHandler(); // set new timeout setTimeout(function() { // reset timeout flag to false (no longer waiting) isScrollTimeout = false; }, 80); }; });

The GKS is a multi-purpose weapon within Black Ops 4’s multiplayer and packs a hefty punch with decent range.

The GKS is not your typical sub-machine gun. The gun does not come with the typical higher fire-rate of SMGs and also comes with the option for the ICR-7’s Grip 2. It’s an unusual one, but we’ll break it down into its pieces to get the most out of its parts.

With the help of XclusiveAce’s stats, let’s break the GKS down and then discuss the best way to use this unusual SMG. You can always find his videos embedded at the end of the article.

The GKS comes with a stats package that displays an ability to be used to decent effect at almost any range. Long range fights will be a harder proposal due to the long 8-shot kill times of 651ms, but if you land a few headshots, you can even pick off a few snipers.

The Grip 2 helps with this range as well, but a key point must be made here. ARs are all simply better at fighting at medium and long range. Every AR, with the arguable exception of the Rampart with no attachments, will beat the GKS at range when players are of equal skill.

Additionally, the GKS’s SMG stats fall behind as well. The fire-rate is lower than other SMGs and per-bullet kill times also come out to be lackluster. The GKS’s main point of advantage is its ability to strafe fast with Grip 2, but the ICR can do the job a bit better.

Now, moving onto the speed stats, the weapon does display some potential. With Gungho, the GKS has a lightning quick sprintout time of 150ms, much faster than ARs which gives it a big advantage at medium range vs the ICR, KN-57, and others.

Though the GKS cannot equip a stock onto its frame, the 80% strafe speed covers most ground quickly enough while ADS’d in comparison to ARs. When fighting versus the Saug 9mm or Spitfire, the GKS tends to under perform and lose close range fights.

The 70ms decrease in ADS speeds with Quickdraw is a decent upgrade and should be considered by players when loading out a class for the GKS.

XclusiveAce has crafted a class from the above data that fits the weapon as best as possible. The weapon isn’t the greatest in the game, but with the above setup, you can cause some serious damage.

The Quickdraw gives you that aforementioned ADS benefit. The double grips give you the ability to fight targets at medium and long range without the need to worry about flinch affecting your aim.

Due to the GKS’s longer per-bullet kills, an Extended Magazine is a worthwhile pick. It’ll help you ensure that you don’t run out of shots while blasting down range at long range targets.

In terms of perks, the class comes with Gungho and Dead Silence. Gungho’s benefit was already mentioned above, but Dead Silence will allow you to out-flank enemies without the fear of them hearing your steps.

You can find more guides on every weapon and map on XclusiveAce’s Youtube Channel. He generally produces one video a day and is a great source for stats, tips, and amazing production quality CoD videos.

For more guides, news, and tips, you can check us out @CharlieIntel on Twitter.

comments below
A life-long Call of Duty player, Bachelor of Game Design, and a lover of eSports. Floodsye is my real name, Tommi is just the gamertag my parents gave me.