Enables an Instakill feature for Kour.io. Toggle menu with Right-Shift.
// ==UserScript==
// @name Kour.io Instakill 2025
// @match *://kour.io/*
// @version 1.0
// @icon https://upload.wikimedia.org/wikipedia/commons/f/fd/The_death.svg
// @author Partypixelparty7
// @description Enables an Instakill feature for Kour.io. Toggle menu with Right-Shift.
// @run-at document-start
// @grant unsafeWindow
// @grant GM_info
// @namespace https://greasyfork.org/users/1476481
// ==/UserScript==
(function () {
"use strict";
// Global configuration for the script's features
const featureSettings = { config: { instakillActive: false } };
unsafeWindow.kourFeatureSettings = featureSettings;
const PacketSignatures = {
playerUpdate: "f3 02 fd 02 f4 03 c8"
};
function arrayBufferToHexString(buffer) {
return Array.from(new Uint8Array(buffer)).map(b => b.toString(16).padStart(2, "0")).join(" ");
}
(function setupWebSocketHook() {
if (!unsafeWindow.WebSocket) {
console.warn("[KourInstakill] WebSocket API not found. Hook not initialized.");
return;
}
const OriginalWebSocket = unsafeWindow.WebSocket;
unsafeWindow.WebSocket = function (...args) {
const wsInstance = new OriginalWebSocket(...args);
const originalSend = wsInstance.send;
wsInstance.send = function (data) {
if (data instanceof ArrayBuffer &&
arrayBufferToHexString(data).startsWith(PacketSignatures.playerUpdate) &&
featureSettings.config.instakillActive) {
for (let i = 0; i < 41; i++) {
originalSend.call(wsInstance, data);
}
return;
}
return originalSend.call(wsInstance, data);
};
return wsInstance;
};
unsafeWindow.WebSocket.prototype = OriginalWebSocket.prototype;
console.log("[KourInstakill] WebSocket hook initialized for Instakill.");
})();
// --- Instakill Menu Creation
function createInstakillMenu() {
const menu = document.createElement("div");
menu.id = "instakillControlMenu";
menu.style.position = "fixed";
menu.style.top = "10px";
menu.style.right = "10px";
menu.style.backgroundColor = "rgba(35, 39, 42, 0.95)"; // Dark Discord-like bg
menu.style.border = "1px solid #2c2f33"; // Slightly lighter border
menu.style.borderRadius = "8px"; // More rounded
menu.style.padding = "10px"; // Reduced padding
menu.style.zIndex = "25000";
menu.style.color = "#dcddde"; // Light gray text (Discord-like)
menu.style.fontFamily = "'Whitney', 'Helvetica Neue', Helvetica, Arial, sans-serif"; // Discord font stack
menu.style.fontSize = "13px"; // Smaller base font size
menu.style.display = "none";
menu.style.minWidth = "200px"; // Reduced min-width
menu.style.boxShadow = "0 4px 12px rgba(0,0,0,0.4)"; // Softer, more prominent shadow
menu.style.transition = "opacity 0.2s ease-in-out, transform 0.2s ease-in-out";
const title = document.createElement("div");
title.textContent = "Instakill";
title.style.fontSize = "15px";
title.style.fontWeight = "600"; // Semi-bold
title.style.marginBottom = "8px";
title.style.paddingBottom = "4px";
title.style.borderBottom = "1px solid #4f545c"; // Discord-like separator
title.style.textAlign = "center";
title.style.color = "#7289da"; // Discord blurple
menu.appendChild(title);
const instakillButton = document.createElement("button");
instakillButton.id = "instakillToggleButton";
instakillButton.textContent = "Instakill: OFF";
instakillButton.style.backgroundColor = "#4f545c"; // Darker gray for OFF (Discord-like)
instakillButton.style.color = "white";
instakillButton.style.border = "none";
instakillButton.style.padding = "7px 10px"; // Reduced padding
instakillButton.style.cursor = "pointer";
instakillButton.style.width = "100%";
instakillButton.style.marginBottom = "10px";
instakillButton.style.fontSize = "13px";
instakillButton.style.borderRadius = "5px";
instakillButton.style.transition = "background-color 0.15s ease, transform 0.1s ease";
instakillButton.style.fontWeight = "500";
instakillButton.onmouseover = function() {
this.style.transform = "scale(1.02)";
if (!featureSettings.config.instakillActive) this.style.backgroundColor = "#5c6269";
else this.style.backgroundColor = "#3ca374"; // Darker active green
};
instakillButton.onmouseout = function() {
this.style.transform = "scale(1)";
if (!featureSettings.config.instakillActive) this.style.backgroundColor = "#4f545c";
else this.style.backgroundColor = "#43b581"; // Discord Green
};
instakillButton.onmousedown = function() { this.style.transform = "scale(0.98)"; };
instakillButton.onmouseup = function() { this.style.transform = "scale(1.02)"; };
instakillButton.onclick = function () {
featureSettings.config.instakillActive = !featureSettings.config.instakillActive;
if (featureSettings.config.instakillActive) {
this.textContent = "Instakill: ON";
this.style.backgroundColor = "#43b581"; // Discord Green
} else {
this.textContent = "Instakill: OFF";
this.style.backgroundColor = "#4f545c";
}
};
menu.appendChild(instakillButton);
// Disclaimer Block (Revised Text)
const disclaimerContainer = document.createElement("div");
disclaimerContainer.style.fontSize = "10px";
disclaimerContainer.style.color = "#b9bbbe"; // Lighter gray (Discord)
disclaimerContainer.style.marginBottom = "8px";
disclaimerContainer.style.padding = "6px";
disclaimerContainer.style.backgroundColor = "rgba(0,0,0,0.15)";
disclaimerContainer.style.borderRadius = "4px";
disclaimerContainer.style.border = "1px solid #2c2f33";
const disclaimerP1 = document.createElement("p");
disclaimerP1.innerHTML = "📦 <strong>GitHub Homepage:</strong>You can visit my GitHub homepage here";
disclaimerP1.style.margin = "0 0 3px 0";
const disclaimerP3 = document.createElement("p"); // NEUER ABSATZ
disclaimerP3.textContent = "Thanks for using this script!";
disclaimerP3.style.margin = "0";
disclaimerContainer.appendChild(disclaimerP1);
// disclaimerContainer.appendChild(disclaimerP2); // ENTFERNT, da disclaimerP2 nicht definiert war
disclaimerContainer.appendChild(disclaimerP3);
menu.appendChild(disclaimerContainer);
const cheatLink = document.createElement("a");
cheatLink.href = "https://partypixelparty7.github.io/All-my-Scripts/#";
cheatLink.textContent = "GitHub Homepage"; // More generic
cheatLink.target = "_blank";
cheatLink.style.color = "#7289da"; // Discord blurple
cheatLink.style.textDecoration = "none";
cheatLink.style.fontSize = "11px";
cheatLink.style.display = "block";
cheatLink.style.textAlign = "center";
cheatLink.style.padding = "4px 0";
cheatLink.style.borderRadius = "3px";
cheatLink.style.transition = "background-color 0.15s ease, color 0.15s ease";
cheatLink.onmouseover = function() {
this.style.backgroundColor = "rgba(114, 137, 218, 0.2)";
this.style.color = "#ffffff";
};
cheatLink.onmouseout = function() {
this.style.backgroundColor = "transparent";
this.style.color = "#7289da";
};
menu.appendChild(cheatLink);
const authorText = document.createElement("div");
try {
authorText.textContent = `v${GM_info.script.version} by Partypixelparty7`;
} catch (e) {
authorText.textContent = `by Partypixelparty7`; // Fallback if GM_info is not available
}
authorText.style.fontSize = "9px";
authorText.style.color = "#72767d"; // Darker gray (Discord)
authorText.style.marginTop = "6px";
authorText.style.textAlign = "center";
authorText.style.borderTop = "1px solid #4f545c";
authorText.style.paddingTop = "4px";
menu.appendChild(authorText);
document.body.appendChild(menu);
}
// Menu Toggle Function (Right-Shift)
document.addEventListener("keydown", function (e) {
if (e.target.matches("input, textarea, [contenteditable='true'], [contenteditable]")) {
return;
}
if (e.code === "ShiftRight") {
e.preventDefault();
const menu = document.getElementById("instakillControlMenu");
if (menu) {
menu.style.display = menu.style.display === "none" ? "block" : "none";
}
}
});
if (document.readyState === 'loading') {
window.addEventListener('DOMContentLoaded', createInstakillMenu);
} else {
createInstakillMenu();
}
console.log(`[KourInstakill] Script v${GM_info && GM_info.script ? GM_info.script.version : 'N/A'} loaded. Press 'Right-Shift' to toggle menu.`);
})();