星之子 发表于 2025-6-16 21:23:02

【油猴脚本】二手市场 指定勋章优先显示

动机
前两天翻到了瓦尼最新版本的大宝剑补丁,里面有一个逆序排列的功能非常舒爽,不用再滑到最下面,尤其是二手市场勋章特别多的时候。后来又觉得还有进一步适配不同需求的空间,于是就有了这个脚本。

功能
可以在脚本中填入一个收藏列表。二手市场中存在收藏的勋章时,会排到最前显示,并加上红色边框。排序逻辑:优先按照收藏列表的顺序排列。如果在收藏列表中重复填入一个勋章的名称多次,则只计入第一次填入。如果收藏中的勋章在二手市场出现了多枚,则按照出现在市场中的先后顺序排列。
另外左下角也加入了当前收藏列表的UI显示(如果你希望这个脚本的加载速度尽可能快,也可以将这部分代码删除,脚本中已经给出了详细的位置)。


代码
@Name@Match@Icon
// ==UserScript==
// @name         二手:勋章排序脚本 带UI
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description将指定标题的勋章排序到最前面并添加黄色边框
// @author       Étoiles
// @match      https://www.gamemale.com/wodexunzhang-showxunzhang.html?action=showjishou
// @grant      none
// ==/UserScript==

(function() {
    'use strict';

    // 配置项 - 在此处添加你喜欢的勋章名称
    const favoriteTitles = [
      "梦中的列车",
      "小阿尔的蛋",
      "红夫人",
      "约翰·康斯坦丁",
      "疾风剑豪",
      "John Reese",
      "小阿尔的蛋",
      "",
      "",
      "",
      "",
      "",
      "",
    ];

    // 勋章排序功能
    function sortMedals() {
      // 获取勋章容器
      const container = document.querySelector('.myfldiv.clearfix');
      if (!container) return;

      // 获取所有勋章块
      const medals = Array.from(container.querySelectorAll('.myblok'));

      // 对勋章进行排序 - 收藏的在前,其他的在后
      medals.sort((a, b) => {
            const aTitle = a.querySelector('p').title;
            const bTitle = b.querySelector('p').title;

            // 检查是否为收藏的勋章
            const aIsFavorite = favoriteTitles.includes(aTitle);
            const bIsFavorite = favoriteTitles.includes(bTitle);

            // 排序规则:
            if (aIsFavorite && !bIsFavorite) return -1;// a是收藏,b不是,a排在前面
            if (!aIsFavorite && bIsFavorite) return 1;// b是收藏,a不是,b排在前面
            if (aIsFavorite && bIsFavorite) {
                // 都是收藏,按配置顺序排序
                return favoriteTitles.indexOf(aTitle) - favoriteTitles.indexOf(bTitle);
            }
            return 0; // 都不是收藏,保持原有顺序
      });

      // 从容器中移除所有勋章
      medals.forEach(medal => container.removeChild(medal));

      // 按排序后的顺序重新添加勋章
      medals.forEach(medal => {
            // 为收藏的勋章添加黄色边框
            const title = medal.querySelector('p').title;
            if (favoriteTitles.includes(title)) {
                medal.style.border = '2px solid red';
            }
            container.appendChild(medal);
      });
    }

    // 页面加载时执行排序
    window.addEventListener('load', sortMedals);


    //-----------从这里开始是DeepSeek自己添加的UI功能 不喜欢的话可以从这里开始删除-----------
    //-----------我个人是觉得没啥必要 反而拖慢页面加载速度 但或许有人用的上就留着了-----------

    // 创建收藏管理UI
    function createFavoriteUI() {
      // 创建UI容器
      const uiContainer = document.createElement('div');
      uiContainer.style.position = 'fixed';
      uiContainer.style.bottom = '10px';
      uiContainer.style.left = '10px';
      uiContainer.style.backgroundColor = 'white';
      uiContainer.style.padding = '10px';
      uiContainer.style.border = 'none';
      uiContainer.style.zIndex = '9999';
      uiContainer.style.borderRadius = '8px';
      uiContainer.style.fontFamily= 'Noto Sans SC, Microsoft Yahei, Arial, sans-serif';

      // 添加标题
      const title = document.createElement('h4');
      title.textContent = '收藏排序';
      title.style.marginTop = '0';
      uiContainer.appendChild(title);

      // 创建收藏列表 - 使用Set去除重复项
      const favoritesList = document.createElement('div');
      const uniqueTitles = [...new Set(favoriteTitles)]; // 去除重复项
      uniqueTitles.forEach(title => {
            const item = document.createElement('div');
            item.textContent = title;
            favoritesList.appendChild(item);
      });
      uiContainer.appendChild(favoritesList);

      // 将UI添加到页面
      document.body.appendChild(uiContainer);
    }

    // 页面加载时创建UI
    window.addEventListener('load', createFavoriteUI);

    //-----------一直删除到这里为止-----------
})();


