您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Fix the leaderboard names; format times correctly; format kudos scores; highlight yourself if logged in; separator for top 10; style tweaks
// ==UserScript== // @name PGR2 Leaderboard tweaks for Insignia // @namespace https://insignia.live/ // @version 1.7.1 // @description Fix the leaderboard names; format times correctly; format kudos scores; highlight yourself if logged in; separator for top 10; style tweaks // @author Aaron 'EmSixTeen' Gregg // @match https://insignia.live/games/4d53004b // @grant none // ==/UserScript== (function () { "use strict"; const leaderboardNames = { "#001": "Xbox Live - Accumulated Kudos", "#002": "Xbox Live - Edinburgh - All Tracks Sum Of Best Kudos", "#003": "Xbox Live - Moscow - All Tracks Sum Of Best Kudos", "#004": "Xbox Live - Barcelona - All Tracks Sum Of Best Kudos", "#005": "Xbox Live - Washington DC - All Tracks Sum Of Best Kudos", "#006": "Xbox Live - Chicago - All Tracks Sum Of Best Kudos", "#007": "Xbox Live - Florence - All Tracks Sum Of Best Kudos", "#008": "Xbox Live - Nurburgring - Sum Of Best Kudos", "#009": "Xbox Live - Stockholm - All Tracks Sum Of Best Kudos", "#010": "Xbox Live - Hong Kong - All Tracks Sum Of Best Kudos", "#011": "Xbox Live - Yokohama - All Tracks Sum Of Best Kudos", "#012": "Xbox Live - Sydney - All Tracks Sum Of Best Kudos", "#013": "Xbox Live - Long Beach - All Tracks Sum Of Best Kudos", "#014": "Xbox Live - Paris - All Tracks Sum Of Best Kudos", "#015": "Geometry Wars High Score", "#016": "All Time Ghost Challenge - Stockholm Style", "#017": "All Time Ghost Challenge - Chicago Style", //"018": "??", //"019": "??", //"020": "??", //"021": "??", "#022": "Weekly Hot Lap Series", "#023": "Weekly Hot Lap Series", "#024": "Weekly Hot Lap Series", "#025": "Weekly Cone Challenge Series", "#026": "Weekly Cone Challenge Series", "#027": "Weekly Cone Challenge Series", "#028": "Weekly Cone Challenge Series", "#029": "Monthly Hot Lap", "#030": "Monthly Hot Lap", "#031": "Monthly Hot Lap", "#032": "Monthly Hot Lap", "#033": "Monthly Cone Challenge", "#034": "Monthly Cone Challenge", "#035": "Monthly Cone Challenge", "#036": "Monthly Cone Challenge", "#037": "All Time Ghost Challenge - Nurburgring Speed", "#038": "Kudos World Series - Compact Sport Series - Event 1 (Street Race)", "#039": "Kudos World Series - Compact Sport Series - Event 2 (One on One)", "#040": "Kudos World Series - Compact Sport Series - Event 3 (Cone Challenge)", "#041": "Kudos World Series - Compact Sport Series - Event 4 (One on One)", "#042": "Kudos World Series - Compact Sport Series - Event 5 (Street Race)", "#043": "Kudos World Series - Compact Sport Series - Event 6 (Speed Camera)", "#044": "Kudos World Series - Compact Sport Series - Event 7 (Street Race)", "#045": "Kudos World Series - Sports Convertible Series - Event 1 (Overtake)", "#046": "Kudos World Series - Sports Convertible Series - Event 2 (Street Race)", "#047": "Kudos World Series - Sports Convertible Series - Event 3 (Street Race)", "#048": "Kudos World Series - Sports Convertible Series - Event 4 (One on One)", "#049": "Kudos World Series - Sports Convertible Series - Event 5 (Cone Challenge)", "#050": "Kudos World Series - Sports Convertible Series - Event 6 (Speed Camera)", "#051": "Kudos World Series - Sports Convertible Series - Event 7 (Street Race)", "#052": "Kudos World Series - Coupe Series - Event 1 (Timed Run)", "#053": "Kudos World Series - Coupe Series - Event 2 (Street Race)", "#054": "Kudos World Series - Coupe Series - Event 3 (Speed Camera)", "#055": "Kudos World Series - Coupe Series - Event 4 (One on One)", "#056": "Kudos World Series - Coupe Series - Event 5 (Cone Challenge)", "#057": "Kudos World Series - Coupe Series - Event 6 (Overtake)", "#058": "Kudos World Series - Coupe Series - Event 7 (Hot Lap)", "#059": "Kudos World Series - Coupe Series - Event 8 (Street Race)", "#060": "Kudos World Series - Sport Utility Series - Event 1 (Hot Lap)", "#061": "Kudos World Series - Sport Utility Series - Event 2 (Speed Camera)", "#062": "Kudos World Series - Sport Utility Series - Event 3 (Street Race)", "#063": "Kudos World Series - Sport Utility Series - Event 4 (One on One)", "#064": "Kudos World Series - Sport Utility Series - Event 5 (Cone Challenge)", "#065": "Kudos World Series - Sport Utility Series - Event 6 (Overtake)", "#066": "Kudos World Series - Sport Utility Series - Event 7 (Street Race)", "#067": "Kudos World Series - Sport Utility Series - Event 8 (Street Race)", "#068": "Kudos World Series - Pacific Muscle Series - Event 1 (Street Race)", "#069": "Kudos World Series - Pacific Muscle Series - Event 2 (Street Race)", "#070": "Kudos World Series - Pacific Muscle Series - Event 3 (Street Race)", "#071": "Kudos World Series - Pacific Muscle Series - Event 4 (Cone Challenge)", "#072": "Kudos World Series - Pacific Muscle Series - Event 5 (Hot Lap)", "#073": "Kudos World Series - Pacific Muscle Series - Event 6 (One on One)", "#074": "Kudos World Series - Pacific Muscle Series - Event 7 (Street Race)", "#075": "Kudos World Series - Pacific Muscle Series - Event 8 (Street Race)", "#076": "Kudos World Series - Pacific Muscle Series - Event 9 (Speed Camera)", "#077": "Kudos World Series - Pacific Muscle Series - Event 10 (Street Race)", "#078": "Kudos World Series - Roadster Series - Event 1 (Timed Run)", "#079": "Kudos World Series - Roadster Series - Event 2 (Cone Challenge)", "#080": "Kudos World Series - Roadster Series - Event 3 (Street Race)", "#081": "Kudos World Series - Roadster Series - Event 4 (Timed Run)", "#082": "Kudos World Series - Roadster Series - Event 5 (Overtake)", "#083": "Kudos World Series - Roadster Series - Event 6 (Timed Run)", "#084": "Kudos World Series - Roadster Series - Event 7 (Cone Challenge)", "#085": "Kudos World Series - Roadster Series - Event 8 (One on One)", "#086": "Kudos World Series - Roadster Series - Event 9 (Street Race)", "#087": "Kudos World Series - Roadster Series - Event 10 (Speed Camera)", "#088": "Kudos World Series - Roadster Series - Event 11 (Street Race)", "#089": "Kudos World Series - Classics Series - Event 1 (Hot Lap)", "#090": "Kudos World Series - Classics Series - Event 2 (Timed Run)", "#091": "Kudos World Series - Classics Series - Event 3 (Street Race)", "#092": "Kudos World Series - Classics Series - Event 4 (One on One)", "#093": "Kudos World Series - Classics Series - Event 5 (Hot Lap)", "#094": "Kudos World Series - Classics Series - Event 6 (Cone Challenge)", "#095": "Kudos World Series - Classics Series - Event 7 (Overtake)", "#096": "Kudos World Series - Classics Series - Event 8 (One on One)", "#097": "Kudos World Series - Classics Series - Event 9 (Hot Lap)", "#098": "Kudos World Series - Classics Series - Event 10 (Speed Camera)", "#099": "Kudos World Series - Classics Series - Event 11 (Street Race)", "#100": "Kudos World Series - Sports Coupe Series - Event 1 (Timed Run)", "#101": "Kudos World Series - Sports Coupe Series - Event 2 (Overtake)", "#102": "Kudos World Series - Sports Coupe Series - Event 3 (Street Race)", "#103": "Kudos World Series - Sports Coupe Series - Event 4 (One on One)", "#104": "Kudos World Series - Sports Coupe Series - Event 5 (Overtake)", "#105": "Kudos World Series - Sports Coupe Series - Event 6 (Street Race)", "#106": "Kudos World Series - Sports Coupe Series - Event 7 (Cone Challenge)", "#107": "Kudos World Series - Sports Coupe Series - Event 8 (Speed Camera)", "#108": "Kudos World Series - Sports Coupe Series - Event 9 (One on One)", "#109": "Kudos World Series - Sports Coupe Series - Event 10 (Timed Run)", "#110": "Kudos World Series - Sports Coupe Series - Event 11 (Street Race)", "#111": "Kudos World Series - Sports Coupe Series - Event 12 (Street Race)", "#112": "Kudos World Series - Sports Coupe Series - Event 13 (Street Race)", "#113": "Kudos World Series - American Muscle Series - Event 1 (Street Race)", "#114": "Kudos World Series - American Muscle Series - Event 2 (Street Race)", "#115": "Kudos World Series - American Muscle Series - Event 3 (Cone Challenge)", "#116": "Kudos World Series - American Muscle Series - Event 4 (Hot Lap)", "#117": "Kudos World Series - American Muscle Series - Event 5 (One on One)", "#118": "Kudos World Series - American Muscle Series - Event 6 (Street Race)", "#119": "Kudos World Series - American Muscle Series - Event 7 (Cone Challenge)", "#120": "Kudos World Series - American Muscle Series - Event 8 (Street Race)", "#121": "Kudos World Series - American Muscle Series - Event 9 (Hot Lap)", "#122": "Kudos World Series - American Muscle Series - Event 10 (Timed Run)", "#123": "Kudos World Series - American Muscle Series - Event 11 (Street Race)", "#124": "Kudos World Series - American Muscle Series - Event 12 (Street Race)", "#125": "Kudos World Series - American Muscle Series - Event 13 (Speed Camera)", "#126": "Kudos World Series - American Muscle Series - Event 14 (Street Race)", "#127": "Kudos World Series - Super Car Series - Event 1 (Timed Run)", "#128": "Kudos World Series - Super Car Series - Event 2 (Overtake)", "#129": "Kudos World Series - Super Car Series - Event 3 (One on One)", "#130": "Kudos World Series - Super Car Series - Event 4 (Speed Camera)", "#131": "Kudos World Series - Super Car Series - Event 5 (Street Race)", "#132": "Kudos World Series - Super Car Series - Event 6 (Hot Lap)", "#133": "Kudos World Series - Super Car Series - Event 7 (Hot Lap)", "#134": "Kudos World Series - Super Car Series - Event 8 (Street Race)", "#135": "Kudos World Series - Super Car Series - Event 9 (One on One)", "#136": "Kudos World Series - Super Car Series - Event 10 (Hot Lap)", "#137": "Kudos World Series - Super Car Series - Event 11 (Overtake)", "#138": "Kudos World Series - Super Car Series - Event 12 (Street Race)", "#139": "Kudos World Series - Super Car Series - Event 13 (Street Race)", "#140": "Kudos World Series - Super Car Series - Event 14 (Street Race)", "#141": "Kudos World Series - Grand Touring Series - Event 1 (Timed Run)", "#142": "Kudos World Series - Grand Touring Series - Event 2 (Overtake)", "#143": "Kudos World Series - Grand Touring Series - Event 3 (Street Race)", "#144": "Kudos World Series - Grand Touring Series - Event 4 (One on One)", "#145": "Kudos World Series - Grand Touring Series - Event 5 (Cone Challenge)", "#146": "Kudos World Series - Grand Touring Series - Event 6 (Street Race)", "#147": "Kudos World Series - Grand Touring Series - Event 7 (Overtake)", "#148": "Kudos World Series - Grand Touring Series - Event 8 (Hot Lap)", "#149": "Kudos World Series - Grand Touring Series - Event 9 (Street Race)", "#150": "Kudos World Series - Grand Touring Series - Event 10 (One on One)", "#151": "Kudos World Series - Grand Touring Series - Event 11 (Overtake)", "#152": "Kudos World Series - Grand Touring Series - Event 12 (Hot Lap)", "#153": "Kudos World Series - Grand Touring Series - Event 13 (One on One)", "#154": "Kudos World Series - Grand Touring Series - Event 14 (Speed Camera)", "#155": "Kudos World Series - Grand Touring Series - Event 15 (Street Race)", "#156": "Kudos World Series - Grand Touring Series - Event 16 (Street Race)", "#157": "Kudos World Series - Track Specials Series - Event 1 (Hot Lap)", "#158": "Kudos World Series - Track Specials Series - Event 2 (Street Race)", "#159": "Kudos World Series - Track Specials Series - Event 3 (Hot Lap)", "#160": "Kudos World Series - Track Specials Series - Event 4 (Hot Lap)", "#161": "Kudos World Series - Track Specials Series - Event 5 (One on One)", "#162": "Kudos World Series - Track Specials Series - Event 6 (Street Race)", "#163": "Kudos World Series - Track Specials Series - Event 7 (Overtake)", "#164": "Kudos World Series - Track Specials Series - Event 8 (Timed Run)", "#165": "Kudos World Series - Track Specials Series - Event 9 (Hot Lap)", "#166": "Kudos World Series - Track Specials Series - Event 10 (One on One)", "#167": "Kudos World Series - Track Specials Series - Event 11 (Overtake)", "#168": "Kudos World Series - Track Specials Series - Event 12 (Timed Run)", "#169": "Kudos World Series - Track Specials Series - Event 13 (Hot Lap)", "#170": "Kudos World Series - Track Specials Series - Event 14 (Street Race)", "#171": "Kudos World Series - Track Specials Series - Event 15 (One on One)", "#172": "Kudos World Series - Track Specials Series - Event 16 (Speed Camera)", "#173": "Kudos World Series - Track Specials Series - Event 17 (Street Race)", "#174": "Kudos World Series - Extreme Series - Event 1 (Timed Run)", "#175": "Kudos World Series - Extreme Series - Event 2 (Overtake)", "#176": "Kudos World Series - Extreme Series - Event 3 (Street Race)", "#177": "Kudos World Series - Extreme Series - Event 4 (One on One)", "#178": "Kudos World Series - Extreme Series - Event 5 (One on One)", "#179": "Kudos World Series - Extreme Series - Event 6 (One on One)", "#180": "Kudos World Series - Extreme Series - Event 7 (Timed Run)", "#181": "Kudos World Series - Extreme Series - Event 8 (Cone Challenge)", "#182": "Kudos World Series - Extreme Series - Event 9 (Hot Lap)", "#183": "Kudos World Series - Extreme Series - Event 10 (Street Race)", "#184": "Kudos World Series - Extreme Series - Event 11 (Street Race)", "#185": "Kudos World Series - Extreme Series - Event 12 (Street Race)", "#186": "Kudos World Series - Extreme Series - Event 13 (Speed Camera)", "#187": "Kudos World Series - Extreme Series - Event 14 (One on One)", "#188": "Kudos World Series - Extreme Series - Event 15 (Street Race)", "#189": "Kudos World Series - Extreme Series - Event 16 (Street Race)", "#190": "Kudos World Series - Extreme Series - Event 17 (Street Race)", "#191": "Kudos World Series - Ultimate Series - Event 1 (Street Race)", "#192": "Kudos World Series - Ultimate Series - Event 2 (Street Race)", "#193": "Kudos World Series - Ultimate Series - Event 3 (Street Race)", "#194": "Kudos World Series - Ultimate Series - Event 4 (Street Race)", "#195": "Kudos World Series - Ultimate Series - Event 5 (Cone Challenge)", "#196": "Kudos World Series - Ultimate Series - Event 6 (Street Race)", "#197": "Kudos World Series - Ultimate Series - Event 7 (Cone Challenge)", "#198": "Kudos World Series - Ultimate Series - Event 8 (Street Race)", "#199": "Kudos World Series - Ultimate Series - Event 9 (Street Race)", "#200": "Kudos World Series - Ultimate Series - Event 10 (Street Race)", "#201": "Kudos World Series - Ultimate Series - Event 11 (Street Race)", "#202": "Kudos World Series - Ultimate Series - Event 12 (Cone Challenge)", "#203": "Kudos World Series - Ultimate Series - Event 13 (Street Race)", "#204": "Kudos World Series - Ultimate Series - Event 14 (Cone Challenge)", "#205": "Kudos World Series - Ultimate Series - Event 15 (Street Race)", "#206": "Kudos World Series - Ultimate Series - Event 16 (Speed Camera)", "#207": "Kudos World Series - Ultimate Series - Event 17 (Street Race)", "#208": "Kudos World Series - Ultimate Series - Event 18 (Street Race)", "#209": "Kudos World Series - Ultimate Series - Event 19 (Street Race)", "#210": "Arcade Racing - Street Race 1", "#211": "Arcade Racing - Street Race 2", "#212": "Arcade Racing - Street Race 3", "#213": "Arcade Racing - Street Race 4", "#214": "Arcade Racing - Street Race 5", "#215": "Arcade Racing - Street Race 6", "#216": "Arcade Racing - Street Race 7", "#217": "Arcade Racing - Street Race 8", "#218": "Arcade Racing - Street Race 9", "#219": "Arcade Racing - Street Race 10", "#220": "Arcade Racing - Street Race 11", "#221": "Arcade Racing - Street Race 12", "#222": "Arcade Racing - Street Race 13", "#223": "Arcade Racing - Street Race 14", "#224": "Arcade Racing - Street Race 15", "#225": "Arcade Racing - Street Race 16", "#226": "Arcade Racing - Street Race 17", "#227": "Arcade Racing - Street Race 18", "#228": "Arcade Racing - Street Race 19", "#229": "Arcade Racing - Street Race 20", "#230": "Arcade Racing - Timed Run 1", "#231": "Arcade Racing - Timed Run 2", "#232": "Arcade Racing - Timed Run 3", "#233": "Arcade Racing - Timed Run 4", "#234": "Arcade Racing - Timed Run 5", "#235": "Arcade Racing - Timed Run 6", "#236": "Arcade Racing - Timed Run 7", "#237": "Arcade Racing - Timed Run 8", "#238": "Arcade Racing - Timed Run 9", "#239": "Arcade Racing - Timed Run 10", "#240": "Arcade Racing - Timed Run 11", "#241": "Arcade Racing - Timed Run 12", "#242": "Arcade Racing - Timed Run 13", "#243": "Arcade Racing - Timed Run 14", "#244": "Arcade Racing - Timed Run 15", "#245": "Arcade Racing - Timed Run 16", "#246": "Arcade Racing - Timed Run 17", "#247": "Arcade Racing - Timed Run 18", "#248": "Arcade Racing - Timed Run 19", "#249": "Arcade Racing - Timed Run 20", "#250": "Arcade Racing - Cone Challenge 1", "#251": "Arcade Racing - Cone Challenge 2", "#252": "Arcade Racing - Cone Challenge 3", "#253": "Arcade Racing - Cone Challenge 4", "#254": "Arcade Racing - Cone Challenge 5", "#255": "Arcade Racing - Cone Challenge 6", "#256": "Arcade Racing - Cone Challenge 7", "#257": "Arcade Racing - Cone Challenge 8", "#258": "Arcade Racing - Cone Challenge 9", "#259": "Arcade Racing - Cone Challenge 10", "#260": "Arcade Racing - Cone Challenge 11", "#261": "Arcade Racing - Cone Challenge 12", "#262": "Arcade Racing - Cone Challenge 13", "#263": "Arcade Racing - Cone Challenge 14", "#264": "Arcade Racing - Cone Challenge 15", "#265": "Arcade Racing - Cone Challenge 16", "#266": "Arcade Racing - Cone Challenge 17", "#267": "Arcade Racing - Cone Challenge 18", "#268": "Arcade Racing - Cone Challenge 19", "#269": "Arcade Racing - Cone Challenge 20", //"270": "??", "#271": "Time Attack - Circuit Challenge - Washington D.C. - Capitol Thrill", "#272": "Time Attack - Circuit Challenge - Washington D.C. - Up and Over", "#273": "Time Attack - Circuit Challenge - Washington D.C. - Capitol Thrill 2", "#274": "Time Attack - Circuit Challenge - Washington D.C. - Square Dancin'", "#275": "Time Attack - Circuit Challenge - Washington D.C. - Ring Race", "#276": "Time Attack - Circuit Challenge - Washington D.C. - The Tour", "#277": "Time Attack - Circuit Challenge - Washington D.C. - Northside Slide", "#278": "Time Attack - Circuit Challenge - Chicago - Chicago River Tour", "#279": "Time Attack - Circuit Challenge - Chicago - The Miracle Mile", "#280": "Time Attack - Circuit Challenge - Chicago - North Wasbash Overpass", "#281": "Time Attack - Circuit Challenge - Chicago - River Crossing", "#282": "Time Attack - Circuit Challenge - Chicago - In The Loop", "#283": "Time Attack - Circuit Challenge - Chicago - Lower Wacker Run", "#284": "Time Attack - Circuit Challenge - Chicago - East Kinzie Crossover", "#285": "Time Attack - Circuit Challenge - Chicago - Wells & Lake", "#286": "Time Attack - Circuit Challenge - Chicago - East On Wacker", "#287": "Time Attack - Circuit Challenge - Chicago - West On Wacker", "#288": "Time Attack - Circuit Challenge - Edinburgh - Princes Street East", "#289": "Time Attack - Circuit Challenge - Edinburgh - Grassmarket East", "#290": "Time Attack - Circuit Challenge - Edinburgh - Grassmarket West", "#291": "Time Attack - Circuit Challenge - Edinburgh - Lothian Road Eight", "#292": "Time Attack - Circuit Challenge - Edinburgh - Lothian Road Eight Long", "#293": "Time Attack - Circuit Challenge - Edinburgh - Princes Street Loop", "#294": "Time Attack - Circuit Challenge - Edinburgh - Grassmarket Eight", "#295": "Time Attack - Circuit Challenge - Edinburgh - Princes Street Long", "#296": "Time Attack - Circuit Challenge - Edinburgh - Castle Eight", "#297": "Time Attack - Circuit Challenge - Edinburgh - Terrace Sprint", "#298": "Time Attack - Circuit Challenge - Florence - Piazza della Signoria 1", "#299": "Time Attack - Circuit Challenge - Florence - Ponte Vecchio", "#300": "Time Attack - Circuit Challenge - Florence - Piazza della Signoria 2", "#301": "Time Attack - Circuit Challenge - Florence - Duomo 1", "#302": "Time Attack - Circuit Challenge - Florence - Piazza della Repubblica", "#303": "Time Attack - Circuit Challenge - Florence - Arno", "#304": "Time Attack - Circuit Challenge - Florence - Arno 2", "#305": "Time Attack - Circuit Challenge - Florence - Uffizi", "#306": "Time Attack - Circuit Challenge - Florence - Battistero 1", "#307": "Time Attack - Circuit Challenge - Florence - Battistero 2", "#308": "Time Attack - Circuit Challenge - Florence - Duomo 2", "#309": "Time Attack - Circuit Challenge - Nurburgring - Nordschleife 1", "#310": "Time Attack - Circuit Challenge - Stockholm - Speed Freak", "#311": "Time Attack - Circuit Challenge - Stockholm - Island Hop", "#312": "Time Attack - Circuit Challenge - Stockholm - Gamla Stan Loop", "#313": "Time Attack - Circuit Challenge - Stockholm - Northern", "#314": "Time Attack - Circuit Challenge - Stockholm - Bridges", "#315": "Time Attack - Circuit Challenge - Stockholm - Gamla Island Hopping", "#316": "Time Attack - Circuit Challenge - Stockholm - Round the Riksdagshuset", "#317": "Time Attack - Circuit Challenge - Stockholm - Northern 2", "#318": "Time Attack - Circuit Challenge - Stockholm - Gamla Oval", "#319": "Time Attack - Circuit Challenge - Stockholm - Northern 3", "#320": "Time Attack - Circuit Challenge - Barcelona - Place de Jaume", "#321": "Time Attack - Circuit Challenge - Barcelona - Passeig de Colom", "#322": "Time Attack - Circuit Challenge - Barcelona - Barri Gotic", "#323": "Time Attack - Circuit Challenge - Barcelona - Catedral", "#324": "Time Attack - Circuit Challenge - Barcelona - Las Ramblas", "#325": "Time Attack - Circuit Challenge - Barcelona - Catalan Challenge", "#326": "Time Attack - Circuit Challenge - Moscow - KGB Corner", "#327": "Time Attack - Circuit Challenge - Moscow - St Basil's Circle", "#328": "Time Attack - Circuit Challenge - Moscow - Kremlin 1", "#329": "Time Attack - Circuit Challenge - Moscow - Lenin", "#330": "Time Attack - Circuit Challenge - Moscow - Kremlin 2", "#331": "Time Attack - Circuit Challenge - Moscow - Red Square 1", "#332": "Time Attack - Circuit Challenge - Moscow - Red Square 2", "#333": "Time Attack - Circuit Challenge - Hong Kong - Admiralty", "#334": "Time Attack - Circuit Challenge - Hong Kong - The Waterfront", "#335": "Time Attack - Circuit Challenge - Hong Kong - Wan Chai Run", "#336": "Time Attack - Circuit Challenge - Hong Kong - Cotton Tree Drive", "#337": "Time Attack - Circuit Challenge - Hong Kong - Harbour Run", "#338": "Time Attack - Circuit Challenge - Hong Kong - The Convention Centres", "#339": "Time Attack - Circuit Challenge - Hong Kong - Hennessey Road", "#340": "Time Attack - Circuit Challenge - Hong Kong - Harcourt Challenge", "#341": "Time Attack - Circuit Challenge - Yokohama - Yokohama Bay Tour", "#342": "Time Attack - Circuit Challenge - Yokohama - Yokohama Challenge", "#343": "Time Attack - Circuit Challenge - Yokohama - Kishamichi", "#344": "Time Attack - Circuit Challenge - Yokohama - Downtown", "#345": "Time Attack - Circuit Challenge - Yokohama - Warehouse Loop", "#346": "Time Attack - Circuit Challenge - Yokohama - Seaside Loop", "#347": "Time Attack - Circuit Challenge - Yokohama - Honcho dori", "#348": "Time Attack - Circuit Challenge - Yokohama - Sakuragicho", "#349": "Time Attack - Circuit Challenge - Yokohama - Minato Mirai", "#350": "Time Attack - Circuit Challenge - Yokohama - Shinko Park", "#351": "Time Attack - Circuit Challenge - Sydney - Argyle Street", "#352": "Time Attack - Circuit Challenge - Sydney - Opera House View", "#353": "Time Attack - Circuit Challenge - Sydney - Harbour Bridge", "#354": "Time Attack - Circuit Challenge - Sydney - Dawes Point Loop", "#355": "Time Attack - Circuit Challenge - Sydney - The Wharf", "#356": "Time Attack - Circuit Challenge - Sydney - Cumberland Street", "#357": "Time Attack - Circuit Challenge - Sydney - Hickson Run", "#358": "Time Attack - Circuit Challenge - Sydney - Sydney Harbour", "#359": "Time Attack - Circuit Challenge - Sydney - The Rocks Route", "#360": "Time Attack - Circuit Challenge - Sydney - George St Challenge", "#361": "Time Attack - Circuit Challenge - Sydney - Under the Bridge", "#362": "Time Attack - Circuit Challenge - Sydney - Downtown Short", "#363": "Time Attack - Car Challenge - Compact Sports - Mini Cooper S", "#364": "Time Attack - Car Challenge - Compact Sports - Seat Leon Cupra R", "#365": "Time Attack - Car Challenge - Compact Sports - Ford Focus RS", "#366": "Time Attack - Car Challenge - Compact Sports - Honda Civic Type-R (J)", "#367": "Time Attack - Car Challenge - Compact Sports - Renault Clio V6", "#368": "Time Attack - Car Challenge - Compact Sports - VW R32", "#369": "Time Attack - Car Challenge - Compact Sports - VW New Beetle RSI", "#370": "Time Attack - Car Challenge - Compact Sports - Lancia Delta Integrale Evo", "#371": "Time Attack - Car Challenge - Sports Convertible - Toyota MR2 Spyder", "#372": "Time Attack - Car Challenge - Sports Convertible - Mazda Miata MX-5", "#373": "Time Attack - Car Challenge - Sports Convertible - Porsche Boxster S", "#374": "Time Attack - Car Challenge - Sports Convertible - Honda S2000", "#375": "Time Attack - Car Challenge - Sports Convertible - BMW Z4 3.0i", "#376": "Time Attack - Car Challenge - Sports Convertible - Audi TT Roadster", "#377": "Time Attack - Car Challenge - Coupe - Audi TT Coupe", "#378": "Time Attack - Car Challenge - Coupe - Honda Integra Type-R (J)", "#379": "Time Attack - Car Challenge - Coupe - Mazda RX-8", "#380": "Time Attack - Car Challenge - Coupe - Nissan 350Z", "#381": "Time Attack - Car Challenge - Coupe - Audi S4", "#382": "Time Attack - Car Challenge - Coupe - BMW M3", "#383": "Time Attack - Car Challenge - Coupe - Audi TT 3.2 Quattro", "#384": "Time Attack - Car Challenge - Sport Utility - Volvo XC90", "#385": "Time Attack - Car Challenge - Sport Utility - Mercedes ML55 AMG", "#386": "Time Attack - Car Challenge - Sport Utility - Porsche Cayenne Turbo", "#387": "Time Attack - Car Challenge - Sport Utility - Chevrolet SSR", "#388": "Time Attack - Car Challenge - Sport Utility - BMW X5 4.6is", "#389": "Time Attack - Car Challenge - Sport Utility - Ford SVT Lightning", "#390": "Time Attack - Car Challenge - Sports Coupe - Audi RS6", "#391": "Time Attack - Car Challenge - Grand Touring - Bentley Continental GT", "#392": "Time Attack - Car Challenge - Pacific Muscle - Mazda RX-7", "#393": "Time Attack - Car Challenge - Pacific Muscle - Toyota Supra Twin-Turbo", "#394": "Time Attack - Car Challenge - Pacific Muscle - Mitsubishi 3000 GT VR4", "#395": "Time Attack - Car Challenge - Pacific Muscle - Mitsubishi Lancer Evolution VII", "#396": "Time Attack - Car Challenge - Pacific Muscle - Subaru Impreza WRX STi", "#397": "Time Attack - Car Challenge - Pacific Muscle - Nissan Skyline GT-R (R34) Nur", "#398": "Time Attack - Car Challenge - Roadster - Vauxhall VX220", "#399": "Time Attack - Car Challenge - Roadster - Lotus Elise", "#400": "Time Attack - Car Challenge - Sports Coupe - TVR Tamora", "#401": "Time Attack - Car Challenge - Roadster - Lotus 340R", "#402": "Time Attack - Car Challenge - Roadster - Caterham 7 Classic", "#403": "Time Attack - Car Challenge - Roadster - Renault Spider", "#404": "Time Attack - Car Challenge - Classics - Porsche 550 Spyder", "#405": "Time Attack - Car Challenge - Classics - Jaguar E-Type", "#406": "Time Attack - Car Challenge - Classics - Nissan 240Z", "#407": "Time Attack - Car Challenge - Classics - Mercedes 300SL Gullwing", "#408": "Time Attack - Car Challenge - Classics - Porsche 911 RS 2.7", "#409": "Time Attack - Car Challenge - Classics - Ferrari 275 GTB", "#410": "Time Attack - Car Challenge - Roadster - AC 427 MKIII", "#411": "Time Attack - Car Challenge - Classics - Ferrari Dino 246 GT", "#412": "Time Attack - Car Challenge - Classics - Lancia Stratos", "#413": "Time Attack - Car Challenge - Classics - Toyota 2000GT", "#414": "Time Attack - Car Challenge - Sports Coupe - Lexus SC 430", "#415": "Time Attack - Car Challenge - Sports Coupe - Jaguar XKR", "#416": "Time Attack - Car Challenge - Sports Coupe - Cadillac XLR", "#417": "Time Attack - Car Challenge - Sports Coupe - Morgan Aero 8", "#418": "Time Attack - Car Challenge - Sports Coupe - Porsche 911 Carrera Coupe (996)", "#419": "Time Attack - Car Challenge - Sports Coupe - Iceni", "#420": "Time Attack - Car Challenge - American Muscle - Chevrolet Camaro SS", "#421": "Time Attack - Car Challenge - American Muscle - Corvette Sting Ray", "#422": "Time Attack - Car Challenge - American Muscle - Ford Mustang Fastback 2+2", "#423": "Time Attack - Car Challenge - American Muscle - Ford SVT Mustang Cobra", "#424": "Time Attack - Car Challenge - Super Car - Chevrolet Corvette Z06", "#425": "Time Attack - Car Challenge - American Muscle - Pontiac GTO", "#426": "Time Attack - Car Challenge - American Muscle - Chevrolet Camaro Z28", "#427": "Time Attack - Car Challenge - American Muscle - Pontiac Trans Am", "#428": "Time Attack - Car Challenge - Super Car - Dodge Viper GTS", "#429": "Time Attack - Car Challenge - Super Car - Ferrari 360 Modena", "#430": "Time Attack - Car Challenge - Super Car - Porsche 911 Turbo (996)", "#431": "Time Attack - Car Challenge - Track Specials - Dodge Viper SRT-10", "#432": "Time Attack - Car Challenge - Super Car - Ferrari 360 Spider", "#433": "Time Attack - Car Challenge - Super Car - TVR Tuscan Speed 6", "#434": "Time Attack - Car Challenge - Grand Touring - Lotus Esprit V8", "#435": "Time Attack - Car Challenge - Super Car - Ferrari 355 F1", "#436": "Time Attack - Car Challenge - Grand Touring - Ferrari 550 Barchetta", "#437": "Time Attack - Car Challenge - Grand Touring - Mercedes SL55 AMG", "#438": "Time Attack - Car Challenge - Grand Touring - Ferrari 575M Maranello", "#439": "Time Attack - Car Challenge - Grand Touring - Aston Martin Vanquish", "#440": "Time Attack - Car Challenge - Grand Touring - Ferrari Testarossa", "#441": "Time Attack - Car Challenge - Extreme - Ascari KZ1", "#442": "Time Attack - Car Challenge - Track Specials - Honda NSX Type-R (J)", "#443": "Time Attack - Car Challenge - Track Specials - Lotus Exige", "#444": "Time Attack - Car Challenge - Track Specials - Noble M12 GTO3", "#445": "Time Attack - Car Challenge - Track Specials - Porsche 911 GT3 (996)", "#446": "Time Attack - Car Challenge - Track Specials - Ferrari Challenge Stradale", "#447": "Time Attack - Car Challenge - Track Specials - Vauxhall VX220 Turbo", "#448": "Time Attack - Car Challenge - Extreme - Ferrari F50", "#449": "Time Attack - Car Challenge - Extreme - Porsche 911 GT2 (993)", "#450": "Time Attack - Car Challenge - Extreme - Ford GT40", "#451": "Time Attack - Car Challenge - Extreme - Ferrari F40", "#452": "Time Attack - Car Challenge - Extreme - Porsche 959", "#453": "Time Attack - Car Challenge - Extreme - Jaguar XJ220", "#454": "Time Attack - Car Challenge - Ultimate - Saleen S7", "#455": "Time Attack - Car Challenge - Ultimate - Porsche Carrera GT", "#456": "Time Attack - Car Challenge - Ultimate - Koenigsegg CC V8S", "#457": "Time Attack - Car Challenge - Ultimate - Enzo Ferrari", "#458": "Time Attack - Car Challenge - Ultimate - Pagani Zonda S", "#459": "Time Attack - Car Challenge - Ultimate - Ford GT", "#460": "Time Attack - Car Challenge - Super Car - Delfino Feroce", "#461": "Time Attack - Car Challenge - Classics - Ferrari 250 GTO", "#462": "Time Attack - Car Challenge - Ultimate - Mercedes CLK-GTR", "#463": "Time Attack - Car Challenge - Ultimate - Porsche 911 GT1", "#464": "Time Attack - Car Challenge - Ultimate - TVR Cebera Speed 12", //"465": "??", //"466": "??", //"467": "??", "#468": "All Time Ghost Challenge - Barcelona Speed", "#469": "All Time Ghost Challenge - Florence Speed", "#470": "All Time Ghost Challenge - Hong Kong Speed", //"471": "??", //"472": "??", "#473": "Weekly Hot Lap Series", "#474": "Time Attack - Car Challenge - Paris Booster Pack - BMW M3 CSL", "#475": "Time Attack - Car Challenge - Long Beach Booster Pack - VW Nardo", "#476": "Time Attack - Car Challenge - Paris Booster Pack - Chevrolet Corvette C6", "#477": "Time Attack - Car Challenge - Long Beach Booster Pack - Subaru Impreza 22B STi", "#478": "Time Attack - Car Challenge - Paris Booster Pack - Ferrari 250TR", "#479": "Time Attack - Car Challenge - Paris Booster Pack - Porsche 356A Carrera Speedster", "#480": "Time Attack - Car Challenge - Paris Booster Pack - Ferrari 365 GTS4", "#481": "Time Attack - Car Challenge - Paris Booster Pack - BMW 645Ci", "#482": "Time Attack - Car Challenge - Paris Booster Pack - Ferrari 288 GTO", "#483": "Time Attack - Car Challenge - Long Beach Booster Pack - Ariel Atom 2", "#484": "Time Attack - Car Challenge - Long Beach Booster Pack - Dodge Ram SRT-10", "#485": "Time Attack - Car Challenge - Long Beach Booster Pack - Dodge Challenger R/T Hemi", //"486": "??", "#487": "Time Attack - Car Challenge - Long Beach Booster Pack - Ferrari 612 Scaglietti", //"488": "??", "#489": "Time Attack - Car Challenge - Long Beach Booster Pack - Porsche 911 GT2 Clubsport", "#490": "Time Attack - Circuit Challenge - Long Beach - Long Beach Challenge", "#491": "Time Attack - Circuit Challenge - Long Beach - Rainbow Lagoon", "#492": "Time Attack - Circuit Challenge - Long Beach - Coastal Run", "#493": "Time Attack - Circuit Challenge - Long Beach - Dolphin Loop", "#494": "Time Attack - Circuit Challenge - Long Beach - LBC (Long Beach City)", "#495": "Time Attack - Circuit Challenge - Long Beach - Aquarium", "#496": "Time Attack - Circuit Challenge - Long Beach - CC Circular", "#497": "Time Attack - Circuit Challenge - Long Beach - Ocean Boulevard", //"498": "??", //"499": "??", //"500": "??", "#501": "Time Attack - Car Challenge - Long Beach Booster Pack - Radical SR3 Turbo", "#502": "Time Attack - Circuit Challenge - Paris - Le Circuit Complet", "#503": "Time Attack - Circuit Challenge - Paris - Les Deux Ponts", "#504": "Time Attack - Circuit Challenge - Paris - Elysees Challenge", "#505": "Time Attack - Circuit Challenge - Paris - Les Monuments Celebres", "#506": "Time Attack - Circuit Challenge - Paris - L'Arc de Triomphe", "#507": "Time Attack - Circuit Challenge - Paris - Avenue D'lena", "#508": "Time Attack - Circuit Challenge - Paris - Circuit Interieur", "#509": "Time Attack - Car Challenge - Paris Booster Pack - TVR Cerbera Speed 12", }; // constants const MAX_INT = 2147483647; const VALID_RANGE_MIN = MAX_INT - 3600000; // assume max time difference is 1 hour const VALID_RANGE_MAX = MAX_INT; // scores should be less than MAX_INT const excludedLeaderboards = ["15", "289"]; // decode the leaderboard score (convert to minutes, seconds, milliseconds) function decodeLeaderboardTime(score) { const leaderboardScore = MAX_INT - score; const totalSeconds = Math.floor(leaderboardScore / 1000); // total s const milliseconds = leaderboardScore % 1000; // ms const minutes = Math.floor(totalSeconds / 60); // min const seconds = totalSeconds % 60; // remaining s // Format the time in MM:SS.MMM format const formattedTime = (minutes > 0 ? `${padZero(minutes)}:` : "") + `${padZero(seconds)}.${padZero(milliseconds, 3)}`; return formattedTime; } // pad numbers with leading zeros function padZero(num, length = 2) { return num.toString().padStart(length, "0"); } // check if the score is valid and in the expected range function isValidLeaderboardScore(score) { return ( !isNaN(score) && score >= VALID_RANGE_MIN && score <= VALID_RANGE_MAX ); } // update select option texts function updateSelectTextsToCorrectNames() { const selectElement = document.querySelector("#leaderboard-select"); if (selectElement) { const options = selectElement.querySelectorAll("option"); // loop through the options and update the visible text options.forEach((option, index) => { // retrieve the correct key from leaderboardNames by checking its order const leaderboardKey = getLeaderboardKey(index); if (leaderboardKey && leaderboardNames[leaderboardKey]) { // prepend leaderboard key (001, 002, etc.) to option text option.textContent = `${leaderboardKey} - ${leaderboardNames[leaderboardKey]}`; } }); } } // get the correct leaderboard key based on the option index function getLeaderboardKey(optionIndex) { const keys = Object.keys(leaderboardNames); // get the keys of leaderboardNames // if the optionIndex corresponds to a valid key in the leaderboardNames object // assumes keys are mapped in the same order as the options if (optionIndex < keys.length) { return keys[optionIndex]; // return the key for the current option } return null; } // highlight yourself if you're logged in function highlightUserCells() { // get the username from user profile dropdown const usernameElement = document.querySelector("#navbarDropdown"); const username = usernameElement ? usernameElement.textContent.trim() : null; if (username) { // check the username cells const cells = document.querySelectorAll( ".container[wire\\:id] tbody tr td:nth-of-type(2)" ); cells.forEach((cell) => { if (cell.textContent.trim() === username) { cell.classList.add("is-me"); } }); } } // process all rows in the table function processTable() { // get selected option value from dropdown const selectElement = document.querySelector("#leaderboard-select"); const selectedValue = selectElement ? selectElement.value : null; // find the time/score cells const elements = document.querySelectorAll( ".container[wire\\:id] .table.table-striped td.text-right" ); elements.forEach((el) => { // let us know the table's been formatted el.classList.add("is-formatted"); // skip processing specific calles if (excludedLeaderboards.includes(selectedValue)) { console.log("Skipping processing for this leaderboard."); return; // move to next cell } // parse the text content as a number const score = parseInt(el.textContent.trim(), 10); // check if score is valid and in expected range if (isValidLeaderboardScore(score)) { // is valid, so convert the score const convertedTime = decodeLeaderboardTime(score); // update element with converted time, add 'is-time-trial' class el.textContent = convertedTime; el.classList.add("is-time-trial"); el.classList.remove("is-kudos"); // ensure no kudos class is present } else { // is not valid, so format the number and add "kudos" to the string const formattedScore = isNaN(score) ? el.textContent.trim() : score.toLocaleString(); el.textContent = `${formattedScore} kudos`; // add 'is-kudos' class el.classList.add("is-kudos"); el.classList.remove("is-time-trial"); // ensure no time-trial class is present } }); } // monitor the dropdown change and detect table updates function monitorDropdownAndTable() { const dropdown = document.getElementById("leaderboard-select"); // listen for change events on the dropdown to detect when a new table is selected if (dropdown) { dropdown.addEventListener("change", () => { // wait for table to be updated const interval = setInterval(() => { const table = document.querySelector(".table.table-striped"); if (table) { // once table is present, stop the interval and process it clearInterval(interval); processTable(); updateSelectTextsToCorrectNames(); highlightUserCells(); } }, 500); // check every 500ms }); } } // inject custom styles for the new classes function injectStyles() { const style = document.createElement("style"); style.innerHTML = ` :root { --gold: radial-gradient( ellipse farthest-corner at right bottom, #ffeba8 0%, #e5c787 8%, #f2d792 30%, #d2b360 40%, transparent 80% ), radial-gradient( ellipse farthest-corner at left top, #ffffff 0%, #ffffac 8%, #f2d792 25%, #5d4a1f 62.5%, #5d4a1f 100% ); --silver: radial-gradient( ellipse farthest-corner at right bottom, #404040 0%, #848484 8%, #ededed 30%, #e2e2e2 40%, transparent 80% ), radial-gradient( ellipse farthest-corner at left top, #898989 0%, #e2e2e2 8%, #fdfdfd 25%, #a4a4a4 62.5%, #a8a8a8 100% ); --bronze: radial-gradient( ellipse farthest-corner at right bottom, #eabaad 0%, #dea99e 8%, #d88f7a 30%, #b07366 60%, transparent 80% ), radial-gradient( ellipse farthest-corner at left top, #fff1ee 0%, #eabaad 8%, #d88f7a 25%, #7e3b2a 62.5%, #df946d 100% ); --border-color: #6c757d; } .is-time-trial { } .is-kudos { } .is-formatted { font-family: monospace, monospace; } tr:has(.is-me) { outline: 3px solid red; outline-offset: -3px; } .container[wire\\:id] table { border-collapse: collapse; } .container[wire\\:id] tbody tr:nth-of-type(1) { border-top: 3px solid var(--border-color); background: var(--gold); } .container[wire\\:id] tbody tr:nth-of-type(2) { border-top: 3px solid var(--border-color); background: var(--silver); } .container[wire\\:id] tbody tr:nth-of-type(3) { border-top: 3px solid var(--border-color); background: var(--bronze); } .container[wire\\:id] tbody tr:nth-of-type(1), .container[wire\\:id] tbody tr:nth-of-type(2), .container[wire\\:id] tbody tr:nth-of-type(3) { color: #000; text-shadow: 0 0 1.5em #fff; } .container[wire\\:id] tbody tr:nth-of-type(1) td:nth-of-type(2), .container[wire\\:id] tbody tr:nth-of-type(2) td:nth-of-type(2), .container[wire\\:id] tbody tr:nth-of-type(3) td:nth-of-type(2) { font-weight: bold; letter-spacing: .05ch; } .container[wire\\:id] tr:nth-of-type(11) { border-top: 6px solid var(--border-color); } `; document.head.appendChild(style); } // initial call to monitor dropdown and table changes monitorDropdownAndTable(); // also process the table initially if it's already loaded processTable(); // inject the new class' styles injectStyles(); // fix the leaderboard names updateSelectTextsToCorrectNames(); // highlight your gamertag highlightUserCells(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址