van.mz.playerAdvanced

Player display optimization 球员着色插件

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