@sjtdev/koishi-plugin-dota2tracker 1.4.3 → 1.5.0-pre.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -38,14 +38,14 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
38
38
  // src/locales/en-US.schema.yml
39
39
  var require_en_US_schema = __commonJS({
40
40
  "src/locales/en-US.schema.yml"(exports2, module2) {
41
- module2.exports = { _config: { base: { $desc: "Basic Settings", STRATZ_API_TOKEN: "Required. API TOKEN from stratz.com, available at https://stratz.com/api.", dataParsingTimeoutMinutes: "Time to wait for match data parsing (in minutes). If the data parsing time exceeds the waiting time, the report will be generated directly without waiting for the parsing to complete.", urlInMessageType: { $desc: "Include links in messages, <br/>please select the message type:", $inner: ["Include stratz match page link in match query and report messages", "Include stratz player page link in player information query messages", "Include Dota Encyclopedia hero page link in hero data query messages"] } }, rank: { rankBroadSwitch: "Rank change broadcast", rankBroadStar: "Star change broadcast", rankBroadLeader: "Leaderboard rank change broadcast", rankBroadFun: "Fun broadcast template" }, report: { $desc: "Summary Settings", dailyReportSwitch: "Daily Report Function", dailyReportHours: "Daily report time in hours", dailyReportShowCombi: "Show combinations in daily report", weeklyReportSwitch: "Weekly Report Function", weeklyReportDayHours: "Weekly report published on (day) at (hour)", weeklyReportShowCombi: "Show combinations in weekly report" }, template: { $desc: "Template Settings", template_match: "Template used to generate match information images, see https://github.com/sjtdev/koishi-plugin-dota2tracker/wiki for template display.", template_player: "Template used to generate player information images. (Currently only one template available)", template_hero: "Template used to generate hero information images. (Currently only one template available)", playerRankEstimate: "Estimate the rank of players without a rank in the player template <br>Estimated rank will be displayed as a gray image" } } };
41
+ module2.exports = { _config: { base: { $desc: "Basic Settings", STRATZ_API_TOKEN: "Required. API TOKEN from stratz.com, available at https://stratz.com/api.", dataParsingTimeoutMinutes: "Time to wait for match data parsing (in minutes). If the data parsing time exceeds the waiting time, the report will be generated directly without waiting for the parsing to complete.", urlInMessageType: { $desc: "Include links in messages, <br/>please select the message type:", $inner: ["Include stratz match page link in match query and report messages", "Include stratz player page link in player information query messages", "Include Dota Encyclopedia hero page link in hero data query messages"] } }, rank: { rankBroadSwitch: "Rank change broadcast", rankBroadStar: "Star change broadcast", rankBroadLeader: "Leaderboard rank change broadcast", rankBroadFun: "Fun broadcast template" }, report: { $desc: "Summary Settings", dailyReportSwitch: "Daily Report Function", dailyReportHours: "Daily report time in hours", dailyReportShowCombi: "Show combinations in daily report", weeklyReportSwitch: "Weekly Report Function", weeklyReportDayHours: "Weekly report published on (day) at (hour)", weeklyReportShowCombi: "Show combinations in weekly report" }, template: { $desc: "Template Settings", template_match: "Template used to generate match information images, see https://sjtdev.github.io/koishi-plugin-dota2tracker/template-match.html for template display.", template_player: "Template used to generate player information images. (Currently only one template available)", template_hero: "Template used to generate hero information images. (Currently only one template available)", playerRankEstimate: "Estimate the rank of players without a rank in the player template <br>Estimated rank will be displayed as a gray image" } } };
42
42
  }
43
43
  });
44
44
 
45
45
  // src/locales/zh-CN.schema.yml
