public void Update(long GUID, XLRUpdateFlags flags)
            {
                if (!xlr_players.ContainsKey(GUID))
                {
                    return;
                }
                XLREntry entry = xlr_players[GUID];

                if (flags.HasFlag(XLRUpdateFlags.kill))
                {
                    entry.kills += 1;
                }
                if (flags.HasFlag(XLRUpdateFlags.death))
                {
                    entry.deaths += 1;
                }
                if (flags.HasFlag(XLRUpdateFlags.headshot))
                {
                    entry.headshots += 1;
                }
                if (flags.HasFlag(XLRUpdateFlags.tk_kill))
                {
                    entry.tk_kills += 1;
                }
                if (flags.HasFlag(XLRUpdateFlags.weapon_fired))
                {
                    entry.shots_total += 1;
                }

                entry.score = math_score(entry);

                xlr_players[GUID] = entry;
            }
 public float math_precision(XLREntry entry)
 {
     return((entry.shots_total == 0) ?
            0 :
            (entry.kills - entry.tk_kills) / (float)entry.shots_total);
 }
 public float math_score(XLREntry entry)
 {
     return(math_kd(entry) * math_precision(entry) * 100);
 }
 public float math_kd(XLREntry entry)
 {
     return(entry.kills / (float)((entry.deaths == 0) ? 1 : entry.deaths));
 }