Я кароче сегодня покодил, похимичил и вот что получилось:
JavaScript:
const readline = require('readline');
const open = require('open');
let rl = null;
mp.events.add('packagesLoaded', () => {
setTimeout(() => {
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', (input) => {
if (input.charAt(0) == '/') {
const data = input.substr(1).split(' '); // убираем слеш и преобразовываем строку в массив разделяя по пробелам
const commandName = data[0];
const args = data.slice(1); // из data убираем первый элемент - название команды и получаем массив только аргументов args
mp.events.call(`console:${commandName}`, args); // передаем args в обработчик команды
}
});
}, 2000);
});
mp.events.add('console:restart', (time) => {
try {
if (time == undefined || time < 1) return console.log(`Enter the time (minutes)`);
rl.question("Are you sure you want to restart the server? (yes/no): ", (answer) => {
if (answer == 'yes') {
console.log(`Please wait ${time} mitnutes`);
time = parseInt(time);
let vrem = null;
if (time >= 5) vrem = `минут`;
if (time <= 4 && time != 1) vrem = `минуты`;
if (time == 1) vrem = 'минуту';
mp.players.forEach((pall) => {
pall.chatPush(`{#ff3b3b}!!! ВНИМАНИЕ !!! {#fff}Сервер будет перезагружен через ${time} ${vrem}`)
pall.chatPush(`{#ff3b3b}!!! ВНИМАНИЕ !!! {#fff}Завершите все свои ситуации`)
});
setTimeout(() => {
try {
mp.players.forEach((pall) => {
try {
pall.kickSilent();
} catch (e) {
console.log(e);
}
});
setTimeout(() => {
try {
console.log("Restarting the server...");
open('rest.bat'); // Здесь вызывается: https://rage-script.com/threads/windows-skript-dlja-bystroj-perezagruzki-servera.29/
} catch (e) {
console.log(e);
}
}, 500);
} catch (e) {
console.log(e);
}
}, time*60*1000); // n*60(s)*1000(ms)
}
});
} catch (e) {
console.log(e);
}
});