您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Browser Implants injected below QuickBuy; full hover popups; collapsible/expandable panel; state save; scroll and zoom stable; polished style matching QuickBuy/AutoBank
当前为
// ==UserScript== // @name Browser Implants + True CSS Hover v5.32 // @namespace Zega // @version 5.32 // @description Browser Implants injected below QuickBuy; full hover popups; collapsible/expandable panel; state save; scroll and zoom stable; polished style matching QuickBuy/AutoBank // @match https://fairview.deadfrontier.com/onlinezombiemmo/index.php* // @grant none // @run-at document-start // ==/UserScript== (function() { 'use strict'; let _autoBankQueued = false, _autoBankDone = false; let _qbQueued = false, _qbDone = false; function _onAutoBank() { if (_autoBankDone) return; _autoBankQueued = true; if (typeof fillAutoBankSlot === 'function') fillAutoBankSlot(); } function _onQuickBuy() { if (_qbDone) return; _qbQueued = true; if (typeof fillQuickBuySlot === 'function') fillQuickBuySlot(); } Object.defineProperty(window, 'BrowserImplant_AutoBank', { configurable: true, enumerable: true, set(val) { if (val) _onAutoBank(); Object.defineProperty(window, 'BrowserImplant_AutoBank', { value: val, writable: true, configurable: true, enumerable: true }); }, get() { return false; } }); Object.defineProperty(window, 'BrowserImplant_QuickBuy', { configurable: true, enumerable: true, set(val) { if (val) _onQuickBuy(); Object.defineProperty(window, 'BrowserImplant_QuickBuy', { value: val, writable: true, configurable: true, enumerable: true }); }, get() { return false; } }); window.addEventListener('load', initWhenReady); function initWhenReady() { const tryAttach = setInterval(() => { const rightTd = document.querySelector('td.design2010[style*="right_margin.jpg"]'); const quickBuyFieldset = rightTd?.querySelector('fieldset'); if (rightTd && quickBuyFieldset) { clearInterval(tryAttach); attachImplants(rightTd); } }, 100); } function attachImplants(rightTd) { rightTd.style.position = 'relative'; const panel = document.createElement('div'); panel.id = 'browser-implant-panel'; panel.innerHTML = ` <div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;"> <strong style="color:#ffd700;">Browser Implants</strong> <button id="collapse-browser-implant" style="background:none;border:none;color:#ffd700;font-size:16px;cursor:pointer;">[–]</button> </div> <div class="implant-grid" id="implant-grid-container"> ${Array(8).fill(0).map((_,i)=>` <div class="slot" data-slot="${i}"> <img class="implant-icon" style="display:none;" /> <div class="hover-popup"> <img class="hover-img" src="" /> <div class="hover-name"></div> <div class="hover-stat"></div> </div> </div> `).join('')} </div> `; Object.assign(panel.style, { position: 'absolute', top: '660px', left: '10px', width: '420px', background: 'rgba(0,0,0,0.35)', padding: '8px 12px', border: '1px solid #666', borderRadius: '8px', boxShadow: '0 4px 12px rgba(0,0,0,0.6)', textAlign: 'center', zIndex: '10000' }); rightTd.appendChild(panel); const slots = panel.querySelectorAll('.slot'); const grid = document.getElementById('implant-grid-container'); const collapseBtn = document.getElementById('collapse-browser-implant'); // Restore collapse state if (localStorage.getItem('browserImplantCollapsed') === 'true') { grid.style.display = 'none'; collapseBtn.textContent = '[+]'; } collapseBtn.addEventListener('click', () => { if (grid.style.display === 'none') { grid.style.display = 'grid'; collapseBtn.textContent = '[–]'; localStorage.setItem('browserImplantCollapsed', 'false'); } else { grid.style.display = 'none'; collapseBtn.textContent = '[+]'; localStorage.setItem('browserImplantCollapsed', 'true'); } }); let next = 0; function fill(slot, url, name, stat) { const img = slot.querySelector('img.implant-icon'); const pop = slot.querySelector('.hover-popup'); img.src = url; img.style.display = 'block'; img.style.width = '100%'; img.style.height = '100%'; img.style.objectFit = 'contain'; pop.querySelector('.hover-img').src = url; pop.querySelector('.hover-name').textContent = name; pop.querySelector('.hover-stat').textContent = stat; } fill(slots[next++], 'https://files.catbox.moe/y2n5ij.png', 'Browser Implant', 'Gain Efficiency In Outpost +20%'); if (window.BrowserImplant_MarketHover) { fill(slots[next++], 'https://files.catbox.moe/kqee23.png', 'Market Hover Implant', 'Quick Access to Trade Values +15%'); } window.fillAutoBankSlot = () => { if (_autoBankDone || next >= slots.length) return; fill(slots[next++], 'https://files.catbox.moe/ry7yd2.png', 'Auto Bank Implant', 'Instant bank link—deposits & withdrawals +60% speed!'); _autoBankDone = true; }; if (_autoBankQueued) window.fillAutoBankSlot(); window.fillQuickBuySlot = () => { if (_qbDone || next >= slots.length) return; fill(slots[next++], 'https://files.catbox.moe/urko7b.png', 'QuickBuy Implant', 'Quickly buy your survival items. 70% Barter Speed!'); _qbDone = true; }; if (_qbQueued) window.fillQuickBuySlot(); } const css = ` #browser-implant-panel .implant-grid { display: grid; grid-template-columns: repeat(4, 36px); grid-template-rows: repeat(2, 36px); gap: 4px; justify-content: center; } #browser-implant-panel .slot { width: 36px; height: 36px; background: rgba(255,255,255,0.05); border: 1px solid #888; border-radius: 4px; position: relative; } #browser-implant-panel .slot img.implant-icon { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: contain; cursor: default; display: none; } #browser-implant-panel .hover-popup { display: none; position: absolute; bottom: -18px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.85); padding: 6px; border: 1px solid #555; border-radius: 6px; flex-direction: column; align-items: center; z-index: 1000; opacity: 0; transition: opacity .2s; width: 130px; } #browser-implant-panel .hover-popup .hover-img { width: 50px; height: 50px; margin-bottom: 4px; object-fit: contain; } #browser-implant-panel .hover-name, #browser-implant-panel .hover-stat { color: gold; font-size: 12px; margin: 1px 0; line-height: 1.1; text-align: center; } #browser-implant-panel .slot:hover .hover-popup { display: flex; opacity: 1; } #browser-implant-panel .slot:not(:has(img.implant-icon[style*="display: block"])) .hover-popup { display: none!important; opacity: 0!important; } `; const style = document.createElement('style'); style.textContent = css; document.head.appendChild(style); })();