eSim BAttle

Request Supps directly from the Battle page

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

You will need to install an extension such as Tampermonkey to install this script.

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==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();
})