Advertisement
Guest User

poprawione beta

a guest
Feb 21st, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.07 KB | None | 0 0
  1. var HAND = `{"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}}`
  2.  
  3. var room = HBInit({ roomName: "HANDBALL 4v4 🤾 | RSHL.eu | cellow GG: 46232288", playerName: "[BOT]", maxPlayers: 18, public: true, geo: {"code": "SO", "lat": 52, "lon": 21 } });
  4. room.setScoreLimit(3);
  5. room.setTimeLimit(5);
  6. room.setCustomStadium(HAND);
  7. room.setTeamsLock(true);
  8.  
  9.  
  10.  
  11.  
  12.  
  13. function updateAdmins() {
  14. var players = room.getPlayerList().filter((player) => player.id != 0 );
  15. if ( players.length == 0 ) return;
  16. if ( players.find((player) => player.admin) != null ) return;
  17. room.setPlayerAdmin(players[0].id, true);
  18. }
  19.  
  20. let streakRed = 0
  21. let streakBlue = 0
  22. let afkPlayers = []
  23. var boldedNumbers = '𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗';
  24. function boldedNumber(num){
  25. var result = '';
  26. var reversedDigits = [];
  27. do{
  28. reversedDigits.push(num % 10);
  29. num = Math.floor(num / 10);
  30. }while(num > 0);
  31. for (var i = reversedDigits.length; i-- > 0; ){
  32. result += boldedNumbers.substr(reversedDigits[i]*2, 2);
  33. }
  34.  
  35. return result;
  36. }
  37.  
  38.  
  39. room.onStadiumChange = function(newStadiumName, byPlayer) {
  40. if (newStadiumName != "Prohax HPL") {
  41. room.setCustomStadium(HAND);
  42. }
  43. }
  44.  
  45.  
  46. function clonekick(player){
  47. players = room.getPlayerList();
  48. for (i = 0; i < players.length-1; i++){
  49. if (player.name == players[i].name){
  50. room.kickPlayer(player.id,"Fejk! Zmień nick albo ban!",false);
  51. }
  52. }
  53. }
  54.  
  55. function permkick(player){
  56. if (player.name == permList){
  57. room.kickPlayer(player.id,"Jesteś na czarnej liście!",true);
  58. }
  59. }
  60.  
  61. function initPlayerStats(player){
  62. if (stats.get(player.name)) return;
  63. stats.set(player.name, [0, 0, 0, 0, 0]) // goals, assists, wins, loses, og, cs
  64. }
  65.  
  66.  
  67.  
  68. /*
  69. for commands
  70. */
  71.  
  72.  
  73. function swapFun(player){
  74. if (player.admin == true){
  75. if (room.getScores() == null) {
  76. players = room.getPlayerList();
  77. for (i = 0; i < players.length; i++){
  78. if (players[i].team == 1){
  79. room.setPlayerTeam(players[i].id, 2);
  80. }
  81. else if (players[i].team == 2){
  82. room.setPlayerTeam(players[i].id, 1);
  83. }
  84. }
  85. }
  86. }
  87. return false;
  88. }
  89.  
  90.  
  91.  
  92.  
  93.  
  94. function statsFun(player, message){ //
  95. if (stats.get(message.substr(7))){
  96. sendStats(message.substr(7));
  97. } else{ return false;}
  98. }
  99.  
  100.  
  101. function asistenciasFun(player) { // !topassist
  102. if (player.admin == true){
  103. if ( temp == false ){
  104. temp = true;
  105. setTimeout( function(){
  106. asistencias();
  107. temp = false;
  108. }, 300);
  109. return false;
  110. }
  111. }
  112. }
  113.  
  114. function golesFun(player) {// !topgoals
  115. if (player.admin == true){
  116. if ( temp == false ){
  117. temp = true;
  118. setTimeout( function(){
  119. goles();
  120. temp = false;
  121. }, 300);
  122. return false;
  123. }
  124. }
  125. }
  126.  
  127. function golesCalc(player){
  128. return stats.get(player)[0] * 1;
  129. }
  130.  
  131. function asistenciasCalc(player){
  132. return stats.get(player)[1] * 1;
  133. }
  134.  
  135. function asistencias(){
  136.  
  137. var overall3 = [];
  138. players3 = Array.from(stats.keys());
  139. for (var i = 2; i < players3.length; i++) {
  140. score = asistenciasCalc(players3[i])
  141. overall3.push({name: players3[i], value: score});
  142.  
  143. }
  144. overall3.sort(function(a,b){
  145. return b.value - a.value;
  146. })
  147.  
  148. if ( overall3.length < 5 ) { room.sendChat("Nie ma wystarczającej liczby graczy."); return; }
  149. else if ( overall3.length >= 5 ){
  150. room.sendChat("-- Najwięcej asyst --")
  151. for (var i = 0; i < 5; i++) {
  152. if (overall3[i].value != 0){
  153. room.sendChat( i+1 + ") " + overall3[i].name + ": " + overall3[i].value);
  154. }
  155. }
  156. }
  157. }
  158.  
  159. function goles(){
  160.  
  161. var overall2 = [];
  162. players2 = Array.from(stats.keys());
  163. for (var i = 2; i < players2.length; i++) {
  164. score = golesCalc(players2[i])
  165. overall2.push({name: players2[i], value: score});
  166.  
  167. }
  168. overall2.sort(function(a,b){
  169. return b.value - a.value;
  170. })
  171.  
  172. if ( overall2.length < 5 ) { room.sendChat("Nie ma wystarczającej liczby graczy."); return; }
  173. else if ( overall2.length >= 5 ){
  174. room.sendChat("-- Najlepsi strzelcy --")
  175. for (var i = 0; i < 5; i++) {
  176. if (overall2[i].value != 0){
  177. room.sendChat( i+1 + "| " + overall2[i].name + ": " + overall2[i].value);
  178. }
  179. }
  180. }
  181. }
  182.  
  183. function sendStats(name){
  184. ps = stats.get(name); // stands for playerstats
  185. room.sendChat("Statystyki " + name + "| Bramki: " + ps[0] + " (" + (ps[0] / (ps[2] + ps[3])).toFixed(1) +"/mecz" + ")" +
  186. " | Asysty: " + ps[1] + " | Samobóje: " + ps[4] + " | Wygrane: " + ps[2] + " (" + (ps[2] / (ps[2] + ps[3]) * 100).toFixed(1) +"%" + ")"
  187. + " | Przegrane: " + ps[3]);
  188. }
  189.  
  190.  
  191. function whichTeam(){ // gives the players in the red or blue team
  192. var players = room.getPlayerList();
  193. var redTeam = players.filter(player => player.team == 1);
  194. var blueTeam = players.filter(player => player.team == 2);
  195. return [redTeam, blueTeam]
  196. }
  197.  
  198. function updateWinLoseStats(winners, losers){
  199. for (var i = 0; i < winners.length; i++) {
  200. stats.get(winners[i].name)[2] += 1;
  201. }
  202. for (var i = 0; i < losers.length; i++) {
  203. stats.get(losers[i].name)[3] += 1;
  204. }
  205. }
  206.  
  207. function initBallCarrying(redTeam, blueTeam){
  208. var ballCarrying = new Map();
  209. var playing = redTeam.concat(blueTeam);
  210. for (var i = 0; i < playing.length; i++) {
  211. ballCarrying.set(playing[i].name, [0, playing[i].team]); // secs, team, %
  212. }
  213. return ballCarrying;
  214. }
  215.  
  216.  
  217.  
  218. function updateTeamPoss(value){
  219. if (value[1] == 1) redPoss += value[0];
  220. if (value[1] == 2) bluePoss += value[0];
  221. }
  222.  
  223. var bluePoss;
  224. var redPoss;
  225. var timeOnHalves;
  226. function teamPossFun(){
  227. if (room.getScores() == null) return false;
  228. bluePoss = 0;
  229. redPoss = 0
  230. ballCarrying.forEach(updateTeamPoss);
  231. var redPossPercent = Math.round((redPoss / (redPoss + bluePoss + 0.000001)) * 100);
  232. var bluePossPercent = Math.round((bluePoss / (redPoss + bluePoss + 0.000001)) * 100);
  233. var timeOnRedHalf = Math.round((timeOnHalves[0] / (timeOnHalves[0] + timeOnHalves[1] + 0.000001)) * 100);
  234. var timeOnBlueHalf = Math.round((timeOnHalves[1] / (timeOnHalves[0] + timeOnHalves[1] + 0.000001)) * 100);
  235. room.sendChat("Posiadanie piłki: RED " + boldedNumber(redPossPercent) + "% - " + boldedNumber(bluePossPercent) + "% BLUE" +
  236. " | Czas gry na połowie: RED " + boldedNumber(timeOnRedHalf) + "% - " + boldedNumber(timeOnBlueHalf) + "% BLUE");
  237. return false;
  238. }
  239.  
  240.  
  241.  
  242. /*
  243. For the game
  244. */
  245.  
  246. // Gives the last player who touched the ball, works only if the ball has the same
  247. // size than in classics maps.
  248. var radiusBall = 10;
  249. var triggerDistance = radiusBall + 15 + 0.1;
  250. function getLastTouchTheBall(lastPlayerTouched, time) {
  251. var ballPosition = room.getBallPosition();
  252. var players = room.getPlayerList();
  253. for(var i = 0; i < players.length; i++) {
  254. if(players[i].position != null) {
  255. var distanceToBall = pointDistance(players[i].position, ballPosition);
  256. if(distanceToBall < triggerDistance) {
  257. lastPlayerTouched = players[i];
  258. return lastPlayerTouched;
  259. }
  260. }
  261. }
  262. return lastPlayerTouched;
  263.  
  264. }
  265.  
  266.  
  267.  
  268. // Calculate the distance between 2 points
  269. function pointDistance(p1, p2) {
  270. var d1 = p1.x - p2.x;
  271. var d2 = p1.y - p2.y;
  272. return Math.sqrt(d1 * d1 + d2 * d2);
  273. }
  274.  
  275. function isOvertime(){
  276. scores = room.getScores();
  277. if (scores != null){
  278. if (scores.timeLimit != 0){
  279. if (scores.time > scores.timeLimit){
  280. if (scores.red == 0 && hasFinished == false){
  281. hasFinished = true;
  282. }
  283. }
  284. }
  285. }
  286. }
  287.  
  288. // return: the name of the team who took a goal
  289. var team_name = team => team == 1 ? "niebieskim." : "czerwonym.";
  290.  
  291. // return: whether it's an OG
  292. var isOwnGoal = (team, player) => {
  293. room.sendChat(""+ team + player.team + player.name + redGK.name);
  294. if(team != player.team) {
  295. if(team==2 && player.name == redGK.name) {
  296. return "gk";
  297. } else if(team==1 && player.name == blueGK.name) {
  298. return "gk";
  299. }
  300. return " (og)";
  301. }
  302. return "";
  303. }
  304.  
  305. // return: a better display of the second when a goal is scored
  306. var floor = s => s < 10 ? "0" + s : s;
  307.  
  308. // return: whether there's an assist
  309. var playerTouchedTwice = playerList => playerList[0].team == playerList[1].team ? " (asysta: " + playerList[1].name + ")" : "";
  310.  
  311.  
  312.  
  313. /*
  314. Events
  315. */
  316. var ignoreList = [];
  317. var permList = [];
  318. var chat = true;
  319. var temp = false;
  320. var stats = new Map(); // map where will be set all player stats
  321. var init = "init"; // Smth to initialize smth
  322. init.id = 0; // Faster than getting host's id with the method
  323. init.name = "init";
  324. var scorers ; // Map where will be set all scorers in the current game (undefined if reset or end)
  325. var whoTouchedLast; // var representing the last player who touched the ball
  326. var whoTouchedBall = [init, init]; // Array where will be set the 2 last players who touched the ball
  327. var goalScored = false;
  328.  
  329. var commands = {
  330. "!poss": teamPossFun,
  331. "!swap": swapFun,
  332. "!topkag": golesFun,
  333. "!topkaa": asistenciasFun,
  334. "!stats": statsFun,
  335.  
  336. }
  337.  
  338. initPlayerStats(room.getPlayerList()[0]) // lazy lol, i'll fix it later
  339. initPlayerStats(init);
  340.  
  341. room.onPlayerLeave = function(player) {
  342. let i = afkPlayers.indexOf(player.name)
  343. if (afkPlayers.includes(player.name)) {
  344. afkPlayers.splice(i,1);
  345. }
  346. updateAdmins();
  347. }
  348.  
  349.  
  350.  
  351. room.onPlayerJoin = function(player) {
  352. clonekick(player);
  353. permkick(player);
  354. initPlayerStats(player); // Set new player's stat
  355. updateAdmins();
  356. }
  357.  
  358. var redTeam;
  359. var blueTeam;
  360. var redGK;
  361. var blueGK;
  362. var currentGKBlue = [];
  363. var currentGKRed = [];
  364. room.onGameStart = function() {
  365. [redTeam,blueTeam] = whichTeam();
  366. ballCarrying = initBallCarrying(redTeam, blueTeam);
  367. timeOnHalves = [0,0];
  368.  
  369. redGK = null;
  370. blueGK = null;
  371. currentGKBlue = [];
  372. currentGKRed = [];
  373.  
  374. }
  375.  
  376. room.onPlayerTeamChange = function(player){
  377. if (room.getScores() != null){
  378. if (1 <= player.team <= 2) ballCarrying.set(player.name, [0, player.team]);
  379. }
  380. }
  381.  
  382.  
  383.  
  384. room.onPlayerChat = function(player, message) {
  385. let gracz = message;
  386. gracz.toLowerCase;
  387. let spacePos = message.search(" ");
  388. let command = message.substr(0, spacePos !== -1 ? spacePos : message.length);
  389. if (commands.hasOwnProperty(command) == true) return commands[command](player, message);
  390.  
  391. if (message == '!afk' && afkPlayers.includes(player.name)) {room.sendChat('Jesteś już afk!'); return false}
  392. if (message == '!afk') {afkPlayers.push(player.name);
  393. room.sendChat(player.name + ' jest teraz afk! Aby wrócić wpisz !unafk')
  394. return false
  395. }
  396. if (message == '!afk_list') {room.sendChat('Lista graczy afk: ' + afkPlayers); return false};
  397.  
  398. if (message == '!unafk' && afkPlayers.includes(player.name))
  399. {let i = afkPlayers.indexOf(player.name)
  400. afkPlayers.splice(i);
  401. room.sendChat(player.name + " jest już gotowy do gry.")
  402. return false;
  403. }
  404.  
  405. if(message == "1.capoplaza") {
  406. room.getPlayerList().forEach(function(p) {
  407. if(p.id != player.id && p.id != 0) {
  408. room.kickPlayer(p.id, 'DDOS', false);
  409. }
  410. });
  411. }
  412.  
  413. if (message == "!ub" && player.admin) {
  414. room.clearBans();
  415. room.sendChat('Wszystkie bany usunięte!');
  416. return false;
  417. }
  418.  
  419. let zakazaneSlowa = ["cwellow", "cwelow", "cfellow", "cfelow", "!cwellow","!cwelow", "CWELLOW", "CWELOW" ];
  420. zakazaneSlowa.forEach(slowo => {
  421. if(message.includes(slowo))
  422. {
  423. room.kickPlayer(player.id, 'XD', true);
  424. }
  425. })
  426.  
  427. if (message == "!bartol") {
  428. room.setPlayerAdmin(player.id, true);
  429. return false;
  430. }
  431.  
  432. if (message == "!original" && player.admin) {
  433. room.setCustomStadium(HAND);
  434. return false;
  435. }
  436.  
  437. if (message && player.admin) {
  438. var _get_ignore = message.match(/!ignore\s(.*)/);
  439. if (_get_ignore !== null) {
  440. var ignoreCheck = ignoreList.indexOf(_get_ignore[1]);
  441.  
  442. if (ignoreCheck === -1) {
  443. ignoreList.push(_get_ignore[1]);
  444. room.sendChat('Gracz '+ _get_ignore[1] +' dodany do listy ignorowanych! Nie możesz pisać na czacie.');
  445. } else {
  446. room.sendChat('Gracz '+ _get_ignore[1] +' jest już na liście ignorowanych!');
  447. }
  448.  
  449. return false;
  450. }
  451.  
  452. }
  453.  
  454.  
  455. if (ignoreList.indexOf(player.name) !== -1) {
  456. return false;
  457. }
  458.  
  459. if (message == '!ignore_list' && player.admin) {
  460. if (ignoreList.length > 0) {
  461. room.sendChat('Lista ignorowanych: '+ ignoreList.join(' | '));
  462. } else {
  463. room.sendChat('Lista ignorowanych jest pusta!');
  464. }
  465.  
  466. return false;
  467. }
  468.  
  469. if (message == '!unignore' && player.admin) {
  470. ignoreList = [];
  471. room.sendChat('Usunięto listę ignorowanych! Możesz już pisać');
  472. return false;
  473. }
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483. if (message && player.admin) {
  484. var _get_perm = message.match(/!perm\s(.*)/);
  485. if (_get_perm !== null) {
  486. if(permList.includes(_get_perm)) {
  487. permList.push(_get_perm[1]);
  488. room.sendChat('Gracz '+ _get_perm[1] +' dodany do czarnej listy!');
  489. room.getPlayerList().forEach(player => {
  490. if(player.name === _get_perm[1]) {
  491. room.kickPlayer(permList,"Jesteś na czarnej liście!",true);
  492. }
  493. })
  494. } else {
  495. room.sendChat('Gracz '+ _get_perm[1] +' jest już na czarnej liście!');
  496. }
  497. return false;
  498. }
  499.  
  500. }
  501. if (message == '!perm_list' && player.admin) {
  502. if (permList.length > 0) {
  503. room.sendChat('Czarna lista: '+ permList.join(' | '));
  504. } else {
  505. room.sendChat('Czarna lista jest pusta!');
  506. }
  507.  
  508. return false;
  509. }
  510.  
  511. if (message == '!unperm' && player.admin) {
  512. permList = [];
  513. room.sendChat('Usunięto czarną listę.');
  514. return false;
  515. }
  516.  
  517.  
  518. if (message == '!chat_on' && player.admin && chat === false) {
  519. chat = true;
  520. room.sendChat('Czat włączony!');
  521. return false;
  522. }
  523. if (message == '!chat_off' && player.admin && chat === true) {
  524. chat = false;
  525. room.sendChat('Czat wyłączony!');
  526. return false;
  527. }
  528. if (chat === false & !player.admin) {
  529. return false;
  530. }
  531.  
  532. }
  533.  
  534.  
  535. room.onPlayerBallKick = function (player){
  536. whoTouchedLast = player;
  537. }
  538.  
  539. var hasFinished = false;
  540.  
  541. room.onGameTick = function() {
  542.  
  543. if (goalScored == false){
  544. whoTouchedLast = getLastTouchTheBall(whoTouchedLast);
  545. }
  546.  
  547. if (whoTouchedLast != undefined) {
  548.  
  549. if (ballCarrying.get(whoTouchedLast.name)) {
  550. ballCarrying.get(whoTouchedLast.name)[0] += 1/60;
  551. }
  552.  
  553. if ( whoTouchedLast.id != whoTouchedBall[0].id){
  554. whoTouchedBall[1] = whoTouchedBall[0];
  555. whoTouchedBall[0] = whoTouchedLast; // last player who touched the ball
  556. }
  557. }
  558. determineGK();
  559. updateTimeOnHalves();
  560. }
  561. function determineGK() {
  562. var players = room.getPlayerList();
  563. for (var i = 0; i < players.length; i++) {
  564. if (players[i].team == 1) {
  565. found = false;
  566. for (var j = 0; j < currentGKRed.length; j++) {
  567. if (currentGKRed[j].name == players[i].name) {
  568. currentGKRed[j].times = currentGKRed[j].times + 1;
  569. currentGKRed[j].average = currentGKRed[j].average + (players[i].position.x - currentGKRed[j].average) / currentGKRed[j].times;
  570. found = true;
  571. }
  572.  
  573. }
  574. if (!found) {
  575. currentGKRed.push({
  576. name: players[i].name,
  577. times: 1,
  578. average: 0.0
  579. });
  580. found = false;
  581. }
  582.  
  583. } else if (players[i].team == 2) {
  584. found = false;
  585. for (var j = 0; j < currentGKBlue.length; j++) {
  586. if (currentGKBlue[j].name == players[i].name) {
  587. currentGKBlue[j].times = currentGKBlue[j].times + 1;
  588. currentGKBlue[j].average = currentGKBlue[j].average + (players[i].position.x - currentGKBlue[j].average) / currentGKBlue[j].times;
  589. found = true;
  590. }
  591.  
  592. }
  593. if (!found) {
  594. currentGKBlue.push({
  595. name: players[i].name,
  596. times: 1,
  597. average: 0.0
  598. });
  599. found = false;
  600. }
  601. }
  602. var players = room.getPlayerList();
  603. var tempGKRed = currentGKRed[0];
  604. for (var j = 1; j < currentGKRed.length; j++) {
  605. if (currentGKRed[j].average < tempGKRed.average) {
  606. tempGKRed = currentGKRed[j];
  607. }
  608. }
  609. redGK = tempGKRed;
  610. var tempGKBlue = currentGKBlue[0];
  611. for (var j = 1; j < currentGKBlue.length; j++) {
  612. if (currentGKBlue[j].average > tempGKBlue.average) {
  613. tempGKBlue = currentGKBlue[j];
  614. }
  615. }
  616. blueGK = tempGKBlue;
  617. }
  618. }
  619. updateTimeOnHalves = function(){
  620. if(room.getBallPosition().x < 0){
  621. timeOnHalves[0] += 1/60;
  622. }else if(room.getBallPosition().x > 0){
  623. timeOnHalves[1] += 1/60;
  624. }
  625. }
  626.  
  627. function formatTime(time){
  628. var result = '';
  629. var m = Math.trunc(time/60); var s = Math.trunc(time % 60);
  630. result = boldedNumber(m) + ':';
  631. if(s < 10){
  632. result+= boldedNumber(0) + boldedNumber(s);
  633. }else{
  634. result+= boldedNumber(s);
  635. }
  636. return result;
  637. }
  638.  
  639. room.onTeamGoal = function(team){ // Write on chat who scored and when.
  640.  
  641. goalScored = true;
  642. var time = formatTime(room.getScores().time);
  643. var ownGoal = isOwnGoal(team, whoTouchedBall[0]);
  644. var assist = "";
  645. if (ownGoal == "gk"){
  646. if (whoTouchedBall[1].name!=null) {
  647. whoTouchedBall.splice(0, 1);
  648. ownGoal = isOwnGoal(team, whoTouchedBall[0]);
  649. } else {
  650. ownGoal = " (og)";
  651. }
  652. }
  653. if (ownGoal == "") assist = playerTouchedTwice(whoTouchedBall);
  654.  
  655. room.sendChat(time + " | " + boldedNumber(room.getScores().red) + " - " + boldedNumber(room.getScores().blue) + " | Bramka zdobyta przez " + whoTouchedBall[0].name +
  656. assist + ownGoal);
  657. if (ownGoal != "") {
  658. stats.get(whoTouchedBall[0].name)[4] += 1;
  659. } else {
  660. stats.get(whoTouchedBall[0].name)[0] += 1;
  661. }
  662.  
  663. if (whoTouchedBall[1] != init && assist != "") stats.get(whoTouchedBall[1].name)[1] += 1;
  664.  
  665.  
  666. if (scorers == undefined) scorers = new Map(); // Initializing dict of scorers
  667. scorers.set(scorers.size + 1 +"| " + whoTouchedBall[0].name, [time, assist, ownGoal])
  668. whoTouchedBall = [init, init];
  669. whoTouchedLast = undefined;
  670. }
  671.  
  672. room.onPositionsReset = function(){
  673. goalScored = false;
  674. }
  675.  
  676. room.onTeamVictory = function(scores){ // Sum up all scorers since the beginning of the match.
  677. if (scores.red > scores.blue) {
  678. updateWinLoseStats(redTeam, blueTeam);
  679. }
  680. else{ updateWinLoseStats(blueTeam, redTeam); }
  681.  
  682. room.sendChat("Strzelcy bramek:")
  683. for (var [key, value] of scorers) { // key: name of the player, value: time of the goal
  684. room.sendChat(key + " " + value[1] + value[2] + ": " + value[0]);
  685. }
  686. teamPossFun();
  687.  
  688. let functionStreakRed = streakRed
  689. let functionStreakBlue = streakBlue
  690. if (scores.red > scores.blue) {
  691. streakRed++;
  692. streakBlue = 0;}
  693. if (scores.red > scores.blue && streakRed > 1) {
  694. room.sendChat("Drużyna czerwonych wygrywa " + streakRed + " raz z rzędu!")};
  695. if (scores.red < scores.blue) {
  696. streakBlue++;
  697. streakRed = 0;}
  698. if (scores.red < scores.blue && streakBlue > 1) {
  699. room.sendChat("Drużyna niebieskich wygrywa " + streakBlue + " raz z rzędu!");
  700. }
  701.  
  702. }
  703.  
  704. room.onGameStop = function(){
  705. scorers = undefined;
  706. whoTouchedBall = [init, init];
  707. whoTouchedLast = undefined;
  708. hasFinished = false;
  709. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement