Allow double clicking to store in collection book fast
// ==UserScript==
// @name Collection book from inventory
// @namespace http://tampermonkey.net/
// @version 2025-05-05
// @description Allow double clicking to store in collection book fast
// @author Disk217
// @match *://fairview.deadfrontier.com/onlinezombiemmo/index.php?page=25
// @match *://fairview.deadfrontier.com/onlinezombiemmo/index.php?page=24
// @icon https://www.google.com/s2/favicons?sz=64&domain=deadfrontier.com
// @license MIT
// @grant none
// @noframes
// ==/UserScript==
(function() {
'use strict';
function waitForElement(id, callback) {
const interval = setInterval(function() {
const element = document.getElementById(id);
if (element) {
clearInterval(interval);
callback(element);
}
}, 100); // Check every 100ms
}
function clickElementThenRemoveMenu(element, customMenu) {
const localElement = element
const localCustomMenu = customMenu
return function() {
localElement.click()
document.body.removeChild(localCustomMenu); //remove the menu after click
}
}
function isElementNode(node) {
return node && node.nodeType === Node.ELEMENT_NODE;
}
const collectionBookElem = document.createElement("div")
collectionBookElem.setAttribute("id", "collectionbook");
const collectionBookCounterElem = document.createElement("div")
collectionBookCounterElem.setAttribute("id", "collectionCounter")
collectionBookElem.style.display = 'none'
collectionBookCounterElem.style.display = 'none'
document.body.appendChild(collectionBookElem)
document.body.appendChild(collectionBookCounterElem)
initiateCollectionBook()
waitForElement("cbSwitcher", function(elem) { elem.style.display = 'none'; elem.childNodes[7].click() } )
document.getElementById("inventoryholder").addEventListener('dblclick', function(event) {
console.log("Double clicked " + event.target.getAttribute("id"))
dragStart(event)
const realElementFromPoint = document.elementFromPoint
try {
document.elementFromPoint = function(x,y) {return collectionBookElem}
dragDropAction(event)
} finally {
document.elementFromPoint = realElementFromPoint
}
});
document.getElementById("inventoryholder").addEventListener('contextmenu', function(event) {
console.log("right clicked " + event.target.getAttribute("id"))
event.preventDefault(); // Prevent the default context menu
// Create your custom menu
const customMenu = document.createElement('div');
customMenu.id = 'custom-context-menu';
customMenu.style.position = 'fixed';
customMenu.style.left = event.clientX + 'px';
customMenu.style.top = event.clientY + 'px';
customMenu.style.backgroundColor = 'white';
customMenu.style.border = '1px solid black';
customMenu.style.padding = '5px';
customMenu.style.height = "auto"
customMenu.style.width = "auto"
for(var child=collectionBookElem.firstChild; child!==null; child=child.nextSibling) {
if(isElementNode(child) && child.getAttribute("data-quantity") == "1") {
const menuItem1 = document.createElement('div');
menuItem1.textContent = child.getAttribute("data-type")
console.log(menuItem1.textContent)
menuItem1.style.cursor = 'pointer';
menuItem1.style.setProperty("font-size", "15px");
menuItem1.style.setProperty("text-align", "left");
menuItem1.style.setProperty("background-color", "black");
menuItem1.addEventListener('click', clickElementThenRemoveMenu(child.getElementsByTagName("button")[0], customMenu))
customMenu.appendChild(menuItem1);
}
}
// Add the custom menu to the body
document.body.appendChild(customMenu);
// Close the menu when clicking elsewhere
document.addEventListener('click', function closeMenu(event) {
if (!customMenu.contains(event.target)) {
document.body.removeChild(customMenu);
document.removeEventListener('click', closeMenu); // Remove the listener after closing
}
});
});
})();