您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Best Web Editing Injector for tampermonkey Join dc For Updates
// ==UserScript== // @name LuaFork Injector // @namespace http://tampermonkey.net/ // @version 1.0 // @description Best Web Editing Injector for tampermonkey Join dc For Updates // @author absayno // @license MIT // @match *://*/* // @grant GM_setValue // @grant GM_getValue // @grant GM_deleteValue // @grant GM_listValues // ==/UserScript== (function() { 'use strict'; // stored scripts do not touch buddy let scripts = GM_getValue('scripts', {}); if (Object.keys(scripts).length === 0) { scripts = { 'Default Script': { name: 'Default Script', code: '// Sample JavaScript\nconsole.log("Hello from Lua Studios!");\n', type: 'javascript' } }; GM_setValue('scripts', scripts); } // draggable const menu = document.createElement('div'); menu.style.position = 'fixed'; menu.style.top = '10px'; menu.style.right = '10px'; menu.style.backgroundColor = '#1a1a1a'; menu.style.color = '#fff'; menu.style.padding = '10px'; menu.style.border = '2px solid #ff4500'; menu.style.borderRadius = '5px'; menu.style.zIndex = '9999'; menu.style.fontFamily = 'Arial, sans-serif'; menu.style.boxShadow = '0 0 10px rgba(0,0,0,0.5)'; menu.style.maxWidth = '300px'; menu.style.cursor = 'move'; // Indicate dragability menu.style.userSelect = 'none'; // Prevent text selection during drag // Menu HTML structure Dont fiddle with this menu.innerHTML = ` <h3 style="margin: 0 0 10px; font-size: 16px;">Luafork Injector</h3> <h3 style="margin: 0 0 5px; font-size: 11px;">Made By absayno</h3> <select id="scriptSelect" style="width: 100%; margin-bottom: 10px; padding: 5px;"> ${Object.keys(scripts).map(name => `<option value="${name}">${name}</option>`).join('')} </select> <textarea id="codeInput" rows="5" style="width: 100%; background: #333; color: #fff; border: 1px solid #ff4500; margin-bottom: 10px;"></textarea> <div style="margin-bottom: 10px;"> <label>Type: </label> <select id="scriptType" style="padding: 5px;"> <option value="javascript">JavaScript</option> <option value="html">HTML</option> </select> </div> <div style="display: flex; flex-wrap: wrap; gap: 5px;"> <button id="runBtn" style="padding: 5px; background: #ff4500; border: none; color: #fff; cursor: pointer;">Run</button> <button id="saveBtn" style="padding: 5px; background: #1e90ff; border: none; color: #fff; cursor: pointer;">Save</button> <button id="newBtn" style="padding: 5px; background: #32cd32; border: none; color: #fff; cursor: pointer;">New</button> <button id="renameBtn" style="padding: 5px; background: #ffa500; border: none; color: #fff; cursor: pointer;">Rename</button> <button id="deleteBtn" style="padding: 5px; background: #dc143c; border: none; color: #fff; cursor: pointer;">Delete</button> <button id="deleteBtn" style="padding: 5px; background: #dc247c; border: none; color: #fff; cursor: pointer;">.gg/cYy7KaRxwF</button> </div> `; document.body.appendChild(menu); // DOM elements do not touch this eather const scriptSelect = document.getElementById('scriptSelect'); const codeInput = document.getElementById('codeInput'); const scriptType = document.getElementById('scriptType'); const runBtn = document.getElementById('runBtn'); const saveBtn = document.getElementById('saveBtn'); const newBtn = document.getElementById('newBtn'); const renameBtn = document.getElementById('renameBtn'); const deleteBtn = document.getElementById('deleteBtn'); // drag function new let isDragging = false; let currentX = 0; let currentY = 0; let initialX, initialY; menu.addEventListener('mousedown', (e) => { // Only start dragging if the target is not an input or button if (e.target.tagName !== 'BUTTON' && e.target.tagName !== 'TEXTAREA' && e.target.tagName !== 'SELECT') { initialX = e.clientX - currentX; initialY = e.clientY - currentY; isDragging = true; menu.style.cursor = 'grabbing'; // Change cursor during drag } }); document.addEventListener('mousemove', (e) => { if (isDragging) { e.preventDefault(); currentX = e.clientX - initialX; currentY = e.clientY - initialY; // const menuRect = menu.getBoundingClientRect(); const maxX = window.innerWidth - menuRect.width; const maxY = window.innerHeight - menuRect.height; currentX = Math.max(0, Math.min(currentX, maxX)); currentY = Math.max(0, Math.min(currentY, maxY)); menu.style.left = currentX + 'px'; menu.style.top = currentY + 'px'; } }); document.addEventListener('mouseup', () => { isDragging = false; menu.style.cursor = 'move'; // Reset cursor }); // function loadScript() { const selectedName = scriptSelect.value; codeInput.value = scripts[selectedName].code; scriptType.value = scripts[selectedName].type; } loadScript(); scriptSelect.addEventListener('change', loadScript); // BtnRun runBtn.addEventListener('click', () => { const code = codeInput.value; const type = scriptType.value; if (type === 'javascript') { try { eval(code); // JavaXecute console.log('Script executed successfully'); } catch (e) { alert('Error executing JavaScript: ' + e.message); } } else if (type === 'html') { const container = document.createElement('div'); container.innerHTML = code; document.body.appendChild(container); console.log('HTML injected successfully'); } }); // SaveIt saveBtn.addEventListener('click', () => { const selectedName = scriptSelect.value; scripts[selectedName] = { name: selectedName, code: codeInput.value, type: scriptType.value }; GM_setValue('scripts', scripts); alert('Script saved!'); }); // Create newBtn.addEventListener('click', () => { const newName = prompt('Enter new script name:'); if (newName && !scripts[newName]) { scripts[newName] = { name: newName, code: '// New script\nconsole.log("New script ready!");', type: 'javascript' }; GM_setValue('scripts', scripts); const option = document.createElement('option'); option.value = newName; option.textContent = newName; scriptSelect.appendChild(option); scriptSelect.value = newName; loadScript(); alert('New script created!'); } else if (scripts[newName]) { alert('Script name already exists!'); } }); // RenameIt renameBtn.addEventListener('click', () => { const oldName = scriptSelect.value; const newName = prompt('Enter new name for script:', oldName); if (newName && newName !== oldName && !scripts[newName]) { scripts[newName] = scripts[oldName]; scripts[newName].name = newName; delete scripts[oldName]; GM_setValue('scripts', scripts); scriptSelect.innerHTML = Object.keys(scripts).map(name => `<option value="${name}">${name}</option>`).join(''); scriptSelect.value = newName; loadScript(); alert('Script renamed!'); } else if (scripts[newName]) { alert('Name already exists!'); } }); // DeleteIt deleteBtn.addEventListener('click', () => { const selectedName = scriptSelect.value; if (confirm(`Delete script "${selectedName}"?`)) { delete scripts[selectedName]; GM_setValue('scripts', scripts); scriptSelect.innerHTML = Object.keys(scripts).map(name => `<option value="${name}">${name}</option>`).join(''); if (Object.keys(scripts).length > 0) { scriptSelect.value = Object.keys(scripts)[0]; loadScript(); } else { scripts['Default Script'] = { name: 'Default Script', code: '// Sample JavaScript\nconsole.log("Hello from Rebel Injector!");\n', type: 'javascript' }; GM_setValue('scripts', scripts); scriptSelect.innerHTML = '<option value="Default Script">Default Script</option>'; loadScript(); } alert('Script deleted!'); } }); })();