Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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":[]}`
- var room = HBInit({roomName:"Test BoT!",noPlayer:false,public:false,maxPlayers:30});
- var defLines = [];
- var cf = room.CollisionFlags;
- 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;
- 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;
- room.setScoreLimit(3);
- room.setTimeLimit(3);
- room.setTeamsLock(true);
- function GetTeam(id){
- return room.getPlayerList().filter((player) => player.id != 0 && player.team == id);
- }
- function updateAdmins(){
- var players = room.getPlayerList().filter(player => player.id != 0);
- if(players.length == 0) return;
- if(players.find(player => player.admin) != null) return;
- room.setPlayerAdmin(players[0].id,true);
- }
- function adjustDefLines(player){
- var players = room.getPlayerList();
- var mfp_red = mostForwardPlayer(1);
- var mfp_blue = mostForwardPlayer(2);
- var non_mfp_red = GetTeam(1).filter(p => p.id !== mfp_red.id);
- var non_mfp_blue = GetTeam(2).filter(p => p.id !== mfp_blue.id);
- if(room.getPlayerDiscProperties(mfp_red.id).cGroup === cf.red){
- room.setPlayerDiscProperties(mfp_red.id,{cGroup:cf.red | cf.c0});
- }
- if(room.getPlayerDiscProperties(mfp_blue.id).cGroup === cf.blue){
- room.setPlayerDiscProperties(mfp_blue.id,{cGroup:cf.blue | cf.c1});
- }
- for(r in non_mfp_red){
- if(room.getPlayerDiscProperties(non_mfp_red[r].id).cGroup !== cf.red){
- room.setPlayerDiscProperties(non_mfp_red[r].id,{cGroup:cf.red});
- }
- }
- for(b in non_mfp_blue){
- if(room.getPlayerDiscProperties(non_mfp_blue[b].id).cGroup !== cf.blue){
- room.setPlayerDiscProperties(non_mfp_blue[b].id,{cGroup:cf.blue});
- }
- }
- }
- function findDefLines(){
- defLines = JSON.parse(Map).segments.filter(s => s.trait == "threeDefLine");
- }
- function sortByPosition(players) {
- return players.sort(function(p1,p2) {
- return p1.position.x - p2.position.x;
- });
- }
- function mostForwardPlayer(teamID){
- var players = room.getPlayerList();
- var playersTeam = players.filter(p => p.team === teamID);
- var redTeam = GetTeam(1);
- var blueTeam = GetTeam(2);
- var redTeamLength = GetTeam(1).length;
- var blueTeamLength = GetTeam(2).length;
- teamSorted = sortByPosition(playersTeam);
- if(teamID === 1){
- return teamSorted[redTeamLength-1];
- }
- else if(teamID === 2){
- return teamSorted[0];
- }
- }
- room.onPlayerJoin = function(player){
- console.log(player.name + " has joined. - Auth: " + player.auth + " Conn: " + player.conn);
- updateAdmins();
- }
- room.onPlayerLeave = function(player){
- console.log(player.name + " has left.");
- updateAdmins();
- }
- room.onPlayerChat = function(player,message){
- console.log(player.name + ": " + message);
- if(player.admin == true && message == "!big"){
- room.setCustomStadium(Map);
- return false;
- }
- };
- room.onGameStart = function(byPlayer){
- findDefLines();
- }
- room.onGameStop = function(byPlayer){
- defLines = [];
- }
- room.onGameTick = function(){
- if(GetTeam(1).length > 0 && GetTeam(2).length > 0){
- mostForwardPlayer();
- adjustDefLines();
- }
- }
- room.onPlayerTeamChange = function(changedPlayer, byPlayer)
- {
- if(changedPlayer.team == 1)
- {
- room.setPlayerDiscProperties(changedPlayer.id,{x:-20,y:-251});
- }
- else if(changedPlayer.team == 2)
- {
- room.setPlayerDiscProperties(changedPlayer.id,{x:20,y:-251});
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement