您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Detects true usable inventory slots (base + backpack)
// ==UserScript== // @name Dead Frontier Inventory Counter // @namespace http://tampermonkey.net/ // @version 3.8 // @description Detects true usable inventory slots (base + backpack) // @match https://fairview.deadfrontier.com/onlinezombiemmo/index.php* // @grant none // ==/UserScript== window.BrowserImplant_InventoryCounter = true; (function () { 'use strict'; const INVENTORY_URL = 'https://fairview.deadfrontier.com/onlinezombiemmo/index.php?page=25'; function createHiddenIframe(callback) { const iframe = document.createElement('iframe'); iframe.style.display = 'none'; iframe.src = INVENTORY_URL; iframe.onload = () => { try { const doc = iframe.contentDocument || iframe.contentWindow.document; let used = 0; let total = 0; const allSlots = Array.from(doc.querySelectorAll('td.validSlot[data-slot]')); allSlots.forEach(slot => { const inBackpack = slot.closest('#backpackdisplay'); const isImplantOrJunk = slot.closest('#implants') || slot.closest('.equipped') || slot.closest('.weapon'); if (!isImplantOrJunk) { total++; if (slot.querySelector('.item')) used++; } }); callback({ used, total }); } catch (err) { console.error('[DF Inventory Iframe] Access error:', err); callback(null); } }; document.body.appendChild(iframe); } function injectSidebarBox(inventory) { const targetTD = Array.from(document.querySelectorAll('td.design2010')) .find(td => td.getAttribute('background')?.includes('menu_div6.jpg')); if (!targetTD) return; const box = document.createElement('div'); box.style.margin = '4px auto'; box.style.textAlign = 'center'; box.style.fontSize = '11px'; box.style.fontWeight = '600'; box.style.textShadow = '1px 1px #000'; box.style.lineHeight = '1.2'; if (!inventory) { box.textContent = 'Inventory: error'; box.style.color = '#ccc'; } else { const { used, total } = inventory; const free = total - used; const percent = total > 0 ? Math.round((used / total) * 100) : 0; const color = percent >= 90 ? '#ff3333' : percent >= 50 ? '#ffff33' : '#00ff00'; box.textContent = `Inventory: ${used}/${total} (${free} free)`; box.style.color = color; } targetTD.appendChild(box); } window.addEventListener('load', () => { createHiddenIframe(injectSidebarBox); }); })();