Greasy Fork is available in English.
在军械库中获取战舰世界你每一级的战舰数量(需要登录)和扫雪奖励, 军械库左上角会出现按钮
当前为
// ==UserScript==
// @name 战舰世界14.11圣诞扫雪统计
// @namespace http://tampermonkey.net/
// @version 2025-10-24.2
// @description 在军械库中获取战舰世界你每一级的战舰数量(需要登录)和扫雪奖励, 军械库左上角会出现按钮
// @author HeriX
// @match https://armory.wowsgame.cn/*
// @match https://armory.worldofwarships.asia/*
// @match https://armory.worldofwarships.com/*
// @match https://armory.worldofwarships.eu/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=armory.wowsgame.cn
// @grant none
// @license Free
// ==/UserScript==
(function() {
'use strict';
let ShipDatas;
const elements = document.getElementsByClassName('PageHeader_header');
console.log('PageHeader_header', elements.length)
if(elements.length > 0){
const header = elements[0];
const link = document.createElement('a');
link.textContent = '舰船统计';
link.className = 'btn b b-transparent b-md';
link.style.margin = '10px';
link.style.position = 'fixed';
link.style.top = '10px';
link.style.left = '10px';
document.body.appendChild(link);//页面左上角增加按钮
link.addEventListener('click', function() {
fetch(metashop.settings.urls.accountInventoryVrtx, {//仓库API
method: 'GET',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
},
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(data => {
ShipDatas = data.data.ships;//获取到本人拥有的战舰ID列表
getShipDb();
})
.catch(error => console.error('请求出错:', error));
});
}
function getShipDb() {
const request = indexedDB.open('WoWS-Entities-Database');//WG缓存的战舰百科数据数据库
request.onerror = function(event) {
console.error('Database error:', event.target.errorCode);
};
request.onsuccess = function(event) {
readDb(event.target.result);
};
request.onupgradeneeded = function(event) {
readDb(event.target.result);
};
}
function readDb(db){
const transaction = db.transaction(['collection']);
const objectStore = transaction.objectStore('collection');
const request = objectStore.get('vehicles');//舰船百科
request.onerror = function(event) {
console.error('Unable to retrieve data', event.target.errorCode);
};
request.onsuccess = function(event) {
if (request.result) {
getShipDetails( request.result.data);//获取到百科舰船列表, 其中有每个舰船ID对应的等级信息
} else {
console.log('Data not found');
}
};
}
function getShipDetails(shipDict) {//计算每个等级的数目
let count = [0,0,0,0,0,0,0,0,0,0,0];
const coals = [0,0,0,0,700,750,800,0,0,0,0];
const steels = [0,0,0,0,0,0,0,70,80,0,200];
let total_coals = 0;
let total_steels = 0;
let total_demo = 0;
for(let ship of ShipDatas){
const shipDetail = shipDict[ship];
if(shipDetail){
if(shipDetail.tags.includes('demoWithoutStatsPrem') || shipDetail.tags.includes('event') || shipDetail.tags.includes('clan')) {
total_demo++;
continue;
}
total_coals += coals[shipDetail.level-1];
total_steels += steels[shipDetail.level-1];
count[shipDetail.level-1]++;
}
}
let str = `你一共有${ShipDatas.length}条船`;
if(total_demo > 0) str += `, 其中${total_demo}条临时船`;
for(let i=4;i<count.length;i++){
str += `\r\n${i+1}级船数量: ${count[i]}`;
}
str += `\n总共获得节日证书${count[9]}`;
str += `\n总共获得煤炭${total_coals}`;
str += `\n总共获得钢铁${total_steels}`;
alert(str)
}
})();