Greasy Fork is available in English.

eSim BAttle

Request Supps directly from the Battle page

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         eSim BAttle
// @namespace    eSim-BAttle
// @version      a2
// @description  Request Supps directly from the Battle page
// @author       gg
// @match        https://*.e-sim.org/battle.html?id=*
// @icon         https://cdn.discordapp.com/icons/316566483021070356/cfffdee309ec53078e9a9698ec4eef42.png?size=256
// @require      https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// ==/UserScript==

/*
Things todo :
- better colors
- fix padding
- update stock after request
- remove console.logs
----
const red = "#B8061C"
$("#optionQ1WEP").css("background-color", "orange")
$("#optionQ1WEP").css("background-color", "darkgreen")
*/

//global
let Q1WEPSTOCK = 0
let Q5WEPSTOCK = 0
let Q5FOODSTOCK = 0
let Q5GIFTSTOCK = 0
let playerId = 0
let citizenId = 0


const delay = ms => new Promise(res => setTimeout(res, ms))

function randomNumber() {
  const n = Math.floor(Math.random() * 6345)
  return n
}

function run() {
  console.log("mustorage")
  $.get("militaryUnitStorage.html", function(data) {
    let recipients = $(data).find(':input.receipments')
    for (let i = 0; i < recipients.length; i++) {
      let muMember = recipients[i]
      if (muMember.value == playerId) {
        console.log(`PlayerID: ${playerId} , citizenId = ${muMember.name}`)
        citizenId = muMember.name
      }
    }


    let storage = $(data).find(".storage")
    storage.each(function(i, item) {
      let storageItem = item.children[0].className
      switch (storageItem) {
        case 'Weapon-1-ammount':
          Q1WEPSTOCK = item.innerText.trim()
          $("#optionQ1WEP").html(Q1WEPSTOCK + "\nQ1 WEAP");
          break;
        case 'Weapon-5-ammount':
          Q5WEPSTOCK = item.innerText.trim();
          $("#optionQ5WEP").html(Q5WEPSTOCK + "\nQ5 WEAP");
          break;
        case 'Gift-5-ammount':
          Q5GIFTSTOCK = item.innerText.trim();
          $("#optionQ5GIFT").html(Q5GIFTSTOCK + "\nQ5 GIFT");
          break;
        case 'Food-5-ammount':
          Q5FOODSTOCK = item.innerText.trim();
          $("#optionQ5FOOD").html(Q5FOODSTOCK + "\nQ5 FOOD");
          break;
      }
    })
  })
}

async function sendSupp(type, quantityInput) {
  const quantityCheck = parseInt(quantityInput)
  console.log(quantityCheck)
  if (isNaN(quantityCheck)) {
    alert("Please enter a number for : " + type)
  } else {
    quantityInput = parseInt(quantityInput)
    switch (type) {
      case 'Weapon-1':
        if (quantityInput > parseInt(Q1WEPSTOCK)) {
          alert("Your MU doesn't have " + quantityInput + " Q1 WEPS. ");
          break;
        } else {
          await changeColor("#optionQ1WEP", "orange")
          await postMuStorage({
            'product': '1-WEAPON',
            'quantity': quantityInput,
            'reason': "",
            [citizenId]: playerId
          })
          await changeColor("#optionQ1WEP", "")
          break;
        }
        break;
      case 'Weapon-5':
        if (quantityInput > parseInt(Q5WEPSTOCK)) {
          alert("Your MU doesn't have " + quantityInput + " Q5 WEPS. ");
          break;
        } else {
          await changeColor("#optionQ5WEP", "orange")
          await postMuStorage({
            'product': '5-WEAPON',
            'quantity': quantityInput,
            'reason': "",
            [citizenId]: playerId
          })
          await changeColor("#optionQ5WEP", "")
          break;
        }
        break;
      case 'Gift-5':
        if (quantityInput > parseInt(Q5GIFTSTOCK)) {
          alert("Your MU doesn't have " + quantityInput + " Q5 GIFT. ");
          break;
        } else {
          await changeColor("#optionQ5GIFT", "orange")
          await postMuStorage({
            'product': '5-GIFT',
            'quantity': quantityInput,
            'reason': "",
            [citizenId]: playerId
          })
          await changeColor("#optionQ5GIFT", "")
          break;
        }
        break;
      case 'Food-5':
        if (quantityInput > parseInt(Q5FOODSTOCK)) {
          alert("Your MU doesn't have " + quantityInput + " Q5 FOOD. ");
          break;
        } else {
          await changeColor("#optionQ5FOOD", "orange")
          await postMuStorage({
            'product': '5-FOOD',
            'quantity': quantityInput,
            'reason': "",
            [citizenId]: playerId
          })
          await changeColor("#optionQ5FOOD", "")
          break;
        }
        break;
    }
  }
}

