Valorant-scrimmar får ny rankkontroll med Python-verktyg
Ett nytt Python-verktyg kontrollerar laguppställningar mot regler för att förhindra ojämna scrimmar i Valorant.

Ett nytt Python-verktyg kan nu kontrollera Valorant-laguppställningar mot regler för att förhindra ojämna scrimmar.
Verktyget läser en roster-fil, konverterar spelarnas rank till en numerisk stegring och tillämpar elva regler för att avgöra om en grupp är rättvis att spela mot.
Projektet är ett Python-kommando utan externa beroenden och använder endast standardbiblioteket.
"Scrim-organisatörer känner av detta först", står det i rapporten.
En femmannagrupp kan anmäla sig som Diamond, men en skärmdump kan vara nio dagar gammal och en annan kan visa förra Actens resultat, vilket gör lobbyn ojämn redan innan första pistolrundan.
Lösningen är att skriva reglerna i en fil, samla samma bevis från varje spelare och låta ett skript tillämpa reglerna på samma sätt varje gång.
Verktyget svarar på frågan: är den här gruppen rättvis att spela mot?
För att använda det måste man först öppna Career-fliken från huvudmenyn.
Riot har i senare patchar lagt till en navigeringsmeny högst upp som länkar till Rank Legacy, Accolades och Map Rating, enligt sammanfattningen av patch 13.09.
Varje sida svarar på en separat fråga, och en scrim-kontroll behöver bara två eller tre av dem.
Din live rank och Rank Rating visar var du står idag och hur nära du är en uppflyttning eller nedflyttning.
Act Rank är den sparade historiken över vad du bevisade under en Act, och äldre Acts sparas kvar.
Riot sade i ett utvecklarinlägg från juli 2020 om Act II-ranks: "Din tidigare Act Rank kommer att sparas och låsas i din Career-flik, Act 1 Competitive-data kommer att sparas".
Den formuleringen är sex år gammal, men Career-fliken behåller fortfarande tidigare Act Rank-historik idag.
Map Rating är nyare.
Den lanserades med Act 6 i patch 13.08 och betygsätter din skicklighet på varje karta från 0 till 500, med ett betyg från C till S.
Den använder total vinstprocent, attacker-vinstprocent, försvarar-vinstprocent och en prestationsstatistik, och Riot startade alla från en ny baslinje, så matcher från före lanseringen räknades aldrig.
Det är inte en ersättning för RR.
Behandla det som en signal om kartpool, inte en rank.
Två fler detaljer spelar roll för scrim-planering.
Bind och Corrode kom med i den tävlingsmässiga kartpoolen i Act 6 medan Ascent och Split lämnade den, så en scrim-kartlista kopierad från förra Acten är redan föråldrad.
Och en prestationspoäng ersatte enligt rapporter genomsnittlig combat score i september 2026, så äldre skärmdumpar från trackers kan visa en annan statistik än slutskärmen i spelet.
Organisatörer bryr sig om det högsta trovärdiga numret, inte det snällaste.
En spelare som gled från Diamond 3 till Platinum 3 efter en tuff vecka spelar fortfarande som en Diamond, och en spelare som placerade högt och aldrig bekräftade det kanske inte gör det.
Därför poängsätter valideraren varje person som den högre av deras live rank och deras Act Rank, och den behåller peak som en varningssignal.
En peak långt över den effektiva ranken är inte ett brott mot reglerna, men det är en fråga värd att ställa innan lobbyn startar.
Immortal och Radiant beter sig annorlunda från de numrerade divisionerna under dem, så kontrollera hur din region visar dem.
Låna inte en rank från ett annat spel heller, eftersom Valorant- och League of Legends-rankstegringarna inte stämmer överens nivå för nivå.
Stegringsfilen i detta projekt är en vanlig lista som du kan redigera om Riot ändrar strukturen.
Kom ihåg att Map Rating och RR är separata system, och ett högt kartbetyg höjer aldrig en spelares ranktak.
Bygget behöver väldigt lite.
Allt körs på Pythons standardbibliotek, så det finns inget att installera och ingen API-nyckel att skydda.
Projektet undviker medvetet tredjeparts-trackers och allt som läser spelminne.
En scrim-kontroll byggd på ett verktyg som rör klienten kan sätta ditt konto i riskzonen utan nytta.
Om du vill bedöma ett verktyg innan du litar på det visar rank checker-auditen hur man sorterar minnesläsare från säkra.
Skärmdumpar och en CSV-fil är långsammare, men de innebär ingen risk.
Steg ett är att skapa mappen.
Skapa en projektkatalog med en tests-mapp och en rosters-mapp, bekräfta sedan din Python-version.
Den tomma __init__.py låter testkörningen importera moduler från projektroten.
Steg två är att modellera stegringen.
Varje tak i regelfilen jämför rankar, så rankar måste bli siffror först.
Spara nästa lista som ladder.py.
Den bygger en lista från Iron 1 upp till Radiant, mappar varje etikett till dess index och tolkar rörig mänsklig input som plat2 eller ASC-3.
Tre designval är värda en mening vardera.
Tolkaren tar bort mellanslag, understreck och bindestreck innan matchning, så en roster skriven på en telefon laddas fortfarande.
Alias täcker förkortningar som spelare faktiskt använder.
Och label_avg rapporterar ett genomsnitt som en nivå plus en bråkdel, eftersom ett rent decimalgenomsnitt inte betyder något för en person som läser en lobbytråd.
Varje nivånamn får tre divisioner, sedan tre Immortal-poster och en Radiant-post, vilket ger stegringen 25 positioner.
Den layouten är detta projekts modell, inte ett uttalande från Riot.
Om din Career-flik visar något annat, redigera build_ladder och alla regler följer.
Steg tre är att kontrollera tolken för hand.
Innan några regler finns, bevisa att stegringen mappar inputs på det sätt du förväntar dig.
Kör en enradskontroll från projektmappen.
Platinum 2 sitter på index 13 i en nollbaserad lista, ASC-3 löses till Ascendant 3, och stegringen innehåller 25 poster.
Om en rank kommer tillbaka fel med ett, fixa stegringen nu, eftersom varje senare nummer ärver felet.
Steg fyra är att skriva regelfilen.
Tak hör hemma i data, inte i kod.
En regelfil låter en organisatör ändra fredagens gränser utan att röra Python, och den låter dig behålla en fil per evenemang.
Spara detta som rules.json.
Varje nyckel mappar till en kontroll.
max_player sätter tak för den enskilt högsta personen, max_average sätter tak för lagets genomsnitt och max_spread_tiers begränsar gapet mellan bäst och sämst.
high_tier_floor och max_high_tier_players fungerar tillsammans: inte fler än två spelare får vara på Diamond 3 eller högre.
evidence_required_from säger att alla som är Diamond 1 eller högre måste bifoga en skärmdump.
max_evidence_age_days håller bevisen färska, och peak_gap_warn_tiers flaggar spelare vars peak tornar över deras nuvarande ställning.
Dessa siffror är ett exempelprofil, inte Riot-regler.
Välj värden som passar din community och läs avsnittet om att välja tak nedan innan du bestämmer dig för dem.
Steg fem är att fixa kalkylarkslayouten.
En rad per spelare, sex kolumner, inga sammanslagna celler.
Spara provet som rosters/friday.csv.
Den innehåller avsiktliga problem, så du kan se valideraren fånga dem senare.
Kolumner är Riot ID i Name#TAG-form, live rank, Act Rank, peak, datum spelaren kontrollerade och ett skärmdumpsfilnamn.
Datum använder ISO-format eftersom det sorteras korrekt och aldrig förvirrar en amerikansk läsare med en europeisk.
Rankar accepterar samma förkortningar som tolken förstår.
Steg sex är att samla samma bevis från alla.
En regel är oavbruten.