46
46
  var require_zh_CN_schema = __commonJS({
47
47
  "src/locales/zh-CN.schema.yml"(exports2, module2) {
48
- module2.exports = { _config: { base: { $desc: "基础设置", STRATZ_API_TOKEN: "※必须。stratz.com的API TOKEN,可在 https://stratz.com/api 获取。", dataParsingTimeoutMinutes: "等待比赛数据解析的时间(单位:分钟)。如果数据解析时间超过等待时间,将直接生成战报而不再等待解析完成。", urlInMessageType: { $desc: "在消息中附带链接,<br/>请选择消息类型:", $inner: ["在查询比赛与战报消息中附带stratz比赛页面链接", "在查询玩家信息消息中附带stratz玩家页面链接", "在查询英雄数据消息中附带刀塔百科对应英雄页面链接"] } }, rank: { rankBroadSwitch: "段位变动播报", rankBroadStar: "星级变动播报", rankBroadLeader: "冠绝名次变动播报", rankBroadFun: "整活播报模板" }, report: { $desc: "总结设置", dailyReportSwitch: "日报功能", dailyReportHours: "日报时间小时", dailyReportShowCombi: "日报是否显示组合", weeklyReportSwitch: "周报功能", weeklyReportDayHours: "周报发布于周(几)的(几)点", weeklyReportShowCombi: "周报是否显示组合" }, template: { $desc: "模板设置", template_match: "生成比赛信息图片使用的模板,见 https://github.com/sjtdev/koishi-plugin-dota2tracker/wiki 有模板展示。", template_player: "生成玩家信息图片使用的模板。(目前仅有一张模板)", template_hero: "生成英雄信息图片使用的模板。(目前仅有一张模板)", playerRankEstimate: "在player模板中对没有段位的玩家进行段位估算 <br>估算的段位将以灰色图片显示" } } };
48
+ module2.exports = { _config: { base: { $desc: "基础设置", STRATZ_API_TOKEN: "※必须。stratz.com的API TOKEN,可在 https://stratz.com/api 获取。", dataParsingTimeoutMinutes: "等待比赛数据解析的时间(单位:分钟)。如果数据解析时间超过等待时间,将直接生成战报而不再等待解析完成。", urlInMessageType: { $desc: "在消息中附带链接,<br/>请选择消息类型:", $inner: ["在查询比赛与战报消息中附带stratz比赛页面链接", "在查询玩家信息消息中附带stratz玩家页面链接", "在查询英雄数据消息中附带刀塔百科对应英雄页面链接"] } }, rank: { rankBroadSwitch: "段位变动播报", rankBroadStar: "星级变动播报", rankBroadLeader: "冠绝名次变动播报", rankBroadFun: "整活播报模板" }, report: { $desc: "总结设置", dailyReportSwitch: "日报功能", dailyReportHours: "日报时间小时", dailyReportShowCombi: "日报是否显示组合", weeklyReportSwitch: "周报功能", weeklyReportDayHours: "周报发布于周(几)的(几)点", weeklyReportShowCombi: "周报是否显示组合" }, template: { $desc: "模板设置", template_match: "生成比赛信息图片使用的模板,见 https://sjtdev.github.io/koishi-plugin-dota2tracker/template-match.html 有模板展示。", template_player: "生成玩家信息图片使用的模板。(目前仅有一张模板)", template_hero: "生成英雄信息图片使用的模板。(目前仅有一张模板)", playerRankEstimate: "在player模板中对没有段位的玩家进行段位估算 <br>估算的段位将以灰色图片显示" } } };
49
49
  }
50
50
  });
51
51
 
