This repository has been archived on 2024-01-16. You can view files and clone it, but cannot push or open issues or pull requests.
Files
Maneger/scripts/PlayersSave.js
2021-07-07 23:15:01 -03:00

187 lines
6.9 KiB
JavaScript

const bds = require("../index")
const { CheckBan } = require("./check");
const { GetPlatform, GetPaths } = require("../lib/BdsSettings");
const fs = require("fs");
function MytypeKill(player) {
console.warn(`Player ${player} tried to connect to the server`)
let removeUser = `tp "${player}" ~ 128 ~`
console.log(removeUser);
var RemoveUser = setInterval(() => {
bds.command(removeUser);
bds_server_string.stdout.on("data", (data) => {
if (data.includes("disconnected:")) {
if (data.includes(player)) clearInterval(RemoveUser);
}
})
}, 6 * 1000);
return RemoveUser;
}
function Bedrock(data){
const file_users = fs.readFileSync(GetPaths("player"), "utf8");
const users = JSON.parse(file_users);
const CurrentData = new Date();
for (let line of data.split(/\r?\n/g)) {
if (line.includes("connected:")) {
line = line.replace("[INFO] Player ", "").trim()
let GetSatatus = line.trim().split(/\s+/g)[0];
const GetUser = [];
for (let index of line.trim().replace("connected:", "").replace("dis", "").trim().split(", xuid:")) if (index !== "") GetUser.push(index.trim());
// -------------------------------------------------
var username = GetUser[0];
console.log(GetUser);
// User Connected
if (GetSatatus === "connected:") {
if (CheckBan(username)) MytypeKill(username)
else if (users.bedrock[username] === undefined) {
var xuid = GetUser[1];
users.bedrock[username] = {
date: CurrentData,
connected: true,
xboxID: xuid,
update: [
{
date: CurrentData,
connected: true,
}
]
}
} else {
users.bedrock[username].connected = true
users.bedrock[username].date = CurrentData
users.bedrock[username].update.push({
date: CurrentData,
connected: true,
})
}
}
// User Disconnected
else if (GetSatatus === "disconnected:") {
if (!(CheckBan(username))){
users.bedrock[username].connected = false
users.bedrock[username].date = CurrentData
users.bedrock[username].update.push({
date: CurrentData,
connected: false,
})
}
}
}
}
fs.writeFileSync(GetPaths("player"), JSON.stringify(users, null, 2))
if (users.bedrock[username]) return true
else return false
}
function Pocketmine(data){
const UTF8Users = fs.readFileSync(GetPaths("player"), "utf8");
const users = JSON.parse(UTF8Users);
const CurrentData = new Date();
// Init
for (let line of data.split(/\r?\n/g)) {
line = line.replace(/\[[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\] \[Server thread\/INFO\]: /, "").trim();
const currenttosave = {
username: line.replace("joined the game", "").replace("left the game", "").trim(),
join: line.includes("joined"),
left: line.includes("left")
}
if (currenttosave.join){
const username = currenttosave.username;
if (users.pocketmine[username]) {
users.pocketmine[username].connected = true
users.pocketmine[username].date = CurrentData
users.pocketmine[username].update.push({
date: CurrentData,
connected: true,
})
} else {
users.pocketmine[username] = {
connected: true,
date: CurrentData,
update: [
{
date: CurrentData,
connected: true,
}
]
}
}
}
else if (currenttosave.left){
const username = currenttosave.username;
if (users.pocketmine[username]) {
users.pocketmine[username].connected = false
users.pocketmine[username].date = CurrentData
users.pocketmine[username].update.push({
date: CurrentData,
connected: false,
})
}
}
}
fs.writeFileSync(GetPaths("player"), JSON.stringify(users, null, 2))
return users
}
function java(data){
const UTF8Users = fs.readFileSync(GetPaths("player"), "utf8");
const users = JSON.parse(UTF8Users);
const CurrentData = new Date();
// Init
for (let line of data.split(/\r?\n/g)) {
line = line.replace(/\[[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\] \[Server thread\/INFO\]:/, "").trim();
const currenttosave = {
username: line.replace("joined the game", "").replace("left the game", "").trim(),
join: line.includes("joined the"),
left: line.includes("left the")
}
if (currenttosave.join){
const username = currenttosave.username;
if (users.java[username]) {
users.java[username].connected = true
users.java[username].date = CurrentData
users.java[username].update.push({
date: CurrentData,
connected: true,
})
} else {
users.java[username] = {
connected: true,
date: CurrentData,
update: [
{
date: CurrentData,
connected: true,
}
]
}
}
}
else if (currenttosave.left){
const username = currenttosave.username;
if (users.java[username]) {
users.java[username].connected = false
users.java[username].date = CurrentData
users.java[username].update.push({
date: CurrentData,
connected: false,
})
}
}
}
fs.writeFileSync(GetPaths("player"), JSON.stringify(users, null, 2))
return users
}
module.exports = function (data){
if (GetPlatform() === "bedrock") return Bedrock(data);
else if (GetPlatform() === "java") return java(data);
else if (GetPlatform() === "pocketmine") return Pocketmine(data);
else if (GetPlatform() === "jsprismarine") return false
else throw new Error("Plafotform Error !!")
};