// ==UserScript== // @name Locale Money Manager // @namespace Violentmonkey Scripts // @match https://*.popmundo.com/World/Popmundo.aspx/Company/LocaleMoneyTransfer* // @grant none // @version 1.0 // @author drinkwater // @description A tool to manage money transfers between a company and its locales in Popmundo. // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; // Aguarda o carregamento completo da página jQuery(document).ready(function() { // Variável global para armazenar os fundos disponíveis let availableFunds = 0; // Extrai os fundos disponíveis da div principal const fundsText = jQuery("#ppm-content p:nth-of-type(2) strong").text(); if (fundsText) { availableFunds = parseFloat(fundsText.replace(/[^\d,]/g, '').replace(',', '.')); console.log("Fundos disponíveis:", availableFunds); } // Seleciona o elemento `tablelocales` const tableLocales = jQuery("#tablelocales"); // Verifica se o elemento existe if (tableLocales.length) { // Cria a nova div com a classe `box` const newDiv = jQuery("
").css("text-align", "center").html('
');
newDiv.append(imageElement);
// Adiciona o parágrafo explicativo com melhorias
const hintParagraph = jQuery("
")
.html("Instruções: Utilize este campo para transferir dinheiro entre sua companhia e os locais controlados por ela.
"
+ "Digite um valor positivo para transferir dinheiro da companhia para os locais.
"
+ "Digite um valor negativo para transferir dinheiro dos locais para a companhia.
"
+ "Clique no botão Preencher para aplicar o valor a todos os locais listados abaixo.
"
+ "Caso o checkbox esteja marcado, o script ajustará automaticamente o valor máximo possível para os locais sem saldo suficiente.");
newDiv.append(hintParagraph);
// Adiciona o input number dentro da nova div com um atributo customizado
const inputNumber = jQuery("")
.attr("type", "number")
.attr("min", "0")
.attr("placeholder", "Digite um valor inteiro")
.attr("class", "round width100px")
.attr("data-custom-input", "true"); // Atributo para diferenciá-lo
newDiv.append(inputNumber);
// Adiciona o botão de submit dentro da nova div
const inputSubmit = jQuery("")
.attr("type", "button") // Altera para "button" para evitar envio de formulário
.attr("value", "Preencher")
.on("click", function(event) {
event.preventDefault();
const inputValue = parseFloat(inputNumber.val()) || 0;
// Validação de fundos totais
if (inputValue > 0 && availableFunds < inputValue * localeData.length) {
alert("Saldo insuficiente na companhia para esta operação.");
return;
}
// Validação de fundos individuais
if (inputValue < 0 && !jQuery("#removePartial").is(":checked")) {
const insufficientLocales = localeData.filter(locale => locale.moneyAvailable + inputValue < 0);
if (insufficientLocales.length > 0) {
alert("Os seguintes locais não possuem caixa suficiente para essa operação:\n" + insufficientLocales.map(locale => locale.localeName).join("\n"));
return;
}
}
// Preenche os valores nos inputs correspondentes
localeData.forEach(locale => {
if (jQuery("#removePartial").is(":checked") && inputValue < 0) {
const valueToFill = Math.min(Math.abs(inputValue), locale.moneyAvailable);
jQuery(`#${locale.inputId}`).val(-valueToFill);
} else {
jQuery(`#${locale.inputId}`).val(inputValue);
}
});
inputNumber.val(0);
});
newDiv.append(inputSubmit);
// Adiciona o checkbox com texto explicativo
const checkboxDiv = jQuery("