// ==UserScript== // @name Auto Fill Player Ratings with Custom Ranges and Auto-Click // @namespace http://tampermonkey.net/ // @version 0.5 // @description Automatically fill player rating input boxes with random numbers within specified ranges and click on each input box to validate them. // @author tanguy // @match *://*.ea.com/games/ea-sports-college-football/team-builder/team-create/* // @icon https://i.imgur.com/9nq6Rpp.png // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; function getRandomNumber(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } function updateAllMinMaxInputs(globalMin, globalMax) { const minBoxes = document.querySelectorAll('input.min-range'); const maxBoxes = document.querySelectorAll('input.max-range'); minBoxes.forEach(minBox => minBox.value = globalMin); maxBoxes.forEach(maxBox => maxBox.value = globalMax); } function addGlobalRangeInputs() { const globalContainer = document.createElement('div'); globalContainer.style.display = 'flex'; globalContainer.style.alignItems = 'center'; globalContainer.style.margin = '10px 0'; globalContainer.style.padding = '10px'; globalContainer.style.backgroundColor = '#f8f9fa'; globalContainer.style.border = '1px solid #ddd'; const globalMinBox = document.createElement('input'); globalMinBox.type = 'number'; globalMinBox.placeholder = 'Global Min'; globalMinBox.value = '0'; globalMinBox.style.marginRight = '10px'; globalMinBox.style.width = '100px'; const globalMaxBox = document.createElement('input'); globalMaxBox.type = 'number'; globalMaxBox.placeholder = 'Global Max'; globalMaxBox.value = '99'; globalMaxBox.style.marginRight = '10px'; globalMaxBox.style.width = '100px'; globalContainer.appendChild(globalMinBox); globalContainer.appendChild(globalMaxBox); document.body.insertBefore(globalContainer, document.body.firstChild); globalMinBox.addEventListener('input', function() { const globalMin = parseInt(globalMinBox.value) || 0; const globalMax = parseInt(globalMaxBox.value) || 99; updateAllMinMaxInputs(globalMin, globalMax); }); globalMaxBox.addEventListener('input', function() { const globalMin = parseInt(globalMinBox.value) || 0; const globalMax = parseInt(globalMaxBox.value) || 99; updateAllMinMaxInputs(globalMin, globalMax); }); } function addRangeInputs() { const forms = document.querySelectorAll('form.playerRating-item'); forms.forEach(form => { const ratingDiv = form.querySelector('div.playerRating-item--ranking'); const existingMinBox = form.querySelector('input.min-range'); const existingMaxBox = form.querySelector('input.max-range'); if (!existingMinBox && !existingMaxBox) { const rangeContainer = document.createElement('div'); rangeContainer.style.display = 'flex'; rangeContainer.style.alignItems = 'center'; rangeContainer.style.marginBottom = '5px'; const minBox = document.createElement('input'); minBox.type = 'number'; minBox.placeholder = 'Min'; minBox.className = 'input input--sm min-range'; minBox.value = '0'; minBox.style.marginRight = '5px'; minBox.style.width = '80px'; const maxBox = document.createElement('input'); maxBox.type = 'number'; maxBox.placeholder = 'Max'; maxBox.className = 'input input--sm max-range'; maxBox.value = '99'; maxBox.style.marginRight = '5px'; maxBox.style.width = '80px'; rangeContainer.appendChild(minBox); rangeContainer.appendChild(maxBox); ratingDiv.parentNode.insertBefore(rangeContainer, ratingDiv); } }); } function addHeightWeightInputs() { const container = document.createElement('div'); container.style.display = 'flex'; container.style.alignItems = 'center'; container.style.margin = '10px 0'; container.style.padding = '10px'; container.style.backgroundColor = '#f8f9fa'; container.style.border = '1px solid #ddd'; const heightMinBox = document.createElement('input'); heightMinBox.type = 'number'; heightMinBox.placeholder = 'Height Min (inches)'; heightMinBox.value = '60'; heightMinBox.style.marginRight = '10px'; heightMinBox.style.width = '150px'; const heightMaxBox = document.createElement('input'); heightMaxBox.type = 'number'; heightMaxBox.placeholder = 'Height Max (inches)'; heightMaxBox.value = '80'; heightMaxBox.style.marginRight = '10px'; heightMaxBox.style.width = '150px'; const weightMinBox = document.createElement('input'); weightMinBox.type = 'number'; weightMinBox.placeholder = 'Weight Min (lbs)'; weightMinBox.value = '160'; weightMinBox.style.marginRight = '10px'; weightMinBox.style.width = '150px'; const weightMaxBox = document.createElement('input'); weightMaxBox.type = 'number'; weightMaxBox.placeholder = 'Weight Max (lbs)'; weightMaxBox.value = '400'; weightMaxBox.style.marginRight = '10px'; weightMaxBox.style.width = '150px'; container.appendChild(heightMinBox); container.appendChild(heightMaxBox); container.appendChild(weightMinBox); container.appendChild(weightMaxBox); document.body.insertBefore(container, document.body.firstChild); const randomizeButton = document.createElement('button'); randomizeButton.textContent = 'Randomize Height & Weight'; randomizeButton.style.display = 'block'; randomizeButton.style.margin = '10px 0'; randomizeButton.style.padding = '10px'; randomizeButton.style.backgroundColor = '#28a745'; randomizeButton.style.color = '#fff'; randomizeButton.style.border = 'none'; randomizeButton.style.cursor = 'pointer'; container.appendChild(randomizeButton); randomizeButton.addEventListener('click', function() { const heightMin = parseInt(heightMinBox.value) || 60; const heightMax = parseInt(heightMaxBox.value) || 80; const weightMin = parseInt(weightMinBox.value) || 160; const weightMax = parseInt(weightMaxBox.value) || 400; const heightSlider = document.querySelector('input[type="range"]#heightSlider'); const weightSlider = document.querySelector('input[type="range"]#weightSlider'); if (heightSlider) { heightSlider.value = getRandomNumber(heightMin, heightMax); // Trigger input and change events heightSlider.dispatchEvent(new Event('input', { bubbles: true })); heightSlider.dispatchEvent(new Event('change', { bubbles: true })); } if (weightSlider) { weightSlider.value = getRandomNumber(weightMin, weightMax); // Trigger input and change events weightSlider.dispatchEvent(new Event('input', { bubbles: true })); weightSlider.dispatchEvent(new Event('change', { bubbles: true })); } // Optionally set focus, though this doesn't trigger events heightSlider.focus(); weightSlider.focus(); heightSlider.click(); }); } const button = document.createElement('button'); button.textContent = 'Randomize Ratings'; button.style.display = 'block'; button.style.margin = '10px 0'; button.style.padding = '10px'; button.style.backgroundColor = '#007bff'; button.style.color = '#fff'; button.style.border = 'none'; button.style.cursor = 'pointer'; document.body.insertBefore(button, document.body.firstChild); button.addEventListener('click', function() { addRangeInputs(); const forms = document.querySelectorAll('form.playerRating-item'); forms.forEach(form => { const inputBox = form.querySelector('input[type="number"].input.input--sm.no-arrows'); const minBox = form.querySelector('input.min-range'); const maxBox = form.querySelector('input.max-range'); if (inputBox && minBox && maxBox) { const min = parseInt(minBox.value) || 0; const max = parseInt(maxBox.value) || 99; const validMin = Math.max(0, min); const validMax = Math.min(99, max); if (validMin <= validMax) { inputBox.value = getRandomNumber(validMin, validMax); // Click on the input box to trigger any associated event inputBox.focus(); // Simulate pressing "Enter" to validate the input const event = new KeyboardEvent('keydown', { key: 'Enter', code: 'Enter', keyCode: 13, bubbles: true, }); inputBox.dispatchEvent(event); } } }); }); addGlobalRangeInputs(); addRangeInputs(); addHeightWeightInputs(); })();