星象占卜

柏芸 发表于 2025-6-16 21:36:24

感觉是很好用的脚本诶,这样有自己想要但是可能会蹲到的勋章就可以方便去抢了,死灵书圣甲虫魂匣开灯过客果隆武士刀我们来了{:4_86:}

KevinJ 发表于 2025-6-16 21:39:43

很不错的方便抢勋章的脚本呢,标红置顶很醒目了₍₍Ϡ(੭•̀ω•́)੭✧⃛

娱乐法师火布偶 发表于 2025-6-16 21:48:15

目前来说想要的勋章基本上永远不会出现在二手了,已经很少看二手市场的动态了

前方无怪 发表于 2025-6-16 21:51:57

这下二手市场会变得非常整洁咯{:4_86:}(可以一眼看出哪个勋章是赔钱货了.jpg)

shirley1213 发表于 2025-6-16 21:52:52

感觉这个可以将部分过渡徽章设在收藏里面,萌新们就可以很快实现徽章更迭和升级了

xxxxxxxxxxx. 发表于 2025-6-16 22:03:49

对于抢勋章而言确实很方便,但是想要的也很难进二手市场,挂着说不定会有意外惊喜

cdcai 发表于 2025-6-16 22:09:46

在二手抢勋章的话很实用

诺鸦cc 发表于 2025-6-16 22:09:53

感觉好赞啊,感谢大佬制作的脚本suki(●´З`●)

Pshall4Cle 发表于 2025-6-16 22:17:34

挺不错的惹,我感觉要是能直接看到价格就更好了,不用一个个放上去看价格

Floopa 发表于 2025-6-16 22:22:02

感覺是一個實用的功能
但感覺可以弄個有蒐藏的勳章在二手市場上面時就會跳出訊息之類的
平常不會一直去盯著二手市場惹

chz1016 发表于 2025-6-16 22:28:02

不知道有没有显示勋章属性的插件,每次购买勋章都需要去查询

Hunterhuff 发表于 2025-6-16 23:22:18

是技术大佬,但是萌新目前还用不到QAQ,希望早日用上嘿嘿

Destin 发表于 2025-6-16 23:25:22

PY之前把想要的勋章置顶是这样的操作么JPG

cinder 发表于 2025-6-16 23:37:51

很少逛二手,不過補貨前用這個可以避免忽略掉一下好貨./w\

sanweny 发表于 2025-6-16 23:46:23

感觉非常适合需要互换勋章的朋友,把需要的勋章加进收藏方便第一时间买走

Makima 发表于 2025-6-16 23:47:50

感觉改改就能自动抢了,可怕

走失伯劳 发表于 2025-6-16 23:49:17

感觉是非常方便的功能,每次翻二手都得辨认一下哪个是赔钱货

紫-漾 发表于 2025-6-16 23:51:20

很适合蹲守二手市场的哇,捡漏必备脚本了属于是{:6_184:}

麻辣猫薯包 发表于 2025-6-16 23:57:42

感谢大大无私奉献惹~这下真是方便多惹
页: [1] 2 3
查看完整版本: 【油猴脚本】二手市场 指定勋章优先显示