Greasy Fork is available in English.

Kirka.IO Enhanced

Wallhack, adblock and more for Kirka.IO.

질문, 리뷰하거나, 이 스크립트를 신고하세요.
// ==UserScript==
// @name Kirka.IO Enhanced
// @namespace -
// @version 1.5.0
// @description Wallhack, adblock and more for Kirka.IO.
// @author NotYou
// @match *://kirka.io/*
// @run-at document-end
// @license GPL-3.0-or-later
// @grant GM.info
// @icon data:image/png;base64,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
// ==/UserScript==

(function() {
    const TITLE = (GM && GM.info && GM.info.script && GM.info.script.name) || 'Kirka.IO Enhanced'

    let wallhackEnabled = false

    const KEYS = {
        CHAT_VISIBILITY_TOGGLE: 'V',
        WALLHACK_TOGGLE: 'F'
    }

    let players = []

    class Visibility {
        static visible(el) {
            el.style.opacity = '1'
            el.style.pointerEvents = 'auto'
        }

        static invisible(el) {
            el.style.opacity = '0'
            el.style.pointerEvents = 'none'
        }

        static toggle(el) {
            if(el.style.opacity === '0') {
                return this.visible(el)
            }

            this.invisible(el)
        }
    }

    class Wallhack {
        static visible(e) {
            e.alphaTest = .99
            e.fog = false
            e.depthTest = false
        }

        static invisible(e) {
            e.alphaTest = 1
            e.fog = true
            e.depthTest = true
        }
    }

    class CSS {
        static init() {
            const _CSS = `
            .notification {
              position: absolute;
              background: var(--secondary-5);
              border: 4px solid rgb(62, 77, 124);
              border-bottom: 4px solid var(--secondary-6);
              border-top: 4px solid rgb(77, 92, 139);
              width: 250px;
              height: 100px;
              right: 15px;
              bottom: 15px;
              z-index: 100;
              color: rgb(255, 255, 255);
              transition: .3s;
              opacity: 0.85;
              pointer-events: none;
            }

            .notification-title {
              font-size: x-large;
              text-align: center;
              margin: 2px;
            }

            .notification-body {
              margin: 3px;
              font-size: medium;
            }

            .highlight-disabled::after {
              content: 'disabled';
              color: rgb(210, 50, 50);
            }

            .highlight-enabled::after {
              content: 'enabled';
              color: rgb(50, 210, 50);
            }

            .bloody-screen {
              pointer-events: none !important;
              width: 100vw;
              height: 100vh;
              position: absolute;
              left: 0;
              top: 0;
              box-shadow: rgba(255, 0, 0, .8) 0 0 150px inset;
              transition: .3s opacity;
            }`

            addStyle(_CSS)
        }
    }

    class AdBlock {
        static init() {
            let adBlockCss

            let ads = ['ad-left', 'ad-right', 'ad-bottom', 'ad-change-weapon']
            let adsSelectors = ''

            ads.forEach(e => {
                let adSelector = ''
                let prefixes = ['.', '#']

                prefixes.forEach(r => {
                    adSelector += r + e + ','
                })

                adsSelectors += adSelector
            })

            adBlockCss = adsSelectors.slice(0, -1) + '{ display: none !important }'

            addStyle(adBlockCss)

            window.show_rewarded = _
            window.show_preroll = _
        }
    }

    class Keybindings {
        static init() {
            let keybidings = [
                // Toggle Chat Visibility
                {
                    key: KEYS.CHAT_VISIBILITY_TOGGLE,
                    fn() {
                        let chat = document.querySelector('.chat')

                        if(chat) {
                            chat.style.transition = '.3s opacity'
                            Visibility.toggle(chat)
                        }
                    }
                },

                // Toggle Wallhack
                {
                    key: KEYS.WALLHACK_TOGGLE,
                    fn() {
                        wallhackEnabled = !wallhackEnabled

                        if(wallhackEnabled) {
                            players.forEach(visibleEach)
                        } else {
                            players.forEach(invisibleEach)
                        }

                        function visibleEach(e) {
                            Wallhack.visible(e)
                        }

                        function invisibleEach(e) {
                            Wallhack.invisible(e)
                        }

                        notify('Wallhack', 'Wallhack is ', wallhackEnabled)
                    }
                },
            ]

            keybidings.forEach(e => {
                window.addEventListener('keydown', r => {
                    const focusedElem = document.querySelector(':focus') || document.activeElement

                    if(focusedElem.matches('.chat .input')) {
                        return
                    }

                    if(r.code === 'Key' + e.key.toUpperCase()) {
                        r.preventDefault()
                        e.fn()
                    }
                })
            })
        }
    }

    class BloodyScreen {
        static init() {
            const bloodyScreen = document.createElement('div')
            bloodyScreen.className = 'bloody-screen'
            Visibility.invisible(bloodyScreen)
            document.body.appendChild(bloodyScreen)

            const obs = new MutationObserver(() => {
                const progress = document.querySelector('.hp-progress')


                if(progress) {
                    const hp = currentHealth()

                    if(hp < 35 && hp > 0) {
                        Visibility.visible(bloodyScreen)
                    } else {
                        Visibility.invisible(bloodyScreen)
                    }
                }
            })

            obs.observe(document.body, {
                subtree: true,
                childList: true,
            })

            function currentHealth() {
                return +document.querySelector('.hp-progress').style.width.slice(0, -1)
            }
        }
    }

    class _Wallhack {
        static init() {
            Object.defineProperty(Object.prototype, 'material', {
                set(value) {
                    this._material = value

                    if (this._material && this._material.name && this._material.name.indexOf('player') !== -1) {
                        players.push(value)

                        if(wallhackEnabled) {
                            Wallhack.visible(value)
                        }
                    }
                },

                get() {
                    return this._material
                }
            })
        }
    }

    class Main {
        static init() {
            const MODULES = [
                CSS,
                AdBlock,
                Keybindings,
                BloodyScreen,
                _Wallhack,
            ]

            initModules(MODULES)
        }
    }

    Main.init()

    function initModules(modules) {
        for (let i = 0; i < modules.length; i++) {
            const MODULE = modules[i]

            initModule(MODULE)
        }
    }

    function initModule(module) {
        try {
            module.init()
        } catch(e) {
            console.error(TITLE, module.name + ' module, has error:', e)
        }
    }

    function notify(title, body, highlight) {
        const notifClass = 'notification'
        const notif = document.createElement('div')
        const notifTitle = document.createElement('h3')
        const notifBody = document.createElement('p')

        notifTitle.className = notifClass + '-title'
        notifBody.className = notifClass + '-body'
        notif.className = notifClass

        notifTitle.textContent = title ?? 'Kirka.IO Enchanced'
        notifBody.innerHTML = (body ?? '') + (`<span class="highlight-${highlight ? 'enabled' : highlight === false ? 'disabled' : ''}"></span>`)

        notif.style.right = '100vw'

        notif.appendChild(notifTitle)
        notif.appendChild(notifBody)
        document.body.appendChild(notif)

        setTimeout(() => {
            notif.style.right = ''
        }, 300)

        setTimeout(() => {
            notif.style.right = '100vw'

            setTimeout(() => {
                notif.remove()
            }, 300)
        }, 1300)
    }

    function addStyle(css) {
        const styleNode = document.createElement('style')
        styleNode.appendChild(document.createTextNode(css))
        document.head.appendChild(styleNode)
    }

    function _() {}
})()