Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const game = {
- roomName: "👑 [24/7] PWRHAX.EU - POWER 2v2 👑",
- maxPlayers: 12,
- playerName: "Admin",
- public: true,
- geo: {
- code: "PL",
- lat: 52.232544,
- lon: 20.997543
- }
- };
- let infoPlayers = [];
- let connections = [];
- let arrUsers = [];
- let allUsers = {};
- let loginUsers = [];
- let admins = ['Shaw','Kris','♛𝔎⓽𝓡𝐼𝓒𝓐𝓡𝓓♛','Yezzy>!','Niezłykinol','mbape','xPsc1','Mαנοя'];
- let blackListAccess = ['zax'];
- let duplicateMsg = {};
- let decisionPlayer = {};
- const config = {
- showGoalInfo: true,
- chatEnabled: true,
- muteNewPlayers: false,
- adminPassword: "cyk"
- };
- const prefixes = {
- message: "⏩ ",
- cmd: "!"
- };
- let goalsMVP = {};
- let assistsMVP = {};
- let arrGoalsMVP = [];
- let arrAssistsMVP = [];
- let adminAccess = {};
- let superAdmins = [0];
- let mutedPlayers = [];
- let noCmdPlayers = [];
- let afkPlayers = [];
- //Bets
- let betStatus = true;
- let allBets = {};
- let currentBets = {};
- let arrBets = [];
- //
- let authenticatedAdmins = [];
- let adminLogs = {};
- let ball = {
- kickedBy: {
- player: null,
- time: null,
- },
- touchedBy: {
- player: null,
- time: null
- },
- assistingPlayer: null
- };
- let redWin = 1;
- let blueWin = 1;
- function getSpec() {
- return room.getPlayerList().filter((player) => player.team === 0 && afkPlayers.indexOf(player.name) < 0 && player.id != 0);
- }
- function getBlue() {
- return room.getPlayerList().filter((player) => player.team === 2);
- }
- function getRed() {
- return room.getPlayerList().filter((player) => player.team === 1);
- }
- let goals = {};
- let ownGoals = {};
- let assists = {};
- let match = {};
- let cmdManager;
- let nextPauseAction = true;
- const room = new HBInit(game);
- let bans = {};
- room.onPlayerBallKick = player => {
- updateAssistingPlayer(player);
- let time = Date.now();
- let kick = {
- time,
- player
- };
- ball.kickedBy = kick;
- };
- function createArrGoalsMVP() {
- arrGoalsMVP = [];
- /*Stworzenie tablicy obiektów opartą o obiekt 'wins'*/
- for (let x in goalsMVP) {
- arrGoalsMVP.push([x, goalsMVP[x]]);
- };
- /*Sortowanie tablicy arrWins*/
- arrGoalsMVP.sort(function (a, b) {
- return b[1] - a[1];
- })
- };
- function createArrAssistsMVP() {
- arrAssistsMVP = [];
- /*Stworzenie tablicy obiektów opartą o obiekt 'wins'*/
- for (let x in assistsMVP) {
- arrAssistsMVP.push([x, assistsMVP[x]]);
- };
- /*Sortowanie tablicy arrWins*/
- arrAssistsMVP.sort(function (a, b) {
- return b[1] - a[1];
- })
- };
- room.onTeamVictory = function (scores) {
- createArrAssistsMVP();
- createArrGoalsMVP();
- let bestGoals
- if (arrGoalsMVP.length != 0) {
- bestGoals = arrGoalsMVP[0][0];
- }
- if (scores.blue > scores.red) {
- if (arrGoalsMVP.length != 0) {
- room.sendChat(`🏆 🔵 won ${blueWin} matches in a row. 🏆 ⭐ MVP: ${bestGoals}, Goals: ${arrGoalsMVP[0][1]} Assists: ${assistsMVP[bestGoals] || 0} ⭐`);
- } else {
- room.sendChat(`🏆 🔵 won ${blueWin} matches in a row. 🏆 ⭐ MVP: Niezalogowany gracz.`);
- }
- redWin = 1;
- blueWin++;
- } else {
- if (arrGoalsMVP.length != 0) {
- room.sendChat(`🏆 🔴 won ${redWin} matches in a row. 🏆 ⭐ MVP: ${bestGoals}, Goals: ${arrGoalsMVP[0][1]} Assists: ${assistsMVP[bestGoals] || 0} ⭐`);
- } else {
- room.sendChat(`🏆 🔴 won ${redWin} matches in a row. 🏆 ⭐ MVP: Niezalogowany gracz. ⭐`);
- }
- blueWin = 1;
- redWin++;
- }
- if (scores.blue > scores.red) {
- for (let x in currentBets) {
- const team = currentBets[x][0];
- if (team === 2) {
- let bet = allBets[x] || 0;
- allBets[x] = bet + currentBets[x][1];
- } else {
- let bet = allBets[x] || 0;
- allBets[x] = bet - currentBets[x][1];
- }
- }
- } else {
- for (let x in currentBets) {
- const team = currentBets[x][0];
- if (team === 1) {
- let bet = allBets[x] || 0;
- allBets[x] = bet + currentBets[x][1];
- } else {
- let bet = allBets[x] || 0;
- allBets[x] = bet - currentBets[x][1];
- }
- }
- }
- currentBets = {};
- goalsMVP = {};
- assistsMVP = {};
- room.getPlayerList().map((p)=>{
- if(p.team != 0){
- let score = match[p.name] || 0;
- match[p.name] = score + 1;
- }
- })
- }
- room.onTeamGoal = team => {
- let scorer;
- if (ball.kickedBy && ball.touchedBy) {
- if (ball.kickedBy.time > ball.touchedBy.time) {
- scorer = ball.kickedBy.player;
- } else {
- scorer = ball.touchedBy.player;
- }
- } else if (ball.kickedBy) {
- scorer = ball.kickedBy.player;
- } else if (ball.touchedBy) {
- scorer = ball.touchedBy.player;
- }
- if (scorer) {
- let ownGoal = scorer.team !== team;
- let assistOccured = ball.assistingPlayer && !ownGoal && ball.assistingPlayer.team === team && ball.assistingPlayer.id !== scorer.id;
- if (config.showGoalInfo) {
- let message = `Gola ${ownGoal ? "samobójczego" : ""} zdobył gracz ${scorer.name}`;
- if (assistOccured) {
- message += ` (${ball.assistingPlayer.name})`;
- }
- sendMessage(message);
- }
- if (ownGoal && arrUsers.includes(scorer.name)) {
- let score = ownGoals[scorer.name] || 0;
- ownGoals[scorer.name] = score + 1;
- } else {
- if (arrUsers.includes(scorer.name)) {
- let score = goals[scorer.name] || 0;
- goals[scorer.name] = score + 1;
- let scoreMVP = goalsMVP[scorer.name] || 0;
- goalsMVP[scorer.name] = scoreMVP + 1;
- }
- }
- if (assistOccured) {
- let score = assists[ball.assistingPlayer.name] || 0;
- assists[ball.assistingPlayer.name] = score + 1;
- let scoreMVP = assistsMVP[ball.assistingPlayer.name] || 0;
- assistsMVP[ball.assistingPlayer.name] = scoreMVP + 1;
- }
- }
- ball.kickedBy = null;
- ball.touchedBy = null;
- };
- let code = (str) => {
- var input = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
- var output = 'NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm';
- var index = x => input.indexOf(x);
- var translate = x => index(x) > -1 ? output[index(x)] : x;
- return str.split('').map(translate).join('');
- }
- function registerPlayer(p, message) {
- exportUsers();
- setTimeout(() => {
- putMethod();
- }, 2000)
- for (name in users) {
- if (!Object.keys(users).includes(code(p.name)) && message.substr(10).length > 2) {
- room.sendChat(`❗Zostałeś zarejestrowany oraz automatycznie zalogowany.`, p.id);
- room.sendChat(`❗${p.name}, Twoje hasło: '${message.substr(10)}' Komenda do logowania: '!login ${message.substr(10)}'`, p.id);
- room.sendChat(`❗Do czasu zalogowania twoje gole,asysty,bety nie będa dodawane.`, p.id);
- //
- users[code(p.name)] = code(message.substr(10));
- arrUsers.push(p.name);
- break;
- } else if (message.substr(10).length < 2) {
- room.sendChat(`Twoje hasło musi składać się min. 3 znaków❗`, p.id);
- break;
- } else {
- room.sendChat('❗Gracz o takim nicku jest już zarejestrowany. To nie ty? Napisz: HTTP://PWRHAX.EU', p.id);
- break;
- }
- }
- };
- function loginPlayer(p, message) {
- exportUsers();
- setTimeout(() => {
- putMethod();
- }, 2000)
- const players = Object.keys(users);
- const idxPlayer = players.indexOf(code(p.name));
- if (idxPlayer === -1) {
- room.sendChat(`Twój nick nie jest zarejestrowany❗ Użyj '!register password' aby go zarejestrować.`, p.id);
- } else if (idxPlayer != -1 && arrUsers.includes(p.name)) {
- room.sendChat(`${p.name}, jesteś już zalogowany❗ (Zostaniesz zautomatycznie wylogowany po opuszczeniu rooma.)❗`, p.id);
- } else if (idxPlayer != -1 && code(message.substr(7)) != users[players[idxPlayer]]) {
- room.sendChat(`Błędne hasło❗ Zapomniałeś hasła❓ Pisz: HTTP://PWRHAX.EU`, p.id);
- } else if (idxPlayer != -1 && code(message.substr(7)) == users[players[idxPlayer]]) {
- room.sendChat(`${p.name}, zalogowany❗`, p.id);
- if (admins.includes(p.name)) {
- room.setPlayerAdmin(p.id, true);
- room.sendChat(`${p.name} jest super-adminem ❗`)
- authenticatedAdmins.push(p.id);
- }
- arrUsers.push(p.name);
- }
- };
- room.onPlayerChat = (player, msg) => {
- if(msg != duplicateMsg[player.name]){
- decisionPlayer[player.id] = 0;
- }
- duplicateMsg[player.name] = msg;
- if(msg === duplicateMsg[player.name]){
- let dec = decisionPlayer[player.id] || 0;
- decisionPlayer[player.id] = dec + 1;
- }
- if(decisionPlayer[player.id] > 3){
- return false;
- }
- getSpec();
- getRed();
- getBlue();
- if (msg.startsWith('!register')) {
- registerPlayer(player, msg);
- return false;
- }
- if (msg.startsWith('!login')) {
- loginPlayer(player, msg);
- return false;
- }
- if (msg.startsWith('!bet') && betStatus && arrUsers.includes(player.name)) {
- const betText = msg.split(" ");
- let teamValidRed = new RegExp(/red/i);
- let teamValidBlue = new RegExp(/blue/i);
- let teamValidBlueRed = new RegExp(/blue|red/i);
- let valueValid = new RegExp(/\d{1,}/);
- let currentBetsKeys = Object.keys(currentBets);
- let filterCurrentBets = currentBetsKeys.filter((p) => p === player.name);
- if (filterCurrentBets.length === 1) {
- room.sendChat(`🖕 Możesz obstawić tylko 1 mecz.`, player.id);
- } else if (teamValidRed.test(betText[1]) && valueValid.test(msg) && player.team === 0 && betText.length === 3 && allBets[player.name] >= betText[2] && betText[2] >=0 && betText[2].indexOf('.')=== -1&& getRed().length === 2) {
- betText[1] = 1;
- room.sendChat(`Postawiłeś ${betText[2]}💲 na Red.`, player.id);
- //
- room.sendChat(`${player.name} postawił na twoją drużynę ${betText[2]}💲.`, getRed()[0].id);
- room.sendChat(`${player.name} postawił na twoją drużynę ${betText[2]}💲.`, getRed()[1].id);
- currentBets[player.name] = [betText[1], parseFloat(valueValid.exec(msg)[0])];
- } else if (teamValidBlue.test(betText[1]) && valueValid.test(msg) && player.team === 0 && betText.length === 3 && allBets[player.name] >= betText[2] && betText[2] >=0 && betText[2].indexOf('.')=== -1&&getBlue().length === 2) {
- betText[1] = 2;
- room.sendChat(`Postawiłeś ${betText[2]}💲 na Blue.`, player.id);
- room.sendChat(`${player.name} postawił na twoją drużynę ${betText[2]}💲.`, getBlue()[0].id);
- room.sendChat(`${player.name} postawił na twoją drużynę ${betText[2]}💲.`, getBlue()[1].id);
- currentBets[player.name] = [betText[1], parseFloat(valueValid.exec(msg)[0])];
- } else if (allBets[player.name] < betText[2]) {
- room.sendChat(`Nie masz tyle 💲`, player.id);
- } else if (betText.length != 3) {
- room.sendChat(`Zastosuj się do wzorca: !bet team value`, player.id);
- } else if (!teamValidBlueRed.test(betText[1])) {
- room.sendChat(`Nie znaleziono ${betText[1]} , użyj red/blue.`, player.id);
- } else if (player.team != 0) {
- room.sendChat(`Nie możesz obstawiać swoich meczy.`, player.id);
- }
- return false;
- }
- if (msg.startsWith('!bet') && betStatus && !arrUsers.includes(player.name)) {
- room.sendChat(`Bety są tylko i wyłącznie dla zarejestrowanych graczy.`, player.id);
- return false;
- }
- if (msg.startsWith('!bet') && !betStatus) {
- room.sendChat(`Bety są obecnie wyłączone po rozpoczęciu gry masz 15s aby obstawić dowolną drużynę.`, player.id);
- return false;
- }
- if (msg.startsWith(prefixes.cmd)) {
- if (!canPlayerInvokeCmd(player)) return false;
- let showMessage = parseCmd(player, msg.substring(1));
- return showMessage && (!isPlayerMuted(player) && config.chatEnabled || isSuperAdmin(player));
- }
- return !isPlayerMuted(player) && config.chatEnabled || isSuperAdmin(player);
- };
- const sendBan = (data) =>{
- const xhr = new XMLHttpRequest();
- xhr.open('POST','http://217.182.79.39:5000/ban')
- xhr.setRequestHeader('Content-Type','application/json')
- xhr.send(JSON.stringify(data))
- }
- room.onPlayerKicked = (kickedPlayer, reason, ban, byPlayer) => {
- sendUsers();
- if(ban) {addBan(byPlayer.name)};
- if(ban) sendBan({name: game.roomName,banned:kickedPlayer.name,byPlayer: byPlayer.name,reason: reason});
- if (isSuperAdmin(kickedPlayer) || authenticatedAdmins.includes(kickedPlayer.id) && !isSuperAdmin(byPlayer)) {
- if (ban)
- room.clearBans();
- room.kickPlayer(byPlayer.id, "Tak się bawić nie będziemy", true);
- }
- if (blackListAccess.includes(byPlayer.name) && reason === 'won') {
- downloadBl();
- let bl = infoPlayers.filter((p)=> p.name === kickedPlayer.name)[0];
- blContent.push(bl);
- const xhr = new XMLHttpRequest();
- xhr.open('PUT','https://api.myjson.com/bins/v81fc');
- xhr.setRequestHeader('Content-Type', 'application/json');
- xhr.send(JSON.stringify(blContent));
- }
- let banInfo = {};
- banInfo.banned = kickedPlayer.name;
- banInfo.admin = byPlayer.name;
- banInfo.reason = reason;
- banInfo.isBan = ban;
- banInfo.time = new Date();
- if (!bans[byPlayer.id]) {
- bans[byPlayer.id] = [];
- }
- bans[byPlayer.id].unshift(banInfo);
- if (!authenticatedAdmins.includes(byPlayer.id) && !isSuperAdmin(byPlayer)) {
- let playerBans = bans[byPlayer.id].filter(ban => ban.isBan);
- if (playerBans.length >= 5) {
- let lastBan = playerBans[0];
- let banToCompare = playerBans[4];
- let dateDiff = lastBan.time - banToCompare.time;
- if (dateDiff <= 1000 * 60 * 5) {
- clearAllBans("Admina");
- room.kickPlayer(byPlayer.id, "żegnaj trollu", true);
- }
- }
- }
- };
- room.onPlayerAdminChange = (changedPlayer, byPlayer) => {
- updateAdmins();
- if (!changedPlayer.admin && (isSuperAdmin(changedPlayer) || authenticatedAdmins.includes(changedPlayer.id) && !isSuperAdmin(byPlayer))) {
- if (byPlayer !== null && byPlayer.name !== game.playerName) {
- room.setPlayerAdmin(changedPlayer.id, true);
- room.setPlayerAdmin(byPlayer.id, false);
- sendMessage("Próba odebrania uprawnień adminowi wyższej rangi!");
- }
- }
- let FalAdmin = new RegExp(/zax/i);
- let LmaAdmin = new RegExp(/zax/i);
- if (byPlayer.id != 0 && FalAdmin.test(changedPlayer.name)) {
- room.setPlayerAdmin(changedPlayer.id, false);
- room.sendChat('❗❗ Nie dawaj admina nikomu o nicku Zdun ❗❗');
- }
- if (byPlayer.id != 0 && LmaAdmin.test(changedPlayer.name)) {
- room.setPlayerAdmin(changedPlayer.id, false);
- room.sendChat('❗❗ Nie dawaj admina nikomu o nicku zax ❗❗');
- }
- };
- function valid(player){
- const xhr = new XMLHttpRequest();
- xhr.open('GET','https://api.myjson.com/bins/176yok',true)
- xhr.onload = function(){
- if(xhr.status === 200){
- let x = JSON.parse(xhr.responseText);
- if(x[player.name] === false){
- room.kickPlayer(player.id,'Fejk',true)
- }
- }
- }
- xhr.send()
- }
- let blContent = [];
- const downloadBl = () =>{
- const xhr = new XMLHttpRequest();
- xhr.open('GET','https://api.myjson.com/bins/v81fc')
- xhr.onload = function(){
- if(xhr.status === 200){
- blContent = JSON.parse(xhr.responseText);
- }
- }
- xhr.send();
- }
- const validateBl = (player) =>{
- const xhr = new XMLHttpRequest();
- xhr.open('GET','https://api.myjson.com/bins/v81fc')
- xhr.onload = function(){
- if(xhr.status === 200){
- let x = JSON.parse(xhr.responseText);
- if(x.length){
- for(p of x){
- if(p.auth === player.auth || p.conn === player.conn){
- room.kickPlayer(player.id,'🏴 Czarna lista 🏴',true)
- }
- }
- }
- }
- }
- xhr.send();
- }
- const ip = (player) =>{
- const xhr = new XMLHttpRequest();
- xhr.open('GET',`http://check.getipintel.net/check.php?ip=${player.ip.Nb.Cb[0]}&contact=`)
- xhr.onload = function(){
- if(xhr.status===200){
- if(xhr.responseText === "1"){
- room.kickPlayer(player.id,'😂VPN😂',true)
- }
- }
- }
- xhr.send()
- }
- room.onPlayerJoin = player => {
- room.sendAnnouncement('Zapraszamy do odwiedzenia naszej strony HTTP://PWRHAX.EU', player.id, 0xd9db6e, "bold", 2)
- if(player.name === 'lutentokot'){
- downloadBl();
- let bl = infoPlayers.filter((p)=> p.name === player.name)[0];
- blContent.push(bl);
- const xhr = new XMLHttpRequest();
- xhr.open('PUT','https://api.myjson.com/bins/v81fc');
- xhr.setRequestHeader('Content-Type', 'application/json');
- xhr.send(JSON.stringify(blContent));
- }
- // valid(player);
- downloadBl();
- validateBl(player)
- // ip(player)
- room.sendChat("Welcome " + player.name + ', wpisz !komendy by poznać funkcje rooma!', player.id)
- room.sendChat("Użyj '!register password' aby się zarejestrować lub '!login password' aby się zalogować.", player.id);
- updateAdmins();
- if (config.muteNewPlayers) {
- mutePlayer(player);
- }
- let conn = connections.find(a => a[1] === player.conn)
- if (conn) {
- // room.kickPlayer(player.id, "1 gracz = 1 karta", false);
- } else {
- connections.push([player.id, player.conn])
- }
- let bets = allBets[player.name] || 97;
- allBets[player.name] = bets + 3;
- infoPlayers.push({
- name: player.name,
- auth: player.auth,
- conn: player.conn
- });
- sendUsers();
- };
- room.onPlayerLeave = player => {
- if (arrUsers.indexOf(player.name) != -1) {
- arrUsers.splice(arrUsers.indexOf(player.name), 1);
- }
- unsetPlayerAfk(player);
- unsetSuperAdmin(player);
- updateAdmins();
- if (player.team !== 0 && room.getScores()) {
- let players = room.getPlayerList().filter(player => player.team === 0 && !isPlayerAfk(player));
- players = players.filter(player => player.id !== 0);
- if (players.length) {
- room.pauseGame(true);
- sendMessage("Gracz z boiska opuścił serwer. Są dostępni gracze na ławce.");
- }
- }
- setTimeout(() => {
- infoPlayers = infoPlayers.filter((p) => p.name != player.name);
- }, 1000)
- connections = connections.filter(a => a[0] !== player.id);
- setTimeout(() => {
- infoPlayers = infoPlayers.filter((p) => p.name != player.name);
- }, 1000)
- sendUsers()
- };
- room.onPlayerTeamChange = player => {
- if (player.id === 0) {
- room.setPlayerTeam(0, 0);
- }
- sendUsers()
- if (player.team !== 0 && isPlayerAfk(player)) {
- sendMessage(`Gracz ${player.name} jest AFK`);
- room.pauseGame(true);
- }
- };
- room.onGameTick = () => {
- let players = room.getPlayerList();
- let ballPosition = room.getBallPosition();
- let ballRadius = 10;
- let playerRadius = 15;
- let triggerDistance = ballRadius + playerRadius + 0.01;
- for (let player of players) {
- if (!player.position) continue;
- let distanceToBall = pointDistance(player.position, ballPosition);
- if (distanceToBall < triggerDistance) {
- updateAssistingPlayer(player);
- let time = Date.now();
- let touch = {
- time,
- player
- };
- ball.touchedBy = touch;
- }
- }
- };
- room.onGameStart = () => {
- ball.kickedBy = null;
- ball.touchedBy = null;
- ball.assistingPlayer = null;
- let players = room.getPlayerList().filter(player => player.team !== 0 && isPlayerAfk(player));
- if (players.length === 1) {
- sendMessage(`Gracz ${players[0].name} jest AFK`);
- room.pauseGame(true);
- } else if (players.length > 1) {
- sendMessage(`Gracze ${players.map(player => player.name).join(", ")} są AFK`);
- room.pauseGame(true);
- }
- betStatus = true;
- setTimeout(function () {
- betStatus = false;
- }, 15000);
- };
- room.onGamePause = () => {
- nextPauseAction = false;
- };
- room.onGameUnpause = () => {
- nextPauseAction = true;
- };
- room.onGameStop = () => {
- showAfkPlayers();
- };
- class CmdManager {
- constructor() {
- this.cmds = [];
- }
- add(cmd) {
- this.cmds.push(cmd);
- }
- remove(cmd) {
- let index = this.cmds.indexOf(cmd);
- if (index !== -1) {
- this.cmds.splice(index, 1);
- }
- }
- findCmd(message) {
- for (let cmd of this.cmds) {
- let regex = cmd.getBaseRegex();
- if (regex.exec(message)) {
- return cmd;
- }
- }
- return null;
- }
- extractArguments(cmd, message) {
- let regex = cmd.getFullRegex();
- let match = regex.exec(message);
- if (match) {
- let args = [];
- for (let i = 1; match[i] !== undefined; i++) {
- args.push(match[i]);
- }
- return {
- args
- };
- }
- return {
- error: cmd.getHelpText()
- };
- }
- listAdminCmds() {
- let list = [];
- for (let cmd of this.cmds) {
- if (cmd.onlyAdmin) {
- list.push(prefixes.cmd + cmd.cmd);
- }
- }
- return list;
- }
- listPlayerCmds() {
- let list = [];
- for (let cmd of this.cmds) {
- if (!cmd.onlyAdmin && !cmd.onlySuperAdmin) {
- list.push(prefixes.cmd + cmd.cmd);
- }
- }
- return list;
- }
- }
- class Cmd {
- constructor(config, func) {
- this.cmd = config.cmd;
- this.params = config.params || null;
- this.paramsOptional = config.paramsOptional || false;
- this.showInChat = config.showInChat || false;
- this.onlyAdmin = config.onlyAdmin || false;
- this.onlySuperAdmin = config.onlySuperAdmin || false;
- this.helpText = config.helpText || null;
- this.func = func;
- }
- canPlayerExecute(player) {
- if (this.onlySuperAdmin && !isSuperAdmin(player))
- return false;
- if (this.onlyAdmin && !player.admin)
- return false;
- return true;
- }
- execute(args) {
- return this.func.apply(null, args);
- }
- getHelpText() {
- let params = "";
- for (let param in this.params) {
- params += ` ${param}`;
- }
- let message = `Użyj ${prefixes.cmd}${this.cmd}${params}`;
- if (this.helpText) {
- message += ` (${this.helpText})`;
- }
- return message;
- }
- getBaseRegex() {
- return new RegExp(`^${this.cmd}\\b`);
- }
- getFullRegex() {
- let list = "";
- if (this.paramsOptional) {
- list = "(?:";
- }
- for (let param in this.params) {
- list += ` ${this.params[param]}`;
- }
- if (this.paramsOptional) {
- list += ")?";
- }
- return new RegExp(`^${this.cmd}${list}$`);
- }
- }
- let setPlayerAfkCmd = new Cmd({
- cmd: "afk",
- showInChat: true
- }, (invokedBy) => {
- if (!isPlayerAfk(invokedBy)) {
- setPlayerAfk(invokedBy);
- sendMessage(`Gracz ${invokedBy.name} zaraz wraca`, invokedBy);
- }
- });
- let setPlayerBackCmd = new Cmd({
- cmd: "jj",
- showInChat: true
- }, (invokedBy) => {
- unsetPlayerAfk(invokedBy);
- sendMessage(`Gracz ${invokedBy.name} jest z powrotem`, invokedBy);
- });
- let listAfkPlayers = new Cmd({
- cmd: "lafk",
- showInChat: true
- }, (invokedBy) => {
- showAfkPlayers(invokedBy);
- });
- let mutePlayerByName = new Cmd({
- cmd: "mute",
- params: {
- name: "(.+)"
- },
- onlyAdmin: true
- }, (invokedBy, nameToMute) => {
- let players = room.getPlayerList().filter(player => player.name.includes(nameToMute));
- if (players.length === 1) {
- process(players);
- } else if (!players.length) {
- sendMessage(`${nameToMute} nie został odnaleziony`);
- } else {
- players = players.filter(player => player.name === nameToMute);
- if (players.length === 1) {
- process(players);
- } else {
- sendMessage(`Znaleziono wielu graczy pasujących do wzorca ${nameToMute}`);
- }
- }
- function process(players) {
- let player = players[0];
- if (isPlayerMuted(player)) {
- unmutePlayer(player);
- sendMessage(`${player.name} został odciszony przez ${invokedBy.name}`);
- } else {
- mutePlayer(player);
- sendMessage(`${player.name} został wyciszony przez ${invokedBy.name}`);
- }
- }
- });
- let mutePlayerById = new Cmd({
- cmd: "muteid",
- params: {
- id: "(\\d+)"
- },
- onlyAdmin: true
- }, (invokedBy, idToMute) => {
- let player = room.getPlayerList().filter(player => player.id === Number(idToMute))[0];
- if (player) {
- if (isPlayerMuted(player)) {
- unmutePlayer(player);
- sendMessage(`${player.name} został odciszony przez ${invokedBy.name}`);
- } else {
- mutePlayer(player);
- sendMessage(`${player.name} został wyciszony przez ${invokedBy.name}`);
- }
- } else {
- sendMessage(`Gracz o id ${idToMute} nie został znaleziony`);
- }
- });
- let muteNewPlayers = new Cmd({
- cmd: "mutenew1458",
- onlyAdmin: true
- }, (invokedBy) => {
- config.muteNewPlayers = !config.muteNewPlayers;
- if (config.muteNewPlayers) {
- sendMessage(`Chat został wyłączony dla nowych graczy przez ${invokedBy.name}`);
- } else {
- sendMessage(`Chat został włączony dla nowych graczy przez ${invokedBy.name}`);
- clearAllMutes();
- }
- });
- let silentMutePlayerByName = new Cmd({
- cmd: "smute",
- params: {
- name: "(.+)"
- },
- onlyAdmin: true
- }, (invokedBy, nameToMute) => {
- let players = room.getPlayerList().filter(player => player.name.includes(nameToMute));
- if (players.length === 1) {
- process(players);
- } else if (players.length > 1) {
- players = players.filter(player => player.name === nameToMute);
- if (players.length === 1) {
- process(players);
- }
- }
- function process(players) {
- let player = players[0];
- if (isPlayerMuted(player)) {
- unmutePlayer(player);
- } else {
- mutePlayer(player);
- }
- }
- });
- let silentMutePlayerById = new Cmd({
- cmd: "smuteid",
- params: {
- id: "(\\d+)"
- },
- onlyAdmin: true
- }, (invokedBy, idToMute) => {
- let player = room.getPlayerList().filter(player => player.id === Number(idToMute))[0];
- if (player) {
- if (isPlayerMuted(player)) {
- unmutePlayer(player);
- } else {
- mutePlayer(player);
- }
- }
- });
- let superAdminLogin = new Cmd({
- cmd: `slogin ${config.adminPassword}`
- }, (invokedBy) => {
- if (!invokedBy.admin) {
- room.setPlayerAdmin(invokedBy.id, true);
- setSuperAdmin(invokedBy);
- }
- });
- let adminLogin = new Cmd({
- cmd: "login... ",
- params: {
- password: "(.+)"
- },
- paramsOptional: true
- }, (invokedBy, password) => {
- // if (!invokedBy.admin) {
- // let adminPassword = adminAccess[invokedBy.name];
- // if (adminAccess[invokedBy.name] && adminPassword === password) {
- // room.setPlayerAdmin(invokedBy.id, true);
- // authenticatedAdmins.push(invokedBy.id);
- // }
- // }
- });
- let clearBans = new Cmd({
- cmd: "clearbans",
- onlyAdmin: true
- }, (invokedBy) => {
- clearAllBans(invokedBy.name);
- });
- let clearMutes = new Cmd({
- cmd: "clearmutes",
- onlyAdmin: true
- }, (invokedBy) => {
- clearAllMutes(invokedBy.name);
- });
- let toggleChat = new Cmd({
- cmd: "togglechat1295",
- onlyAdmin: true
- }, (invokedBy) => {
- if (config.chatEnabled) {
- sendMessage(`Chat został wyłączony przez ${invokedBy.name}`);
- config.chatEnabled = false;
- } else {
- config.chatEnabled = true;
- sendMessage(`Chat został włączony przez ${invokedBy.name}`);
- }
- });
- let muteAll = new Cmd({
- cmd: "muteallplayers",
- onlyAdmin: true
- }, (invokedBy) => {
- const players = room.getPlayerList().filter(player => player.id !== 0);
- for (let player of players) {
- if (player.name !== invokedBy.name)
- mutePlayer(player);
- }
- sendMessage(`Wszyscy gracze zostali wyciszeni przez ${invokedBy.name}`);
- });
- let clearNoCmdPlayers = new Cmd({
- cmd: "clearnocmd",
- onlyAdmin: true
- }, (invokedBy) => {
- clearAllNoCmdPlayers(invokedBy.name);
- });
- let listTopOGPlayers = new Cmd({
- cmd: "otop10",
- showInChat: true
- }, (invokedBy) => {
- let props = Object.keys(ownGoals).map(function (key) {
- return {
- key: key,
- value: this[key]
- };
- }, ownGoals);
- props.sort((p1, p2) => p2.value - p1.value);
- let top10 = props.splice(0, 10);
- let pos = 1;
- if (top10.length) {
- sendMessage("Top10 Strzelców do własnej bramki: ", invokedBy);
- }
- while (top10.length) {
- let tmp = top10.splice(0, 5);
- let message = tmp.map(e => `${pos++}. ${e.key}: ${e.value}`).join(", ");
- sendMessage(message, invokedBy);
- }
- });
- let listTopPlayers = new Cmd({
- cmd: "top10",
- showInChat: true
- }, (invokedBy) => {
- let props = Object.keys(goals).map(function (key) {
- return {
- key: key,
- value: this[key]
- };
- }, goals);
- props.sort((p1, p2) => p2.value - p1.value);
- let top10 = props.splice(0, 10);
- let pos = 1;
- if (top10.length) {
- sendMessage("Top10 Strzelców: ", invokedBy);
- }
- while (top10.length) {
- let tmp = top10.splice(0, 5);
- let message = tmp.map(e => `${pos++}. ${e.key}: ${e.value}`).join(", ");
- sendMessage(message, invokedBy);
- }
- });
- let listTopBets = new Cmd({
- cmd: "btop10",
- showInChat: true
- }, (invokedBy) => {
- let props = Object.keys(allBets).map(function (key) {
- return {
- key: key,
- value: this[key]
- };
- }, allBets);
- props.sort((p1, p2) => p2.value - p1.value);
- let top10 = props.splice(0, 10);
- let pos = 1;
- if (top10.length) {
- sendMessage("TOP10 bets: ", invokedBy);
- }
- while (top10.length) {
- let tmp = top10.splice(0, 5);
- let message = tmp.map(e => `${pos++}. ${e.key}: ${e.value}`).join("💲, ");
- sendMessage(message + '💲', invokedBy);
- }
- });
- let listPlayerBets = new Cmd({
- cmd: "money",
- params: {
- name: "(.+)"
- },
- showInChat: true
- }, (invokedBy, playerName) => {
- let scorers = Object.keys(allBets).filter(scorer => scorer.includes(playerName));
- let score;
- let player = null;
- if (scorers.length === 1) {
- score = allBets[scorers[0]];
- player = scorers[0];
- } else if (!scorers.length) {
- score = 0;
- } else {
- scorers = scorers.filter(scorer => scorer === playerName);
- if (scorers.length === 1) {
- score = allBets[scorers[0]];
- player = scorers[0];
- } else {
- return sendMessage(`Znaleziono wielu graczy pasujących do wzorca ${playerName}`);
- }
- }
- player = player || playerName;
- sendMessage(`${player} ma ${score}💲.`, invokedBy);
- });
- let details = new Cmd({
- cmd: "details",
- params: {
- name: "(.+)"
- },
- showInChat: true
- }, (invokedBy, playerName) => {
- let averageAssist = (assists[playerName] || 0) / (match[playerName]) || 0;
- let averageGoals = (goals[playerName] || 0) / (match[playerName]) || 0;
- room.sendChat(`Mecze: ${match[playerName] || 0} 🔸 Średnia asyst: ${(averageAssist.toFixed(2))} 🔸 Średnia goli: ${averageGoals.toFixed(2)}`)
- });
- let BetsTeam = new Cmd({
- cmd: "bet ",
- params: {
- name: "(.+)"
- },
- showInChat: true
- }, (invokedBy, playerName) => {
- });
- let listTopAssistingPlayers = new Cmd({
- cmd: "atop10",
- showInChat: true
- }, (invokedBy) => {
- let props = Object.keys(assists).map(function (key) {
- return {
- key: key,
- value: this[key]
- };
- }, assists);
- props.sort((p1, p2) => p2.value - p1.value);
- let top10 = props.splice(0, 10);
- let pos = 1;
- if (top10.length) {
- sendMessage("Top10 Asystujących: ", invokedBy);
- }
- while (top10.length) {
- let tmp = top10.splice(0, 5);
- let message = tmp.map(e => `${pos++}. ${e.key}: ${e.value}`).join(", ");
- sendMessage(message, invokedBy);
- }
- });
- let statsPlayer = new Cmd({
- cmd: "stats",
- params: {
- name: "(.+)"
- },
- showInChat: true
- }, (invokedBy, playerName) => {
- let scorersGoals = Object.keys(goals).filter(scorer => scorer.includes(playerName));
- let scoreGoal;
- let playerGoal = null;
- if (scorersGoals.length === 1) {
- scoreGoal = goals[scorersGoals[0]];
- playerGoal = scorersGoals[0];
- } else if (!scorersGoals.length) {
- scoreGoal = 0;
- } else {
- scorersGoals = scorersGoals.filter(scorer => scorer === playerName);
- if (scorersGoals.length === 1) {
- scoreGoal = goals[scorersGoals[0]];
- playerGoal = scorersGoals[0];
- } else {
- return sendMessage(`Znaleziono wielu graczy pasujących do wzorca ${playerName}`);
- }
- }
- let scorersOwn = Object.keys(ownGoals).filter(scorer => scorer.includes(playerName));
- let scoreOwn;
- let playerOwn = null;
- if (scorersOwn.length === 1) {
- scoreOwn = ownGoals[scorersOwn[0]];
- playerOwn = scorersOwn[0];
- } else if (!scorersOwn.length) {
- scoreOwn = 0;
- } else {
- scorersOwn = scorersOwn.filter(scorer => scorer === playerName);
- if (scorersOwns.length === 1) {
- scoreOwn = ownGoals[scorersOwn[0]];
- playerOwn = scorersOwn[0];
- } else {
- return sendMessage(`Znaleziono wielu graczy pasujących do wzorca ${playerName}`);
- }
- }
- let scorersAs = Object.keys(assists).filter(scorer => scorer.includes(playerName));
- let scoreAs;
- let playerAs = null;
- if (scorersAs.length === 1) {
- scoreAs = assists[scorersAs[0]];
- player = scorersAs[0];
- } else if (!scorersAs.length) {
- scoreAs = 0;
- } else {
- scorersAs = scorersAs.filter(scorer => scorer === playerName);
- if (scorersAs.length === 1) {
- scoreAs = assists[scorersAs[0]];
- playerAs = scorersAs[0];
- } else {
- return sendMessage(`Znaleziono wielu graczy pasujacych do wzorca ${playerName}`);
- }
- }
- playerGoal = playerGoal || playerName;
- playerOwn = playerOwn || playerName;
- playerAs = playerAs || playerAs;
- sendMessage(`${playerGoal}, Gole: ${scoreGoal} 🔸 ownGole: ${scoreOwn} 🔸 Asysty: ${scoreAs}, invokedBy`);
- });
- let listPlayerCmds = new Cmd({
- cmd: "komendy",
- showInChat: true
- }, (invokedBy) => {
- let list = cmdManager.listPlayerCmds();
- list = list.filter(cmd => !cmd.includes("login") && !cmd.includes("komendy"));
- while (list.length) {
- let cmds = list.splice(0, 11);
- sendMessage(cmds.join(" "), invokedBy);
- }
- });
- let listAdminCmds = new Cmd({
- cmd: "akomendy246",
- onlyAdmin: true
- }, (invokedBy) => {
- let list = cmdManager.listAdminCmds();
- list = list.filter(cmd => !cmd.includes("login"));
- while (list.length) {
- let cmds = list.splice(0, 8);
- sendMessage(cmds.join(" "), invokedBy);
- }
- });
- let freeSlotCmd = new Cmd({
- cmd: "slot",
- onlyAdmin: true
- }, (invokedBy) => {
- freeSlot(invokedBy);
- });
- let listPlayers = new Cmd({
- cmd: "players",
- paramsOptional: true,
- params: {
- pattern: "(.+)"
- },
- onlyAdmin: true
- }, (invokedBy, pattern) => {
- let players = room.getPlayerList();
- if (pattern)
- players = players.filter(player => player.name.includes(pattern));
- for (let player of players) {
- sendMessage(`Gracz ${player.name}, id ${player.id}`);
- }
- });
- let goalInfoCmd = new Cmd({
- cmd: "showgoal",
- onlyAdmin: true
- }, (invokedBy) => {
- config.showGoalInfo = !config.showGoalInfo;
- sendMessage(`Informacje o golu zostały ${config.showGoalInfo ? "włączone" : "wyłączone"} przez ${invokedBy.name}`);
- });
- let giveSuperadmin = new Cmd({
- cmd: "givesa",
- params: {
- name: "(.+)"
- },
- onlySuperAdmin: true
- }, (invokedBy, playerName) => {
- const player = room.getPlayerList().filter(player => player.name === playerName)[0];
- if (player && !isSuperAdmin(player)) {
- setSuperAdmin(player);
- sendMessage("");
- }
- });
- let stopCmdForPlayerByName = new Cmd({
- cmd: "nocmd6895",
- params: {
- name: "(.+)"
- },
- onlyAdmin: true,
- helpText: "blokuje komendy dla gracza"
- }, (invokedBy, playerName) => {
- let players = room.getPlayerList().filter(player => player.name.includes(playerName));
- if (players.length === 1) {
- process(players);
- } else if (!players.length) {
- sendMessage(`${playerName} nie został odnaleziony`);
- } else {
- players = players.filter(player => player.name === playerName);
- if (players.length === 1) {
- process(players);
- } else {
- sendMessage(`Znaleziono wielu graczy pasujących do wzorca ${playerName}`);
- }
- }
- function process(players) {
- let player = players[0];
- if (player.id === invokedBy.id) {
- return sendMessage("Nie możesz pozbawić sam siebie możliwości wykonywania komend");
- }
- if (canPlayerInvokeCmd(player)) {
- blockCmdForPlayer(player);
- sendMessage(`Gracz ${player.name} został pozbawiony możliwości wywoływania komend przez ${invokedBy.name}`);
- } else {
- unblockCmdForPlayer(player);
- sendMessage(`Gracz ${player.name} otrzymał możliwość wywoływania komend przez ${invokedBy.name}`);
- }
- }
- });
- let stopCmdForPlayerById = new Cmd({
- cmd: "nocmd1id",
- params: {
- player_id: "(\\d+)"
- },
- onlyAdmin: true,
- helpText: "blokuje komendy dla gracza"
- }, (invokedBy, playerId) => {
- let player = room.getPlayerList().filter(player => player.id === Number(playerId))[0];
- if (player) {
- if (canPlayerInvokeCmd(player)) {
- blockCmdForPlayer(player);
- sendMessage(`Gracz ${player.name} został pozbawiony możliwości wywoływania komend przez ${invokedBy.name}`);
- } else {
- unblockCmdForPlayer(player);
- sendMessage(`Gracz ${player.name} otrzymał możliwość wywoływania komend przez ${invokedBy.name}`);
- }
- } else {
- sendMessage(`Gracz o ID ${playerId} nie został odnaleziony`);
- }
- });
- let pauseGameCmd = new Cmd({
- cmd: "p",
- showInChat: true
- }, (invokedBy) => {
- if (invokedBy.team !== 0) {
- if (nextPauseAction) {
- sendMessage(`Gra zatrzymana przez gracza ${invokedBy.name}`);
- } else {
- sendMessage(`Gra wznowiona przez gracza ${invokedBy.name}`);
- }
- room.pauseGame(nextPauseAction);
- }
- });
- let randomTeams = new Cmd({
- cmd: "random",
- params: {
- team_size: "(\\d+)"
- },
- showInChat: true,
- onlyAdmin: true
- }, (invokedBy, playersInTeam) => {
- playersInTeam = Number(playersInTeam);
- let players = room.getPlayerList().filter(player => player.id !== 0);
- players = players.filter(player => player.team !== 0 || !isPlayerAfk(player));
- if (playersInTeam * 2 > players.length) {
- return sendMessage(`Nie ma wystarczającej liczby graczy (pomijając graczy AFK) aby wylosować ${playersInTeam} osobowe drużyny`);
- }
- const freePlayers = players.filter(player => player.team === 0);
- const redPlayers = players.filter(player => player.team === 1);
- const bluePlayers = players.filter(player => player.team === 2);
- if (redPlayers.length > playersInTeam || bluePlayers.length > playersInTeam) {
- return sendMessage(`Drużyny są liczniejsze niż ${playersInTeam} graczy, musisz przenieść zawodników na ławkę`);
- }
- function getFreePlayer() {
- let randomId = getRandomInt(0, freePlayers.length - 1);
- let player = freePlayers[randomId];
- freePlayers.splice(randomId, 1);
- return player;
- }
- while (freePlayers && (redPlayers.length < playersInTeam || bluePlayers.length < playersInTeam)) {
- let message = "";
- if (redPlayers.length < playersInTeam) {
- let player = getFreePlayer();
- room.setPlayerTeam(player.id, 1);
- redPlayers.push(player);
- message += `${player.name} ==> Red, `;
- }
- if (bluePlayers.length < playersInTeam) {
- let player = getFreePlayer();
- room.setPlayerTeam(player.id, 2);
- bluePlayers.push(player);
- message += `${player.name} ==> Blue, `;
- }
- sendMessage(message);
- }
- });
- cmdManager = new CmdManager();
- cmdManager.add(statsPlayer);
- cmdManager.add(details);
- cmdManager.add(listPlayerBets);
- cmdManager.add(mutePlayerByName);
- cmdManager.add(mutePlayerById);
- cmdManager.add(silentMutePlayerByName);
- cmdManager.add(silentMutePlayerById);
- cmdManager.add(superAdminLogin);
- cmdManager.add(adminLogin);
- cmdManager.add(clearBans);
- cmdManager.add(listPlayerCmds);
- cmdManager.add(listAdminCmds);
- cmdManager.add(freeSlotCmd);
- cmdManager.add(randomTeams);
- cmdManager.add(listPlayers);
- cmdManager.add(listTopPlayers);
- cmdManager.add(goalInfoCmd);
- cmdManager.add(giveSuperadmin);
- cmdManager.add(stopCmdForPlayerByName);
- cmdManager.add(stopCmdForPlayerById);
- cmdManager.add(clearMutes);
- cmdManager.add(clearNoCmdPlayers);
- cmdManager.add(muteAll);
- cmdManager.add(toggleChat);
- cmdManager.add(muteNewPlayers);
- cmdManager.add(listTopAssistingPlayers);
- cmdManager.add(setPlayerAfkCmd);
- cmdManager.add(setPlayerBackCmd);
- cmdManager.add(listAfkPlayers);
- cmdManager.add(listTopOGPlayers);
- cmdManager.add(pauseGameCmd);
- cmdManager.add(listTopBets);
- cmdManager.add(BetsTeam);
- function parseCmd(player, message) {
- let cmd = cmdManager.findCmd(message);
- if (cmd) {
- if (cmd.canPlayerExecute(player)) {
- let response = cmdManager.extractArguments(cmd, message);
- if (response.error) {
- sendMessage(response.error, player);
- } else {
- let args = response.args;
- args.unshift(player);
- cmd.execute(args);
- }
- return cmd.showInChat;
- }
- return false;
- }
- return !message.includes("login");
- }
- function sendMessage(message, initiator) {
- if ((!initiator || !isPlayerMuted(initiator)) && (config.chatEnabled || initiator && isSuperAdmin(initiator))) {
- room.sendChat(prefixes.message + message);
- }
- }
- function isPlayerMuted(player) {
- return mutedPlayers.includes(player.id);
- }
- function mutePlayer(player) {
- mutedPlayers.push(player.id);
- }
- function unmutePlayer(player) {
- let index = mutedPlayers.indexOf(player.id);
- if (index !== -1) {
- mutedPlayers.splice(index, 1);
- }
- }
- function isSuperAdmin(player) {
- return superAdmins.includes(player.id);
- }
- function setSuperAdmin(player) {
- superAdmins.push(player.id);
- }
- function unsetSuperAdmin(player) {
- let index = superAdmins.indexOf(player.id);
- if (index !== -1) {
- superAdmins.splice(index, 1);
- }
- }
- function canPlayerInvokeCmd(player) {
- return !noCmdPlayers.includes(player.id);
- }
- function blockCmdForPlayer(player) {
- noCmdPlayers.push(player.id);
- }
- function unblockCmdForPlayer(player) {
- let index = noCmdPlayers.indexOf(player.id);
- if (index !== -1) {
- noCmdPlayers.splice(index, 1);
- }
- }
- function updateAdmins() {
- let isAdmin = room.getPlayerList().find((p)=> (p.id != 0 && p.admin));
- let players = room.getPlayerList().filter((p) => p.id != 0 && !afkPlayers.includes(p.id));
- let admins = room.getPlayerList().filter((p) => (p.id != 0 && p.admin));
- if(!isAdmin){
- players.length ? room.setPlayerAdmin(players[0].id,true) : null;
- }
- if(players.length > 7 && admins.length < 2){
- let noAdmins = room.getPlayerList().find((p) => !p.admin)
- room.setPlayerAdmin(noAdmins.id,true);
- }
- }
- function freeSlot(invokedBy) {
- const players = room.getPlayerList().filter(player => player.id !== 0);
- if (players.length !== game.maxPlayers) return;
- for (let player of players) {
- if (player.team === 0 && !player.admin && !isSuperAdmin(player)) {
- return room.kickPlayer(player.id, "Potrzebny slot");
- }
- }
- for (let player of players) {
- if (!player.admin && !isSuperAdmin(player)) {
- return room.kickPlayer(player.id, "Potrzebny slot");
- }
- }
- for (let player of players) {
- if (!isSuperAdmin(player)) {
- if (invokedBy !== undefined && invokedBy.id !== player.id) {
- return room.kickPlayer(player.id, "Potrzebny slot");
- }
- }
- }
- sendMessage("Musisz ręcznie wyrzucić gracza z pokoju");
- console.log("You must kick player manually, all players are privileged");
- }
- function getRandomInt(min, max) {
- return Math.floor(Math.random() * (max - min + 1)) + min;
- }
- function clearAllBans(initiator) {
- room.clearBans();
- sendMessage(`Bany zostały skasowane przez ${initiator}`);
- }
- function clearAllMutes(initiator) {
- mutedPlayers = [];
- if (initiator) {
- sendMessage(`Wszyscy wyciszeni gracze zostali odciszeni przez ${initiator}`);
- }
- }
- function clearAllNoCmdPlayers(initiator) {
- noCmdPlayers = [];
- sendMessage(`Wszyscy gracze bez możliwości używania komend dostali ją z powrotem od ${initiator}`);
- }
- function isPlayerAfk(player) {
- return afkPlayers.includes(player.id);
- }
- function setPlayerAfk(player) {
- afkPlayers.push(player.id);
- if (player.team !== 0) {
- room.setPlayerTeam(player.id, 0);
- }
- }
- function unsetPlayerAfk(player) {
- let index = afkPlayers.indexOf(player.id);
- if (index !== -1) {
- afkPlayers.splice(index, 1);
- }
- }
- function updateAssistingPlayer(initiatingPlayer) {
- let candidate = null;
- if (ball.kickedBy && ball.touchedBy) {
- if (ball.kickedBy.time > ball.touchedBy.time) {
- candidate = ball.kickedBy.player;
- } else {
- candidate = ball.touchedBy.player;
- }
- } else if (ball.kickedBy) {
- candidate = ball.kickedBy.player;
- } else if (ball.touchedBy) {
- candidate = ball.touchedBy.player;
- }
- if (candidate && candidate.id !== initiatingPlayer.id) {
- ball.assistingPlayer = candidate;
- }
- }
- function showAfkPlayers(invokedBy) {
- let players = room.getPlayerList().filter(player => isPlayerAfk(player));
- let line = players.length ? "Gracze AFK: " : "Brak graczy o statusie AFK";
- while (players.length) {
- let tmp = players.splice(0, 5);
- line += tmp.map(player => player.name).join(", ");
- sendMessage(line, invokedBy);
- line = "";
- }
- }
- function pointDistance(p1, p2) {
- let d1 = p1.x - p2.x;
- let d2 = p1.y - p2.y;
- return Math.sqrt(d1 * d1 + d2 * d2);
- }
- let loadStats = () => {
- loadGoals();
- loadOwnGoals();
- loadAssists();
- loadBets();
- loadMatch();
- exportUsers();
- }
- const loadBets = () => {
- const xhr = new XMLHttpRequest();
- xhr.onload = function () {
- let data = JSON.parse(xhr.responseText);
- allBets = data['allBets']
- }
- xhr.open('GET', 'https://api.myjson.com/bins/a8cm0');
- xhr.send();
- }
- const loadMatch = () => {
- const xhr = new XMLHttpRequest();
- xhr.onload = function () {
- let data = JSON.parse(xhr.responseText);
- match = data['match']
- }
- xhr.open('GET', 'https://api.myjson.com/bins/j5xk0');
- xhr.send();
- }
- const loadGoals = () => {
- const xhr = new XMLHttpRequest();
- xhr.onload = function () {
- let data = JSON.parse(xhr.responseText);
- goals = data['goals']
- }
- xhr.open('GET', 'https://api.myjson.com/bins/y0u6c');
- xhr.send();
- }
- const loadOwnGoals = () => {
- const xhr = new XMLHttpRequest();
- xhr.onload = function () {
- let data = JSON.parse(xhr.responseText);
- ownGoals = data['ownGoals']
- }
- xhr.open('GET', 'https://api.myjson.com/bins/1586lg');
- xhr.send();
- }
- const loadAssists = () => {
- const xhr = new XMLHttpRequest();
- xhr.onload = function () {
- let data = JSON.parse(xhr.responseText);
- assists = data['assists']
- }
- xhr.open('GET', 'https://api.myjson.com/bins/mrquc');
- xhr.send();
- }
- const saveGoals = () => {
- var xhr = new XMLHttpRequest();
- xhr.open('PUT', 'https://api.myjson.com/bins/y0u6c');
- xhr.setRequestHeader('Content-Type', 'application/json');
- xhr.onload = function () {
- if (xhr.status === 200) {
- var userInfo = JSON.parse(xhr.responseText);
- }
- };
- xhr.send(JSON.stringify({
- goals
- }));
- };
- const saveMatch = () => {
- var xhr = new XMLHttpRequest();
- xhr.open('PUT', 'https://api.myjson.com/bins/j5xk0');
- xhr.setRequestHeader('Content-Type', 'application/json');
- xhr.send(JSON.stringify({
- match
- }));
- };
- const saveBets = () => {
- var xhr = new XMLHttpRequest();
- xhr.open('PUT', 'https://api.myjson.com/bins/a8cm0');
- xhr.setRequestHeader('Content-Type', 'application/json');
- xhr.onload = function () {
- if (xhr.status === 200) {
- var userInfo = JSON.parse(xhr.responseText);
- }
- };
- xhr.send(JSON.stringify({
- allBets
- }));
- };
- const saveOwnGoals = () => {
- var xhr = new XMLHttpRequest();
- xhr.open('PUT', 'https://api.myjson.com/bins/1586lg');
- xhr.setRequestHeader('Content-Type', 'application/json');
- xhr.onload = function () {
- if (xhr.status === 200) {
- var userInfo = JSON.parse(xhr.responseText);
- }
- };
- xhr.send(JSON.stringify({
- ownGoals
- }));
- };
- const saveAssists = () => {
- var xhr = new XMLHttpRequest();
- xhr.open('PUT', 'https://api.myjson.com/bins/mrquc');
- xhr.setRequestHeader('Content-Type', 'application/json');
- xhr.onload = function () {
- if (xhr.status === 200) {
- var userInfo = JSON.parse(xhr.responseText);
- }
- };
- xhr.send(JSON.stringify({
- assists
- }));
- };
- const saveStats = () => {
- saveGoals();
- saveMatch();
- saveOwnGoals();
- saveAssists()
- saveBets();
- }
- function showNotificationAboutAFK() {
- sendMessage("Użyj !afk aby zasygnalizować nieobecność");
- let delay = 500;
- setTimeout(() => {
- sendMessage("Wpisz !jj aby oznajmić powrót");
- setTimeout(() => {
- sendMessage("Aby zobaczyć kto jest AFK wprowadź !lafk");
- }, delay)
- }, delay)
- }
- let clearBansInterval = setInterval(clearAllBans, 1000 * 60 * 60, "Admina");
- let clearMutesInterval = setInterval(clearAllMutes, 1000 * 60 * 60, "Admina");
- let clearNoCmdInterval = setInterval(clearAllNoCmdPlayers, 1000 * 60 * 60, "Admina");
- function kickAll() {
- room.getPlayerList().forEach(function (player) {
- if (player.id != 0) {
- room.kickPlayer(player.id, 'Hasło bezpieczeństwa aktywowane!!', true);
- }
- });
- }
- let mikic = '{"name":"Power Finezja Classic fixed from HaxMaps","width":420,"height":200,"spawnDistance":170,"bg":{"type":"grass","width":370,"height":170,"kickOffRadius":75,"cornerRadius":0},"playerPhysics":{"bCoef":0.5,"invMass":0.5,"damping":0.96,"acceleration":0.12,"kickingAcceleration":0.12,"kickingDamping":0.96,"kickStrength":11},"vertexes":[{"x":-370,"y":170,"trait":"ballArea"},{"x":-370,"y":64,"trait":"ballArea"},{"x":-370,"y":-64,"trait":"ballArea"},{"x":-370,"y":-170,"trait":"ballArea"},{"x":370,"y":170,"trait":"ballArea"},{"x":370,"y":64,"trait":"ballArea"},{"x":370,"y":-64,"trait":"ballArea"},{"x":370,"y":-170,"trait":"ballArea"},{"x":0,"y":200,"trait":"kickOffBarrier"},{"x":0,"y":75,"trait":"kickOffBarrier"},{"x":0,"y":-75,"trait":"kickOffBarrier"},{"x":0,"y":-200,"trait":"kickOffBarrier"},{"x":-380,"y":-64,"trait":"goalNet"},{"x":-400,"y":-44,"trait":"goalNet"},{"x":-400,"y":44,"trait":"goalNet"},{"x":-380,"y":64,"trait":"goalNet"},{"x":380,"y":-64,"trait":"goalNet"},{"x":400,"y":-44,"trait":"goalNet"},{"x":400,"y":44,"trait":"goalNet"},{"x":380,"y":64,"trait":"goalNet"},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":-380,"y":-64},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":-380,"y":64},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":380,"y":-64},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":380,"y":64},{"bCoef":1,"trait":"ballArea","x":385,"y":64,"cMask":["ball"]},{"bCoef":1,"trait":"ballArea","x":385,"y":170,"cMask":["ball"]},{"bCoef":1,"trait":"ballArea","x":385,"y":-170,"cMask":["ball"]},{"bCoef":1,"trait":"ballArea","x":385,"y":-64,"cMask":["ball"]},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":-385,"y":64},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":-385,"y":170},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":-385,"y":-170},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":-385,"y":-64},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":-385,"y":-170},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":-385,"y":-64},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":-385,"y":-170},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":-385,"y":-64},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":-385,"y":64},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":-385,"y":170},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":-385,"y":64},{"bCoef":1,"cMask":["ball"],"trait":"ballArea","x":-385,"y":170},{"bCoef":1,"trait":"ballArea","x":385,"y":-170,"cMask":["ball"]},{"bCoef":1,"trait":"ballArea","x":385,"y":-64,"cMask":["ball"]},{"bCoef":1,"trait":"ballArea","x":385,"y":-170,"cMask":["ball"]},{"bCoef":1,"trait":"ballArea","x":385,"y":-64,"cMask":["ball"]},{"bCoef":1,"trait":"ballArea","x":385,"y":64,"cMask":["ball"]},{"bCoef":1,"trait":"ballArea","x":385,"y":170,"cMask":["ball"]},{"bCoef":1,"trait":"ballArea","x":385,"y":64,"cMask":["ball"]},{"bCoef":1,"trait":"ballArea","x":385,"y":170,"cMask":["ball"]}],"segments":[{"v0":0,"v1":1,"trait":"ballArea"},{"v0":2,"v1":3,"trait":"ballArea"},{"v0":4,"v1":5,"trait":"ballArea"},{"v0":6,"v1":7,"trait":"ballArea"},{"v0":12,"v1":13,"trait":"goalNet","curve":-90},{"v0":13,"v1":14,"trait":"goalNet"},{"v0":14,"v1":15,"trait":"goalNet","curve":-90},{"v0":16,"v1":17,"trait":"goalNet","curve":90},{"v0":17,"v1":18,"trait":"goalNet"},{"v0":18,"v1":19,"trait":"goalNet","curve":90},{"v0":8,"v1":9,"trait":"kickOffBarrier"},{"v0":9,"v1":10,"trait":"kickOffBarrier","curve":180,"cGroup":["blueKO"]},{"v0":9,"v1":10,"trait":"kickOffBarrier","curve":-180,"cGroup":["redKO"]},{"v0":10,"v1":11,"trait":"kickOffBarrier"},{"vis":false,"color":"FFCCCC","bCoef":1,"trait":"ballArea","v0":24,"v1":25,"cMask":["ball"],"x":385},{"vis":false,"color":"CCCCFF","bCoef":1,"trait":"ballArea","v0":26,"v1":27,"x":385,"cMask":["ball"]},{"vis":false,"color":"FFCCCC","bCoef":1,"cMask":["ball"],"trait":"ballArea","v0":28,"v1":29,"x":-385,"curve":0},{"vis":false,"color":"FFCCCC","bCoef":1,"cMask":["ball"],"trait":"ballArea","v0":30,"v1":31,"x":-385},{"vis":false,"color":"FFCCCC","bCoef":1,"cMask":["ball"],"trait":"ballArea","v0":31,"v1":31},{"vis":false,"color":"FFCCCC","bCoef":1,"cMask":["ball"],"trait":"ballArea","v0":32,"v1":33,"x":-385,"curve":-38.6025768017},{"vis":false,"color":"FFCCCC","bCoef":1,"cMask":["ball"],"trait":"ballArea","v0":34,"v1":35,"x":-385,"curve":31.9608748015},{"vis":false,"color":"FFCCCC","bCoef":1,"cMask":["ball"],"trait":"ballArea","v0":36,"v1":37,"x":-385,"curve":-55.0670963503},{"vis":false,"color":"FFCCCC","bCoef":1,"cMask":["ball"],"trait":"ballArea","v0":38,"v1":39,"x":-385,"curve":30.1056948262},{"vis":false,"color":"CCCCFF","bCoef":1,"trait":"ballArea","v0":40,"v1":41,"x":385,"cMask":["ball"],"curve":48.8016671394},{"vis":false,"color":"CCCCFF","bCoef":1,"trait":"ballArea","v0":42,"v1":43,"x":385,"cMask":["ball"],"curve":-34.5238570872},{"vis":false,"color":"FFCCCC","bCoef":1,"trait":"ballArea","v0":44,"v1":45,"cMask":["ball"],"x":385,"curve":43.4541918718},{"vis":false,"color":"FFCCCC","bCoef":1,"trait":"ballArea","v0":46,"v1":47,"cMask":["ball"],"x":385,"curve":-35.5522115092}],"goals":[{"p0":[-376,65],"p1":[-376,-63],"team":"red"},{"p0":[377,63],"p1":[377,-65],"team":"blue","_selected":true}],"discs":[{"pos":[-370,64],"trait":"goalPost","color":"FFCCCC","bCoef":0.5},{"pos":[-370,-64],"trait":"goalPost","color":"FFCCCC"},{"pos":[370,64],"trait":"goalPost","color":"CCCCFF"},{"pos":[370,-64],"trait":"goalPost","color":"CCCCFF"}],"planes":[{"normal":[0,1],"dist":-170,"trait":"ballArea"},{"normal":[0,-1],"dist":-170,"trait":"ballArea"},{"normal":[0,1],"dist":-200,"bCoef":0.1},{"normal":[0,-1],"dist":-200,"bCoef":0.1},{"normal":[1,0],"dist":-420,"bCoef":0.1},{"normal":[-1,0],"dist":-420,"bCoef":0.1}],"traits":{"ballArea":{"vis":false,"bCoef":1,"cMask":["ball"]},"goalPost":{"radius":8,"invMass":0,"bCoef":0.5},"goalNet":{"vis":true,"bCoef":0.1,"cMask":["ball"]},"kickOffBarrier":{"vis":false,"bCoef":0.1,"cGroup":["redKO","blueKO"],"cMask":["red","blue"]}}}';
- room.setCustomStadium(mikic);
- room.onStadiumChange = function (stadium, p) {
- if (p.id != 0)
- room.setCustomStadium(mikic);
- }
- let downloadUsers = {};
- let users = {}
- function exportUsers() {
- const xhr = new XMLHttpRequest();
- xhr.open('GET', 'https://api.myjson.com/bins/1fd7yw');
- xhr.onload = function () {
- downloadUsers = JSON.parse(xhr.responseText).allUsers;
- ////
- allUsers = Object.assign(users, downloadUsers);
- }
- xhr.send();
- }
- function putMethod() {
- var xhr = new XMLHttpRequest();
- xhr.open('PUT', 'https://api.myjson.com/bins/1fd7yw');
- xhr.setRequestHeader('Content-Type', 'application/json');
- xhr.send(JSON.stringify({
- allUsers
- }));
- }
- setInterval(saveStats, 1000 * 60 * 30);
- let addAdmin = playerName => {
- admins.push(playerName);
- console.log(`Gracz o nicku: ${playerName} został dodany do listy adminów.`);
- }
- let removeAdmin = playerName => {
- if (admins.indexOf(playerName) != -1) {
- admins.splice(admins.indexOf(playerName), 1);
- console.log(`Gracz o nicku: ${playerName} został usunięty z listy adminów.`);
- } else {
- console.log(`Nie znaleziono gracza o podanym nicku.`)
- }
- }
- let url;
- const sendUsers = () => {
- var xhr = new XMLHttpRequest();
- xhr.open('PUT', 'https://api.myjson.com/bins/ohjjs');
- xhr.setRequestHeader('Content-Type', 'application/json');
- room.getPlayerList()
- xhr.send(JSON.stringify({
- players: room.getPlayerList(),
- link: url,
- room: game.roomName
- }));
- }
- room.onRoomLink = (str) =>{
- url = str;
- }
- let update = setInterval(()=>{
- exportUsers();
- setTimeout(() => {
- putMethod();
- }, 2000)
- },1000 * 60 * 15);
- (function(){
- const xhr = new XMLHttpRequest();
- xhr.open('POST','http://217.182.79.39:5000/ban')
- xhr.setRequestHeader('Content-Type','application/json')
- xhr.send(JSON.stringify({}))
- })();
- loadStats()
- const banPlayer = () =>{
- const xhr = new XMLHttpRequest();
- xhr.open('GET','http://217.182.79.39:5000/2v');
- xhr.onload = () =>{
- if(xhr.status === 200){
- const data = JSON.parse(xhr.responseText);
- data.forEach((p)=>{
- room.kickPlayer(p.id,'',p.ban)
- })
- }
- }
- xhr.send()
- }
- const addBan = (name) =>{
- const xhr = new XMLHttpRequest();
- xhr.open('POST','http://217.182.79.39:5000/bans');
- xhr.setRequestHeader('Content-Type','application/json')
- xhr.send(JSON.stringify([name]))
- }
- const deleteBans = () =>{
- const xhr = new XMLHttpRequest();
- xhr.open('POST','http://217.182.79.39:5000/clear/2v/delete');
- xhr.setRequestHeader('Content-Type','application/json')
- xhr.send()
- }
- const clearBan = () => {
- const xhr = new XMLHttpRequest();
- xhr.open('GET','http://217.182.79.39:5000/clear/2v');
- xhr.setRequestHeader('Content-Type','application/json')
- xhr.onload = () =>{
- if(xhr.status === 200){
- let data = JSON.parse(xhr.responseText);
- if(data[0]){ room.sendChat('Bany skasowane!'); room.clearBans();}
- deleteBans();
- }
- }
- xhr.send()
- }
- const giveAdmins = () =>{
- const xhr = new XMLHttpRequest();
- xhr.open('GET','http://217.182.79.39:5000/giveadmin/2v');
- xhr.setRequestHeader('Content-Type','application/json')
- xhr.onload = () =>{
- if(xhr.status === 200){
- let data = JSON.parse(xhr.responseText);
- if(data.length){
- data.forEach((id)=>{
- room.setPlayerAdmin(id,true)
- })
- }
- deleteBans();
- }
- }
- xhr.send();
- }
- setInterval(banPlayer,2500)
- setInterval(clearBan,2500)
- setInterval(giveAdmins,2500)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement