Advertisement
Guest User

Untitled

a guest
Oct 24th, 2021
482
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var Map = `{"name":"Big","width":600,"height":270,"spawnDistance":100,"bg":{"type":"grass","width":550,"height":240,"kickOffRadius":80,"cornerRadius":0},"vertexes":[{"x":-550,"y":240,"trait":"ballArea"},{"x":-550,"y":80,"trait":"ballArea"},{"x":-550,"y":-80,"trait":"ballArea"},{"x":-550,"y":-240,"trait":"ballArea"},{"x":550,"y":240,"trait":"ballArea"},{"x":550,"y":80,"trait":"ballArea"},{"x":550,"y":-80,"trait":"ballArea"},{"x":550,"y":-240,"trait":"ballArea"},{"x":0,"y":270,"trait":"kickOffBarrier"},{"x":0,"y":80,"trait":"kickOffBarrier"},{"x":0,"y":-80,"trait":"kickOffBarrier"},{"x":0,"y":-270,"trait":"kickOffBarrier"},{"x":-560,"y":-80,"trait":"goalNet"},{"x":-580,"y":-60,"trait":"goalNet"},{"x":-580,"y":60,"trait":"goalNet"},{"x":-560,"y":80,"trait":"goalNet"},{"x":560,"y":-80,"trait":"goalNet"},{"x":580,"y":-60,"trait":"goalNet"},{"x":580,"y":60,"trait":"goalNet"},{"x":560,"y":80,"trait":"goalNet"},{"x":-220,"y":270,"cMask":["c0"],"trait":"threeDefLine"},{"x":-220,"y":-270,"cMask":["c0"],"trait":"threeDefLine"},{"x":220,"y":-270,"cMask":["c1"],"trait":"threeDefLine"},{"x":220,"y":270,"cMask":["c1"],"trait":"threeDefLine"}],"segments":[{"v0":0,"v1":1,"trait":"ballArea"},{"v0":2,"v1":3,"trait":"ballArea"},{"v0":4,"v1":5,"trait":"ballArea"},{"v0":6,"v1":7,"trait":"ballArea"},{"v0":12,"v1":13,"curve":-90,"trait":"goalNet"},{"v0":13,"v1":14,"trait":"goalNet"},{"v0":14,"v1":15,"curve":-90,"trait":"goalNet"},{"v0":16,"v1":17,"curve":90,"trait":"goalNet"},{"v0":17,"v1":18,"trait":"goalNet"},{"v0":18,"v1":19,"curve":90,"trait":"goalNet"},{"v0":8,"v1":9,"trait":"kickOffBarrier"},{"v0":9,"v1":10,"curve":180,"cGroup":["blueKO"],"trait":"kickOffBarrier"},{"v0":9,"v1":10,"curve":-180,"cGroup":["redKO"],"trait":"kickOffBarrier"},{"v0":10,"v1":11,"trait":"kickOffBarrier"},{"v0":20,"v1":21,"cMask":["c0"],"trait":"threeDefLine"},{"v0":22,"v1":23,"cMask":["c1"],"trait":"threeDefLine"}],"goals":[{"p0":[-550,80],"p1":[-550,-80],"team":"red"},{"p0":[550,80],"p1":[550,-80],"team":"blue"}],"discs":[{"pos":[-550,80],"color":"FFCCCC","trait":"goalPost"},{"pos":[-550,-80],"color":"FFCCCC","trait":"goalPost"},{"pos":[550,80],"color":"CCCCFF","trait":"goalPost"},{"pos":[550,-80],"color":"CCCCFF","trait":"goalPost"}],"planes":[{"normal":[0,1],"dist":-240,"trait":"ballArea","_data":{"extremes":{"normal":[0,1],"dist":-240,"canvas_rect":[-653,-343,654,344],"a":[-653,-240],"b":[654,-240]}}},{"normal":[0,-1],"dist":-240,"trait":"ballArea","_data":{"extremes":{"normal":[0,-1],"dist":-240,"canvas_rect":[-653,-343,654,344],"a":[-653,240],"b":[654,240]}}},{"normal":[0,1],"dist":-270,"bCoef":0.1,"_data":{"extremes":{"normal":[0,1],"dist":-270,"canvas_rect":[-653,-343,654,344],"a":[-653,-270],"b":[654,-270]}}},{"normal":[0,-1],"dist":-270,"bCoef":0.1,"_data":{"extremes":{"normal":[0,-1],"dist":-270,"canvas_rect":[-653,-343,654,344],"a":[-653,270],"b":[654,270]}}},{"normal":[1,0],"dist":-600,"bCoef":0.1,"_data":{"extremes":{"normal":[1,0],"dist":-600,"canvas_rect":[-653,-343,654,344],"a":[-600,-343],"b":[-600,344]}}},{"normal":[-1,0],"dist":-600,"bCoef":0.1,"_data":{"extremes":{"normal":[-1,0],"dist":-600,"canvas_rect":[-653,-343,654,344],"a":[600,-343],"b":[600,344]}}}],"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"]},"threeDefLine":{"bCoef":0,"cGroup":["wall"],"bias":-385,"color":"C7E6BD"}},"redSpawnPoints":[[-100,-50],[-100,50],[-100,0]],"blueSpawnPoints":[[100,-50],[100,50],[100,0]],"canBeStored":false,"joints":[]}`
  2. var room = HBInit({roomName:"Test BoT!",noPlayer:false,public:false,maxPlayers:30});
  3.  
  4. var defLines = [];
  5. var cf = room.CollisionFlags;
  6.  
  7. var red_def_zone_player_count = room.getPlayerList().filter(p => room.getPlayerDiscProperties(p.id) != null && p.team == 1 && room.getPlayerDiscProperties(p.id).x <= JSON.parse(Map).vertexes[defLines[0].v0].x).length;
  8. var blue_def_zone_player_count = room.getPlayerList().filter(p => room.getPlayerDiscProperties(p.id) != null && p.team == 2 && room.getPlayerDiscProperties(p.id).x >= JSON.parse(Map).vertexes[defLines[1].v0].x).length;
  9.  
  10. room.setScoreLimit(3);
  11. room.setTimeLimit(3);
  12. room.setTeamsLock(true);
  13.  
  14. function GetTeam(id){
  15.     return room.getPlayerList().filter((player) => player.id != 0 && player.team == id);
  16. }
  17.  
  18. function updateAdmins(){
  19.   var players = room.getPlayerList().filter(player => player.id != 0);
  20.   if(players.length == 0) return;
  21.   if(players.find(player => player.admin) != null) return;
  22.   room.setPlayerAdmin(players[0].id,true);
  23. }
  24.  
  25. function adjustDefLines(player){
  26.     var players = room.getPlayerList();
  27.     var mfp_red = mostForwardPlayer(1);
  28.     var mfp_blue = mostForwardPlayer(2);
  29.     var non_mfp_red = GetTeam(1).filter(p => p.id !== mfp_red.id);
  30.     var non_mfp_blue = GetTeam(2).filter(p => p.id !== mfp_blue.id);
  31.  
  32.     if(room.getPlayerDiscProperties(mfp_red.id).cGroup === cf.red){
  33.     room.setPlayerDiscProperties(mfp_red.id,{cGroup:cf.red | cf.c0});
  34.     }
  35.     if(room.getPlayerDiscProperties(mfp_blue.id).cGroup === cf.blue){
  36.     room.setPlayerDiscProperties(mfp_blue.id,{cGroup:cf.blue | cf.c1});
  37.     }
  38.  
  39.     for(r in non_mfp_red){
  40.     if(room.getPlayerDiscProperties(non_mfp_red[r].id).cGroup !== cf.red){
  41.         room.setPlayerDiscProperties(non_mfp_red[r].id,{cGroup:cf.red});
  42.     }
  43.     }
  44.     for(b in non_mfp_blue){
  45.     if(room.getPlayerDiscProperties(non_mfp_blue[b].id).cGroup !== cf.blue){
  46.         room.setPlayerDiscProperties(non_mfp_blue[b].id,{cGroup:cf.blue});
  47.     }
  48.     }
  49. }
  50.  
  51. function findDefLines(){
  52.     defLines = JSON.parse(Map).segments.filter(s => s.trait == "threeDefLine");
  53. }
  54.  
  55. function sortByPosition(players) {
  56.     return players.sort(function(p1,p2) {
  57.         return p1.position.x - p2.position.x;
  58.     });
  59. }
  60.  
  61. function mostForwardPlayer(teamID){
  62.     var players = room.getPlayerList();
  63.     var playersTeam = players.filter(p => p.team === teamID);
  64.     var redTeam = GetTeam(1);
  65.     var blueTeam = GetTeam(2);
  66.     var redTeamLength = GetTeam(1).length;
  67.     var blueTeamLength = GetTeam(2).length;
  68.     teamSorted = sortByPosition(playersTeam);
  69.     if(teamID === 1){
  70.     return teamSorted[redTeamLength-1];
  71.     }
  72.     else if(teamID === 2){
  73.     return teamSorted[0];
  74.     }
  75. }
  76.  
  77. room.onPlayerJoin = function(player){
  78.     console.log(player.name + " has joined. - Auth: " + player.auth + " Conn: " + player.conn);
  79.     updateAdmins();
  80. }
  81.  
  82. room.onPlayerLeave = function(player){
  83.     console.log(player.name + " has left.");
  84.     updateAdmins();
  85. }
  86.  
  87. room.onPlayerChat = function(player,message){
  88.     console.log(player.name + ": " + message);
  89.     if(player.admin == true && message == "!big"){
  90.         room.setCustomStadium(Map);
  91.         return false;
  92.     }
  93. };
  94.  
  95. room.onGameStart = function(byPlayer){
  96.     findDefLines();
  97. }
  98.  
  99. room.onGameStop = function(byPlayer){
  100.     defLines = [];
  101. }
  102.  
  103. room.onGameTick = function(){
  104.     if(GetTeam(1).length > 0 && GetTeam(2).length > 0){
  105.     mostForwardPlayer();
  106.     adjustDefLines();
  107.     }
  108. }
  109.  
  110.     room.onPlayerTeamChange = function(changedPlayer, byPlayer)
  111.     {
  112.             if(changedPlayer.team == 1)
  113.             {
  114.                 room.setPlayerDiscProperties(changedPlayer.id,{x:-20,y:-251});
  115.             }
  116.             else if(changedPlayer.team == 2)
  117.             {
  118.                 room.setPlayerDiscProperties(changedPlayer.id,{x:20,y:-251});
  119.             }
  120.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement