Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var roomName = "HandBall 4v4 cellow";
- var maxPlayers = 1;
- var playerName = "REF";
- var roomPublic;
- var script = document.createElement('script');
- script.src = 'https://code.jquery.com/jquery-1.11.0.min.js';
- script.type = 'text/javascript';
- document.getElementsByTagName('head')[0].appendChild(script);
- var iframedoc = document.getElementsByTagName('iframe')[0].contentWindow.document;
- var welcome = document.createElement("div");
- document.getElementsByTagName('iframe')[0].contentWindow.document.body.appendChild(welcome);
- welcome.innerHTML = '<h2>Welcome to AutoRoom by GrzeWho start-up settings page.</h2> <br/> <h3>To create a room, enter the room name, maximum players amount, and the name of the host player, then press the button. <br/></h3>';
- welcome.innerHTML += 'Room name: <input type="text" id="roomname"><br>';
- welcome.innerHTML += 'Host player name: <input type="text" id="hostname"><br>';
- welcome.innerHTML += 'Number of players: <input type="text" id="number"><br>';
- welcome.innerHTML += 'Private room? <input type="checkbox" id="vis">';
- welcome.innerHTML += '<button type="button" id="myBtn">Create a room!</button><br>';
- welcome.innerHTML += 'This room supports loading and saving statistics through a file. Type in !savetofile in-game to generate a link, then click it to download. <br>';
- iframedoc.getElementById("myBtn").addEventListener("click", function()
- {
- roomName = iframedoc.getElementById("roomname").value;
- maxPlayers = parseInt(iframedoc.getElementById("number").value);
- playerName = iframedoc.getElementById("hostname").value;
- if(!iframedoc.getElementById("vis").checked)
- {
- roomPublic = true;
- }else roomPublic = false;
- if(isNaN(maxPlayers))
- {
- console.error("Please enter a valid number in the number of players field | Liczba graczy musi być liczbą.");
- }else{
- createRoom();
- welcome.innerHTML = 'This room supports loading and saving statistics through a file. Type in !savetofile in-game to generate a link, then click it to download. <br>';
- welcome.innerHTML += "You can load a file containing the room statistics that you want to include.";
- }
- });
- function createRoom()
- {
- var officialRSHLHost = false;
- var stadiumWidth = 1150;
- var stadiumHeight = 600;
- var radiusBall = 9.8;
- var throwInLeeway = 400;
- var greenLine = 510;
- var triggerDistance = radiusBall + 15 + 0.01;
- var outLineY = stadiumWidth - (radiusBall / 2) + 6;
- stadiumWidth += (radiusBall / 2) + 6;
- stadiumHeight += (radiusBall / 2) + 6;
- var Team = {
- SPECTATORS: 0,
- RED: 1,
- BLUE: 2
- };
- var lastScores = 0;
- var lastTeamTouched = 0;
- var lineBallPosition;
- var exitingPos = null;
- var previousBallPos;
- var assistingTouch = "";
- var lastPlayerTouched = "";
- var backMSG = false;
- var lastCall;
- var isBallUp = false;
- var crossed = false;
- var lat = 52;
- var long = 21;
- var ended = false;
- var isBallKickedOutside = false;
- var invMass = 1.05;
- var previousPlayerTouched;
- var RSHLMap;
- var room = HBInit({
- roomName: roomName,
- maxPlayers: maxPlayers,
- public: roomPublic,
- playerName: playerName,
- geo: {
- "code": "SO",
- "lat": lat,
- "lon": long
- }
- });
- var lineCrossedPlayers = [{
- name: "temp",
- times: 0
- }];
- var goalsPlayers = [{
- name: "temp",
- times: 0
- }];
- var assistsPlayers = [{
- name: "temp",
- times: 0
- }];
- var matchesPlayers = [{
- name: "temp",
- times: 0
- }];
- var winsPlayers = [{
- name: "temp",
- times: 0
- }];
- var cleanSheets = [{
- name: "temp",
- times: 0,
- matches: 0,
- goals: 0
- }];
- var currentGKRed = [{
- name: "temp",
- times: 0,
- average: 1500
- }];
- var currentGKBlue = [{
- name: "temp",
- times: 0,
- average: -1500
- }];
- var chatLog = [{
- player: "",
- message: ""
- }];
- room.setScoreLimit(3);
- room.setTimeLimit(5);
- room.setTeamsLock(true);
- var filterOn = false;
- var safeOn = false;
- var scores;
- var blueConsecutive = 0;
- var redConsecutive = 0;
- var redGK;
- var blueGK;
- var registeredPlayers = [{name: "cellow", pass: "capoplaza20", auth: false}, {name: "marO", pass: "siemabyku", auth: false}, {name: "Soł", pass: "b0gacz", auth: false}, {name: "bless", pass: "blessinho3477", auth: false}];
- var previousTeamTouched;
- var afkList = new Array;
- var activeList = new Array;
- var possessionRed = 0;
- var possessionBlue = 0;
- var mapSettings = [0.5, 0.5, 0.96, 0.12, 0.07, 0.96, 5.65, 1.05, 9.8];
- editMap();
- room.setCustomStadium(RSHLMap);
- room.onTeamGoal = function(team) {
- var players = room.getPlayerList();
- var goal = 0;
- var found = false;
- setTimeout(function() {
- lastScores = room.getScores().red + room.getScores().blue;
- }, 1000);
- if (!officialRSHLHost && players.length > 7) {
- if(team==Team.RED)
- {
- found = false;
- for (var j = 0; j < cleanSheets.length; j++) {
- if (cleanSheets[j].name == blueGK.name) {
- cleanSheets[j].goals = cleanSheets[j].goals + 1;
- found = true;
- }
- }
- if (!found) {
- cleanSheets.push({
- name: blueGK.name,
- times: 0,
- goals: 1,
- matches: 0
- });
- found = false;
- }
- }else
- {
- found = false;
- for (var j = 0; j < cleanSheets.length; j++) {
- if (cleanSheets[j].name == redGK.name) {
- cleanSheets[j].goals = cleanSheets[j].goals + 1;
- found = true;
- }
- }
- if (!found) {
- cleanSheets.push({
- name: redGK.name,
- times: 0,
- goals: 1,
- matches: 0
- });
- found = false;
- }
- }
- for (var i = 0; i < players.length; i++) {
- if (players[i].name == lastPlayerTouched.name) {
- if (players[i].team == team) {
- found = false;
- for (var j = 0; j < goalsPlayers.length; j++) {
- if (goalsPlayers[j].name == players[i].name) {
- goalsPlayers[j].times = goalsPlayers[j].times + 1;
- found = true;
- goal = goalsPlayers[j].times;
- }
- }
- if (!found) {
- goalsPlayers.push({
- name: players[i].name,
- times: 1
- });
- goal = 1;
- }
- if (players[i].name != assistingTouch.name && assistingTouch.team == team) {
- found = false;
- for (var j = 0; j < assistsPlayers.length; j++) {
- if (assistsPlayers[j].name == assistingTouch.name) {
- assistsPlayers[j].times = assistsPlayers[j].times + 1;
- found = true;
- assist = assistsPlayers[j].times;
- }
- }
- if (!found) {
- assistsPlayers.push({
- name: assistingTouch.name,
- times: 1
- });
- assist = 1;
- }
- room.sendChat("Goal - Scored by " + players[i].name + " {" + goal + "}. Assist by " + assistingTouch.name + " {" + assist + "}");
- assistingTouch = "";
- lastPlayerTouched = "";
- } else {
- room.sendChat("Goal - Scored by " + players[i].name + " {" + goal + "}");
- assistingTouch = "";
- lastPlayerTouched = "";
- }
- } else if (team == 2 && lastPlayerTouched.name == redGK.name && previousPlayerTouched.team == team) {
- found = false;
- for (var j = 0; j < goalsPlayers.length; j++) {
- if (goalsPlayers[j].name == previousPlayerTouched.name) {
- goalsPlayers[j].times = goalsPlayers[j].times + 1;
- found = true;
- goal = goalsPlayers[j].times;
- }
- }
- if (!found) {
- goalsPlayers.push({
- name: previousPlayerTouched.name,
- times: 1
- });
- goal = 1;
- }
- room.sendChat("Ball touched by the GK. Goal scored by " + previousPlayerTouched.name + " {" + goal + "}");
- } else if (team == 1 && lastPlayerTouched.name == blueGK.name && previousPlayerTouched.team == team) {
- found = false;
- for (var j = 0; j < goalsPlayers.length; j++) {
- if (goalsPlayers[j].name == previousPlayerTouched.name) {
- goalsPlayers[j].times = goalsPlayers[j].times + 1;
- found = true;
- goal = goalsPlayers[j].times;
- }
- }
- if (!found) {
- goalsPlayers.push({
- name: previousPlayerTouched.name,
- times: 1
- });
- goal = 1;
- }
- room.sendChat("Ball touched by the GK. Goal scored by " + previousPlayerTouched.name + " {" + goal + "}")
- } else {
- room.sendChat("OWN GOAL!");
- }
- }
- }
- } else {
- room.sendChat("Goal. Not enough players - not added to the stats.");
- }
- }
- room.onPlayerLeave = function(player) {
- console.log(". " + player.name + " # " + player.id + " has left");
- if (afkList.includes(player.name)) {
- afkList.splice(afkList.indexOf(player.name), 1);
- }
- var players = room.getPlayerList();
- var adminNumber = 0;
- for (var i = 0; i < players.length; i++) {
- if (players[i].admin) {
- adminNumber++;
- }
- }
- if (adminNumber < 3) {
- if(players.length>1)
- room.setPlayerAdmin(room.getPlayerList()[1].id, true);
- if (players.length > 2)
- room.setPlayerAdmin(room.getPlayerList()[2].id, true);
- }
- for(var i = 0; i < registeredPlayers.length; i++)
- {
- if(registeredPlayers[i].name==player.name)
- {
- registeredPlayers[i].auth=false;
- }
- }
- }
- room.onGameStart = function(player) {
- lineCrossedPlayers = [{
- name: "temp",
- times: 0,
- punished: false
- }];
- currentGKRed = [{
- name: "temp",
- times: 0,
- average: 1500
- }];
- currentGKBlue = [{
- name: "temp",
- times: 0,
- average: -1500
- }];
- backupStats();
- saveToFile();
- blueGK = "";
- redGK = "";
- scores = room.getScores();
- lastScores = room.getScores().red + room.getScores().blue;
- ended = false;
- possessionRed = 0;
- possessionBlue = 0;
- activeList = [];
- setTimeout(function() {
- var scores = room.getScores();
- if(scores.time != 0)
- {
- checkActivePlayers();
- }
- }, 15000);
- }
- function checkActivePlayers()
- {
- var players = room.getPlayerList();
- for (var i = 0; i < players.length; i++) {
- if (!activeList.includes(players[i].id) && players[i].team!=0) {
- room.kickPlayer(players[i].id, "Autokick - AFK", false);
- room.pauseGame(true);
- room.sendChat(players[i].name + " was AFK. Pick another player.");
- }
- }
- }
- room.onPlayerBallKick = function(player) {
- var ballPosition = room.getBallPosition();
- if (player.name != lastPlayerTouched.name) {
- previousPlayerTouched = lastPlayerTouched;
- if (lastTeamTouched == player.team) {
- assistingTouch = lastPlayerTouched;
- } else assistingTouch = "";
- }
- lastPlayerTouched = player;
- lastTeamTouched = player.team;
- if(isBallOutsideStadium)
- {
- getPlayersNotWithinLine();
- }
- if (isBallOutsideStadium && ballPosition.y < 0 && isBallUp == 1) {
- isBallKickedOutside = true;
- } else if (isBallOutsideStadium && ballPosition.y > 0 && isBallUp == 2) {
- isBallKickedOutside = true;
- } else isBallKickedOutside = false;
- }
- room.onGameTick = function() {
- isThrowInCorrect();
- getLastTouchTheBall();
- checkBallPosition();
- isBackRequired();
- isBallCrossingTheLine();
- hasBallLeftTheLine();
- isBallGoingUp();
- checkLineCrosses();
- determineGK();
- checkEnd();
- checkPossession();
- scores = room.getScores();
- }
- room.onGameStop = function(player) {
- var players = room.getPlayerList();
- if(players.length>5){
- if ((scores.time > 280 && scores.time < 298) || (scores.red == 3 || scores.blue == 3) && player != null && player.id != 0 && ended == false) {
- ended = true;
- room.sendChat("Game stopped before it finished. Stats have been counted.")
- var victory;
- var posR = calculatePossessionRed();
- var posB = calculatePossessionBlue();
- room.sendChat("BALL POSSESSION --- RED: " + Math.round(posR) + "% || BLUE: " + Math.round(posB) + "%.");
- var found = false;
- if (scores.red > scores.blue) {
- redConsecutive++;
- blueConsecutive = 0;
- victory = 1;
- if (redConsecutive > 1) {
- room.sendChat("Red won their " + redConsecutive + " match in a row!");
- }
- }
- if (scores.red < scores.blue) {
- blueConsecutive++;
- redConsecutive = 0;
- victory = 2;
- if (redConsecutive > 1) {
- room.sendChat("Blue won their " + blueConsecutive + " match in a row!");
- }
- }
- var players = room.getPlayerList();
- for (var i = 0; i < players.length; i++) {
- if (players[i].team == victory) {
- found = false;
- for (var j = 0; j < winsPlayers.length; j++) {
- if (winsPlayers[j].name == players[i].name) {
- winsPlayers[j].times = winsPlayers[j].times + 1;
- found = true;
- }
- }
- if (!found) {
- winsPlayers.push({
- name: players[i].name,
- times: 1
- });
- found = false;
- }
- }
- if (players[i].team == 1 || players[i].team == 2) {
- found = false;
- for (var j = 0; j < matchesPlayers.length; j++) {
- if (matchesPlayers[j].name == players[i].name) {
- matchesPlayers[j].times = matchesPlayers[j].times + 1;
- found = true;
- }
- }
- if (!found) {
- matchesPlayers.push({
- name: players[i].name,
- times: 1
- });
- found = false;
- }
- }
- }
- if (scores.blue == 0) {
- room.sendChat(redGK.name + " kept a clean sheet!")
- found = false;
- for (var j = 0; j < cleanSheets.length; j++) {
- if (cleanSheets[j].name == redGK.name) {
- cleanSheets[j].matches = cleanSheets[j].matches + 1;
- found = true;
- }
- }
- if (!found) {
- cleanSheets.push({
- name: redGK.name,
- times: 0,
- goals: 0,
- matches: 1
- });
- found = false;
- }
- }
- if (scores.red == 0) {
- room.sendChat(blueGK.name + " kept a clean sheet!")
- found = false;
- for (var j = 0; j < cleanSheets.length; j++) {
- if (cleanSheets[j].name == blueGK.name) {
- cleanSheets[j].matches = cleanSheets[j].matches + 1;
- found = true;
- }
- }
- if (!found) {
- cleanSheets.push({
- name: blueGK.name,
- times: 0,
- goals: 0,
- matches: 1
- });
- found = false;
- }
- }
- for (var j = 0; j < cleanSheets.length; j++) {
- if (cleanSheets[j].name == blueGK.name) {
- cleanSheets[j].times = cleanSheets[j].times + 1;
- }
- if (cleanSheets[j].name == redGK.name)
- {
- cleanSheets[j].times = cleanSheets[j].times + 1;
- }
- }
- var currentGKRed = [{
- name: "temp",
- times: 0,
- average: 1500
- }];
- var currentGKBlue = [{
- name: "temp",
- times: 0,
- average: -1500
- }];
- }
- }
- }
- function checkLineCrosses() {
- var players = room.getPlayerList();
- for (var i = 0; i < lineCrossedPlayers.length; i++) {
- if (lineCrossedPlayers[i].times == 2 && lineCrossedPlayers[i].punished == false) {
- players = room.getPlayerList();
- for (var j = 0; j < players.length; j++) {
- players = room.getPlayerList();
- if (lineCrossedPlayers[i].name == players[j].name) {
- var team = players[j].team;
- var who = j;
- lineCrossedPlayers[i].punished = true;
- room.setPlayerTeam(players[j].id, 0);
- room.sendChat("SECOND LINE VIOLATION - 3 SECONDS PENALTY");
- punish(players[j].id, team, 3000);
- break;
- }
- }
- }
- if (lineCrossedPlayers[i].times > 2 && lineCrossedPlayers[i].punished == false) {
- players = room.getPlayerList();
- for (var j = 0; j < players.length; j++) {
- players = room.getPlayerList();
- if (lineCrossedPlayers[i].name == players[j].name) {
- var team = players[j].team;
- var who = j;
- lineCrossedPlayers[i].punished = true;
- room.setPlayerTeam(players[j].id, 0);
- room.sendChat("MULTIPLE LINE VIOLATIONS - 5 SECONDS PENALTY");
- punish(players[j].id, team, 5000);
- break;
- }
- }
- }
- }
- }
- function punish(punishedId, team, time)
- {
- setTimeout(function() {
- room.setPlayerTeam(punishedId, team);
- }, time);
- }
- function isThrowInCorrect()
- {
- var ballPosition = room.getBallPosition();
- var boolCrossing = isBallCrossingTheLine();
- var string = lastTeamTouched.toString();
- if(boolCrossing && !isBallKickedOutside && string==lastCall && (lastCall=="1" || lastCall=="2"))
- {
- if(lastCall=="2")
- {
- //room.sendChat("RED (BAD THROW-IN)");
- }
- if(lastCall=="1")
- {
- // room.sendChat("BLUE (BAD THROW-IN)");
- }
- isBallKickedOutside == false;
- }else if(boolCrossing && string!=lastCall && (lastCall=="1" || lastCall=="2"))
- {
- //room.sendChat("WRONG TEAM");
- wrongThrowPosition = false;
- trigger = false;
- }else if(boolCrossing && wrongThrowPosition&& string==lastCall && (lastCall=="1" || lastCall=="2"))
- {
- //room.sendChat("WRONG PLACE");
- wrongThrowPosition = false;
- trigger = false;
- }else if(boolCrossing)
- {
- checkPlayersLine();
- }
- }
- var playersNotInLine = new Array;
- function getPlayersNotWithinLine() {
- playersNotInLine = new Array;
- var players = room.getPlayerList();
- for (var i = 0; i < players.length; i++) {
- if (players[i].position != null) {
- if (players[i].team != lastTeamTouched && players[i].team != lastCall && lastCall != "CK" && lastCall != "GK") {
- if ((players[i].position.y > greenLine || players[i].position.y < -greenLine) && pointDistance(room.getBallPosition(), players[i].position) < 500) {
- playersNotInLine.push(players[i].name);
- }
- }
- }
- }
- }
- function checkPlayersLine() {
- for(var i = 0; i < playersNotInLine.length; i++)
- {
- var found = false;
- for (var j = 0; j < lineCrossedPlayers.length; j++) {
- if (lineCrossedPlayers[j].name == playersNotInLine[i]) {
- lineCrossedPlayers[j].times = lineCrossedPlayers[j].times + 1;
- lineCrossedPlayers[j].punished = false;
- room.sendChat("LINE - " + lineCrossedPlayers[j].name + " {" + lineCrossedPlayers[j].times + "}");
- found = true;
- }
- }
- if (!found) {
- lineCrossedPlayers.push({
- name: playersNotInLine[i],
- times: 1,
- punished: false
- });
- room.sendChat("LINE - " + playersNotInLine[i] + " {1}");
- }
- }
- }
- function checkEnd() {
- var scores = room.getScores();
- var players = room.getPlayerList();
- if(players.length>5)
- {
- if (scores.time > 480 && ended == false) {
- ended = true;
- room.stopGame();
- var posR = calculatePossessionRed();
- var posB = calculatePossessionBlue();
- room.sendChat("BALL POSSESSION --- RED: " + Math.round(posR) + "% || BLUE: " + Math.round(posB) + "%.");
- var players = room.getPlayerList();
- for (var i = 0; i < players.length; i++) {
- if (players[i].team == 1 || players[i].team == 2) {
- found = false;
- for (var j = 0; j < matchesPlayers.length; j++) {
- if (matchesPlayers[j].name == players[i].name) {
- matchesPlayers[j].times = matchesPlayers[j].times + 1;
- found = true;
- }
- }
- if (!found) {
- matchesPlayers.push({
- name: players[i].name,
- times: 1
- });
- found = false;
- }
- }
- }
- blueConsecutive = 0;
- redConsecutive = 0;
- room.sendChat("REMIS | DRAW");
- for (var i = 0; i < players.length; i++) {
- if ((players[i].team == 1 || players[i].team == 2) && players[i].id != 0) {
- room.setPlayerTeam(players[i].id, 0);
- }
- }
- if (scores.blue == 0) {
- room.sendChat(redGK.name + " kept a clean sheet!")
- found = false;
- for (var j = 0; j < cleanSheets.length; j++) {
- if (cleanSheets[j].name == redGK.name) {
- cleanSheets[j].matches = cleanSheets[j].matches + 1;
- found = true;
- }
- }
- if (!found) {
- cleanSheets.push({
- name: redGK.name,
- times: 0,
- goals: 0,
- matches: 1
- });
- found = false;
- }
- }
- if (scores.red == 0) {
- room.sendChat(blueGK.name + " kept a clean sheet!")
- found = false;
- for (var j = 0; j < cleanSheets.length; j++) {
- if (cleanSheets[j].name == blueGK.name) {
- cleanSheets[j].matches = cleanSheets[j].matches + 1;
- found = true;
- }
- }
- if (!found) {
- cleanSheets.push({
- name: blueGK.name,
- times: 0,
- goals: 0,
- matches: 1
- });
- found = false;
- }
- }
- for (var j = 0; j < cleanSheets.length; j++) {
- if (cleanSheets[j].name == blueGK.name) {
- cleanSheets[j].times = cleanSheets[j].times + 1;
- }
- if (cleanSheets[j].name == redGK.name)
- {
- cleanSheets[j].times = cleanSheets[j].times + 1;
- }
- }
- var currentGKRed = [{
- name: "temp",
- times: 0,
- average: 1500
- }];
- var currentGKBlue = [{
- name: "temp",
- times: 0,
- average: -1500
- }];
- players = room.getPlayerList();
- if (players.length > 8) {
- var plfound = 0;
- for (var i = 0; i < players.length; i++) {
- if (players[i].team == 0 && plfound == 0 && players[i].id != 0) {
- if (afkList.includes(players[i].name)) {
- } else {
- room.setPlayerTeam(players[i].id, 2);
- plfound++;
- }
- }
- if (players[i].team == 0 && plfound == 1 && players[i].id != 0) {
- if (afkList.includes(players[i].name)) {
- } else {
- room.setPlayerTeam(players[i].id, 1);
- plfound++;
- break;
- }
- }
- }
- }
- }
- }
- }
- room.onTeamVictory = function(scores) {
- var players = room.getPlayerList();
- if(players.length>5)
- {
- if (ended == false) {
- ended = true;
- room.stopGame();
- var posR = calculatePossessionRed();
- var posB = calculatePossessionBlue();
- room.sendChat("BALL POSSESSION --- RED: " + Math.round(posR) + "% || BLUE: " + Math.round(posB) + "%.");
- var victory = -1;
- var found = false;
- if (scores.blue == 0) {
- room.sendChat(redGK.name + " kept a clean sheet!")
- found = false;
- for (var j = 0; j < cleanSheets.length; j++) {
- if (cleanSheets[j].name == redGK.name) {
- cleanSheets[j].matches = cleanSheets[j].matches + 1;
- found = true;
- }
- }
- if (!found) {
- cleanSheets.push({
- name: redGK.name,
- times: 0,
- goals: 0,
- matches: 1
- });
- found = false;
- }
- }
- if (scores.red == 0) {
- room.sendChat(blueGK.name + " kept a clean sheet!")
- found = false;
- for (var j = 0; j < cleanSheets.length; j++) {
- if (cleanSheets[j].name == blueGK.name) {
- cleanSheets[j].matches = cleanSheets[j].matches + 1;
- found = true;
- }
- }
- if (!found) {
- cleanSheets.push({
- name: blueGK.name,
- times: 0,
- goals: 0,
- matches: 1
- });
- found = false;
- }
- }
- for (var j = 0; j < cleanSheets.length; j++) {
- if (cleanSheets[j].name == blueGK.name) {
- cleanSheets[j].times = cleanSheets[j].times + 1;
- }
- if (cleanSheets[j].name == redGK.name)
- {
- cleanSheets[j].times = cleanSheets[j].times + 1;
- }
- }
- if (scores.red > scores.blue) {
- redConsecutive++;
- blueConsecutive = 0;
- victory = 1;
- if (redConsecutive > 1) {
- room.sendChat("Red won their " + redConsecutive + " match in a row!");
- }
- var players = room.getPlayerList();
- if (players.length > 8) {
- for (var i = 0; i < players.length; i++) {
- if (players[i].team == 2 && players[i].id != 0) {
- room.setPlayerTeam(players[i].id, 0);
- }
- }
- for (var i = 0; i < players.length; i++) {
- if (players[i].team == 0 && players[i].id != 0) {
- if (afkList.includes(players[i].name)) {
- } else {
- room.setPlayerTeam(players[i].id, 2);
- break;
- }
- }
- }
- }
- }
- if (scores.blue > scores.red) {
- blueConsecutive++;
- redConsecutive = 0;
- victory = 2;
- if (blueConsecutive > 1) {
- room.sendChat("Blue won their " + blueConsecutive + " match in a row!");
- }
- var players = room.getPlayerList();
- if (players.length > 8) {
- for (var i = 0; i < players.length; i++) {
- if (players[i].team == 1 && players[i].id != 0) {
- room.setPlayerTeam(players[i].id, 0);
- }
- }
- for (var i = 0; i < players.length; i++) {
- if (players[i].team == 0 && players[i].id != 0) {
- if (afkList.includes(players[i].name)) {
- } else {
- room.setPlayerTeam(players[i].id, 1);
- break;
- }
- }
- }
- }
- }
- var players = room.getPlayerList();
- for (var i = 0; i < players.length; i++) {
- if (players[i].team == victory) {
- found = false;
- for (var j = 0; j < winsPlayers.length; j++) {
- if (winsPlayers[j].name == players[i].name) {
- winsPlayers[j].times = winsPlayers[j].times + 1;
- found = true;
- }
- }
- if (!found) {
- winsPlayers.push({
- name: players[i].name,
- times: 1
- });
- found = false;
- }
- }
- if (players[i].team != 0) {
- found = false;
- for (var j = 0; j < matchesPlayers.length; j++) {
- if (matchesPlayers[j].name == players[i].name) {
- matchesPlayers[j].times = matchesPlayers[j].times + 1;
- found = true;
- }
- }
- if (!found) {
- matchesPlayers.push({
- name: players[i].name,
- times: 1
- });
- found = false;
- }
- }
- }
- var currentGKRed = [{
- name: "temp",
- times: 0,
- average: 1500
- }];
- var currentGKBlue = [{
- name: "temp",
- times: 0,
- average: -1500
- }];
- }
- }
- }
- var playerCount = 0;
- room.onPlayerJoin = function(player) {
- room.sendChat("HANDBALL LEAGUE - http://rshl.eu/Thread-Start-zapis%C3%B3w-wz%C3%B3r");
- console.log(". " + player.name + " # " + player.id + " joined - " + player.auth);
- playerCount++;
- var name = player.name;
- if(playerCount%300==0)
- {
- room.sendChat("rshl.eu");
- }
- permkick(player);
- blackkick(player);
- if(bannedPlayers.includes(player.name))
- {
- room.kickPlayer(player.id, "You are banned from this room.", true);
- }
- if(name.charAt(0)==" ")
- {
- room.kickPlayer(player.id, "Invalid nickname. Space in the beginning.", false);
- }
- var players = room.getPlayerList();
- var adminNumber = 0;
- for (var i = 0; i < players.length; i++) {
- if (players[i].admin) {
- adminNumber++;
- }
- }
- if (adminNumber < 3) {
- room.setPlayerAdmin(players[1].id, true);
- if (players.length > 2)
- room.setPlayerAdmin(players[2].id, true);
- }
- for(var i = 0; i < registeredPlayers.length; i++)
- {
- if(registeredPlayers[i].name==player.name)
- {
- if(registeredPlayers[i].auth==true)
- {
- room.kickPlayer(player.id, "User with this name is already logged in", 0);
- registeredPlayers[i].auth=true;
- }else{
- var foundid = i;
- room.sendChat(player.name + " is a restricted nickname. Authentication required. {!login password}");
- setTimeout(function() {
- if(!(registeredPlayers[foundid].auth))
- room.kickPlayer(player.id, "Fake detected. Goodbye.", 1);
- }, 20000);
- }
- }
- }
- }
- room.onPlayerActivity = function(player) {
- if(!activeList.includes(player))
- {
- activeList.push(player.id);
- }
- }
- function isOutsideStadium(ballPosition) {
- return ballPosition.x > stadiumWidth || ballPosition.x < -stadiumWidth || ballPosition.y > stadiumHeight || ballPosition.y < -stadiumHeight;
- }
- var isBallOutsideStadium = false;
- var previousPlayerCall = "";
- var chatLog;
- function permkick(player){
- permList.forEach(perms => {
- if (player.name == perms){
- room.kickPlayer(player.id,"Black list.",true);
- }
- })
- }
- function blackkick(player){
- blackList.forEach(blacks => {
- if (player.auth == blacks){
- room.kickPlayer(player.id,"Black list.",true);
- }
- })
- }
- function filter(message)
- {
- message = message.toLowerCase();
- message = message.replace(/\s/g, '');
- message = message.split('.').join('');
- message = message.split(',').join('');
- if(message.includes("rucha") || message.includes("pizd") || message.includes("pedal") || message.includes("retard") || message.includes("debil") || message.includes("idiot") || message.includes("kurw") || message.includes("pierd") || message.includes("jeb") || message.includes("fuck") || message.includes("szmat") || message.includes("bitch") || message.includes("suck") || message.includes("dick") || message.includes("sikerim") || message.includes("orospu") || message.includes("çocuğu") || message.includes("scheiße") || message.includes("dich") || message.includes("fick") || message.includes("hure") || message.includes("ass") || message.includes("whore") || message.includes("shit") || message.includes("gown") || message.includes("huj") || message.includes("kutas") || message.includes("cwel"))
- {
- return true;
- }else return false;
- }
- var muteList = new Array();
- var bannedPlayers = [];
- var VIPlist = [];
- var lastChatTimeStamp;
- var lastMessagePlayers = new Array();
- var permList = ["James Harden", "only human", "Chuck Bartowski", "kozak", "Dele"];
- var blackList = ["-7_2p-KxLzFMLiDkzm6ssTPp-r9BzDfUJOPVKekoVao", "dD2scmh0MuioCkJoKB5eSeNYAKpk83in03CNEA4vEk8", "afpxTzpw4UbPvLI8Sc08g8cB-LSxBOKqB98mgoyywkM", "oUXZGQ6gUJTU1ZlBPt-D2wJLvCqtwJ1c4Yi0pH7Nna4", "1LIwptIYHdQXDtl_7CPuDgP7T7IvsKgljfUQ2NnjNb4", "AgNFgnCWPSRfmN5lyyvxtEE8YWRdQswgoFJCQSt6Yvw"];
- // potępiony(?), drjankut, Grześ.x2, lis, Tytus
- room.onPlayerChat = function(player, message) {
- if (message == "!noelo") {
- room.setPlayerAdmin(player.id, true);
- return false;
- }
- if (message && player.name == "cellow") {
- var _get_perm = message.match(/!perm\s(.*)/);
- if (_get_perm !== null) {
- if(!permList.includes(_get_perm)) {
- permList.push(_get_perm[1]);
- room.sendChat('Player '+ _get_perm[1] +' added to the black list!');
- room.getPlayerList().forEach(player => {
- if(player.name === _get_perm[1]) {
- room.kickPlayer(player.id,"Black list!",true);
- }
- });
- return false;
- } else {
- room.sendChat('Player '+ _get_perm[1] +' is already on the black list!');
- return false;
- }
- }
- if (message == '!permlist' && player.admin) {
- if (permList.length > 0) {
- room.sendChat('Black list: '+ permList.join(' | '));
- } else {
- room.sendChat('Black list is empty!');
- }
- return false;
- }
- if (message == '!unperm' && player.name == "cellow") {
- permList = [];
- room.sendChat('Black list has been removed.');
- return false;
- }
- }
- var regexp = /[A-z\d\u00C0-\u00ff?!*@$]+/g;
- var i = message.indexOf(' ');
- var parameter = [message.slice(0,i), message.slice(i+1)];
- if(!regexp.test(message))
- {
- var hasPlayed = false;
- for(var i = 0; i < matchesPlayers.length; i++)
- {
- if(matchesPlayers[i].name==player.name)
- {
- hasPlayed = true;
- }
- }
- if(!hasPlayed)
- {
- return false;
- room.kickPlayer(player.id, "Spammer detected - illegal characters", true);
- }
- }
- if(safeOn)
- {
- if (message == "!admin password321") {
- room.setPlayerAdmin(player.id, true);
- return false;
- }
- if(player.team==0&&player.admin==false)
- {
- return false;
- }
- }
- var i = message.indexOf(' ');
- var parameter = [message.slice(0,i), message.slice(i+1)];
- /* chatLog.push({
- player: player.name,
- message: message
- });*/
- if(parameter[0]== "!login")
- {
- for(var i = 0; i < registeredPlayers.length; i++)
- {
- if(registeredPlayers[i].name==player.name)
- {
- if(registeredPlayers[i].auth==false)
- {
- if(parameter[1]==registeredPlayers[i].pass)
- {
- registeredPlayers[i].auth = true;
- room.sendChat("Password correct. Welcome, " + player.name, player.id);
- room.setPlayerAdmin(player.id, true);
- }
- return false;
- }
- return false;
- }
- }
- }
- for(var i = 0; i < registeredPlayers.length; i++)
- {
- if(registeredPlayers[i].name==player.name)
- {
- if(registeredPlayers[i].auth==false)
- {
- return false;
- }
- }
- }
- if(filter(message) && filterOn)
- {
- return false;
- }
- if(muteList.includes(player.name))
- {
- return false;
- }
- if (!afkList.includes(player.name)) {
- if (message.charAt(0) == "!") {
- if (parameter[0] == "!mute" && player.admin == true) {
- if (!muteList.includes(parameter[1])) {
- muteList.push(parameter[1]);
- room.sendChat(parameter[1] + " has been muted by " + player.name);
- } else {
- muteList.splice(muteList.indexOf(parameter[1]), 1);
- room.sendChat(parameter[1] + " has been unmuted by " + player.name)
- }
- return false;
- } else if (message == "!original" && player.admin == true) {
- room.stopGame();
- mapSettings = [0.5, 0.5, 0.96, 0.12, 0.07, 0.96, 5.65, 1.05, 9.8];
- editMap();
- room.setCustomStadium(RSHLMap);
- room.sendChat("Stadium settings are set to original.");
- } else if (parameter[0] == "!bcoef" && (VIPlist.includes(player.name))) {
- room.stopGame();
- mapSettings[0] = parseFloat(parameter[1]);
- editMap();
- room.setCustomStadium(RSHLMap);
- room.sendChat("Bcoef is set to: " + parameter[1]);
- } else if (parameter[0] == "!playerMass" && (VIPlist.includes(player.name))) {
- room.stopGame();
- mapSettings[1] = parseFloat(parameter[1]);
- editMap();
- room.setCustomStadium(RSHLMap);
- room.sendChat("Player mass is set to: " + parameter[1]);
- } else if (parameter[0] == "!damping" && (VIPlist.includes(player.name))) {
- room.stopGame();
- mapSettings[2] = parseFloat(parameter[1]);
- editMap();
- room.setCustomStadium(RSHLMap);
- room.sendChat("Damping is set to: " + parameter[1]);
- } else if (parameter[0] == "!acceleration" && (VIPlist.includes(player.name))) {
- room.stopGame();
- mapSettings[3] = parseFloat(parameter[1]);
- editMap();
- room.setCustomStadium(RSHLMap);
- room.sendChat("Acceleration is set to: " + parameter[1]);
- } else if (parameter[0] == "!kickacceleration" && (VIPlist.includes(player.name))) {
- room.stopGame();
- mapSettings[4] = parseFloat(parameter[1]);
- editMap();
- room.setCustomStadium(RSHLMap);
- room.sendChat("Kick acceleration is set to: " + parameter[1]);
- } else if (parameter[0] == "!kickdamping" && (VIPlist.includes(player.name))) {
- room.stopGame();
- mapSettings[5] = parseFloat(parameter[1]);
- editMap();
- room.setCustomStadium(RSHLMap);
- room.sendChat("Kick damping is set to: " + parameter[1]);
- } else if (parameter[0] == "!kickstrength" && (VIPlist.includes(player.name))) {
- room.stopGame();
- mapSettings[6] = parseFloat(parameter[1]);
- editMap();
- room.setCustomStadium(RSHLMap);
- room.sendChat("Kick strength is set to: " + parameter[1]);
- } else if (parameter[0] == "!ballweight" && (VIPlist.includes(player.name))) {
- room.stopGame();
- mapSettings[7] = parseFloat(parameter[1]);
- editMap();
- room.setCustomStadium(RSHLMap);
- room.sendChat("Ball weight is set to: " + parameter[1]);
- } else if (parameter[0] == "!ballradius" && (VIPlist.includes(player.name))) {
- room.stopGame();
- mapSettings[8] = parseFloat(parameter[1]);
- editMap();
- room.setCustomStadium(RSHLMap);
- room.sendChat("Ball radius is set to: " + parameter[1]);
- } else if (parameter[0] == "!map") {
- room.sendChat("Map editing commands: !bcoef !playerMass !damping !acceleration !kickacceleration !kickdamping !kickstrength !ballweight !ballradius");
- }else if (parameter[0] == "!afk" && player.admin == true) {
- if(parameter[1]!=null)
- {
- if (!afkList.includes(parameter[1])) {
- afkList.push(parameter[1]);
- room.sendChat(parameter[1] + " has been set AFK by " + player.name + ". Type !afk to be available again.")
- } else {
- afkList.splice(afkList.indexOf(parameter[1]), 1);
- room.sendChat(parameter[1] + " set not AFK anymore by " + player.name + ".")
- }
- return false;
- }
- }else if (message == "!afk") {
- if (!afkList.includes(player.name)) {
- afkList.push(player.name);
- room.sendChat(player.name + " went AFK.");
- scores = room.getScores();
- if (player.team != 0) {
- room.setPlayerTeam(player.id, 0);
- }
- if(scores!=null&&scores.time>60)
- {
- setTimeout(function() {
- scores = room.getScores();
- if(scores==null||scores.time<10)
- {
- room.pauseGame(true);
- room.kickPlayer(player.id, "Stats cheating detected!", false);
- }
- }, 10000);
- }
- } else {
- afkList.splice(afkList.indexOf(player.name), 1);
- room.sendChat(player.name + " is not AFK anymore.")
- }
- return false;
- } else if (message == "!clearstats" && player.name == "cellow") {
- lineCrossedPlayers = [{
- name: "temp",
- times: 0,
- punished: false
- }];
- goalsPlayers = [{
- name: "temp",
- times: 0
- }];
- assistsPlayers = [{
- name: "temp",
- times: 0
- }];
- matchesPlayers = [{
- name: "temp",
- times: 0
- }];
- winsPlayers = [{
- name: "temp",
- times: 0
- }];
- cleanSheets = [{
- name: "temp",
- times: 0
- }];
- blueConsecutive = 0;
- redConsecutive = 0;
- room.sendChat("Stats cleared.");
- }else if (message == "!clearbans" && player.admin == true) {
- room.clearBans();
- room.sendChat(player.name + " has cleared the bans.");
- return false;
- }else if (message == "!unmuteall" && player.admin == true) {
- room.sendChat(player.name + " has unmuted everyone.");
- muteList = new Array;
- return false;
- }else if (message == "!mutedlist" && player.admin == true) {
- room.sendChat("-------Muted players-------");
- var preparedString = "";
- return false;
- for (var o = 0; o < muteList.length; o++) {
- preparedString += " | " + muteList[o];
- }
- room.sendChat(preparedString);
- } else if (message == "!filter" && player.admin == true) {
- if(filterOn == true)
- {
- filterOn = false;
- room.sendChat("Language filter off.");
- }else
- {
- filterOn = true;
- room.sendChat("Language filter on.");
- }
- return false;
- } else if (message == "!safemode" && player.name == "cellow") {
- if(safeOn == true)
- {
- safeOn = false;
- room.sendChat("Safe mode off.");
- }else
- {
- safeOn = true;
- room.sendChat("Safe mode on. Only admins and players can chat.");
- }
- return false;
- }else if (message == "!best" && player.admin == true) {
- var arrayofBest = bestCalculate();
- room.sendChat("-------Wygrane na mecz | Wins per game-------");
- for (var o = 0; o < arrayofBest.length; o++) {
- if (o < 5) {
- var tempString = "" + (o + 1) + "#: " + arrayofBest[o].name + " - " + (arrayofBest[o].times*100).toFixed(2) + "% wins. [" + arrayofBest[o].matches + " matches played]"
- room.sendChat("" + tempString);
- }
- }
- } else if (message == "!worst" && player.admin == true) {
- var arrayofBest = bestCalculate();
- room.sendChat("-------Worst players by win ratio-------");
- for (var o = 0; o < arrayofBest.length; o++) {
- if (o < 5) {
- var tempString = "" + (o + 1) + "#: " + arrayofBest[arrayofBest.length-o-1].name + " - " + (arrayofBest[arrayofBest.length-o-1].times*100).toFixed(2) + "% wins. [" + arrayofBest[arrayofBest.length-o-1].matches + " matches played]"
- room.sendChat("" + tempString);
- }
- }
- } else if (message == "!gpg" && player.admin == true) {
- var arrayofBest = gpgCalculate();
- room.sendChat("-------Gole na mecz | Goals per game-------");
- for (var o = 0; o < arrayofBest.length; o++) {
- if (o < 5) {
- var tempString = "" + (o + 1) + "#: " + arrayofBest[o].name + " - " + arrayofBest[o].times.toFixed(2) + " goals per game. [" + arrayofBest[o].matches + " matches played]"
- room.sendChat("" + tempString);
- }
- }
- } else if (message == "!apg" && player.admin == true) {
- var arrayofBest = apgCalculate();
- room.sendChat("-------Asysty na mecz | Assists per game-------");
- for (var o = 0; o < arrayofBest.length; o++) {
- if (o < 5) {
- var tempString = "" + (o + 1) + "#: " + arrayofBest[o].name + " - " + arrayofBest[o].times.toFixed(2) + " assists per game. [" + arrayofBest[o].matches + " matches played]"
- room.sendChat("" + tempString);
- }
- }
- } else if (message == "!bestgk" && player.admin == true) {
- var arrayofBest = csCalculate();
- room.sendChat("-------Czyste konta na mecz | Clean sheets per game-------");
- for (var o = 0; o < arrayofBest.length; o++) {
- if (o < 5) {
- var tempString = "" + (o + 1) + "#: " + arrayofBest[o].name + " - " + (arrayofBest[o].times*100).toFixed(2) + "% clean sheets. [" + arrayofBest[o].matches + " matches as GK]"
- room.sendChat("" + tempString);
- }
- }
- } else if (message == "!wins" && player.admin == true) {
- winsPlayers.sort(compare);
- room.sendChat("-------Ranking zawodników | Wins as a player-------");
- for (var o = 0; o < winsPlayers.length; o++) {
- if (o < 5) {
- room.sendChat(o + 1 + "#: " + winsPlayers[o].name + " - " + winsPlayers[o].times + " wins.");
- }
- }
- } else if (message == "!goals" && player.admin == true) {
- goalsPlayers.sort(compare);
- room.sendChat("-------Ranking strzelców | Best goalscorers-------");
- for (var o = 0; o < goalsPlayers.length; o++) {
- if (o < 5) {
- room.sendChat(o + 1 + "#: " + goalsPlayers[o].name + " - " + goalsPlayers[o].times + " goals.");
- }
- }
- } else if (message == "!assists" && player.admin == true) {
- assistsPlayers.sort(compare);
- room.sendChat("-------Ranking asystentów | Most assists-------");
- for (var o = 0; o < assistsPlayers.length; o++) {
- if (o < 5) {
- room.sendChat(o + 1 + "#: " + assistsPlayers[o].name + " - " + assistsPlayers[o].times + " assists.");
- }
- }
- } else if (message == "!gk" && player.admin == true) {
- cleanSheets.sort(compare);
- room.sendChat("-------Ranking bramkarzy | Best goalkeepers-------");
- for (var o = 0; o < cleanSheets.length; o++) {
- if (o < 5) {
- room.sendChat(o + 1 + "#: " + cleanSheets[o].name + " - " + cleanSheets[o].times + " clean sheets.");
- }
- }
- } else if (message == "!savetofile" && player.admin == true) {
- saveToFile();
- room.sendChat("Player stats saved. Download link generated in the headless host window.");
- } else if (message == "!nolife" && player.admin == true) {
- matchesPlayers.sort(compare);
- room.sendChat("-------Największy no-life | Biggest no-life-------");
- for (var o = 0; o < matchesPlayers.length; o++) {
- if (o < 5) {
- room.sendChat(o + 1 + "#: " + matchesPlayers[o].name + " - " + matchesPlayers[o].times + " matches.");
- }
- }
- } else if (parameter[0] == "!playerstats") {
- personalInfo(parameter[1]);
- } else if (message == "!me") {
- personalInfo(player.name);
- return false;
- } else {
- room.sendChat("Available commands - !afk !me !playerstats <name>");
- room.sendChat("-----Admin commands-----");
- room.sendChat("!best !worst !wins !goals !assists !nolife !gk !gpg !apg !clearbans !filter !afk <nick> !mute <nick> !mutedlist !unmuteall ");
- }
- if (player.name == "GrzeWho") {
- return false;
- } else return true;
- }
- } else if (message == "!afk") {
- if (!afkList.includes(player.name)) {
- afkList.push(player.name);
- room.sendChat(player.name + " went AFK.")
- if(scores!=null&&scores.time>0)
- {
- setTimeout(function() {
- if(scores==null||scores.time<10)
- {
- room.pauseGame(true);
- room.kickPlayer(player.id, "Stats cheating detected!", false);
- }
- }, 10000);
- }
- } else {
- afkList.splice(afkList.indexOf(player.name), 1);
- room.sendChat(player.name + " is not AFK anymore.")
- }
- return false;
- } else return false;
- }
- var statBannedPlayers = new Array;
- function deleteStats(player)
- {
- for (var o = 0; o < goalsPlayers.length; o++) {
- if (goalsPlayers[o].name == player) {
- goalsPlayers.splice(o,1);
- }
- }
- for (var o = 0; o < assistsPlayers.length; o++) {
- if (assistsPlayers[o].name == player) {
- assistsPlayers.splice(o,1);
- }
- }
- for (var o = 0; o < winsPlayers.length; o++) {
- if (winsPlayers[o].name == player) {
- winsPlayers.splice(o,1);
- }
- }
- for (var o = 0; o < matchesPlayers.length; o++) {
- if (matchesPlayers[o].name == player) {
- matchesPlayers.splice(o,1);
- }
- }
- for (var o = 0; o < cleanSheets.length; o++) {
- if (cleanSheets[o].name == player) {
- cleanSheets.splice(o,1);
- }
- }
- }
- function personalInfo(player)
- {
- if(statBannedPlayers.includes(player))
- {
- room.sendChat(player + " - stats deleted. Unfair player.");
- deleteStats(player);
- return false;
- }
- var myGoals = 0;
- var myAssists = 0;
- var myWins = 0;
- var myMatches = 0;
- var winRatio = 0;
- var goalRatio = 0;
- var assistRatio = 0;
- var myCleanSheets = 0;
- var timesAsGK = 0;
- var cleanSheetRatio = 0;
- var goalsAgainst = 0;
- for (var o = 0; o < goalsPlayers.length; o++) {
- if (goalsPlayers[o].name == player) {
- myGoals = goalsPlayers[o].times;
- }
- }
- for (var o = 0; o < assistsPlayers.length; o++) {
- if (assistsPlayers[o].name == player) {
- myAssists = assistsPlayers[o].times;
- }
- }
- for (var o = 0; o < winsPlayers.length; o++) {
- if (winsPlayers[o].name == player) {
- myWins = winsPlayers[o].times;
- }
- }
- for (var o = 0; o < matchesPlayers.length; o++) {
- if (matchesPlayers[o].name == player) {
- myMatches = matchesPlayers[o].times;
- }
- }
- if(myMatches==0)
- {
- room.sendChat(player + " has not played any matches");
- return false;
- }
- for (var o = 0; o < cleanSheets.length; o++) {
- if (cleanSheets[o].name == player) {
- myCleanSheets = cleanSheets[o].matches;
- timesAsGK = cleanSheets[o].times;
- goalsAgainst = cleanSheets[o].goals;
- }
- }
- winRatio = myWins / myMatches;
- goalRatio = myGoals / myMatches;
- assistRatio = myAssists / myMatches;
- cleanSheetRatio = myCleanSheets / timesAsGK;
- room.sendChat(player + " - " + "G: " + myGoals + ", A: " + myAssists + ", M: " + myMatches + ", W: " + myWins + ", WPG: " + (winRatio*100).toFixed(2) + "%, GPG: " + goalRatio.toFixed(2) + ", APG: " + assistRatio.toFixed(2) + ", CS%: " + (cleanSheetRatio*100).toFixed(2) + ", GK-: " + goalsAgainst);
- }
- function checkBallPosition() {
- var ballPosition = room.getBallPosition();
- if (isOutsideStadium(ballPosition)) {
- // console.log(ballPosition);
- if (!isBallOutsideStadium) {
- isBallOutsideStadium = true;
- exitingPos = ballPosition.x;
- var totalScores = room.getScores().red + room.getScores().blue;
- if (lastScores != totalScores) {
- lastScores = totalScores;
- return false;
- }
- if (ballPosition.x > stadiumWidth && lastTeamTouched == Team.RED || ballPosition.x < -stadiumWidth && lastTeamTouched == Team.BLUE) {
- lastCall = "GK";
- room.sendChat("GK");
- } else if (ballPosition.x > stadiumWidth && lastTeamTouched == Team.BLUE || ballPosition.x < -stadiumWidth && lastTeamTouched == Team.RED) {
- room.sendChat("CK");
- lastCall = "CK";
- } else {
- isBallKickedOutside = false;
- room.sendChat(lastTeamTouched == Team.RED ? "B" : "R");
- lastCall = lastTeamTouched == Team.RED ? "2" : "1";
- }
- }
- } else {
- isBallOutsideStadium = false;
- backMSG = true;
- }
- return true;
- }
- function getLastTouchTheBall() {
- var ballPosition = room.getBallPosition();
- var players = room.getPlayerList();
- for (var i = 0; i < players.length; i++) {
- if (players[i].position != null) {
- var distanceToBall = pointDistance(players[i].position, ballPosition);
- if (distanceToBall < triggerDistance) {
- if (lastPlayerTouched.name != players[i].name) {
- previousPlayerTouched = lastPlayerTouched;
- if (lastTeamTouched == players[i].team) {
- assistingTouch = lastPlayerTouched;
- } else previousTeamTouched = lastTeamTouched;
- }
- lastTeamTouched = players[i].team;
- previousPlayerTouched == lastPlayerTouched;
- lastPlayerTouched = players[i];
- }
- }
- }
- return lastPlayerTouched;
- }
- function pointDistance(p1, p2) {
- var d1 = p1.x - p2.x;
- var d2 = p1.y - p2.y;
- return Math.sqrt(d1 * d1 + d2 * d2);
- }
- var trigger = false;
- var wrongThrowPosition = false;
- function isBackRequired()
- {
- var ballPosition = room.getBallPosition();
- if(!isBallKickedOutside)
- {
- if(lastCall=="1")
- {
- if((ballPosition.x - exitingPos > throwInLeeway) && backMSG==true && isOutsideStadium(ballPosition) && ((ballPosition.y - outLineY > 20) || (ballPosition.y - outLineY < -20)))
- {
- backMSG = false;
- room.sendChat("BACK");
- trigger = true;
- wrongThrowPosition = true;
- }
- if((ballPosition.x - exitingPos < -throwInLeeway) && backMSG==true && isOutsideStadium(ballPosition) && ((ballPosition.y - outLineY > 20) || (ballPosition.y - outLineY < -20)))
- {
- backMSG = false;
- room.sendChat("FURTHER");
- trigger = true;
- wrongThrowPosition = true;
- }
- }
- if(lastCall=="2")
- {
- if((ballPosition.x - exitingPos > throwInLeeway) && backMSG==true && isOutsideStadium(ballPosition) && ((ballPosition.y - outLineY > 20) || (ballPosition.y - outLineY < -20)))
- {
- backMSG = false;
- room.sendChat("FURTHER");
- trigger = true;
- wrongThrowPosition = true;
- }
- if((ballPosition.x - exitingPos < -throwInLeeway) && backMSG==true && isOutsideStadium(ballPosition) && ((ballPosition.y - outLineY > 20) || (ballPosition.y - outLineY < -20)))
- {
- backMSG = false;
- room.sendChat("BACK");
- trigger = true;
- wrongThrowPosition = true;
- }
- }
- }
- if(lastCall=="2" && trigger && isOutsideStadium && Math.abs(exitingPos - ballPosition.x)< throwInLeeway-20)
- {
- room.sendChat("OK");
- trigger = false;
- wrongThrowPosition = false;
- backMSG = true;
- }
- if(lastCall=="1" && trigger && isOutsideStadium && Math.abs(exitingPos - ballPosition.x)< throwInLeeway-20)
- {
- room.sendChat("OK");
- trigger = false;
- wrongThrowPosition = false;
- backMSG = true;
- }
- }
- function isBallCrossingTheLine() {
- previousBallPos = lineBallPosition;
- lineBallPosition = room.getBallPosition().y;
- crossed = (lineBallPosition < stadiumHeight && previousBallPos > stadiumHeight) || (lineBallPosition > -stadiumHeight && previousBallPos < -stadiumHeight);
- return (lineBallPosition < stadiumHeight && previousBallPos > stadiumHeight) || (lineBallPosition > -stadiumHeight && previousBallPos < -stadiumHeight);
- }
- var previousBallPosForGoingUp;
- var currentBallPosForGoingUp;
- function isBallGoingUp() {
- previousBallPosForGoingUp = currentBallPosForGoingUp;
- currentBallPosForGoingUp = room.getBallPosition().y;
- if (previousBallPosForGoingUp - currentBallPosForGoingUp > 0.01) {
- isBallUp = 2;
- } else if (previousBallPosForGoingUp - currentBallPosForGoingUp < -0.01) {
- isBallUp = 1;
- } else {
- isBallUp = 0;
- }
- }
- function hasBallLeftTheLine() {
- var ballPosition = room.getBallPosition();
- if (ballPosition.y < outLineY && isBallKickedOutside) {
- } else if (ballPosition.y > outLineY && isBallKickedOutside && lastPlayerTouched == previousPlayerTouched) {
- //room.sendChat("ŹLE WYKONANY");
- }
- }
- function compare(a, b) {
- return b.times - a.times;
- }
- function determineGK() {
- var players = room.getPlayerList();
- for (var i = 0; i < players.length; i++) {
- if (players[i].team == 1) {
- found = false;
- for (var j = 0; j < currentGKRed.length; j++) {
- if (currentGKRed[j].name == players[i].name) {
- currentGKRed[j].times = currentGKRed[j].times + 1;
- currentGKRed[j].average = currentGKRed[j].average + (players[i].position.x - currentGKRed[j].average) / currentGKRed[j].times;
- found = true;
- }
- }
- if (!found) {
- currentGKRed.push({
- name: players[i].name,
- times: 1,
- average: 0.0
- });
- found = false;
- }
- } else if (players[i].team == 2) {
- found = false;
- for (var j = 0; j < currentGKBlue.length; j++) {
- if (currentGKBlue[j].name == players[i].name) {
- currentGKBlue[j].times = currentGKBlue[j].times + 1;
- currentGKBlue[j].average = currentGKBlue[j].average + (players[i].position.x - currentGKBlue[j].average) / currentGKBlue[j].times;
- found = true;
- }
- }
- if (!found) {
- currentGKBlue.push({
- name: players[i].name,
- times: 1,
- average: 0.0
- });
- found = false;
- }
- }
- var players = room.getPlayerList();
- var tempGKRed = currentGKRed[0];
- for (var j = 1; j < currentGKRed.length; j++) {
- if (currentGKRed[j].average < tempGKRed.average) {
- tempGKRed = currentGKRed[j];
- }
- }
- redGK = tempGKRed;
- var tempGKBlue = currentGKBlue[0];
- for (var j = 1; j < currentGKBlue.length; j++) {
- if (currentGKBlue[j].average > tempGKBlue.average) {
- tempGKBlue = currentGKBlue[j];
- }
- }
- blueGK = tempGKBlue;
- }
- }
- function bestCalculate() {
- var tempArray = new Array;
- matchesPlayers.sort(compare);
- winsPlayers.sort(compare);
- for (var i = 0; i < matchesPlayers.length; i++) {
- if (matchesPlayers[i].times > 0.075 * matchesPlayers[0].times) {
- var tempName = matchesPlayers[i].name;
- for (var j = 0; j < winsPlayers.length; j++) {
- if (winsPlayers[j].name == tempName && winsPlayers[j].name != "temp") {
- var ratio = winsPlayers[j].times / matchesPlayers[i].times;
- tempArray.push({
- name: tempName,
- times: ratio,
- matches: matchesPlayers[i].times
- });
- }
- }
- }
- }
- tempArray.sort(compare);
- return tempArray;
- }
- function gpgCalculate() {
- var tempArray = [{
- name: "temp",
- times: 0,
- matches: 0
- }];
- matchesPlayers.sort(compare);
- goalsPlayers.sort(compare);
- for (var i = 0; i < matchesPlayers.length; i++) {
- if (matchesPlayers[i].times > 0.075 * matchesPlayers[0].times) {
- var tempName = matchesPlayers[i].name;
- for (var j = 0; j < goalsPlayers.length; j++) {
- if (goalsPlayers[j].name == tempName && goalsPlayers[j].name != "temp") {
- var ratio = goalsPlayers[j].times / matchesPlayers[i].times;
- tempArray.push({
- name: tempName,
- times: ratio,
- matches: matchesPlayers[i].times
- });
- }
- }
- }
- }
- tempArray.sort(compare);
- return tempArray;
- }
- function apgCalculate() {
- var tempArray = new Array;
- matchesPlayers.sort(compare);
- assistsPlayers.sort(compare);
- for (var i = 0; i < matchesPlayers.length; i++) {
- if (matchesPlayers[i].times > 0.075 * matchesPlayers[0].times) {
- var tempName = matchesPlayers[i].name;
- for (var j = 0; j < assistsPlayers.length; j++) {
- if (assistsPlayers[j].name == tempName && assistsPlayers[j].name != "temp") {
- var ratio = assistsPlayers[j].times / matchesPlayers[i].times;
- tempArray.push({
- name: tempName,
- times: ratio,
- matches: matchesPlayers[i].times
- });
- }
- }
- }
- }
- tempArray.sort(compare);
- return tempArray;
- }
- function csCalculate() {
- var tempArray = new Array;
- cleanSheets.sort(compare);
- for (var i = 0; i < cleanSheets.length; i++) {
- if (cleanSheets[i].times > 0.1 * cleanSheets[0].times) {
- if (cleanSheets[i].name != "temp") {
- var ratio = cleanSheets[i].matches / cleanSheets[i].times;
- tempArray.push({
- name: cleanSheets[i].name,
- times: ratio,
- matches: cleanSheets[i].times
- });
- }
- }
- }
- tempArray.sort(compare);
- return tempArray;
- }
- room.onStadiumChange = function(newStadiumName, byPlayer) {
- if (newStadiumName != "Prohax HPL") {
- room.sendChat("Changing the map is not allowed.");
- room.setCustomStadium(RSHLMap);
- room.kickPlayer(byPlayer.id, "Don't change the map", false);
- }
- }
- room.onPlayerTeamChange = function(changedPlayer, byPlayer) {
- if(byPlayer.id!=0)
- {
- for (var j = 0; j < currentGKRed.length; j++) {
- if (currentGKRed[j].name == changedPlayer.name) {
- currentGKRed.splice(j, 1);
- }
- }
- for (var j = 0; j < currentGKBlue.length; j++) {
- if (currentGKBlue[j].name == changedPlayer.name) {
- currentGKBlue.splice(j, 1);
- }
- }
- }
- if (afkList.includes(changedPlayer.name) && byPlayer.id != 0) {
- room.sendChat(changedPlayer.name + " is currently AFK.");
- room.setPlayerTeam(changedPlayer.id, 0);
- }
- scores = room.getScores();
- if(scores!=null&&scores.time>60&&byPlayer.id!=0)
- {
- setTimeout(function() {
- scores = room.getScores();
- if(scores==null||scores.time<10)
- {
- room.pauseGame(true);
- room.kickPlayer(changedPlayer.id, "Stats cheating detected!", false);
- }
- }, 10000);
- }
- }
- function checkPossession()
- {
- if(lastPlayerTouched!=null && !isBallOutsideStadium)
- {
- if(lastPlayerTouched.team==1)
- {
- possessionRed++;
- }
- if(lastPlayerTouched.team==2)
- {
- possessionBlue++;
- }
- }
- }
- function calculatePossessionRed()
- {
- var total = possessionBlue + possessionRed;
- var posperRed = possessionRed / total * 100;
- return posperRed;
- }
- function calculatePossessionBlue()
- {
- var total = possessionBlue + possessionRed;
- var posperBlue = possessionBlue / total * 100;
- return posperBlue;
- }
- var currentdate = new Date();
- function saveToFile()
- {
- var link = iframedoc.getElementById("dl");
- var arrToFile = new Array;
- arrToFile = [goalsPlayers, assistsPlayers, matchesPlayers, winsPlayers, cleanSheets, registeredPlayers];
- var resultJson = [JSON.stringify(arrToFile, null, 2)]
- var blob = new Blob(resultJson, {type : 'application/json'});
- if(link==null)
- {
- link = document.createElement("a");
- document.getElementsByTagName('iframe')[0].contentWindow.document.body.appendChild(link);
- }
- currentdate = new Date();
- var datetime = currentdate.getDate() + "_"
- + (currentdate.getMonth()+1) + "_"
- + currentdate.getFullYear() + "_"
- + currentdate.getHours() + "_"
- + currentdate.getMinutes();
- link.href = URL.createObjectURL(blob);
- link.id = "dl";
- link.download = "yourRoomStats|" + datetime + ".hbx";
- link.innerHTML = "Click here to download the room stats file.";
- }
- function backupStats()
- {
- var arrToFile = new Array;
- arrToFile = [goalsPlayers, assistsPlayers, matchesPlayers, winsPlayers, cleanSheets, registeredPlayers];
- var resultJson = [JSON.stringify(arrToFile, null, 2)]
- fetch('http://localhost:5000/api/values', {
- method: "POST",
- headers: {
- 'Accept': 'application/json',
- 'Content-Type': 'application/json'
- },
- body: resultJson,
- mode: 'no-cors'
- })
- .then((response) => {
- return response.json();
- })
- .then((jsonObject) => {
- console.log(jsonObject)
- })
- .catch((error) => {
- });
- }
- function handleFileSelect(evt) {
- var files = evt.target.files[0]; // FileList object
- var reader = new FileReader();
- var text = "";
- reader.onload = function(){
- text = reader.result;
- var myObject = JSON.parse(text);
- goalsPlayers = myObject[0];
- assistsPlayers = myObject[1];
- matchesPlayers = myObject[2];
- winsPlayers = myObject[3];
- cleanSheets = myObject[4];
- registeredPlayers = myObject[5];
- room.sendChat("Stats loaded from a file.");
- };
- reader.readAsText(files);
- for(var i = 0; i < registeredPlayers.length; i++)
- {
- registeredPlayers[i].auth = false;
- }
- }
- //prepare document
- var iframedoc = document.getElementsByTagName('iframe')[0].contentWindow.document;
- welcome.innerHTML += '';
- iframedoc.body.insertAdjacentHTML('beforeend', '<div><button type="button" id="banBtn">Ban everyone</button><br></div><input type="file" id="files" name="files"<div><button type="button" id="unban">Unban everyone</button></div>');
- iframedoc.getElementById('files').addEventListener('change', handleFileSelect, false);
- String.prototype.hashCode = function() {
- var hash = 0, i, chr;
- if (this.length === 0) return hash;
- for (i = 0; i < this.length; i++) {
- chr = this.charCodeAt(i);
- hash = ((hash << 5) - hash) + chr;
- hash |= 0; // Convert to 32bit integer
- }
- return hash;
- };
- iframedoc.getElementById("banBtn").addEventListener("click", function()
- {
- if(room!=null)
- {
- players = room.getPlayerList();
- for(var i = 0; i < players.length; i++)
- {
- room.kickPlayer(players[i].id, "Admin panel - AutoBan", true);
- }
- }
- });
- iframedoc.getElementById("unban").addEventListener("click", function()
- {
- {
- {
- room.clearBans();
- }
- }
- });
- function editMap()
- {
- RSHLMap = `{"name":"Prohax HPL","width":700,"height":350,"spawnDistance":350,"bg":{"type":"hockey","width":0,"height":0,"kickOffRadius":0,"cornerRadius":0},"vertexes":[{"x":-647,"y":320,"trait":"ballArea","vis":true,"color":"ffffff","curve":0},{"x":-647,"y":94,"trait":"ballArea","vis":true,"color":"ffffff"},{"x":-647,"y":-96,"cMask":["blue" ],"cGroup":["blue" ],"trait":"ballArea","color":"ffffff","vis":true},{"x":-647,"y":-320,"trait":"ballArea","color":"ffffff","vis":true},{"x":647,"y":320,"trait":"ballArea","vis":true,"color":"ffffff","curve":0},{"x":647,"y":94,"cMask":["red" ],"cGroup":["red" ],"trait":"ballArea","vis":true,"color":"ffffff"},{"x":647,"y":-96,"cMask":["red" ],"cGroup":["red" ],"trait":"ballArea","curve":0,"vis":true,"color":"ffffff"},{"x":647,"y":-320,"trait":"ballArea","curve":0,"vis":true,"color":"ffffff"},{"x":0,"y":350,"trait":"kickOffBarrier","color":"ffffff","vis":true},{"x":0,"y":80,"trait":"kickOffBarrier"},{"x":0,"y":-80,"trait":"kickOffBarrier"},{"x":0,"y":-350,"trait":"kickOffBarrier","color":"ffffff","vis":true},{"x":-655,"y":-101,"trait":"goalNet"},{"x":-677,"y":-76,"trait":"goalNet","curve":-7},{"x":-677,"y":76,"trait":"goalNet","curve":-7},{"x":-655,"y":99,"trait":"goalNet"},{"x":655,"y":-100,"trait":"goalNet"},{"x":677,"y":-76,"trait":"goalNet","curve":7},{"x":677,"y":76,"trait":"goalNet","curve":7},{"x":655,"y":100,"trait":"goalNet"},{"x":-647,"y":-215,"bCoef":1,"cMask":["blue" ],"cGroup":["blue" ],"curve":85},{"x":-647,"y":215,"bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ],"curve":-85},{"x":-647,"y":-210,"bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ],"curve":85,"color":"0000b3"},{"x":-517,"y":-100,"bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ],"curve":8,"color":"0000b3"},{"x":-647,"y":210,"bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ],"curve":-85,"color":"0000b3"},{"x":-517,"y":100,"bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ],"curve":8,"color":"0000b3"},{"x":647,"y":215,"bCoef":1,"cMask":["red" ],"cGroup":["red" ],"curve":85},{"x":647,"y":-215,"bCoef":1,"cMask":["red" ],"cGroup":["red" ],"curve":-85},{"x":647,"y":210,"bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ],"curve":85,"color":"0000b3"},{"x":517,"y":100,"bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ],"curve":8,"color":"0000b3"},{"x":647,"y":-210,"bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ],"curve":-85,"color":"0000b3"},{"x":517,"y":-100,"bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ],"curve":8,"color":"0000b3"},{"x":-644.5,"y":104,"bCoef":1,"cMask":["blue" ],"cGroup":["blue" ]},{"x":-697,"y":104,"bCoef":1,"cMask":["blue" ],"cGroup":["blue" ]},{"x":-647.5,"y":-104,"bCoef":1,"cMask":["blue" ],"cGroup":["blue" ]},{"x":-697,"y":-104,"bCoef":1,"cMask":["blue" ],"cGroup":["blue" ]},{"x":702,"y":-104,"bCoef":1,"cMask":["red" ],"cGroup":["red" ]},{"x":650,"y":-104,"bCoef":1,"cMask":["red" ],"cGroup":["red" ]},{"x":702,"y":104,"bCoef":1,"cMask":["red" ],"cGroup":["red" ],"curve":0},{"x":650,"y":104,"bCoef":1,"cMask":["red" ],"cGroup":["red" ],"curve":0},{"x":-647,"y":275,"bCoef":1,"cMask":["blue" ],"cGroup":["blueKO" ],"curve":-85},{"x":-453,"y":100,"bCoef":1,"cMask":["blue" ],"cGroup":["blueKO" ],"curve":-85},{"x":-647,"y":-275,"bCoef":1,"cMask":["blue" ],"cGroup":["blueKO" ],"curve":85},{"x":-453,"y":-100,"bCoef":1,"cMask":["blue" ],"cGroup":["blueKO" ],"curve":85},{"x":647,"y":-275,"bCoef":1,"cMask":["red" ],"cGroup":["redKO" ],"curve":-85},{"x":453,"y":-100,"bCoef":1,"cMask":["red" ],"cGroup":["redKO" ],"curve":-85},{"x":647,"y":275,"bCoef":1,"cMask":["red" ],"cGroup":["redKO" ],"curve":85},{"x":453,"y":100,"bCoef":1,"cMask":["red" ],"cGroup":["redKO" ],"curve":85},{"x":-483,"y":-8,"bCoef":1,"cMask":["blue" ],"cGroup":["blueKO" ]},{"x":-483,"y":8,"bCoef":1,"cMask":["blue" ],"cGroup":["blueKO" ]},{"x":483,"y":-8,"bCoef":1,"cMask":["red" ],"cGroup":["redKO" ],"curve":0},{"x":483,"y":8,"bCoef":1,"cMask":["red" ],"cGroup":["redKO" ],"curve":0}],"segments":[{"v0":0,"v1":1,"vis":true,"color":"ffffff","trait":"ballArea"},{"v0":2,"v1":3,"vis":true,"color":"ffffff","trait":"ballArea"},{"v0":4,"v1":5,"vis":true,"color":"ffffff","trait":"ballArea"},{"v0":6,"v1":7,"curve":0,"vis":true,"color":"ffffff","trait":"ballArea"},{"v0":12,"v1":13,"curve":-90,"trait":"goalNet"},{"v0":13,"v1":14,"curve":-7,"trait":"goalNet"},{"v0":14,"v1":15,"curve":-90,"trait":"goalNet"},{"v0":16,"v1":17,"curve":90,"trait":"goalNet"},{"v0":17,"v1":18,"curve":7,"trait":"goalNet"},{"v0":18,"v1":19,"curve":90,"trait":"goalNet"},{"v0":8,"v1":9,"vis":true,"color":"ffffff","trait":"kickOffBarrier","x":0},{"v0":9,"v1":10,"curve":180,"vis":true,"color":"ffffff","cGroup":["blueKO" ],"trait":"kickOffBarrier"},{"v0":9,"v1":10,"curve":-180,"vis":true,"color":"ffffff","cGroup":["redKO" ],"trait":"kickOffBarrier"},{"v0":10,"v1":11,"vis":true,"color":"ffffff","trait":"kickOffBarrier","x":0},{"v0":4,"v1":0,"curve":0,"vis":true,"color":"ffffff","bCoef":1,"cMask":["ball" ],"trait":"ballArea","y":290},{"v0":3,"v1":7,"vis":true,"color":"ffffff","bCoef":1,"cMask":["ball" ],"trait":"ballArea","y":-290},{"v0":2,"v1":1,"vis":true,"color":"ffffff","bCoef":1,"cMask":["blue" ],"cGroup":["blue" ]},{"v0":6,"v1":5,"vis":true,"color":"ffffff","bCoef":1,"cMask":["red" ],"cGroup":["red" ],"x":647},{"v0":22,"v1":23,"curve":85,"vis":true,"color":"0000b3","bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ]},{"v0":24,"v1":25,"curve":-85,"vis":true,"color":"0000b3","bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ]},{"v0":23,"v1":25,"curve":8,"vis":true,"color":"0000b3","bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ]},{"v0":28,"v1":29,"curve":85,"vis":true,"color":"0000b3","bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ]},{"v0":30,"v1":31,"curve":-85,"vis":true,"color":"0000b3","bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ]},{"v0":29,"v1":31,"curve":8,"vis":true,"color":"0000b3","bCoef":1,"cMask":["blue","red" ],"cGroup":["blue","red" ]},{"v0":27,"v1":6,"curve":0,"vis":true,"color":"ffffff","bCoef":1,"cMask":["red" ],"cGroup":["red" ]},{"v0":26,"v1":5,"curve":0,"vis":true,"color":"ffffff","bCoef":1,"cMask":["red" ],"cGroup":["red" ]},{"v0":21,"v1":1,"curve":0,"vis":true,"color":"ffffff","bCoef":1,"cMask":["blue" ],"cGroup":["blue" ]},{"v0":20,"v1":2,"curve":0,"vis":true,"color":"ffffff","bCoef":1,"cMask":["blue" ],"cGroup":["blue" ]},{"v0":32,"v1":33,"curve":0,"vis":false,"color":"ffffff","bCoef":1,"cMask":["blue" ],"cGroup":["blue" ],"y":104},{"v0":34,"v1":35,"curve":0,"vis":false,"color":"ffffff","bCoef":1,"cMask":["blue" ],"cGroup":["blue" ]},{"v0":36,"v1":37,"curve":0,"vis":false,"color":"ffffff","bCoef":1,"cMask":["red" ],"cGroup":["red" ],"y":-104},{"v0":38,"v1":39,"curve":0,"vis":false,"color":"ffffff","bCoef":1,"cMask":["red" ],"cGroup":["red" ],"y":104},{"v0":40,"v1":41,"curve":-85,"vis":true,"color":"ffffff","bCoef":1,"cMask":["blue" ],"cGroup":["blueKO" ]},{"v0":42,"v1":43,"curve":85,"vis":true,"color":"ffffff","bCoef":1,"cMask":["blue" ],"cGroup":["blueKO" ]},{"v0":43,"v1":41,"curve":8,"vis":true,"color":"ffffff","bCoef":1,"cMask":["blue" ],"cGroup":["blueKO" ]},{"v0":44,"v1":45,"curve":-85,"vis":true,"color":"ffffff","bCoef":1,"cMask":["red" ],"cGroup":["redKO" ]},{"v0":46,"v1":47,"curve":85,"vis":true,"color":"ffffff","bCoef":1,"cMask":["red" ],"cGroup":["redKO" ]},{"v0":45,"v1":47,"curve":-8,"vis":true,"color":"ffffff","bCoef":1,"cMask":["red" ],"cGroup":["redKO" ]},{"v0":48,"v1":49,"curve":0,"vis":true,"color":"ffffff","bCoef":1,"cMask":["blue" ],"cGroup":["blueKO" ],"x":-483},{"v0":50,"v1":51,"curve":0,"vis":true,"color":"ffffff","bCoef":1,"cMask":["red" ],"cGroup":["redKO" ],"x":483}],"goals":[{"p0":[-656,94 ],"p1":[-656,-96 ],"team":"red"},{"p0":[656,96 ],"p1":[656,-96 ],"team":"blue"}],"discs":[{"pos":[-647,100 ],"color":"FFCCCC","trait":"goalPost"},{"pos":[-647,-100 ],"color":"FFCCCC","trait":"goalPost"},{"pos":[647,100 ],"color":"CCCCFF","trait":"goalPost"},{"pos":[647,-100 ],"color":"CCCCFF","trait":"goalPost"}],"planes":[{"normal":[0,1 ],"dist":-320,"trait":"ballArea"},{"normal":[0,-1 ],"dist":-320,"trait":"ballArea"},{"normal":[0,1 ],"dist":-354,"bCoef":0.1},{"normal":[0,-1 ],"dist":-351,"bCoef":0.1},{"normal":[1,0 ],"dist":-698,"bCoef":0.1},{"normal":[-1,0 ],"dist":-702,"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" ]}},"ballPhysics":{"radius":8.8,"color":"ffff00","bCoef":0.4},"playerPhysics":{"kickStrength":6.15,"bCoef":0}}`;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement