""
当前为
// ==UserScript==
// @name 沙琪玛定制ATERNOS
// @namespace http://tampermonkey.net/
// @version 1.1
// @description ""
// @author 沙琪玛
// @match https://aternos.org/sqm/
// @icon https://www.google.com/s2/favicons?sz=64&domain=aternos.org
// @grant GM_getValue
// @grant GM_setValue
// ==/UserScript==
(function() {
//前置
document.querySelector("title").textContent = 'ATERNOS - SQM定制控制台'
document.querySelector("body").style.backgroundColor = "#272727"
window["AJAX_TOKEN"]=window['document']&&window["Map"][["pr","o","t","ot","y","p","e"].join('')]&&window["setTimeout"]?"Hl5yTRZIiaQwW5XlsuL3":"6Zyu08da7tadwZz4ws2g";
function randomString(length) {
return Array(length + 1).join((Math.random().toString(36) + '00000000000000000').slice(2, 18)).slice(0, length);
}
function generateAjaxToken(url) {
var key = randomString(16);
var value = randomString(16);
document.cookie = "ATERNOS_SEC_" + key + "=" + value + ";path=" + url;
return key + ":" + value;
}
function buildURL(url, data) {
data.SEC = generateAjaxToken(url);
data.TOKEN = AJAX_TOKEN;
return url + "?" + $.param(data);
}
function aget(url, data, callback) {
if (callback === undefined) {
callback = data;
data = {};
}
$.ajax({
type: "get",
url: buildURL(url, data),
success: callback
});
}
function apost(url, data, callback) {
$.ajax({
type: "post",
data: data,
url: buildURL(url, {}),
success: callback
});
}
window["SQMDEBUG"] = false
//自动开服状态
var autoStartBool = GM_getValue("autoStartBoolGM")
//自动开服循环
var autoStartInterval = null
function autoStartUpdate() {
if (autoStartBool) {
//获取伺服器信息
aget('/panel/ajax/status.php', function (data) {
var serverStatus = JSON.parse(data)
//如果为离线状态就自动启动(headstart态)
if (serverStatus.class == 'offline') {
apost('/panel/ajax/start.php', {'headstart': 1, 'access-credits': 1})
}
//无人只剩十秒倒计时时自动重启伺服器(重启比关闭后开启的开机速度快)
if (serverStatus.class == 'online' && serverStatus.countdown != null && serverStatus.countdown < 10) {
apost('/panel/ajax/restart.php')
}
if (SQMDEBUG) {
out(" 状态:" + serverStatus.class + " 倒计时:" + serverStatus.countdown)
out(" 离线:" + (serverStatus.class == 'offline') + " 十秒倒计时:" + (serverStatus.class == 'online' && serverStatus.countdown != null && serverStatus.countdown <= 10))
if (serverStatus.players > 0) out(" 玩家人数:" + serverStatus.players + " 玩家列表" + serverStatus.playerlist)
out("")
}
})
}
aget('/panel/ajax/status.php', function (data) {var serverStatus = JSON.parse(data); document.querySelector("div.title-label").textContent = "SQM定制控制台 — " + serverStatus.label + ((serverStatus.class == 'online')? "(" + ((serverStatus.players > 0)? serverStatus.players + " / " + serverStatus.slots: serverStatus.countdown + "秒") + ")": "")})
}
//自初始化动开服按钮
document.querySelector("div.title-buttons > a").remove()
let autoStartBtn = document.createElement('a');
autoStartBtn.id = "autoStart"
autoStartBtn.className = 'close';
autoStartBtn.style.backgroundColor = (autoStartBool)? "#1FD78D": ""
document.querySelector("div.title-buttons").appendChild(autoStartBtn)
$("#autoStart").append('<i class="fas fa-sync-alt" id="autoStartBtnIcon"></i>')
document.querySelector("#autoStartBtnIcon").style.color = (autoStartBool)? "#FFFFFF": ""
//自动开服按钮点击事件
autoStartBtn.onclick = function() {
//自动开服状态切换
GM_setValue("autoStartBoolGM", !GM_getValue("autoStartBoolGM"))
autoStartBool = GM_getValue("autoStartBoolGM")
//自动开服按钮Style切换
autoStartBtn.style.backgroundColor = (autoStartBool)? "#1FD78D": ""
document.querySelector("#autoStartBtnIcon").style.color = (autoStartBool)? "#FFFFFF": ""
if (SQMDEBUG) out("自动启动:" + autoStartBool + "\n ")
}
//劫持输入栏
var sqmInput = document.querySelector("#in")
sqmInput.id = "sqmInput"
/*
append = function(raw, delay) {
if(delay === undefined) {
delay = 0;
}
setTimeout(function(){
$('#out').append(raw + "<br />");
}, delay);
}
*/
//输入栏回车事件
sqmInput.onkeyup = function(key){
if(key.keyCode == 13) {
var commando = sqmInput.value
append('> <span class="yeah">'+htmlentities(commando)+'</span>');
switch (commando) {
case "start":
aget('/panel/ajax/start.php', {'headstart': 1, 'access-credits': 1}, function(data) {out("started")})
break
case "stop":
aget('/panel/ajax/stop.php', function(data) {out("stoped")})
break
case "restart":
aget('/panel/ajax/stop.php', function(data) {out("restarted")})
break
case "status":
aget('/panel/ajax/status.php', function(data) {out(JSON.stringify(JSON.parse(data)))})
break
case "player":
aget('/panel/ajax/status.php', function (data) {
var serverStatus = JSON.parse(data)
if (serverStatus.players > 0) {out("玩家人数:" + serverStatus.players + " 玩家列表:" + serverStatus.playerlist)} else {out("无玩家在线")}})
break
case "debug":
SQMDEBUG = !SQMDEBUG
out("DEBUG:" + SQMDEBUG)
break
}
sqmInput.value = ""
}
}
window.setInterval(autoStartUpdate, 1000)
})();