Stats File
When ServerStats and SaveStats are on in NHQHeartbeat.ini, the heartbeat DLL saves each round to
NHQStats\YYYY-MM-DD-HHMMSS-RoundId.json in the game folder. The file holds the same JSON sent to this site, Windows-1252 encoded.
Weapon and ammo ids are positions in weapon.def and ammo.def. Vehicle and object ids are items.def ids
less 100000. Each game and mod has its own ids. Def Files shows how to read their names.
Payload
| Key | Type | Notes |
|---|---|---|
ServerName |
String | May include <CF> color tags |
GameType |
String |
|
MissionName |
String | May include <CF> color tags |
MissionFile |
String | |
Mod |
String |
|
Exp |
String | jox01 Joint Operations: Escalation |
Dedicated |
String | Y or N |
AdditionalData |
Object | Host settings and round result |
PlayerData |
Array | One per player |
TeamData |
Object | Blue_ is team 1, Red_ is team 2 |
EventData |
Array | One per kill, in order |
AdditionalData
| Key | Type | Notes |
|---|---|---|
Replay |
Integer | Mission replay |
Delay |
Integer | Start delay |
Respawn |
Integer | Respawn delay |
TimeLimit |
Integer | |
KillLimit |
Integer | |
MaxScore |
Integer | |
UseLineUpQueue |
Integer | |
LineUpQueueSize |
Integer | |
MaxFFKills |
Integer | |
TakeoverTime |
Integer | |
KOTHTime |
Integer | |
TeamFF |
Integer | 1 or 0 |
FriendlyTag |
Integer | 1 or 0 |
FFWarning |
Integer | 1 or 0 |
TeamChoose |
Integer | 1 or 0 |
ClaymorePref |
Integer | 1 or 0 |
Tracers |
String | Y or N |
Spectators |
String | Y or N |
Version |
String | |
GateTag |
String | NovaWorld gate tag |
QuantumSize |
Integer | SendRate (32Hz, 64Hz, etc.) |
Terrain |
String | Terrain name with or without .trn |
RoundId |
String | 16 hex characters |
Winner |
Integer |
|
RoundTime |
Integer | Milliseconds from the mission load or host start |
EndReason |
Integer |
|
EventsDropped |
Integer | Kills left out of a full EventData |
PendingDropped |
Integer | Killing hits lost from a full pending table |
PlayersDropped |
Integer | Departed players left out of PlayerData |
WeaponsDropped |
Integer | Tallies refused by a full Weapons |
VehiclesDropped |
Integer | Tallies refused by a full Vehicles |
LoadoutsDropped |
Integer | Changes refused by a full Loadouts |
TrackPointsDropped |
Integer | Points refused by a full Track |
PlayerData
| Key | Type | Notes |
|---|---|---|
Name |
String | |
RecruitId |
Integer | Entry number in the game's player table |
Team |
Integer |
|
Spectator |
Integer | 1 or 0 |
Class |
Integer | DFX sends 0. DFX2 sends 7 or 8
|
Kills |
Integer | Enemy kills. A team change resets it |
Deaths |
Integer | A team change resets it |
Weapon |
Integer | Weapon id in hand. 0 after leaving |
PCID |
String | |
IPAddress |
String | IP:Port |
Version |
String | Client game version |
JoinId |
Integer | New at each join and mission load |
Departed |
Integer | 1 or 0 |
JoinTime |
Integer | Milliseconds from the round start |
LeaveTime |
Integer | Milliseconds from the round start. 0 if present |
KillsVehicle |
Integer | Enemy kills by run-over or destruction blast |
KillsExplosive |
Integer | Other enemy kills by explosives, miniguns included |
SpectateTime |
Integer | Seconds |
TeamTime |
Object | Seconds, keyed by team id |
ClassTime |
Object | Seconds, keyed by class id |
CarryTime |
Integer | Seconds carrying a flag |
ZoneTime |
Integer | Seconds, current |
ZoneTimeTotal |
Integer | Seconds |
DriverTime |
Integer | Seconds |
PassengerTime |
Integer | Seconds |
GunnerTime |
Integer | Seconds |
DamageDealt |
Integer | To enemies |
DamageTaken |
Integer | From any source |
DamageTeam |
Integer | To teammates |
Stats |
Object | A team change resets it |
Weapons |
Array | One per weapon, seat, vehicle, and mount |
Loadouts |
Array | One per loadout held 10 seconds or more |
Vehicles |
Array | One per vehicle |
Track |
Array | Arrays of [seconds, x, y, z, heading, seat] points, sampled each second and kept where the path turns. A death, a leave, or a sampling gap starts a new array
|
PlayerData.Stats
| Key | Type | Notes |
|---|---|---|
ShotsFired |
Integer | |
HitsTaken |
Integer | |
HitsLanded |
Integer | |
Murders |
Integer | Team kills |
Suicides |
Integer | |
MedicHeals |
Integer | |
MedicSaves |
Integer | |
FlagsReturned |
Integer | |
Flags |
Integer | Captures |
FlagPickups |
Integer | |
Targets |
Integer | Destroyed |
PspTakeovers |
Integer | |
Takeovers |
Integer | CP and LFP |
MultiKills |
Integer | |
Headshots |
Integer | |
KnifeKills |
Integer | |
FlagCarrierKills |
Integer | |
ZoneAttackKills |
Integer | Enemy kills of a victim in the neutral zone |
ZoneDefendKills |
Integer | Enemy kills from inside the neutral zone |
FriendlyZoneDefendKills |
Integer | Enemy kills of a victim in the killer's team zone |
FriendlyZonePoliceKills |
Integer | Enemy kills from inside the killer's team zone |
EnemyZoneAttackKills |
Integer | Enemy kills of a victim in the victim's team zone |
EnemyZoneSecureKills |
Integer | Enemy kills from inside the victim's team zone |
Assists |
Integer | Experience shares as the scorer's driver or pilot |
Points |
Integer | Experience |
ItemPoints |
Integer | |
AttackZoneTime |
Integer | Seconds in an enemy zone, in whole steps |
DefendZoneTime |
Integer | Seconds in the team's own zone, in whole steps |
RoundResult |
Integer | 2 win or 1 no win |
TimeAlive |
Integer | Seconds |
PlayerData.Weapons
| Key | Type | Notes |
|---|---|---|
Id |
Integer | Weapon id. 65535 for an unknown statid |
Seat |
Integer |
|
Vehicle |
Integer | 0 on foot or at a standalone gun |
Mount |
Integer | Vehicle or gun sat on. 0 on foot |
KillsEnemy |
Integer | |
KillsTeam |
Integer | |
KillsSelf |
Integer | |
Shots |
Integer | |
Damage |
Integer | To enemies |
DamageTeam |
Integer | |
DamageSelf |
Integer | |
HoldTime |
Integer | Seconds in hand |
Parts |
Object | Keyed by part id. Knife, grenade, and blast hits have none
|
PlayerData.Weapons.Parts
| Key | Type | Notes |
|---|---|---|
Hits |
Integer | Enemy hits, the killing hit included |
HitsFatal |
Integer | |
HitsTeam |
Integer | |
Damage |
Integer | From enemy hits |
DamageTeam |
Integer |
PlayerData.Loadouts
| Key | Type | Notes |
|---|---|---|
HoldTime |
Integer | Seconds |
Loadout |
Array | Weapons, each [weapon id, clips, launcher clips]. -1 is the default |
PlayerData.Vehicles
| Key | Type | Notes |
|---|---|---|
Id |
Integer | Vehicle id. 0 for a standalone gun |
Seats |
Object | Keyed by seat code
|
PlayerData.Vehicles.Seats
| Key | Type | Notes |
|---|---|---|
KillsEnemy |
Integer | |
KillsTeam |
Integer | |
KillsSelf |
Integer | |
Shots |
Integer | |
Damage |
Integer | To enemies |
DamageTeam |
Integer | |
DamageSelf |
Integer | |
SeatTime |
Integer | Seconds |
Hits |
Integer | Enemy hits |
HitsTeam |
Integer | |
Roadkills |
Integer | Enemy kills by run-over |
Deaths |
Integer |
TeamData
| Key | Type | Notes |
|---|---|---|
Blue_KillsRed_Kills |
Integer | Enemy kills |
Blue_DeathsRed_Deaths |
Integer | |
Blue_MurdersRed_Murders |
Integer | Team kills |
Blue_SuicidesRed_Suicides |
Integer | |
Blue_FlagsRed_Flags |
Integer | Captures |
Blue_FlagsAvailableRed_FlagsAvailable |
Integer | Enemy flags on the map |
Blue_TargetsRed_Targets |
Integer | Destroyed |
Blue_TargetsAvailableRed_TargetsAvailable |
Integer | Enemy targets on the map |
Blue_ZoneTimeRed_ZoneTime |
Integer | Hold counter |
Blue_ZoneTimeTotalRed_ZoneTimeTotal |
Integer | Seconds, in whole steps |
Blue_PointsRed_Points |
Integer | Experience |
Blue_ScoreRed_Score |
Integer | At the round end |
EventData
| Key | Type | Notes |
|---|---|---|
Time |
Integer | Milliseconds from the round start |
Tick |
Integer | 62 per second |
KillerJoinIdVictimJoinId |
Integer | The player's JoinId. 0 for no killer or an AI victim |
Weapon |
Integer | 65535 for none |
StatId |
Integer | Of the killing hit. 1 for a destruction blast |
Ammo |
Integer | Of the killing hit. 65535 for none |
Cause |
Integer |
|
DestroyedObject |
Integer | Id of the object that exploded, for cause 2. Else 0 |
Part |
Integer | Of the killing hit. 255 for none
|
Type |
Integer | A death with no attacker is 3, with every killer key 0
|
Flags |
Integer | Bits
|
KillerSeatVictimSeat |
Integer |
|
KillerVehicleVictimVehicle |
Integer | 0 on foot or at a standalone gun |
KillerMountVictimMount |
Integer | Vehicle or gun sat on. 0 on foot |
KillerTeamVictimTeam |
Integer |
|
KillerClassVictimClass |
Integer |
|
KillerZoneVictimZone |
Integer | Bits. A flag counts within 20 units
|
Distance |
Number | World units |
KillerPosVictimPos |
Array | [x, y, z] in world units, z up |
KillerHeadingVictimHeading |
Integer | Degrees |