uns0urce

Autotype and auto choose target for s0urce.io

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

You will need to install an extension such as Tampermonkey to install this script.

Tendrás que instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Tendrás que instalar una extensión como Tampermonkey antes de poder instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Advertisement:

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Tendrás que instalar una extensión como Stylus antes de poder instalar este script.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

Para poder instalar esto tendrás que instalar primero una extensión de estilos de usuario.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

Advertisement:

// ==UserScript==
// @name         uns0urce
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Autotype and auto choose target for s0urce.io
// @author       You
// @match        https://s0urce.io/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=s0urce.io
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
    'use strict'

    const adblock = document.getElementById('window-msg2')
    adblock.style.display = 'none'

    const desktopWrapper = document.getElementById('desktop-wrapper')
    const customDesktopSettings = document.createElement('div')
    customDesktopSettings.classList.add('desktop-element')
    customDesktopSettings.id = 'desktop-settings'
    customDesktopSettings.style.position = 'absolute'
    customDesktopSettings.style.top = '255px'
    customDesktopSettings.style.left = '130px'
    const customDesktopSettingsImage = document.createElement('img')
    customDesktopSettingsImage.src = 'https://cdn.discordapp.com/attachments/1121687891404406815/1125611167843352617/tampermonkey.png'
    customDesktopSettingsImage.classList.add('desktop-element-img')
    const customDesktopSettingsTitle = document.createElement('div')
    customDesktopSettingsTitle.classList.add('desktop-element-title')
    customDesktopSettingsTitle.innerText = 'uns0urce'
    customDesktopSettings.appendChild(customDesktopSettingsImage)
    customDesktopSettings.appendChild(customDesktopSettingsTitle)
    desktopWrapper.appendChild(customDesktopSettings)
    const windowWrapper = document.getElementsByClassName('window-wrapper')[0]
    const customWindow = document.createElement('div')
    customWindow.classList.add('window')
    customWindow.id = 'window-autotype'
    customWindow.style.top = '234px'
    customWindow.style.left = '291px'
    customWindow.style.borderColor = 'rgb(77, 100, 122)'
    customWindow.style.zIndex = '10'
    customWindow.style.display = 'none'
    const customWindowTitle = document.createElement('div')
    customWindowTitle.classList.add('window-title')
    customWindowTitle.style.backgroundColor = 'rgb(77, 100, 122)'
    const customWindowTitleImage = document.createElement('img')
    customWindowTitleImage.src = 'https://cdn.discordapp.com/attachments/1121687891404406815/1125611167843352617/tampermonkey.png'
    customWindowTitleImage.classList.add('icon-small')
    customWindowTitleImage.classList.add('window-title-icon')
    const customWindowClose = document.createElement('span')
    customWindowClose.classList.add('window-close-style')
    customWindowClose.classList.add('window-close')
    const customWindowCloseImage = document.createElement('img')
    customWindowCloseImage.src = '../client/img/icon-close.png'
    customWindowCloseImage.classList.add('window-close-img')
    customWindowClose.appendChild(customWindowCloseImage)
    customWindowTitle.appendChild(customWindowTitleImage)
    customWindowTitle.appendChild(customWindowClose)
    const customWindowContent = document.createElement('div')
    customWindowContent.classList.add('window-content')
    customWindowContent.style.width = '360px'
    customWindowContent.style.height = '160px'
    customWindow.appendChild(customWindowTitle)
    customWindow.appendChild(customWindowContent)
    windowWrapper.appendChild(customWindow)

    // Open window from desktop
    customDesktopSettings.addEventListener('click', function () {
        if (customWindow.style.display === 'none') {
            customWindow.style.display = ''
        } else {
            customWindow.style.display = 'none'
        }
    })

    // Close window
    customWindowClose.addEventListener('click', function () {
        customWindow.style.display = 'none'
    })

    // Drag window
    let isDragging = false
    let dragX = 0
    let dragY = 0
    customWindowTitle.addEventListener('mousedown', function (event) {
        isDragging = true
        dragX = event.clientX
        dragY = event.clientY
    })

    document.addEventListener('mousemove', function (event) {
        if (isDragging) {
            const deltaX = event.clientX - dragX
            const deltaY = event.clientY - dragY
            const currentX = parseInt(customWindow.style.left)
            const currentY = parseInt(customWindow.style.top)
            customWindow.style.left = `${currentX + deltaX}px`
            customWindow.style.top = `${currentY + deltaY}px`
            dragX = event.clientX
            dragY = event.clientY
        }
    })

    document.addEventListener('mouseup', function () {
        isDragging = false
    })

    // Settings
    // Autotype toggle button
    const enableButton = document.createElement('div')
    enableButton.classList.add('button')
    enableButton.id = 'settings-button-autotype'
    enableButton.innerText = 'AutoType: On'
    customWindowContent.appendChild(enableButton)

    enableButton.addEventListener('click', function () {
        if (enableButton.innerText === 'AutoType: On') {
            enableButton.innerText = 'AutoType: Off'
            autoTypeEnabled = false
        } else {
            enableButton.innerText = 'AutoType: On'
            autoTypeEnabled = true
        }
    })

    // Line break
    const br = document.createElement('br')
    const br2 = document.createElement('br')
    customWindowContent.appendChild(br)
    customWindowContent.appendChild(br2)

    // Speed input in MS
    const speedLabel = document.createElement('label')
    speedLabel.innerText = 'Speed (MS)'
    customWindowContent.appendChild(speedLabel)

    const speedInput = document.createElement('input')
    speedInput.type = 'number'
    speedInput.min = '1'
    speedInput.max = '1000'
    speedInput.value = '350'
    speedInput.style.width = '50px'
    speedInput.style.marginLeft = '10px'
    speedInput.style.marginRight = '10px'
    customWindowContent.appendChild(speedInput)

    // Line break
    const br3 = document.createElement('br')
    const br4 = document.createElement('br')
    customWindowContent.appendChild(br3)
    customWindowContent.appendChild(br4)

    // Auto choose target
    const autoChooseTarget = document.createElement('div')
    autoChooseTarget.classList.add('button')
    autoChooseTarget.id = 'settings-button-autotype'
    autoChooseTarget.innerText = 'Auto Choose Target: Off'
    customWindowContent.appendChild(autoChooseTarget)

    autoChooseTarget.addEventListener('click', function () {
        if (autoChooseTarget.innerText === 'Auto Choose Target: On') {
            autoChooseTarget.innerText = 'Auto Choose Target: Off'
            autoChooseTargetEnabled = false
        } else {
            autoChooseTarget.innerText = 'Auto Choose Target: On'
            autoChooseTargetEnabled = true

            const toolTypeImage = document.getElementsByClassName('tool-type-img')[0]
            const loadEvent = new Event('load')
            toolTypeImage.dispatchEvent(loadEvent)
        }
    })


    const targetMessageInput = document.getElementById('targetmessage-input')
    targetMessageInput.value = 'smacked by uns0urce autotype'

    // --- //

    let autoTypeEnabled = true
    let autoChooseTargetEnabled = false
    async function autoType() {
        const toolTypeForm = document.getElementById('tool-type-form')
        const toolTypeInput = document.getElementById('tool-type-word')
        const toolTypeImage = document.getElementsByClassName('tool-type-img')[0]

        const knownWordsFetch = await fetch('https://raw.githubusercontent.com/Lozarth/outs0urce/main/words.json')
        const knownWords = await knownWordsFetch.json()

        toolTypeImage.addEventListener('load', function () {
            if (!autoTypeEnabled) return

            if (toolTypeImage.src === 'https://s0urce.io/client/img/words/template.png' && autoChooseTargetEnabled) {
                const playerList = document.getElementById('player-list')
                const playerListRows = playerList.getElementsByTagName('tr')

                const randomPlayer = playerListRows[Math.floor(Math.random() * playerListRows.length)]
                randomPlayer.click()

                const hackButton = document.getElementById('window-other-button')
                hackButton.click()

                const portButton1 = document.getElementById('window-other-port1')
                const portButton2 = document.getElementById('window-other-port2')
                const portButton3 = document.getElementById('window-other-port3')

                const randomPort = Math.floor(Math.random() * 3)

                if (randomPort === 0) {
                    portButton1.click()
                } else if (randomPort === 1) {
                    portButton2.click()
                } else {
                    portButton3.click()
                }
            }

            const wordObject = knownWords.find(knownWord => knownWord.image === toolTypeImage.src)

            if (wordObject) {
                toolTypeInput.value = wordObject.word

                let delay = parseInt(speedInput.value)
                let randomVariation = Math.floor(Math.random() * 100)

                delay += randomVariation

                setTimeout(function () {
                    toolTypeForm.requestSubmit()
                }, delay)
            }
        })

        // toolTypeInput.addEventListener('keydown', function (event) {
        //     if (event.key === 'Enter') {
        //         const enteredWord = toolTypeInput.value
        //         const wordImage = toolTypeImage.src
        //         const wordObject = knownWords.find(knownWord => knownWord.word === enteredWord)

        //         if (!wordObject || wordObject.image !== wordImage) {
        //             // Push to custom known words local storage

        //         }

        //     }
        // })
    }

    autoType()
})()