Advertisement
Guest User

Untitled

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