GC Virtupets Item Search Links

Adds a Virtupets search link for items in Inventory, SDB, Item List, and Trading Post.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         GC Virtupets Item Search Links
// @namespace     https://greasyfork.org/en/users/1291562-zarotrox
// @version      1.21
// @description  Adds a Virtupets search link for items in Inventory, SDB, Item List, and Trading Post.
// @author       Zarotrox
// @match        https://www.grundos.cafe/*
// @icon         https://i.ibb.co/44SS6xZ/Zarotrox.png
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // Function to add Virtupets search link to a specific item
    function addVirtupetsLink(item, itemName) {
        // Check if the search links div already exists to avoid duplication
        let searchLinksDiv = item.querySelector('.searchhelp');
        if (!searchLinksDiv) {
            // Create a new div for the search links if it doesn't exist
            searchLinksDiv = document.createElement('div');
            searchLinksDiv.className = 'searchhelp';
            item.appendChild(searchLinksDiv);
        }

        // Create a new anchor element for the Virtupets search link
        const newLink = document.createElement('a');
        newLink.href = `https://virtupets.net/search?q=${encodeURIComponent(itemName)}`;
        newLink.title = `Search Virtupets for ${itemName}`; // Set the title correctly
        newLink.target = '_blank';

        // Create an image element for the link
        const img = document.createElement('img');
        img.src = 'https://virtupets.net/assets/images/vp.png'; // Replace with appropriate icon
        img.alt = 'Virtupets Search';
        img.title = `Search Virtupets for ${itemName}`; // Set the title correctly here as well
        img.className = 'search-helper-virtupets'; // Adjust class as necessary

        // Append the image to the anchor
        newLink.appendChild(img);

        // Append the anchor to the search links div
        searchLinksDiv.appendChild(newLink);
    }

    // Function to process inventory items (inv-item class)
    function processInventoryItems() {
        const inventoryItems = document.querySelectorAll('.inv-item');

        inventoryItems.forEach(item => {
            const itemNameSpan = item.querySelector('.item-info span'); // Get the span containing the item name

            if (itemNameSpan) {
                const itemName = itemNameSpan.textContent.trim();
                addVirtupetsLink(item, itemName);
            }
        });
    }

    // Function to process SDB items (sdb-item- id)
    function processSDBItems() {
        const sdbItems = document.querySelectorAll('div[id^="sdb-item-"].data.flex-column.small-gap.break');

        sdbItems.forEach(item => {
            const itemNameStrong = item.querySelector('strong'); // Get the strong tag containing the item name

            if (itemNameStrong) {
                const itemName = itemNameStrong.textContent.trim();
                addVirtupetsLink(item, itemName);
            }
        });
    }

 // Function to process items in the item list
function processItemList() {
    const itemListItems = document.querySelectorAll('.itemList.margin-1 .inv-item');

    itemListItems.forEach(item => {
        const itemNameStrong = item.querySelector('strong'); // Get the strong tag containing the item name

        if (itemNameStrong) {
            const itemName = itemNameStrong.textContent.trim();
            addVirtupetsLink(item, itemName);
        }
    });
}


    // Function to process Trading Post items
    function processTradingPostItems() {
        const tradingPostItems = document.querySelectorAll('.trade-item');

        tradingPostItems.forEach(item => {
            const itemNameSpan = item.querySelector('.item-info span'); // Get the span containing the item name

            if (itemNameSpan) {
                const itemName = itemNameSpan.textContent.trim();
                addVirtupetsLink(item, itemName);
            }
        });
    }

    // Function to add CSS styles
    function addCustomStyles() {
        const style = document.createElement('style');
        style.textContent = `
            .inv-item-name {
                font-weight: bold; /* Makes item names bold */
            }
            .searchhelp a {
                margin-right: 5px; /* Adds spacing between links */
            }
        `;
        document.head.appendChild(style);
    }

    // Execute the CSS addition and all processing functions
    addCustomStyles();
    processInventoryItems();
    processSDBItems();
    processItemList(); // Process item list items
    processTradingPostItems(); // Process trading post items

})();