AbusiveTuna / IronmanCC

Repo for IronmanCC.com
MIT License
0 stars 0 forks source link

example board #1

Open AbusiveTuna opened 4 weeks ago

AbusiveTuna commented 4 weeks ago

image

AbusiveTuna commented 3 weeks ago

image

AbusiveTuna commented 3 weeks ago

flowchart TD Start --> CheckClanTab CheckClanTab[Open Clan Tab] --> ExportButtonClicked ExportButtonClicked[Export Button Clicked] --> SendToGoogleSheet SendToGoogleSheet[Automatic upload to Google Sheet] --> CompareWithCurrentSheet CompareWithCurrentSheet[Compare Against Current Sheet] -->|Player Exists| UpdateLastOnlineTime CompareWithCurrentSheet -->|Unknown Player| FetchLeaderboardData

UpdateLastOnlineTime[Update Player's Last Online Time] --> EndUpdate[End]

FetchLeaderboardData[Fetch Hiscore Data] --> ClassifyPlayers

ClassifyPlayers[Classify Players] --> FirstTimeCheck
FirstTimeCheck[Is this player's first time being checked?] -->|Yes| AddToPossibleNameChange
FirstTimeCheck -->|No| LookupSuccessful
LookupSuccessful[Is lookup successful?] -->|No| GrabPreviousLeaderboardEntry
GrabPreviousLeaderboardEntry[Grab Player's Previous Hiscore Lookup] --> AddToNameChangedPlayers
LookupSuccessful -->|Yes| AddToExistingPlayers

AddToPossibleNameChange[Add to New Player List] --> CompareNewAndFailedPlayers
AddToNameChangedPlayers[Add to Name Changed List] --> CompareNewAndFailedPlayers
AddToExistingPlayers[Add Player to Sheet] --> Update_Like_Normal[End]

CompareNewAndFailedPlayers[Compare New Player List to Name Changed List] --> ForEachNewPlayer
ForEachNewPlayer[For Each New Player] --> CompareWithNameChangedPlayers
CompareWithNameChangedPlayers[Compare Against Name Changed Player] --> TotalXPComparison
TotalXPComparison[Compare Total XP] -->|player has less xp| CompareWithNameChangedPlayers
CompareWithNameChangedPlayers -->|No Matches| AddNewPlayer
TotalXPComparison -->|player has more xp| ForEachBoss
ForEachBoss[For Each Boss/Clue/Etc.] -->|player has less kc| CompareWithNameChangedPlayers
ForEachBoss -->|Player has more or equal KC on all bosses| DeepCompareStart
DeepCompareStart[Start Deep Compare] --> ForEveryBoss
ForEveryBoss[For Each Boss/Clue/Etc.] -->|greater than 100 kc difference| decreaseCompareThreshold[Number of Large Differences + 1]
ForEveryBoss -->|less than 100 kc difference| increaseCompareThreshold[Do Nothing]
decreaseCompareThreshold --> ForEverySkill
increaseCompareThreshold --> ForEverySkill
ForEverySkill -->|greater than 500k xp difference| decreaseCompareThreshold2[Number of Large Differences + 1]
ForEverySkill[For Each Skill] -->|less than 500k xp difference| increaseCompareThreshold2[Do Nothing]
decreaseCompareThreshold2 --> CheckTotalLikeliness
increaseCompareThreshold2 --> CheckTotalLikeliness
CheckTotalLikeliness[Is the Number of Large Differences greater than 5] --> |Yes| AddNewPlayer2[No Name Change Occured]
CheckTotalLikeliness --> |No| NameChangeOccurred
AddNewPlayer2 --> AddNewPlayer3[Add New Player]
NameChangeOccurred[Name Change Occurred] --> UpdatePlayerName[Update Player Name]
AbusiveTuna commented 3 weeks ago

So the idea behind it is this.

There would be a runelite plugin that you enter a google sheet ID into. When you click the clan tab, then click the export button, it would automatically take the current online players their ranks, and the current time (in UTC) and send it to the sheet. The sheet then updates every player that names match to, it would also grab their current OSRS leaderboard data. For any unrecognized name there's only 2 possibilities. They had a name change, or a new member. If this is the first time a player is being checked, we add their name to a list of new players (possible name change people). If an existing player fails a leaderboard check it can only mean their name is no longer on the leaderboard. Indicating a name change or a ban. They are added to the name changed list. We take their previous hi score look up, and set it as their current stats.

We then compare every new player to those on the name changed list via their hi score lookup.

We first check the two players total xp, if the new player has less xp than the name changed player, it can not be a name change, and we move to the next name changed player.

We then do the same with boss kc. Since you can never lose xp or kc this is a quick way to rule out 90% of cases.

If the new player has more (or equal) total xp, and kc in every boss. We start a deep compare.

During the deep compare we're looking for large differences between kc/xp. These checks are happening pretty often, how often depends on how many of us actually use it. So realistically a player won't have 5+ skills and bosses with large gains (100kc or 1m xp). This threshold will obviously change based on how frequent our uploads are.

If we find a large amount of differences between KC/XP then it's not a name change. If the two users XP and KC are very similar, than it is a name change, and we update that player.

AbusiveTuna commented 3 weeks ago

mermaid-diagram-2024-05-30-083816 1 2