Steam Link Dropdown - Adds Clean Links to Various Safe Sites in a neat dropdown

Adds a quick and easily to access way of finding links to games.

目前為 2025-01-07 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Steam Link Dropdown - Adds Clean Links to Various Safe Sites in a neat dropdown
// @namespace    Karma
// @version      1.0
// @description  Adds a quick and easily to access way of finding links to games.
// @author       Karma
// @match        http://store.steampowered.com/app/*
// @match        https://store.steampowered.com/app/*
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    // Helper function to create a styled link
    const createLink = (href, text) => {
        const link = document.createElement('a');
        link.href = href;
        link.textContent = text;
        link.target = '_blank';
        link.style.display = 'block';
        link.style.padding = '5px 10px';
        link.style.textDecoration = 'none';
        link.style.color = '#5095c1';
        link.style.backgroundColor = '#2d5071';
        link.style.borderBottom = '1px solid #c6d4df';
        link.addEventListener('mouseover', () => {
            link.style.backgroundColor = '#1b2838';
        });
        link.addEventListener('mouseout', () => {
            link.style.backgroundColor = '#2d5071';
        });
        return link;
    };

    // Retrieve the game name
    const gameName = document.querySelector('.apphub_AppName')?.textContent.trim();
    if (!gameName) return;

    // Get the container for app actions
    const appActionContainer = document.querySelector('.apphub_OtherSiteInfo');
    if (!appActionContainer) return;

    // Create the dropdown container
    const dropdownContainer = document.createElement('div');
    dropdownContainer.style.position = 'absolute';
    dropdownContainer.style.top = '100%';
    dropdownContainer.style.right = '0';
    dropdownContainer.style.backgroundColor = '#2d5071';
    dropdownContainer.style.boxShadow = '0 4px 8px rgba(0, 0, 0, 0.3)';
    dropdownContainer.style.border = '1px solid #c6d4df';
    dropdownContainer.style.borderRadius = '0px';
    dropdownContainer.style.display = 'none';
    dropdownContainer.style.zIndex = '1000';
    dropdownContainer.style.minWidth = '200px';
    document.addEventListener('click', (event) => {
        if (!dropdownContainer.contains(event.target) && !dropdownButton.contains(event.target)) {
            dropdownContainer.style.display = 'none';
        }
    });

    // Button
    const dropdownButton = document.createElement('div');
    dropdownButton.textContent = 'Safe Sites';
    dropdownButton.style.cursor = 'pointer';
    dropdownButton.style.padding = '7px 14px';
    dropdownButton.style.margin = '2 0px';
    dropdownButton.style.backgroundColor = '#2d5071';
    dropdownButton.style.color = '#5095c1';
    dropdownButton.style.borderRadius = '2px';
    dropdownButton.style.textAlign = 'center';
    dropdownButton.style.fontfamily = 'arial'
    dropdownButton.style.fontSize = '15px';
    dropdownButton.style.fontWeight = 'bold';
    dropdownButton.style.display = 'inline-block';
    dropdownButton.style.border = '0px solid rgba(0, 0, 0, 10)';
    dropdownButton.style.position = 'relative';
    dropdownButton.addEventListener('click', (event) => {
        event.stopPropagation();
        dropdownContainer.style.display = dropdownContainer.style.display === 'none' ? 'block' : 'none';
        dropdownContainer.style.top = `${dropdownButton.offsetHeight}px`;
        dropdownContainer.style.right = '0';
    });

    // List of links to add
    const links = [
        // Its not hard to add new sites
        { href: `https://gog-games.to/?q=${gameName}`, text: 'GOG Games' },
        { href: `https://cs.rin.ru/forum/search.php?keywords=${gameName}&terms=any&author=&sc=1&sf=titleonly&sk=t&sd=d&sr=topics&st=0&ch=300&t=0&submit=Search`, text: 'CS.RIN.RU' },
        { href: `https://steamrip.com/?s=${gameName}`, text: 'SteamRip' },
        { href: `https://fitgirl-repacks.site/?s=${gameName}`, text: 'FitGirl Repacks' },
        { href: `https://ankergames.net/search/${gameName}`, text: 'AnkerGames' },
        { href: `https://online-fix.me/index.php?do=search&subaction=search&story=${gameName}`, text: 'Online-Fix' },
        { href: `https://gamebounty.world/?s${gameName}`, text: 'GameBounty' },
        { href: `https://www.ovagames.com/?s=${gameName}&x=0&y=0`, text: 'OVA Games' },
        { href: `https://www.youtube.com/results?search_query=${encodeURIComponent(gameName)}+gameplay+no+commentary`, text: 'Gameplay Vid' },
    ];

    // Append links to the dropdown container
    links.forEach(({ href, text }) => {
        dropdownContainer.appendChild(createLink(href, text));
    });

    // Append the dropdown button and container beside the "Community Hub" button
    appActionContainer.appendChild(dropdownButton);
    dropdownButton.appendChild(dropdownContainer);
})();