const postMuStorage = async (form) => {
  await delay(randomNumber())
  $.post(`https://${location.host}/militaryUnitStorage.html`, form, function(data, status) {
    console.log(status)
    console.log(data)
  })
}

const changeColor = async (el, color) => {
  $(el).css("background-color", color)
}

function createContextMenu() {
  const scope = document.querySelector("body");

  const contextMenu = document.createElement("div");
  contextMenu.id = "context-menu";


  let menuOptionRefresh = $("<div id=optionRefresh class='option'>Refresh the Page</div><hr/>")
  let menuOptionWep = $(`<div><div style='display:flex'><p class='option' id='optionQ1WEP'>0\nQ1 WEP</p><p class='option' id='optionQ5WEP'>0\nQ5 WEP</p></div><input autocomplete='off' id='inputQ1WEP' style='height:20px; width:30px;'><input autocomplete='off' id='inputQ5WEP' style='height:20px; width:30px;margin-left:25px;'></div><hr/>`)
  let menuOptionEat = $(`<div><div style='display:flex'><p class='option' id='optionQ5FOOD'>0\nQ5 FOOD</p><p class='option' id='optionQ5GIFT'>0\nQ5 Gift</p></div><input autocomplete='off' id='inputQ5FOOD' style='height:20px; width:30px;'><input autocomplete='off' id='inputQ5GIFT' style='height:20px; width:30px;margin-left:25px;'></div><hr/>`)

  $(contextMenu).append(menuOptionRefresh, menuOptionWep, menuOptionEat)
  $(menuOptionRefresh).on("click", function() {
    window.location.reload(true)
  })

  let location = document.querySelector("#newFightView")
  location.appendChild(contextMenu);

  scope.addEventListener("contextmenu", (event) => {
    event.preventDefault();

    const {
      clientX: mouseX,
      clientY: mouseY
    } = event;

    contextMenu.style.top = `${mouseY}px`;
    contextMenu.style.left = `${mouseX}px`;

    contextMenu.classList.add("visible");
    run()
    console.log(Q1WEPSTOCK, Q5WEPSTOCK, Q5FOODSTOCK, Q5GIFTSTOCK)
  });

  scope.addEventListener("click", (e) => {
    if (e.target.offsetParent != contextMenu) {
      contextMenu.classList.remove("visible");
    }
  });

  //ADD EVENTS
  $("#optionQ1WEP").on("click", function() {
    sendSupp("Weapon-1", $("#inputQ1WEP").val())
  });
  $("#optionQ5WEP").on("click", function() {
    sendSupp("Weapon-5", $("#inputQ5WEP").val())
  });
  $("#optionQ5FOOD").on("click", function() {
    sendSupp("Food-5", $("#inputQ5FOOD").val())
  });
  $("#optionQ5GIFT").on("click", function() {
    sendSupp("Gift-5", $("#inputQ5GIFT").val())
  });
}


$(document).ready(function() {
  playerId = $("#userName").attr("href").replace("profile.html?id=", "")
  const style = document.createElement('style');
  style.innerHTML = `html,
        body {
        width: 100%;
        height: 100%;
        font-family: "Open Sans", sans-serif;
        padding: 0;
        margin: 0;
        }
        #context-menu {
        position: fixed;
        z-index: 10000;
        width: 150px;
        background: #1b1a1a;
        border-radius: 5px;
        display: none;
        }
        #context-menu.visible{
            display: block;
        }
        #context-menu .option {
        padding: 8px 10px;
        font-size: 15px;
        color: #eee;
        cursor: pointer;
        border-radius: inherit;
        }

        #context-menu .option:hover {
        background: #343434;
        }`;
  document.body.appendChild(style);
  createContextMenu();
})