van.mz.playerAdvanced

Player display optimization 球员着色插件

目前為 2020-01-16 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name van.mz.playerAdvanced
  3. // @namespace van
  4. // @version 4.10
  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.jsdelivr.net/pako/1.0.5/pako.min.js
  16. // @require https://cdn.jsdelivr.net/npm/dexie
  17. // @require https://cdn.jsdelivr.net/gh/blueimp/JavaScript-MD5/js/md5.min.js
  18. // @require https://cdn.jsdelivr.net/gh/vanjoge/MZExtension/Scripts/base64js.min.js
  19. // @require https://cdn.jsdelivr.net/gh/vanjoge/MZExtension/Scripts/vplev5.min.js
  20. // ==/UserScript==
  21.  
  22. var vanGmMzModel = {
  23.  
  24. language: {
  25. zh: {
  26. Name: "中文",
  27. GetPlayersHtml: "获取球员页面HTML",
  28. GetPlayersHtml2: "获取球员页面HTML(不用缓存)",
  29. Clear: "清空缓存",
  30. Save: "保存",
  31. Setting: "设置",
  32. Test: "测试",
  33. SettingTitle: "点击可对语言和XML导出进行设置",
  34. Language: "语言",
  35. XmlMode: "战术导出模式",
  36. XmlMode1: "顺序选择球员",
  37. XmlMode2: "根据位置选择球员(需提交数据到后台)",
  38. TacConf: "位置系数设置",
  39. AutoRun: "自动着色",
  40. AutoRun0: "仅打开页面时自动执行一次",
  41. AutoRun1: "随系统刷新自动着色(如果浏览器变卡请关闭此选项)",
  42.  
  43.  
  44. NotSureEx: "挂牌后属性可能有变动,不确定转会市场显示是否是真实属性,请自行甄别。<br/>属性变动时间",
  45. NotSure: "属性不确定",
  46. ManualColorTitle: "点击可手动着色 快捷键:ALT + A",
  47. ManualColor: "手动着色",
  48. Jijing: "比赛集锦",
  49. dongzuo: "球员动作",
  50. Copyxml1: "复制主队战术",
  51. Copyxml2: "复制客队战术",
  52. CopyXml: "数据已复制到剪切板",
  53. CopyXmlMsg: "战术已复制到剪切板",
  54. CopyXmlMsgError: "战术复制失败",
  55. BA_NORMAL: "BA_NORMAL",
  56. BA_WALL: "站人墙",
  57. BA_HOLD: "抱着球",
  58. BA_DOWN: "倒地",
  59. BA_HOLD_THROWIN: "界外球准备",
  60. BA_THROWIN: "界外球",
  61. BA_LEFT_FOOT_SHOT_FWD: "射门/长传(L)",
  62. BA_LEFT_FOOT_SHOT_BACK: "BA_LEFT_FOOT_SHOT_BACK",
  63. BA_LEFT_FOOT_SHOT_RIGHT: "BA_LEFT_FOOT_SHOT_RIGHT",
  64. BA_LEFT_FOOT_SHOT_LEFT: "BA_LEFT_FOOT_SHOT_LEFT",
  65. BA_RIGHT_FOOT_SHOT_FWD: "射门/长传(R)",
  66. BA_RIGHT_FOOT_SHOT_BACK: "BA_RIGHT_FOOT_SHOT_BACK",
  67. BA_RIGHT_FOOT_SHOT_RIGHT: "BA_RIGHT_FOOT_SHOT_RIGHT",
  68. BA_RIGHT_FOOT_SHOT_LEFT: "BA_RIGHT_FOOT_SHOT_LEFT",
  69. BA_LEFT_FOOT_PASS_FWD: "短传(L)",
  70. BA_LEFT_FOOT_PASS_BACK: "BA_LEFT_FOOT_PASS_BACK",
  71. BA_LEFT_FOOT_PASS_RIGHT: "BA_LEFT_FOOT_PASS_RIGHT",
  72. BA_LEFT_FOOT_PASS_LEFT: "BA_LEFT_FOOT_PASS_LEFT",
  73. BA_RIGHT_FOOT_PASS_FWD: "短传(R)",
  74. BA_RIGHT_FOOT_PASS_BACK: "BA_RIGHT_FOOT_PASS_BACK",
  75. BA_RIGHT_FOOT_PASS_RIGHT: "BA_RIGHT_FOOT_PASS_RIGHT",
  76. BA_RIGHT_FOOT_PASS_LEFT: "BA_RIGHT_FOOT_PASS_LEFT",
  77. BA_PICK_UP_BALL: "捡起球",
  78. BA_DROP_BALL: "放下球",
  79. BA_HEADER: "争顶",
  80. BA_TRIP: "丢失球权",
  81. BA_CELEBRATE: "庆祝进球",
  82. BA_GK_READY: "准备扑救",
  83. BA_GK_ACRO_LEFT: "ACRO(L)",
  84. BA_GK_ACRO_LEFT_HOLD: "ACRO_HOLD(L)",
  85. BA_GK_ACRO_RIGHT: "ACRO(R)",
  86. BA_GK_ACRO_RIGHT_HOLD: "ACRO_HOLD(R)",
  87. BA_GK_SIDESTEP_LEFT: "移动(L)",
  88. BA_GK_SIDESTEP_RIGHT: "移动(R)",
  89. BA_GK_KICK: "BA_GK_KICK",
  90. BA_GK_THROW_BALL: "BA_GK_THROW_BALL",
  91. BA_GK_STRETCH_LEFT: "BA_GK_STRETCH_LEFT",
  92. BA_GK_STRETCH_LEFT_HOLD: "BA_GK_STRETCH_LEFT_HOLD",
  93. BA_GK_STRETCH_RIGHT: "BA_GK_STRETCH_RIGHT",
  94. BA_GK_STRETCH_RIGHT_HOLD: "BA_GK_STRETCH_RIGHT_HOLD",
  95. BA_BALL_OWNER: "控球",
  96. BA_TACKLE: "上抢",
  97. BA_SLIDING_TACKLE: "BA_SLIDING_TACKLE",
  98. BA_SLIDING_TACKLE_STAND: "BA_SLIDING_TACKLE_STAND",
  99. BA_MAX: "BA_MAX",
  100. BA_MY_1001: "头球攻门(L)",
  101. BA_MY_1002: "头球攻门(R)",
  102. BA_MY_1003: "卸下球",
  103. BA_MY_1011: "上抢(成功)",
  104. BA_MY_1012: "上抢(失败)",
  105. Unknown: "未知"
  106.  
  107.  
  108. ,
  109. training_pos: "无教练",
  110. training_camp: "进营",
  111. training_coach: "有教练",
  112. training_ycc: "调整",
  113. training_itc: "强化",
  114. training_neg: "掉球",
  115. training_unit: "格",
  116. training_unknown: "未知训练类型",
  117. training_ball_day: "离下一次涨球训练天数",
  118. training_part: "分段训练效率",
  119. training_total: "进度",
  120. training_avg: "平均",
  121. training_now: "当前训练进度",
  122. SkillsAnalysisTitle: "点击可手动着色和分析训练效率 快捷键:ALT + S",
  123. SkillsAnalysis: "训练效率分析"
  124.  
  125.  
  126. ,
  127.  
  128. sug_T0: "首选:",
  129. sug_T1: "次选:",
  130. sug_T2: "可尝试:",
  131. sug_T3: "默认:",
  132.  
  133. Pos9: "后卫",
  134. Pos7: "门将",
  135. Pos10: "边锋",
  136. Pos5: "前锋",
  137. Pos4: "中场",
  138. Pos56: "中锋",
  139.  
  140. sug_Loser: "关键属性容易早死,尽早交换或开除。",
  141.  
  142. sug_PRI: "训练顺序:",
  143. attrName1: "速度",
  144. attrName2: "耐力",
  145. attrName3: "意识",
  146. attrName4: "传球",
  147. attrName5: "射门",
  148. attrName6: "头球",
  149. attrName7: "守门",
  150. attrName8: "控球",
  151. attrName9: "抢断",
  152. attrName10: "传中",
  153. attrName11: "定位"
  154.  
  155. ,
  156. scoutReport: "球探报告"
  157.  
  158. }
  159. ,
  160.  
  161. en: {
  162. Name: "English",
  163. GetPlayersHtml: "Get players page",
  164. GetPlayersHtml2: "Get players page(No cache)",
  165. Clear: "Clear Cache",
  166. Save: "Save",
  167. Setting: "Setting",
  168. Test: "Test",
  169. SettingTitle: "Click setting language",
  170. Language: "Language",
  171. XmlMode: "Tactical Export Model",
  172. XmlMode1: "Sequential selection",
  173. XmlMode2: "Choose by location(need submit data to server)",
  174. TacConf: "Tactical Coefficient Setting",
  175. AutoRun: "Auto Colorable",
  176. AutoRun0: "By page loaded(Once)",
  177. AutoRun1: "By MZ Refresh",
  178.  
  179. NotSureEx: "Skills may change after entering the transfer market.<br/>Change time ",
  180. NotSure: "Uncertain skill",
  181. ManualColorTitle: "Click the Colorable Skill. Shortcut key : ALT + A",
  182. ManualColor: "Colorable Skill",
  183. Jijing: "Events",
  184. dongzuo: "PlayerStatus",
  185. Copyxml1: "CopyXML(home)",
  186. Copyxml2: "CopyXML(away)",
  187. CopyXml: "The data has been copied to the clipboard!",
  188. CopyXmlMsg: "The tactic was copied to the Clipboard!",
  189. CopyXmlMsgError: "Copy error!",
  190. BA_NORMAL: "Normal",
  191. BA_WALL: "Wall",
  192. BA_HOLD: "Hold",
  193. BA_DOWN: "Down",
  194. BA_HOLD_THROWIN: "HoldThrowin",
  195. BA_THROWIN: "Throwin",
  196. BA_LEFT_FOOT_SHOT_FWD: "FootShot(L)",
  197. BA_LEFT_FOOT_SHOT_BACK: "FootShotBack(L)",
  198. BA_LEFT_FOOT_SHOT_RIGHT: "FootShotRight(L)",
  199. BA_LEFT_FOOT_SHOT_LEFT: "FootShotLeft(L)",
  200. BA_RIGHT_FOOT_SHOT_FWD: "FootShot(R)",
  201. BA_RIGHT_FOOT_SHOT_BACK: "FootShotBack(R)",
  202. BA_RIGHT_FOOT_SHOT_RIGHT: "FootShotRight(R)",
  203. BA_RIGHT_FOOT_SHOT_LEFT: "FootShotLeft(R)",
  204. BA_LEFT_FOOT_PASS_FWD: "FootPass(L)",
  205. BA_LEFT_FOOT_PASS_BACK: "FootPassBack(L)",
  206. BA_LEFT_FOOT_PASS_RIGHT: "FootPassRight(L)",
  207. BA_LEFT_FOOT_PASS_LEFT: "FootPassLeft(L)",
  208. BA_RIGHT_FOOT_PASS_FWD: "FootPass(R)",
  209. BA_RIGHT_FOOT_PASS_BACK: "FootPassBack(R)",
  210. BA_RIGHT_FOOT_PASS_RIGHT: "FootPassRight(R)",
  211. BA_RIGHT_FOOT_PASS_LEFT: "FootPassLeft(R)",
  212. BA_PICK_UP_BALL: "PickUpBall",
  213. BA_DROP_BALL: "DropBall",
  214. BA_HEADER: "Header",
  215. BA_TRIP: "Trip",
  216. BA_CELEBRATE: "Celebrate",
  217. BA_GK_READY: "GkReady",
  218. BA_GK_ACRO_LEFT: "GkAcroLeft",
  219. BA_GK_ACRO_LEFT_HOLD: "GkAcroLeftHold",
  220. BA_GK_ACRO_RIGHT: "GkAcroRight",
  221. BA_GK_ACRO_RIGHT_HOLD: "GkAcroRightHold",
  222. BA_GK_SIDESTEP_LEFT: "GkSidestepLeft",
  223. BA_GK_SIDESTEP_RIGHT: "GkSidestepRight",
  224. BA_GK_KICK: "GkKick",
  225. BA_GK_THROW_BALL: "GkThrowBall",
  226. BA_GK_STRETCH_LEFT: "GkStretchLeft",
  227. BA_GK_STRETCH_LEFT_HOLD: "GkStretchLeftHold",
  228. BA_GK_STRETCH_RIGHT: "GkStretchRight",
  229. BA_GK_STRETCH_RIGHT_HOLD: "GkStretchRightHold",
  230. BA_BALL_OWNER: "BallOwner",
  231. BA_TACKLE: "Tackle",
  232. BA_SLIDING_TACKLE: "SlidingTackle",
  233. BA_SLIDING_TACKLE_STAND: "SlidingTackleStand",
  234. BA_MAX: "Max",
  235. BA_MY_1001: "HeadGoal(L)",
  236. BA_MY_1002: "HeadGoal(R)",
  237. BA_MY_1003: "StopTheBall",
  238. BA_MY_1011: "Tackle(Success)",
  239. BA_MY_1012: "Tackle(Fail)",
  240. Unknown: "Unknown"
  241.  
  242.  
  243.  
  244. ,
  245. training_pos: "No coach",
  246. training_camp: "CAMP",
  247. training_coach: "Coach",
  248. training_ycc: "Ycc",
  249. training_itc: "Itc",
  250. training_neg: "Neg",
  251. training_unit: "↑",
  252. training_unknown: "Unknown training",
  253. training_ball_day: "Next ball days",
  254. training_part: "Training efficiency",
  255. training_total: "Total",
  256. training_avg: "Avg",
  257. training_now: "Now",
  258. SkillsAnalysisTitle: "Colorable Skill and Analysis of Training Efficiency Shortcut key :ALT + S",
  259. SkillsAnalysis: "Colorable By Graphs"
  260.  
  261.  
  262.  
  263. ,
  264. sug_T0: "First plan:",
  265. sug_T1: "Second plan:",
  266. sug_T2: "May try:",
  267. sug_T3: "Default:",
  268.  
  269. Pos9: "CB",
  270. Pos7: "GK",
  271. Pos10: "WF",
  272. Pos5: "ST",
  273. Pos4: "MF",
  274. Pos56: "CF",
  275.  
  276. sug_Loser: "Key skills too low.Exchange or dismiss as soon as possible.",
  277.  
  278. sug_PRI: "Training order:",
  279. attrName1: "Speed",
  280. attrName2: "Stamina",
  281. attrName3: "Play Intelligence",
  282. attrName4: "Passing",
  283. attrName5: "Shooting",
  284. attrName6: "Heading",
  285. attrName7: "Keeping",
  286. attrName8: "Ball Control",
  287. attrName9: "Tackling",
  288. attrName10: "Aerial Passing",
  289. attrName11: "Set Plays"
  290. ,
  291. scoutReport: "Scout Report"
  292. }
  293.  
  294. ,
  295. es: {
  296. Name: "Español",
  297. GetPlayersHtml: "Página de jugadores",
  298. GetPlayersHtml2: "Página de jugadores(sin caché)",
  299. Clear: "Vaciar el caché",
  300. Save: "Guardar",
  301. Setting: "Ajustes",
  302. Test: "Test",
  303. SettingTitle: "Haga clic en configuración Idioma",
  304. Language: "Idioma",
  305.  
  306. XmlMode: "Tactical Export Model",
  307. XmlMode1: "Secuencia de selección",
  308. XmlMode2: "Elegir por locación (necesita suministrar datos al servidor)",
  309. TacConf: "Tactical Coefficient Setting",
  310. AutoRun: "Auto Coloreable",
  311. AutoRun0: "Por página cargada (sólo una vez)",
  312. AutoRun1: "Por recargar MZ",
  313.  
  314. NotSureEx: "Las skills pueden cambiar después de ingresar al mercado. <br/> Cambiar hora ",
  315. NotSure: "Skill incierta",
  316. ManualColorTitle: "Haga clic en la skill para colorear. Acceso directo: ALT + A",
  317. ManualColor: "Color de la skill",
  318. Jijing: "Eventos",
  319. dongzuo: "PlayerStatus",
  320. Copyxml1: "CopiarXML(local)",
  321. Copyxml2: "CopiarXML(visitante)",
  322. CopyXml: "Los datos se han copiado al portapapeles",
  323. CopyXmlMsg: "La táctica fue copiada al portapapeles",
  324. CopyXmlMsgError: "¡Error al copiar!",
  325. BA_NORMAL: "Normal",
  326. BA_WALL: "Wall",
  327. BA_HOLD: "Hold",
  328. BA_DOWN: "Down",
  329. BA_HOLD_THROWIN: "HoldThrowin",
  330. BA_THROWIN: "Throwin",
  331. BA_LEFT_FOOT_SHOT_FWD: "FootShot(L)",
  332. BA_LEFT_FOOT_SHOT_BACK: "FootShotBack(L)",
  333. BA_LEFT_FOOT_SHOT_RIGHT: "FootShotRight(L)",
  334. BA_LEFT_FOOT_SHOT_LEFT: "FootShotLeft(L)",
  335. BA_RIGHT_FOOT_SHOT_FWD: "FootShot(R)",
  336. BA_RIGHT_FOOT_SHOT_BACK: "FootShotBack(R)",
  337. BA_RIGHT_FOOT_SHOT_RIGHT: "FootShotRight(R)",
  338. BA_RIGHT_FOOT_SHOT_LEFT: "FootShotLeft(R)",
  339. BA_LEFT_FOOT_PASS_FWD: "FootPass(L)",
  340. BA_LEFT_FOOT_PASS_BACK: "FootPassBack(L)",
  341. BA_LEFT_FOOT_PASS_RIGHT: "FootPassRight(L)",
  342. BA_LEFT_FOOT_PASS_LEFT: "FootPassLeft(L)",
  343. BA_RIGHT_FOOT_PASS_FWD: "FootPass(R)",
  344. BA_RIGHT_FOOT_PASS_BACK: "FootPassBack(R)",
  345. BA_RIGHT_FOOT_PASS_RIGHT: "FootPassRight(R)",
  346. BA_RIGHT_FOOT_PASS_LEFT: "FootPassLeft(R)",
  347. BA_PICK_UP_BALL: "Toma la pelota",
  348. BA_DROP_BALL: "Tira la pelota al césped",
  349. BA_HEADER: "Cabezazo",
  350. BA_TRIP: "Trip",
  351. BA_CELEBRATE: "Celebración",
  352. BA_GK_READY: "Arquero preparado",
  353. BA_GK_ACRO_LEFT: "GkAcroLeft",
  354. BA_GK_ACRO_LEFT_HOLD: "GkAcroLeftHold",
  355. BA_GK_ACRO_RIGHT: "GkAcroRight",
  356. BA_GK_ACRO_RIGHT_HOLD: "GkAcroRightHold",
  357. BA_GK_SIDESTEP_LEFT: "Arquero da un paso a la izquierda",
  358. BA_GK_SIDESTEP_RIGHT: "Arquero da un paso a la derecha",
  359. BA_GK_KICK: "Arquero da una patada",
  360. BA_GK_THROW_BALL: "GkThrowBall",
  361. BA_GK_STRETCH_LEFT: "GkStretchLeft",
  362. BA_GK_STRETCH_LEFT_HOLD: "GkStretchLeftHold",
  363. BA_GK_STRETCH_RIGHT: "GkStretchRight",
  364. BA_GK_STRETCH_RIGHT_HOLD: "GkStretchRightHold",
  365. BA_BALL_OWNER: "Con la pelota en los pies",
  366. BA_TACKLE: "Entrada",
  367. BA_SLIDING_TACKLE: "Barrida",
  368. BA_SLIDING_TACKLE_STAND: "SlidingTackleStand",
  369. BA_MAX: "Max",
  370. BA_MY_1001: "HeadGoal(L)",
  371. BA_MY_1002: "HeadGoal(R)",
  372. BA_MY_1003: "Frena la pelota",
  373. BA_MY_1011: "Entrada(acertada)",
  374. BA_MY_1012: "Entrada(fallida)",
  375. Unknown: "Desconocido"
  376.  
  377.  
  378. ,
  379. training_pos: "Sin entrenador",
  380. training_camp: "CAMP",
  381. training_coach: "Coach",
  382. training_ycc: "YCC",
  383. training_itc: "ITC",
  384. training_neg: "Neg",
  385. training_unit: "↑",
  386. training_unknown: "Entrenamiento desconocido",
  387. training_ball_day: "Días para ganar una pelotita",
  388. training_part: "Eficacia de entrenamiento",
  389. training_total: "Total",
  390. training_avg: "Avg",
  391. training_now: "Ahora",
  392. SkillsAnalysisTitle: "Skills y análisis de eficacia de entrenamiento coloreables al presionar: ALT + S",
  393. SkillsAnalysis: "Coloreable por gráficos"
  394.  
  395.  
  396. ,
  397. sug_T0: "Primera opción:",
  398. sug_T1: "Segunda opción:",
  399. sug_T2: "Podrías intentar:",
  400. sug_T3: "Predeterminado:",
  401.  
  402. Pos9: "Centro defensor",
  403. Pos7: "Arquero",
  404. Pos10: "Delantero lateral",
  405. Pos5: "Segundo delantero",
  406. Pos4: "Centrocampista",
  407. Pos56: "Miediocampista/Anchor",
  408.  
  409. sug_Loser: "Habilidades clave demasiado bajas. Intercambialo lo más antes posible.",
  410.  
  411. sug_PRI: "Orden de entrenamiento:",
  412. attrName1: "Velocidad",
  413. attrName2: "Resistencia",
  414. attrName3: "Inteligencia",
  415. attrName4: "Pases",
  416. attrName5: "Remates",
  417. attrName6: "Cabezazos",
  418. attrName7: "Atajando",
  419. attrName8: "Control de balón",
  420. attrName9: "Entradas",
  421. attrName10: "Pases Largos",
  422. attrName11: "Balón Parado"
  423. ,
  424. scoutReport: "REPORTE DE SCOUTEO"
  425. }
  426. ,
  427.  
  428. br: {
  429. Name: "Português",
  430. GetPlayersHtml: "Página de jogadores",
  431. GetPlayersHtml2: "Página de jugadores(sem cache)",
  432. Clear: "Esvaziar o cache",
  433. Save: "Salvar",
  434. Setting: "Configurações",
  435. Test: "Teste",
  436. SettingTitle: "Clique para configurar linguagem",
  437. Language: "Linguagem",
  438. XmlMode: "Exportar Modelo Tático",
  439. XmlMode1: "Seleção Sequencial",
  440. XmlMode2: "Escolha localização (precisa submeter dados ao servidor)",
  441. TacConf: "Configuração de Coeficiente Tático",
  442. AutoRun: "Auto Colorir",
  443. AutoRun0: "Por página carregada(Uma vez)",
  444. AutoRun1: "Recarregada do MZ",
  445.  
  446. NotSureEx: "Habilidades podem mudar depois de entrar no mercado de transferências.<br/>Hora da mudança ",
  447. NotSure: "Habilidade incerta",
  448. ManualColorTitle: "Clique na habilidade colorida. Tecla de atalho: ALT + A",
  449. ManualColor: "Habilidade colorida",
  450. Jijing: "Eventos",
  451. dongzuo: "Status do jogador",
  452. Copyxml1: "Copiar XML(mandante)",
  453. Copyxml2: "Copiar XML(visitante)",
  454. CopyXml: "Os dados foram copiados para a área de transferência!",
  455. CopyXmlMsg: "A tática foi copiada para a área de transferências!",
  456. CopyXmlMsgError: "Erro na cópia!",
  457. BA_NORMAL: "Normal",
  458. BA_WALL: "Wall",
  459. BA_HOLD: "Hold",
  460. BA_DOWN: "Down",
  461. BA_HOLD_THROWIN: "HoldThrowin",
  462. BA_THROWIN: "Throwin",
  463. BA_LEFT_FOOT_SHOT_FWD: "FootShot(L)",
  464. BA_LEFT_FOOT_SHOT_BACK: "FootShotBack(L)",
  465. BA_LEFT_FOOT_SHOT_RIGHT: "FootShotRight(L)",
  466. BA_LEFT_FOOT_SHOT_LEFT: "FootShotLeft(L)",
  467. BA_RIGHT_FOOT_SHOT_FWD: "FootShot(R)",
  468. BA_RIGHT_FOOT_SHOT_BACK: "FootShotBack(R)",
  469. BA_RIGHT_FOOT_SHOT_RIGHT: "FootShotRight(R)",
  470. BA_RIGHT_FOOT_SHOT_LEFT: "FootShotLeft(R)",
  471. BA_LEFT_FOOT_PASS_FWD: "FootPass(L)",
  472. BA_LEFT_FOOT_PASS_BACK: "FootPassBack(L)",
  473. BA_LEFT_FOOT_PASS_RIGHT: "FootPassRight(L)",
  474. BA_LEFT_FOOT_PASS_LEFT: "FootPassLeft(L)",
  475. BA_RIGHT_FOOT_PASS_FWD: "FootPass(R)",
  476. BA_RIGHT_FOOT_PASS_BACK: "FootPassBack(R)",
  477. BA_RIGHT_FOOT_PASS_RIGHT: "FootPassRight(R)",
  478. BA_RIGHT_FOOT_PASS_LEFT: "FootPassLeft(R)",
  479. BA_PICK_UP_BALL: "Pega a bola",
  480. BA_DROP_BALL: "Deixa a bola",
  481. BA_HEADER: "Cabeceio",
  482. BA_TRIP: "Trip",
  483. BA_CELEBRATE: "Celebração",
  484. BA_GK_READY: "Goleiro pronto",
  485. BA_GK_ACRO_LEFT: "GkAcroLeft",
  486. BA_GK_ACRO_LEFT_HOLD: "GkAcroLeftHold",
  487. BA_GK_ACRO_RIGHT: "GkAcroRight",
  488. BA_GK_ACRO_RIGHT_HOLD: "GkAcroRightHold",
  489. BA_GK_SIDESTEP_LEFT: "Goleiro dá passo à esquerda",
  490. BA_GK_SIDESTEP_RIGHT: "Goleiro dá passo à direita",
  491. BA_GK_KICK: "Goleiro chuta",
  492. BA_GK_THROW_BALL: "GkThrowBall",
  493. BA_GK_STRETCH_LEFT: "GkStretchLeft",
  494. BA_GK_STRETCH_LEFT_HOLD: "GkStretchLeftHold",
  495. BA_GK_STRETCH_RIGHT: "GkStretchRight",
  496. BA_GK_STRETCH_RIGHT_HOLD: "GkStretchRightHold",
  497. BA_BALL_OWNER: "Com a bola nos pés",
  498. BA_TACKLE: "Desarme",
  499. BA_SLIDING_TACKLE: "Carrinho",
  500. BA_SLIDING_TACKLE_STAND: "SlidingTackleStand",
  501. BA_MAX: "Max",
  502. BA_MY_1001: "HeadGoal(L)",
  503. BA_MY_1002: "HeadGoal(R)",
  504. BA_MY_1003: "Pára a bola",
  505. BA_MY_1011: "Desarme(Sucesso)",
  506. BA_MY_1012: "Desarme(Falha)",
  507. Unknown: "Desconhecido"
  508.  
  509.  
  510.  
  511. ,
  512. training_pos: "Sem treinador",
  513. training_camp: "CAMP",
  514. training_coach: "Coach",
  515. training_ycc: "Ycc",
  516. training_itc: "Itc",
  517. training_neg: "Neg",
  518. training_unit: "↑",
  519. training_unknown: "Treinamento desconhecido",
  520. training_ball_day: "Dias para ganhar bola",
  521. training_part: "Eficiência de treinamento",
  522. training_total: "Total",
  523. training_avg: "Avg",
  524. training_now: "Agora",
  525. SkillsAnalysisTitle: "Tecla de atalho de Habilidades coloridas e Análise de Eficiência de treinamento: ALT + S",
  526. SkillsAnalysis: "Colorir por gráficos"
  527.  
  528.  
  529.  
  530. ,
  531. sug_T0: "Primeira opção:",
  532. sug_T1: "Segunda opção:",
  533. sug_T2: "Pode tentar:",
  534. sug_T3: "Padrão:",
  535.  
  536. Pos9: "Zagueiro central",
  537. Pos7: "Goleiro",
  538. Pos10: "Ponta",
  539. Pos5: "Segundo atacante",
  540. Pos4: "Meia Central",
  541. Pos56: "Meio-campo/Volante",
  542.  
  543. sug_Loser: "Habilidades principais muito baixas. Troque ou dispense o mais breve possível.",
  544.  
  545. sug_PRI: "Ordem de treinamento:",
  546. attrName1: "Velocidade",
  547. attrName2: "Resistência",
  548. attrName3: "Inteligência",
  549. attrName4: "Passe Curto",
  550. attrName5: "Chute",
  551. attrName6: "Cabeceio",
  552. attrName7: "Defesa a Gol",
  553. attrName8: "Controle de Bola",
  554. attrName9: "Desarme",
  555. attrName10: "Passe Longo",
  556. attrName11: "Bola Parada"
  557. ,
  558. scoutReport: "Relatório de Observador"
  559. }
  560. }
  561. ,
  562. scoutLocList: { "9": { "Prop": { "1": 0, "2": 0, "9": 1, "10": 2, "8": 2, "3": 2, "4": 2, "6": 2 }, "Order": [1, 2, 9, 10, 8, 3, 4, 6], "CampKey": "9" }, "7": { "Prop": { "2": 0, "7": 1, "3": 1, "1": 1, "10": 2, "11": 2, "8": 2 }, "Order": [2, 7, 3, 1, 10, 11, 8], "CampKey": "7" }, "10": { "Prop": { "1": 0, "2": 0, "10": 1, "8": 1, "9": 2, "4": 2, "5": 2, "6": 2 }, "Order": [1, 2, 10, 8, 9, 4, 5, 6], "CampKey": "10" }, "5": { "Prop": { "1": 0, "2": 0, "5": 1, "8": 1, "6": 1, "3": 2, "4": 2, "10": 2, "9": 2 }, "Order": [1, 2, 5, 8, 6, 3, 4, 10, 9], "CampKey": "5" }, "4": { "Prop": { "1": 0, "2": 0, "4": 1, "8": 1, "3": 1, "10": 2, "9": 2, "5": 2, "6": 2 }, "Order": [1, 2, 4, 8, 3, 10, 9, 5, 6], "CampKey": "4" }, "5,6": { "Prop": { "2": 0, "1": 0, "5": 1, "6": 1, "8": 1, "3": 2, "4": 2, "10": 2, "9": 2 }, "Order": [2, 1, 5, 8, 6, 3, 4, 10, 9], "CampKey": "56" } }
  563. ,
  564. OKeys: ["9", "7", "10", "5", "4", "5,6"]
  565. ,
  566. CTable: function () {
  567. //key value
  568. this.data = {};
  569. //keys
  570. this.keys = new Array();
  571. this.addData = function (key, value) {
  572. if (this.data[key] == undefined) {
  573. this.keys.push(key);
  574. this.keys.sort(function (a, b) {
  575. return a - b;
  576. });
  577. }
  578. this.data[key] = value;
  579. };
  580. this.getVal = function (i) {
  581. if (this.data[i] == undefined) {
  582. //
  583. } else {
  584. return this.data[i];
  585. }
  586. };
  587. this.GetX = function (i) {
  588. let rv = this.getVal(i);
  589. rv = Math.floor(rv * 214 / 1000) - 3;
  590. return rv;
  591. };
  592. this.GetY = function (i) {
  593. let rv = this.getVal(i);
  594. rv = Math.floor(rv * 328 / 1000) - 1;
  595. return rv;
  596. };
  597. }
  598. ,
  599.  
  600. mzcamp: function () {
  601. this.data = {};
  602. this.name = null;
  603. this.keys = new Array();
  604. this.index = 0;
  605. this.add = function (begin, end) {
  606. if (end > begin + 2937600000) {
  607. end = begin + 2937600000;
  608. }
  609. if (this.data[begin] == undefined) {
  610. this.keys.push(begin);
  611. this.keys.sort(function (a, b) {
  612. return a - b;
  613. });
  614. }
  615. this.data[begin] = {
  616. begin: begin,
  617. end: end
  618. };
  619. };
  620. this.getItem = function (begin) {
  621. return this.data[begin];
  622. };
  623. this.resetIndex = function () {
  624. this.index = 0;
  625. };
  626. this.inYTC = function (x) {
  627. while (this.index < this.keys.length) {
  628. let item = this.data[this.keys[this.index]];
  629. if (x < item.begin) {
  630. return false;
  631. } else if (x <= item.end) {
  632. if (/\d/.test(item.name)) {
  633. return false;
  634. }
  635. return true;
  636. }
  637. if (x > item.end) {
  638. this.index++;
  639. }
  640. }
  641. return false;
  642. };
  643. }
  644. ,
  645. playerTrainingBySkill: function () {
  646. //涨球时间
  647. this.ballDay = 0;
  648. //训练统计
  649. this.stat = new vanGmMzModel.trainingStat();
  650. //当前球数
  651. this.skill = 0;
  652. //最后一次训练
  653. this.lt = 0;
  654. }
  655. ,
  656. trainingStat: function () {
  657. //所有 不包含掉球
  658. this.all = new vanGmMzModel.trainingDay();
  659. ////普通训练 无教练
  660. //this.pos = new vanGmMzModel.trainingDay();
  661. ////强化营
  662. //this.itc = new vanGmMzModel.trainingDay();
  663. ////调整营
  664. //this.ycc = new vanGmMzModel.trainingDay();
  665. ////掉球
  666. //this.neg = new vanGmMzModel.trainingDay();
  667. ////理疗
  668. //this.physio = new vanGmMzModel.trainingDay();
  669. ////有教练
  670. //this.coach = new vanGmMzModel.trainingDay();
  671. ////训练营
  672. //this.camp = new vanGmMzModel.trainingDay();
  673. //对某类型加1
  674. this.add = function (type, tn) {
  675. if (!this[type]) {
  676. this[type] = new vanGmMzModel.trainingDay();
  677. }
  678. this[type][tn] += 1;
  679.  
  680. };
  681. this.getSum = function (canOver100) {
  682. let ret = 0;
  683. if (this.neg) {
  684. ret = this.all.getSum() - this.neg.getSum();
  685. } else {
  686. ret = this.all.getSum();
  687. }
  688. if (!canOver100) {
  689. if (ret >= 100) {
  690. ret = 99.99;
  691. }
  692. }
  693. return ret;
  694. };
  695. this.getAvg = function () {
  696. //let ret = this.getSum() / (this.t1 * 1 + this.t2 * 1 + this.t3 * 1 + this.t4 * 1 + this.t5 * 1 + this.t6 * 1 + this.t7 * 1 + this.t8 * 1 + this.t9 * 1 + this.t10 * 1);
  697. //ret = parseFloat(ret).toFixed(1);
  698. //return ret;
  699. if (this.neg) {
  700. return -this.neg.getAvg();
  701. } else {
  702. return this.all.getAvg();
  703. }
  704. };
  705. this.getTnText = function (now_language) {
  706. let str = "";
  707. if (this.pos) {
  708. str += " " + now_language.training_pos + this.pos.getTnText(now_language);
  709. }
  710. if (this.camp) {
  711. str += " " + now_language.training_camp + this.camp.getTnText(now_language);
  712. }
  713. if (this.coach) {
  714. str += " " + now_language.training_coach + this.coach.getTnText(now_language);
  715. }
  716. if (this.ycc) {
  717. str += " " + now_language.training_ycc + this.ycc.getTnText(now_language);
  718. }
  719. if (this.itc) {
  720. str += " " + now_language.training_itc + this.itc.getTnText(now_language);
  721. }
  722. if (this.neg) {
  723. str += " " + now_language.training_neg + this.neg.getTnText(now_language);
  724. }
  725. return str;
  726. };
  727. //this.getAvgAndText = function () {
  728. // //let ret = this.getSum() / (this.t1 * 1 + this.t2 * 1 + this.t3 * 1 + this.t4 * 1 + this.t5 * 1 + this.t6 * 1 + this.t7 * 1 + this.t8 * 1 + this.t9 * 1 + this.t10 * 1);
  729. // //ret = parseFloat(ret).toFixed(1);
  730. // //return ret;
  731.  
  732. // let ret = this.getAvg();
  733. // let str = "";
  734. // if (ret <= 0.4) {
  735. // str = "1格";
  736. // }
  737. // else if (ret > 0.4 && ret <= 1.1) {
  738. // str = "2格";
  739. // }
  740. // else if (ret > 0.4 && ret <= 2.1) {
  741. // str = "2格";
  742. // }
  743.  
  744.  
  745.  
  746. // this.t1 * 0.4 * 1
  747. // + this.t2 * 0.55 * 2
  748. // + this.t3 * 0.7 * 3
  749. // + this.t4 * 0.85 * 4
  750. // + this.t5 * 1 * 5
  751. // + this.t6 * 1.15 * 6
  752. // + this.t7 * 1.3 * 7
  753. // + this.t8 * 1.45 * 8
  754. // + this.t9 * 1.6 * 9
  755. // + this.t10 * 1.75 * 10;
  756. //};
  757. this.getDayByAvg = function (avg) {
  758. let ret = (100 - this.getSum()) / avg;
  759. ret = parseFloat(ret).toFixed(1);
  760. return ret;
  761. };
  762. this.getDay = function () {
  763. if (this.coach) {
  764. return this.getDayByAvg(this.coach);
  765. } else if (this.pos) {
  766. return this.getDayByAvg(this.pos);
  767. }
  768. return undefined;
  769. };
  770. }
  771. ,
  772. trainingDay: function () {
  773. this.t1 = 0;
  774. this.t2 = 0;
  775. this.t3 = 0;
  776. this.t4 = 0;
  777. this.t5 = 0;
  778. this.t6 = 0;
  779. this.t7 = 0;
  780. this.t8 = 0;
  781. this.t9 = 0;
  782. this.t10 = 0;
  783. this.getSum = function () {
  784. let ret = this.t1 * 0.645 * 1 + this.t2 * 0.55 * 2 + this.t3 * 0.7 * 3 + this.t4 * 0.85 * 4 + this.t5 * 0.96 * 5 + this.t6 * 1.111 * 6 + this.t7 * 1.3 * 7 + this.t8 * 1.6 * 8 + this.t9 * 2.02 * 9 + this.t10 * 2.4 * 10;
  785. ret = parseFloat(ret).toFixed(1);
  786. return ret;
  787. };
  788. this.getAvg = function () {
  789. let ret = this.getSum() / (this.t1 * 1 + this.t2 * 1 + this.t3 * 1 + this.t4 * 1 + this.t5 * 1 + this.t6 * 1 + this.t7 * 1 + this.t8 * 1 + this.t9 * 1 + this.t10 * 1);
  790. ret = parseFloat(ret).toFixed(1);
  791. return ret;
  792. };
  793. this.getTnText = function (now_language) {
  794. let str = "";
  795. if (this.t1 > 0) {
  796. str += " 1" + now_language.training_unit + "(" + this.t1 + ")";
  797. }
  798. if (this.t2 > 0) {
  799. str += " 2" + now_language.training_unit + "(" + this.t2 + ")";
  800. }
  801. if (this.t3 > 0) {
  802. str += " 3" + now_language.training_unit + "(" + this.t3 + ")";
  803. }
  804. if (this.t4 > 0) {
  805. str += " 4" + now_language.training_unit + "(" + this.t4 + ")";
  806. }
  807. if (this.t5 > 0) {
  808. str += " 5" + now_language.training_unit + "(" + this.t5 + ")";
  809. }
  810. if (this.t6 > 0) {
  811. str += " 6" + now_language.training_unit + "(" + this.t6 + ")";
  812. }
  813. if (this.t7 > 0) {
  814. str += " 7" + now_language.training_unit + "(" + this.t7 + ")";
  815. }
  816. if (this.t8 > 0) {
  817. str += " 8" + now_language.training_unit + "(" + this.t8 + ")";
  818. }
  819. if (this.t9 > 0) {
  820. str += " 9" + now_language.training_unit + "(" + this.t9 + ")";
  821. }
  822. if (this.t10 > 0) {
  823. str += " 10" + now_language.training_unit + "(" + this.t10 + ")";
  824. }
  825. return str;
  826. };
  827. }
  828. ,
  829. mzreg: {
  830. img_val: /(\d+)\.gif/,
  831. playerMax: /trainingField.players\s*=\s*({.+})/,
  832. playerId: /player_id_(\d+)/,
  833. bar_itc: /bar_itc_(\d+)/,
  834. bar_ycc: /bar_ycc_(\d+)/,
  835. bar_pos: /bar_pos_(\d+)/,
  836. bar_neg: /bar_neg_(\d+)/,
  837. trainingType: /&t=([^)]+)/,
  838. data2d_url: /matchviewer\/media/,
  839. shortlist_url: /\/?p=shortlist/,
  840. ruok_url: /\/?p=team&tid=572357/,
  841. playerId_tac: /pid=(\d+)/,
  842. matchResult: /\/?p=match&sub=result&mid=(\d+)/,
  843. nocache: /nocache-\d+/
  844. //data2d_url: /matchviewer\/getMatchFiles.php\?type=data&mid=\d+/
  845. },
  846. mzImg: {
  847. g: "data:image/gif;base64,R0lGODlhDAAKAJEDAP///8zM/wAA/////yH5BAEAAAMALAAAAAAMAAoAAAIk3CIpYZ0BABJtxvjMgojTIVwKpl0dCQbQJX3T+jpLNDXGlDUFADs=",
  848. r: "data:image/gif;base64,R0lGODlhDAAKAJEDAP////8AAMyZmf///yH5BAEAAAMALAAAAAAMAAoAAAIk3BQZYp0CAAptxvjMgojTEVwKpl0dCQrQJX3T+jpLNDXGlDUFADs=",
  849. b: "data:image/gif;base64,R0lGODlhDAAKAJEDAP///5mZmQAAAP///yH5BAEAAAMALAAAAAAMAAoAAAIk3CIpYZ0BABJtxvjMgojTIVwKpl0dCQbQJX3T+jpLNDXGlDUFADs=",
  850. p: "data:image/gif;base64,R0lGODlhDAAKAJEDAP///5lm/5kzzP///yH5BAEAAAMALAAAAAAMAAoAAAIk3CIpYZ0BABJtxvjMgojTIVwKpl0dCQbQJX3T+jpLNDXGlDUFADs=",
  851. x: "data:image/gif;base64,R0lGODlhBgAKAJEDAJnMZpmZmQAAAP///yH5BAEAAAMALAAAAAAGAAoAAAIRXCRhApAMgoPtVXXS2Lz73xUAOw=="
  852. }
  853. ,
  854. //以下为2D比赛辅助
  855. MatchEvent: function () {
  856. this.data = new Array();
  857. this.setAllPlayerEvent = function (team, tc) {
  858. for (let i = 0; i < tc.length; i++) {
  859. this.data.push(tc[i]);
  860. }
  861.  
  862. for (let i = 0; i < team.m_players.length; i++) {
  863. let len = team.m_players[i].m_events.getLength();
  864. for (let j = 0; j < len; j++) {
  865. this.data.push(team.m_players[i].m_events.at(j));
  866. }
  867. }
  868. };
  869. this.Sort = function () {
  870. this.data.sort(function (a, b) {
  871. return a.m_frame - b.m_frame;
  872. });
  873. };
  874. }
  875. ,
  876. OutOfPlay: function () {
  877. this.data = new Array();
  878. this.add = function (begin, end) {
  879. this.data.push({
  880. begin: begin,
  881. end: end
  882. });
  883. };
  884. this.resetIndex = function () {
  885. this.index = 0;
  886. };
  887. this.notin = function (frame) {
  888. while (this.index < this.data.length) {
  889. let item = this.data[this.index];
  890. if (frame < item.begin) {
  891. return true;
  892. } else if (frame <= item.end) {
  893. return false;
  894. }
  895. if (frame > item.end) {
  896. this.index++;
  897. }
  898. }
  899. return true;
  900. };
  901. this.Sort = function () {
  902. this.data.sort(function (a, b) {
  903. return a.begin - b.begin;
  904. });
  905. }
  906. }
  907.  
  908. };
  909.  
  910. var vanGmMz = {
  911.  
  912. now_language: vanGmMzModel.language.en
  913. ,
  914. pmax: {},
  915. trainingInfo: {},
  916.  
  917. getMax: function (callback) {
  918. vple.ajax(
  919. "/?p=training",
  920. function (data) {
  921. let result = data.match(vanGmMzModel.mzreg.playerMax);
  922. if (result) {
  923. vanGmMz.pmax = JSON.parse(result[1]);
  924. callback(vanGmMz.pmax);
  925. } else {
  926. return true;
  927. }
  928.  
  929. });
  930. return false;
  931. }
  932. ,
  933. setSrc: function (transfer, img, skill, maxed, skillBallDay, pid, k) {
  934. img.skill = skill;
  935. img.maxed = maxed;
  936. if (skill > 0) {
  937. let flag_exit = false;
  938. if (transfer && skillBallDay) {
  939. if (new Date().getTime() - skillBallDay < 345600000) {
  940.  
  941. vanGmMz.getTrainingGraphsBySkill_id(pid, k, function (data) {
  942. let result = data.match(new RegExp('{"x":' + skillBallDay + ',"y":(\\d+),[^}]*"marker"'));
  943. if (result && result.length) {
  944. $(img).parent().parent().find("td.skillval").html("(" + result[1] + ")");
  945. vanGmMz.setSrc(false, img, parseInt(result[1]), maxed, false, pid, k);
  946. flag_exit = true;
  947. return true;
  948. } else {
  949. return false;
  950. }
  951. });
  952. //$(img).parent().find("span").remove();
  953. //$(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>");
  954. }
  955. }
  956. if (flag_exit) {
  957. return;
  958. }
  959. if (pid && vanGmMz.trainingInfo[pid][k]) {
  960. let extmp = $(img).parent().parent().find(".skill_exact2");
  961. if (extmp.length > 0) {
  962. extmp.remove();
  963. }
  964. let sum = 0;
  965. if (vanGmMz.trainingInfo[pid][k].neg && vanGmMz.trainingInfo[pid][k].neg[skill + 1]) {
  966. sum = vanGmMz.trainingInfo[pid][k].neg[skill + 1].stat.getSum();
  967. } else if (vanGmMz.trainingInfo[pid][k][skill]) {
  968. sum = vanGmMz.trainingInfo[pid][k][skill].stat.getSum();
  969. }
  970. $(img).parent().parent().append("<td class='skill_exact2'><div><span id=" + pid + "_" + k + "_" + skill + " class='skillval skill_exact_van'>" + sum + "%</span></div></td>");
  971. }
  972.  
  973. if (img.isYtc) {
  974. $(img).parent().parent().children().eq(0).addClass("gm_ytc");
  975. }
  976. }
  977. let strdiv = "<div class='skill' style='font-size:0;padding: 0 0 0 4px;'>";
  978. for (let i = 0; i < skill; i++) {
  979. if (maxed === "red") {
  980. strdiv += "<img src='" + vanGmMzModel.mzImg.r + "'>";
  981. }
  982. else if (maxed === "green") {
  983. strdiv += "<img src='" + vanGmMzModel.mzImg.g + "'>";
  984. } else {
  985. strdiv += "<img src='" + vanGmMzModel.mzImg.b + "'>";
  986. }
  987. }
  988. if (/blevel_/.test(img.src)) {
  989. strdiv += "<img src='" + vanGmMzModel.mzImg.x + "'>";
  990. }
  991. strdiv += "</div>";
  992. $(img).hide();
  993.  
  994. $(img).parent().find("div").remove();
  995. $(img).after(strdiv);
  996. }
  997. ,
  998. showMax: function (GraphsType) {
  999. let players = $(".playerContainer");
  1000. for (let i = 0; i < players.length; i++) {
  1001. let pdom = players.eq(i);
  1002. let pid = pdom.html().match(vanGmMzModel.mzreg.playerId)[1];
  1003. let player = vanGmMz.pmax[pid];
  1004. let imgs = pdom.find("img.skill");
  1005.  
  1006. if (GraphsType == 0 && player) {
  1007. if (isNaN(parseInt(player.skills.speed))) {
  1008. for (let j = 0; j < imgs.length; j++) {
  1009. vanGmMz.setSrc(false, imgs[j], parseInt(imgs[j].src.match(vanGmMzModel.mzreg.img_val)[1]), "");
  1010. }
  1011. } else {
  1012. vanGmMz.setSrc(false, imgs[0], player.skills.speed, player.maxed.speed);
  1013. vanGmMz.setSrc(false, imgs[1], player.skills.stamina, player.maxed.stamina);
  1014. vanGmMz.setSrc(false, imgs[2], player.skills.gameintelligence, player.maxed.gameintelligence);
  1015. vanGmMz.setSrc(false, imgs[3], player.skills.passing, player.maxed.passing);
  1016. vanGmMz.setSrc(false, imgs[4], player.skills.shooting, player.maxed.shooting);
  1017. vanGmMz.setSrc(false, imgs[5], player.skills.heading, player.maxed.heading);
  1018. vanGmMz.setSrc(false, imgs[6], player.skills.goalkeeping, player.maxed.goalkeeping);
  1019. vanGmMz.setSrc(false, imgs[7], player.skills.technique, player.maxed.technique);
  1020. vanGmMz.setSrc(false, imgs[8], player.skills.tackling, player.maxed.tackling);
  1021. vanGmMz.setSrc(false, imgs[9], player.skills.highpassing, player.maxed.highpassing);
  1022. vanGmMz.setSrc(false, imgs[10], player.skills.situations, player.maxed.situations);
  1023. }
  1024. if (pdom.find(".scout_report").length > 0) {
  1025. vanGmMz.getScoutReport(pid, pdom);
  1026. }
  1027. } else if (pdom.find(".training_graphs").length > 0 && imgs.length > 0) {
  1028. if (pdom.find(".scout_report").length > 0) {
  1029. vanGmMz.getScoutReport(pid, pdom);
  1030. }
  1031. vanGmMz.getTrainingGraphs(pid, pdom, GraphsType);
  1032. } else if (pdom.find(".scout_report").length > 0) {
  1033. for (let j = 0; j < imgs.length; j++) {
  1034. vanGmMz.setSrc(false, imgs[j], parseInt(imgs[j].src.match(vanGmMzModel.mzreg.img_val)[1]), "");
  1035. }
  1036. vanGmMz.getScoutReport(pid, pdom, GraphsType == 2);
  1037. }
  1038. }
  1039. return false;
  1040. }
  1041. ,
  1042. drawPlayerByTrainingGraphs: function (pid, data, pdom) {
  1043. let imgs = pdom.find("img.skill");
  1044. var series = undefined;
  1045. eval(data);
  1046. if (series == undefined) {
  1047. return false;
  1048. }
  1049. let maxeds = ["green", "green", "green", "green", "green", "green", "green", "green", "green", "green", "green"];
  1050. let skillBallDays = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  1051. let allSkillTraining_tmp = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  1052. let camp = new vanGmMzModel.mzcamp();
  1053.  
  1054. let NowSeasonInfo = vanGmMz.D_GetNowSeasonInfo(xPlotLines);
  1055.  
  1056. for (let i = 0; i < series.length; i++) {
  1057. if ((series[i].type == "line" && series[i].color == "rgba(255,0,0,0.7)")) {
  1058. if (series[i].data.length > 0) {
  1059. let g = series[i].data[0];
  1060. let index = g.y - 1;
  1061. if (index >= 0 && g.y <= 11) {
  1062. maxeds[index] = "red";
  1063. }
  1064. }
  1065. } else if ((series[i].type == "line" && series[i].color == "rgba(255,88,0,0.6)")) {
  1066. //训练营线
  1067. if (series[i].data && series[i].data.length == 2) {
  1068. camp.add(series[i].data[0].x, series[i].data[1].x);
  1069. }
  1070. }
  1071. else {
  1072. for (let j = 0; j < series[i].data.length; j++) {
  1073. let g = series[i].data[j];
  1074.  
  1075. if (g.y == "-3") {
  1076. let itemcamp = camp.getItem(g.x);
  1077. if (itemcamp) {
  1078. itemcamp.name = g.name;
  1079. }
  1080. }
  1081.  
  1082. let index = g.y - 1;
  1083. if (index >= 0 && g.y <= 11) {
  1084. if (g.name == "Maxed") {
  1085. maxeds[index] = "red";
  1086. }
  1087. if (g.marker && g.marker.symbol) {
  1088. if (allSkillTraining_tmp[index] == 0) {
  1089. allSkillTraining_tmp[index] = new Array();
  1090. allSkillTraining_tmp[index].push(new vanGmMzModel.playerTrainingBySkill());
  1091. }
  1092. if (/training_camp/.test(g.marker.symbol)) {
  1093. //训练营 判断是否是ytc
  1094. if (camp.inYTC(g.x)) {
  1095. imgs[index].isYtc = true;
  1096. }
  1097.  
  1098. }
  1099.  
  1100. let playerTS;
  1101. //掉球单独列
  1102. if (/bar_neg/.test(g.marker.symbol)) {
  1103. if (allSkillTraining_tmp[index].neg == undefined) {
  1104. allSkillTraining_tmp[index].neg = new Array();
  1105. }
  1106. if (/_ball/.test(g.marker.symbol)) {
  1107. if (skillBallDays[index] < g.x) {
  1108. skillBallDays[index] = g.x;
  1109. playerTS = new vanGmMzModel.playerTrainingBySkill();
  1110. playerTS.ballDay = g.x;
  1111. allSkillTraining_tmp[index].neg.push(playerTS);
  1112. }
  1113. } else if (allSkillTraining_tmp[index].neg.length == 0) {
  1114. playerTS = new vanGmMzModel.playerTrainingBySkill();
  1115. allSkillTraining_tmp[index].neg.push(playerTS);
  1116. } else {
  1117. playerTS = allSkillTraining_tmp[index].neg[allSkillTraining_tmp[index].neg.length - 1];
  1118. }
  1119. } else {
  1120. playerTS = allSkillTraining_tmp[index][allSkillTraining_tmp[index].length - 1];
  1121. if (/_ball/.test(g.marker.symbol)) {
  1122. if (skillBallDays[index] < g.x) {
  1123. skillBallDays[index] = g.x;
  1124. playerTS.ballDay = g.x;
  1125. let next_playerTS = new vanGmMzModel.playerTrainingBySkill();
  1126. next_playerTS.last = playerTS;
  1127. allSkillTraining_tmp[index].push(next_playerTS);
  1128. }
  1129. }
  1130. }
  1131. let result = g.marker.symbol.match(vanGmMzModel.mzreg.trainingType);
  1132. let type = "";
  1133. if (result && result.length > 0) {
  1134. switch (result[1]) {
  1135. case "physio":
  1136. //理疗
  1137. type = "physio";
  1138. break;
  1139. case "coach":
  1140. //有教练
  1141. type = "coach";
  1142. break;
  1143. case "training_camp":
  1144. //训练营
  1145. type = "camp";
  1146. break;
  1147. case "training_camp_ycc":
  1148. //调整营
  1149. type = "ycc";
  1150. break;
  1151. case "training_camp_itc":
  1152. //强化营
  1153. type = "itc";
  1154. break;
  1155. default:
  1156. //未知
  1157. console.log(vanGmMz.now_language.training_unknown + ":" + result[1]);
  1158. break;
  1159. }
  1160. }
  1161. vanGmMz.D_FillTraining(type, playerTS, g, NowSeasonInfo);
  1162. }
  1163. }
  1164. }
  1165. }
  1166. }
  1167. let allSkillTraining = new Array();
  1168. for (let t1 = 0; t1 < allSkillTraining_tmp.length; t1++) {
  1169. if (imgs[t1].nowSkill == undefined) {
  1170. imgs[t1].nowSkill = parseInt(imgs[t1].src.match(vanGmMzModel.mzreg.img_val)[1]);
  1171. }
  1172. let tmp = {};
  1173. let negCount = 0;
  1174. if (allSkillTraining_tmp[t1].neg) {
  1175. negCount = allSkillTraining_tmp[t1].neg.length;
  1176. tmp.neg = {};
  1177. for (let t3 = 0; t3 < allSkillTraining_tmp[t1].neg.length; t3++) {
  1178. let tmp3 = allSkillTraining_tmp[t1].neg[t3];
  1179. if (tmp3.stat.getSum() != 0) {
  1180. tmp3.skill = imgs[t1].nowSkill + negCount - t3;
  1181. tmp.neg[tmp3.skill] = tmp3;
  1182. }
  1183. }
  1184. }
  1185. for (let t2 = 0; t2 < allSkillTraining_tmp[t1].length; t2++) {
  1186. let tmp2 = allSkillTraining_tmp[t1][t2];
  1187. if (tmp2.stat.getSum() != 0) {
  1188. tmp2.skill = imgs[t1].nowSkill + negCount + 1 - allSkillTraining_tmp[t1].length + t2;
  1189. tmp[tmp2.skill] = tmp2;
  1190. }
  1191.  
  1192. //test
  1193. vanGmMz.vanlog(pid, tmp2, t1, t2);
  1194. }
  1195. allSkillTraining[t1] = tmp;
  1196.  
  1197. }
  1198. vanGmMz.trainingInfo[pid] = allSkillTraining;
  1199. for (let k = 0; k < maxeds.length; k++) {
  1200. vanGmMz.setSrc($(".player_share_skills").length == 0, imgs[k], imgs[k].nowSkill, maxeds[k], skillBallDays[k], pid, k);
  1201. }
  1202. vanGmMz.D_NowSeasonText(pid, NowSeasonInfo, pdom);
  1203.  
  1204. series = undefined;
  1205. plotBands = undefined;
  1206. xPlotLines = undefined;
  1207. return true;
  1208. }
  1209. ,
  1210. vanlog: function (pid, pt, t1, t2) {
  1211. },
  1212. fillTrainingLevel: function (type, reg, playerTS, url, isneg) {
  1213. let result = url.match(reg);
  1214. if (result && result.length > 0) {
  1215. let stat = playerTS.stat;
  1216. playerTS.lt = parseInt(result[1]);
  1217. if (isneg) {
  1218. stat.add(type, "t" + result[1]);
  1219. } else {
  1220. stat.add("all", "t" + result[1]);
  1221. stat.add(type, "t" + result[1]);
  1222. }
  1223. }
  1224. }
  1225. ,
  1226.  
  1227. getScoutReport: function (pid, pdom, showMB) {
  1228. let url = "/ajax.php?p=players&sub=scout_report&pid=" + pid + "&sport=soccer";
  1229. let cache_mode = 1;
  1230. if (pdom.find("#discard_youth_button").length) {
  1231. url = "/ajax.php?p=players&sub=scout_report&pid=null&sport=soccer";
  1232. cache_mode = 0;
  1233. }
  1234. vple.ajax(
  1235. url,
  1236. function (data) {
  1237.  
  1238. if (pdom.find("a[href$='" + pid + "']").length == 0 && pdom.find("#player_id_" + pid).length == 0) {
  1239. return;
  1240. }
  1241. let srdom = $($.parseHTML(data));
  1242. let remark = srdom.find("span.blurred span").text();
  1243. let srdivs = srdom.find("dd div.flex-grow-1");
  1244. if (srdivs.length == 3) {
  1245. let HS = srdivs.eq(0).find(".lit").length;
  1246. let LS = srdivs.eq(1).find(".lit").length;
  1247. let SS = srdivs.eq(2).find(".lit").length;
  1248. //Trzxyvopaxis
  1249. let Hspan = srdivs.eq(0).find(".blurred span");
  1250. let HArr = new Array();
  1251. for (let i = 0; i < Hspan.length; i++) {
  1252. if (Hspan.eq(i).text() != "Trzxyvopaxis") {
  1253. HArr.push(Hspan.eq(i).text());
  1254. }
  1255. }
  1256. let Lspan = srdivs.eq(1).find(".blurred span");
  1257. let LArr = new Array();
  1258. for (let i = 0; i < Lspan.length; i++) {
  1259. if (Lspan.eq(i).text() != "Trzxyvopaxis") {
  1260. LArr.push(Lspan.eq(i).text());
  1261. }
  1262. }
  1263.  
  1264. let HPids = [], LPids = [];
  1265.  
  1266. let skillnames = pdom.find("td > span.clippable");
  1267. for (let i = 0; i < skillnames.length; i++) {
  1268. if (HArr.indexOf(skillnames.eq(i).text()) >= 0) {
  1269. skillnames.eq(i).parent().addClass("gm_scout_h");
  1270. skillnames.eq(i).parent().addClass("gm_s" + HS);
  1271. HPids.push(i + 1);
  1272. } else if (LArr.indexOf(skillnames.eq(i).text()) >= 0) {
  1273. skillnames.eq(i).parent().removeClass("gm_scout_h");
  1274. skillnames.eq(i).parent().addClass("gm_s" + LS);
  1275. LPids.push(i + 1);
  1276. }
  1277. //else {
  1278. // skillnames.eq(i).parent().removeClass("gm_scout_h");
  1279. // skillnames.eq(i).parent().removeClass("gm_s*");
  1280. //}
  1281. }
  1282.  
  1283. $("#GM_scout_" + pid).remove();
  1284. let nsavgstat = "<span id='GM_scout_" + pid + "'>[H" + HS + " " + HArr[0] + "," + HArr[1] + "] [L" + LS + " " + LArr[0] + "," + LArr[1] + "] S" + SS;
  1285. nsavgstat += "</span>";
  1286. nsavgstat = $(nsavgstat)[0];
  1287. nsavgstat.addEventListener('click', function () {
  1288. let strSus = remark;
  1289. if (vanGmMz.IsLoser(HS, LS, LPids[0], LPids[1])) {
  1290. strSus += "<br/><br/>" + vanGmMz.now_language.sug_Loser;
  1291. }
  1292. let plans = vanGmMz.getTrainPlans(HPids[0], HPids[1], LPids[0], LPids[1]);
  1293. for (let j = 0; j < plans.length; j++) {
  1294.  
  1295. let str = "";
  1296. let pri = vanGmMz.getTrainPRI(plans[j].loc, HS, HPids[0], HPids[1], LS, LPids[0], LPids[1]);
  1297. for (let i = 0; i < pri.Order.length; i++) {
  1298. if (str != "") {
  1299. str += ">";
  1300. }
  1301. str += vanGmMz.now_language["attrName" + pri.Order[i]];
  1302. }
  1303. strSus += "<br/><br/>" + vanGmMz.now_language["sug_T" + plans[j].type] + vanGmMz.now_language["Pos" + pri.Sloc.CampKey] + "<br/><br/>" + vanGmMz.now_language.sug_PRI + str;
  1304.  
  1305. }
  1306. vanGmMz.D_ShowScoutText(strSus, pid, pdom, HS, HPids, LS, LPids);
  1307. return false;
  1308. });
  1309. pdom.find("a.subheader").after(nsavgstat);
  1310. if (showMB) {
  1311. vanGmMz.D_ShowMaybeSkill(pdom, HS, HPids[0], HPids[1], LS, LPids[0], LPids[1]);
  1312. }
  1313. } else {
  1314. return true;
  1315. }
  1316.  
  1317. }, cache_mode);
  1318. }
  1319. ,
  1320. checkScoutLoc: function (lst, key, LP1, LP2, slocs) {
  1321. if (lst[key] != undefined) {
  1322. let sloc = lst[key];
  1323. if (vanGmMz.getProp(LP1, sloc) == 0 || vanGmMz.getProp(LP2, sloc) == 0) {
  1324.  
  1325. slocs.push({ type: 1, loc: sloc });
  1326. }
  1327. else {
  1328. slocs.push({ type: 0, loc: sloc });
  1329. }
  1330. slocs.keys[key] = true;
  1331. }
  1332. }
  1333. ,
  1334. getProp: function (id, loc) {
  1335. if (loc.Prop[id] != undefined) {
  1336. return loc.Prop[id];
  1337. }
  1338. return 3;
  1339. }
  1340. ,
  1341. getTrainPlans: function (HP1, HP2, LP1, LP2) {
  1342. //0 首选 1 次选(弱项有主项) 2 一般(强项不适合 从非弱项中找) 3 强行默认 一般练后卫
  1343. let slocs = [];
  1344. slocs.keys = {};
  1345.  
  1346. //按高星挑选合适训练计划
  1347. vanGmMz.checkScoutLoc(vanGmMzModel.scoutLocList, HP1 + "," + HP2, LP1, LP2, slocs);
  1348. vanGmMz.checkScoutLoc(vanGmMzModel.scoutLocList, HP2 + "," + HP1, LP1, LP2, slocs);
  1349. vanGmMz.checkScoutLoc(vanGmMzModel.scoutLocList, HP1, LP1, LP2, slocs);
  1350. vanGmMz.checkScoutLoc(vanGmMzModel.scoutLocList, HP2, LP1, LP2, slocs);
  1351.  
  1352.  
  1353. for (let i = 0; i < vanGmMzModel.OKeys.length; i++) {
  1354. let key = vanGmMzModel.OKeys[i];
  1355. if (!slocs.keys[key]) {
  1356. let loc = vanGmMzModel.scoutLocList[key];
  1357. if (vanGmMz.getProp(LP1, loc) != 1 && vanGmMz.getProp(LP2, loc) != 1) {
  1358. slocs.push({ type: 2, loc: loc });
  1359. slocs.keys[key] = true;
  1360. }
  1361. }
  1362. }
  1363. if (slocs.length == 0) {
  1364. slocs.push({ type: 3, loc: vanGmMzModel.scoutLocList[vanGmMzModel.OKeys[0]] });
  1365. }
  1366. return slocs;
  1367. }
  1368. ,
  1369. IsLoser: function (HStar, LStar, LP1, LP2) {
  1370. if (HStar <= 2) {
  1371. return true;
  1372. }
  1373. //弱1带速耐
  1374. if (LStar == 1 && HStar < 4) {
  1375. if (LP1 == 1 || LP2 == 1 || LP1 == 2 || LP2 == 2) {
  1376. return true;
  1377. }
  1378. }
  1379. return false;
  1380. }
  1381. ,
  1382. getTrainPRI: function (sloc, HStar, HP1, HP2, LStar, LP1, LP2) {
  1383.  
  1384. //获取训练顺序
  1385. let lstBase = [];
  1386. let lstMain = [];
  1387. let lstSub = [];
  1388. for (let i = 0; i < sloc.Order.length; i++) {
  1389. let ID = sloc.Order[i];
  1390. let t = vanGmMz.getProp(ID, sloc);
  1391. if (t == 0 || t == 1) {
  1392. //强3+星 基础和主项训练完再训练
  1393. if (HStar >= 3) {
  1394. if (HP1 == ID || HP2 == ID) {
  1395. lstSub.push(ID);
  1396. }
  1397. }
  1398. //弱2星带基础和主项 最优先训练
  1399. if (LStar <= 2) {
  1400. if (LP1 == ID || LP2 == ID) {
  1401. if (t == 0) {
  1402. lstBase.unshift(ID);
  1403. }
  1404. else {
  1405. lstMain.push(ID);
  1406. }
  1407. }
  1408. }
  1409. //高低星都没有基础和主项 最优先训练
  1410. if (HP1 != ID && HP2 != ID && LP1 != ID && LP2 != ID) {
  1411. //意降低优先级
  1412. if (ID == 3) {
  1413. lstSub.push(ID);
  1414. }
  1415. else if (t == 0) {
  1416. lstBase.push(ID);
  1417. }
  1418. else {
  1419. lstMain.push(ID);
  1420. }
  1421. }
  1422. }
  1423. else if (t == 2) {
  1424. lstSub.push(ID);
  1425. }
  1426. }
  1427.  
  1428. let pri = 29;
  1429. let ditPRI = {};
  1430. let lstOrder = lstBase.concat(lstMain).concat(lstSub);
  1431.  
  1432. while (lstBase.length > 0) {
  1433. ditPRI[lstBase.shift()] = pri;
  1434. pri -= 1;
  1435. }
  1436. pri = 19;
  1437. while (lstMain.length > 0) {
  1438. ditPRI[lstMain.shift()] = pri;
  1439. pri -= 1;
  1440. }
  1441. pri = 9;
  1442. while (lstSub.length > 0) {
  1443. ditPRI[lstSub.shift()] = pri;
  1444. pri -= 1;
  1445. }
  1446.  
  1447. let ret = {
  1448. "Sloc": sloc, "TrainPRI": ditPRI, "Order": lstOrder
  1449. };
  1450. return ret;
  1451. }
  1452. ,
  1453. getTrainingGraphs: function (pid, pdom, GraphsType) {
  1454. vple.ajax(
  1455. "/ajax.php?p=trainingGraph&sub=getJsonTrainingHistory&sport=soccer&player_id=" + pid,
  1456. function (data) {
  1457. if (data == "") {
  1458. return true;
  1459. }
  1460. let ret = vanGmMz.drawPlayerByTrainingGraphs(pid, data, pdom);
  1461.  
  1462. if (GraphsType == 2 && pdom.find(".scout_report").length > 0) {
  1463. vanGmMz.getScoutReport(pid, pdom, true);
  1464. }
  1465. return !ret;
  1466. });
  1467. },
  1468.  
  1469. getTrainingGraphsBySkill_id: function (pid, skill_id, callback) {
  1470. vple.ajax(
  1471. "/ajax.php?p=trainingGraph&sub=getJsonTrainingHistory&sport=soccer&player_id=" + pid + "&skill_id=" + (skill_id + 2),
  1472. function (data) {
  1473. return !callback(data);
  1474. });
  1475. },
  1476. showPop: function (parent) {
  1477. $("body").append("<div id=\"informationBubble\" class=\"shadow\"></div>");
  1478. let bubble = $("#informationBubble");
  1479. bubble.css("width", "200px");
  1480. let tmpArr = parent.attr('id').split("_");
  1481.  
  1482. let playTS = vanGmMz.trainingInfo[tmpArr[0]][tmpArr[1]];
  1483. let str = "";
  1484. let sum = 0;
  1485. if (playTS[tmpArr[2]]) {
  1486. let training;
  1487. if (playTS.neg) {
  1488. training = playTS.neg[parseInt(tmpArr[2]) + 1].stat;
  1489. } else {
  1490. training = playTS[tmpArr[2]].stat;
  1491. }
  1492. str = vanGmMz.now_language.training_avg + " " + training.getAvg() + "%" + training.getTnText(vanGmMz.now_language) + "<br/><br/>" + vanGmMz.now_language.training_ball_day + ":<br/>";
  1493. if (training.camp) {
  1494. str += training.getDayByAvg(training.camp.getAvg()) + "(" + vanGmMz.now_language.training_camp + ") ";
  1495. }
  1496. if (training.coach) {
  1497. str += training.getDayByAvg(training.coach.getAvg()) + "(" + vanGmMz.now_language.training_coach + ") ";
  1498. }
  1499. if (training.pos) {
  1500. str += training.getDayByAvg(training.pos.getAvg()) + "(" + vanGmMz.now_language.training_pos + ")";
  1501. }
  1502. str += "<br/><br/>";
  1503.  
  1504. sum = training.getSum();
  1505. }
  1506. let flag = false;
  1507. str += vanGmMz.now_language.training_part + ":";
  1508. for (let i = 0; i < 10; i++) {
  1509. if (playTS[i]) {
  1510. flag = true;
  1511. str += "<br/>" + i + "-" + (i + 1) + " " + vanGmMz.now_language.training_total + ":"
  1512. + playTS[i].stat.getSum(true) + "%"
  1513. + " " + vanGmMz.now_language.training_avg + ":" + playTS[i].stat.getAvg() + "%<br/>" + playTS[i].stat.getTnText(vanGmMz.now_language);
  1514. }
  1515. }
  1516. if (playTS.neg) {
  1517. for (let i = 10; i > 0; i--) {
  1518. if (playTS.neg[i]) {
  1519. flag = true;
  1520. str += "<br/>" + i + "-" + (i - 1) + " " + vanGmMz.now_language.training_total + ":"
  1521. + playTS.neg[i].stat.getSum(true) + "%"
  1522. + " " + vanGmMz.now_language.training_avg + ":" + playTS.neg[i].stat.getAvg() + "%<br/>" + playTS.neg[i].stat.getTnText(vanGmMz.now_language);
  1523. }
  1524. }
  1525. }
  1526.  
  1527. let content = "<div class='clearfix'><h3 style='margin: 0; padding: 0'>" + vanGmMz.now_language.training_now + ":"
  1528. + sum
  1529. + "%</h3><div class='skill_exact big'><div class='skill_exact_wrapper clearfix'><div class='skill_exact_bar' style='width: "
  1530. + sum * 2
  1531. + "px;'></div></div></div><p>"
  1532. + (flag ? str : "")
  1533. + "</p></div>";
  1534. bubble.html(content);
  1535. mz.stickToParent(bubble, parent);
  1536. bubble.slideDown("fast");
  1537.  
  1538. $(parent).bind("mouseleave", function () {
  1539. bubble.remove();
  1540. });
  1541. }
  1542. ,
  1543. setLanguage: function (language) {
  1544. if (language) {
  1545. let new_language = vanGmMzModel.language[language];
  1546. if (new_language == undefined) {
  1547. new_language = vanGmMzModel.language.en;
  1548. }
  1549. if (vanGmMz.now_language != new_language) {
  1550. GM_setValue("mylanguage", language);
  1551. }
  1552. vanGmMz.now_language = new_language;
  1553. } else {
  1554. if (vanGmMz.now_language == vanGmMzModel.language.en) {
  1555. vanGmMz.now_language = vanGmMzModel.language.cn;
  1556. GM_setValue("mylanguage", "cn");
  1557. } else {
  1558. vanGmMz.now_language = vanGmMzModel.language.en;
  1559. GM_setValue("mylanguage", "en");
  1560. }
  1561. }
  1562. },
  1563. initgw: function () {
  1564. let tmplanguage = GM_getValue("mylanguage", false);
  1565. if (tmplanguage == "cn") {
  1566. tmplanguage = "zh";
  1567. this.setLanguage(tmplanguage);
  1568. }
  1569. if (vanGmMzModel.language[tmplanguage] == undefined) {
  1570. let lang = $("meta[name='language']");
  1571. if (lang.length > 0) {
  1572. this.setLanguage($("meta[name='language']")[0].content);
  1573. }
  1574.  
  1575. } else {
  1576. this.now_language = vanGmMzModel.language[tmplanguage];
  1577. }
  1578.  
  1579. let css = document.createElement('style');
  1580. css.type = 'text/css';
  1581. 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{font-style:italic;text-decoration:underline;}.gm_scout_h{font-weight: bold;}.gm_s1{color:red;}.gm_s2{color:darkgoldenrod;}.gm_s3{color:blue;}.gm_s4{color:fuchsia;}";
  1582.  
  1583.  
  1584. document.getElementsByTagName('head')[0].appendChild(css);
  1585.  
  1586. $(document.body).append("<div class='gw_run_div'>"
  1587. + "<div id='gw_run' class='gw_run shupai' title='" + this.now_language.ManualColorTitle + "'><b>" + this.now_language.ManualColor + "</b></div>"
  1588. + "<div>---</div>"
  1589. + "<div id='gw_run2' class='gw_run shupai' title='" + this.now_language.SettingTitle + "'><b>" + this.now_language.Setting + "</b></div>"
  1590. + "</div>");
  1591. $('#gw_run')[0].addEventListener('click', function () { vanGmMz.gw_start(1); });
  1592. $('#gw_run2')[0].addEventListener('click', function () {
  1593. vanGmMz.OpenSetting();
  1594. });
  1595.  
  1596. document.onkeydown = function () {
  1597. if (event.altKey) {
  1598. if (window.event.keyCode == 65) {
  1599. //alt + A
  1600. vanGmMz.gw_start(1);
  1601. }
  1602. else if (window.event.keyCode == 83) {
  1603. //alt + S
  1604. vanGmMz.gw_start(2);
  1605. }
  1606. else if (window.event.keyCode == 68) {
  1607. //alt + D
  1608. vanGmMz.Advanced2D();
  1609. }
  1610. }
  1611. };
  1612. $("body").on("mouseenter", ".skill_exact_van", function () {
  1613. vanGmMz.showPop($(this));
  1614. });
  1615. if (vanGmMzModel.mzreg.ruok_url.test(location.href)) {
  1616. let ad = document.createElement('audio');
  1617. ad.autoplay = true;
  1618. ad.controls = true;
  1619. ad.loop = true;
  1620. ad.preload = "auto";
  1621. ad.src = "http://sgj.budeng.win:852/ruok.mp3";
  1622.  
  1623. ad.oncanplay = function () {
  1624. ad.play();
  1625. };
  1626. document.body.appendChild(ad);
  1627. //$(document.body).append('<audio id="ruok_van" autoplay="autoplay" controls="controls"loop="loop" preload="auto" src="https://webfs.yun.kugou.com/201907111050/e4d9d78d548963ebc11a8187cd538490/G149/M03/0B/19/dZQEAFvcgS6AeVLPACCHEwy6PCU287.mp3"></audio>');
  1628. //$("#ruok_van")[0].play();
  1629. }
  1630. let mth = location.href.match(vanGmMzModel.mzreg.matchResult);
  1631. if (mth && mth.length > 0) {
  1632. var mid = mth[1];
  1633. let amatch = $("a.matchIcon.large.shadow");
  1634. if (amatch.length > 0) {
  1635. amatch.eq(0).before('<a id="gw_match_result" class="matchIcon large shadow" href="javascript:void(0);" rel="nofollow" title="Watch match result"><i>R</i><span>&nbsp;</span></a>');
  1636. $('#gw_match_result')[0].addEventListener('click', function () {
  1637. vanGmMz.ShowMatchResult("2d", mid);
  1638. return false;
  1639. });
  1640. }
  1641. }
  1642. }
  1643. ,
  1644. ShowMatchResult: function (type, matchId) {
  1645. this.GetMatchXML(matchId, function (data) {
  1646. window["gmXml_" + matchId] = data;
  1647. let teams = data.documentElement.getElementsByTagName("Team");
  1648. let homeT = teams[0];
  1649. let awayT = teams[1];
  1650. let homeS = teams[0].getElementsByTagName("Statistics")[0];
  1651. let awayS = teams[1].getElementsByTagName("Statistics")[0];
  1652.  
  1653. let imgs = $("div.scoreboard.shadow img");
  1654. let mth = imgs[0].src.match(vanGmMzModel.mzreg.nocache);
  1655. let nocacheUrl = "nocache-715";
  1656. if (mth && mth.length > 0) {
  1657. nocacheUrl = mth[0];
  1658. }
  1659.  
  1660. let g1 = homeS.getAttribute("goals");
  1661. if (g1 >= 10) {
  1662. imgs[0].src = nocacheUrl + "/img/score/" + parseInt(g1 / 10) + ".gif";
  1663. } else {
  1664. imgs[0].src = nocacheUrl + "/img/score/null.gif";
  1665. }
  1666. imgs[1].src = nocacheUrl + "/img/score/" + g1 % 10 + ".gif";
  1667.  
  1668.  
  1669. let g2 = awayS.getAttribute("goals");
  1670. if (g2 >= 10) {
  1671. imgs[3].src = nocacheUrl + "/img/score/" + parseInt(g2 / 10) + ".gif";
  1672. imgs[4].src = nocacheUrl + "/img/score/" + g2 % 10 + ".gif";
  1673. } else {
  1674. imgs[3].src = nocacheUrl + "/img/score/" + g2 % 10 + ".gif";
  1675. imgs[4].src = nocacheUrl + "/img/score/null.gif";
  1676. }
  1677.  
  1678.  
  1679. let td = $("div#match-tactic-facts-wrapper div div table.hitlist.statsLite tbody tr td");
  1680.  
  1681. td.eq(1).html(g1);
  1682. td.eq(2).html(g2);
  1683.  
  1684. td.eq(4).html(homeS.getAttribute("injuries"));
  1685. td.eq(5).html(awayS.getAttribute("injuries"));
  1686.  
  1687. td.eq(7).html(homeS.getAttribute("yellowCards"));
  1688. td.eq(8).html(awayS.getAttribute("yellowCards"));
  1689.  
  1690. td.eq(10).html(homeS.getAttribute("redCards"));
  1691. td.eq(11).html(awayS.getAttribute("redCards"));
  1692.  
  1693. td.eq(13).html(homeS.getAttribute("freekicks"));
  1694. td.eq(14).html(awayS.getAttribute("freekicks"));
  1695.  
  1696. td.eq(16).html(homeS.getAttribute("penaltyshots"));
  1697. td.eq(17).html(awayS.getAttribute("penaltyshots"));
  1698.  
  1699. td.eq(19).html(homeS.getAttribute("corners"));
  1700. td.eq(20).html(awayS.getAttribute("corners"));
  1701.  
  1702. td.eq(22).html(homeS.getAttribute("shotsOnGoal"));
  1703. td.eq(23).html(awayS.getAttribute("shotsOnGoal"));
  1704.  
  1705. td.eq(25).html(homeS.getAttribute("possession") + "%");
  1706. td.eq(26).html(awayS.getAttribute("possession") + "%");
  1707.  
  1708. $(".gm_timeline").remove();
  1709. let events = data.documentElement.getElementsByTagName("Events");
  1710. if (events.length) {
  1711. let tacs = events[0].getElementsByTagName("Tactic");
  1712. let trclass = false;
  1713. let timeline = $("table.timeline.hitlist.marker");
  1714. if (timeline.length) {
  1715. for (let i = tacs.length - 1; i >= 0; i--) {
  1716. if (tacs[i].getAttribute("teamId") == homeT.getAttribute("id")) {
  1717. timeline.find("tr:first").before("<tr class='gm_timeline " + (trclass ? "even" : "odd") + "'><td align='right' width='50%'><span style='white-space: nowrap'><strong>" + tacs[i].getAttribute("type") + "->" + tacs[i].getAttribute("new_setting") + "</strong></span></td>"
  1718. + "<td align='center' valign='middle' width='40'><strong class='time'>" + tacs[i].getAttribute("time").split(":")[0] + "'</strong></td>"
  1719. + "<td align='left' width='50%'>&nbsp;</td></tr>");
  1720. } else {
  1721. timeline.find("tr:first").before("<tr class='gm_timeline " + (trclass ? "even" : "odd") + "'><td align='right' width='50%'>&nbsp;</td>"
  1722. + "<td align='center' valign='middle' width='40'><strong class='time'>" + tacs[i].getAttribute("time").split(":")[0] + "'</strong></td>"
  1723. + "<td align='left' width='50%'><span style='white-space: nowrap'><strong>" + tacs[i].getAttribute("type") + "->" + tacs[i].getAttribute("new_setting") + "</strong></span></td></tr>");
  1724.  
  1725. }
  1726. trclass = !trclass;
  1727. }
  1728. timeline.find("tr:first").before("<tr class='gm_timeline " + (trclass ? "even" : "odd") + "'><td align='right' width='50%'><span style='white-space: nowrap'><strong>" + homeT.getAttribute("tactic") + "</strong><strong>" + homeT.getAttribute("playstyle") + "</strong><strong>" + homeT.getAttribute("aggression") + "</strong><p><a href='javascript:void(0);' id='gm_copy_r1'>" + vanGmMz.now_language.Copyxml1 + "</a></p></span></td><td align='center' valign='middle' width='40'><strong class='time'>0'</strong></td><td align='left' width='50%'><span style='white-space: nowrap'><strong>" + awayT.getAttribute("tactic") + "</strong><strong>" + awayT.getAttribute("playstyle") + "</strong><strong>" + awayT.getAttribute("aggression") + "</strong><p><a href='javascript:void(0);' id='gm_copy_r2'>" + vanGmMz.now_language.Copyxml2 + "</a></p></span></td></tr>");
  1729. $('#gm_copy_r1')[0].addEventListener('click', function () {
  1730. vanGmMz.CopyXML(matchId, true);
  1731. return false;
  1732. });
  1733. $('#gm_copy_r2')[0].addEventListener('click', function () {
  1734. vanGmMz.CopyXML(matchId, false);
  1735. return false;
  1736. });
  1737. }
  1738. }
  1739. });
  1740. }
  1741. ,
  1742. GetMatchXML: function (matchId, callback) {
  1743. let midurl = "https://www.managerzone.com/matchviewer/getMatchFiles.php?type=stats&mid=" + matchId + "&sport=soccer";
  1744.  
  1745. var _overlay = this;
  1746. vple.getLocValue(midurl, function (flag, tdata) {
  1747. if (flag) {
  1748. let data = $.parseXML(tdata);
  1749. return callback(data);
  1750. } else {
  1751.  
  1752. _overlay.prepareMatch = function () {
  1753. $.getJSON(mz.getAjaxLink("matchViewer&sub=check-match&type=2d&mid=" + matchId), function (data) {
  1754. switch (data.response) {
  1755. case "ok":
  1756. vple.ajax(
  1757. midurl,
  1758. function (tdata) {
  1759. let data = $.parseXML(tdata);
  1760. return callback(data);
  1761. }, 1, false);
  1762. break;
  1763. case "queued":
  1764. _overlay.tryCounter++;
  1765. if (_overlay.tryCounter > 5) {
  1766. return false;
  1767. }
  1768. setTimeout(function () { _overlay.prepareMatch(); }, 3000);
  1769. break;
  1770. case "walkover":
  1771. case "blocked":
  1772. case "error":
  1773. return false;
  1774. }
  1775. });
  1776. };
  1777.  
  1778. _overlay.tryCounter = 1;
  1779. _overlay.prepareMatch();
  1780. }
  1781. }, 1, false);
  1782.  
  1783. }
  1784. ,
  1785. //GraphsType 0 自动模式 1 强制训练图 2 星级球员显示最大值
  1786. gw_start: function (GraphsType) {
  1787. if ($("#players_container").width() < 660) {
  1788. if (vanGmMzModel.mzreg.shortlist_url.test(location.href)) {
  1789. $(".col_2_of_3").width("660");
  1790. }
  1791. $("#players_container").width("660");
  1792. }
  1793. if ($(".player_share_skills").length > 0) {
  1794. if (GraphsType == 0) {
  1795. vanGmMz.getMax(function () {
  1796. vanGmMz.showMax(0);
  1797. });
  1798. } else {
  1799. vanGmMz.showMax(GraphsType);
  1800. }
  1801. } else if ($(".playerContainer").find(".training_graphs").length > 0) {
  1802. vanGmMz.showMax(GraphsType);
  1803. } else if ($(".playerContainer").find(".scout_report").length > 0) {
  1804. vanGmMz.showMax(GraphsType);
  1805. }
  1806. }
  1807. ,
  1808. OpenSetting: function () {
  1809.  
  1810. let lang = GM_getValue("mylanguage", "en");
  1811. let xml_mode = GM_getValue("xml_mode", 0);
  1812. let autoRun = GM_getValue("autoRun1", 1);
  1813. let tmphtml = '<div><b>' + vanGmMz.now_language.Language + ':</b></div><div><select id="gm_language">';
  1814. for (let l in vanGmMzModel.language) {
  1815. tmphtml += '<option value="' + l + '"' + (lang == l ? ' selected="selected" ' : '') + '>' + vanGmMzModel.language[l].Name + '</option>';
  1816. }
  1817. tmphtml += '</select>\
  1818. </div>\
  1819. \
  1820. <div><b>'+ vanGmMz.now_language.AutoRun + ':</b></div>\
  1821. <div><select id="gm_autorun">\
  1822. <option value="0"'+ (autoRun == 0 ? ' selected="selected" ' : '') + '>' + vanGmMz.now_language.AutoRun0 + '</option>\
  1823. <option value="1"'+ (autoRun == 1 ? ' selected="selected" ' : '') + '>' + vanGmMz.now_language.AutoRun1 + '</option>\
  1824. </select>\
  1825. </div>\
  1826. \
  1827. <div><b>'+ vanGmMz.now_language.XmlMode + ':</b></div>\
  1828. <div><select id="gm_xml_mode">\
  1829. <option value="0"'+ (xml_mode == 0 ? ' selected="selected" ' : '') + '>' + vanGmMz.now_language.XmlMode1 + '</option>\
  1830. <option value="1"'+ (xml_mode == 1 ? ' selected="selected" ' : '') + '>' + vanGmMz.now_language.XmlMode2 + '</option>\
  1831. </select>\
  1832. </div>\
  1833. <div><b>'+ vanGmMz.now_language.TacConf + ':</b></div>\
  1834. <div><textarea style="width: 380px;height:200px;" id="txtTacConf" spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off"></textarea>\
  1835. </div>\
  1836. <div>\
  1837. <a href="javascript:void(0);" class="mzbtn buttondiv button_account" id="gm_setting_save">\
  1838. <span class="buttonClassMiddle"><span style="white-space: nowrap">'+ vanGmMz.now_language.Save + '</span></span><span class="buttonClassRight">&nbsp;</span>\
  1839. </a><hr />\
  1840. <a href="javascript:void(0);" class="mzbtn buttondiv button_account" id="gm_setting_players_html">\
  1841. <span class="buttonClassMiddle"><span style="white-space: nowrap">'+ vanGmMz.now_language.GetPlayersHtml + '</span></span><span class="buttonClassRight">&nbsp;</span>\
  1842. </a>\
  1843. <a href="javascript:void(0);" class="mzbtn buttondiv button_account" id="gm_setting_players_html2">\
  1844. <span class="buttonClassMiddle"><span style="white-space: nowrap">'+ vanGmMz.now_language.GetPlayersHtml2 + '</span></span><span class="buttonClassRight">&nbsp;</span>\
  1845. </a><hr />\
  1846. <a href="javascript:void(0);" class="mzbtn buttondiv button_account" id="gm_setting_clear">\
  1847. <span class="buttonClassMiddle"><span style="white-space: nowrap">'+ vanGmMz.now_language.Clear + '</span></span><span class="buttonClassRight">&nbsp;</span>\
  1848. </a>\
  1849. </div>\
  1850. ';
  1851.  
  1852. showHelpLayer(tmphtml, vanGmMz.now_language.Setting + " v" + GM_info.script.version, true);
  1853. $("#txtTacConf").val(GM_getValue("TacConf", ""));
  1854. $("#gm_setting_save")[0].addEventListener('click', function () {
  1855. vanGmMz.setLanguage($("#gm_language").val());
  1856. GM_setValue("xml_mode", $("#gm_xml_mode").val());
  1857. GM_setValue("autoRun1", $("#gm_autorun").val());
  1858. GM_setValue("TacConf", $("#txtTacConf").val());
  1859.  
  1860. $('#gw_run')[0].title = vanGmMz.now_language.ManualColorTitle;
  1861. $('#gw_run').html("<b>" + vanGmMz.now_language.ManualColor + "</b>");
  1862. $('#gw_run2')[0].title = vanGmMz.now_language.SettingTitle;
  1863. $('#gw_run2').html("<b>" + vanGmMz.now_language.Setting + "</b>");
  1864.  
  1865. $('#gw_jijing').html(vanGmMz.now_language.Jijing);
  1866. $('#gw_dongzuo').html(vanGmMz.now_language.dongzuo);
  1867. $('#gw_copyxml1').html(vanGmMz.now_language.Copyxml1);
  1868. $('#gw_copyxml2').html(vanGmMz.now_language.Copyxml2);
  1869. $('#gw_test').html(vanGmMz.now_language.Test);
  1870.  
  1871.  
  1872. powerboxCloseAll();
  1873. });
  1874. $("#gm_setting_clear")[0].addEventListener('click', function () {
  1875. vple.cacheItem.clearAll();
  1876. });
  1877.  
  1878. $("#gm_setting_players_html")[0].addEventListener('click', function () {
  1879. vanGmMz.GetPlayerHtml(true);
  1880. });
  1881. $("#gm_setting_players_html2")[0].addEventListener('click', function () {
  1882. vanGmMz.GetPlayerHtml(false);
  1883. });
  1884. },
  1885. GetPlayerHtml: function (useCache) {
  1886. let mode = 0;
  1887. if (useCache) {
  1888. mode = 2;
  1889. }
  1890. vanGmMz.GetPlayerHtmlByEn(mode, false, function (data) {
  1891. GM_setClipboard(data);
  1892. alert(vanGmMz.now_language.CopyXml);
  1893. });
  1894. },
  1895. GetPlayerHtmlByEn: function (mode, Cjson, callback) {
  1896. var plang = $("meta[name=language]").attr("content");
  1897. if (plang != "en") {
  1898. $.get("/ajax.php?p=settings&sub=lang&sport=soccer&lang=en", function (data, status) {
  1899. });
  1900. }
  1901. vple.ajax(
  1902. "/?p=players",
  1903. function (data) {
  1904. callback(data);
  1905. }, mode, Cjson);
  1906. if (plang != "en") {
  1907. $.get("/ajax.php?p=settings&sub=lang&sport=soccer&lang=" + plang, function (data, status) {
  1908. });
  1909. }
  1910. }
  1911. ,
  1912.  
  1913. mEvent: undefined, mStaticEventHome: undefined, mStaticEventAway: undefined,
  1914. out_of_play: undefined,
  1915. dit_bypid: {},
  1916. dit_player: {},
  1917. m_koFrame: 0, m_htFrame: 0, m_ko2Frame: 0, m_ht2Frame: 0, m_ko3Frame: 0, m_ht3Frame: 0, m_ko4Frame: 0, m_ht4Frame: 0,
  1918.  
  1919. Advanced2D: function () {
  1920.  
  1921. if (vanGmMz.OK_2D) {
  1922. if ($("#canvas").length > 0) {
  1923.  
  1924. let home = MyGame.prototype.mzlive.m_match.getHomeTeam();
  1925. let away = MyGame.prototype.mzlive.m_match.getAwayTeam();
  1926.  
  1927. if (home != null && away != null) {
  1928. window["gmXml_" + MyGame.prototype.mzlive.m_match.m_matchId] = $.parseXML(window.matchLoader.matchXml.xmlText);
  1929. let nl = window.matchLoader.matchXml.documentElement.evaluate('Periods/*');
  1930. let p;
  1931. while (p = nl.iterateNext()) {
  1932. if (p.getAttribute('name') == 'half1') {
  1933. vanGmMz.m_koFrame = MyGame.prototype.mzlive.m_match.timeToFrame(p.getAttribute('start'));
  1934. vanGmMz.m_htFrame = MyGame.prototype.mzlive.m_match.timeToFrame(p.getAttribute('end'));
  1935. }
  1936. else if (p.getAttribute('name') == 'half2') {
  1937. vanGmMz.m_ko2Frame = MyGame.prototype.mzlive.m_match.timeToFrame(p.getAttribute('start'));
  1938. vanGmMz.m_ht2Frame = MyGame.prototype.mzlive.m_match.timeToFrame(p.getAttribute('end'));
  1939. }
  1940. else if (p.getAttribute('name') == 'extra1') {
  1941. vanGmMz.m_ko3Frame = MyGame.prototype.mzlive.m_match.timeToFrame(p.getAttribute('start'));
  1942. vanGmMz.m_ht3Frame = MyGame.prototype.mzlive.m_match.timeToFrame(p.getAttribute('end'));
  1943. }
  1944. else if (p.getAttribute('name') == 'extra2') {
  1945. vanGmMz.m_ko4Frame = MyGame.prototype.mzlive.m_match.timeToFrame(p.getAttribute('start'));
  1946. vanGmMz.m_ht4Frame = MyGame.prototype.mzlive.m_match.timeToFrame(p.getAttribute('end'));
  1947. }
  1948. }
  1949.  
  1950. let players = window.matchLoader.matchXml.documentElement.evaluate('Player');
  1951. let re1;
  1952. vanGmMz.dit_bypid = {};
  1953. vanGmMz.dit_player = {};
  1954. while (re1 = players.iterateNext()) {
  1955. let ttt = {
  1956. internalId: re1.getAttribute('internalId'),
  1957. name: re1.getAttribute('name'),
  1958. shirtno: re1.getAttribute('shirtno'),
  1959. teamId: re1.getAttribute('teamId'),
  1960. origin: re1.getAttribute('origin')
  1961. };
  1962. vanGmMz.dit_bypid[re1.getAttribute('id')] = ttt;
  1963. if (ttt.teamId == home.m_teamId) {
  1964. vanGmMz.dit_player[ttt.internalId] = home.getPlayerByPlayerId(ttt.internalId);
  1965. } else {
  1966. vanGmMz.dit_player[ttt.internalId] = away.getPlayerByPlayerId(ttt.internalId);
  1967. }
  1968. }
  1969.  
  1970. let events = window.matchLoader.matchXml.documentElement.evaluate('Events/*');
  1971.  
  1972. let re, begin, end;
  1973.  
  1974. let homeTc = new Array();
  1975. let awayTc = new Array();
  1976.  
  1977.  
  1978. vanGmMz.out_of_play = new vanGmMzModel.OutOfPlay();
  1979. vanGmMz.out_of_play.add(0, vanGmMz.m_koFrame);
  1980. vanGmMz.out_of_play.add(vanGmMz.m_htFrame, vanGmMz.m_ko2Frame);
  1981. if (vanGmMz.m_ko3Frame > 0) {
  1982. vanGmMz.out_of_play.add(vanGmMz.m_ht2Frame, vanGmMz.m_ko3Frame);
  1983. }
  1984. if (vanGmMz.m_ko4Frame > 0) {
  1985. vanGmMz.out_of_play.add(vanGmMz.m_ht3Frame, vanGmMz.m_ko4Frame);
  1986. }
  1987. while (re = events.iterateNext()) {
  1988. begin = re.getAttribute('intervalendframe');
  1989. end = re.getAttribute('startframe');
  1990. if (begin != undefined && end != undefined) {
  1991. vanGmMz.out_of_play.add(begin, end);
  1992. }
  1993.  
  1994. //战术变动
  1995. if (re.tagName == 'Tactic') {
  1996. let t_teamid = re.getAttribute('teamId');
  1997. let t_time = re.getAttribute('time');
  1998. let t_type = re.getAttribute('type');
  1999. let t_new_setting = re.getAttribute('new_setting');
  2000. if (t_teamid == home.m_teamId) {
  2001. homeTc.push({
  2002. tag: 'Tactic',
  2003. m_frame: MyGame.prototype.mzlive.m_match.timeToFrame(t_time),
  2004. type: t_type,
  2005. new_setting: t_new_setting,
  2006. m_team: home
  2007. });
  2008. } else {
  2009. awayTc.push({
  2010. tag: 'Tactic',
  2011. m_frame: MyGame.prototype.mzlive.m_match.timeToFrame(t_time),
  2012. type: t_type,
  2013. new_setting: t_new_setting,
  2014. m_team: away
  2015. });
  2016. }
  2017. }
  2018. //换人
  2019. else if (re.tagName == 'Substitution') {
  2020. let t_time = re.getAttribute('time');
  2021. let t_clock = re.getAttribute('clock');
  2022. let t_frame = re.getAttribute('frame');
  2023. let t_playerId = re.getAttribute('playerId');
  2024. let t_teamId = re.getAttribute('teamId');
  2025. let t_substitutedId = re.getAttribute('substitutedId');
  2026. let t_reason = re.getAttribute('reason');
  2027. let t_minute = re.getAttribute('minute');
  2028. let t_scorecondition = re.getAttribute('scorecondition');
  2029. let t_score = re.getAttribute('score');
  2030.  
  2031. let t_player, t_sub_player;
  2032. let p5 = vanGmMz.dit_bypid[t_playerId];
  2033. if (p5) {
  2034. t_player = vanGmMz.dit_player[p5.internalId];
  2035. }
  2036. p5 = vanGmMz.dit_bypid[t_substitutedId];
  2037. if (p5) {
  2038. t_sub_player = vanGmMz.dit_player[p5.internalId];
  2039. }
  2040.  
  2041. if (t_teamId == home.m_teamId) {
  2042. homeTc.push({
  2043. tag: 'Sub',
  2044. m_frame: t_frame,
  2045. clock: t_clock,
  2046. player: t_player,
  2047. sub_player: t_sub_player,
  2048. reason: t_reason,
  2049. minute: t_minute,
  2050. scorecondition: t_scorecondition,
  2051. score: t_score,
  2052. m_team: home
  2053. });
  2054. } else {
  2055. awayTc.push({
  2056. tag: 'Sub',
  2057. m_frame: t_frame,
  2058. clock: t_clock,
  2059. player: t_player,
  2060. sub_player: t_sub_player,
  2061. reason: t_reason,
  2062. minute: t_minute,
  2063. scorecondition: t_scorecondition,
  2064. score: t_score,
  2065. m_team: away
  2066. });
  2067. }
  2068. }
  2069. }
  2070. vanGmMz.out_of_play.Sort();
  2071.  
  2072.  
  2073.  
  2074.  
  2075. let lstEventHome = new vanGmMzModel.MatchEvent();
  2076. let lstEventAway = new vanGmMzModel.MatchEvent();
  2077. lstEventHome.setAllPlayerEvent(home, homeTc);
  2078. lstEventAway.setAllPlayerEvent(away, awayTc);
  2079.  
  2080. lstEventHome.Sort();
  2081. lstEventAway.Sort();
  2082.  
  2083. vanGmMz.mStaticEventHome = lstEventHome;
  2084. vanGmMz.mStaticEventAway = lstEventAway;
  2085.  
  2086. let lstEvent2 = new vpleModel.MatchEvent2();
  2087. lstEvent2.setData(MyGame.prototype.mzlive.m_match, vanGmMz);
  2088. vanGmMz.mEvent = lstEvent2;
  2089.  
  2090.  
  2091. if ($('.gw_div_left').length == 0) {
  2092. $('#canvas').parent().append('<div class="gw_div_left"></div>');
  2093. $('#canvas').parent().append('<div class="gw_div_right"></div>');
  2094. $('#canvas').parent().append(
  2095. '<div><b id="gw_jijing" class="gw_run" style="color: red;">' + vanGmMz.now_language.Jijing + '</b>'
  2096. + ' <b id="gw_dongzuo" class="gw_run" style="color: red;">' + vanGmMz.now_language.dongzuo + '</b>'
  2097. + ' <b id="gw_copyxml1" class="gw_run" style="color: red;">' + vanGmMz.now_language.Copyxml1 + '</b>'
  2098. + ' <b id="gw_copyxml2" class="gw_run" style="color: red;">' + vanGmMz.now_language.Copyxml2 + '</b>'
  2099. + ' <b id="gw_test" class="gw_run" style="color: red;">' + vanGmMz.now_language.Test + '</b>'
  2100. + '</div>');
  2101.  
  2102. $('#gw_jijing')[0].addEventListener('click', function () {
  2103. vanGmMz.ShowDiv(0);
  2104. });
  2105.  
  2106. $('#gw_dongzuo')[0].addEventListener('click', function () {
  2107. vanGmMz.ShowDiv(1);
  2108. });
  2109.  
  2110. $('#gw_copyxml1')[0].addEventListener('click', function () {
  2111. vanGmMz.CopyXML(MyGame.prototype.mzlive.m_match.m_matchId, true);
  2112.  
  2113. });
  2114. $('#gw_copyxml2')[0].addEventListener('click', function () {
  2115. vanGmMz.CopyXML(MyGame.prototype.mzlive.m_match.m_matchId, false);
  2116. });
  2117. $('#gw_test')[0].addEventListener('click', function () {
  2118.  
  2119. });
  2120.  
  2121. } else {
  2122. $('.gw_div_left').empty();
  2123. $('.gw_div_right').empty();
  2124. }
  2125. }
  2126. }
  2127. }
  2128. }
  2129. ,
  2130. ShowDiv: function (type) {
  2131. $('.gw_div_left').empty();
  2132. $('.gw_div_right').empty();
  2133. if (type == 0) {
  2134. let lstEventHome = vanGmMz.mStaticEventHome;
  2135. let lstEventAway = vanGmMz.mStaticEventAway;
  2136.  
  2137. let team = MyGame.prototype.mzlive.m_match.getHomeTeam();
  2138. $('.gw_div_left').append("<div><b>" +
  2139. team.getTactics() + " " + team.getPlayStyle() + " " + team.getAggression()
  2140. + "</b></div>");
  2141. for (let i = 0; i < lstEventHome.data.length; i++) {
  2142. if (lstEventHome.data[i].tag == "Tactic") {
  2143. $('.gw_div_left').append('<div><b id="gw_eventH' + i + '" class="gw_run">'
  2144. + MyGame.prototype.mzlive.m_match.frameToMatchMinute(lstEventHome.data[i].m_frame) + "′ "
  2145. + lstEventHome.data[i].type + " -> "
  2146. + lstEventHome.data[i].new_setting + '</b></div>');
  2147. } else if (lstEventHome.data[i].tag == "Sub") {
  2148. $('.gw_div_left').append('<div><b id="gw_eventH' + i + '" class="gw_run">'
  2149. + MyGame.prototype.mzlive.m_match.frameToMatchMinute(lstEventHome.data[i].m_frame) + "′ "
  2150. + lstEventHome.data[i].player.m_name + "(" + lstEventHome.data[i].player.m_shirtNo + ")↑ "
  2151. + lstEventHome.data[i].sub_player.m_name + "(" + lstEventHome.data[i].sub_player.m_shirtNo + ")↓<br/>"
  2152. + lstEventHome.data[i].reason + lstEventHome.data[i].minute + "′[" + lstEventHome.data[i].scorecondition + " " + lstEventHome.data[i].score + "]"
  2153. + '</b></div>');
  2154.  
  2155. } else {
  2156. $('.gw_div_left').append('<div><b id="gw_eventH' + i + '" class="gw_run">'
  2157. + MyGame.prototype.mzlive.m_match.frameToMatchMinute(lstEventHome.data[i].m_frame) + "′ "
  2158. + lstEventHome.data[i].m_owner.m_name + "(" + lstEventHome.data[i].m_owner.m_shirtNo + ") "
  2159. + lstEventHome.data[i].m_description + '</b></div>');
  2160. }
  2161.  
  2162. let dom = $('#gw_eventH' + i)[0];
  2163. dom.m_frame = lstEventHome.data[i].m_frame;
  2164. dom.m_frame -= 45;
  2165. if (dom.m_frame < 0) {
  2166. dom.m_frame = 0;
  2167. }
  2168. dom.addEventListener('click', function () { MyGame.prototype.mzlive.m_match.setCurrentFrame(this.m_frame); });
  2169. }
  2170.  
  2171. team = MyGame.prototype.mzlive.m_match.getAwayTeam();
  2172. $('.gw_div_right').append("<div><b>" +
  2173. team.getTactics() + " " + team.getPlayStyle() + " " + team.getAggression()
  2174. + "</b></div>");
  2175. for (let i = 0; i < lstEventAway.data.length; i++) {
  2176. if (lstEventAway.data[i].tag == "Tactic") {
  2177. $('.gw_div_right').append('<div><b id="gw_eventA' + i + '" class="gw_run">'
  2178. + MyGame.prototype.mzlive.m_match.frameToMatchMinute(lstEventAway.data[i].m_frame) + "′ "
  2179. + lstEventAway.data[i].type + " -> "
  2180. + lstEventAway.data[i].new_setting + '</b></div>');
  2181. } else if (lstEventAway.data[i].tag == "Sub") {
  2182. $('.gw_div_right').append('<div><b id="gw_eventA' + i + '" class="gw_run">'
  2183. + MyGame.prototype.mzlive.m_match.frameToMatchMinute(lstEventAway.data[i].m_frame) + "′ "
  2184. + lstEventAway.data[i].player.m_name + "(" + lstEventAway.data[i].player.m_shirtNo + ")↑ "
  2185. + lstEventAway.data[i].sub_player.m_name + "(" + lstEventAway.data[i].sub_player.m_shirtNo + ")↓<br/>"
  2186. + lstEventAway.data[i].reason + lstEventAway.data[i].minute + "′[" + lstEventAway.data[i].scorecondition + " " + lstEventAway.data[i].score + "]"
  2187. + '</b></div>');
  2188. } else {
  2189. $('.gw_div_right').append('<div><b id="gw_eventA' + i + '" class="gw_run">'
  2190. + MyGame.prototype.mzlive.m_match.frameToMatchMinute(lstEventAway.data[i].m_frame) + "′ "
  2191. + lstEventAway.data[i].m_owner.m_name + "(" + lstEventAway.data[i].m_owner.m_shirtNo + ") "
  2192. + lstEventAway.data[i].m_description + '</b></div>');
  2193. }
  2194. let dom = $('#gw_eventA' + i)[0];
  2195. dom.m_frame = lstEventAway.data[i].m_frame;
  2196. dom.m_frame -= 45;
  2197. if (dom.m_frame < 0) {
  2198. dom.m_frame = 0;
  2199. }
  2200. dom.addEventListener('click', function () { MyGame.prototype.mzlive.m_match.setCurrentFrame(this.m_frame); });
  2201. }
  2202. } else {
  2203.  
  2204. for (let pid in vanGmMz.mEvent.dataByPlayer) {
  2205. let divname;
  2206. if (vanGmMz.mEvent.dataByPlayer[pid].isHome) {
  2207. divname = '.gw_div_left';
  2208. } else {
  2209. divname = '.gw_div_right';
  2210. }
  2211. let frame_count = 0;
  2212. frame_count = vanGmMz.mEvent.dataByPlayer[pid].FoolCount;
  2213. $(divname).append('<div><b id="gw_player_' + pid + '" class="gw_run">'
  2214. + vanGmMz.mEvent.dataByPlayer[pid].owner.m_name + "(" + vanGmMz.mEvent.dataByPlayer[pid].owner.m_shirtNo + ")"
  2215. + "[" + frame_count + "]</b></div>");
  2216. let dom = $("#gw_player_" + pid)[0];
  2217. dom.pid = pid;
  2218. dom.divname = divname;
  2219. dom.addEventListener('click', function () {
  2220. $(this.divname).empty();
  2221.  
  2222. $(divname).append('<div><b>'
  2223. + vanGmMz.mEvent.dataByPlayer[pid].owner.m_name + "(" + vanGmMz.mEvent.dataByPlayer[pid].owner.m_shirtNo + ")</b></div>");
  2224. let arr = vanGmMz.mEvent.dataByPlayer[this.pid].data;
  2225. for (let k = 0; k < arr.length; k++) {
  2226. let key = 'gw_player_' + pid + "_s_" + k;
  2227. $(this.divname).append('<div><b id="' + key + '" class="gw_run">'
  2228. + MyGame.prototype.mzlive.m_match.frameToMatchMinute(arr[k].m_frame_start) + "′["
  2229. + arr[k].m_frame_start + "+" + (arr[k].m_frame_end - arr[k].m_frame_start + 1)
  2230. + "]" + (arr[k].FoolCount == 0 ? "" : ("+" + arr[k].FoolCount)) + " "
  2231. + vanGmMz.getMatchStatusName(arr[k].status)
  2232. + "</b></div>");
  2233.  
  2234. let dom = $("#" + key)[0];
  2235. dom.m_frame = arr[k].m_frame_start;
  2236. dom.addEventListener('click', function () { MyGame.prototype.mzlive.m_match.setCurrentFrame(this.m_frame); });
  2237. }
  2238. });
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244. }
  2245. }
  2246. }
  2247. ,
  2248.  
  2249. getMatchStatusName: function (status) {
  2250. switch (status) {
  2251. case MatchStatus.BA_NORMAL:
  2252. return vanGmMz.now_language.BA_NORMAL;
  2253. case MatchStatus.BA_WALL:
  2254. return vanGmMz.now_language.BA_WALL;
  2255. case MatchStatus.BA_HOLD:
  2256. return vanGmMz.now_language.BA_HOLD;
  2257. case MatchStatus.BA_DOWN:
  2258. return vanGmMz.now_language.BA_DOWN;
  2259. case MatchStatus.BA_HOLD_THROWIN:
  2260. return vanGmMz.now_language.BA_HOLD_THROWIN;
  2261. case MatchStatus.BA_THROWIN:
  2262. return vanGmMz.now_language.BA_THROWIN;
  2263. case MatchStatus.BA_LEFT_FOOT_SHOT_FWD:
  2264. return vanGmMz.now_language.BA_LEFT_FOOT_SHOT_FWD;
  2265. case MatchStatus.BA_LEFT_FOOT_SHOT_BACK:
  2266. return vanGmMz.now_language.BA_LEFT_FOOT_SHOT_BACK;
  2267. case MatchStatus.BA_LEFT_FOOT_SHOT_RIGHT:
  2268. return vanGmMz.now_language.BA_LEFT_FOOT_SHOT_RIGHT;
  2269. case MatchStatus.BA_LEFT_FOOT_SHOT_LEFT:
  2270. return vanGmMz.now_language.BA_LEFT_FOOT_SHOT_LEFT;
  2271. case MatchStatus.BA_RIGHT_FOOT_SHOT_FWD:
  2272. return vanGmMz.now_language.BA_RIGHT_FOOT_SHOT_FWD;
  2273. case MatchStatus.BA_RIGHT_FOOT_SHOT_BACK:
  2274. return vanGmMz.now_language.BA_RIGHT_FOOT_SHOT_BACK;
  2275. case MatchStatus.BA_RIGHT_FOOT_SHOT_RIGHT:
  2276. return vanGmMz.now_language.BA_RIGHT_FOOT_SHOT_RIGHT;
  2277. case MatchStatus.BA_RIGHT_FOOT_SHOT_LEFT:
  2278. return vanGmMz.now_language.BA_RIGHT_FOOT_SHOT_LEFT;
  2279. case MatchStatus.BA_LEFT_FOOT_PASS_FWD:
  2280. return vanGmMz.now_language.BA_LEFT_FOOT_PASS_FWD;
  2281. case MatchStatus.BA_LEFT_FOOT_PASS_BACK:
  2282. return vanGmMz.now_language.BA_LEFT_FOOT_PASS_BACK;
  2283. case MatchStatus.BA_LEFT_FOOT_PASS_RIGHT:
  2284. return vanGmMz.now_language.BA_LEFT_FOOT_PASS_RIGHT;
  2285. case MatchStatus.BA_LEFT_FOOT_PASS_LEFT:
  2286. return vanGmMz.now_language.BA_LEFT_FOOT_PASS_LEFT;
  2287. case MatchStatus.BA_RIGHT_FOOT_PASS_FWD:
  2288. return vanGmMz.now_language.BA_RIGHT_FOOT_PASS_FWD;
  2289. case MatchStatus.BA_RIGHT_FOOT_PASS_BACK:
  2290. return vanGmMz.now_language.BA_RIGHT_FOOT_PASS_BACK;
  2291. case MatchStatus.BA_RIGHT_FOOT_PASS_RIGHT:
  2292. return vanGmMz.now_language.BA_RIGHT_FOOT_PASS_RIGHT;
  2293. case MatchStatus.BA_RIGHT_FOOT_PASS_LEFT:
  2294. return vanGmMz.now_language.BA_RIGHT_FOOT_PASS_LEFT;
  2295. case MatchStatus.BA_PICK_UP_BALL:
  2296. return vanGmMz.now_language.BA_PICK_UP_BALL;
  2297. case MatchStatus.BA_DROP_BALL:
  2298. return vanGmMz.now_language.BA_DROP_BALL;
  2299. case MatchStatus.BA_HEADER:
  2300. return vanGmMz.now_language.BA_HEADER;
  2301. case MatchStatus.BA_TRIP:
  2302. return vanGmMz.now_language.BA_TRIP;
  2303. case MatchStatus.BA_CELEBRATE:
  2304. return vanGmMz.now_language.BA_CELEBRATE;
  2305. case MatchStatus.BA_GK_READY:
  2306. return vanGmMz.now_language.BA_GK_READY;
  2307. case MatchStatus.BA_GK_ACRO_LEFT:
  2308. return vanGmMz.now_language.BA_GK_ACRO_LEFT;
  2309. case MatchStatus.BA_GK_ACRO_LEFT_HOLD:
  2310. return vanGmMz.now_language.BA_GK_ACRO_LEFT_HOLD;
  2311. case MatchStatus.BA_GK_ACRO_RIGHT:
  2312. return vanGmMz.now_language.BA_GK_ACRO_RIGHT;
  2313. case MatchStatus.BA_GK_ACRO_RIGHT_HOLD:
  2314. return vanGmMz.now_language.BA_GK_ACRO_RIGHT_HOLD;
  2315. case MatchStatus.BA_GK_SIDESTEP_LEFT:
  2316. return vanGmMz.now_language.BA_GK_SIDESTEP_LEFT;
  2317. case MatchStatus.BA_GK_SIDESTEP_RIGHT:
  2318. return vanGmMz.now_language.BA_GK_SIDESTEP_RIGHT;
  2319. case MatchStatus.BA_GK_KICK:
  2320. return vanGmMz.now_language.BA_GK_KICK;
  2321. case MatchStatus.BA_GK_THROW_BALL:
  2322. return vanGmMz.now_language.BA_GK_THROW_BALL;
  2323. case MatchStatus.BA_GK_STRETCH_LEFT:
  2324. return vanGmMz.now_language.BA_GK_STRETCH_LEFT;
  2325. case MatchStatus.BA_GK_STRETCH_LEFT_HOLD:
  2326. return vanGmMz.now_language.BA_GK_STRETCH_LEFT_HOLD;
  2327. case MatchStatus.BA_GK_STRETCH_RIGHT:
  2328. return vanGmMz.now_language.BA_GK_STRETCH_RIGHT;
  2329. case MatchStatus.BA_GK_STRETCH_RIGHT_HOLD:
  2330. return vanGmMz.now_language.BA_GK_STRETCH_RIGHT_HOLD;
  2331. case MatchStatus.BA_BALL_OWNER:
  2332. return vanGmMz.now_language.BA_BALL_OWNER;
  2333. case MatchStatus.BA_TACKLE:
  2334. return vanGmMz.now_language.BA_TACKLE;
  2335. case MatchStatus.BA_SLIDING_TACKLE:
  2336. return vanGmMz.now_language.BA_SLIDING_TACKLE;
  2337. case MatchStatus.BA_SLIDING_TACKLE_STAND:
  2338. return vanGmMz.now_language.BA_SLIDING_TACKLE_STAND;
  2339. case MatchStatus.BA_MAX:
  2340. return vanGmMz.now_language.BA_MAX;
  2341. case 1001:
  2342. return vanGmMz.now_language.BA_MY_1001;
  2343. case 1002:
  2344. return vanGmMz.now_language.BA_MY_1002;
  2345. case 1003:
  2346. return vanGmMz.now_language.BA_MY_1003;
  2347. case 1011:
  2348. return vanGmMz.now_language.BA_MY_1011;
  2349. case 1012:
  2350. return vanGmMz.now_language.BA_MY_1012;
  2351. default:
  2352. return vanGmMz.now_language.Unknown;
  2353. }
  2354. }
  2355. ,
  2356. StatsToPos_X: function (i, IsLocal) {
  2357. let ret = IsLocal ? Math.round(-.255800462 * i + 199.8228530689) : Math.round(.2555000556 * i + 8.3741302936);
  2358. return ret;
  2359. }
  2360. ,
  2361. StatsToPos_Y: function (i, IsLocal) {
  2362. let ret = IsLocal ? Math.round(-.3073207154 * i + 315.9278777381) : Math.round(.3070644902 * i + 9.2794889414);
  2363. return ret;
  2364. }
  2365. ,
  2366. CopyXML: function (mid, ishome) {
  2367.  
  2368. let xml_mode = GM_getValue("xml_mode", 0);
  2369. if (xml_mode == 0) {
  2370. vanGmMz.getMax(function () {
  2371. let tmpXML = vanGmMz.Stats2XML(mid, ishome, vanGmMz.pmax);
  2372. GM_setClipboard(tmpXML);
  2373. alert(vanGmMz.now_language.CopyXmlMsg);
  2374. });
  2375. } else {
  2376. let tmpXML = vanGmMz.Stats2XML(mid, ishome);
  2377. vanGmMz.GetPlayerHtmlByEn(2, true, function (data2) {
  2378. //
  2379. let myData = new FormData();
  2380. myData.append("xml", "9" + base64js.fromByteArray(pako.gzip(tmpXML)));
  2381. myData.append("html", data2);
  2382. myData.append("tacConf", GM_getValue("TacConf", ""));
  2383. GM_xmlhttpRequest({
  2384. method: "POST",
  2385. url: "http://www.budeng.win:852/MZ/TuneXMLByHtml",
  2386. data: myData,
  2387. responseType: "json",
  2388. onload: function (result) {
  2389. let dxml = JSON.parse(result.responseText);
  2390. if (dxml.ErrorCode == 0) {
  2391. GM_setClipboard(dxml.data);
  2392. alert(vanGmMz.now_language.CopyXmlMsg);
  2393. } else {
  2394. alert(vanGmMz.now_language.CopyXmlMsgError);
  2395. }
  2396. },
  2397. onerror: function (result) {
  2398. alert(vanGmMz.now_language.CopyXmlMsgError);
  2399. }
  2400. });
  2401. });
  2402. }
  2403. }
  2404. ,
  2405. Stats2XML: function (mid, ishome, players) {
  2406.  
  2407.  
  2408. let data = window["gmXml_" + mid];
  2409. if (!data) {
  2410. return "";
  2411. }
  2412. let teams = data.documentElement.getElementsByTagName("Team");
  2413. let team = ishome ? teams[0] : teams[1];
  2414.  
  2415. let pidArr = new Array();
  2416. if (players) {
  2417. for (let pid in players) {
  2418. pidArr.push(pid);
  2419. }
  2420. }
  2421. while (pidArr.length < 11) {
  2422. pidArr.push(0);
  2423. }
  2424.  
  2425. let tmpXML = "<?xml version=\"1.0\" ?>" + "\r\n<SoccerTactics>\r\n\t<Team tactics=" + "\"" + team.getAttribute("tactic") + "\" playstyle=\"" + team.getAttribute("playstyle") + "\" aggression=\"" + team.getAttribute("aggression") + "\" />\r\n"
  2426. + "\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";
  2427.  
  2428. let players_xml = data.documentElement.getElementsByTagName('Player');
  2429. for (var i = 0; i < players_xml.length; i++) {
  2430. let pl = players_xml[i];
  2431. let origin = pl.getAttribute('origin');
  2432. let teamId = pl.getAttribute("teamId");
  2433. if (origin != "" && origin != "375,0" && origin != "375,1000") {
  2434. let arr = origin.split(",");
  2435. if (team.getAttribute("id") == teamId) {
  2436. let x = vanGmMz.StatsToPos_X(arr[0], ishome);
  2437. let y = vanGmMz.StatsToPos_Y(arr[1], ishome);
  2438. 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";
  2439. }
  2440.  
  2441. }
  2442. }
  2443. tmpXML += "</SoccerTactics>\r\n";
  2444. return tmpXML;
  2445. }
  2446. ,
  2447. _open: undefined, _prepareTransferData: undefined, _centerPowerbox: undefined, _ajaxSubmit: undefined, _getPlayerInfo: undefined,
  2448. finalInitAfterLoading: undefined, processButtonPresses: undefined, Load010SetupMainSceneInstance: undefined,
  2449. OK_2D: false,
  2450.  
  2451. run_Tac: function (playerid) {
  2452. vanGmMz.getMax(function () {
  2453. let players = $("#playerInfoWindow");
  2454. if (players.length > 0) {
  2455. let pdom = players.eq(0);
  2456. let pid = pdom.html().match(vanGmMzModel.mzreg.playerId_tac)[1];
  2457. if (pid != playerid) {
  2458. return;
  2459. }
  2460. let player = vanGmMz.pmax[pid];
  2461. let imgs = pdom.find("img.skill");
  2462.  
  2463. if (player) {
  2464. if (isNaN(parseInt(player.skills.speed))) {
  2465. for (let j = 0; j < imgs.length; j++) {
  2466. vanGmMz.setSrc(false, imgs[j], parseInt(imgs[j].src.match(vanGmMzModel.mzreg.img_val)[1]), "");
  2467. }
  2468. } else {
  2469. vanGmMz.setSrc(false, imgs[0], player.skills.speed, player.maxed.speed);
  2470. vanGmMz.setSrc(false, imgs[1], player.skills.stamina, player.maxed.stamina);
  2471. vanGmMz.setSrc(false, imgs[2], player.skills.gameintelligence, player.maxed.gameintelligence);
  2472. vanGmMz.setSrc(false, imgs[3], player.skills.passing, player.maxed.passing);
  2473. vanGmMz.setSrc(false, imgs[4], player.skills.shooting, player.maxed.shooting);
  2474. vanGmMz.setSrc(false, imgs[5], player.skills.heading, player.maxed.heading);
  2475. vanGmMz.setSrc(false, imgs[6], player.skills.goalkeeping, player.maxed.goalkeeping);
  2476. vanGmMz.setSrc(false, imgs[7], player.skills.technique, player.maxed.technique);
  2477. vanGmMz.setSrc(false, imgs[8], player.skills.tackling, player.maxed.tackling);
  2478. vanGmMz.setSrc(false, imgs[9], player.skills.highpassing, player.maxed.highpassing);
  2479. vanGmMz.setSrc(false, imgs[10], player.skills.situations, player.maxed.situations);
  2480. }
  2481. let p_age = teamTactic.tacticsData.TeamPlayers.Player[teamTactic.tacticsData.playerIndexReference[pid]]["@attributes"].age;
  2482. if (mz.season - p_age >= 52) {
  2483. vanGmMz.getScoutReport(pid, pdom);
  2484. }
  2485. }
  2486. }
  2487. });
  2488. }
  2489. ,
  2490. eval: function (a) {
  2491. eval(a);
  2492. },
  2493. PLoad: function () {
  2494.  
  2495. if (ajaxSport && ajaxSport == "soccer") {
  2496. let vgm = this;
  2497. vgm.initgw();
  2498. vgm._open = window.XMLHttpRequest.prototype.open;
  2499. window.XMLHttpRequest.prototype.open = function () {
  2500. if (vanGmMzModel.mzreg.data2d_url.test(arguments[1])) {
  2501. vgm.OK_2D = false;
  2502. if (MyGame.prototype.mzlive.R_GW == undefined) {
  2503. MyGame.prototype.mzlive.R_GW = true;
  2504.  
  2505. vgm.finalInitAfterLoading = MyGame.prototype.mzlive.finalInitAfterLoading;
  2506. MyGame.prototype.mzlive.finalInitAfterLoading = function () {
  2507. vgm.finalInitAfterLoading.apply(this);
  2508. vgm.OK_2D = true;
  2509. vgm.Advanced2D();
  2510. };
  2511. vgm.Load010SetupMainSceneInstance = MyGame.prototype.Load010SetupMainSceneInstance;
  2512. MyGame.prototype.Load010SetupMainSceneInstance = function () {
  2513. window.matchLoader = arguments[0];
  2514. vgm.Load010SetupMainSceneInstance.apply(this, arguments);
  2515. };
  2516.  
  2517. }
  2518. }
  2519. return vgm._open.apply(this, arguments);
  2520. };
  2521.  
  2522. if (unsafeWindow.prepareTransferData != undefined) {
  2523. vgm._prepareTransferData = unsafeWindow.prepareTransferData;
  2524. unsafeWindow.prepareTransferData = function (readyState, response, responseParameter) {
  2525.  
  2526. vgm._prepareTransferData.apply(this, arguments);
  2527. if (GM_getValue("autoRun1", 1) == 1) {
  2528. if (typeof (responseParameter) === "undefined" || !responseParameter) {
  2529. vgm.gw_start(0);
  2530. }
  2531. }
  2532. };
  2533. }
  2534.  
  2535. if (unsafeWindow.centerPowerbox != undefined) {
  2536. vgm._centerPowerbox = unsafeWindow.centerPowerbox;
  2537. unsafeWindow.centerPowerbox = function () {
  2538.  
  2539. vgm._centerPowerbox.apply(this, arguments);
  2540. if (GM_getValue("autoRun1", 1) == 1) {
  2541. vgm.gw_start(0);
  2542. }
  2543. };
  2544. }
  2545.  
  2546. if ($.fn.ajaxSubmit != undefined) {
  2547. vgm._ajaxSubmit = $.fn.ajaxSubmit;
  2548. $.fn.ajaxSubmit = function (options) {
  2549. if (options.gm_success_is == undefined) {
  2550. options.gm_success_is = true;
  2551. options.gm_success = options.success;
  2552. options.success = function () {
  2553. options.gm_success.apply(this, arguments);
  2554. if (GM_getValue("autoRun1", 1) == 1) {
  2555. vgm.gw_start(0);
  2556. }
  2557. };
  2558. }
  2559. vgm._ajaxSubmit.apply(this, arguments);
  2560. };
  2561. }
  2562.  
  2563. if (location.href == "https://www.managerzone.com/?p=tactics") {
  2564. if (unsafeWindow.teamTactic.getPlayerInfo != undefined) {
  2565. vgm._getPlayerInfo = unsafeWindow.teamTactic.getPlayerInfo;
  2566. unsafeWindow.teamTactic.getPlayerInfo = function () {
  2567.  
  2568. vgm._getPlayerInfo.apply(this, arguments);
  2569. if (GM_getValue("autoRun1", 1) == 1) {
  2570. vgm.run_Tac(arguments[0]);
  2571. }
  2572. };
  2573. }
  2574. }
  2575. vple.report(this);
  2576. vgm.gw_start(0);
  2577. vple.autoclearCache();
  2578. }
  2579. }
  2580. ,
  2581.  
  2582. D_GetNowSeasonInfo: function (xPlotLines) {
  2583. return undefined;
  2584. },
  2585. D_FillTraining: function (type, playerTS, g, NowSeasonInfo) {
  2586. if (type == "") {
  2587. vanGmMz.fillTrainingLevel("itc", vanGmMzModel.mzreg.bar_itc, playerTS, g.marker.symbol);
  2588. vanGmMz.fillTrainingLevel("ycc", vanGmMzModel.mzreg.bar_ycc, playerTS, g.marker.symbol);
  2589. vanGmMz.fillTrainingLevel("pos", vanGmMzModel.mzreg.bar_pos, playerTS, g.marker.symbol);
  2590. vanGmMz.fillTrainingLevel("neg", vanGmMzModel.mzreg.bar_neg, playerTS, g.marker.symbol, true);
  2591. } else {
  2592. vanGmMz.fillTrainingLevel(type, vanGmMzModel.mzreg.bar_itc, playerTS, g.marker.symbol);
  2593. vanGmMz.fillTrainingLevel(type, vanGmMzModel.mzreg.bar_ycc, playerTS, g.marker.symbol);
  2594. vanGmMz.fillTrainingLevel(type, vanGmMzModel.mzreg.bar_pos, playerTS, g.marker.symbol);
  2595. vanGmMz.fillTrainingLevel(type, vanGmMzModel.mzreg.bar_neg, playerTS, g.marker.symbol, true);
  2596. }
  2597. },
  2598. D_NowSeasonText: function (pid, NowSeasonInfo, pdom) {
  2599.  
  2600. },
  2601. D_ShowScoutText: function (strSus, pid, pdom, HS, HPids, LS, LPids) {
  2602. showHelpLayer(strSus, vanGmMz.now_language.scoutReport, true);
  2603. return strSus;
  2604. },
  2605. D_ShowMaybeSkill: function (pdom, HStar, HP1, HP2, LStar, LP1, LP2) {
  2606.  
  2607. }
  2608. };
  2609.  
  2610. (function () {
  2611. 'use strict';
  2612. vanGmMz.PLoad();
  2613. })();