// ==UserScript==
// @name Macro Mod V-1.0
// @namespace -
// @version 1.0
// @description Macro Place , Macro Hat , And More!!!!
// @author 2k09__
// @match https://sploop.io/
// @grant none
// @license MIT
// ==/UserScript==
let weaponKey;
const HATS = {
BUSH_HAT: 0,
BERSERKER: 1,
JUNGLE_GEAR: 2,
CRYSTAL_GEAR: 3,
SPIKE_GEAR: 4,
IMMUNITY_GEAR: 5,
BOOST_HAT: 6,
APPLE_HAT: 7,
SCUBA_GEAR: 8,
HOOD: 9,
DEMOLIST: 10
};
const KEYBINDS = {
[HATS.BUSH_HAT]: "",
[HATS.BERSERKER]: "KeyB",
[HATS.JUNGLE_GEAR]: "",
[HATS.CRYSTAL_GEAR]: "KeyC",
[HATS.SPIKE_GEAR]: "KeyJ",
[HATS.IMMUNITY_GEAR]: "Semicolon",
[HATS.BOOST_HAT]: "ShiftLeft",
[HATS.APPLE_HAT]: "",
[HATS.SCUBA_GEAR]: "KeyK",
[HATS.HOOD]: "KeyO",
[HATS.DEMOLIST]: "KeyZ"
};
// HAT EQUIP LOGIC GOES BELOW
const log = console.log;
const storage = {
get(key) {
const value = localStorage.getItem(key);
return value === null ? null : JSON.parse(value);
},
set(key, value) {
localStorage.setItem(key, JSON.stringify(value));
}
};
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function isInput() {
return document.activeElement.tagName === "INPUT";
}
function inGame() {
const homepage = document.querySelector("#homepage");
return homepage && homepage.style.display !== "flex";
}
function canEquip() {
return !isInput() && inGame();
}
function createKeyboardEvent(type, code) {
return new Proxy(new KeyboardEvent(type), {
get(target, prop) {
if (prop === "isTrusted") return true;
if (prop === "target") return document.body;
if (prop === "code") return code;
return target[prop];
}
})
}
function keypress(code) {
const keydown = createKeyboardEvent("keydown", code);
const keyup = createKeyboardEvent("keyup", code);
window.onkeydown(keydown);
window.onkeyup(keyup);
}
function mouseup(target) {
target.onmouseup(new Proxy(new MouseEvent("mouseup"), {
get(target, prop) {
if (prop === "isTrusted") return true;
if (prop === "target") return target;
return target[prop];
}
}));
}
let equipToggle = false;
async function equipHat(index) {
if (!canEquip() || equipToggle) return;
equipToggle = true;
const hatActionButton = document.querySelectorAll(".hat_action_button")[index];
if (!hatActionButton) throw new Error("Failed to find hat with index: " + index);
const keybinds = storage.get("keybinds");
const OpenShopKey = keybinds && keybinds[18] || "KeyN";
keypress(OpenShopKey);
await sleep(150);
if (hatActionButton.textContent === "BUY") {
mouseup(hatActionButton);
}
mouseup(hatActionButton);
await sleep(150);
keypress(OpenShopKey);
await sleep(1500);
equipToggle = false;
}
window.addEventListener("keydown", function(event) {
if (event.repeat) return;
for (const key in KEYBINDS) {
if (event.code === KEYBINDS[key]) {
equipHat(key);
break;
}
}
})
const grids = document.querySelector("#grid-toggle");
setInterval(() => {
if (grids.checked){grids.click();}
}, 0);
const PLACE = {
SPIKE: 0,
SPIKE_HARD: 1,
WINDMILL: 2,
POWERMILL: 3,
TRAP: 4,
BOOST: 5,
COSY_BED: 6,
PLATFORM: 7,
APPLE: 8,
COOKIE: 9,
WALL: 10,
};
const KEYBINDSPLACE = {
[PLACE.SPIKE]: "KeyV",
[PLACE.SPIKE_HARD]: "KeyV",
[PLACE.WINDMILL]: "KeyN",
[PLACE.POWERMILL]: "KeyN",
[PLACE.TRAP]: "KeyF",
[PLACE.BOOST]: "KeyF",
[PLACE.COSY_BED]: "KeyL",
[PLACE.PLATFORM]: "KeyH",
[PLACE.APPLE]: "KeyQ",
[PLACE.COOKIE]: "KeyQ",
[PLACE.WALL]: "KeyT",
};
//HEAL.PLACE
this.key.press({code: "KeyQ"});
this.key.press({code: "Space"});
this.key.press({key: weaponKey});
//SPIKE.PLACE
this.key.press({code: "KeyV"});
this.key.press({code: "Space"});
this.key.press({key: weaponKey});
//WINDMILL'S.PLACE
this.key.press({code: "KeyN"});
this.key.press({code: "Space"});
this.key.press({key: weaponKey});
//TRAP/BOOST.PLACE'S
this.key.press({code: "KeyF"});
this.key.press({code: "Space"});
this.key.press({key: weaponKey});
//COSYBED/SPAWN.PLACE
this.key.press({code: "KeyL"});
this.key.press({code: "Space"});
this.key.press({key: weaponKey});
//PLATFORM.PLACE
this.key.press({code: "KeyH"});
this.key.press({code: "Space"});
this.key.press({key: weaponKey});
//WALL.PLACE
this.key.press({code: "KeyT"});
this.key.press({code: "Space"});
this.key.press({key: weaponKey});