van.mz.playerAdvanced

Player display optimization 球员着色插件

目前為 2019-05-05 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name van.mz.playerAdvanced
  3. // @namespace van
  4. // @version 2.16
  5. // @description Player display optimization 球员着色插件
  6. // @author van
  7. // @match https://www.managerzone.com/*
  8. // @grant GM_setValue
  9. // @grant GM_getValue
  10. // @grant GM_listValues
  11. // @grant GM_deleteValue
  12. // @grant GM_setClipboard
  13. // @grant GM_xmlhttpRequest
  14. // @connect www.budeng.win
  15. // @require https://cdn.bootcss.com/pako/1.0.5/pako.min.js
  16. // @require https://cdn.jsdelivr.net/gh/vanjoge/MZExtension/Scripts/base64js.min.js
  17. // ==/UserScript==
  18.  
  19. var gm_mzlanguage = {
  20. zh: {
  21. Name: "中文",
  22. Save: "保存",
  23. Setting: "设置",
  24. SettingTitle: "点击可对语言进行设置",
  25. Language: "语言",
  26. NotSureEx: "挂牌后属性可能有变动,不确定转会市场显示是否是真实属性,请自行甄别。<br/>属性变动时间",
  27. NotSure: "属性不确定",
  28. ManualColorTitle: "点击可手动着色 快捷键:ALT + A",
  29. ManualColor: "手动着色",
  30. Jijing: "比赛集锦",
  31. dongzuo: "球员动作",
  32. Copyxml1: "复制主队战术",
  33. Copyxml2: "复制客队战术",
  34. CopyXmlMsg: "战术已复制到剪切板",
  35. CopyXmlMsgError: "战术复制失败",
  36. BA_NORMAL: "BA_NORMAL",
  37. BA_WALL: "站人墙",
  38. BA_HOLD: "抱着球",
  39. BA_DOWN: "倒地",
  40. BA_HOLD_THROWIN: "界外球准备",
  41. BA_THROWIN: "界外球",
  42. BA_LEFT_FOOT_SHOT_FWD: "射门/长传(L)",
  43. BA_LEFT_FOOT_SHOT_BACK: "BA_LEFT_FOOT_SHOT_BACK",
  44. BA_LEFT_FOOT_SHOT_RIGHT: "BA_LEFT_FOOT_SHOT_RIGHT",
  45. BA_LEFT_FOOT_SHOT_LEFT: "BA_LEFT_FOOT_SHOT_LEFT",
  46. BA_RIGHT_FOOT_SHOT_FWD: "射门/长传(R)",
  47. BA_RIGHT_FOOT_SHOT_BACK: "BA_RIGHT_FOOT_SHOT_BACK",
  48. BA_RIGHT_FOOT_SHOT_RIGHT: "BA_RIGHT_FOOT_SHOT_RIGHT",
  49. BA_RIGHT_FOOT_SHOT_LEFT: "BA_RIGHT_FOOT_SHOT_LEFT",
  50. BA_LEFT_FOOT_PASS_FWD: "短传(L)",
  51. BA_LEFT_FOOT_PASS_BACK: "BA_LEFT_FOOT_PASS_BACK",
  52. BA_LEFT_FOOT_PASS_RIGHT: "BA_LEFT_FOOT_PASS_RIGHT",
  53. BA_LEFT_FOOT_PASS_LEFT: "BA_LEFT_FOOT_PASS_LEFT",
  54. BA_RIGHT_FOOT_PASS_FWD: "短传(R)",
  55. BA_RIGHT_FOOT_PASS_BACK: "BA_RIGHT_FOOT_PASS_BACK",
  56. BA_RIGHT_FOOT_PASS_RIGHT: "BA_RIGHT_FOOT_PASS_RIGHT",
  57. BA_RIGHT_FOOT_PASS_LEFT: "BA_RIGHT_FOOT_PASS_LEFT",
  58. BA_PICK_UP_BALL: "捡起球",
  59. BA_DROP_BALL: "放下球",
  60. BA_HEADER: "争顶",
  61. BA_TRIP: "失误/被抢断?",
  62. BA_CELEBRATE: "庆祝进球",
  63. BA_GK_READY: "准备扑救?",
  64. BA_GK_ACRO_LEFT: "ACRO(L)",
  65. BA_GK_ACRO_LEFT_HOLD: "ACRO_HOLD(L)",
  66. BA_GK_ACRO_RIGHT: "ACRO(R)",
  67. BA_GK_ACRO_RIGHT_HOLD: "ACRO_HOLD(R)",
  68. BA_GK_SIDESTEP_LEFT: "移动(L)",
  69. BA_GK_SIDESTEP_RIGHT: "移动(R)",
  70. BA_GK_KICK: "BA_GK_KICK",
  71. BA_GK_THROW_BALL: "BA_GK_THROW_BALL",
  72. BA_GK_STRETCH_LEFT: "BA_GK_STRETCH_LEFT",
  73. BA_GK_STRETCH_LEFT_HOLD: "BA_GK_STRETCH_LEFT_HOLD",
  74. BA_GK_STRETCH_RIGHT: "BA_GK_STRETCH_RIGHT",
  75. BA_GK_STRETCH_RIGHT_HOLD: "BA_GK_STRETCH_RIGHT_HOLD",
  76. BA_BALL_OWNER: "持球/带球?",
  77. BA_TACKLE: "上抢(失败?)",
  78. BA_SLIDING_TACKLE: "BA_SLIDING_TACKLE",
  79. BA_SLIDING_TACKLE_STAND: "BA_SLIDING_TACKLE_STAND",
  80. BA_MAX: "BA_MAX",
  81. BA_MY_1001: "头球攻门(L)",
  82. BA_MY_1002: "头球攻门(R)",
  83. BA_MY_1003: "胸部/头部停球",
  84. BA_MY_1011: "上抢(成功)",
  85. BA_MY_1012: "上抢(失败)",
  86. Unknown: "未知"
  87.  
  88.  
  89. }
  90. ,
  91.  
  92. en: {
  93. Name: "English",
  94. Save: "Save",
  95. Setting: "Setting",
  96. SettingTitle: "Click setting language",
  97. Language: "Language",
  98. NotSureEx: "Skills may change after entering the transfer market.<br/>Change time ",
  99. NotSure: "Uncertain skill",
  100. ManualColorTitle: "Click the Colorable Skill. Shortcut key : ALT + A",
  101. ManualColor: "Colorable Skill",
  102. Jijing: "Events",
  103. dongzuo: "PlayerStatus",
  104. Copyxml1: "CopyXML(home)",
  105. Copyxml2: "CopyXML(away)",
  106. CopyXmlMsg: "The tactic was copied to the Clipboard!",
  107. CopyXmlMsgError: "Copy error!",
  108. BA_NORMAL: "Normal",
  109. BA_WALL: "Wall",
  110. BA_HOLD: "Hold",
  111. BA_DOWN: "Down",
  112. BA_HOLD_THROWIN: "HoldThrowin",
  113. BA_THROWIN: "Throwin",
  114. BA_LEFT_FOOT_SHOT_FWD: "FootShot(L)",
  115. BA_LEFT_FOOT_SHOT_BACK: "FootShotBack(L)",
  116. BA_LEFT_FOOT_SHOT_RIGHT: "FootShotRight(L)",
  117. BA_LEFT_FOOT_SHOT_LEFT: "FootShotLeft(L)",
  118. BA_RIGHT_FOOT_SHOT_FWD: "FootShot(R)",
  119. BA_RIGHT_FOOT_SHOT_BACK: "FootShotBack(R)",
  120. BA_RIGHT_FOOT_SHOT_RIGHT: "FootShotRight(R)",
  121. BA_RIGHT_FOOT_SHOT_LEFT: "FootShotLeft(R)",
  122. BA_LEFT_FOOT_PASS_FWD: "FootPass(L)",
  123. BA_LEFT_FOOT_PASS_BACK: "FootPassBack(L)",
  124. BA_LEFT_FOOT_PASS_RIGHT: "FootPassRight(L)",
  125. BA_LEFT_FOOT_PASS_LEFT: "FootPassLeft(L)",
  126. BA_RIGHT_FOOT_PASS_FWD: "FootPass(R)",
  127. BA_RIGHT_FOOT_PASS_BACK: "FootPassBack(R)",
  128. BA_RIGHT_FOOT_PASS_RIGHT: "FootPassRight(R)",
  129. BA_RIGHT_FOOT_PASS_LEFT: "FootPassLeft(R)",
  130. BA_PICK_UP_BALL: "PickUpBall",
  131. BA_DROP_BALL: "DropBall",
  132. BA_HEADER: "Header",
  133. BA_TRIP: "Trip",
  134. BA_CELEBRATE: "Celebrate",
  135. BA_GK_READY: "GkReady",
  136. BA_GK_ACRO_LEFT: "GkAcroLeft",
  137. BA_GK_ACRO_LEFT_HOLD: "GkAcroLeftHold",
  138. BA_GK_ACRO_RIGHT: "GkAcroRight",
  139. BA_GK_ACRO_RIGHT_HOLD: "GkAcroRightHold",
  140. BA_GK_SIDESTEP_LEFT: "GkSidestepLeft",
  141. BA_GK_SIDESTEP_RIGHT: "GkSidestepRight",
  142. BA_GK_KICK: "GkKick",
  143. BA_GK_THROW_BALL: "GkThrowBall",
  144. BA_GK_STRETCH_LEFT: "GkStretchLeft",
  145. BA_GK_STRETCH_LEFT_HOLD: "GkStretchLeftHold",
  146. BA_GK_STRETCH_RIGHT: "GkStretchRight",
  147. BA_GK_STRETCH_RIGHT_HOLD: "GkStretchRightHold",
  148. BA_BALL_OWNER: "BallOwner",
  149. BA_TACKLE: "Tackle",
  150. BA_SLIDING_TACKLE: "SlidingTackle",
  151. BA_SLIDING_TACKLE_STAND: "SlidingTackleStand",
  152. BA_MAX: "Max",
  153. BA_MY_1001: "HeadGoal(L)",
  154. BA_MY_1002: "HeadGoal(R)",
  155. BA_MY_1003: "StopTheBall",
  156. BA_MY_1011: "Tackle(Success)",
  157. BA_MY_1012: "Tackle(Fail)",
  158. Unknown: "Unknown"
  159.  
  160.  
  161. }
  162.  
  163. ,
  164. es: {
  165. Name: "Español",
  166. Save: "Grabar",
  167. Setting: "Ajustes",
  168. SettingTitle: "Haga clic en configuración Idioma",
  169. Language: "Idioma",
  170. NotSureEx: "Las skills pueden cambiar después de ingresar al mercado. <br/> Cambiar hora ",
  171. NotSure: "Skill incierta",
  172. ManualColorTitle: "Haga clic en la skill para colorear. Acceso directo: ALT + A",
  173. ManualColor: "Color de la skill",
  174. Jijing: "Eventos",
  175. dongzuo: "PlayerStatus",
  176. Copyxml1: "CopiarXML(local)",
  177. Copyxml2: "CopiarXML(visi)",
  178. CopyXmlMsg: "La táctica fue copiada al portapapeles",
  179. CopyXmlMsgError: "¡Error al copiar!",
  180. BA_NORMAL: "Normal",
  181. BA_WALL: "Wall",
  182. BA_HOLD: "Hold",
  183. BA_DOWN: "Down",
  184. BA_HOLD_THROWIN: "HoldThrowin",
  185. BA_THROWIN: "Throwin",
  186. BA_LEFT_FOOT_SHOT_FWD: "FootShot(L)",
  187. BA_LEFT_FOOT_SHOT_BACK: "FootShotBack(L)",
  188. BA_LEFT_FOOT_SHOT_RIGHT: "FootShotRight(L)",
  189. BA_LEFT_FOOT_SHOT_LEFT: "FootShotLeft(L)",
  190. BA_RIGHT_FOOT_SHOT_FWD: "FootShot(R)",
  191. BA_RIGHT_FOOT_SHOT_BACK: "FootShotBack(R)",
  192. BA_RIGHT_FOOT_SHOT_RIGHT: "FootShotRight(R)",
  193. BA_RIGHT_FOOT_SHOT_LEFT: "FootShotLeft(R)",
  194. BA_LEFT_FOOT_PASS_FWD: "FootPass(L)",
  195. BA_LEFT_FOOT_PASS_BACK: "FootPassBack(L)",
  196. BA_LEFT_FOOT_PASS_RIGHT: "FootPassRight(L)",
  197. BA_LEFT_FOOT_PASS_LEFT: "FootPassLeft(L)",
  198. BA_RIGHT_FOOT_PASS_FWD: "FootPass(R)",
  199. BA_RIGHT_FOOT_PASS_BACK: "FootPassBack(R)",
  200. BA_RIGHT_FOOT_PASS_RIGHT: "FootPassRight(R)",
  201. BA_RIGHT_FOOT_PASS_LEFT: "FootPassLeft(R)",
  202. BA_PICK_UP_BALL: "PickUpBall",
  203. BA_DROP_BALL: "DropBall",
  204. BA_HEADER: "Header",
  205. BA_TRIP: "Trip",
  206. BA_CELEBRATE: "Celebrate",
  207. BA_GK_READY: "GkReady",
  208. BA_GK_ACRO_LEFT: "GkAcroLeft",
  209. BA_GK_ACRO_LEFT_HOLD: "GkAcroLeftHold",
  210. BA_GK_ACRO_RIGHT: "GkAcroRight",
  211. BA_GK_ACRO_RIGHT_HOLD: "GkAcroRightHold",
  212. BA_GK_SIDESTEP_LEFT: "GkSidestepLeft",
  213. BA_GK_SIDESTEP_RIGHT: "GkSidestepRight",
  214. BA_GK_KICK: "GkKick",
  215. BA_GK_THROW_BALL: "GkThrowBall",
  216. BA_GK_STRETCH_LEFT: "GkStretchLeft",
  217. BA_GK_STRETCH_LEFT_HOLD: "GkStretchLeftHold",
  218. BA_GK_STRETCH_RIGHT: "GkStretchRight",
  219. BA_GK_STRETCH_RIGHT_HOLD: "GkStretchRightHold",
  220. BA_BALL_OWNER: "BallOwner",
  221. BA_TACKLE: "Tackle",
  222. BA_SLIDING_TACKLE: "SlidingTackle",
  223. BA_SLIDING_TACKLE_STAND: "SlidingTackleStand",
  224. BA_MAX: "Max",
  225. BA_MY_1001: "HeadGoal(L)",
  226. BA_MY_1002: "HeadGoal(R)",
  227. BA_MY_1003: "StopTheBall",
  228. BA_MY_1011: "Tackle(Success)",
  229. BA_MY_1012: "Tackle(Fail)",
  230. Unknown: "Desconocido"
  231. }
  232. };
  233. var now_language = gm_mzlanguage.en;
  234. function mzcamp() {
  235. this.data = {};
  236. this.name = null;
  237. this.keys = new Array();
  238. this.index = 0;
  239. this.add = function (begin, end) {
  240. if (end > begin + 2937600000) {
  241. end = begin + 2937600000;
  242. }
  243. if (this.data[begin] == undefined) {
  244. this.keys.push(begin);
  245. this.keys.sort(function (a, b) {
  246. return a - b;
  247. });
  248. }
  249. this.data[begin] = {
  250. begin: begin,
  251. end: end
  252. };
  253. };
  254. this.getItem = function (begin) {
  255. return this.data[begin];
  256. };
  257. this.resetIndex = function () {
  258. this.index = 0;
  259. };
  260. this.inYTC = function (x) {
  261. while (this.index < this.keys.length) {
  262. let item = this.data[this.keys[this.index]];
  263. if (x < item.begin) {
  264. return false;
  265. } else if (x <= item.end) {
  266. if (/\d/.test(item.name)) {
  267. return false;
  268. }
  269. return true;
  270. }
  271. if (x > item.end) {
  272. this.index++;
  273. }
  274. }
  275. return false;
  276. };
  277. };
  278. var mzreg = {
  279. playerMax: /trainingField.players\s*=\s*({.+})/,
  280. playerId: /player_id_(\d+)/,
  281. data2d_url: /matchviewer\/media/
  282. };
  283. var mzImg = {
  284. red_skill:
  285. [
  286. "",
  287. "",
  288. "",
  289. "",
  290. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADASURBVFhH7ZhBDoAgDAS94uP5kd/x4M0XaNZQUxshUg72sCRGrduE7giI01TakvOxz/PjQEye23M0fa2fjDccEOCAKU2DtanR9ITrcEADvqmXCw34bWaIoHeUzBQ4ALiAL6NdXgR7L25F05Oi0wGA1E2v8xJHTIOPpHeWzTQL3o54QG6B/1tPgk4H7NRt120BW5vq/9Y7y2YawK4pXaO69lWvt3XR9CQ44MBW9u9ft3PR9AOlMzXaD5ne/pBgnwMnVGDpfjrKHa4AAAAASUVORK5CYII=",
  291. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACySURBVFhH7ZhBDoAgDAS5wuP5kd/x4M0XaGpaszbW4HFDSYhQ96CdbLGWomPp/dhbe0yJ2X1/ZddH7zVV3IALTBsI1ieDXT8V3BHn3tR1gYDfKgOjPqFrBgSuuNvcbk73e0sYuz7BA3h0Lp7zFpcYgmfWJ/gAvHe8QP4Cz6ZP8EGp9+e2gY1KPZs+wUMbt9Z6uTr6qse2TtbM+gQPGdi0fx9t59j1CR8ywP5D5u/zzw7/BIZH4+GYZs1CAAAAAElFTkSuQmCC",
  292. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACtSURBVFhH5ZhBDoAgDAS5wuP5kd/x4M0XaNZQUxsxeGSXhKh1L2WyhZJSG0utx17KYyJm/+NTTd9bh6njBhwwbXiwMTk1/dRwR5x7U28vHvBbZVDQU0JHUoALd5vbzenx2xZATU8N3jvX7/MWR8yDV9LLgI+OB+Qv8Ox6avC+1Md928D2Sj27nhY8wK45X67unep9W6empwWPxLbWv4+2c2p6avhqFzJ/82WDfwLFrd5EQmi8RgAAAABJRU5ErkJggg==",
  293. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADbSURBVFhH7VjRCoMwDPTVfrx/5O/sYW/7gkqWnkuDlQiDuHEFUeOByV2TtJ2mNtZlqa9Sukts+O7vxJd6xs+It1vZIbgEgmGF9c4SX9+ig4dbiRl1xgawq94erMBHlYF4rZA/mflwHNmOieDfITzxmukjfqIJl46TIOywfR52sVnhiddMP+InXdCoA154n/ES3JnwxPf8RHlPx/nS7fs2hB2VeuK19KcLedUBEfYxz13fEjHtos8uXojXqT7i5yr/qfhn279Ht3PE/8F2jgc4n0Orbx5YpWZy4OcbEqHYp2q4IyoAAAAASUVORK5CYII=",
  294. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADfSURBVFhH7ZjBDoMgEES9ysf7R/2dHnrrF9BsYZpxUw3GtdvDmBgVJwHmsSwwTf26LUt9lrK6rQz//VP6UiP92fL50nIAt47gYrC+cunrGzp8OOvPpXBHIvdDvb8w4G8zg/RthuTI5wEx4k8KdKsUDUe0o+H+Gw2UvkV6lD+p4Hlkcp5HuZUxeOlbpEf48zfgfcRb5/bAS3/On1TwBo8XdhzRALs11fs8Jn1LA6N+poG3Bt7neZW3DCYvUvziRfo4f9LAW8WPvn8f3c5Jv7+dO+pPKnwdyMQeyBz189fwX20F0wr7zmFhAAAAAElFTkSuQmCC",
  295. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADeSURBVFhH7ZhLDoQgEETdyuG9kdeZxezmBJgeKFN2RiOZRjZFYlSsINSj+U1TTeuy5E9Kh8vy8N3fpU95pD9nXJryAdwagsRgfWHS5y90+PC0P01w70TuTr0+MOBfI4P0ZYTkyOcO0cOfEOhWCCqOaEfF/Tt+KH2J9FH+hILnnsnzPPItj8FLXyJ9hD/dwPuIt8ZdgZf+WX9CwRs8XthxRAPs2VDv5zHpyzTQy88w8FbB1zwf5i2DyYsUv3iRfpw/YeCtoHfdv9/dzkl/vZ3r7U8ofB3IjD2QafX/X/gb1OjNbdNi8SQAAAAASUVORK5CYII=",
  296. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADQSURBVFhH7ZhNDoQgDIXZyuG50VzHhTtPwKQDz9QGCLNrk0diVHgaeF9aflLq5VNKvXN+XVKHdnunPtdI/gw5ArgMBEWDtR9RX3/Q4YN3f4bQ9QAe6v1BAx5lBupbhtSR783PWcZO6DiiHR237/gB9S3So/izBK8jV8/zqJc6DZ76FukR/NkGbyNeBrcCT71vf7ZTvZ23AXaW6qlvqd+rP1PwAvY8jte8JTD1IsUuXqiP488UvDRcff++u52jfr2d8+bPEj4PZGIdyPzLy8L/AkpZx9CM/6kBAAAAAElFTkSuQmCC"
  297. ],
  298. red_skill_blevel:
  299. [
  300. "",
  301. "",
  302. "",
  303. "",
  304. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAN1JREFUeNpiYICCvX19/z9ycaFgkBgDDjDQ6v///w/Hy5cvB4mDMYiNLDeKsWMwQA5YGEAOePRIGQzq0SN9/tNaMB6NfCIjHjlA0QG2nDZY1COlXHCE1x+N/W/TJAWP/NHIJRDxsICE5S5YwKPzkXPjYFCPHvGwyB+NeBIiHluuQhZHj5jBoB65qGdkZBwt6imNePQcRihiBkr9aOOOykU9OiBUFA+U+tHIo0Lj7hknJ95WNHrjazCoH408yjCTc1ERIwsjIwM+AFKDzB5M6kcBhWAoD+CMYtIxQIABAD/G6io9wgMiAAAAAElFTkSuQmCC",
  305. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUeNrsWLENwkAMtBFNMgKz0DEHS6RHSAyQFVL+FCkzCvRMYPQvHPmtkC+oLPukk/6dq+5iy3qAL+ZxpHffV8w1+AFreiJamVLK9cJ8lt+8sEAaxZBGapMt6nXo0/NW6DX8qlM0tjrHql786SXw+3Kl8+O0hu8ueDaGu4WN1HfZXRb1OngO33XwW10i69poi3o56hExRr02TndMy2gr+ljuGqNeozVareg9httc7l5dt7sV62XKoj7Crnm4DAMeEWEPWSPPlvUB4w8y/zzgBAk+AgwATrKOZ9SrHu0AAAAASUVORK5CYII=",
  306. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANVJREFUeNpiYICCvX19/z9ycaFgkBgDDjDc1f///x+Oly9fDhIHYxAbWW6oYjBA9jgMIAcMeqCNBPXokT7/aS0YD5fIR0n56ABbThgp6pFyBjjC64/G/rdpkoJH/pCPeJhHYakfFjDofOTcMhLUo0c8LPKHVcRjS/XI4ugBNxLUIxf1jIyMw6+oRw8I9BxAKOCGq/ph37hDL/rQAaGicriqHw6RS7Bx94yTE28rF71xNBLUD/eIZ3IuKmJkYWRkwAdAapDZI0n9sAejAzi4B3CGIwYIMACTLTKkLYTX2wAAAABJRU5ErkJggg==",
  307. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAONJREFUeNrsmDEOwjAMRWPE0h6Bs7BxDi7RHSFxgFyBMadg5Ciwc4KgRKRyvtN2YXAkf8lSmr6hznctK8799PA+fsaxirTnFmR8zccY5wghpP0cac3faYksnkgRTxQPwXjJo+n31yWHVvOrSka1Ktv4Ns/+pGz49XmOx9thNl+d8eXDSzWXRPGZV7/xkkfji/mqjW9VMd/HgzBe8rzVE5H+Vo+JYUVvHYTxtfHdDHfYylBbrc94L4zvIfLw8h6G1akVhx3jJd+b8bvTNNGeyK0pMXxt/DLfnexC5n8XOD3EV4ABAA1G1tKnDW+dAAAAAElFTkSuQmCC",
  308. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAONJREFUeNpiYICCvX19/z9ycaFgkBgDDjCqnjL1////h+Ply5eDxMEYxEaWoxUGA2SHwQCyw9E9NaqecvXokT7/aS0Y0yvyUVImOsCWUkfVU0c9Us4DR3j90dj/Nk1S8MinecTDHAJLnTCHo/ORU/OoesrVo0c8LPLpGvHYUiWyOLrHRtVTrh65qGdkZKR/UY/uUPQUSshjo+rJUz/gjTv0ogkdECrKRtWTp54ekUuwcfeMkxNvKxS98TKqnnL1Ax3xTM5FRYwsjIwM+ABIDTJ7VD311A84GB1gGbgBnIHAAAEGALzfew8s0IRiAAAAAElFTkSuQmCC",
  309. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOJJREFUeNpiYICCvX19/z9ycaFgkBgDDjCqnr7q////D8fLly8HiYMxiI0sRywGA2SLYADZIeiOHFVPf/XokT7/aS0Ykxv5KCkNHWBLeaPqB0Y9Uk4FR3j90dj/Nk1S8MgnOeJhBsNSG8wh6Hzk1Dmqnv7q0SMeFvkURTy2VIYsju7QUfX0V49c1DMyMlJe1KNbjJ7iCDl0VD191FO9cYde1KADQkXTqHr6qCcncgk27p5xcuJtVaI3RkbV0189tSOeybmoiJGFkZEBHwCpQWaPqh849VQHowMmQ2cAhxoYIMAAohYfTLMKd8QAAAAASUVORK5CYII=",
  310. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO9JREFUeNrsmDEOwjAMReOKpT0CXIWNS2Rh4ArdERJ07hXY2lMwsnEN2DlBaCJcOW5oVhf5S1ZT6zUZvuVaKcxXt7Z176qKwufMDykvm3fOjdH3vc+H8GufC6IfoujG/FDl5fPc9OvzGALNjyqHK1VJyi+DR+PR9NN977bn9Wi+QRCrBzfm77TalJfPc+PR/Mj4VNXQPD9Yefk8bfUAMGn1Bf9/PJomeuakvGzeWgtd15nD5hJiMD3kJq2DK9dqlJfJ06k+FWFYeJXl7JTIhwvl5fM544tdXcMKYLadeIaulV8On5VegPzvBU4qPgIMABoVn4y9nkDEAAAAAElFTkSuQmCC"
  311. ],
  312. green_skill:
  313. [
  314. "",
  315. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACPSURBVFhH7ZgxCoAwFEO79f5ncejVdFICjcQPQuc0H0T9uiQvta2tzRrHdfd+fg70+DxnQwcIHKBZGgRDyZGkgF/q80IDEafMHABcwOdoZxDqvZnsyAF4LZ3n2UcvTpk5UMHXEQ/4AW8GHXLqp77O8wyCofS9Jeni7m9Vn22daUaynTMFuyIrP3BWXPJ55wH1ZAeNPHeqYQAAAABJRU5ErkJggg==",
  316. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC3SURBVFhH7VhBCoAwDNtt/3+LB7+mJ6WwSC3OmdMKZiBqDZomtNsspY112Y9at9thMTyPZxbfe4/iExWA4WYmhjc2UmPxE1PTp79U7uV6u/AGP3WGL3gpn1QBM9eqG9WOSo/3oM/ik6YtWmakH36eR9xi3ngGL4WTKhCNjxVvJr8ZP8InTVu0YuuO8zaM7bX6EV4KJ1XAr957q3q/rWPxSdMWLVOA3Z6xeKmcWAH2hwyLT5z6L6mdbM4PGe5TPwoAAAAASUVORK5CYII=",
  317. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC6SURBVFhH7ZhLCoAwDES76/3P4sKr6UoZ6EgMViw02TgFscahMXmkH0tpbV32o9btdsHG9/4ere/5lX1iBggcMNksWO8qWj8xNA31pXIv6q1jAT/NDBF6kUrKAOCiulntrHT/zM+J1ieFLTcAaZtd52mHzYKP1ItIUgY8eF/xgPwGfrY+KWy58VO3X7cJtjfVz9aLSFIG7O69t6u3x7pofVLYcoMMRB/PRscXlcQMRP+QGR0/MfRfujoBedoWpRqlwWYAAAAASUVORK5CYII=",
  318. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC3SURBVFhH7ZhLCoAwDETd9f5nceHVdKUEOhKDLTRddBZTEDVOoJmn/bhttR37dZdyfg6L4Xk8s+lb/VS84wCAG0w0DzamsukFN+GAB/xSrxce8N/IwKBPlKwUc8DgGnx87XgR4j3cYtOLYtIBA+mbn+cRt5gHz6RPlq20CD5+8Qa5B361XgSTDsShO87bANsa6lfrk2UrzS/uWqt6v61j04vghANs27PR/kyUrlS2HzKj/RHBMQceHJceMQCHNbYAAAAASUVORK5CYII=",
  319. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACqSURBVFhH7ZjBCoAwDEN32/9/iwd/TU9KoZFYVnHHsA5ErTnMPtKta83Hvp1X78frshi+x7u6PvuvpeIAbjAxGGxMhrp+Kbh/nPtQ9wcGPKoMivqC7hkwuOZuuB1Oj+9ImLq+wBN4di6v84hbjMEr6wt8Aj463iB/gVfTF/ik1Md1G2CzUq+mL/CDNi7b1XNbx7t9RX2Bpwyot2ez8y/4lAH1A5nZ+a8O/wZU9iW93UtuGAAAAABJRU5ErkJggg==",
  320. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACqSURBVFhH7ZjBDoAgDEO58f/f4sFf05NmCZW6OOKVDhKjzl7g2TFWShv7dl61Hq/LYvju79n00TpMHQdwg4nBYP3ksumnhvvHuQ/19sCAvzJDBr0kdJuUwTV3w+1wun/HAmTTS4Nn5/I+j7jFGHwmfRrw3vEGeQReXS8NnlO937cBNkr16npZ8Fy9R1U9H+uy6WXBo8BD0baOc72ekYa+Gji9aTVqWKn9BDcjBi1Jkz7/KwAAAABJRU5ErkJggg==",
  321. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADPSURBVFhH7VhBDoAwCPPm/9/iwa/paQaxhhG3sBMz6RKjYg/QDgYuy7P27SzrelSX2PDd34k/So+fFm9T2SG4BIJlhfXOEl9u0cHDVGJGnbEBvKo/D1bgr8pAvFbIX2Y+HEe2YyP4dwhPvGZ6i59owqXjJAi77DkPu9is8MRrpn/xky5o1AEvvM94Ca4nPPE1P1He03G+dPtzG8K2Sj3xWvrThRx1wDZ3ra7eNi/E61b3PIzyPgWe41l/PBvlZwpRo07wh0x/LBvlJ8p7Fu4Chrg01UrUXzQAAAAASUVORK5CYII=",
  322. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADZSURBVFhH7ZjBDoQgDES9+f/f4mF/zT1hujhmbISwsW73MCZGxSbAPAYK07Rfr+Vd5nk93VaG//6p+LVE6tPS+dFyALeO4GKwvnLFlw906HBXn0fhjjj3oL6/MOCrmUHxdYZk5/OAGNEnBbpViobD7Wi4/0YDFV+dHqVPKngembzOo9zKGLziq9Mj9Pkb8N7x1rkeeMXf0ycVvMHjxI4dDbCtqd6vY4qvy8ConmngORlpZfWt5EXx/eRuRJ808EjwOGExF0duV7T96+uZCl8HMrEHMt/q+Wv4G4AbPGGz4g/QAAAAAElFTkSuQmCC",
  323. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADZSURBVFhH7ZjBDoQgDES9+f/fsof9NT1hujibsVnIEou9DIlRa4Mwj0JhWc7yfu1lXbfLZTZ893f5byVTnxaXITuAW0dQGKyvTP7lAx06PK3PENx/IvdL/XxgwL9mBvnXGZIjnwfEDH1CoFslaDiiHQ337/ih/GukZ+kTCp5HJq/zsJuNwcu/RnqGPtPA+4i3zvXAy/9ZfULBGzxO7DiiAbY11ft1TP51GZilZxh4TkZaWX0reZF/P7mboU8YeCR4nLBYFGduV7Rd7OsfCl8HMrkHMqP634V/AA8vQ+1df+9kAAAAAElFTkSuQmCC",
  324. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADESURBVFhH7ZhLDoAgDETZcf+zuPBqusJUHFMbSmTXJkNiVBgNzEvLp5Sn7NvZaj0+l9Sh3d6pP1omf4YcAVwGgqLB2o+obzd0+BDdnyF0PYCX+vOgAY8yA/U9Q+rIj+anl7ELOo5oR8ftO35AfY/0LP5MwevI1fM86qVOg6e+R3oGf36DtxEvg5uBpz62P79TvZ23AdZL9dT31B/VHxe8Xox4q3pv8UL9fHEXwR8XvDRwe5Zre7bKawqfBzK5DmRWeVn4FzPlS3kjdc0LAAAAAElFTkSuQmCC"
  325. ],
  326. green_skill_blevel:
  327. [
  328. "",
  329. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAOdJREFUeNrslzEKAjEQRWdEzB2s9iB2aRQULGw9ighexHIbC0FBL+BRvEPWJpLgxL8R0TZhHnzYnWyVP/mZJXpxOXXeGNdTqMm69z6pbdtQjwrPuKYqQxE0WsBGQOPF9P19E6XmF2o8GpyTNYR0SjR8e1v7yW6czNfNLEvD5crT8cCS6HQ9P0hqzpn07hz1aJqGrLWkFEp+0vGOxxpGPTNr1Jce9bnxEv1436PxOtzVIQ6mStRP56OPRHhHvWHNx4rA4e7bVI/DnaoODWaL3yf5n2+UsmA8+SHSkXAFiOnpp1+pgqcAAwA2YdI0uYtBawAAAABJRU5ErkJggg==",
  330. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAP1JREFUeNrsWEEKwjAQzIpY3+CpD/HWi4KCB68+RQQ/4rEXD4KCfsCn+IfUSzTBDdto2hQEV9iBgXY7p05nslSpF87HymSZrtHOVARtemOMZ1mWdu5or+kz4W/oQI1DUGND01P0oem729pRzGdiPDUsxKckp+rJl+UM31xXZrwdefPl5f+W/cXSqMMefJovp7vCmdaZv0ek6rWut0Se56ooCiVggjC59Myms656WvUAIFXPrepDI7HK6fndZHxML8sdb4I1Cat7Mhu8NQJWd1UNAY1P0T9rH6RPGYMua7EtPbbcNeklVbzZm87bk0k1XfWCP0r+t3/gCPnxIcAAqgwADpJouaIAAAAASUVORK5CYII=",
  331. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO5JREFUeNrsmDEKAjEQRSci5A5WOYhdKgvBwtajiOBFLNNYCAp6AY/iHaLNSIIJs2GjTWbXYj582J393ctMhgX46Hp+ota+41CDilrnETHbORfq0eGZfhO3cRQFkURBlRA58iX0w2MbLfCZwFMApfo6kytPTmIEvrtvcL6fZfgCq62nqzXC6ahyd94uL0g173V+T+LKe9+dEsYYsNaCiEllJ9I7mNa483TUK6Vk1HOP+hJMGs30Pv4GslVelrsRwAcIFEQfKAqSIy8wRlzualt3bVlrmRcYw3qyWGr1aw+gGe68aGD90w8cMb/fAgwAkWYpnU/mV8wAAAAASUVORK5CYII=",
  332. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANVJREFUeNpiYICC7Zt//mdn/4GCQWIMOMBAq////z8cL1++HCQOxiA2stwoxo7BADlgYQA54NEjZTCoR4/0+U9rwXg08omMeOQARQfYctpgUY+UcsERXn809r9NkxQ88kcjl0DEwwISlrtgAY/OR86Ng0E9esTDIn804kmIeGy5ClkcPWIGg3rkop6RkXG0qKc04tFzGKGIGSj1o407Khf16IBQUTxQ6kcjj4qNO1ytaFyNr4FUPxp5lGEmT192RgYCAFnNYFM/CigEQ3kAZxSTjgECDABGFRX5kmgsvgAAAABJRU5ErkJggg==",
  333. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAM9JREFUeNrsWMEJAjEQ3PhJD9ZiAz4swVJEsBGfKcCHFViKPehrJcE9NsuFCL6G3YGBu9y8Zm6WJURf3G9vzvnVsZ7RAGh6Zl5YSqnnjfVZf/PCBm2UQBtpTUbU29Cvz1Oj1/C7plisNQdVr/70Fvj5ceTdZbuE7y54MUbaIkbad90uRL0NXsJ3HfxaS/S5NRpRr0d9SilGvTXONmZmNIo+lrvJqLeYjVYUvcdwf17uRlvxaJlC0kfYPTf7Q040gdag6wPgFzL/XOAEmT4CDAB1xsUXGbRqMwAAAABJRU5ErkJggg==",
  334. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAM5JREFUeNpiYICC7Zt//mdn/4GCQWIMOMBwV////384Xr58OUgcjEFsZLmhisEA2eMwgBww6IE2EtSjR/r8p7VgPFwiHyXlowNsOWGkqEfKGeAIrz8a+9+mSQoe+UM+4mEehaV+WMCg85Fzy0hQjx7xsMgfVhGPLdUji6MH3EhQj1zUMzIyDr+iHj0g0HMAoYAbruqHfeMOvehDB4SKyuGqfjhELtGNO1ytXFyNo+GsfrhHPJOnLzsjAwGArGakqR/2YHQAB/cAznDEAAEGAM3odEQYHimLAAAAAElFTkSuQmCC",
  335. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANxJREFUeNpiYICC7Zt//mdn/4GCQWIMOMCoelT1////h+Ply5eDxMEYxEaWGywYDJA9AgPIHkUPhFH1mOrRI33+01owHqyRj5KS0QG2lD2qHrt6pJwEjvD6o7H/bZqk4JE/6CIe5nBYaoZ5FJ2PnPpH1WOqR494WOQP6ojHloqRxdEDYlQ9pnrkop6RkXHwF/XoHkNP0YQCYlQ9asQPmcYdelGGDggVfaPqf2JE/FDAKI0XXK1WXI2dUfWYjbuhgpk8fdkZGQgAZDWj6vGrH3JgdECGegM4QwEDBBgAToojce1k6CoAAAAASUVORK5CYII=",
  336. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANtJREFUeNpiYICC7Zt//mdn/4GCQWIMOMCoesrU////H46XL18OEgdjEBtZjlYYDJAdBgPIDkf31Kh6ytWjR/r8p7VgTK/IR0mZ6ABbSh1VTx31SDkPHOH1R2P/2zRJwSOf5hEPcwgsdcIcjs5HTs2j6ilXjx7xsMina8RjS5XI4ugeG1VPuXrkop6RkZH+RT26Q9FTKCGPjaonT/2AN+7QiyZ0QKgoG1VPnnp6RC7RjTtcrVBcjZdR9eSrH+iIZ/L0ZWdkIACQ1Yyqp676AQejAywDN4AzEBggwAD3jtKPndMGXwAAAABJRU5ErkJggg==",
  337. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANtJREFUeNpiYICC7Zt//mdn/4GCQWIMOMCoevqq////PxwvX74cJA7GIDayHLEYDJAtggFkh6A7clQ9/dWjR/r8p7VgTG7ko6Q0dIAt5Y2qHxj1SDkVHOH1R2P/2zRJwSOf5IiHGQxLbTCHoPORU+eoevqrR494WORTFPHYUhmyOLpDR9XTXz1yUc/IyEh5UY9uMXqKI+TQUfX0UU/1xh16UYMOCBVNo+rpo56cyCW6cYerVYmrMTKqnn7qqR3xTJ6+7IwMBACymlH1A6ue6mB0wGToDOBQAwMEGADJEoG8ooBn0wAAAABJRU5ErkJggg==",
  338. "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAKCAYAAABykOpfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANNJREFUeNrsmMEJQjEMhlMv3cFZXMCDIziKCC7isQN4cAJHcQc9RVrMI/1tyTVP8kPgNXwvPfwhhBJ9db+9OedXFzVHEwXvm2fmJUopNd+iftdck/5RpAvjpcH759H06/PUQszvOgc16qTg18GL8WL6+XHk3WW7mE8CSvdIYTzrbgveP4/Gi/md8aOu0Xm8OHj/vB71KaXfUY+FsIOsi4P3yZvLHY4OlDVqgvfJa+NH0S0Lsy1xtlwE75e3jN/sDzmRIc0Evy7eVDyA/O8Dzig+AgwAwwcw6YPFEjsAAAAASUVORK5CYII="
  339. ]
  340. };
  341. var pmax = {};
  342. var isAjaxing = false;
  343.  
  344. function clearCache(maxcount) {
  345. let lists = GM_listValues();
  346. let max = lists.length;
  347. if (maxcount) {
  348. max = maxcount;
  349. } else if (lists.length > 100) {
  350. max = 100;
  351. }
  352. for (var i = 0; i < lists.length; i++) {
  353. let ts;
  354. if (lists[i].startsWith("Dt_")) {
  355. ts = GM_getValue(lists[i], -1);
  356. let key = lists[i].substring(3);
  357. if (ts != -1) {
  358. let dt = new Date(ts);
  359. let now = new Date();
  360. if (now.getUTCFullYear() == dt.getUTCFullYear() && now.getUTCMonth() == dt.getUTCMonth() && now.getUTCDate() == dt.getUTCDate()) {
  361. continue;
  362. }
  363. GM_deleteValue(lists[i]);
  364. GM_deleteValue(key);
  365. max--;
  366. if (max <= 0) {
  367. break;
  368. }
  369. }
  370. }
  371. }
  372. }
  373. function autoclearCache() {
  374. let ts = GM_getValue("last_autoclear", 0);
  375. let dt = new Date(ts);
  376. let now = new Date();
  377.  
  378. if (now.getUTCFullYear() == dt.getUTCFullYear() && now.getUTCMonth() == dt.getUTCMonth() && (now.getUTCDate() - dt.getUTCDate()) < 3) {
  379. return false;
  380. } else {
  381. clearCache(100);
  382. GM_setValue("last_autoclear", now.getTime());
  383. return true;
  384. }
  385. }
  386. function myAjax(url, callback, noCache, Cjson) {
  387. if (!noCache) {
  388. let b64 = getLocValue(url);
  389. if (b64) {
  390. let tdata;
  391. if (b64.startsWith("H4sIAA")) {
  392. if (Cjson) {
  393. tdata = "9" + b64;
  394. } else {
  395. tdata = pako.ungzip(base64js.toByteArray(b64), { to: 'string' });
  396. }
  397. } else {
  398. if (Cjson) {
  399. tdata = "9" + base64js.fromByteArray(pako.gzip(b64));
  400. } else {
  401. tdata = b64;
  402. }
  403. }
  404. callback(tdata, true);
  405. return;
  406. }
  407. }
  408. $.ajax({
  409. type: "GET",
  410. url: url,
  411. dataType: "html",
  412. success: function (data) {
  413. let b64 = base64js.fromByteArray(pako.gzip(data));
  414. setLocValue(url, b64);
  415. if (Cjson) {
  416. callback("9" + b64, false);
  417. } else {
  418. callback(data, false);
  419. }
  420. isAjaxing = false;
  421. }
  422. });
  423.  
  424. }
  425. function getLocValue(key) {
  426. let ts = GM_getValue("Dt_" + key, -1);
  427.  
  428. if (ts != -1) {
  429. let dt = new Date(ts);
  430. let now = new Date();
  431. //let d = now.getTime() - dt.getTime();
  432. if (now.getUTCFullYear() == dt.getUTCFullYear() && now.getUTCMonth() == dt.getUTCMonth() && now.getUTCDate() == dt.getUTCDate()) {
  433. if (now.getUTCHours() >= 1 && now.getUTCHours() <= 22) {
  434. //取缓存
  435. } else if (now.getUTCHours() != dt.getUTCHours()) {
  436. //每小时更新一次缓存
  437. return false;
  438. }
  439. } else {
  440. return false;
  441. }
  442. let b64 = GM_getValue(key, false);
  443. if (b64) {
  444. return b64;
  445. }
  446. return false;
  447.  
  448. } else {
  449. return false;
  450. }
  451. }
  452. function setLocValue(key, val) {
  453. GM_setValue("Dt_" + key, new Date().getTime());
  454. GM_setValue(key, val);
  455. }
  456. function getMax(callback) {
  457. myAjax(
  458. "/?p=training",
  459. function (data) {
  460. var result = data.match(mzreg.playerMax);
  461. pmax = JSON.parse(result[1]);
  462. callback(pmax);
  463. });
  464. return false;
  465. }
  466. function setSrc(img, skill, maxed, skillBallDay, pid, k) {
  467. if (skill > 0) {
  468. let flag_exit = false;
  469. if (skillBallDay) {
  470. if (new Date().getTime() - skillBallDay < 345600000) {
  471.  
  472. getTrainingGraphsBySkill_id(pid, k, function (data) {
  473. let result = data.match(new RegExp('{"x":' + skillBallDay + ',"y":(\\d+),[^}]*"marker"'));
  474. if (result && result.length) {
  475. $(img).parent().parent().find("td.skillval").html("(" + result[1] + ")");
  476. setSrc(img, result[1], maxed, false, pid, k);
  477. flag_exit = true;
  478. }
  479. });
  480.  
  481. //$(img).parent().find("span").remove();
  482. //$(img).parent().append("<span class=\"help_button_placeholder\"><a class=\"help_button\" href=\"#\" onclick=\"showHelpLayer('" + now_language.NotSureEx + new Date(skillBallDay).toLocaleString() + "', '" + now_language.NotSure + "', true); return false\"><span class=\"help_button_wrapper\"><span class=\"help_button_text\">?</span></span></a></span>");
  483. }
  484. }
  485. if (flag_exit) {
  486. return;
  487. }
  488. if (maxed === "red") {
  489. if (/blevel_/.test(img.src) || img.blevel == 1) {
  490. img.blevel = 1;
  491. img.src = mzImg.red_skill_blevel[skill];
  492. } else {
  493. img.src = mzImg.red_skill[skill];
  494. }
  495. }
  496. else if (maxed === "green") {
  497. if (/blevel_/.test(img.src) || img.blevel == 1) {
  498. img.blevel = 1;
  499. img.src = mzImg.green_skill_blevel[skill];
  500. } else {
  501. img.src = mzImg.green_skill[skill];
  502. }
  503. }
  504. if (img.isYtc) {
  505. $(img).parent().parent().children()[0].className = "gm_ytc";
  506. }
  507. }
  508. }
  509. function showMax() {
  510. let players = $(".playerContainer");
  511. for (var i = 0; i < players.length; i++) {
  512. let pdom = players.eq(i);
  513. let pid = pdom.html().match(mzreg.playerId)[1];
  514. let player = pmax[pid];
  515. let imgs = pdom.find("img.skill");
  516. if (player) {
  517. setSrc(imgs[0], player.skills.speed, player.maxed.speed);
  518. setSrc(imgs[1], player.skills.stamina, player.maxed.stamina);
  519. setSrc(imgs[2], player.skills.gameintelligence, player.maxed.gameintelligence);
  520. setSrc(imgs[3], player.skills.passing, player.maxed.passing);
  521. setSrc(imgs[4], player.skills.shooting, player.maxed.shooting);
  522. setSrc(imgs[5], player.skills.heading, player.maxed.heading);
  523. setSrc(imgs[6], player.skills.goalkeeping, player.maxed.goalkeeping);
  524. setSrc(imgs[7], player.skills.technique, player.maxed.technique);
  525. setSrc(imgs[8], player.skills.tackling, player.maxed.tackling);
  526. setSrc(imgs[9], player.skills.highpassing, player.maxed.highpassing);
  527. setSrc(imgs[10], player.skills.situations, player.maxed.situations);
  528. } else if (pdom.find(".training_graphs").length > 0 && imgs.length > 0) {
  529. let skills = pdom.find(".skillval");
  530. getTrainingGraphs(pid, imgs, skills);
  531. }
  532. }
  533. return false;
  534. }
  535. function drawPlayerByTrainingGraphs(pid, data, imgs, skills) {
  536. eval(data);
  537. let maxeds = ["green", "green", "green", "green", "green", "green", "green", "green", "green", "green", "green"];
  538. let skillBallDays = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  539. let camp = new mzcamp();
  540. for (var i = 0; i < series.length; i++) {
  541. if ((series[i].type == "line" && series[i].color == "rgba(255,0,0,0.7)")) {
  542. if (series[i].data.length > 0) {
  543. let g = series[i].data[0];
  544. let index = g.y - 1;
  545. if (index >= 0 && g.y <= 11) {
  546. maxeds[index] = "red";
  547. }
  548. }
  549. } else if ((series[i].type == "line" && series[i].color == "rgba(255,88,0,0.6)")) {
  550. //训练营线
  551. if (series[i].data && series[i].data.length == 2) {
  552. camp.add(series[i].data[0].x, series[i].data[1].x);
  553. }
  554. }
  555.  
  556. else {
  557. for (var j = 0; j < series[i].data.length; j++) {
  558. let g = series[i].data[j];
  559.  
  560. if (g.y == "-3") {
  561. let itemcamp = camp.getItem(g.x);
  562. if (itemcamp) {
  563. itemcamp.name = g.name;
  564. }
  565. }
  566.  
  567. let index = g.y - 1;
  568. if (index >= 0 && g.y <= 11) {
  569. if (g.name == "Maxed") {
  570. maxeds[index] = "red";
  571. }
  572. if (g.marker && g.marker.symbol) {
  573.  
  574. if (/training_camp/.test(g.marker.symbol)) {
  575. //训练营 判断是否是ytc
  576. if (camp.inYTC(g.x)) {
  577. imgs[index].isYtc = true;
  578. }
  579.  
  580. }
  581. if (/_ball/.test(g.marker.symbol)) {
  582. if (skillBallDays[index] < g.x) {
  583. skillBallDays[index] = g.x;
  584. }
  585. }
  586. }
  587. }
  588. }
  589. }
  590. }
  591. for (var k = 0; k < maxeds.length; k++) {
  592. setSrc(imgs[k], skills.eq(k).html().replace("(", "").replace(")", ""), maxeds[k], skillBallDays[k], pid, k);
  593. }
  594. }
  595. function getTrainingGraphs(pid, imgs, skills) {
  596. myAjax(
  597. "/ajax.php?p=trainingGraph&sub=getJsonTrainingHistory&sport=soccer&player_id=" + pid,
  598. function (data) {
  599. drawPlayerByTrainingGraphs(pid, data, imgs, skills);
  600. });
  601. }
  602. function getTrainingGraphsBySkill_id(pid, skill_id, callback) {
  603. myAjax(
  604. "/ajax.php?p=trainingGraph&sub=getJsonTrainingHistory&sport=soccer&player_id=" + pid + "&skill_id=" + (skill_id + 2),
  605. function (data) {
  606. callback(data);
  607. });
  608. }
  609. function setLanguage(language) {
  610. if (language) {
  611. let new_language = gm_mzlanguage[language];
  612. if (new_language == undefined) {
  613. new_language = gm_mzlanguage.en;
  614. }
  615. if (now_language != new_language) {
  616. GM_setValue("mylanguage", language);
  617. }
  618. now_language = new_language;
  619. } else {
  620. if (now_language == gm_mzlanguage.en) {
  621. now_language = gm_mzlanguage.cn;
  622. GM_setValue("mylanguage", "cn");
  623. } else {
  624. now_language = gm_mzlanguage.en;
  625. GM_setValue("mylanguage", "en");
  626. }
  627. }
  628. }
  629. function initgw() {
  630.  
  631. let tmplanguage = GM_getValue("mylanguage", false);
  632. if (tmplanguage == "cn") {
  633. tmplanguage = "zh";
  634. setLanguage(tmplanguage);
  635. }
  636. if (gm_mzlanguage[tmplanguage] == undefined) {
  637. let lang = $("meta[name='language']");
  638. if (lang.length > 0) {
  639. setLanguage($("meta[name='language']")[0].content);
  640. }
  641.  
  642. } else {
  643. now_language = gm_mzlanguage[tmplanguage];
  644. }
  645.  
  646.  
  647.  
  648. var css = document.createElement('style');
  649. css.type = 'text/css';
  650. css.innerHTML = ".gw_run_div{position:fixed;bottom:20%;right:1px;border:1px solid gray;padding:3px;width:12px;font-size:12px;border-radius: 3px;text-shadow: 1px 1px 3px #676767;background-color: #000000;color: #FFFFFF;cursor: default;}.gw_run{cursor:pointer;}.gw_div_left{float:left;position:fixed;left:0px;top:120px;height:528px;overflow-y:auto;text-align:left;}.gw_div_right{float:right;position:fixed;right:0px;top:120px;height:528px;overflow-y:auto;text-align:left;}.shupai{writing-mode:tb-rl;-webkit-writing-mode:vertical-rl;}.gm_ytc{color:blue;}";
  651.  
  652.  
  653. document.getElementsByTagName('head')[0].appendChild(css);
  654.  
  655. $(document.body).append("<div class='gw_run_div'>"
  656. + "<div id='gw_run' class='gw_run shupai' title='" + now_language.ManualColorTitle + "'><b>" + now_language.ManualColor + "</b></div>"
  657. + "<div>---</div>"
  658. + "<div id='gw_run2' class='gw_run shupai' title='" + now_language.SettingTitle + "'><b>" + now_language.Setting + "</b></div>"
  659. + "</div>");
  660. $('#gw_run')[0].addEventListener('click', function () { gw_start(0); });
  661. $('#gw_run2')[0].addEventListener('click', function () {
  662. OpenSetting();
  663. });
  664. document.onkeydown = function () {
  665. if (event.altKey) {
  666. if (window.event.keyCode == 65) {
  667. //alt + A
  668. gw_start();
  669. }
  670. else if (window.event.keyCode == 68) {
  671. //alt + D
  672. Advanced2D();
  673. }
  674. }
  675. };
  676. }
  677. function gw_start() {
  678. if ($(".player_share_skills").length > 0) {
  679. getMax(function () {
  680. showMax();
  681. });
  682. } else if ($(".playerContainer").find(".training_graphs").length > 0) {
  683. showMax();
  684. }
  685. }
  686.  
  687. function report() {
  688. var myData = new FormData();
  689. myData.append("username", $("#header-username").html());
  690. GM_xmlhttpRequest({
  691. method: "POST",
  692. url: "http://www.budeng.win:852/MZ/ReportUsr",
  693. data: myData,
  694. responseType: "json",
  695. onload: function (result) {
  696. },
  697. onerror: function (result) {
  698. }
  699. });
  700. }
  701.  
  702. function OpenSetting() {
  703. let lang = GM_getValue("mylanguage", "en");
  704. let tmphtml;
  705. tmphtml = '\
  706. <div><b>'+ now_language.Language + ':</b></div>\
  707. <div><select id="gm_language">\
  708. <option value="en"'+ (lang == "en" ? ' selected="selected" ' : '') + '>' + gm_mzlanguage.en.Name + '</option>\
  709. <option value="zh"'+ (lang == "zh" ? ' selected="selected" ' : '') + '>' + gm_mzlanguage.zh.Name + '</option>\
  710. <option value="es"'+ (lang == "es" ? ' selected="selected" ' : '') + '>' + gm_mzlanguage.es.Name + '</option>\
  711. </select>\
  712. </div>\
  713. <a href="#" class="mzbtn buttondiv button_account" id="gm_setting_save">\
  714. <span class="buttonClassMiddle"><span style="white-space: nowrap">'+ now_language.Save + '</span></span><span class="buttonClassRight">&nbsp;</span>\
  715. </a>\
  716. </div>';
  717. showHelpLayer(tmphtml, now_language.Setting, true);
  718. $("#gm_setting_save")[0].addEventListener('click', function () {
  719. setLanguage($("#gm_language").val());
  720.  
  721. $('#gw_run')[0].title = now_language.ManualColorTitle;
  722. $('#gw_run').html("<b>" + now_language.ManualColor + "</b>");
  723. $('#gw_run2')[0].title = now_language.SettingTitle;
  724. $('#gw_run2').html("<b>" + now_language.Setting + "</b>");
  725.  
  726.  
  727.  
  728. $('#gw_jijing').html(now_language.Jijing);
  729. $('#gw_dongzuo').html(now_language.dongzuo);
  730. $('#gw_copyxml1').html(now_language.Copyxml1);
  731. $('#gw_copyxml2').html(now_language.Copyxml2);
  732. powerboxCloseAll();
  733. });
  734. }
  735.  
  736.  
  737. //以下为2D比赛辅助
  738. function MatchEvent() {
  739. this.data = new Array();
  740. this.setAllPlayerEvent = function (team) {
  741. for (var i = 0; i < team.m_players.length; i++) {
  742. let len = team.m_players[i].m_events.getLength();
  743. for (var j = 0; j < len; j++) {
  744. this.data.push(team.m_players[i].m_events.at(j));
  745. }
  746. }
  747. };
  748. this.Sort = function () {
  749. this.data.sort(function (a, b) {
  750. return a.m_frame - b.m_frame;
  751. });
  752. };
  753. }
  754. function MatchEvent2() {
  755. //格式status->player->array
  756. this.data = {};
  757. //格式player->array
  758. this.dataByPlayer = {};
  759. //格式player->{frame_count,[{start,end}]}
  760. this.playerFool = {};
  761.  
  762. this.setData = function (match) {
  763. //构建临时数据(不合并连续帧)
  764. let matchBuffer = match.matchBuffer;
  765. //player->frame->{}
  766. let playersMatchBuffer = {};
  767. //格式status->player->array
  768. let tmp = {};
  769. let tmpKey = {};
  770. let tmpLastPosition = {};
  771. let playerFool = {};
  772. out_of_play.resetIndex();
  773. let ball_move;
  774. for (var i = 0; i < matchBuffer.length; i++) {
  775. ball_move = false;
  776. if (i - 1 >= 0) {
  777. if (matchBuffer[i].ball.x == matchBuffer[i - 1].ball.x
  778. &&
  779. matchBuffer[i].ball.y == matchBuffer[i - 1].ball.y
  780. &&
  781. matchBuffer[i].ball.z == matchBuffer[i - 1].ball.z
  782. ) {
  783. ball_move = false;
  784. }
  785. else {
  786. ball_move = true;
  787. }
  788. }
  789.  
  790.  
  791. let players = matchBuffer[i].players;
  792. for (var j = 0; j < players.length; j++) {
  793. if (players[j].status != undefined) {
  794. if (ball_move && out_of_play.notin(i)) {
  795. if (tmpLastPosition[players[j].id] == undefined) {
  796. tmpLastPosition[players[j].id] = {};
  797. tmpLastPosition[players[j].id].FoolStart = -1;
  798. } else {
  799. if (tmpLastPosition[players[j].id].x == players[j].position.x
  800. &&
  801. tmpLastPosition[players[j].id].y == players[j].position.y
  802. &&
  803. tmpLastPosition[players[j].id].z == players[j].position.z) {
  804. if (tmpLastPosition[players[j].id].FoolStart == -1) {
  805. tmpLastPosition[players[j].id].FoolStart = i - 1;
  806. tmpLastPosition[players[j].id].frame_count = 0;
  807. }
  808. tmpLastPosition[players[j].id].frame_count++;
  809. } else {
  810. if (tmpLastPosition[players[j].id].FoolStart > 0) {
  811. if (playerFool[players[j].id] == undefined) {
  812. playerFool[players[j].id] = {};
  813. playerFool[players[j].id].frame_count = 0;
  814. playerFool[players[j].id].data = new Array();
  815. }
  816. let tmpd = {
  817. start: tmpLastPosition[players[j].id].FoolStart,
  818. end: i - 1,
  819. frame_count: tmpLastPosition[players[j].id].frame_count
  820. };
  821. playerFool[players[j].id].data.push(tmpd);
  822. playerFool[players[j].id].frame_count += tmpd.frame_count;
  823. tmpLastPosition[players[j].id].FoolStart = -1;
  824. tmpLastPosition[players[j].id].frame_count = 0;
  825. }
  826. }
  827. }
  828. tmpLastPosition[players[j].id].x = players[j].position.x;
  829. tmpLastPosition[players[j].id].y = players[j].position.y;
  830. tmpLastPosition[players[j].id].z = players[j].position.z;
  831. }
  832.  
  833. if (players[j].status != MatchStatus.BA_NORMAL) {
  834.  
  835. let isHome = true;
  836. var p = match.getHomeTeam().getPlayerByPlayerId(players[j].id);
  837. if (p == null) {
  838. p = match.getAwayTeam().getPlayerByPlayerId(players[j].id);
  839. isHome = false;
  840.  
  841. }
  842.  
  843. let arr;
  844. if (tmp[players[j].status] == undefined) {
  845. tmp[players[j].status] = {};
  846. tmp[players[j].status][players[j].id] = arr = new Array();
  847. } else if (tmp[players[j].status][players[j].id] == undefined) {
  848. tmp[players[j].status][players[j].id] = arr = new Array();
  849. } else {
  850. arr = tmp[players[j].status][players[j].id];
  851. }
  852.  
  853. let key = players[j].id + "_" + players[j].status + "_" + i;
  854. if (tmpKey[key] == undefined) {
  855.  
  856. arr.push({
  857. m_frame: i,
  858. status: players[j].status,
  859. owner: p,
  860. isHome: isHome
  861. });
  862. tmpKey[key] = 1;
  863. } else {
  864. tmpKey[key] += 1;
  865. }
  866. }
  867.  
  868. if (playersMatchBuffer[players[j].id] == undefined) {
  869. playersMatchBuffer[players[j].id] = {};
  870. }
  871. if (playersMatchBuffer[players[j].id][i] == undefined) {
  872. playersMatchBuffer[players[j].id][i] = {};
  873. }
  874. playersMatchBuffer[players[j].id][i].data = players[j];
  875. playersMatchBuffer[players[j].id][i].ball_move = ball_move;
  876. playersMatchBuffer[players[j].id][i].owner = matchBuffer[i];
  877.  
  878. }
  879. }
  880. }
  881. this.playerFool = playerFool;
  882.  
  883. //合并连续帧
  884. //tmpStart为合并临时数据
  885. let tmpStart = {};
  886. let dataByPlayer = {};
  887. this.data = {};
  888. for (let status in tmp) {
  889. if (tmpStart[status] == undefined) {
  890. tmpStart[status] = {};
  891. }
  892. if (this.data[status] == undefined) {
  893. this.data[status] = {};
  894. }
  895. for (let pid in tmp[status]) {
  896. if (dataByPlayer[pid] == undefined) {
  897. dataByPlayer[pid] = {};
  898. dataByPlayer[pid].status = new Array();
  899. dataByPlayer[pid].data = new Array();
  900. }
  901. for (var k = 0; k < tmp[status][pid].length; k++) {
  902. if (tmpStart[status][pid] == undefined) {
  903. tmpStart[status][pid] = { start: tmp[status][pid][k].m_frame, last: tmp[status][pid][k].m_frame, owner: tmp[status][pid][k].owner, isHome: tmp[status][pid][k].isHome };
  904. } else {
  905. if (tmpStart[status][pid].last == tmp[status][pid][k].m_frame - 1) {
  906. tmpStart[status][pid].last = tmp[status][pid][k].m_frame;
  907. } else {
  908. if (this.data[status][pid] == undefined) {
  909. this.data[status][pid] = new Array();
  910. }
  911. this.data[status][pid].push({
  912. m_frame_start: tmpStart[status][pid].start,
  913. m_frame_end: tmpStart[status][pid].last,
  914. owner: tmpStart[status][pid].owner
  915. });
  916. dataByPlayer[pid].data.push({
  917. m_frame_start: tmpStart[status][pid].start,
  918. m_frame_end: tmpStart[status][pid].last,
  919. status: parseInt(status)
  920. });
  921. tmpStart[status][pid] = { start: tmp[status][pid][k].m_frame, last: tmp[status][pid][k].m_frame, owner: tmp[status][pid][k].owner, isHome: tmp[status][pid][k].isHome };
  922. }
  923. }
  924. }
  925.  
  926. }
  927. };
  928. //合并连续帧(tmpStart结束处理)
  929. for (let status in tmpStart) {
  930. if (this.data[status] == undefined) {
  931. this.data[status] = {};
  932. }
  933. for (let pid in tmpStart[status]) {
  934. dataByPlayer[pid].status.push(parseInt(status));
  935.  
  936. if (this.data[status][pid] == undefined) {
  937. this.data[status][pid] = new Array();
  938. }
  939. dataByPlayer[pid].owner = tmpStart[status][pid].owner;
  940. dataByPlayer[pid].isHome = tmpStart[status][pid].isHome;
  941. this.data[status][pid].push({
  942. m_frame_start: tmpStart[status][pid].start,
  943. m_frame_end: tmpStart[status][pid].last,
  944. owner: tmpStart[status][pid].owner
  945. });
  946. dataByPlayer[pid].data.push({
  947. m_frame_start: tmpStart[status][pid].start,
  948. m_frame_end: tmpStart[status][pid].last,
  949. status: parseInt(status)
  950. });
  951.  
  952. dataByPlayer[pid].data.sort(function (a, b) {
  953. return a.m_frame_start - b.m_frame_start;
  954. });
  955. }
  956. }
  957. //更改统计帧
  958. this.dataByPlayer = {};
  959. for (let pid in dataByPlayer) {
  960. this.dataByPlayer[pid] = {};
  961. this.dataByPlayer[pid].isHome = dataByPlayer[pid].isHome;
  962. this.dataByPlayer[pid].owner = dataByPlayer[pid].owner;
  963. this.dataByPlayer[pid].status = dataByPlayer[pid].status;
  964. this.dataByPlayer[pid].data = new Array();
  965.  
  966. let arr = dataByPlayer[pid].data;
  967. for (var q = 0; q < arr.length; q++) {
  968. //接下来还有
  969. if (q + 1 < arr.length) {
  970. //连续动作判断
  971. if (arr[q].m_frame_end + 1 == arr[q + 1].m_frame_start) {
  972. //头球时判断接下来的动作
  973. if (arr[q].status == MatchStatus.BA_HEADER) {
  974. //接下来动作是射门
  975. if (arr[q + 1].status == MatchStatus.BA_LEFT_FOOT_SHOT_FWD) {
  976. this.dataByPlayer[pid].data.push({
  977. m_frame_start: arr[q].m_frame_start,
  978. m_frame_end: arr[q + 1].m_frame_end,
  979. status: 1001,
  980. old_arr: [arr[q], arr[q + 1]]
  981. });
  982. q += 1;
  983. continue;
  984. } else if (arr[q + 1].status == MatchStatus.BA_RIGHT_FOOT_SHOT_FWD) {
  985. this.dataByPlayer[pid].data.push({
  986. m_frame_start: arr[q].m_frame_start,
  987. m_frame_end: arr[q + 1].m_frame_end,
  988. status: 1002,
  989. old_arr: [arr[q], arr[q + 1]]
  990. });
  991. q += 1;
  992. continue;
  993. }
  994. //接下来是持球
  995. else if (arr[q + 1].status == MatchStatus.BA_BALL_OWNER) {
  996. this.dataByPlayer[pid].data.push({
  997. m_frame_start: arr[q].m_frame_start,
  998. m_frame_end: arr[q + 1].m_frame_end,
  999. status: 1003,
  1000. old_arr: [arr[q], arr[q + 1]]
  1001. });
  1002. q += 1;
  1003. continue;
  1004. }
  1005. }
  1006. //上抢
  1007. if (arr[q].status == MatchStatus.BA_TACKLE) {
  1008. if (arr[q + 1].status == MatchStatus.BA_LEFT_FOOT_SHOT_FWD
  1009. || arr[q + 1].status == MatchStatus.BA_RIGHT_FOOT_SHOT_FWD
  1010. || arr[q + 1].status == MatchStatus.BA_BALL_OWNER
  1011. ) {
  1012. //上抢(成功)
  1013. this.dataByPlayer[pid].data.push({
  1014. m_frame_start: arr[q].m_frame_start,
  1015. m_frame_end: arr[q].m_frame_end,
  1016. status: 1011,
  1017. old_arr: [arr[q]]
  1018. });
  1019. continue;
  1020. }
  1021. }
  1022. }
  1023. }
  1024. this.dataByPlayer[pid].data.push(arr[q]);
  1025. }
  1026.  
  1027. this.dataByPlayer[pid].FoolCount = 0;
  1028. for (var n = 0; n < this.dataByPlayer[pid].data.length; n++) {
  1029.  
  1030. let item = this.dataByPlayer[pid].data[n];
  1031. item.FoolCount = 0;
  1032.  
  1033. if (n + 1 < this.dataByPlayer[pid].data.length
  1034. &&
  1035. this.dataByPlayer[pid].data[n + 1].m_frame_start == item.m_frame_end + 1
  1036. ) {
  1037. //连续动作 下一个再判断
  1038. continue;
  1039. }
  1040.  
  1041. let m_index = item.m_frame_start;
  1042. let last = playersMatchBuffer[pid][m_index];
  1043. m_index++;
  1044. while (last != undefined && playersMatchBuffer[pid][m_index] != undefined) {
  1045. if (playersMatchBuffer[pid][m_index].data.position.x == last.data.position.x
  1046. &&
  1047. playersMatchBuffer[pid][m_index].data.position.y == last.data.position.y
  1048. //&&
  1049. //playersMatchBuffer[pid][m_index].data.position.z == last.data.position.z
  1050. ) {
  1051. item.FoolCount++;
  1052. last = playersMatchBuffer[pid][m_index];
  1053. m_index++;
  1054. } else {
  1055. break;
  1056. }
  1057. }
  1058. this.dataByPlayer[pid].FoolCount += item.FoolCount;
  1059. }
  1060. }
  1061.  
  1062. };
  1063. }
  1064. function OutOfPlay() {
  1065. this.data = new Array();
  1066. this.add = function (begin, end) {
  1067. this.data.push({
  1068. begin: begin,
  1069. end: end
  1070. });
  1071. };
  1072. this.resetIndex = function () {
  1073. this.index = 0;
  1074. };
  1075. this.notin = function (frame) {
  1076. while (this.index < this.data.length) {
  1077. let item = this.data[this.index];
  1078. if (frame < item.begin) {
  1079. return true;
  1080. } else if (frame <= item.end) {
  1081. return false;
  1082. }
  1083. if (frame > item.end) {
  1084. this.index++;
  1085. }
  1086. }
  1087. return true;
  1088. };
  1089. this.Sort = function () {
  1090. this.data.sort(function (a, b) {
  1091. return a.begin - b.begin;
  1092. });
  1093. }
  1094. }
  1095.  
  1096. let mEvent, mStaticEventHome, mStaticEventAway;
  1097. let out_of_play;
  1098.  
  1099. function Advanced2D() {
  1100.  
  1101. if (OK_2D) {
  1102. if ($("#canvas").length > 0) {
  1103.  
  1104. let home = MyGame.prototype.mzlive.m_match.getHomeTeam();
  1105. let away = MyGame.prototype.mzlive.m_match.getAwayTeam();
  1106.  
  1107. if (home != null && away != null) {
  1108. let events = matchLoader.matchXml.documentElement.evaluate('Events/*');
  1109. let re, begin, end;
  1110. out_of_play = new OutOfPlay();
  1111. out_of_play.add(0, MyGame.prototype.mzlive.m_match.m_koFrame);
  1112. out_of_play.add(MyGame.prototype.mzlive.m_match.m_htFrame, MyGame.prototype.mzlive.m_match.m_ko2Frame);
  1113. while (re = events.iterateNext()) {
  1114. begin = re.getAttribute('intervalendframe');
  1115. end = re.getAttribute('startframe');
  1116. //re.tagName
  1117. if (begin != undefined && end != undefined) {
  1118. out_of_play.add(begin, end);
  1119. }
  1120. }
  1121. out_of_play.Sort();
  1122.  
  1123.  
  1124.  
  1125. let lstEventHome = new MatchEvent();
  1126. let lstEventAway = new MatchEvent();
  1127. lstEventHome.setAllPlayerEvent(home);
  1128. lstEventAway.setAllPlayerEvent(away);
  1129.  
  1130. lstEventHome.Sort();
  1131. lstEventAway.Sort();
  1132.  
  1133. mStaticEventHome = lstEventHome;
  1134. mStaticEventAway = lstEventAway;
  1135.  
  1136. let lstEvent2 = new MatchEvent2();
  1137. lstEvent2.setData(MyGame.prototype.mzlive.m_match);
  1138. mEvent = lstEvent2;
  1139.  
  1140. if ($('.gw_div_left').length == 0) {
  1141. $('#canvas').parent().append('<div class="gw_div_left"></div>');
  1142. $('#canvas').parent().append('<div class="gw_div_right"></div>');
  1143. $('#canvas').parent().append('<div><b id="gw_jijing" class="gw_run" style="color: red;">' + now_language.Jijing + '</b> <b id="gw_dongzuo" class="gw_run" style="color: red;">' + now_language.dongzuo + '</b> <b id="gw_copyxml1" class="gw_run" style="color: red;">' + now_language.Copyxml1 + '</b> <b id="gw_copyxml2" class="gw_run" style="color: red;">' + now_language.Copyxml2 + '</b></div>');
  1144.  
  1145. $('#gw_jijing')[0].addEventListener('click', function () {
  1146. ShowDiv(0);
  1147. });
  1148.  
  1149. $('#gw_dongzuo')[0].addEventListener('click', function () {
  1150. ShowDiv(1);
  1151. });
  1152.  
  1153. $('#gw_copyxml1')[0].addEventListener('click', function () {
  1154. getMax(function () {
  1155. Stats2XML(MyGame.prototype.mzlive.m_match.getHomeTeam(), true, pmax);
  1156. });
  1157.  
  1158. });
  1159. $('#gw_copyxml2')[0].addEventListener('click', function () {
  1160. getMax(function () {
  1161. Stats2XML(MyGame.prototype.mzlive.m_match.getAwayTeam(), false, pmax);
  1162. });
  1163. });
  1164.  
  1165.  
  1166. } else {
  1167. $('.gw_div_left').empty();
  1168. $('.gw_div_right').empty();
  1169. }
  1170. //MyGame.prototype.mzlive.buttonJiJing = new ig.TouchButton('jijing', {
  1171. // left: 24,
  1172. // top: 24
  1173. //}, 48, 48, MyGame.prototype.mzlive.buttonImagesHelp, 0, 1, 'highlight');
  1174. //unsafeWindow.myTouchButtons.buttons.push(MyGame.prototype.mzlive.buttonJiJing);
  1175.  
  1176. //MyGame.prototype.mzlive.buttonDongZuo = new ig.TouchButton('dongzuo', {
  1177. // left: 88,
  1178. // top: 24
  1179. //}, 48, 48, MyGame.prototype.mzlive.buttonImagesRestart, 0, 1, 'highlight');
  1180. //unsafeWindow.myTouchButtons.buttons.push(MyGame.prototype.mzlive.buttonDongZuo);
  1181. //unsafeWindow.myTouchButtons.align();
  1182. }
  1183. }
  1184. }
  1185. }
  1186. function ShowDiv(type) {
  1187. $('.gw_div_left').empty();
  1188. $('.gw_div_right').empty();
  1189. if (type == 0) {
  1190. let lstEventHome = mStaticEventHome;
  1191. let lstEventAway = mStaticEventAway;
  1192.  
  1193. for (var i = 0; i < lstEventHome.data.length; i++) {
  1194. $('.gw_div_left').append('<div><b id="gw_eventH' + i + '" class="gw_run">'
  1195. + MyGame.prototype.mzlive.m_match.frameToMatchMinute(lstEventHome.data[i].m_frame) + "′ "
  1196. + lstEventHome.data[i].m_owner.m_name + "(" + lstEventHome.data[i].m_owner.m_shirtNo + ") "
  1197. + lstEventHome.data[i].m_description + '</b></div>');
  1198. let dom = $('#gw_eventH' + i)[0];
  1199. dom.m_frame = lstEventHome.data[i].m_frame;
  1200. dom.m_frame -= 45;
  1201. if (dom.m_frame < 0) {
  1202. dom.m_frame = 0;
  1203. }
  1204. dom.addEventListener('click', function () { MyGame.prototype.mzlive.m_match.setCurrentFrame(this.m_frame); });
  1205. }
  1206.  
  1207. for (var ii = 0; ii < lstEventAway.data.length; ii++) {
  1208. $('.gw_div_right').append('<div><b id="gw_eventA' + ii + '" class="gw_run">'
  1209. + MyGame.prototype.mzlive.m_match.frameToMatchMinute(lstEventAway.data[ii].m_frame) + "′ "
  1210. + " " + lstEventAway.data[ii].m_owner.m_name + "(" + lstEventAway.data[ii].m_owner.m_shirtNo + ") "
  1211. + lstEventAway.data[ii].m_description + '</b></div>');
  1212. let dom = $('#gw_eventA' + ii)[0];
  1213. dom.m_frame = lstEventAway.data[ii].m_frame;
  1214. dom.m_frame -= 45;
  1215. if (dom.m_frame < 0) {
  1216. dom.m_frame = 0;
  1217. }
  1218. dom.addEventListener('click', function () { MyGame.prototype.mzlive.m_match.setCurrentFrame(this.m_frame); });
  1219. }
  1220. } else {
  1221.  
  1222. for (let pid in mEvent.dataByPlayer) {
  1223. let divname;
  1224. if (mEvent.dataByPlayer[pid].isHome) {
  1225. divname = '.gw_div_left';
  1226. } else {
  1227. divname = '.gw_div_right';
  1228. }
  1229. let frame_count = 0;
  1230. //if (mEvent.playerFool[pid]) {
  1231. // frame_count = mEvent.playerFool[pid].frame_count;
  1232. //}
  1233. frame_count = mEvent.dataByPlayer[pid].FoolCount;
  1234. $(divname).append('<div><b id="gw_player_' + pid + '" class="gw_run">'
  1235. + mEvent.dataByPlayer[pid].owner.m_name + "(" + mEvent.dataByPlayer[pid].owner.m_shirtNo + ")"
  1236. + "[" + frame_count + "]</b></div>");
  1237. let dom = $("#gw_player_" + pid)[0];
  1238. dom.pid = pid;
  1239. dom.divname = divname;
  1240. dom.addEventListener('click', function () {
  1241. $(this.divname).empty();
  1242.  
  1243. $(divname).append('<div><b>'
  1244. + mEvent.dataByPlayer[pid].owner.m_name + "(" + mEvent.dataByPlayer[pid].owner.m_shirtNo + ")</b></div>");
  1245. let arr = mEvent.dataByPlayer[this.pid].data;
  1246. for (var k = 0; k < arr.length; k++) {
  1247. let key = 'gw_player_' + pid + "_s_" + k;
  1248. $(this.divname).append('<div><b id="' + key + '" class="gw_run">'
  1249. + MyGame.prototype.mzlive.m_match.frameToMatchMinute(arr[k].m_frame_start) + "′["
  1250. + arr[k].m_frame_start + "+" + (arr[k].m_frame_end - arr[k].m_frame_start + 1)
  1251. + "]" + (arr[k].FoolCount == 0 ? "" : ("+" + arr[k].FoolCount)) + " "
  1252. + getMatchStatusName(arr[k].status)
  1253. + "</b></div>");
  1254.  
  1255. let dom = $("#" + key)[0];
  1256. dom.m_frame = arr[k].m_frame_start;
  1257. dom.addEventListener('click', function () { MyGame.prototype.mzlive.m_match.setCurrentFrame(this.m_frame); });
  1258. }
  1259. });
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265. }
  1266. }
  1267. }
  1268.  
  1269.  
  1270. function getMatchStatusName(status) {
  1271. switch (status) {
  1272. case MatchStatus.BA_NORMAL:
  1273. return now_language.BA_NORMAL;
  1274. case MatchStatus.BA_WALL:
  1275. return now_language.BA_WALL;
  1276. case MatchStatus.BA_HOLD:
  1277. return now_language.BA_HOLD;
  1278. case MatchStatus.BA_DOWN:
  1279. return now_language.BA_DOWN;
  1280. case MatchStatus.BA_HOLD_THROWIN:
  1281. return now_language.BA_HOLD_THROWIN;
  1282. case MatchStatus.BA_THROWIN:
  1283. return now_language.BA_THROWIN;
  1284. case MatchStatus.BA_LEFT_FOOT_SHOT_FWD:
  1285. return now_language.BA_LEFT_FOOT_SHOT_FWD;
  1286. case MatchStatus.BA_LEFT_FOOT_SHOT_BACK:
  1287. return now_language.BA_LEFT_FOOT_SHOT_BACK;
  1288. case MatchStatus.BA_LEFT_FOOT_SHOT_RIGHT:
  1289. return now_language.BA_LEFT_FOOT_SHOT_RIGHT;
  1290. case MatchStatus.BA_LEFT_FOOT_SHOT_LEFT:
  1291. return now_language.BA_LEFT_FOOT_SHOT_LEFT;
  1292. case MatchStatus.BA_RIGHT_FOOT_SHOT_FWD:
  1293. return now_language.BA_RIGHT_FOOT_SHOT_FWD;
  1294. case MatchStatus.BA_RIGHT_FOOT_SHOT_BACK:
  1295. return now_language.BA_RIGHT_FOOT_SHOT_BACK;
  1296. case MatchStatus.BA_RIGHT_FOOT_SHOT_RIGHT:
  1297. return now_language.BA_RIGHT_FOOT_SHOT_RIGHT;
  1298. case MatchStatus.BA_RIGHT_FOOT_SHOT_LEFT:
  1299. return now_language.BA_RIGHT_FOOT_SHOT_LEFT;
  1300. case MatchStatus.BA_LEFT_FOOT_PASS_FWD:
  1301. return now_language.BA_LEFT_FOOT_PASS_FWD;
  1302. case MatchStatus.BA_LEFT_FOOT_PASS_BACK:
  1303. return now_language.BA_LEFT_FOOT_PASS_BACK;
  1304. case MatchStatus.BA_LEFT_FOOT_PASS_RIGHT:
  1305. return now_language.BA_LEFT_FOOT_PASS_RIGHT;
  1306. case MatchStatus.BA_LEFT_FOOT_PASS_LEFT:
  1307. return now_language.BA_LEFT_FOOT_PASS_LEFT;
  1308. case MatchStatus.BA_RIGHT_FOOT_PASS_FWD:
  1309. return now_language.BA_RIGHT_FOOT_PASS_FWD;
  1310. case MatchStatus.BA_RIGHT_FOOT_PASS_BACK:
  1311. return now_language.BA_RIGHT_FOOT_PASS_BACK;
  1312. case MatchStatus.BA_RIGHT_FOOT_PASS_RIGHT:
  1313. return now_language.BA_RIGHT_FOOT_PASS_RIGHT;
  1314. case MatchStatus.BA_RIGHT_FOOT_PASS_LEFT:
  1315. return now_language.BA_RIGHT_FOOT_PASS_LEFT;
  1316. case MatchStatus.BA_PICK_UP_BALL:
  1317. return now_language.BA_PICK_UP_BALL;
  1318. case MatchStatus.BA_DROP_BALL:
  1319. return now_language.BA_DROP_BALL;
  1320. case MatchStatus.BA_HEADER:
  1321. return now_language.BA_HEADER;
  1322. case MatchStatus.BA_TRIP:
  1323. return now_language.BA_TRIP;
  1324. case MatchStatus.BA_CELEBRATE:
  1325. return now_language.BA_CELEBRATE;
  1326. case MatchStatus.BA_GK_READY:
  1327. return now_language.BA_GK_READY;
  1328. case MatchStatus.BA_GK_ACRO_LEFT:
  1329. return now_language.BA_GK_ACRO_LEFT;
  1330. case MatchStatus.BA_GK_ACRO_LEFT_HOLD:
  1331. return now_language.BA_GK_ACRO_LEFT_HOLD;
  1332. case MatchStatus.BA_GK_ACRO_RIGHT:
  1333. return now_language.BA_GK_ACRO_RIGHT;
  1334. case MatchStatus.BA_GK_ACRO_RIGHT_HOLD:
  1335. return now_language.BA_GK_ACRO_RIGHT_HOLD;
  1336. case MatchStatus.BA_GK_SIDESTEP_LEFT:
  1337. return now_language.BA_GK_SIDESTEP_LEFT;
  1338. case MatchStatus.BA_GK_SIDESTEP_RIGHT:
  1339. return now_language.BA_GK_SIDESTEP_RIGHT;
  1340. case MatchStatus.BA_GK_KICK:
  1341. return now_language.BA_GK_KICK;
  1342. case MatchStatus.BA_GK_THROW_BALL:
  1343. return now_language.BA_GK_THROW_BALL;
  1344. case MatchStatus.BA_GK_STRETCH_LEFT:
  1345. return now_language.BA_GK_STRETCH_LEFT;
  1346. case MatchStatus.BA_GK_STRETCH_LEFT_HOLD:
  1347. return now_language.BA_GK_STRETCH_LEFT_HOLD;
  1348. case MatchStatus.BA_GK_STRETCH_RIGHT:
  1349. return now_language.BA_GK_STRETCH_RIGHT;
  1350. case MatchStatus.BA_GK_STRETCH_RIGHT_HOLD:
  1351. return now_language.BA_GK_STRETCH_RIGHT_HOLD;
  1352. case MatchStatus.BA_BALL_OWNER:
  1353. return now_language.BA_BALL_OWNER;
  1354. case MatchStatus.BA_TACKLE:
  1355. return now_language.BA_TACKLE;
  1356. case MatchStatus.BA_SLIDING_TACKLE:
  1357. return now_language.BA_SLIDING_TACKLE;
  1358. case MatchStatus.BA_SLIDING_TACKLE_STAND:
  1359. return now_language.BA_SLIDING_TACKLE_STAND;
  1360. case MatchStatus.BA_MAX:
  1361. return now_language.BA_MAX;
  1362. case 1001:
  1363. return now_language.BA_MY_1001;
  1364. case 1002:
  1365. return now_language.BA_MY_1002;
  1366. case 1003:
  1367. return now_language.BA_MY_1003;
  1368. case 1011:
  1369. return now_language.BA_MY_1011;
  1370. case 1012:
  1371. return now_language.BA_MY_1012;
  1372. default:
  1373. return now_language.Unknown;
  1374. }
  1375. }
  1376.  
  1377. function StatsToPos_X(i, IsLocal) {
  1378. var ret = IsLocal ? Math.round(-.255800462 * i + 199.8228530689) : Math.round(.2555000556 * i + 8.3741302936);
  1379. return ret;
  1380. }
  1381. function StatsToPos_Y(i, IsLocal) {
  1382. var ret = IsLocal ? Math.round(-.3073207154 * i + 315.9278777381) : Math.round(.3070644902 * i + 9.2794889414);
  1383. return ret;
  1384. }
  1385. function Stats2XML(team, ishome, players) {
  1386.  
  1387.  
  1388. let pidArr = new Array();
  1389. for (let pid in players) {
  1390. pidArr.push(pid);
  1391. }
  1392.  
  1393. let pl;
  1394. let nl = matchLoader.matchXml.documentElement.evaluate('Player');
  1395. let tmpXML = "<?xml version=\"1.0\" ?>" + "\r\n<SoccerTactics>\r\n\t<Team tactics=" + "\"" + team.getTactics() + "\" playstyle=\"" + team.getPlayStyle() + "\" aggression=\"" + team.getAggression() + "\" />\r\n"
  1396. + "\t<Pos pos=\"goalie\" pid=\"" + pidArr.shift() + "\" x=\"103\" y=\"315\" x1=\"103\" y1=\"315\" x2=\"103\" y2=\"315\" pt=\"15\" fk=\"15\" />\r\n";
  1397.  
  1398.  
  1399. while (pl = nl.iterateNext()) {
  1400. let origin = pl.getAttribute('origin');
  1401. let teamId = pl.getAttribute("teamId");
  1402. if (origin != "" && origin != "375,0" && origin != "375,1000") {
  1403. let arr = origin.split(",");
  1404. if (team.getId() == teamId) {
  1405. let x = StatsToPos_X(arr[0], ishome);
  1406. let y = StatsToPos_Y(arr[1], ishome);
  1407. tmpXML += "\t<Pos pos=\"normal\" pid=\"" + pidArr.shift() + "\" x=\"" + x + "\" y=\"" + y + "\" x1=\"" + x + "\" y1=\"" + y + "\" x2=\"" + x + "\" y2=\"" + y + "\" pt=\"1\" fk=\"1\" />\r\n";
  1408. }
  1409.  
  1410. }
  1411. }
  1412. tmpXML += "</SoccerTactics>\r\n";
  1413. GM_setClipboard(tmpXML);
  1414. alert(now_language.CopyXmlMsg);
  1415. return tmpXML;
  1416. }
  1417.  
  1418.  
  1419. let _open;
  1420. let finalInitAfterLoading, processButtonPresses, Load010SetupMainSceneInstance;
  1421. let OK_2D = false;
  1422. (function () {
  1423. 'use strict';
  1424.  
  1425. initgw();
  1426.  
  1427. _open = window.XMLHttpRequest.prototype.open;
  1428. window.XMLHttpRequest.prototype.open = function () {
  1429. if (mzreg.data2d_url.test(arguments[1])) {
  1430. OK_2D = false;
  1431. if (MyGame.prototype.mzlive.R_GW == undefined) {
  1432. MyGame.prototype.mzlive.R_GW = true;
  1433.  
  1434. finalInitAfterLoading = MyGame.prototype.mzlive.finalInitAfterLoading;
  1435. MyGame.prototype.mzlive.finalInitAfterLoading = function () {
  1436. finalInitAfterLoading.apply(this);
  1437. OK_2D = true;
  1438. Advanced2D();
  1439. };
  1440. Load010SetupMainSceneInstance = MyGame.prototype.Load010SetupMainSceneInstance;
  1441. MyGame.prototype.Load010SetupMainSceneInstance = function () {
  1442. window.matchLoader = arguments[0];
  1443. Load010SetupMainSceneInstance.apply(this, arguments);
  1444. };
  1445. //processButtonPresses = MyGame.prototype.mzlive.processButtonPresses;
  1446. //MyGame.prototype.mzlive.processButtonPresses = function () {
  1447. // processButtonPresses.apply(this);
  1448. // if (this.m_state < 2) {
  1449. // return;
  1450. // }
  1451. // if (ig.input.pressed('jijing')) {
  1452. // ShowDiv(0);
  1453. // } else if (ig.input.pressed('dongzuo')) {
  1454. // ShowDiv(1);
  1455. // }
  1456. //};
  1457.  
  1458.  
  1459. }
  1460. }
  1461. return _open.apply(this, arguments);
  1462. };
  1463.  
  1464. gw_start(0);
  1465. report();
  1466. autoclearCache();
  1467. })();