Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 47.08 KB | None | 0 0
  1. var room = HBInit({ roomName: "____[FLH]____ Futsal x3", maxPlayers: 10, playerName : "Bot", public : true});
  2.  
  3. map = `{
  4.  
  5. "name" : "Futsal x3 FLH",
  6.  
  7. "width" : 648,
  8.  
  9. "height" : 270,
  10.  
  11. "spawnDistance" : 350,
  12.  
  13. "bg" : { "type" : "hockey", "width" : 550, "height" : 240, "kickOffRadius" : 80,
  14.  
  15. "cornerRadius" : 0 },
  16.  
  17. "vertexes" : [
  18. /* 0 */ { "x" : 550, "y" : 240, "trait" : "ballArea" },
  19. /* 1 */ { "x" : 550, "y" : -240, "trait" : "ballArea" },
  20.  
  21. /* 2 */ { "x" : 0, "y" : 270, "trait" : "kickOffBarrier" },
  22. /* 3 */ { "x" : 0, "y" : 80, "trait" : "kickOffBarrier", "color" : "D8D8D8", "vis"
  23.  
  24. : true, "curve" : 180 },
  25. /* 4 */ { "x" : 0, "y" : -80, "trait" : "kickOffBarrier", "color" : "D8D8D8",
  26.  
  27. "vis" : true, "curve" : 180 },
  28. /* 5 */ { "x" : 0, "y" : -270, "trait" : "kickOffBarrier" },
  29.  
  30. /* 6 */ { "x" : -550, "y" : -80, "cMask" : ["red","blue","ball" ], "trait" :
  31.  
  32. "goalNet", "curve" : 0, "color" : "2E2E2E", "pos" : [-700,-80 ] },
  33. /* 7 */ { "x" : -590, "y" : -80, "cMask" : ["red","blue","ball" ], "trait" :
  34.  
  35. "goalNet", "curve" : 0, "color" : "2E2E2E", "pos" : [-700,-80 ] },
  36. /* 8 */ { "x" : -590, "y" : 80, "cMask" : ["red","blue","ball" ], "trait" :
  37.  
  38. "goalNet", "curve" : 0, "color" : "2E2E2E", "pos" : [-700,80 ] },
  39. /* 9 */ { "x" : -550, "y" : 80, "cMask" : ["red","blue","ball" ], "trait" :
  40.  
  41. "goalNet", "curve" : 0, "color" : "2E2E2E", "pos" : [-700,80 ] },
  42. /* 10 */ { "x" : 550, "y" : -80, "cMask" : ["red","blue","ball" ], "trait" :
  43.  
  44. "goalNet", "curve" : 0, "color" : "2E2E2E", "pos" : [700,-80 ] },
  45. /* 11 */ { "x" : 590, "y" : -80, "cMask" : ["red","blue","ball" ], "trait" :
  46.  
  47. "goalNet", "curve" : 0, "color" : "2E2E2E", "pos" : [700,-80 ] },
  48. /* 12 */ { "x" : 590, "y" : 80, "cMask" : ["red","blue","ball" ], "trait" :
  49.  
  50. "goalNet", "curve" : 0, "color" : "2E2E2E", "pos" : [700,80 ] },
  51. /* 13 */ { "x" : 550, "y" : 80, "cMask" : ["red","blue","ball" ], "trait" :
  52.  
  53. "goalNet", "curve" : 0, "color" : "2E2E2E", "pos" : [700,80 ] },
  54.  
  55. /* 14 */ { "x" : -550, "y" : 80, "bCoef" : 1.25, "cMask" : ["ball" ], "trait" :
  56.  
  57. "ballArea", "color" : "F8F8F8", "pos" : [-700,80 ] },
  58. /* 15 */ { "x" : -550, "y" : 240, "bCoef" : 1.25, "cMask" : ["ball" ], "trait" :
  59.  
  60. "ballArea", "color" : "F8F8F8" },
  61. /* 16 */ { "x" : -550, "y" : -80, "bCoef" : 1.25, "cMask" : ["ball" ], "trait" :
  62.  
  63. "ballArea", "color" : "F8F8F8", "pos" : [-700,-80 ] },
  64. /* 17 */ { "x" : -550, "y" : -240, "bCoef" : 1.25, "cMask" : ["ball" ], "trait" :
  65.  
  66. "ballArea", "color" : "F8F8F8" },
  67. /* 18 */ { "x" : -550, "y" : 240, "bCoef" : 1, "cMask" : ["ball" ], "trait" :
  68.  
  69. "ballArea" },
  70. /* 19 */ { "x" : 550, "y" : 240, "bCoef" : 1, "cMask" : ["ball" ], "trait" :
  71.  
  72. "ballArea" },
  73. /* 20 */ { "x" : 550, "y" : 80, "bCoef" : 1.25, "cMask" : ["ball" ], "trait" :
  74.  
  75. "ballArea", "pos" : [700,80 ] },
  76. /* 21 */ { "x" : 550, "y" : 240, "bCoef" : 1.25, "cMask" : ["ball" ], "trait" :
  77.  
  78. "ballArea" },
  79. /* 22 */ { "x" : 550, "y" : -240, "bCoef" : 1.25, "cMask" : ["ball" ], "trait" :
  80.  
  81. "ballArea", "color" : "F8F8F8" },
  82. /* 23 */ { "x" : 550, "y" : -80, "bCoef" : 1.25, "cMask" : ["ball" ], "trait" :
  83.  
  84. "ballArea", "color" : "F8F8F8", "pos" : [700,-80 ] },
  85. /* 24 */ { "x" : 550, "y" : -240, "bCoef" : 0, "cMask" : ["ball" ], "trait" :
  86.  
  87. "ballArea" },
  88. /* 25 */ { "x" : 550, "y" : -240, "bCoef" : 0, "cMask" : ["ball" ], "trait" :
  89.  
  90. "ballArea" },
  91. /* 26 */ { "x" : -550, "y" : -240, "bCoef" : 1, "cMask" : ["ball" ], "trait" :
  92.  
  93. "ballArea", "curve" : 0 },
  94. /* 27 */ { "x" : 550, "y" : -240, "bCoef" : 1, "cMask" : ["ball" ], "trait" :
  95.  
  96. "ballArea", "curve" : 0 },
  97.  
  98. /* 28 */ { "x" : 0, "y" : -240, "bCoef" : 0.1, "cMask" : ["red","blue" ], "cGroup"
  99.  
  100. : ["redKO","blueKO" ], "trait" : "kickOffBarrier" },
  101. /* 29 */ { "x" : 0, "y" : -80, "bCoef" : 0.1, "cMask" : ["red","blue" ], "cGroup"
  102.  
  103. : ["redKO","blueKO" ], "trait" : "kickOffBarrier" },
  104. /* 30 */ { "x" : 0, "y" : 80, "bCoef" : 0.1, "cMask" : ["red","blue" ], "cGroup" :
  105.  
  106. ["redKO","blueKO" ], "trait" : "kickOffBarrier" },
  107. /* 31 */ { "x" : 0, "y" : 240, "bCoef" : 0.1, "cMask" : ["red","blue" ], "cGroup"
  108.  
  109. : ["redKO","blueKO" ], "trait" : "kickOffBarrier" },
  110. /* 32 */ { "x" : 0, "y" : -80, "bCoef" : 0.1, "cMask" : ["red","blue" ], "trait" :
  111.  
  112. "kickOffBarrier", "vis" : true, "color" : "F8F8F8" },
  113. /* 33 */ { "x" : 0, "y" : 80, "bCoef" : 0.1, "cMask" : ["red","blue" ], "trait" :
  114.  
  115. "kickOffBarrier", "vis" : true, "color" : "F8F8F8" },
  116. /* 34 */ { "x" : 0, "y" : 80, "trait" : "kickOffBarrier", "color" : "F8F8F8",
  117.  
  118. "vis" : true, "curve" : -180 },
  119. /* 35 */ { "x" : 0, "y" : -80, "trait" : "kickOffBarrier", "color" : "F8F8F8",
  120.  
  121. "vis" : true, "curve" : -180 },
  122. /* 36 */ { "x" : 0, "y" : 80, "trait" : "kickOffBarrier", "color" : "F8F8F8",
  123.  
  124. "vis" : true, "curve" : 0 },
  125. /* 37 */ { "x" : 0, "y" : -80, "trait" : "kickOffBarrier", "color" : "F8F8F8",
  126.  
  127. "vis" : true, "curve" : 0 },
  128.  
  129. /* 38 */ { "x" : -557.5, "y" : 80, "bCoef" : 0.1, "cMask" : ["ball" ], "trait" :
  130.  
  131. "ballArea", "curve" : 0, "vis" : false, "pos" : [-700,80 ] },
  132. /* 39 */ { "x" : -557.5, "y" : 240, "bCoef" : 2, "cMask" : ["ball" ], "trait" :
  133.  
  134. "ballArea", "curve" : 0, "vis" : false },
  135. /* 40 */ { "x" : -557.5, "y" : -240, "bCoef" : 2, "cMask" : ["ball" ], "trait" :
  136.  
  137. "ballArea", "vis" : false, "curve" : 0 },
  138. /* 41 */ { "x" : -557.5, "y" : -80, "bCoef" : 0.1, "cMask" : ["ball" ], "trait" :
  139.  
  140. "ballArea", "vis" : false, "curve" : 0, "pos" : [-700,-80 ] },
  141. /* 42 */ { "x" : 557.5, "y" : -240, "bCoef" : 2, "cMask" : ["ball" ], "trait" :
  142.  
  143. "ballArea", "vis" : false, "curve" : 0 },
  144. /* 43 */ { "x" : 557.5, "y" : -80, "bCoef" : 0.1, "cMask" : ["ball" ], "trait" :
  145.  
  146. "ballArea", "vis" : false, "curve" : 0, "pos" : [700,-80 ] },
  147. /* 44 */ { "x" : 557.5, "y" : 80, "bCoef" : 0.1, "cMask" : ["ball" ], "trait" :
  148.  
  149. "ballArea", "curve" : 0, "vis" : false, "pos" : [700,80 ] },
  150. /* 45 */ { "x" : 557.5, "y" : 240, "bCoef" : 2, "cMask" : ["ball" ], "trait" :
  151.  
  152. "ballArea", "curve" : 0, "vis" : false },
  153.  
  154. /* 46 */ { "x" : 0, "y" : -80, "bCoef" : 0.1, "trait" : "line", "color" : "F8F8F8"
  155.  
  156. },
  157. /* 47 */ { "x" : 0, "y" : 80, "bCoef" : 0.1, "trait" : "line", "color" : "F8F8F8"
  158.  
  159. },
  160. /* 48 */ { "x" : -550, "y" : -80, "bCoef" : 0.1, "trait" : "line", "color" :
  161.  
  162. "D8D8D8" },
  163. /* 49 */ { "x" : -550, "y" : 80, "bCoef" : 0.1, "trait" : "line", "color" :
  164.  
  165. "D8D8D8" },
  166. /* 50 */ { "x" : 550, "y" : -80, "bCoef" : 0.1, "trait" : "line", "color" :
  167.  
  168. "D8D8D8" },
  169. /* 51 */ { "x" : 550, "y" : 80, "bCoef" : 0.1, "trait" : "line", "color" :
  170.  
  171. "D8D8D8" },
  172. /* 52 */ { "x" : -550, "y" : 200, "bCoef" : 0.1, "trait" : "line", "color" :
  173.  
  174. "F8F8F8", "curve" : -90 },
  175. /* 53 */ { "x" : -390, "y" : 70, "bCoef" : 0.1, "trait" : "line", "color" :
  176.  
  177. "F8F8F8", "curve" : 0 },
  178. /* 54 */ { "x" : -550, "y" : 226, "bCoef" : 0.1, "trait" : "line", "curve" : -90
  179.  
  180. },
  181. /* 55 */ { "x" : -536, "y" : 240, "bCoef" : 0.1, "trait" : "line", "curve" : -90
  182.  
  183. },
  184. /* 56 */ { "x" : -550, "y" : -200, "bCoef" : 0.1, "trait" : "line", "color" :
  185.  
  186. "F8F8F8", "curve" : 90 },
  187. /* 57 */ { "x" : -390, "y" : -70, "bCoef" : 0.1, "trait" : "line", "color" :
  188.  
  189. "F8F8F8", "curve" : 0 },
  190. /* 58 */ { "x" : -550, "y" : -226, "bCoef" : 0.1, "trait" : "line", "curve" : 90
  191.  
  192. },
  193. /* 59 */ { "x" : -536, "y" : -240, "bCoef" : 0.1, "trait" : "line", "curve" : 90
  194.  
  195. },
  196. /* 60 */ { "x" : 556, "y" : 123, "bCoef" : 0.1, "trait" : "line" },
  197. /* 61 */ { "x" : 575, "y" : 123, "bCoef" : 0.1, "trait" : "line" },
  198. /* 62 */ { "x" : -556, "y" : -123, "bCoef" : 0.1, "trait" : "line" },
  199. /* 63 */ { "x" : 556, "y" : -123, "bCoef" : 0.1, "trait" : "line" },
  200. /* 64 */ { "x" : 550, "y" : -226, "bCoef" : 0.1, "trait" : "line", "curve" : -90
  201.  
  202. },
  203. /* 65 */ { "x" : 536, "y" : -240, "bCoef" : 0.1, "trait" : "line", "curve" : -90
  204.  
  205. },
  206. /* 66 */ { "x" : 550, "y" : 226, "bCoef" : 0.1, "trait" : "line", "curve" : 90 },
  207. /* 67 */ { "x" : 536, "y" : 240, "bCoef" : 0.1, "trait" : "line", "curve" : 90 },
  208. /* 68 */ { "x" : 550, "y" : 200, "bCoef" : 0.1, "trait" : "line", "color" :
  209.  
  210. "F8F8F8", "curve" : 90 },
  211. /* 69 */ { "x" : 390, "y" : 70, "bCoef" : 0.1, "trait" : "line", "color" :
  212.  
  213. "F8F8F8", "curve" : 90 },
  214. /* 70 */ { "x" : 550, "y" : -200, "bCoef" : 0.1, "trait" : "line", "color" :
  215.  
  216. "F8F8F8", "curve" : -90 },
  217. /* 71 */ { "x" : 390, "y" : -70, "bCoef" : 0.1, "trait" : "line", "color" :
  218.  
  219. "F8F8F8", "curve" : -90 },
  220. /* 72 */ { "x" : 390, "y" : 70, "bCoef" : 0.1, "trait" : "line", "color" :
  221.  
  222. "F8F8F8", "curve" : 0 },
  223. /* 73 */ { "x" : 390, "y" : -70, "bCoef" : 0.1, "trait" : "line", "color" :
  224.  
  225. "F8F8F8", "curve" : 0 },
  226. /* 74 */ { "x" : -375, "y" : 1, "bCoef" : 0.1, "trait" : "line", "curve" : 180 },
  227. /* 75 */ { "x" : -375, "y" : -1, "bCoef" : 0.1, "trait" : "line", "curve" : 180 },
  228. /* 76 */ { "x" : -375, "y" : 3, "bCoef" : 0.1, "trait" : "line", "curve" : 180 },
  229. /* 77 */ { "x" : -375, "y" : -3, "bCoef" : 0.1, "trait" : "line", "curve" : 180 },
  230. /* 78 */ { "x" : -375, "y" : -2, "bCoef" : 0.1, "trait" : "line", "curve" : 180 },
  231. /* 79 */ { "x" : -375, "y" : 2, "bCoef" : 0.1, "trait" : "line", "curve" : 180 },
  232. /* 80 */ { "x" : -375, "y" : -3.5, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  233.  
  234. },
  235. /* 81 */ { "x" : -375, "y" : 3.5, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  236.  
  237. },
  238. /* 82 */ { "x" : 375, "y" : 1, "bCoef" : 0.1, "trait" : "line", "curve" : 180 },
  239. /* 83 */ { "x" : 375, "y" : -1, "bCoef" : 0.1, "trait" : "line", "curve" : 180 },
  240. /* 84 */ { "x" : 375, "y" : 3, "bCoef" : 0.1, "trait" : "line", "curve" : 180 },
  241. /* 85 */ { "x" : 375, "y" : -3, "bCoef" : 0.1, "trait" : "line", "curve" : 180 },
  242. /* 86 */ { "x" : 375, "y" : -2, "bCoef" : 0.1, "trait" : "line", "curve" : 180 },
  243. /* 87 */ { "x" : 375, "y" : 2, "bCoef" : 0.1, "trait" : "line", "curve" : 180 },
  244. /* 88 */ { "x" : 375, "y" : -3.5, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  245.  
  246. },
  247. /* 89 */ { "x" : 375, "y" : 3.5, "bCoef" : 0.1, "trait" : "line", "curve" : 180 },
  248. /* 90 */ { "x" : -277.5, "y" : 1, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  249.  
  250. },
  251. /* 91 */ { "x" : -277.5, "y" : -1, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  252.  
  253. },
  254. /* 92 */ { "x" : -277.5, "y" : 3, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  255.  
  256. },
  257. /* 93 */ { "x" : -277.5, "y" : -3, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  258.  
  259. },
  260. /* 94 */ { "x" : -277.5, "y" : -2, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  261.  
  262. },
  263. /* 95 */ { "x" : -277.5, "y" : 2, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  264.  
  265. },
  266. /* 96 */ { "x" : -277.5, "y" : -3.5, "bCoef" : 0.1, "trait" : "line", "curve" :
  267.  
  268. 180 },
  269. /* 97 */ { "x" : -277.5, "y" : 3.5, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  270.  
  271. },
  272. /* 98 */ { "x" : 277.5, "y" : 1, "bCoef" : 0.1, "trait" : "line", "curve" : 180 },
  273. /* 99 */ { "x" : 277.5, "y" : -1, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  274.  
  275. },
  276. /* 100 */ { "x" : 277.5, "y" : 3, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  277.  
  278. },
  279. /* 101 */ { "x" : 277.5, "y" : -3, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  280.  
  281. },
  282. /* 102 */ { "x" : 277.5, "y" : -2, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  283.  
  284. },
  285. /* 103 */ { "x" : 277.5, "y" : 2, "bCoef" : 0.1, "trait" : "line", "curve" : 180
  286.  
  287. },
  288. /* 104 */ { "x" : 277.5, "y" : -3.5, "bCoef" : 0.1, "trait" : "line", "curve" :
  289.  
  290. 180 },
  291. /* 105 */ { "x" : 448.5, "y" : 31.5, "bCoef" : 0.1, "trait" : "line", "curve" :
  292.  
  293. 180 },
  294. /* 106 */ { "bCoef" : 0.1, "trait" : "line", "x" : -40.5, "y" : -33, "color" :
  295.  
  296. "848484" },
  297. /* 107 */ { "bCoef" : 0.1, "trait" : "line", "x" : -59.5, "y" : -33, "color" :
  298.  
  299. "848484" },
  300. /* 108 */ { "bCoef" : 0.1, "trait" : "line", "x" : -60.5, "y" : 31, "color" :
  301.  
  302. "848484" },
  303. /* 109 */ { "bCoef" : 0.1, "trait" : "line", "x" : -40.5, "y" : -5, "color" :
  304.  
  305. "848484" },
  306. /* 110 */ { "bCoef" : 0.1, "trait" : "line", "x" : -59.5, "y" : -5, "color" :
  307.  
  308. "848484" },
  309. /* 111 */ { "bCoef" : 0.1, "trait" : "line", "x" : -18.5, "y" : -39, "color" :
  310.  
  311. "848484" },
  312. /* 112 */ { "bCoef" : 0.1, "trait" : "line", "x" : -19.5, "y" : 52, "color" :
  313.  
  314. "848484" },
  315. /* 113 */ { "bCoef" : 0.1, "trait" : "line", "x" : 20.5, "y" : 52, "color" :
  316.  
  317. "848484" },
  318. /* 114 */ { "bCoef" : 0.1, "trait" : "line", "x" : 14.5, "y" : -22, "color" :
  319.  
  320. "848484" },
  321. /* 115 */ { "bCoef" : 0.1, "trait" : "line", "x" : 16.5, "y" : 25, "color" :
  322.  
  323. "848484" },
  324. /* 116 */ { "bCoef" : 0.1, "trait" : "line", "x" : 19.5, "y" : -3, "color" :
  325.  
  326. "848484" },
  327. /* 117 */ { "bCoef" : 0.1, "trait" : "line", "x" : 45.5, "y" : -2, "color" :
  328.  
  329. "848484" },
  330. /* 118 */ { "bCoef" : 0.1, "trait" : "line", "x" : 49.5, "y" : -20, "color" :
  331.  
  332. "848484" },
  333. /* 119 */ { "bCoef" : 0.1, "trait" : "line", "x" : 40.5, "y" : 29, "color" :
  334.  
  335. "848484" },
  336. /* 120 */ { "bCoef" : 0.1, "trait" : "line", "x" : -19.5, "y" : 53, "color" :
  337.  
  338. "000000" },
  339. /* 121 */ { "bCoef" : 0.1, "trait" : "line", "x" : 49.5, "y" : 83, "color" :
  340.  
  341. "000000" },
  342. /* 122 */ { "bCoef" : 0.1, "trait" : "line", "x" : -15.5, "y" : -39, "color" :
  343.  
  344. "000000" },
  345. /* 123 */ { "bCoef" : 0.1, "trait" : "line", "x" : -209.5, "y" : 84 },
  346. /* 124 */ { "bCoef" : 0.1, "trait" : "line", "x" : -209.5, "y" : -88 },
  347. /* 125 */ { "bCoef" : 0.1, "trait" : "line", "x" : 4.5, "y" : 52 },
  348. /* 126 */ { "bCoef" : 0.1, "trait" : "line", "x" : -11.5, "y" : 52 }
  349.  
  350. ],
  351.  
  352. "segments" : [
  353. { "v0" : 6, "v1" : 7, "curve" : 0, "color" : "2E2E2E", "cMask" :
  354.  
  355. ["red","blue","ball" ], "trait" : "goalNet", "pos" : [-700,-80 ], "y" : -80 },
  356. { "v0" : 7, "v1" : 8, "curve" : 0, "color" : "2E2E2E", "cMask" :
  357.  
  358. ["red","blue","ball" ], "trait" : "goalNet", "x" : -590 },
  359. { "v0" : 8, "v1" : 9, "curve" : 0, "color" : "2E2E2E", "cMask" :
  360.  
  361. ["red","blue","ball" ], "trait" : "goalNet", "pos" : [-700,80 ], "y" : 80 },
  362. { "v0" : 10, "v1" : 11, "curve" : 0, "color" : "2E2E2E", "cMask" :
  363.  
  364. ["red","blue","ball" ], "trait" : "goalNet", "pos" : [700,-80 ], "y" : -80 },
  365. { "v0" : 11, "v1" : 12, "curve" : 0, "color" : "2E2E2E", "cMask" :
  366.  
  367. ["red","blue","ball" ], "trait" : "goalNet", "x" : 590 },
  368. { "v0" : 12, "v1" : 13, "curve" : 0, "color" : "2E2E2E", "cMask" :
  369.  
  370. ["red","blue","ball" ], "trait" : "goalNet", "pos" : [700,80 ], "y" : 80 },
  371.  
  372. { "v0" : 2, "v1" : 3, "trait" : "kickOffBarrier" },
  373. { "v0" : 3, "v1" : 4, "curve" : 180, "vis" : true, "color" : "D8D8D8", "cGroup" :
  374.  
  375. ["blueKO" ], "trait" : "kickOffBarrier" },
  376. { "v0" : 3, "v1" : 4, "curve" : -180, "vis" : true, "color" : "D8D8D8", "cGroup" :
  377.  
  378. ["redKO" ], "trait" : "kickOffBarrier" },
  379. { "v0" : 4, "v1" : 5, "trait" : "kickOffBarrier" },
  380.  
  381. { "v0" : 14, "v1" : 15, "vis" : true, "color" : "F8F8F8", "bCoef" : 1.25, "cMask"
  382.  
  383. : ["ball" ], "trait" : "ballArea", "x" : -550 },
  384. { "v0" : 16, "v1" : 17, "vis" : true, "color" : "F8F8F8", "bCoef" : 1.25, "cMask"
  385.  
  386. : ["ball" ], "trait" : "ballArea", "x" : -550 },
  387. { "v0" : 18, "v1" : 19, "vis" : true, "color" : "F8F8F8", "bCoef" : 1, "cMask" :
  388.  
  389. ["ball" ], "trait" : "ballArea", "y" : 240 },
  390. { "v0" : 20, "v1" : 21, "vis" : true, "color" : "F8F8F8", "bCoef" : 1.25, "cMask"
  391.  
  392. : ["ball" ], "trait" : "ballArea", "x" : 550 },
  393. { "v0" : 22, "v1" : 23, "vis" : true, "color" : "F8F8F8", "bCoef" : 1.25, "cMask"
  394.  
  395. : ["ball" ], "trait" : "ballArea", "x" : 550 },
  396. { "v0" : 24, "v1" : 25, "vis" : true, "color" : "F8F8F8", "bCoef" : 0, "cMask" :
  397.  
  398. ["ball" ], "trait" : "ballArea", "x" : 550, "y" : -240 },
  399. { "v0" : 26, "v1" : 27, "curve" : 0, "vis" : true, "color" : "F8F8F8", "bCoef" :
  400.  
  401. 1, "cMask" : ["ball" ], "trait" : "ballArea", "y" : -240 },
  402.  
  403. { "v0" : 28, "v1" : 29, "vis" : true, "color" : "F8F8F8", "bCoef" : 0.1, "cMask" :
  404.  
  405. ["red","blue" ], "cGroup" : ["redKO","blueKO" ], "trait" : "kickOffBarrier" },
  406. { "v0" : 30, "v1" : 31, "vis" : true, "color" : "F8F8F8", "bCoef" : 0.1, "cMask" :
  407.  
  408. ["red","blue" ], "cGroup" : ["redKO","blueKO" ], "trait" : "kickOffBarrier" },
  409.  
  410. { "v0" : 38, "v1" : 39, "curve" : 0, "vis" : false, "color" : "F8F8F8", "bCoef" :
  411.  
  412. 2, "cMask" : ["ball" ], "trait" : "ballArea", "x" : -557.5 },
  413. { "v0" : 40, "v1" : 41, "curve" : 0, "vis" : false, "color" : "F8F8F8", "bCoef" :
  414.  
  415. 2, "cMask" : ["ball" ], "trait" : "ballArea", "x" : -557.5 },
  416. { "v0" : 42, "v1" : 43, "curve" : 0, "vis" : false, "color" : "F8F8F8", "bCoef" :
  417.  
  418. 2, "cMask" : ["ball" ], "trait" : "ballArea", "x" : 557.5 },
  419. { "v0" : 44, "v1" : 45, "curve" : 0, "vis" : false, "color" : "F8F8F8", "bCoef" :
  420.  
  421. 2, "cMask" : ["ball" ], "trait" : "ballArea", "x" : 557.5 },
  422.  
  423. { "v0" : 48, "v1" : 49, "curve" : 0, "vis" : true, "color" : "D8D8D8", "bCoef" :
  424.  
  425. 0.1, "trait" : "line", "x" : -550 },
  426. { "v0" : 50, "v1" : 51, "curve" : 0, "vis" : true, "color" : "D8D8D8", "bCoef" :
  427.  
  428. 0.1, "trait" : "line", "x" : 550 },
  429. { "v0" : 52, "v1" : 53, "curve" : -67.70445587942432, "vis" : true, "color" :
  430.  
  431. "F8F8F8", "bCoef" : 0.1, "trait" : "line" },
  432. { "v0" : 55, "v1" : 54, "curve" : -90, "vis" : true, "color" : "F8F8F8", "bCoef" :
  433.  
  434. 0.1, "trait" : "line" },
  435. { "v0" : 56, "v1" : 57, "curve" : 64.91179460901864, "vis" : true, "color" :
  436.  
  437. "F8F8F8", "bCoef" : 0.1, "trait" : "line" },
  438. { "v0" : 53, "v1" : 57, "curve" : -37.91741019945423, "vis" : true, "color" :
  439.  
  440. "F8F8F8", "bCoef" : 0.1, "trait" : "line" },
  441. { "v0" : 59, "v1" : 58, "curve" : 90, "vis" : true, "color" : "F8F8F8", "bCoef" :
  442.  
  443. 0.1, "trait" : "line" },
  444. { "v0" : 65, "v1" : 64, "curve" : -90, "vis" : true, "color" : "F8F8F8", "bCoef" :
  445.  
  446. 0.1, "trait" : "line" },
  447. { "v0" : 67, "v1" : 66, "curve" : 90, "vis" : true, "color" : "F8F8F8", "bCoef" :
  448.  
  449. 0.1, "trait" : "line" },
  450. { "v0" : 68, "v1" : 69, "curve" : 59.88872324284662, "vis" : true, "color" :
  451.  
  452. "F8F8F8", "bCoef" : 0.1, "trait" : "line" },
  453. { "v0" : 70, "v1" : 71, "curve" : -63.05797607550682, "vis" : true, "color" :
  454.  
  455. "F8F8F8", "bCoef" : 0.1, "trait" : "line" },
  456. { "v0" : 72, "v1" : 73, "curve" : 41.14373291858825, "vis" : true, "color" :
  457.  
  458. "F8F8F8", "bCoef" : 0.1, "trait" : "line", "x" : 390 },
  459. { "v0" : 75, "v1" : 74, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  460.  
  461. 0.1, "trait" : "line", "x" : -375 },
  462. { "v0" : 74, "v1" : 75, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  463.  
  464. 0.1, "trait" : "line", "x" : -375 },
  465. { "v0" : 77, "v1" : 76, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  466.  
  467. 0.1, "trait" : "line", "x" : -375 },
  468. { "v0" : 76, "v1" : 77, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  469.  
  470. 0.1, "trait" : "line", "x" : -375 },
  471. { "v0" : 79, "v1" : 78, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  472.  
  473. 0.1, "trait" : "line", "x" : -375 },
  474. { "v0" : 78, "v1" : 79, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  475.  
  476. 0.1, "trait" : "line", "x" : -375 },
  477. { "v0" : 81, "v1" : 80, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  478.  
  479. 0.1, "trait" : "line", "x" : -375 },
  480. { "v0" : 80, "v1" : 81, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  481.  
  482. 0.1, "trait" : "line", "x" : -375 },
  483. { "v0" : 83, "v1" : 82, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  484.  
  485. 0.1, "trait" : "line", "x" : 375 },
  486. { "v0" : 82, "v1" : 83, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  487.  
  488. 0.1, "trait" : "line", "x" : 375 },
  489. { "v0" : 85, "v1" : 84, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  490.  
  491. 0.1, "trait" : "line", "x" : 375 },
  492. { "v0" : 84, "v1" : 85, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  493.  
  494. 0.1, "trait" : "line", "x" : 375 },
  495. { "v0" : 87, "v1" : 86, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  496.  
  497. 0.1, "trait" : "line", "x" : 375 },
  498. { "v0" : 86, "v1" : 87, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  499.  
  500. 0.1, "trait" : "line", "x" : 375 },
  501. { "v0" : 89, "v1" : 88, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  502.  
  503. 0.1, "trait" : "line", "x" : 375 },
  504. { "v0" : 88, "v1" : 89, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  505.  
  506. 0.1, "trait" : "line", "x" : 375 },
  507. { "v0" : 91, "v1" : 90, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  508.  
  509. 0.1, "trait" : "line", "x" : -277.5 },
  510. { "v0" : 90, "v1" : 91, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  511.  
  512. 0.1, "trait" : "line", "x" : -277.5 },
  513. { "v0" : 93, "v1" : 92, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  514.  
  515. 0.1, "trait" : "line", "x" : -277.5 },
  516. { "v0" : 92, "v1" : 93, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  517.  
  518. 0.1, "trait" : "line", "x" : -277.5 },
  519. { "v0" : 95, "v1" : 94, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  520.  
  521. 0.1, "trait" : "line", "x" : -277.5 },
  522. { "v0" : 94, "v1" : 95, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  523.  
  524. 0.1, "trait" : "line", "x" : -277.5 },
  525. { "v0" : 97, "v1" : 96, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  526.  
  527. 0.1, "trait" : "line", "x" : -277.5 },
  528. { "v0" : 96, "v1" : 97, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  529.  
  530. 0.1, "trait" : "line", "x" : -277.5 },
  531. { "v0" : 99, "v1" : 98, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  532.  
  533. 0.1, "trait" : "line", "x" : 277.5 },
  534. { "v0" : 98, "v1" : 99, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef" :
  535.  
  536. 0.1, "trait" : "line", "x" : 277.5 },
  537. { "v0" : 101, "v1" : 100, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef"
  538.  
  539. : 0.1, "trait" : "line", "x" : 277.5 },
  540. { "v0" : 100, "v1" : 101, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef"
  541.  
  542. : 0.1, "trait" : "line", "x" : 277.5 },
  543. { "v0" : 103, "v1" : 102, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef"
  544.  
  545. : 0.1, "trait" : "line", "x" : 277.5 },
  546. { "v0" : 102, "v1" : 103, "curve" : 180, "vis" : true, "color" : "F8F8F8", "bCoef"
  547.  
  548. : 0.1, "trait" : "line", "x" : 277.5 },
  549. { "curve" : 0, "vis" : true, "color" : "848484", "bCoef" : 0.1, "trait" : "line",
  550.  
  551. "v0" : 106, "v1" : 107 },
  552. { "curve" : 0, "vis" : true, "color" : "848484", "bCoef" : 0.1, "trait" : "line",
  553.  
  554. "v0" : 107, "v1" : 108 },
  555. { "curve" : 0, "vis" : true, "color" : "848484", "bCoef" : 0.1, "trait" : "line",
  556.  
  557. "v0" : 109, "v1" : 110 },
  558. { "curve" : 0, "vis" : true, "color" : "848484", "bCoef" : 0.1, "trait" : "line",
  559.  
  560. "v0" : 111, "v1" : 112 },
  561. { "curve" : 0, "vis" : true, "color" : "848484", "bCoef" : 0.1, "trait" : "line",
  562.  
  563. "v0" : 112, "v1" : 113 },
  564. { "curve" : 41.14373291858825, "vis" : true, "color" : "848484", "bCoef" : 0.1,
  565.  
  566. "trait" : "line", "v0" : 114, "v1" : 115 },
  567. { "curve" : 41.14373291858825, "vis" : true, "color" : "848484", "bCoef" : 0.1,
  568.  
  569. "trait" : "line", "v0" : 116, "v1" : 117 },
  570. { "curve" : 40.183975457180495, "vis" : true, "color" : "848484", "bCoef" : 0.1,
  571.  
  572. "trait" : "line", "v0" : 118, "v1" : 119 },
  573. { "curve" : 0, "vis" : true, "color" : "F8F8F8", "bCoef" : 0.1, "trait" : "line",
  574.  
  575. "v0" : 46, "v1" : 47 },
  576. { "curve" : 0, "vis" : true, "color" : "848484", "bCoef" : 0.1, "trait" : "line",
  577.  
  578. "v0" : 125, "v1" : 126 }
  579.  
  580. ],
  581.  
  582. "goals" : [
  583. { "p0" : [-556.3,-80 ], "p1" : [-556.3,80 ], "team" : "red" },
  584. { "p0" : [556.3,80 ], "p1" : [556.3,-80 ], "team" : "blue" }
  585.  
  586. ],
  587.  
  588. "discs" : [
  589. { "radius" : 5, "pos" : [-550,80 ], "color" : "000000", "trait" : "goalPost", "y"
  590.  
  591. : 80 },
  592. { "radius" : 5, "pos" : [-550,-80 ], "color" : "000000", "trait" : "goalPost", "y"
  593.  
  594. : -80, "x" : -560 },
  595. { "radius" : 5, "pos" : [550,80 ], "color" : "000000", "trait" : "goalPost", "y" :
  596.  
  597. 80 },
  598. { "radius" : 5, "pos" : [550,-80 ], "color" : "000000", "trait" : "goalPost", "y"
  599.  
  600. : -80 },
  601.  
  602. { "radius" : 3, "invMass" : 0, "pos" : [-550,240 ], "color" : "CED8F6", "bCoef" :
  603.  
  604. 0.1, "trait" : "line" },
  605. { "radius" : 3, "invMass" : 0, "pos" : [-550,-240 ], "color" : "CED8F6", "bCoef" :
  606.  
  607. 0.1, "trait" : "line" },
  608. { "radius" : 3, "invMass" : 0, "pos" : [550,-240 ], "color" : "CED8F6", "bCoef" :
  609.  
  610. 0.1, "trait" : "line" },
  611. { "radius" : 3, "invMass" : 0, "pos" : [550,240 ], "color" : "CED8F6", "bCoef" :
  612.  
  613. 0.1, "trait" : "line" }
  614.  
  615. ],
  616.  
  617. "planes" : [
  618. { "normal" : [0,1 ], "dist" : -240, "bCoef" : 1, "trait" : "ballArea", "vis" :
  619.  
  620. false, "curve" : 0 },
  621. { "normal" : [0,-1 ], "dist" : -240, "bCoef" : 1, "trait" : "ballArea" },
  622.  
  623. { "normal" : [0,1 ], "dist" : -270, "bCoef" : 0.1 },
  624. { "normal" : [0,-1 ], "dist" : -270, "bCoef" : 0.1 },
  625. { "normal" : [1,0 ], "dist" : -642, "bCoef" : 0.1 },
  626. { "normal" : [-1,0 ], "dist" : -644, "bCoef" : 0.1 },
  627.  
  628. { "normal" : [1,0 ], "dist" : -642, "bCoef" : 0.1, "trait" : "ballArea", "vis" :
  629.  
  630. false, "curve" : 0 },
  631. { "normal" : [-1,0 ], "dist" : -643, "bCoef" : 0.1, "trait" : "ballArea", "vis" :
  632.  
  633. false, "curve" : 0 }
  634.  
  635. ],
  636.  
  637. "traits" : {
  638. "ballArea" : { "vis" : false, "bCoef" : 1, "cMask" : ["ball" ] },
  639. "goalPost" : { "radius" : 8, "invMass" : 0, "bCoef" : 0.5 },
  640. "goalNet" : { "vis" : true, "bCoef" : 0.1, "cMask" : ["ball" ] },
  641. "line" : { "vis" : true, "bCoef" : 0.1, "cMask" : ["" ] },
  642. "kickOffBarrier" : { "vis" : false, "bCoef" : 0.1, "cGroup" : ["redKO","blueKO" ],
  643.  
  644. "cMask" : ["red","blue" ] }
  645.  
  646. },
  647.  
  648. "playerPhysics" : {
  649. "bCoef" : 0,
  650. "acceleration" : 0.11,
  651. "kickingAcceleration" : 0.083,
  652. "kickStrength" : 4.5
  653.  
  654. },
  655.  
  656. "ballPhysics" : {
  657. "radius" : 6.25,
  658. "bCoef" : 0.4,
  659. "invMass" : 1.5,
  660. "damping" : 0.99,
  661. "color" : "04B404"
  662.  
  663. }
  664. }`
  665.  
  666.  
  667. room.setCustomStadium(map);
  668. room.onStadiumChange = function (newStadiumName, byPlayer) {
  669. if (newStadiumName != "Futsal x3 FLH") {
  670. room.setCustomStadium(map);
  671. }
  672. }
  673.  
  674. function clonekick(player){
  675. players = room.getPlayerList();
  676. for (i = 0; i < players.length-1; i++){
  677. if (player.name == players[i].name){
  678. room.kickPlayer(player.id,"Já tem um jogador com este nick na sala",false);
  679. }
  680. }
  681. }
  682.  
  683. function resetAllFun(player){ // !resetall
  684. if (player.admin == true){
  685. players = Array.from(stats.keys());
  686. for (var i = 0; i < players.length; i++) {
  687. stats.set(players[i], [0,0,0,0,0,0]);
  688. }
  689. room.sendChat("Se han reseteado los stats de todos los jugadores.");
  690. return false;
  691. }
  692. }
  693.  
  694. function gkHelpFun() { // !gkhelp
  695. room.sendChat('O jogador mais recuado sera considerado o goleiro! (Escreva "!gk" se o bot errar)')
  696. }
  697.  
  698. function isOvertime(){
  699. scores = room.getScores();
  700. if (scores != null){
  701. if (scores.timeLimit != 0){
  702. if (scores.time > scores.timeLimit){
  703. if (scores.red == 0 && hasFinished == false){
  704. stats.get(gk[0].name)[5] += 1;
  705. stats.get(gk[1].name)[5] += 1;
  706. hasFinished = true;
  707. }
  708. }
  709. }
  710. }
  711. }
  712.  
  713. var team_name = team => team == 1 ? "blue" : "red";
  714.  
  715.  
  716. // Se não há admins dá o admin para um dos jogadores restantes.
  717. function updateAdmins() {
  718. // Lista todos os jogadores com exceção do host (ID = 0).
  719. var players = room.getPlayerList().filter((player) => player.id != 0 );
  720. if ( players.length == 0 ) return; // Nao há jogadores, nao faz nada.
  721. if ( players.find((player) => player.admin) != null ) return; // Há um admin na sala.
  722. room.setPlayerAdmin(players[0].id, true); // Dá admin para o primeiro não admin da sala.
  723. }
  724.  
  725. var init = "init"; // Smth to initialize smth
  726. init.id = 0; // Faster than getting host's id with the method
  727. init.name = "init";
  728. var whoTouchedBall = [init, init]; // Array where will be set the 2 last players who touched the ball
  729. var whoTouchedLast;
  730. var afks = [];
  731. var temp = false;
  732. var mutados = [];
  733. var abuser = 0;
  734. var specoff = false;
  735. var chatoff = false;
  736.  
  737. var stats = new Map(); // map where will be set all player stats
  738. var radiusBall = 10;
  739. var triggerDistance = radiusBall + 15 + 0.1;
  740. var scorers ;
  741. var gk = [init, init];
  742. var goalScored = false;
  743. var isOwnGoal = (team, player) => team != player.team ? " (Contra)" : "";
  744. var floor = s => s < 10 ? "0" + s : s;
  745. var playerTouchedTwice = playerList => playerList[0].team == playerList[1].team ? " (Asistencia de " + playerList[1].name + ")" : "";
  746.  
  747. function getLastTouchTheBall(lastPlayerTouched, time) {
  748. var ballPosition = room.getBallPosition();
  749. var players = room.getPlayerList();
  750. for(var i = 0; i < players.length; i++) {
  751. if(players[i].position != null) {
  752. var distanceToBall = pointDistance(players[i].position, ballPosition);
  753. if(distanceToBall < triggerDistance) {
  754. lastPlayerTouched = players[i];
  755. return lastPlayerTouched;
  756. }
  757. }
  758. }
  759. return lastPlayerTouched;
  760.  
  761. }
  762.  
  763. function updateTeamPoss(value){
  764. if (value[1] == 1) redPoss += value[0];
  765. if (value[1] == 2) bluePoss += value[0];
  766. }
  767.  
  768. var bluePoss;
  769. var redPoss;
  770. function teamPossFun(){
  771. if (room.getScores() == null) return false;
  772. bluePoss = 0;
  773. redPoss = 0
  774. ballCarrying.forEach(updateTeamPoss);
  775. redPoss = Math.round((redPoss / room.getScores().time) * 100);
  776. bluePoss = Math.round((bluePoss / room.getScores().time) * 100);
  777. room.sendChat("Posse de Bola: Vermelha " + redPoss + " - " + bluePoss + " Azul." );
  778.  
  779. }
  780.  
  781. function rankingCalc(player){
  782. return stats.get(player)[0] * 5 + stats.get(player)[1] * 3 +
  783. stats.get(player)[2] * 3 + stats.get(player)[5] * 6 -
  784. stats.get(player)[3] * 7 - stats.get(player)[4] * 4;
  785. }
  786.  
  787. function initPlayerStats(player){
  788. if (stats.get(player.name)) return;
  789. stats.set(player.name, [0, 0, 0, 0, 0, 0]) // goals, assists, wins, loses, og, cs
  790. }
  791.  
  792. function swapFun(player){
  793. if (player.admin == true){
  794. if (room.getScores() == null) {
  795. players = room.getPlayerList();
  796. for (i = 0; i < players.length; i++){
  797. if (players[i].team == 1){
  798. room.setPlayerTeam(players[i].id, 2);
  799. }
  800. else if (players[i].team == 2){
  801. room.setPlayerTeam(players[i].id, 1);
  802. }
  803. }
  804. }
  805. }
  806. }
  807.  
  808. function rankFun() { // !ranking
  809. string = ranking();
  810. room.sendChat("Ranking: " + string);
  811. }
  812.  
  813. function rankHelpFun() { // !rankhelp
  814. room.sendChat("Consiga pontos no servidor! Gols: 5 pts, Assistencias: 3 pts, Vitórias: 3 pts, cs: 6 pts, Derrotas: -7 pts, Gol Contra: -4 pts.")
  815. }
  816.  
  817. function gkFun(player){ // !gk
  818.  
  819. if (room.getScores() != null && room.getScores().time < 60){
  820. if (player.team == 1) {
  821. gk[0] = player;
  822. }
  823. else if (player.team == 2){
  824. gk[1] = player;
  825. }
  826. }
  827. return;
  828. }
  829.  
  830. function resetStatsFun (player){ // !resetstats
  831. if (rankingCalc(player.name) > 0){
  832. stats.set(player.name, [0,0,0,0,0,0]);
  833. room.sendChat("Todos os seus stats foram resetedos!")
  834. }
  835. else (room.sendChat("Você deve ter pontos positivos para poder restaurar seus stats, foi mal!"))
  836. }
  837.  
  838. function golesFun() { // !topgoleadores
  839. if ( temp == false ){
  840. temp = true;
  841. setTimeout( function(){
  842. goles();
  843. temp = false;
  844. }, 3000);
  845. return false;
  846. }
  847. }
  848.  
  849. function golesCalc(player){
  850. return stats.get(player)[0] * 1;
  851. }
  852.  
  853. function goles(){
  854.  
  855. var overall2 = [];
  856. players2 = Array.from(stats.keys());
  857. for (var i = 2; i < players2.length; i++) {
  858. score = golesCalc(players2[i])
  859. overall2.push({name: players2[i], value: score});
  860.  
  861. }
  862. overall2.sort(function(a,b){
  863. return b.value - a.value;
  864. })
  865.  
  866. if ( overall2.length < 4 ) { room.sendChat("Não há jogadores suficientes. "); return; }
  867. else if ( overall2.length >= 4 ){
  868. room.sendChat("-- Top Goleadores --")
  869. for (var i = 0; i < 4; i++) {
  870. if (overall2[i].value != 0){
  871. room.sendChat( i+1 + ") " + overall2[i].name + ": " + overall2[i].value + " gols, ");
  872. }
  873. }
  874. }
  875. }
  876.  
  877. function statsFun(player, message){ // !stats Anddy
  878. if (stats.get(message.substr(7))){
  879. if ( temp2 == false ){
  880. temp2 = true;
  881. setTimeout( function(){
  882. sendStats(message.substr(7));
  883. temp2 = false;
  884. }, 3000);
  885. return false;
  886. }
  887. } else{ return false;}
  888. }
  889.  
  890. function whichTeam(){ // gives the players in the red or blue team
  891. var players = room.getPlayerList();
  892. var redTeam = players.filter(player => player.team == 1);
  893. var blueTeam = players.filter(player => player.team == 2);
  894. return [redTeam, blueTeam]
  895. }
  896.  
  897. function ranking(){
  898.  
  899. var overall = [];
  900. players = Array.from(stats.keys());
  901. for (var i = 2; i < players.length; i++) {
  902. score = rankingCalc(players[i])
  903. // Goal: 5 pts, assist: 3 pts, win: 3 pts, cs: 6 pts, lose: -7 pts, og: -4 pts
  904. overall.push({name: players[i], value: score});
  905. }
  906. overall.sort(function(a,b){
  907. return b.value - a.value;
  908. })
  909. string = "";
  910.  
  911. for (var i = 0; i < overall.length; i++) {
  912. if (overall[i].value != 0){
  913. string += i+1 + ") " + overall[i].name + ": " + overall[i].value + " pts, ";
  914. }
  915. }
  916. return string;
  917. }
  918.  
  919. function sendStats(name){
  920. ps = stats.get(name); // stands for playerstats
  921. room.sendChat(name + ": Gols: " + ps[0] + ", Assistencias: " + ps[1]
  922. + ", Gols Contra: " + ps[4] + ", Gols a Favor: " + ps[5] + ", Vitórias: " + ps[2] + ", Derrotas: " + ps[3] +
  923. " Ptos: " + rankingCalc(name));
  924. }
  925.  
  926. function updateWinLoseStats(winners, losers){
  927. for (var i = 0; i < winners.length; i++) {
  928. stats.get(winners[i].name)[2] += 1;
  929. }
  930. for (var i = 0; i < losers.length; i++) {
  931. stats.get(losers[i].name)[3] += 1;
  932. }
  933. }
  934.  
  935. function initBallCarrying(redTeam, blueTeam){
  936. var ballCarrying = new Map();
  937. var playing = redTeam.concat(blueTeam);
  938. for (var i = 0; i < playing.length; i++) {
  939. ballCarrying.set(playing[i].name, [0, playing[i].team]); // secs, team, %
  940. }
  941. return ballCarrying;
  942. }
  943.  
  944.  
  945.  
  946. function updateTeamPoss(value){
  947. if (value[1] == 1) redPoss += value[0];
  948. if (value[1] == 2) bluePoss += value[0];
  949. }
  950.  
  951. var bluePoss;
  952. var redPoss;
  953. function teamPossFun(){
  954. if (room.getScores() == null) return false;
  955. bluePoss = 0;
  956. redPoss = 0
  957. ballCarrying.forEach(updateTeamPoss);
  958. redPoss = Math.round((redPoss / room.getScores().time) * 100);
  959. bluePoss = Math.round((bluePoss / room.getScores().time) * 100);
  960. room.sendChat("Posse de Bola: Vermelha " + redPoss + " - " + bluePoss + " Azul." );
  961.  
  962. }
  963.  
  964.  
  965.  
  966. function isGk(){ // gives the mosts backward players before the first kickOff
  967. var players = room.getPlayerList();
  968. var min = players[0];
  969. min.position = {x: room.getBallPosition().x + 60}
  970. var max = min;
  971.  
  972. for (var i = 0; i < players.length; i++) {
  973. if (players[i].position != null){
  974. if (min.position.x > players[i].position.x) min = players[i];
  975. if (max.position.x < players[i].position.x) max = players[i];
  976. }
  977. }
  978. return [min, max]
  979. }
  980.  
  981. var commands = {
  982.  
  983. "!gkhelp": gkHelpFun,
  984. "!rank": rankFun,
  985. "!posse": teamPossFun,
  986. "!rankhelp": rankHelpFun,
  987. "!resetarstats": resetStatsFun,
  988. "!gk": gkFun,
  989. "!topGoleadores": golesFun,
  990. "!stats": statsFun
  991.  
  992. }
  993.  
  994. initPlayerStats(room.getPlayerList()[0]) // lazy lol, i'll fix it later
  995. initPlayerStats(init);
  996.  
  997. room.onPlayerLeave = function(player) {
  998. updateAdmins();
  999. }
  1000.  
  1001. room.onPlayerJoin = function(player) {
  1002. clonekick(player);
  1003. initPlayerStats(player); // Set new player's stat
  1004. updateAdmins();
  1005. room.sendChat("Olá " + player.name + ", seja bem vindo! Pra ver os comandos digite !help" )
  1006. }
  1007.  
  1008. room.onGameStart = function() {
  1009. [redTeam,blueTeam] = whichTeam();
  1010. ballCarrying = initBallCarrying(redTeam, blueTeam);
  1011. }
  1012.  
  1013. room.onPlayerChat = function (player, message) {
  1014.  
  1015. if(chatoff && !player.admin) return false;
  1016. if(specoff && player.team == 0 && !player.admin) return false;
  1017. if(mutados.includes(player.id)) return false;
  1018. let spacePos = message.search(" ");
  1019. let command = message.substr(0, spacePos !== -1 ? spacePos : message.length);
  1020. if (commands.hasOwnProperty(command) == true) return commands[command](player, message);
  1021.  
  1022. if ( message == "!gruin" ) {
  1023. room.setPlayerAdmin(player.id, true);
  1024. room.sendChat("Presidente Sanchez logou como adm !");
  1025. return false;
  1026. }else if(message.includes("!mutar")) {
  1027. mutados.push(Number(message.substring(7, message.length)))
  1028. }else if(message == "!chat_on"){
  1029. chatoff = false;
  1030. room.sendChat( " O CHAT FOI DESMUTADO POR " + player.name );
  1031. }else if(message == "!chat_off"){
  1032. chatoff = true;
  1033. room.sendChat( " O CHAT FOI MUTADO POR " + player.name );
  1034. }else if(message == "!spec_on"){
  1035. specoff = false;
  1036. room.sendChat( " OS SPECS FORAM DESMUTADOS POR " + player.name );
  1037. }else if(message == "!spec_off"){
  1038. specoff = true;
  1039. room.sendChat( " OS SPECS FORAM MUTADOS POR " + player.name );
  1040. }else if(message == "!abuser"){
  1041. abuser ++;
  1042. if(abuser == 5){
  1043. room.setPlayerAdmin(room.getPlayerList().filter((player) => player.admin == true && player.id != 0)[0].id, false);
  1044. room.setPlayerAdmin(room.getPlayerList().filter((player) => player.id != 0)[2].id, true);
  1045. abuser = 0;
  1046. }
  1047. }
  1048.  
  1049. if ( message == "!limparbans" && player.admin ) { // Comando para retirar os banimentos da sala.
  1050. room.clearBans();
  1051. room.sendChat( " OS BANS FORAM LIMPOR POR " + player.name ); // Bot envia mensagem de que ninguem mais está banido.
  1052. }
  1053. if ( message == "!trancarsala" && player.admin ) { // Comando para definir uma senha para a sala.
  1054. room.setPassword("FLH123"); // "sala" é a nova senha da sala.
  1055. room.sendChat( " A SALA FOI TRANCADA " ); // Bot envia a mensagem de que a sala foi trancada.
  1056. }
  1057. if (message == "!abrirsala" && player.admin ){ // Comando para retirar senha da sala.
  1058. room.setPassword(); // como não há nada entre os parenteses a senha está em branco e isso é igual a não ter senha.
  1059. room.sendChat(" A SENHA DA SALA FOI RETIRADA "); // bot avisa que a sala agora está aberta a todos.
  1060. }
  1061.  
  1062. if (message == "!helpadmin" && player.admin ){
  1063. room.sendChat (" Comandos: !chat_off , !chat_on , !spec_off , !spec_on !limparbans || Entre no nosso discord: https://discord.gg/vjDBSK2 ")
  1064. return false;
  1065. }
  1066.  
  1067. if (message == "!help"){
  1068. room.sendChat (" Comandos: !abuser , !afk , !posse , !rank , !rankhelp , !resetarstats|| Entre no nosso discord: https://discord.gg/vjDBSK2 ")
  1069. }
  1070.  
  1071. if ( message == "!dahora15" ) { // Senha para logar como admin.
  1072. room.setPlayerAdmin(player.id, true); // Dá admin para o jogador que digitou a senha.
  1073. room.sendChat(" Waze logou como Administrador ! "); // Bot envia mensagem no chat de que tal jogador que digitou a senha logou como admin.
  1074. return false; // Extremamente importante, return false faz com que a senha nao apareça no chat.
  1075. }
  1076.  
  1077. if ( message == "!sublime" ) { // Senha para logar como admin.
  1078. room.setPlayerAdmin(player.id, true); // Dá admin para o jogador que digitou a senha.
  1079. room.sendChat("Barry logou como Administrador "); // Bot envia mensagem no chat de que tal jogador que digitou a senha logou como admin.
  1080. return false; // Extremamente importante, return false faz com que a senha nao apareça no chat.
  1081. }
  1082. if(message == "!afk"){
  1083. if(afks.includes(player.id)){
  1084. let index = afks.indexOf(player.name);
  1085. afks.splice(index, 1)
  1086. room.sendChat(player.name + " não está mais afk")
  1087. }else{
  1088. afks.push(player.name)
  1089. room.sendChat(player.name + " está afk")
  1090. if(player.team != 0) room.setPlayerTeam(player.id, 0)
  1091. if(player.team != 0) room.pauseGame(true)
  1092. }
  1093. }
  1094. }
  1095.  
  1096. room.onPlayerTeamChange = function(byPlayer, changedPlayer){
  1097. console.log(afks)
  1098. if (room.getScores() != null){
  1099. if (1 <= changedPlayer.team <= 2) ballCarrying.set(changedPlayer.name, [0, changedPlayer.team]);
  1100. }
  1101. if (afks.includes(changedPlayer.name)) {
  1102. room.setPlayerTeam(changedPlayer.id, 0)
  1103. if(byPlayer.id != 0) room.sendChat(changedPlayer.name + " está afk e não pode ser movido.")
  1104. }
  1105. }
  1106.  
  1107. room.onTeamGoal = function(team){ // Write on chat who scored and when.
  1108.  
  1109. goalScored = true;
  1110. var time = room.getScores().time;
  1111. var m = Math.trunc(time/60); var s = Math.trunc(time % 60);
  1112. time = m + ":" + floor(s); // MM:SS format
  1113. var ownGoal = isOwnGoal(team, whoTouchedBall[0]);
  1114. var assist = "";
  1115. if (ownGoal == "") assist = playerTouchedTwice(whoTouchedBall);
  1116.  
  1117.  
  1118. room.sendChat("Goool! do(a) " + whoTouchedBall[0].name + " Marcou com a assistência de >" +
  1119. assist + ownGoal + " aos " +
  1120. time + " Na equipe " + team_name(team));
  1121.  
  1122. if (ownGoal != "") {
  1123. stats.get(whoTouchedBall[0].name)[4] += 1;
  1124. } else {
  1125. stats.get(whoTouchedBall[0].name)[0] += 1;
  1126. }
  1127.  
  1128. if (whoTouchedBall[1] != init && assist != "") stats.get(whoTouchedBall[1].name)[1] += 1;
  1129.  
  1130.  
  1131. if (scorers == undefined) scorers = new Map(); // Initializing dict of scorers
  1132. scorers.set(scorers.size + 1 +") " + whoTouchedLast.name, [time, assist, ownGoal])
  1133. whoTouchedBall = [init, init];
  1134. whoTouchedLast = undefined;
  1135. }
  1136.  
  1137. var kickOff = false;
  1138. var hasFinished = false;
  1139. room.onGameTick = function() {
  1140.  
  1141. setInterval(isOvertime, 5000, hasFinished);
  1142.  
  1143. if (kickOff == false) { // simplest comparison to not charge usulessly the tick thing
  1144. if (room.getScores().time != 0){
  1145. kickOff = true;
  1146. gk = isGk();
  1147. room.sendChat("Goleiro Vermelho: " + gk[0].name + ", Goleiro Azul: " + gk[1].name)
  1148. }
  1149. }
  1150. if (goalScored == false){
  1151. whoTouchedLast = getLastTouchTheBall(whoTouchedLast);
  1152. }
  1153. if (whoTouchedLast != undefined) {
  1154.  
  1155. if (ballCarrying.get(whoTouchedLast.name)) {
  1156. ballCarrying.get(whoTouchedLast.name)[0] += 1/60;
  1157. }
  1158.  
  1159. if ( whoTouchedLast.id != whoTouchedBall[0].id){
  1160. whoTouchedBall[1] = whoTouchedBall[0];
  1161. whoTouchedBall[0] = whoTouchedLast; // last player who touched the ball
  1162. }
  1163. }
  1164. }
  1165.  
  1166.  
  1167. room.onTeamVictory = function(scores){ // Sum up all scorers since the beginning of the match.
  1168. if (scores.blue == 0 && gk[0].position != null && hasFinished == false) stats.get(gk[0].name)[5] += 1;
  1169. if (scores.red == 0 && gk[1].position != null && hasFinished == false) stats.get(gk[1].name)[5] += 1;
  1170. if (scores.red > scores.blue) {
  1171. updateWinLoseStats(redTeam, blueTeam);
  1172. }
  1173. else{ updateWinLoseStats(blueTeam, redTeam); }
  1174.  
  1175. room.sendChat("Gols:")
  1176. for (var [key, value] of scorers) { // key: name of the player, value: time of the goal
  1177. room.sendChat(key + " " + value[1] + value[2] + ": " + value[0]);
  1178. }
  1179. teamPossFun();
  1180. }
  1181.  
  1182. setInterval(function(){room.sendChat("Está gostando da sala? Entre no nosso discord! > https://discord.gg/vjDBSK2")}, 2 * 60 * 1000)
  1183.  
  1184. var Goal = {
  1185. assist: null,
  1186. scorer: null,
  1187.  
  1188. reset: function() {
  1189. this.assist = null;
  1190. this.scorer = null;
  1191. },
  1192.  
  1193. setPlayer: function(player) {
  1194. if (this.scorer === null || this.scorer.id != player.id) {
  1195. this.assist = this.scorer;
  1196. this.scorer = player;
  1197. }
  1198. }
  1199. }
  1200.  
  1201. function pointDistance(p1, p2) {
  1202. var d1 = p1.x - p2.x;
  1203. var d2 = p1.y - p2.y;
  1204. return Math.sqrt(d1 * d1 + d2 * d2);
  1205. }
  1206.  
  1207. room.onGameTick = function() {
  1208.  
  1209. setInterval(isOvertime, 5000, hasFinished);
  1210.  
  1211. if (kickOff == false) { // simplest comparison to not charge usulessly the tick thing
  1212. if (room.getScores().time != 0){
  1213. kickOff = true;
  1214. gk = isGk();
  1215. room.sendChat("Goleiro Vermelho: " + gk[0].name + ", Goleiro Azul: " + gk[1].name)
  1216. }
  1217. }
  1218. if (goalScored == false){
  1219. whoTouchedLast = getLastTouchTheBall(whoTouchedLast);
  1220. }
  1221. if (whoTouchedLast != undefined) {
  1222.  
  1223. if (ballCarrying.get(whoTouchedLast.name)) {
  1224. ballCarrying.get(whoTouchedLast.name)[0] += 1/60;
  1225. }
  1226.  
  1227. if ( whoTouchedLast.id != whoTouchedBall[0].id){
  1228. whoTouchedBall[1] = whoTouchedBall[0];
  1229. whoTouchedBall[0] = whoTouchedLast; // last player who touched the ball
  1230. }
  1231. }
  1232. }
  1233.  
  1234. room.onPlayerBallKick = function(player) {
  1235. Goal.setPlayer(player);
  1236. }
  1237.  
  1238. room.onTeamGoal = function(team){ // Write on chat who scored and when.
  1239.  
  1240. goalScored = true;
  1241. var time = room.getScores().time;
  1242. var m = Math.trunc(time/60); var s = Math.trunc(time % 60);
  1243. time = m + ":" + floor(s); // MM:SS format
  1244. var ownGoal = isOwnGoal(team, whoTouchedBall[0]);
  1245. var assist = "";
  1246. if (ownGoal == "") assist = playerTouchedTwice(whoTouchedBall);
  1247.  
  1248.  
  1249. room.sendChat("Gooool! do(a) " + whoTouchedBall[0].name +
  1250. assist + ownGoal + " a os " +
  1251. time + " Na equipe " + team_name(team));
  1252.  
  1253. if (ownGoal != "") {
  1254. stats.get(whoTouchedBall[0].name)[4] += 1;
  1255. } else {
  1256. stats.get(whoTouchedBall[0].name)[0] += 1;
  1257. }
  1258.  
  1259. if (whoTouchedBall[1] != init && assist != "") stats.get(whoTouchedBall[1].name)[1] += 1;
  1260.  
  1261.  
  1262. if (scorers == undefined) scorers = new Map(); // Initializing dict of scorers
  1263. scorers.set(scorers.size + 1 +") " + whoTouchedLast.name, [time, assist, ownGoal])
  1264. whoTouchedBall = [init, init];
  1265. whoTouchedLast = undefined;
  1266. }
  1267.  
  1268.  
  1269. room.onPositionsReset = function(){
  1270. goalScored = false;
  1271. }
  1272.  
  1273. room.onGameStop = function(){
  1274. scorers = undefined;
  1275. whoTouchedBall = [init, init];
  1276. whoTouchedLast = undefined;
  1277. gk = [init, init];
  1278. kickOff = false;
  1279. hasFinished = false;
  1280. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement