Icon

Krofne's Kreations

I make things and never really show them off a whole lot

For more things visit:

https://github.com/Krofne

Things I've made

VRCPro (EARLY DEVELOPMENT)

Very alpha as I'm still working on adding more things. But this is just a QoL VRChat website Tampermonkey script.

×
// ==UserScript== // @name Show's the groups creator and user info. // @namespace http://tampermonkey.net/ // @version 1.7 // @description Shows group creator and user info on VRChat // @author Jake Krofne & VT // @match https://vrchat.com/home/group/* // @match https://vrchat.com/home/user/* // @grant none // ==/UserScript== (function () { 'use strict'; // Fetch data from the API and handle response function fetchData(url, callback) { fetch(url) .then(response => { if (!response.ok) throw new Error('Network response was not ok'); return response.json(); }) .then(callback) .catch(() => {}); } // Function to inject the owner ID link function injectOwnerId(groupId) { fetchData(`https://vrchat.com/api/1/groups/${groupId}?includeRoles=true&purpose=group`, (data) => { const ownerId = data.ownerId; if (ownerId) { const ownerLink = document.createElement('a'); ownerLink.href = `https://vrchat.com/home/user/${ownerId}`; ownerLink.textContent = `Owner: ${ownerId}`; ownerLink.style.cssText = 'color: white; margin-left: 10px;'; const targetDiv = document.querySelector('.css-1no6rdg.e1kortvj4'); if (targetDiv && !document.querySelector('.ownerId-link')) { ownerLink.classList.add('ownerId-link'); targetDiv.appendChild(ownerLink); } } }); } // Function to inject the join date into the user profile function injectJoinDate(userId) { fetchData(`https://vrchat.com/api/1/users/${userId}`, (data) => { const joinDate = data.date_joined; if (joinDate && !document.querySelector('.join-date')) { const joinDateElement = document.createElement('p'); joinDateElement.textContent = `Joined on: ${joinDate}`; joinDateElement.className = 'join-date'; joinDateElement.style.cssText = 'color: white; margin: 5px 0 0 2px; font-size: 16px;'; const targetDiv = document.querySelector('.tw-flex.tw-flex-col.md\\:tw-flex-row.tw-py-9'); if (targetDiv) targetDiv.appendChild(joinDateElement); } }); } // MutationObserver to detect changes in the DOM const observer = new MutationObserver(() => { const currentPath = window.location.pathname; if (currentPath.includes('/group/')) { injectOwnerId(currentPath.split('/').pop()); } else if (currentPath.includes('/user/')) { injectJoinDate(currentPath.split('/').pop()); } }); // Start observing the document observer.observe(document.body, { childList: true, subtree: true }); })(); // If nothing shows refresh the page
Roblox "Teamer" checker

Checks if a user has another user added on Roblox.

×
import tkinter as tk from tkinter import messagebox import requests def get_user_id(username): url = f"https://users.roblox.com/v1/usernames/users" payload = {"usernames": [username], "excludeBannedUsers": False} response = requests.post(url, json=payload) if response.status_code == 200: data = response.json() if data["data"]: return data["data"][0]["id"] else: return None else: return None def check_friendship(user1, user2): user1_id = get_user_id(user1) user2_id = get_user_id(user2) if not user1_id or not user2_id: return False url = f"https://friends.roblox.com/v1/users/{user1_id}/friends" response = requests.get(url) if response.status_code == 200: friends = response.json()["data"] for friend in friends: if friend["id"] == user2_id: return True return False def check_friend(): user1 = entry_user1.get() user2 = entry_user2.get() if check_friendship(user1, user2): messagebox.showinfo("Result", f"{user1} has {user2} added as a friend, They're Teaming.") else: messagebox.showinfo("Result", f"{user1} does not have {user2} added as a friend.") root = tk.Tk() root.title("MM2 Teamer Check") root.geometry("400x250") root.config(bg="#D9EAF7") title_label = tk.Label(root, text="MM2 Teamer Check", font=("Helvetica", 18, "bold"), bg="#D9EAF7", fg="#333") title_label.pack(pady=10) frame_user1 = tk.Frame(root, bg="#D9EAF7") frame_user1.pack(pady=10) tk.Label(frame_user1, text="Suspected Teamer:", bg="#D9EAF7", fg="#333", font=("Arial", 12)).pack(side=tk.LEFT) entry_user1 = tk.Entry(frame_user1, width=20, font=("Arial", 12)) entry_user1.pack(side=tk.LEFT, padx=10) frame_user2 = tk.Frame(root, bg="#D9EAF7") frame_user2.pack(pady=10) tk.Label(frame_user2, text="Possible Teammate:", bg="#D9EAF7", fg="#333", font=("Arial", 12)).pack(side=tk.LEFT) entry_user2 = tk.Entry(frame_user2, width=20, font=("Arial", 12)) entry_user2.pack(side=tk.LEFT, padx=10) check_button = tk.Button(root, text="Check", command=check_friend, font=("Arial", 12, "bold"), bg="#4CAF50", fg="white", width=15) check_button.pack(pady=20) root.mainloop()
Redeem on Epic for Twitter

Select the context, Right click and a button appears click it and it automaticly redeems the context on epic games.

×
// ==UserScript== // @name Redeem on Epic for Twitter // @namespace http://tampermonkey.net/ // @version 1.0 // @description select your context and right click to see the redeem button. Saves time! // @author Jake Krofne // @match https://x.com/* // @grant none // ==/UserScript== (function() { 'use strict'; // Function to create context menu item function createContextMenu(event) { // Check if some text is selected const selectedText = window.getSelection().toString().trim(); if (selectedText) { // Remove existing custom context menu if any const existingMenu = document.getElementById('redeem-on-epic'); if (existingMenu) existingMenu.remove(); // Create new menu item const menuItem = document.createElement('div'); menuItem.id = 'redeem-on-epic'; menuItem.style.position = 'fixed'; menuItem.style.top = `${event.clientY}px`; menuItem.style.left = `${event.clientX}px`; menuItem.style.backgroundColor = '#f1f1f1'; menuItem.style.border = '1px solid #ccc'; menuItem.style.padding = '8px'; menuItem.style.zIndex = '10000'; menuItem.style.cursor = 'pointer'; menuItem.innerText = 'Redeem on Epic'; // Add click listener to menu item menuItem.addEventListener('click', function() { const epicRedeemUrl = 'https://www.epicgames.com/store/en-US/redeem'; const code = encodeURIComponent(selectedText); window.open(`${epicRedeemUrl}?code=${code}`, '_blank'); menuItem.remove(); // Remove the menu item after click }); // Append the menu item to the body document.body.appendChild(menuItem); // Remove the menu when clicking anywhere else document.addEventListener('click', function() { if (menuItem) menuItem.remove(); }, { once: true }); } } // Add event listener for right-click document.addEventListener('contextmenu', function(event) { // Prevent the default context menu from showing event.preventDefault(); createContextMenu(event); }); })();