The algorithm I use is pretty simple, but very effective, it has yet to fail me. Of course, it can't work if someone was F2P, becomes member and changes his name at the same time/day.
List all members who left the clan, if there's none, nothing else to do.
List all members who joined the clan, if there's none, nothing else to do.
For each member who joined the clan:
- get his xp in every skill, including total, and scores in mini-games. Stored into an array 'xp' (if not displayed in hiscores, set to 0)
- For each member who left the clan:
- - set 'score' to 0
- - get his stored xp in every skills, etc. Stored into an array 'pre_xp'
- - For i = 0 to end of array 'xp'
- - - if xp[ i] < pre_xp[ i] (if he somehow lost xp... Except if a botter changes his name the day he gets reseted. Unlikely to happen)
- - - - score -= 99999
- - - else if xp[ i] == pre_xp[ i] && xp[ i] != 0
- - - - score += 200
- - - else if xp[ i] == pre_xp[ i] && xp[ i] == 0
- - - - score += 10
- - - else if xp[ i] < 1.1 * pre_xp[ i] (if his xp is in a 10% range of previous' xp)
- - - - score += 100
- - - else if xp[ i] > 1.4 * pre_xp[ i] (if his current xp is higher than 140% of previous' xp)
- - - - score -= 100
- - end for (parsing xp array)
- - if score > 1000 (depends on your clan, you might rise this value for a big clan with many name changes, generally score is always above 2000 for a succefully guessed name change)
- - - change_name()
- end for (parsing all members who left)
end for (parsing all members who joined)
As I said, it's a very effective and simple algorithm, as it's pretty unlikely that someone joins with a bit more XP in everything, than someone who just left.
I don't know if it's possible to do that on spreadsheets, I'm really not used to that.
24-Oct-2013 13:29:07
- Last edited on
25-Oct-2013 16:00:35
by
01astronaute