@@ -589,7 +589,7 @@ var require_en_US_command = __commonJS({
589
589
  // src/locales/en-US.template.yml
590
590
  var require_en_US_template = __commonJS({
591
591
  "src/locales/en-US.template.yml"(exports2, module2) {
592
- module2.exports = { dota2tracker: { template: { radiant: "Radiant", dire: "Dire", won: "Won", lost: "Lost", match_id_: "Match ID: {0}", game_mode_: "Mode: {0}", start_time_: "Start Time: {0}", end_time_: "End Time: {0}", pick_order: "#{0}", random: "R", hero_damage_: "Damage: {0}", building_damage_: "Building: {0}", damage_received_: "Received: {0}", lasthit_: "LastHit: {0}", deny_: "Deny: {0}", "lh/dn_": "LH/DN: {0}", GPM: "GPM", XPM: "XPM", heal_: "Heal: {0}", crowd_control_duration_: "CCD: {0}", "GPM/XPM_": "GPM/XPM: {0}", lane: "Lane", lane_: "Lane: ", lane_advantage: "Lane +", lane_disadvantage: "Lane -", lane_jungle: "Jungle", lane_stomp: "Lane+++", lane_stomped: "Lane---", lane_tie: "Lane ==", analysis_successful: "Analysis successful", analysis_incomplete: "Analysis incomplete", kill: "Kill", kill_contribution_: "KC: {0}", position: "Position", position_: "Position: ", position_1: "Carry", position_2: "Mid", position_3: "OffLane", position_4: "Softsup", position_5: "Hardsup", dire_won: "Dire Won", radiant_won: "Radiant Won", total_damage: "Damage", total_experience: "Exp.", total_gold: "Gold", region_: "Region: {0}", duration_: "Duration: {0}", position_undefined: "?", top10_: "Top 10 Heroes by Matches: ", match_count_: "Matches: ", last25matches_: "Last 25 Matches: ", winrate_: "Winrate: ", imp_: "IMP: ", lane_advantage_rate_: "Lane Advantage Rate: ", hero: "Hero", all_matches_: "All Matches: ", match_count: "Matches", winrate: "Winrate", imp: "IMP", win_count: "Wins", lose_count: "Losses", recently_heroes: "Heroes used more than once recently: ", recently_positions: "Performance in the last 25 matches across all positions: ", winning_streak: "Winning Streak", losing_streak: "Losing Streak", id: "ID", mode: "Mode", kda_kc: "KDA(KC)", time: "Time", duration: "Duration", rank: "Rank", un_parsed: "(Unparsed)", combined_win_loss_summary: "Combined Win/Loss Summary: ", yesterdays_summary: "Yesterday's Summary", last_weeks_summary: "Last Week's Summary", report_won: "W", report_lost: "L", report_winrate: "WR", anonymous_player_1: "This profile is private.", anonymous_player_2: "Background is for display purposes only. It is not {player}’s data.", rank_fun_down_message: "{avatar}<br/>Sad", rank_fun_up_message: "Hip hip hooray! Our awesome member {avatar}{name} has leveled up from {prev} to {curr}!", titles: { MVP: "MVP-#FFA500", Soul: "Soul-#66CCFF", Rich: "R-#FFD700", Wise: "W-#8888FF", Controller: "C-#FF00FF", Nuker: "N-#CC0088", Breaker: "B-#DD0000", Ghost: "G-#CCCCCC", Assister: "A-#006400", Demolisher: "D-#FEDCBA", Healer: "H-#00FF00", Tank: "T-#84A1C7", Idle: "I-#DDDDDD" } } } };
592
+ module2.exports = { dota2tracker: { template: { radiant: "Radiant", dire: "Dire", won: "Won", lost: "Lost", match_id_: "Match ID: {0}", game_mode_: "Mode: {0}", start_time_: "Start Time: {0}", end_time_: "End Time: {0}", pick_order: "#{0}", random: "R", hero_damage_: "Damage: {0}", building_damage_: "Building: {0}", damage_received_: "Received: {0}", lasthit_: "LastHit: {0}", deny_: "Deny: {0}", "lh/dn_": "LH/DN: {0}", GPM: "GPM", XPM: "XPM", heal_: "Heal: {0}", crowd_control_duration_: "CCD: {0}", "GPM/XPM_": "GPM/XPM: {0}", lane: "Lane", lane_: "Lane: ", lane_advantage: "Lane +", lane_disadvantage: "Lane -", lane_jungle: "Jungle", lane_stomp: "Lane+++", lane_stomped: "Lane---", lane_tie: "Lane ==", analysis_successful: "Analysis successful", analysis_incomplete: "Analysis incomplete", kill: "Kill", kill_contribution_: "KC: {0}", position: "Position", position_: "Position: ", position_1: "Carry", position_2: "Mid", position_3: "OffLane", position_4: "Softsup", position_5: "Hardsup", dire_won: "Dire Won", radiant_won: "Radiant Won", total_damage: "Damage", total_experience: "Exp.", total_gold: "Gold", region_: "Region: {0}", duration_: "Duration: {0}", position_undefined: "?", top10_: "Top 10 Heroes by Matches: ", match_count_: "Matches: ", last25matches_: "Last 25 Matches: ", winrate_: "Winrate: ", imp_: "IMP: ", lane_advantage_rate_: "Lane Advantage Rate: ", hero: "Hero", all_matches_: "All Matches: ", match_count: "Matches", winrate: "Winrate", imp: "IMP", win_count: "Wins", lose_count: "Losses", recently_heroes: "Heroes used more than once recently: ", recently_positions: "Performance in the last 25 matches across all positions: ", winning_streak: "Winning Streak", losing_streak: "Losing Streak", id: "ID", mode: "Mode", kda_kc: "KDA(KC)", time: "Time", duration: "Duration", rank: "Rank", un_parsed: "(Unparsed)", combined_win_loss_summary: "Combined Win/Loss Summary: ", yesterdays_summary: "Yesterday's Summary", last_weeks_summary: "Last Week's Summary", report_won: "W", report_lost: "L", report_winrate: "WR", anonymous_player_1: "This profile is private.", anonymous_player_2: "Background is for display purposes only. It is not {player}’s data.", rank_fun_down_message: "{avatar}<br/>Sad", rank_fun_up_message: "Hip hip hooray! Our awesome member {avatar}{name} has leveled up from {prev} to {curr}!", titles: { MVP: "MVP-#FFA500", Soul: "Soul-#66CCFF", Rich: "R-#FFD700", Wise: "W-#8888FF", Controller: "C-#FF00FF", Nuker: "N-#CC0088", Breaker: "B-#DD0000", Ghost: "G-#CCCCCC", Assister: "A-#006400", Demolisher: "D-#FEDCBA", Healer: "H-#00FF00", Tank: "T-#84A1C7", Idle: "I-#DDDDDD" }, situation: "Situation", networth: "Net Worth", experience: "Experience" } } };
593
593
  }
594
594
  });
595
595
 
@@ -610,7 +610,7 @@ var require_zh_CN_command = __commonJS({
610
610
  // src/locales/zh-CN.template.yml
611
611
  var require_zh_CN_template = __commonJS({
612
612
  "src/locales/zh-CN.template.yml"(exports2, module2) {
613
- module2.exports = { dota2tracker: { template: { radiant: "天辉", dire: "夜魇", won: "获胜", lost: "失败", match_id_: "比赛编号:{0}", game_mode_: "模式:{0}", start_time_: "起始时间:{0}", end_time_: "结束时间:{0}", pick_order: "第{0}手", random: "随机", hero_damage_: "英雄伤害:{0}", building_damage_: "建筑伤害:{0}", damage_received_: "受到伤害:{0}", lasthit_: "补刀:{0}", deny_: "反补:{0}", "lh/dn_": "补刀:{0}/{1}", GPM: "GPM", XPM: "XPM", heal_: "治疗量:{0}", crowd_control_duration_: "控制时间:{0}", "GPM/XPM_": "GPM/XPM:{0}", lane: "对线", lane_: "对线:", lane_advantage: "对线优势", lane_disadvantage: "对线劣势", lane_stomp: "对线碾压", lane_stomped: "对线被碾", lane_tie: "对线平手", lane_jungle: "野区霸主", analysis_successful: "录像分析成功", analysis_incomplete: "分析结果不完整", kill: "击杀", kill_contribution_: "参战率:{0}", position: "位置", position_: "位置:", position_1: "优势路", position_2: "中路", position_3: "烈士路", position_4: "采灵芝", position_5: "工具人", position_undefined: "?", total_damage: "总伤害", total_gold: "总经济", total_experience: "总经验", radiant_won: "天辉获胜", dire_won: "夜魇获胜", duration_: "持续时间:{0}", region_: "地区:{0}", match_count_: "场次:", last25matches_: "最近25场:", winrate_: "胜率:", imp_: "表现:", lane_advantage_rate_: "线优率:", top10_: "全期场次前十的英雄:", hero: "英雄", all_matches_: "全期场次:", match_count: "场次", winrate: "胜率", imp: "表现", win_count: "胜场", lose_count: "败场", recently_heroes: "近期使用场次大于1的英雄:", recently_positions: "近25场各个位置的表现:", winning_streak: "连胜", losing_streak: "连败", id: "ID", mode: "模式", kda_kc: "KDA(参战率)", time: "时间", duration: "时长", rank: "段位", un_parsed: "(未解析)", combined_win_loss_summary: "组合胜负情况:", yesterdays_summary: "昨日总结", last_weeks_summary: "上周总结", report_won: "胜", report_lost: "负", report_winrate: "胜率", anonymous_player_1: "数据未公开", anonymous_player_2: "背景仅供展示目的,不属于{player}的数据。", rank_fun_up_message: "热烈祝贺群友 {avatar}{name} 在天梯中再获进步,<br/>由 {prev} 升为 {curr},再接再厉,再创辉煌!", rank_fun_down_message: "{avatar}<br/>寄", titles: { MVP: "MVP-#FFA500", Soul: "魂-#66CCFF", Rich: "富-#FFD700", Wise: "睿-#8888FF", Controller: "控-#FF00FF", Nuker: "爆-#CC0088", Breaker: "破-#DD0000", Ghost: "鬼-#CCCCCC", Assister: "助-#006400", Demolisher: "拆-#FEDCBA", Healer: "奶-#00FF00", Tank: "耐-#84A1C7", Idle: "摸-#DDDDDD" } } } };
613
+ module2.exports = { dota2tracker: { template: { radiant: "天辉", dire: "夜魇", won: "获胜", lost: "失败", match_id_: "比赛编号:{0}", game_mode_: "模式:{0}", start_time_: "起始时间:{0}", end_time_: "结束时间:{0}", pick_order: "第{0}手", random: "随机", hero_damage_: "英雄伤害:{0}", building_damage_: "建筑伤害:{0}", damage_received_: "受到伤害:{0}", lasthit_: "补刀:{0}", deny_: "反补:{0}", "lh/dn_": "补刀:{0}/{1}", GPM: "GPM", XPM: "XPM", heal_: "治疗量:{0}", crowd_control_duration_: "控制时间:{0}", "GPM/XPM_": "GPM/XPM:{0}", lane: "对线", lane_: "对线:", lane_advantage: "对线优势", lane_disadvantage: "对线劣势", lane_stomp: "对线碾压", lane_stomped: "对线被碾", lane_tie: "对线平手", lane_jungle: "野区霸主", analysis_successful: "录像分析成功", analysis_incomplete: "分析结果不完整", kill: "击杀", kill_contribution_: "参战率:{0}", position: "位置", position_: "位置:", position_1: "优势路", position_2: "中路", position_3: "烈士路", position_4: "采灵芝", position_5: "工具人", position_undefined: "?", total_damage: "总伤害", total_gold: "总经济", total_experience: "总经验", radiant_won: "天辉获胜", dire_won: "夜魇获胜", duration_: "持续时间:{0}", region_: "地区:{0}", match_count_: "场次:", last25matches_: "最近25场:", winrate_: "胜率:", imp_: "表现:", lane_advantage_rate_: "线优率:", top10_: "全期场次前十的英雄:", hero: "英雄", all_matches_: "全期场次:", match_count: "场次", winrate: "胜率", imp: "表现", win_count: "胜场", lose_count: "败场", recently_heroes: "近期使用场次大于1的英雄:", recently_positions: "近25场各个位置的表现:", winning_streak: "连胜", losing_streak: "连败", id: "ID", mode: "模式", kda_kc: "KDA(参战率)", time: "时间", duration: "时长", rank: "段位", un_parsed: "(未解析)", combined_win_loss_summary: "组合胜负情况:", yesterdays_summary: "昨日总结", last_weeks_summary: "上周总结", report_won: "胜", report_lost: "负", report_winrate: "胜率", anonymous_player_1: "数据未公开", anonymous_player_2: "背景仅供展示目的,不属于{player}的数据。", rank_fun_up_message: "热烈祝贺群友 {avatar}{name} 在天梯中再获进步,<br/>由 {prev} 升为 {curr},再接再厉,再创辉煌!", rank_fun_down_message: "{avatar}<br/>寄", titles: { MVP: "MVP-#FFA500", Soul: "魂-#66CCFF", Rich: "富-#FFD700", Wise: "睿-#8888FF", Controller: "控-#FF00FF", Nuker: "爆-#CC0088", Breaker: "破-#DD0000", Ghost: "鬼-#CCCCCC", Assister: "助-#006400", Demolisher: "拆-#FEDCBA", Healer: "奶-#00FF00", Tank: "耐-#84A1C7", Idle: "摸-#DDDDDD" }, situation: "局势", networth: "财产总和", experience: "经验" } } };
614
614
  }
615
615
  });
616
616
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sjtdev/koishi-plugin-dota2tracker",
3
3
  "description": "koishi插件-追踪群友的DOTA2对局",
4
- "version": "1.4.3",
4
+ "version": "1.5.0-pre.1",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [
@@ -17,6 +17,9 @@ query MatchInfo($matchId: Long!) {
17
17
  bottomLaneOutcome
18
18
  radiantKills
19
19
  direKills
20
+ radiantNetworthLeads
21
+ radiantExperienceLeads
22
+ winRates
20
23
  players {
21
24
  steamAccountId
22
25
  steamAccount {
@@ -66,6 +69,7 @@ query MatchInfo($matchId: Long!) {
66
69
  itemId
67
70
  stackCount
68
71
  }
72
+ networthPerMinute
69
73
  }
70
74
  heroDamage
71
75
  towerDamage
@@ -126,4 +130,4 @@ query MatchInfo($matchId: Long!) {
126
130
  id
127
131
  }
128
132
  }
129
- }
133
+ }
package/readme.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # [@sjtdev/koishi-plugin-dota2tracker](https://sjtdev.github.io/koishi-plugin-dota2tracker/)
2
- ↑ 文档已构建完毕,点击上方移步到文档页面阅读。
2
+
3
+ ### 完整使用文档
4
+ [中文文档](https://sjtdev.github.io/koishi-plugin-dota2tracker/) | [English Documentation](https://sjtdev.github.io/koishi-plugin-dota2tracker/en-US/)
3
5
 
4
6
  [![npm](https://img.shields.io/npm/v/@sjtdev/koishi-plugin-dota2tracker/latest?style=flat-square)](https://www.npmjs.com/package/@sjtdev/koishi-plugin-dota2tracker)
5
7
  [![npm](https://img.shields.io/npm/v/@sjtdev/koishi-plugin-dota2tracker/next?style=flat-square)](https://www.npmjs.com/package/@sjtdev/koishi-plugin-dota2tracker)
@@ -60,12 +62,10 @@ DOTA2Bot插件-提供自动追踪群友的最新对局的功能(需群友绑
60
62
  `查询英雄`指令已适配7.36改动,所以此指令已废弃
61
63
 
62
64
  ### 英雄ID|英雄名|英雄常用别名 列表
63
- <del>[dotaconstants_add.json](https://github.com/sjtdev/koishi-plugin-dota2tracker/blob/master/src/dotaconstants_add.json#L102-L226)
64
- 补充或纠错请提issue</del>
65
- 已可在本地化中定义
65
+ 可在`koishi-本地化`中定义,见[文档-自定义文本](https://sjtdev.github.io/koishi-plugin-dota2tracker/i18n.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E6%96%87%E6%9C%AC)
66
66
 
67
67
  ### 图片模板列表
68
- 展示见[wiki](https://github.com/sjtdev/koishi-plugin-dota2tracker/wiki)
68
+ 展示见[文档-模板展示](https://sjtdev.github.io/koishi-plugin-dota2tracker/template.html)
69
69
  生成图片已使用ejs模板实现,所有模板都在[template]文件夹下,若是有大佬想自己设计模板欢迎联系我完善数据接口。(当前有很多在模板中后处理的数据,不是很友好)
70
70
 
71
71
  ## 灵感来源&鸣谢
@@ -455,6 +455,10 @@
455
455
  /* text-shadow: -1px -1px 2px #aaa, 1px -1px 2px #aaa, -1px 1px 2px #aaa, 1px 1px 2px #aaa; */ /*描边效果 */
456
456
  }
457
457
 
458
+ .titles > span {
459
+ margin-right: 4px;
460
+ }
461
+
458
462
  .items {
459
463
  margin-bottom: 2px;
460
464
  position: relative;
@@ -799,7 +803,7 @@
799
803
  </div>
800
804
  </div>
801
805
  <div class="titles">
802
- ${player.titles.map((item) => {const [title, color] = $t(item).split("-"); return `<span style="color: ${color};">${title}</span>`}).join("&nbsp;")}
806
+ ${player.titles.map((item) => {const [title, color] = $t(item).split("-"); return `<span style="color: ${color};">${title}</span>`}).join("")}
803
807
  </div>
804
808
  ${player.hero.id != 80 ? `
805
809
  <div class="items">
@@ -0,0 +1,44 @@
1
+ html {
2
+ overflow: auto;
3
+ }
4
+
5
+ body {
6
+ /* width: 1200px; */
7
+ display: flex;
8
+ flex-direction: column;
9
+ overflow: auto;
10
+ }
11
+
12
+ #regular {
13
+ width: 800px;
14
+ }
15
+
16
+ #extra {
17
+ display: flex;
18
+ width: 800px;
19
+ }
20
+
21
+ #charts {
22
+ display: flex;
23
+ flex-direction: row;
24
+ width: 100%;
25
+ }
26
+
27
+ #charts > svg {
28
+ font-size: 10px;
29
+ }
30
+
31
+ #charts > .title {
32
+ width: 100%;
33
+ display: flex;
34
+ justify-content: space-between;
35
+ }
36
+
37
+ #charts > .title > .logo {
38
+ display: flex;
39
+ padding: 0 25px;
40
+ }
41
+
42
+ #charts > .title > .logo > img{
43
+ width: 20px;
44
+ }
@@ -0,0 +1,459 @@
1
+
2
+ p {
3
+ margin: 0;
4
+ }
5
+
6
+ img {
7
+ width: 100%;
8
+ vertical-align: middle;
9
+ }
10
+
11
+ html,
12
+ body {
13
+ overflow: hidden;
14
+ width: 800px;
15
+ font-family: 'MiSans', sans-serif;
16
+ }
17
+
18
+ nav {
19
+ font-size: 14px;
20
+ line-height: 1.8;
21
+ height: 72px;
22
+ color: #fff;
23
+ background-color: #000;
24
+ display: flex;
25
+ flex-direction: row;
26
+ justify-content: space-around;
27
+ align-items: center;
28
+ }
29
+
30
+ nav > div > p:first-of-type {
31
+ font-weight: bold;
32
+ }
33
+
34
+ nav .match_id p:first-of-type {
35
+ font-size: 16px;
36
+ }
37
+
38
+ nav > div.match_id > p.success::after {
39
+ content: "※<%= $t('dota2tracker.template.analysis_successful') %>";
40
+ color: #7ba334;
41
+ }
42
+ nav > div.match_id > p.fail::after {
43
+ content: "※<%= $t('dota2tracker.template.analysis_incomplete') %>";
44
+ color: #ffb400;
45
+ }
46
+
47
+ nav > .rank {
48
+ width: 48px;
49
+ height: 48px;
50
+ position: relative;
51
+ }
52
+
53
+ nav > .rank > img {
54
+ width: 48px;
55
+ height: 48px;
56
+ position: absolute;
57
+ }
58
+
59
+ .radiant {
60
+ color: #3c9028;
61
+ }
62
+
63
+ .dire {
64
+ color: #9c3628;
65
+ }
66
+
67
+ .match_result {
68
+ font-weight: bold;
69
+ height: 49px;
70
+ display: flex;
71
+ justify-content: center;
72
+ align-items: center;
73
+ }
74
+
75
+ .match_result .win {
76
+ margin: 0 25px;
77
+ }
78
+
79
+ .match_result .win.radiant::after {
80
+ content: "<%=$t('dota2tracker.template.radiant_won')%>";
81
+ }
82
+
83
+ .match_result .win.dire::after {
84
+ content: "<%=$t('dota2tracker.template.dire_won')%>";
85
+ }
86
+
87
+ .players {
88
+ display: flex;
89
+ flex-direction: column;
90
+ }
91
+
92
+ .panel {
93
+ padding: 0 10px;
94
+ }
95
+
96
+ .panel {
97
+ padding-top: 4px;
98
+ height: 40px;
99
+ border-top: 3px solid #fff;
100
+ font-size: 13.3px;
101
+ display: grid;
102
+ grid-template-columns: 32px 56px 378px repeat(4,1fr);
103
+ }
104
+ .panel.radiant {
105
+ border-color: #3c9028;
106
+ }
107
+ .panel.dire {
108
+ border-color: #9c3628;
109
+ }
110
+ .panel p{
111
+ line-height: 16px;
112
+ margin-left: 8px;
113
+ }
114
+ .panel .win{
115
+ font-size: 20px;
116
+ line-height: 32px;
117
+ }
118
+ .panel .data{
119
+ color: #aaa;
120
+ }
121
+
122
+ .player:not(:last-child) {
123
+ border-bottom: 1px solid #e1e1e1; /* 示例边框样式 */
124
+ }
125
+
126
+ .player {
127
+ color: #000;
128
+ width: 100%;
129
+ display: grid;
130
+ grid-template-columns: 64px 48px 88px 160px 112px 252px 36px 20px;
131
+ grid-template-rows: 19px 14px 14px 14px;
132
+ padding-bottom: 3px;
133
+ font-size: 12px;
134
+ line-height: 14px;
135
+ overflow: hidden;
136
+ justify-content: center;
137
+ }
138
+
139
+ .player > .row-1 {
140
+ margin-top: 6px;
141
+ }
142
+
143
+ .player > .hero_avatar {
144
+ margin-bottom: 5px;
145
+ width: 64px;
146
+ grid-row: 1 / span 3;
147
+ grid-column: 1;
148
+ position: relative;
149
+ }
150
+ .player > .hero_avatar > .level {
151
+ width: 20px;
152
+ height: 15px;
153
+ background-color: #323232;
154
+ position: absolute;
155
+ bottom: 0;
156
+ right: 0;
157
+ font-size: 12px;
158
+ line-height: 15px;
159
+ color: #fff;
160
+ text-align: center;
161
+ }
162
+
163
+ .player > .hero_avatar > .party_line {
164
+ position: absolute;
165
+ height: 2px;
166
+ top: 0;
167
+ width: 100%;
168
+ }
169
+
170
+ .player > .hero_avatar > .party_mark {
171
+ position: absolute;
172
+ line-height: 1.5;
173
+ text-align: center;
174
+ width: 16px;
175
+ font-size: 10px;
176
+ top: 3px;
177
+ left: 1px;
178
+ background-color: rgba(0, 0, 0, 0.8);
179
+ }
180
+
181
+ .player > .hero_avatar.party_I > .party_line {
182
+ background-color: #caffe5;
183
+ }
184
+
185
+ .player > .hero_avatar.party_I > .party_mark {
186
+ color: #caffe5;
187
+ }
188
+
189
+ .player > .hero_avatar.party_I > .party_mark::after {
190
+ content: "I";
191
+ }
192
+
193
+ .player > .hero_avatar.party_II > .party_line {
194
+ background-color: #ffe484;
195
+ }
196
+
197
+ .player > .hero_avatar.party_II > .party_mark {
198
+ color: #ffe484;
199
+ }
200
+
201
+ .player > .hero_avatar.party_II > .party_mark::after {
202
+ content: "II";
203
+ }
204
+
205
+ .player > .hero_avatar.party_III > .party_line {
206
+ background-color: #e19be2;
207
+ }
208
+
209
+ .player > .hero_avatar.party_III > .party_mark {
210
+ color: #e19be2;
211
+ }
212
+
213
+ .player > .hero_avatar.party_III > .party_mark::after {
214
+ content: "III";
215
+ }
216
+
217
+ .player > .hero_avatar.party_IV > .party_line {
218
+ background-color: #ccdaf4;
219
+ }
220
+
221
+ .player > .hero_avatar.party_IV > .party_mark {
222
+ color: #ccdaf4;
223
+ }
224
+
225
+ .player > .hero_avatar.party_IV > .party_mark::after {
226
+ content: "IV";
227
+ }
228
+
229
+ .player > .facet {
230
+ color: #fff;
231
+ width: 100%;
232
+ height: 16px;
233
+ grid-row: 4;
234
+ grid-column: 1;
235
+ display: grid;
236
+ grid-template-columns: 16px auto;
237
+ z-index: 1;
238
+ position: relative;
239
+ top: -5px;
240
+ }
241
+ .player > .facet > img {
242
+ padding: 2px;
243
+ width: 12px;
244
+ height: 12px;
245
+ background-color: #4444;
246
+ }
247
+ .player > .facet > span {
248
+ padding: 0 2px;
249
+ line-height: 1;
250
+ display: grid;
251
+ place-items: center;
252
+ align-items: center;
253
+ justify-content: center;
254
+ height: 100%;
255
+ }
256
+ .player > .facet > span > * {
257
+ max-width: 100%;
258
+ overflow: hidden;
259
+ text-overflow: ellipsis;
260
+ white-space: nowrap;
261
+ }
262
+ .player > .facet.Red {
263
+ background: linear-gradient(to right, #9f3c3c, #4a2026);
264
+ }
265
+ .player > .facet.Yellow {
266
+ background: linear-gradient(to right, #c8a45c, #6f3d21);
267
+ }
268
+ .player > .facet.Green {
269
+ background: linear-gradient(to right, #a2b23e, #2d5a18);
270
+ }
271
+ .player > .facet.Blue {
272
+ background: linear-gradient(to right, #547ea6, #2a385e);
273
+ }
274
+ .player > .facet.Purple {
275
+ background: linear-gradient(to right, #675cae, #261c44);
276
+ }
277
+ .player > .facet.Gray {
278
+ background: linear-gradient(to right, #adb6be, #4e5557);
279
+ }
280
+
281
+ .player > .rank {
282
+ position: relative;
283
+ grid-row: 1 / span 3;
284
+ grid-column: 2;
285
+ width: 48px;
286
+ height: 48px;
287
+ }
288
+ .player > .rank > img {
289
+ position: absolute;
290
+ }
291
+ .player > .rank > p {
292
+ position: absolute;
293
+ width: 100%;
294
+ bottom: 1.5px;
295
+ text-align: center;
296
+ font-size: 8px;
297
+ color: #fff;
298
+ text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; /* 文字描边 */
299
+ }
300
+
301
+ .player > .titles {
302
+ grid-row: 4;
303
+ grid-column: 2/4;
304
+ margin-left: 4px;
305
+ /* text-shadow: 1px 1px 0 #333; 设置阴影颜色及偏移 */
306
+ }
307
+ .player > .titles > span {
308
+ margin-right: 2px;
309
+ }
310
+
311
+ .player > .player_name {
312
+ grid-row: 1;
313
+ grid-column: 3 / span 2;
314
+ white-space: nowrap; /* 禁止换行 */
315
+ overflow: hidden; /* 隐藏溢出部分 */
316
+ text-overflow: ellipsis; /* 用省略号表示溢出的文本 */
317
+ }
318
+ .player > .player_name > .rank {
319
+ color: #aaa;
320
+ }
321
+ .player.radiant > .player_name > .name {
322
+ color: #3c9028;
323
+ }
324
+ .player.dire > .player_name > .name {
325
+ color: #9c3628;
326
+ }
327
+
328
+ .player .pick {
329
+ grid-column: 3;
330
+ }
331
+
332
+ .player .networth {
333
+ grid-column: 3;
334
+ }
335
+ .player .networth .gold {
336
+ color: rgb(203, 176, 42);
337
+ text-shadow: 1px 1px 0 #000; /* 设置阴影颜色及偏移 */
338
+ }
339
+
340
+ .player .hero_damage {
341
+ grid-row: 2;
342
+ grid-column: 4;
343
+ }
344
+ .player .damage_received {
345
+ grid-row: 3;
346
+ grid-column: 4;
347
+ }
348
+ .player .tower_damage {
349
+ grid-row: 4;
350
+ grid-column: 4;
351
+ }
352
+ .player .kda {
353
+ grid-row: 1;
354
+ grid-column: 5;
355
+ }
356
+ .player .kill_contribution {
357
+ grid-row: 2;
358
+ grid-column: 5;
359
+ }
360
+ .player .stun_duration {
361
+ grid-row: 3;
362
+ grid-column: 5;
363
+ }
364
+ .player .heal {
365
+ grid-row: 4;
366
+ grid-column: 5;
367
+ }
368
+
369
+ .player .items {
370
+ grid-row: 1 / span 4;
371
+ grid-column: 6;
372
+ display: grid;
373
+ grid-template-columns: 24px 192px auto;
374
+ grid-template-rows: 32px 24px;
375
+ }
376
+ .player .items > div {
377
+ display: flex;
378
+ background-color: #c0c0c0;
379
+ }
380
+ .player .items .normal {
381
+ height: 32px;
382
+ grid-column: 1/-1;
383
+ grid-row: 1;
384
+ }
385
+ .player .items .backpack {
386
+ height: 24px;
387
+ width: 96px;
388
+ grid-row: 2;
389
+ /* grid-column: 1; */
390
+ }
391
+ .player .items .normal .item {
392
+ width: 40px;
393
+ height: 30px;
394
+ margin: 1px;
395
+ position: relative;
396
+ }
397
+ .player .items .time {
398
+ position: absolute;
399
+ width: 100%;
400
+ text-align: center;
401
+ bottom: 0;
402
+ height: 11px;
403
+ line-height: 11px;
404
+ color: #ccc;
405
+ background-color: #323232;
406
+ }
407
+ .player .items .backpack{
408
+ filter: grayscale(100%);
409
+ }
410
+ .player .items .backpack .item,
411
+ .player .items .bear .item {
412
+ width: 30px;
413
+ height: 22px;
414
+ margin: 1px;
415
+ position: relative;
416
+ }
417
+ .player .neutral_item {
418
+ grid-row: 1 / span 3;
419
+ grid-column: 7;
420
+ overflow: hidden;
421
+ height: 32px;
422
+ width: 32px;
423
+ border-radius: 50%;
424
+ background-size: auto 100%;
425
+ background-position: center;
426
+ margin-left: 2px;
427
+ }
428
+ .player .items .item.recipe {
429
+ background-image: url("https://cdn.cloudflare.steamstatic.com/apps/dota2/images/dota_react/items/recipe.png");
430
+ background-size: 100%;
431
+ }
432
+
433
+ .player .ahgs {
434
+ grid-row: 1 / span 3;
435
+ grid-column: 8;
436
+ }
437
+ .player .items .bear{
438
+ height: 24px;
439
+ width: 192px;
440
+ grid-row: 2;
441
+ grid-column: 2;
442
+ }
443
+ .player.bear .items .bear .time{
444
+ font-size: 10px;
445
+ }
446
+ .player.bear .items .bear_icon{
447
+ grid-row: 2;
448
+ grid-column: 1;
449
+ }
450
+ .player.bear .items .neutral_item{
451
+ height: 24px;
452
+ width: 24px;
453
+ grid-row: 2;
454
+ grid-column: 3;
455
+ }
456
+ /* .player .items .backpack .item img{
457
+ height: 22px;
458
+ width: auto;
459
+ } */