136 lines
6.3 KiB
SQL
136 lines
6.3 KiB
SQL
-- mw4print MySQL database schema
|
|
-- Tables are created automatically by mw4print on first export.
|
|
-- This file documents the structure for reference.
|
|
--
|
|
-- Prerequisites: create the database first, then configure mw4print.ini:
|
|
--
|
|
-- [MySQLExport]
|
|
-- Enabled=1
|
|
-- Host=192.168.1.100
|
|
-- Port=3306
|
|
-- Database=firestorm_stats
|
|
-- Username=mw4
|
|
-- Password=yourpassword
|
|
-- ExportEvents=0
|
|
--
|
|
-- Run this script manually if you want to pre-create the tables,
|
|
-- or just let mw4print create them on first connect.
|
|
|
|
CREATE TABLE IF NOT EXISTS `match` (
|
|
`match_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`match_time` DATETIME NOT NULL,
|
|
`server_name` VARCHAR(256) NOT NULL DEFAULT '',
|
|
`server_ip` VARCHAR(64) NOT NULL DEFAULT '',
|
|
`map_name` VARCHAR(128) NOT NULL DEFAULT '',
|
|
`scenario_name` VARCHAR(128) NOT NULL DEFAULT '',
|
|
`game_type` INT NOT NULL DEFAULT 0,
|
|
`game_type_name` VARCHAR(64) NOT NULL DEFAULT '',
|
|
`is_team_game` TINYINT(1) NOT NULL DEFAULT 0,
|
|
`player_count` INT NOT NULL DEFAULT 0,
|
|
`team_count` INT NOT NULL DEFAULT 0,
|
|
`team_scores` VARCHAR(64) NOT NULL DEFAULT '', -- comma-separated team totals: t0,t1,...,t7
|
|
`game_length` INT NOT NULL DEFAULT 0,
|
|
`kill_limit` INT NOT NULL DEFAULT 0, -- 0 = no limit
|
|
`respawn_limit` INT NOT NULL DEFAULT 0, -- 0 = no limit
|
|
`friendly_fire` INT NOT NULL DEFAULT 0, -- percentage
|
|
`heat_on` TINYINT(1) NOT NULL DEFAULT 0,
|
|
`armor_mode` TINYINT(1) NOT NULL DEFAULT 0,
|
|
`unlimited_ammo` TINYINT(1) NOT NULL DEFAULT 0,
|
|
`is_night` TINYINT(1) NOT NULL DEFAULT 0,
|
|
`min_tonnage` INT NOT NULL DEFAULT 0,
|
|
`max_tonnage` INT NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (`match_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
|
|
-- game_type values (from GameTypes.h):
|
|
-- 0 StockDestruction 1 StockTeamDestruction
|
|
-- 2 StockAttrition 3 StockTeamAttrition
|
|
-- 4 StockCaptureTheFlag 5 StockKingOfTheHill
|
|
-- 6 StockTeamKingOfTheHill 7 StockTerritories
|
|
-- 8 StockStealTheBacon 9 StockCaptureBase
|
|
-- 10 StockDestroyObjective 11 StockEscort
|
|
-- 12 StockMasterTrial 13 StockSiegeAssault
|
|
-- 14 StockCampaign 15 CustomDestruction
|
|
-- 16 CustomTeamDestruction 17 CustomAttrition
|
|
-- 18 CustomTeamAttrition 19 CustomCaptureTheFlag
|
|
-- 20 CustomKingOfTheHill 21 CustomTeamKingOfTheHill
|
|
-- 22 CustomTerritories 23 CustomStealTheBacon
|
|
-- 24 CustomCaptureBase 25 CustomDestroyObjective
|
|
-- 26 CustomEscort 27 CustomMasterTrial
|
|
-- 28 CustomSiegeAssault 29 CustomCampaign
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS `player_result` (
|
|
`result_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`match_id` INT UNSIGNED NOT NULL,
|
|
`player_name` VARCHAR(64) NOT NULL DEFAULT '',
|
|
`mech_name` VARCHAR(64) NOT NULL DEFAULT '',
|
|
`team` INT NOT NULL DEFAULT 0, -- 0-7; meaningless in FFA (team_count=0)
|
|
`score` INT NOT NULL DEFAULT 0,
|
|
`kills` INT NOT NULL DEFAULT 0,
|
|
`deaths` INT NOT NULL DEFAULT 0,
|
|
`is_bot` TINYINT(1) NOT NULL DEFAULT 0,
|
|
`pilot_decal` INT NOT NULL DEFAULT 0, -- decal index 0-63
|
|
PRIMARY KEY (`result_id`),
|
|
KEY `match_id` (`match_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS `pvp` (
|
|
`pvp_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`match_id` INT UNSIGNED NOT NULL,
|
|
`attacker` VARCHAR(64) NOT NULL DEFAULT '', -- player_name of attacker
|
|
`victim` VARCHAR(64) NOT NULL DEFAULT '', -- player_name of victim
|
|
`kills` INT NOT NULL DEFAULT 0, -- times attacker killed victim
|
|
`score` INT NOT NULL DEFAULT 0, -- score attacker earned from victim
|
|
PRIMARY KEY (`pvp_id`),
|
|
KEY `match_id` (`match_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
|
|
|
|
-- Optional: populated only when ExportEvents=1 in mw4print.ini.
|
|
-- Can generate thousands of rows per match; off by default.
|
|
CREATE TABLE IF NOT EXISTS `event` (
|
|
`event_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`match_id` INT UNSIGNED NOT NULL,
|
|
`event_type` INT NOT NULL DEFAULT 0, -- CBucketManager::Bucket_Type (see below)
|
|
`actor` VARCHAR(64) NOT NULL DEFAULT '',
|
|
`target` VARCHAR(64) NOT NULL DEFAULT '',
|
|
`weapon` INT NOT NULL DEFAULT 0,
|
|
`body_zone` INT NOT NULL DEFAULT 0, -- DamageObject zone (see below)
|
|
`param` INT NOT NULL DEFAULT 0, -- context-dependent value
|
|
PRIMARY KEY (`event_id`),
|
|
KEY `match_id` (`match_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
|
|
-- event_type values (CBucketManager::Bucket_Type):
|
|
-- 0 KILL_LINK 1 DEATH_LINK
|
|
-- 2 KILLS 3 FRIENDLY_KILLS
|
|
-- 4 ENEMY_KILLS 5 KILLS_BY_TONNAGE
|
|
-- 6 FRIENDLY_KILLS_BY_TONNAGE 7 ENEMY_KILLS_BY_TONNAGE
|
|
-- 8 DEATHS 9 SUICIDES
|
|
-- 10 DAMAGE_INFLICT 11 FRIENDLY_DAMAGE_INFLICT
|
|
-- 12 ENEMY_DAMAGE_INFLICT 13 DAMAGE_RECEIVE
|
|
-- 14 FRIENDLY_DAMAGE_RECEIVE 15 ENEMY_DAMAGE_RECEIVE
|
|
-- 16 COMPONENT_KILLS 17 COMPONENT_DEATHS
|
|
-- 18 FRIENDLY_COMPONENT_KILLS 19 FRIENDLY_COMPONENT_DEATHS
|
|
-- 20 ENEMY_COMPONENT_KILLS 21 ENEMY_COMPONENT_DEATHS
|
|
-- 22 DFA 23 SHOTS_HIT
|
|
-- 24 SHOTS_FIRED 25 HEAD_SHOTS
|
|
-- 26 ARM_SHOTS 27 LEG_SHOTS
|
|
-- 28 TORSO_SHOTS 29 KILLS_PC
|
|
-- 30 KILLS_AI 31 BLANK
|
|
-- 32 SHUTDOWN_TIMER 33 OBJECTIVE
|
|
-- 34 OBJECTIVE_CONTESTED 35 OBJECTIVE_UNCONTESTED
|
|
-- 36 FLAGS_TAKEN 37 FLAGS_DROPPED
|
|
-- 38 FLAGS_CAPTURED 39 FLAG_HOLD_TIME
|
|
-- 40 TIME 41 ALIVE_PLAYERS
|
|
-- 42 DEAD_PLAYERS 43 CUSTOM
|
|
-- 44 ENEMY_TURRET_KILLS 45 FRIENDLY_TURRET_KILLS
|
|
-- 46 ENEMY_BUILDING_KILLS 47 FRIENDLY_BUILDING_KILLS
|
|
|
|
-- body_zone values (DamageObject::DamageZone):
|
|
-- 0 LeftLeg 1 RightLeg 2 LeftArm 3 RightArm
|
|
-- 4 RightTorso 5 LeftTorso 6 CenterTorso 7 Head
|
|
-- 8 SpecialZone1 9 SpecialZone2
|