12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- class AnalyticsManagerServer
- {
- const string STAT_DISTANCE = "dist";
- const string STAT_PLAYTIME = "playtime";
- const string STAT_PLAYERS_KILLED = "players_killed";
- const string STAT_INFECTED_KILLED = "infected_killed";
- const string STAT_LONGEST_SURVIVOR_HIT = "longest_survivor_hit";
-
- void OnPlayerConnect(Man player)
- {
- player.StatRegister(STAT_DISTANCE);
- player.StatRegister(STAT_PLAYTIME);
- player.StatRegister(STAT_PLAYERS_KILLED);
- player.StatRegister(STAT_INFECTED_KILLED);
- player.StatRegister(STAT_LONGEST_SURVIVOR_HIT);
- }
-
- void OnPlayerDisconnect(Man player)
- {
- player.StatUpdateByPosition(STAT_DISTANCE);
- player.StatUpdateByTime(STAT_PLAYTIME);
- }
-
- //Entity-Entity hit
- void OnEntityHit(EntityAI source, Man target)
- {
- if (source)
- {
- Man survivor = source.GetHierarchyRootPlayer();
- if (survivor && source.IsWeapon())
- OnPlayerToPlayerHit(survivor, target);
- }
- }
-
- protected void OnPlayerToPlayerHit(Man shooter, Man target)
- {
- float longestHitDistance = shooter.StatGet(STAT_LONGEST_SURVIVOR_HIT);
- float currentDistance = vector.Distance(shooter.GetPosition(), target.GetPosition());
- float distanceUpdate;
-
- if (longestHitDistance < currentDistance)
- distanceUpdate = currentDistance - longestHitDistance;
-
- shooter.StatUpdate(STAT_LONGEST_SURVIVOR_HIT, distanceUpdate);
- }
-
- //Entity-Entity kill
- void OnEntityKilled(Object killer, EntityAI target)
- {
- EntityAI killerEntity = EntityAI.Cast(killer);
- if (killerEntity)
- {
- Man killerSurvivor = killerEntity.GetHierarchyRootPlayer();
- if (killerSurvivor)
- {
- if (target.IsPlayer())
- OnPlayerKilled(killerSurvivor, target);
- else if (target.IsZombie())
- OnInfectedKilled(killerSurvivor, target);
- }
- }
- }
-
- protected void OnPlayerKilled(Man killer, EntityAI target)
- {
- killer.StatUpdate(STAT_PLAYERS_KILLED, 1);
- }
-
- protected void OnInfectedKilled(Man killer, EntityAI target)
- {
- killer.StatUpdate(STAT_INFECTED_KILLED, 1);
- }
- }
|