您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Set the desired arrival time and the script will automatically send the attack. Added unit settings modal.
当前为
- // ==UserScript==
- // @name Auto Send Att Unit Settings
- // @version 1
- // @description Set the desired arrival time and the script will automatically send the attack. Added unit settings modal.
- // @include https://*/game.php?*&screen=place&try=confirm
- // @namespace https://greasyfork.org/users/1388899
- // ==/UserScript==
- // Create a button to open the settings modal
- const button = document.createElement('button');
- button.id = 'openSettings';
- button.innerHTML = 'Set Units';
- button.style.position = 'fixed';
- button.style.bottom = '20px';
- button.style.left = '20px';
- button.style.padding = '10px 20px';
- button.style.backgroundColor = '#4CAF50';
- button.style.color = 'white';
- button.style.border = 'none';
- button.style.cursor = 'pointer';
- document.body.appendChild(button);
- // Create the settings modal
- const modal = document.createElement('div');
- modal.id = 'settingsModal';
- modal.style.display = 'none';
- modal.style.position = 'fixed';
- modal.style.top = '50%';
- modal.style.left = '50%';
- modal.style.transform = 'translate(-50%, -50%)';
- modal.style.backgroundColor = 'white';
- modal.style.border = '1px solid #ccc';
- modal.style.padding = '20px';
- modal.style.boxShadow = '0px 4px 8px rgba(0,0,0,0.2)';
- modal.style.zIndex = '1000';
- modal.innerHTML = `
- <h3>Set Unit Quantities</h3>
- <label for="spear">Spear:</label><input type="number" id="spear" value="0"><br>
- <label for="sword">Sword:</label><input type="number" id="sword" value="0"><br>
- <label for="axe">Axe:</label><input type="number" id="axe" value="0"><br>
- <label for="spy">Spy:</label><input type="number" id="spy" value="0"><br>
- <label for="light">Light:</label><input type="number" id="light" value="0"><br>
- <label for="heavy">Heavy:</label><input type="number" id="heavy" value="0"><br>
- <label for="ram">Ram:</label><input type="number" id="ram" value="0"><br>
- <label for="catapult">Catapult:</label><input type="number" id="catapult" value="0"><br>
- <label for="knight">Knight:</label><input type="number" id="knight" value="0"><br>
- <label for="snob">Snob:</label><input type="number" id="snob" value="0"><br>
- <label for="numAttack">Num attack:</label><input type="number" id="numAttack" value="0" min="0"><br>
- <button id="applySettings" style="margin-top: 20px;">Apply</button>
- <button id="saveSettings" style="margin-top: 20px; background-color: #007bff;">Save</button>
- <button id="closeModal" style="margin-top: 20px; background-color: red;">Close</button>
- `;
- document.body.appendChild(modal);
- // Open the modal when the settings button is clicked
- document.getElementById('openSettings').addEventListener('click', function() {
- // Load values from localStorage and apply to inputs if available
- const savedUnits = JSON.parse(localStorage.getItem('units')) || {};
- // Populate the inputs with saved values
- document.getElementById('spear').value = savedUnits.spear || 0;
- document.getElementById('sword').value = savedUnits.sword || 0;
- document.getElementById('axe').value = savedUnits.axe || 0;
- document.getElementById('spy').value = savedUnits.spy || 0;
- document.getElementById('light').value = savedUnits.light || 0;
- document.getElementById('heavy').value = savedUnits.heavy || 0;
- document.getElementById('ram').value = savedUnits.ram || 0;
- document.getElementById('catapult').value = savedUnits.catapult || 0;
- document.getElementById('knight').value = savedUnits.knight || 0;
- document.getElementById('snob').value = savedUnits.snob || 0;
- document.getElementById('numAttack').value = savedUnits.numAttack || 0;
- document.getElementById('settingsModal').style.display = 'block';
- });
- // Close the modal when the close button is clicked
- document.getElementById('closeModal').addEventListener('click', function() {
- document.getElementById('settingsModal').style.display = 'none';
- });
- // Apply the unit values to the input fields and click the button multiple times when the "Apply" button is clicked
- document.getElementById('applySettings').addEventListener('click', function() {
- // Get the values from the modal inputs
- const spear = document.getElementById('spear').value;
- const sword = document.getElementById('sword').value;
- const axe = document.getElementById('axe').value;
- const spy = document.getElementById('spy').value;
- const light = document.getElementById('light').value;
- const heavy = document.getElementById('heavy').value;
- const ram = document.getElementById('ram').value;
- const catapult = document.getElementById('catapult').value;
- const knight = document.getElementById('knight').value;
- const snob = document.getElementById('snob').value;
- const numAttack = parseInt(document.getElementById('numAttack').value); // Get the number of attacks
- // Save the values to localStorage
- const units = {
- spear,
- sword,
- axe,
- spy,
- light,
- heavy,
- ram,
- catapult,
- knight,
- snob,
- numAttack
- };
- localStorage.setItem('units', JSON.stringify(units));
- // Click the button 'numAttack' times with a delay of 200ms between clicks
- const element = document.getElementById('troop_confirm_train');
- for (let i = 0; i < numAttack; i++) {
- setTimeout(() => {
- if (element) {
- element.click(); // Simulate the click
- }
- }, 200 * i); // Delay of 200ms between clicks
- }
- // Update the corresponding input values on the page after clicking
- setTimeout(() => {
- const inputs = document.querySelectorAll('.units-row input[data-unit]');
- inputs.forEach(input => {
- const unitType = input.dataset.unit;
- // Set value for each unit according to the modal input value
- if (unitType === 'spear') {
- input.value = spear;
- } else if (unitType === 'sword') {
- input.value = sword;
- } else if (unitType === 'axe') {
- input.value = axe;
- } else if (unitType === 'spy') {
- input.value = spy;
- } else if (unitType === 'light') {
- input.value = light;
- } else if (unitType === 'heavy') {
- input.value = heavy;
- } else if (unitType === 'ram') {
- input.value = ram;
- } else if (unitType === 'catapult') {
- input.value = catapult;
- } else if (unitType === 'knight') {
- input.value = knight;
- } else if (unitType === 'snob') {
- input.value = snob;
- }
- });
- // Close the modal after applying the settings
- document.getElementById('settingsModal').style.display = 'none';
- // Delay of 200ms before enabling the submit button
- setTimeout(() => {
- // Get the input element with the ID 'troop_confirm_submit'
- const submitButton = document.getElementById('troop_confirm_submit');
- // Remove the 'disabled' attribute to enable the button
- if (submitButton) {
- submitButton.removeAttribute('disabled');
- }
- }, 200);
- }, 200 * numAttack); // Ensure values are updated after the last click
- });
- // Save the unit values to localStorage without applying or clicking the button
- document.getElementById('saveSettings').addEventListener('click', function() {
- // Get the values from the modal inputs
- const spear = document.getElementById('spear').value;
- const sword = document.getElementById('sword').value;
- const axe = document.getElementById('axe').value;
- const spy = document.getElementById('spy').value;
- const light = document.getElementById('light').value;
- const heavy = document.getElementById('heavy').value;
- const ram = document.getElementById('ram').value;
- const catapult = document.getElementById('catapult').value;
- const knight = document.getElementById('knight').value;
- const snob = document.getElementById('snob').value;
- const numAttack = parseInt(document.getElementById('numAttack').value); // Get the number of attacks
- // Save the values to localStorage
- const units = {
- spear,
- sword,
- axe,
- spy,
- light,
- heavy,
- ram,
- catapult,
- knight,
- snob,
- numAttack
- };
- localStorage.setItem('units', JSON.stringify(units));
- });