From 05430e32b2e58cfc77a9b9deb24750480b906953 Mon Sep 17 00:00:00 2001
From: Luis Martin Schick The
'
);
}
diff --git a/squad-server/templates/SquadJS-Dashboard-v2.json b/squad-server/templates/SquadJS-Dashboard-v2.json
new file mode 100644
index 00000000..5ac32f03
--- /dev/null
+++ b/squad-server/templates/SquadJS-Dashboard-v2.json
@@ -0,0 +1,3448 @@
+{
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": "-- Grafana --",
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": true,
+ "gnetId": null,
+ "graphTooltip": 2,
+ "id": 7,
+ "iteration": 1614468639214,
+ "links": [],
+ "panels": [
+ {
+ "columnAliases": [],
+ "columnFiltersEnabled": false,
+ "columnWidthHints": [],
+ "columns": [],
+ "compactRowsEnabled": false,
+ "datasource": "MySQL",
+ "datatablePagingType": "simple_numbers",
+ "datatableTheme": "basic_theme",
+ "description": "This panel does not sort top scores. ",
+ "emptyData": false,
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 9,
+ "w": 24,
+ "x": 0,
+ "y": 0
+ },
+ "hoverEnabled": true,
+ "id": 35,
+ "infoEnabled": true,
+ "lengthChangeEnabled": true,
+ "orderColumnEnabled": true,
+ "pagingTypes": [
+ {
+ "text": "Page number buttons only",
+ "value": "numbers"
+ },
+ {
+ "text": "'Previous' and 'Next' buttons only",
+ "value": "simple"
+ },
+ {
+ "text": "'Previous' and 'Next' buttons, plus page numbers",
+ "value": "simple_numbers"
+ },
+ {
+ "text": "'First', 'Previous', 'Next' and 'Last' buttons",
+ "value": "full"
+ },
+ {
+ "text": "'First', 'Previous', 'Next' and 'Last' buttons, plus page numbers",
+ "value": "full_numbers"
+ },
+ {
+ "text": "'First' and 'Last' buttons, plus page numbers",
+ "value": "first_last_numbers"
+ }
+ ],
+ "panelHeight": null,
+ "pluginVersion": "7.1.1",
+ "rowNumbersEnabled": false,
+ "rowsPerPage": 5,
+ "scroll": false,
+ "scrollHeight": "default",
+ "searchEnabled": true,
+ "showCellBorders": false,
+ "showHeader": true,
+ "showRowBorders": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "sortByColumns": [
+ {
+ "columnData": "Kills",
+ "sortMethod": "desc"
+ }
+ ],
+ "sortByColumnsData": [
+ [
+ 3,
+ "desc"
+ ]
+ ],
+ "stripedRowsEnabled": true,
+ "styles": [
+ {
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "splitPattern": "/ /",
+ "thresholds": [],
+ "type": "string",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "format": "table",
+ "group": [],
+ "metricColumn": "none",
+ "rawQuery": true,
+ "rawSql": "SELECT\r\n m.attacker AS \"Steam ID\",\r\n m.attackerName AS \"Name\",\r\n `Wounds`,\r\n `Kills`,\r\n `Deaths`,\r\n `Kills`/`Deaths` AS `K/D`,\r\n `Revives`\r\nFROM `DBLog_Wounds` m\r\nLEFT JOIN (\r\n SELECT\r\n attacker,\r\n COUNT(*) AS `Wounds`\r\n FROM `DBLog_Wounds`\r\n WHERE\r\n $__timeFilter(time) AND\r\n server = $SERVER_ID\r\n GROUP BY attacker\r\n) w ON w.attacker = m.attacker\r\nLEFT JOIN (\r\n SELECT\r\n attacker,\r\n COUNT(*) AS `Kills`\r\n FROM `DBLog_Deaths`\r\n WHERE\r\n $__timeFilter(time) AND\r\n server = $SERVER_ID\r\n GROUP BY attacker\r\n) k ON k.attacker = m.attacker\r\nLEFT JOIN (\r\n SELECT\r\n victim,\r\n COUNT(*) AS `Deaths`\r\n FROM `DBLog_Deaths`\r\n WHERE\r\n $__timeFilter(time) AND\r\n server = $SERVER_ID\r\n GROUP BY victim\r\n) d ON d.victim = m.attacker\r\nLEFT JOIN (\r\n SELECT\r\n reviver,\r\n COUNT(*) AS `Revives`\r\n FROM `DBLog_Revives`\r\n WHERE\r\n $__timeFilter(time) AND\r\n server = $SERVER_ID\r\n GROUP BY reviver\r\n) r ON r.reviver = m.attacker\r\n WHERE\r\n $__timeFilter(time) AND\r\n server = $SERVER_ID \r\nGROUP BY m.attacker\r\nHAVING `K/D` IS NOT NULL;",
+ "refId": "A",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ }
+ ]
+ ],
+ "table": "DBLog_TickRates",
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "themeOptions": {
+ "dark": "./styles/dark.scss",
+ "light": "./styles/light.scss"
+ },
+ "themes": [
+ {
+ "disabled": false,
+ "text": "Basic",
+ "value": "basic_theme"
+ },
+ {
+ "disabled": true,
+ "text": "Bootstrap",
+ "value": "bootstrap_theme"
+ },
+ {
+ "disabled": true,
+ "text": "Foundation",
+ "value": "foundation_theme"
+ },
+ {
+ "disabled": true,
+ "text": "ThemeRoller",
+ "value": "themeroller_theme"
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": " Only for search in the top scores - This panel does not sort top scores. ",
+ "transform": "table",
+ "type": "briangann-datatable-panel"
+ },
+ {
+ "columns": [],
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 14,
+ "w": 24,
+ "x": 0,
+ "y": 9
+ },
+ "id": 32,
+ "pageSize": null,
+ "showHeader": true,
+ "sort": {
+ "col": 3,
+ "desc": true
+ },
+ "styles": [],
+ "targets": [
+ {
+ "format": "table",
+ "group": [],
+ "metricColumn": "none",
+ "rawQuery": true,
+ "rawSql": "SELECT\r\n m.attacker AS \"Steam ID\",\r\n m.attackerName AS \"Name\",\r\n `Wounds`,\r\n `Kills`,\r\n `Deaths`,\r\n `Kills`/`Deaths` AS `K/D`,\r\n `Revives`\r\nFROM `DBLog_Wounds` m\r\nLEFT JOIN (\r\n SELECT\r\n attacker,\r\n COUNT(*) AS `Wounds`\r\n FROM `DBLog_Wounds`\r\n WHERE\r\n $__timeFilter(time) AND\r\n server = $SERVER_ID\r\n GROUP BY attacker\r\n) w ON w.attacker = m.attacker\r\nLEFT JOIN (\r\n SELECT\r\n attacker,\r\n COUNT(*) AS `Kills`\r\n FROM `DBLog_Deaths`\r\n WHERE\r\n $__timeFilter(time) AND\r\n server = $SERVER_ID\r\n GROUP BY attacker\r\n) k ON k.attacker = m.attacker\r\nLEFT JOIN (\r\n SELECT\r\n victim,\r\n COUNT(*) AS `Deaths`\r\n FROM `DBLog_Deaths`\r\n WHERE\r\n $__timeFilter(time) AND\r\n server = $SERVER_ID\r\n GROUP BY victim\r\n) d ON d.victim = m.attacker\r\nLEFT JOIN (\r\n SELECT\r\n reviver,\r\n COUNT(*) AS `Revives`\r\n FROM `DBLog_Revives`\r\n WHERE\r\n $__timeFilter(time) AND\r\n server = $SERVER_ID\r\n GROUP BY reviver\r\n) r ON r.reviver = m.attacker\r\n WHERE\r\n $__timeFilter(time) AND\r\n server = $SERVER_ID \r\nGROUP BY m.attacker\r\nHAVING `K/D` IS NOT NULL;",
+ "refId": "B",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "column"
+ }
+ ]
+ ],
+ "timeColumn": "time",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Top Scorers",
+ "transform": "table",
+ "type": "table-old"
+ },
+ {
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "custom": {},
+ "displayName": "",
+ "mappings": [],
+ "max": 60,
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "dark-red",
+ "value": null
+ },
+ {
+ "color": "yellow",
+ "value": 15
+ },
+ {
+ "color": "dark-green",
+ "value": 20
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 6,
+ "x": 0,
+ "y": 23
+ },
+ "id": 16,
+ "options": {
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "mean"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true
+ },
+ "pluginVersion": "7.1.4",
+ "targets": [
+ {
+ "format": "time_series",
+ "group": [],
+ "groupBy": [],
+ "measurement": "tick_rate",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT LAST(\"tick_rate\") FROM \"DBLog_TickRates\" WHERE server = '$SERVER_ID'",
+ "rawQuery": true,
+ "rawSql": "SELECT\n time AS \"time\",\n tickRate\nFROM DBLog_TickRates\nWHERE\n $__timeFilter(time) AND\n server = \"$SERVER_ID\"\nORDER BY time DESC",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "tick_rate"
+ ],
+ "type": "column"
+ }
+ ]
+ ],
+ "table": "DBLog_TickRates",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ },
+ {
+ "datatype": "int",
+ "name": "",
+ "params": [
+ "server",
+ "=",
+ "$SERVER"
+ ],
+ "type": "expression"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Current Tick Rate",
+ "type": "gauge"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 18,
+ "x": 6,
+ "y": 23
+ },
+ "hiddenSeries": false,
+ "id": 2,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pluginVersion": "7.1.4",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "5m"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "tick_rate",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT \n mean(\"tick_rate\") \nFROM \"DBLog_TickRates\" \nWHERE \n $timeFilter AND\n server = '$SERVER_ID'\nGROUP BY time($INTERVAL) fill(null)",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n avg(tickRate) AS \"tick_rate\"\nFROM DBLog_TickRates\nWHERE\n $__timeFilter(time) AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "tick_rate"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "avg"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "tick_rate"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_TickRates",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "custom",
+ "fill": false,
+ "fillColor": "rgba(50, 116, 217, 0.2)",
+ "line": true,
+ "lineColor": "#F2495C",
+ "op": "lt",
+ "value": 15,
+ "yaxis": "left"
+ },
+ {
+ "colorMode": "custom",
+ "fill": false,
+ "fillColor": "rgba(50, 116, 217, 0.2)",
+ "line": true,
+ "lineColor": "#FADE2A",
+ "op": "lt",
+ "value": 20,
+ "yaxis": "left"
+ }
+ ],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Tick Rate",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "60",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "custom": {},
+ "displayName": "",
+ "mappings": [],
+ "max": 80,
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "orange",
+ "value": null
+ },
+ {
+ "color": "green",
+ "value": 50
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 6,
+ "x": 0,
+ "y": 31
+ },
+ "id": 27,
+ "options": {
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "mean"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true
+ },
+ "pluginVersion": "7.1.4",
+ "targets": [
+ {
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [],
+ "measurement": "tick_rate",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT LAST(\"player_count\") FROM \"DBLog_PlayerCounts\" WHERE server = '$SERVER_ID'",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n players AS \"Player Count\"\nFROM DBLog_PlayerCounts\nWHERE\n $__timeFilter(time) AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval) DESC\nLIMIT 1",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "player_count"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "Player Count"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_PlayerCounts",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Current Player Count",
+ "type": "gauge"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 8,
+ "w": 18,
+ "x": 6,
+ "y": 31
+ },
+ "hiddenSeries": false,
+ "id": 28,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pluginVersion": "7.1.4",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "5m"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "tick_rate",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT \n MEAN(\"player_count\") \nFROM \"DBLog_PlayerCounts\" \nWHERE \n $timeFilter AND\n server = '$SERVER_ID'\nGROUP BY time($INTERVAL) fill(null)",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n avg(players) AS \"player_count\"\nFROM DBLog_PlayerCounts\nWHERE\n $__timeFilter(time) AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "player_count"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "avg"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "player_count"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_PlayerCounts",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "thresholds": [
+ {
+ "colorMode": "custom",
+ "fill": false,
+ "fillColor": "rgba(50, 116, 217, 0.2)",
+ "line": true,
+ "lineColor": "#FF9830",
+ "op": "lt",
+ "value": 50,
+ "yaxis": "left"
+ }
+ ],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Player Count",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": "80",
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 6,
+ "x": 0,
+ "y": 39
+ },
+ "id": 12,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": " Wounds",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true,
+ "ymax": null,
+ "ymin": null
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT COUNT(\"victimName\") \nFROM DBLog_Wounds\nWHERE \n $timeFilter AND\n server = '$SERVER_ID'",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"id\"\nFROM DBLog_Wounds\nWHERE\n $__timeFilter(time) AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "id"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Wounds",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Wounded in Time Period",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 6,
+ "x": 6,
+ "y": 39
+ },
+ "id": 13,
+ "interval": null,
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": " Deaths",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true,
+ "ymax": null,
+ "ymin": null
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT \n count(\"victimName\") \nFROM \"DBLog_Deaths\"\nWHERE \n $timeFilter AND\n server = '$SERVER_ID'",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"id\"\nFROM DBLog_Deaths\nWHERE\n $__timeFilter(time) AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "id"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Deaths",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Deaths in Time Period",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "avg"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 6,
+ "x": 12,
+ "y": 39
+ },
+ "id": 10,
+ "interval": "",
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": " TKs",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true,
+ "ymax": null,
+ "ymin": null
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [],
+ "measurement": "player_wound",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT \n count(\"victimName\") \nFROM \"DBLog_Wounds\"\nWHERE \n teamkill = true AND\n $timeFilter AND\n server = '$SERVER_ID'",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"id\"\nFROM DBLog_Wounds\nWHERE\n $__timeFilter(time) AND\n teamkill = '1' AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "id"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Wounds",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ },
+ {
+ "datatype": "tinyint",
+ "name": "",
+ "params": [
+ "teamkill",
+ "=",
+ "'1'"
+ ],
+ "type": "expression"
+ }
+ ]
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "TKs in Time Period",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "#299c46",
+ "rgba(237, 129, 40, 0.89)",
+ "#d44a3a"
+ ],
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "format": "none",
+ "gauge": {
+ "maxValue": 100,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 6,
+ "x": 18,
+ "y": 39
+ },
+ "id": 14,
+ "interval": "",
+ "links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
+ "maxDataPoints": 100,
+ "nullPointMode": "connected",
+ "nullText": null,
+ "postfix": " Revives",
+ "postfixFontSize": "50%",
+ "prefix": "",
+ "prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true,
+ "ymax": null,
+ "ymin": null
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [],
+ "measurement": "revive",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT count(\"victimName\") FROM \"DBLog_Revives\" WHERE $timeFilter AND server = '$SERVER_ID'",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"id\"\nFROM DBLog_Revives\nWHERE\n $__timeFilter(time) AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "id"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Revives",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "thresholds": "",
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Revives in Time Period",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "columns": [],
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 13,
+ "w": 24,
+ "x": 0,
+ "y": 43
+ },
+ "id": 4,
+ "pageSize": null,
+ "showHeader": true,
+ "sort": {
+ "col": 0,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "",
+ "align": "auto",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "decimals": 2,
+ "mappingType": 1,
+ "pattern": "Time",
+ "thresholds": [],
+ "type": "date",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "format": "table",
+ "group": [],
+ "metricColumn": "none",
+ "rawQuery": true,
+ "rawSql": "SELECT\n a.time AS \"Time\",\n a.attacker AS \"Attacker\",\n a.attackerName AS \"Attacker Name\",\n a.weapon AS \"Weapon\",\n a.victim AS \"Victim\",\n a.victimName AS \"Victim Name\",\n Total AS \"Total in Time Frame\"\nFROM DBLog_Wounds a\nJOIN\n (\n SELECT\n attacker,\n COUNT(*) AS \"Total\"\n FROM DBLog_Wounds\n WHERE \n $__timeFilter(time) AND\n server = $SERVER_ID AND\n teamkill = true\n GROUP BY attacker\n ) AS b\n ON a.attacker = b.attacker\nWHERE \n $__timeFilter(time) AND\n server = $SERVER_ID AND\n teamkill = true AND\n server = $SERVER_ID\nORDER BY time DESC\nLIMIT 30;",
+ "refId": "B",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "column"
+ }
+ ]
+ ],
+ "timeColumn": "time",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Recent Teamkills",
+ "transform": "table",
+ "type": "table-old"
+ },
+ {
+ "aliasColors": {},
+ "breakPoint": "50%",
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "fontSize": "80%",
+ "format": "short",
+ "gridPos": {
+ "h": 9,
+ "w": 6,
+ "x": 0,
+ "y": 56
+ },
+ "id": 20,
+ "interval": null,
+ "legend": {
+ "percentage": true,
+ "show": true,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [],
+ "maxDataPoints": 3,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "alias": "Non-Teamkills",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT \n COUNT(\"victimName\") \nFROM \"DBLog_Wounds\" \nWHERE \n $timeFilter AND\n server = '$SERVER_ID' AND\n teamkill = false",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"Non-Teamkill\"\nFROM DBLog_Wounds\nWHERE\n $__timeFilter(time) AND\n teamkill = 0 AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "Non-Teamkill"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Wounds",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ },
+ {
+ "datatype": "tinyint",
+ "name": "",
+ "params": [
+ "teamkill",
+ "=",
+ "0"
+ ],
+ "type": "expression"
+ }
+ ]
+ },
+ {
+ "alias": "Teamkills",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT \n COUNT(\"victimName\") \nFROM \"DBLog_Wounds\" \nWHERE \n $timeFilter AND\n server = '$SERVER_ID' AND\n teamkill = true",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"Teamkill\"\nFROM DBLog_Wounds\nWHERE\n $__timeFilter(time) AND\n teamkill = '1' AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "Teamkill"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Wounds",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ },
+ {
+ "datatype": "tinyint",
+ "name": "",
+ "params": [
+ "teamkill",
+ "=",
+ "'1'"
+ ],
+ "type": "expression"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Non-Teamkills vs Teamkills (Wounds)",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 9,
+ "w": 18,
+ "x": 6,
+ "y": 56
+ },
+ "hiddenSeries": false,
+ "id": 29,
+ "interval": "2m",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pluginVersion": "7.1.4",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Players Wounded",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "0"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "player_wound",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT count(\"victimName\") FROM \"DBLog_Wounds\" WHERE $timeFilter AND server = '$SERVER_ID' GROUP BY time($INTERVAL) fill(0)",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"All\"\nFROM DBLog_Wounds\nWHERE\n $__timeFilter(time) AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "All"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Wounds",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ },
+ {
+ "alias": "Players Wounded By Team 1",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "0"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "player_die",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT count(\"victimName\") FROM \"DBLog_Wounds\" WHERE $timeFilter AND server = '$SERVER_ID' AND attackerTeamID=1 GROUP BY time($INTERVAL) fill(0)",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"Team 1\"\nFROM DBLog_Wounds\nWHERE\n $__timeFilter(time) AND\n attackerTeamID = 1 AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "Team 1"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Wounds",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ },
+ {
+ "datatype": "int",
+ "name": "",
+ "params": [
+ "attackerTeamID",
+ "=",
+ "1"
+ ],
+ "type": "expression"
+ }
+ ]
+ },
+ {
+ "alias": "Players Wounded By Team 2",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "0"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "player_die",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT count(\"victimName\") FROM \"DBLog_Wounds\" WHERE $timeFilter AND server = '$SERVER_ID' AND attackerTeamID=2 GROUP BY time($INTERVAL) fill(0)",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"Team 2\"\nFROM DBLog_Wounds\nWHERE\n $__timeFilter(time) AND\n attackerTeamID = 2 AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "Team 2"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Wounds",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ },
+ {
+ "datatype": "int",
+ "name": "",
+ "params": [
+ "attackerTeamID",
+ "=",
+ "2"
+ ],
+ "type": "expression"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Wounds Per Minutes",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "breakPoint": "50%",
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "fontSize": "80%",
+ "format": "short",
+ "gridPos": {
+ "h": 9,
+ "w": 6,
+ "x": 0,
+ "y": 65
+ },
+ "id": 18,
+ "interval": null,
+ "legend": {
+ "header": "",
+ "percentage": true,
+ "show": true,
+ "sideWidth": null,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [],
+ "maxDataPoints": 3,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "alias": "Deaths",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "player_die",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT \n COUNT(\"victimName\") \nFROM \"DBLog_Deaths\" \nWHERE \n $timeFilter ",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(woundTime,$__interval),\n count(id) AS \"Deaths\"\nFROM DBLog_Deaths\nWHERE\n $__timeFilter(woundTime) AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(woundTime,$__interval)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "Deaths"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Deaths",
+ "tags": [],
+ "timeColumn": "woundTime",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ },
+ {
+ "alias": "Revives",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT \n COUNT(\"victimName\") \nFROM \"DBLog_Revives\" \nWHERE \n $timeFilter ",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(woundTime,$__interval),\n count(id) AS \"Revives\"\nFROM DBLog_Revives\nWHERE\n $__timeFilter(woundTime) AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(woundTime,$__interval)",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "Revives"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Revives",
+ "tags": [],
+ "timeColumn": "woundTime",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Deaths vs Revives",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 9,
+ "w": 18,
+ "x": 6,
+ "y": 65
+ },
+ "hiddenSeries": false,
+ "id": 6,
+ "interval": "2m",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pluginVersion": "7.1.4",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Players Killed",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "0"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "player_wound",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT count(\"victimName\") FROM \"DBLog_Deaths\" WHERE $timeFilter AND server = '$SERVER_ID' GROUP BY time($INTERVAL) fill(0)",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"All\"\nFROM DBLog_Deaths\nWHERE\n $__timeFilter(time) AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "All"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Deaths",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ },
+ {
+ "alias": "Players Killed By Team 1",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "0"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "player_die",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT count(\"victimName\") FROM \"DBLog_Deaths\" WHERE $timeFilter AND server = '$SERVER_ID' AND attackerTeamID=1 GROUP BY time($INTERVAL) fill(0)",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"Team 1\"\nFROM DBLog_Deaths\nWHERE\n $__timeFilter(time) AND\n attackerTeamID = 1 AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "Team 1"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Deaths",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ },
+ {
+ "datatype": "int",
+ "name": "",
+ "params": [
+ "attackerTeamID",
+ "=",
+ "1"
+ ],
+ "type": "expression"
+ }
+ ]
+ },
+ {
+ "alias": "Players Killed By Team 2",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "0"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "player_die",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT count(\"victimName\") FROM \"DBLog_Deaths\" WHERE $timeFilter AND server = '$SERVER_ID' AND attackerTeamID=2 GROUP BY time($INTERVAL) fill(0)",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"Team 2\"\nFROM DBLog_Deaths\nWHERE\n $__timeFilter(time) AND\n attackerTeamID = 2 AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "Team 2"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Deaths",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ },
+ {
+ "datatype": "int",
+ "name": "",
+ "params": [
+ "attackerTeamID",
+ "=",
+ "2"
+ ],
+ "type": "expression"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Kills Per Minutes",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "aliasColors": {},
+ "breakPoint": "50%",
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "fontSize": "80%",
+ "format": "short",
+ "gridPos": {
+ "h": 9,
+ "w": 6,
+ "x": 0,
+ "y": 74
+ },
+ "id": 31,
+ "interval": null,
+ "legend": {
+ "percentage": true,
+ "show": true,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [],
+ "maxDataPoints": 3,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "alias": "Team 1 Kills",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT count(\"victimName\") FROM \"DBLog_Deaths\" WHERE $timeFilter AND server = '$SERVER_ID' AND attackerTeamID=1",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"Team 1\"\nFROM DBLog_Wounds\nWHERE\n $__timeFilter(time) AND\n attackerTeamID = 1 AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "Team 1"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Wounds",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ },
+ {
+ "datatype": "int",
+ "name": "",
+ "params": [
+ "attackerTeamID",
+ "=",
+ "1"
+ ],
+ "type": "expression"
+ }
+ ]
+ },
+ {
+ "alias": "Team 2 Kills",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT count(\"victimName\") FROM \"DBLog_Deaths\" WHERE $timeFilter AND server = '$SERVER_ID' AND attackerTeamID=2",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"Team 2\"\nFROM DBLog_Wounds\nWHERE\n $__timeFilter(time) AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "Team 2"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Wounds",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Team 1 vs Team 2",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "fill": 1,
+ "fillGradient": 0,
+ "gridPos": {
+ "h": 9,
+ "w": 18,
+ "x": 6,
+ "y": 74
+ },
+ "hiddenSeries": false,
+ "id": 8,
+ "interval": "2m",
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "nullPointMode": "null",
+ "percentage": false,
+ "pluginVersion": "7.1.4",
+ "pointradius": 2,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "alias": "Revives",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "0"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "revive",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT count(\"victimName\") FROM \"DBLog_Revives\" WHERE $timeFilter AND server = '$SERVER_ID' GROUP BY time($INTERVAL) fill(0)",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"All\"\nFROM DBLog_Revives\nWHERE\n $__timeFilter(time) AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "A",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "All"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Revives",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ },
+ {
+ "alias": "Revives",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "0"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "revive",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT count(\"victimName\") FROM \"DBLog_Revives\" WHERE $timeFilter AND server = '$SERVER_ID' AND reviverTeamID = 1 GROUP BY time($INTERVAL) fill(0)",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"Team 1\"\nFROM DBLog_Revives\nWHERE\n $__timeFilter(time) AND\n victimTeamID = 1 AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "Team 1"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Revives",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ },
+ {
+ "datatype": "int",
+ "name": "",
+ "params": [
+ "victimTeamID",
+ "=",
+ "1"
+ ],
+ "type": "expression"
+ }
+ ]
+ },
+ {
+ "alias": "Revives",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "0"
+ ],
+ "type": "fill"
+ }
+ ],
+ "measurement": "revive",
+ "metricColumn": "none",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT count(\"victimName\") FROM \"DBLog_Revives\" WHERE $timeFilter AND server = '$SERVER_ID' AND reviverTeamID = 2 GROUP BY time($INTERVAL) fill(0)",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n count(id) AS \"Team 2\"\nFROM DBLog_Revives\nWHERE\n $__timeFilter(time) AND\n victimTeamID = 2 AND\n server = \"$SERVER_ID\"\nGROUP BY 1\nORDER BY $__timeGroup(time,$__interval)",
+ "refId": "C",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "Team 2"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Revives",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ },
+ {
+ "datatype": "int",
+ "name": "",
+ "params": [
+ "victimTeamID",
+ "=",
+ "2"
+ ],
+ "type": "expression"
+ }
+ ]
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeRegions": [],
+ "timeShift": null,
+ "title": "Revives Per Minutes",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ],
+ "yaxis": {
+ "align": false,
+ "alignLevel": null
+ }
+ },
+ {
+ "columns": [],
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "fontSize": "100%",
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 83
+ },
+ "id": 22,
+ "pageSize": null,
+ "showHeader": true,
+ "sort": {
+ "col": 2,
+ "desc": true
+ },
+ "styles": [
+ {
+ "alias": "Time",
+ "align": "auto",
+ "dateFormat": "YYYY-MM-DD HH:mm:ss",
+ "pattern": "Time",
+ "type": "date"
+ },
+ {
+ "alias": "",
+ "align": "auto",
+ "colorMode": null,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "decimals": 2,
+ "pattern": "/.*/",
+ "thresholds": [],
+ "type": "number",
+ "unit": "short"
+ }
+ ],
+ "targets": [
+ {
+ "format": "table",
+ "group": [],
+ "metricColumn": "none",
+ "rawQuery": true,
+ "rawSql": "SELECT\n layerClassname as \"Layer\",\n startTime AS \"Start Time\",\n endTime AS \"End Time\"\nFROM `DBLog_Matches`\nWHERE \n (\n $__timeFilter(startTime) OR \n $__timeFilter(endTime) OR\n endTime IS NULL\n ) AND \n server = $SERVER_ID \nORDER BY startTime DESC;",
+ "refId": "A",
+ "select": [
+ [
+ {
+ "params": [
+ "value"
+ ],
+ "type": "column"
+ }
+ ]
+ ],
+ "timeColumn": "time",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Matches",
+ "transform": "table",
+ "type": "table-old"
+ },
+ {
+ "aliasColors": {},
+ "breakPoint": "50%",
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "fontSize": "80%",
+ "format": "short",
+ "gridPos": {
+ "h": 8,
+ "w": 6,
+ "x": 12,
+ "y": 83
+ },
+ "id": 25,
+ "interval": null,
+ "legend": {
+ "percentage": true,
+ "show": true,
+ "sort": "current",
+ "sortDesc": true,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [],
+ "maxDataPoints": 3,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "format": "time_series",
+ "group": [],
+ "metricColumn": "layer",
+ "rawQuery": true,
+ "rawSql": "SELECT\n layerClassname AS metric,\n COUNT(*),\n startTime AS time\nFROM `DBLog_Matches`\nWHERE\n (\n $__timeFilter(startTime) OR \n $__timeFilter(endTime) OR\n endTime IS NULL\n ) AND \n server = $SERVER_ID \nGROUP BY layerClassname",
+ "refId": "A",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ }
+ ]
+ ],
+ "table": "game",
+ "timeColumn": "startTime",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Layers",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {},
+ "breakPoint": "50%",
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": 0
+ },
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {}
+ },
+ "overrides": []
+ },
+ "fontSize": "80%",
+ "format": "short",
+ "gridPos": {
+ "h": 8,
+ "w": 6,
+ "x": 18,
+ "y": 83
+ },
+ "id": 24,
+ "interval": null,
+ "legend": {
+ "percentage": true,
+ "show": true,
+ "values": true
+ },
+ "legendType": "Under graph",
+ "links": [],
+ "maxDataPoints": 3,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "format": "time_series",
+ "group": [],
+ "metricColumn": "layer",
+ "rawQuery": true,
+ "rawSql": "SELECT\n mapClassname AS metric,\n COUNT(*),\n startTime AS time\nFROM `DBLog_Matches`\nWHERE\n (\n $__timeFilter(startTime) OR \n $__timeFilter(endTime) OR\n endTime IS NULL\n ) AND \n server = $SERVER_ID \nGROUP BY mapClassname",
+ "refId": "A",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ }
+ ]
+ ],
+ "table": "game",
+ "timeColumn": "startTime",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Maps",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ },
+ {
+ "aliasColors": {},
+ "breakPoint": "50%",
+ "cacheTimeout": null,
+ "combine": {
+ "label": "Others",
+ "threshold": "0.01"
+ },
+ "datasource": "MySQL",
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "align": null
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ }
+ },
+ "overrides": []
+ },
+ "fontSize": "80%",
+ "format": "short",
+ "gridPos": {
+ "h": 10,
+ "w": 12,
+ "x": 0,
+ "y": 91
+ },
+ "id": 33,
+ "interval": null,
+ "legend": {
+ "percentage": true,
+ "show": true,
+ "values": true
+ },
+ "legendType": "Right side",
+ "links": [],
+ "maxDataPoints": 3,
+ "nullPointMode": "connected",
+ "pieType": "pie",
+ "pluginVersion": "7.1.0",
+ "strokeWidth": 1,
+ "targets": [
+ {
+ "alias": "Non-Teamkills",
+ "format": "time_series",
+ "group": [
+ {
+ "params": [
+ "$__interval",
+ "none"
+ ],
+ "type": "time"
+ }
+ ],
+ "groupBy": [
+ {
+ "params": [
+ "$__interval"
+ ],
+ "type": "time"
+ },
+ {
+ "params": [
+ "null"
+ ],
+ "type": "fill"
+ }
+ ],
+ "metricColumn": "weapon",
+ "orderByTime": "ASC",
+ "policy": "default",
+ "query": "SELECT \n COUNT(\"victimName\") \nFROM \"DBLog_Wounds\" \nWHERE \n $timeFilter AND\n server = '$SERVER_ID' AND\n teamkill = false",
+ "rawQuery": true,
+ "rawSql": "SELECT\n $__timeGroupAlias(time,$__interval),\n weapon AS metric,\n count(id) AS \"Wounds\"\nFROM DBLog_Wounds\nWHERE\n $__timeFilter(time) AND\n server = \"$SERVER_ID\"\nGROUP BY 2\nORDER BY count(id) DESC",
+ "refId": "B",
+ "resultFormat": "time_series",
+ "select": [
+ [
+ {
+ "params": [
+ "id"
+ ],
+ "type": "column"
+ },
+ {
+ "params": [
+ "count"
+ ],
+ "type": "aggregate"
+ },
+ {
+ "params": [
+ "Wounds"
+ ],
+ "type": "alias"
+ }
+ ]
+ ],
+ "table": "DBLog_Wounds",
+ "tags": [],
+ "timeColumn": "time",
+ "timeColumnType": "timestamp",
+ "where": [
+ {
+ "name": "$__timeFilter",
+ "params": [],
+ "type": "macro"
+ }
+ ]
+ }
+ ],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Weapons",
+ "type": "grafana-piechart-panel",
+ "valueName": "current"
+ }
+ ],
+ "refresh": false,
+ "schemaVersion": 26,
+ "style": "dark",
+ "tags": [],
+ "templating": {
+ "list": [
+ {
+ "allValue": null,
+ "current": {
+ "selected": true,
+ "text": "1",
+ "value": "1"
+ },
+ "hide": 0,
+ "includeAll": false,
+ "label": "Server",
+ "multi": false,
+ "name": "SERVER_ID",
+ "options": [
+ {
+ "selected": true,
+ "text": "1",
+ "value": "1"
+ },
+ {
+ "selected": false,
+ "text": "2",
+ "value": "2"
+ }
+ ],
+ "query": "1,2",
+ "queryValue": "",
+ "skipUrlSync": false,
+ "type": "custom"
+ },
+ {
+ "auto": false,
+ "auto_count": 30,
+ "auto_min": "10s",
+ "current": {
+ "selected": false,
+ "text": "1m",
+ "value": "1m"
+ },
+ "hide": 0,
+ "label": "Interval",
+ "name": "INTERVAL",
+ "options": [
+ {
+ "selected": true,
+ "text": "1m",
+ "value": "1m"
+ },
+ {
+ "selected": false,
+ "text": "2m",
+ "value": "2m"
+ },
+ {
+ "selected": false,
+ "text": "3m",
+ "value": "3m"
+ },
+ {
+ "selected": false,
+ "text": "4m",
+ "value": "4m"
+ },
+ {
+ "selected": false,
+ "text": "5m",
+ "value": "5m"
+ },
+ {
+ "selected": false,
+ "text": "10m",
+ "value": "10m"
+ },
+ {
+ "selected": false,
+ "text": "20m",
+ "value": "20m"
+ },
+ {
+ "selected": false,
+ "text": "30m",
+ "value": "30m"
+ }
+ ],
+ "query": "1m,2m,3m,4m,5m,10m,20m,30m",
+ "refresh": 2,
+ "skipUrlSync": false,
+ "type": "interval"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-3h",
+ "to": "now"
+ },
+ "timepicker": {
+ "refresh_intervals": [
+ "10s",
+ "30s",
+ "1m",
+ "5m",
+ "15m",
+ "30m",
+ "1h",
+ "2h",
+ "1d"
+ ]
+ },
+ "timezone": "",
+ "title": "Server Overview",
+ "uid": "n7Xl7jEWx",
+ "version": 4
+ }
\ No newline at end of file
From 2827fc11ab92ea0125e2cfb008b252a0c6e8cbf7 Mon Sep 17 00:00:00 2001
From: got2bhockey SquadJS
.DiscordSubsystemRestarter
- DiscordSubsystemRestarter
- DiscordSubSystemRestarter
plugin allows you to manually restart SquadJS subsystems in case an issues arises with them.!squadjs restartsubsystem rcon
!squadjs restartsubsystem logparser
The DiscordRoundWinner
plugin will send the round winner to a Discord channel.
Discord connector name.
discord
ID of role required to run the sub system restart commands.
+The ID of the channel to log admin broadcasts to.
667741905228136459
+ 667741905228136459
+The color of the embed.
+16761867
The DiscordChat
plugin will log in-game chat to a Discord channel.
The DiscordAdminCamLogs
plugin will log in game admin camera usage to a Discord channel.
discord
The ID of the channel to log admin broadcasts to.
+The ID of the channel to log admin camera usage to.
667741905228136459
-The color of the embed for each chat.
-{}
{
- "ChatAll": 16761867
-}
The color of the embed.
16761867
A list of chat names to ignore.
-[
- "ChatSquad"
-]
16761867
The DiscordAdminBroadcast
plugin will send a copy of admin broadcasts made in game to a Discord channel.
The DiscordDebug
plugin can be used to help debug SquadJS by dumping SquadJS events to a Discord channel.
discord
The ID of the channel to log admin broadcasts to.
+The ID of the channel to log events to.
667741905228136459
-The color of the embed.
+A list of events to dump.
16761867
[]
[
+ "PLAYER_DIED"
+]
The DiscordAdminRequest
plugin will ping admins in a Discord channel when a player requests an admin via the !admin
command in in-game chat.
The DiscordChat
plugin will log in-game chat to a Discord channel.
667741905228136459
-A list of chat names to ignore.
+The color of the embed for each chat.
[]
[
- "ChatSquad"
-]
-{}
{
+ "ChatAll": 16761867
+}
+A list of phrases to ignore.
+The color of the embed.
[]
[
- "switch"
-]
-16761867
The command that calls an admin.
+A list of chat names to ignore.
admin
[
+ "ChatSquad"
+]
The IntervalledBroadcasts
plugin allows you to set broadcasts, which will be broadcasted at preset intervals
A list of Discord role IDs to ping.
+Messages to broadcast.
[]
[
- "500455137626554379"
+ "This server is powered by SquadJS."
]
-Cooldown for pings in milliseconds.
-60000
The color of the embed.
+Frequency of the broadcasts in milliseconds.
16761867
300000
The AutoKickUnassigned
plugin will automatically kick players that are not in a squad after a specified ammount of time.
The DiscordAdminRequest
plugin will ping admins in a Discord channel when a player requests an admin via the !admin
command in in-game chat.
Message SquadJS will send to players warning them they will be kicked
+Discord connector name.
Join a squad, you are are unassigned and will be kicked
discord
Message to send to players when they are kicked
+The ID of the channel to log admin broadcasts to.
Unassigned - automatically removed
667741905228136459
+How often in Seconds should we warn the player about being unassigned?
+A list of chat names to ignore.
30
[]
[
+ "ChatSquad"
+]
+How long in Seconds to wait before a unassigned player is kicked
+A list of phrases to ignore.
360
[]
[
+ "switch"
+]
+Player count required for AutoKick to start kicking players, set to -1 to disable
+The command that calls an admin.
93
admin
Time delay in Seconds from start of the round before AutoKick starts kicking again
+A list of Discord role IDs to ping.
900
[]
[
+ "500455137626554379"
+]
+true
: Admins will NOT be kickedfalse
: Admins WILL be kickedCooldown for pings in milliseconds.
false
60000
true
: Reserve slot players will NOT be kickedfalse
: Reserve slot players WILL be kickedThe color of the embed.
false
16761867
The DiscordDebug
plugin can be used to help debug SquadJS by dumping SquadJS events to a Discord channel.
The ChatCommands
plugin can be configured to make chat commands that broadcast or warn the caller with present messages.
Discord connector name.
-discord
The ID of the channel to log events to.
-
667741905228136459
-A list of events to dump.
+An array of objects containing the following properties:
command
- The command that initiates the message.type
- Either warn
or broadcast
.response
- The message to respond with.ignoreChats
- A list of chats to ignore the commands in. Use this to limit it to admins.[]
[
- "PLAYER_DIED"
-]
+ {
+ "command": "squadjs",
+ "type": "warn",
+ "response": "This server is powered by SquadJS.",
+ "ignoreChats": []
+ }
+]The IntervalledBroadcasts
plugin allows you to set broadcasts, which will be broadcasted at preset intervals
The AutoTkWarn
plugin will automatically warn players with a message when they teamkill.
Messages to broadcast.
-[]
[
- "This server is powered by SquadJS."
-]
-Frequency of the broadcasts in milliseconds.
+The message to warn players with.
300000
Please apologise for ALL TKs in ALL chat!
The DiscordTeamkill
plugin logs teamkills and related information to a Discord channel for admins to review.
The DiscordAdminBroadcast
plugin will send a copy of admin broadcasts made in game to a Discord channel.
discord
The ID of the channel to log teamkills to.
+The ID of the channel to log admin broadcasts to.
667741905228136459
The color of the embeds.
-16761867
Disable Squad Community Ban List information.
+The color of the embed.
false
16761867
The AutoTkWarn
plugin will automatically warn players with a message when they teamkill.
The message to warn players with.
-Please apologise for ALL TKs in ALL chat!
The mysql-log
plugin will log various server statistics and events to a database. This is great for server performance monitoring and/or player stat tracking.
-
-Grafana (NOT YET WORKING WITH V2):
-
SquadJS
.The Sequelize connector to log server information to.
-mysql
A overridden server ID.
-null
The DiscordRoundWinner
plugin will send the round winner to a Discord channel.
The SCBLInfo
plugin alerts admins when a harmful player is detected joining their server based on data from the Squad Community Ban List.
discord
The ID of the channel to log admin broadcasts to.
+The ID of the channel to alert admins through.
667741905228136459
-The color of the embed.
-16761867
The ChatCommands
plugin can be configured to make chat commands that broadcast or warn the caller with present messages.
An array of objects containing the following properties:
command
- The command that initiates the message.type
- Either warn
or broadcast
.response
- The message to respond with.ignoreChats
- A list of chats to ignore the commands in. Use this to limit it to admins.Admins will be alerted when a player has this or more reputation points. For more information on reputation points, see the Squad Community Ban List's FAQ
[
- {
- "command": "squadjs",
- "type": "warn",
- "response": "This server is powered by SquadJS.",
- "ignoreChats": []
- }
-]
6
The DiscordAdminCamLogs
plugin will log in game admin camera usage to a Discord channel.
The TeamRandomizer
can be used to randomize teams. It's great for destroying clan stacks or for social events. It can be run by typing, by default, !randomize
into in-game admin chat
Discord connector name.
-discord
The ID of the channel to log admin camera usage to.
-
667741905228136459
-The color of the embed.
+The command used to randomize the teams.
16761867
randomize
The TeamRandomizer
can be used to randomize teams. It's great for destroying clan stacks or for social events. It can be run by typing, by default, !randomize
into in-game admin chat
The DiscordTeamkill
plugin logs teamkills and related information to a Discord channel for admins to review.
The command used to randomize the teams.
+Discord connector name.
randomize
discord
The ID of the channel to log teamkills to.
+
667741905228136459
+The color of the embeds.
+16761867
Disable Squad Community Ban List information.
+false
The SCBLInfo
plugin alerts admins when a harmful player is detected joining their server based on data from the Squad Community Ban List.
The AutoKickUnassigned
plugin will automatically kick players that are not in a squad after a specified ammount of time.
Message SquadJS will send to players warning them they will be kicked
+Join a squad, you are are unassigned and will be kicked
Message to send to players when they are kicked
+Unassigned - automatically removed
How often in Seconds should we warn the player about being unassigned?
+30
How long in Seconds to wait before a unassigned player is kicked
+360
Player count required for AutoKick to start kicking players, set to -1 to disable
+93
Time delay in Seconds from start of the round before AutoKick starts kicking again
+900
true
: Admins will NOT be kickedfalse
: Admins WILL be kickedfalse
true
: Reserve slot players will NOT be kickedfalse
: Reserve slot players WILL be kickedfalse
The DiscordSubSystemRestarter
plugin allows you to manually restart SquadJS subsystems in case an issues arises with them.
!squadjs restartsubsystem rcon
!squadjs restartsubsystem logparser
Discord connector name.
discord
The ID of the channel to alert admins through.
+ID of role required to run the sub system restart commands.
667741905228136459
-667741905228136459
+ The mysql-log
plugin will log various server statistics and events to a database. This is great for server performance monitoring and/or player stat tracking.
+
+Grafana (NOT YET WORKING WITH V2):
+
SquadJS
.Admins will be alerted when a player has this or more reputation points. For more information on reputation points, see the Squad Community Ban List's FAQ
+The Sequelize connector to log server information to.
6
mysql
+A overridden server ID.
+null
The DiscordRoundWinner
plugin will send the round winner to a Discord channel.
The DiscordSubSystemRestarter
plugin allows you to manually restart SquadJS subsystems in case an issues arises with them.
!squadjs restartsubsystem rcon
!squadjs restartsubsystem logparser
Discord connector name.
discord
The ID of the channel to log admin broadcasts to.
+ID of role required to run the sub system restart commands.
667741905228136459
-The color of the embed.
-16761867
667741905228136459
The DiscordAdminCamLogs
plugin will log in game admin camera usage to a Discord channel.
The DiscordChat
plugin will log in-game chat to a Discord channel.
discord
The ID of the channel to log admin camera usage to.
+The ID of the channel to log admin broadcasts to.
667741905228136459
+The color of the embed for each chat.
+{}
{
+ "ChatAll": 16761867
+}
The color of the embed.
16761867
16761867
+A list of chat names to ignore.
+[
+ "ChatSquad"
+]
The DiscordDebug
plugin can be used to help debug SquadJS by dumping SquadJS events to a Discord channel.
The DiscordAdminBroadcast
plugin will send a copy of admin broadcasts made in game to a Discord channel.
discord
The ID of the channel to log events to.
+The ID of the channel to log admin broadcasts to.
667741905228136459
-A list of events to dump.
+The color of the embed.
[]
[
- "PLAYER_DIED"
-]
+ 16761867
The DiscordChat
plugin will log in-game chat to a Discord channel.
The DiscordAdminRequest
plugin will ping admins in a Discord channel when a player requests an admin via the !admin
command in in-game chat.
667741905228136459
-The color of the embed for each chat.
-{}
{
- "ChatAll": 16761867
-}
-The color of the embed.
-16761867
A list of chat names to ignore.
[]
[
"ChatSquad"
-]
- The IntervalledBroadcasts
plugin allows you to set broadcasts, which will be broadcasted at preset intervals
Messages to broadcast.
+A list of phrases to ignore.
[]
[
- "This server is powered by SquadJS."
+ "switch"
]
-Frequency of the broadcasts in milliseconds.
+The command that calls an admin.
300000
admin
+A list of Discord role IDs to ping.
+[]
[
+ "500455137626554379"
+]
+Cooldown for pings in milliseconds.
+60000
The color of the embed.
+16761867
The DiscordAdminRequest
plugin will ping admins in a Discord channel when a player requests an admin via the !admin
command in in-game chat.
The AutoKickUnassigned
plugin will automatically kick players that are not in a squad after a specified ammount of time.
Discord connector name.
+Message SquadJS will send to players warning them they will be kicked
discord
Join a squad, you are are unassigned and will be kicked
The ID of the channel to log admin broadcasts to.
+Message to send to players when they are kicked
667741905228136459
-Unassigned - automatically removed
A list of chat names to ignore.
+How often in Seconds should we warn the player about being unassigned?
[]
[
- "ChatSquad"
-]
-30
A list of phrases to ignore.
+How long in Seconds to wait before a unassigned player is kicked
[]
[
- "switch"
-]
-360
The command that calls an admin.
+Player count required for AutoKick to start kicking players, set to -1 to disable
admin
93
A list of Discord role IDs to ping.
+Time delay in Seconds from start of the round before AutoKick starts kicking again
[]
[
- "500455137626554379"
-]
-900
Cooldown for pings in milliseconds.
+true
: Admins will NOT be kickedfalse
: Admins WILL be kicked60000
false
The color of the embed.
+true
: Reserve slot players will NOT be kickedfalse
: Reserve slot players WILL be kicked16761867
false
The ChatCommands
plugin can be configured to make chat commands that broadcast or warn the caller with present messages.
The DiscordDebug
plugin can be used to help debug SquadJS by dumping SquadJS events to a Discord channel.
An array of objects containing the following properties:
command
- The command that initiates the message.type
- Either warn
or broadcast
.response
- The message to respond with.ignoreChats
- A list of chats to ignore the commands in. Use this to limit it to admins.Discord connector name.
+discord
The ID of the channel to log events to.
+
667741905228136459
+A list of events to dump.
[]
[
- {
- "command": "squadjs",
- "type": "warn",
- "response": "This server is powered by SquadJS.",
- "ignoreChats": []
- }
-]
+ "PLAYER_DIED"
+]
The AutoTkWarn
plugin will automatically warn players with a message when they teamkill.
The IntervalledBroadcasts
plugin allows you to set broadcasts, which will be broadcasted at preset intervals
The message to warn players with.
+Messages to broadcast.
Please apologise for ALL TKs in ALL chat!
[]
[
+ "This server is powered by SquadJS."
+]
+Frequency of the broadcasts in milliseconds.
+300000
The DiscordAdminBroadcast
plugin will send a copy of admin broadcasts made in game to a Discord channel.
The DiscordTeamkill
plugin logs teamkills and related information to a Discord channel for admins to review.
discord
The ID of the channel to log admin broadcasts to.
+The ID of the channel to log teamkills to.
667741905228136459
The color of the embed.
+The color of the embeds.
16761867
16761867
+Disable Squad Community Ban List information.
+false
The SCBLInfo
plugin alerts admins when a harmful player is detected joining their server based on data from the Squad Community Ban List.
The AutoTkWarn
plugin will automatically warn players with a message when they teamkill.
The message to warn players with.
+Please apologise for ALL TKs in ALL chat!
The mysql-log
plugin will log various server statistics and events to a database. This is great for server performance monitoring and/or player stat tracking.
+
+Grafana (NOT YET WORKING WITH V2):
+
SquadJS
.The Sequelize connector to log server information to.
+mysql
A overridden server ID.
+null
The DiscordRoundWinner
plugin will send the round winner to a Discord channel.
discord
The ID of the channel to alert admins through.
+The ID of the channel to log admin broadcasts to.
667741905228136459
-Admins will be alerted when a player has this or more reputation points. For more information on reputation points, see the Squad Community Ban List's FAQ
+The color of the embed.
6
16761867
The TeamRandomizer
can be used to randomize teams. It's great for destroying clan stacks or for social events. It can be run by typing, by default, !randomize
into in-game admin chat
The ChatCommands
plugin can be configured to make chat commands that broadcast or warn the caller with present messages.
The command used to randomize the teams.
+An array of objects containing the following properties:
command
- The command that initiates the message.type
- Either warn
or broadcast
.response
- The message to respond with.ignoreChats
- A list of chats to ignore the commands in. Use this to limit it to admins.randomize
[
+ {
+ "command": "squadjs",
+ "type": "warn",
+ "response": "This server is powered by SquadJS.",
+ "ignoreChats": []
+ }
+]
The DiscordRcon
plugin allows a specified Discord channel to be used as a RCON console to run RCON commands.
The DiscordAdminCamLogs
plugin will log in game admin camera usage to a Discord channel.
discord
ID of channel to turn into RCON console.
+The ID of the channel to log admin camera usage to.
667741905228136459
-{}
) permissions will be disabled{}
{
- "123456789123456789": [
- "AdminBroadcast",
- "AdminForceTeamChange",
- "AdminDemoteCommander"
- ]
-}
-Prepend admin names when making announcements.
+The color of the embed.
false
16761867
The DiscordTeamkill
plugin logs teamkills and related information to a Discord channel for admins to review.
The DiscordRcon
plugin allows a specified Discord channel to be used as a RCON console to run RCON commands.
discord
The ID of the channel to log teamkills to.
+ID of channel to turn into RCON console.
667741905228136459
-The color of the embeds.
+{}
) permissions will be disabled16761867
{}
{
+ "123456789123456789": [
+ "AdminBroadcast",
+ "AdminForceTeamChange",
+ "AdminDemoteCommander"
+ ]
+}
+Disable Squad Community Ban List information.
+Prepend admin names when making announcements.
false
The AutoKickUnassigned
plugin will automatically kick players that are not in a squad after a specified ammount of time.
The TeamRandomizer
can be used to randomize teams. It's great for destroying clan stacks or for social events. It can be run by typing, by default, !randomize
into in-game admin chat
Message SquadJS will send to players warning them they will be kicked
-Join a squad, you are are unassigned and will be kicked
Message to send to players when they are kicked
-Unassigned - automatically removed
How often in Seconds should we warn the player about being unassigned?
-30
How long in Seconds to wait before a unassigned player is kicked
-360
Player count required for AutoKick to start kicking players, set to -1 to disable
-93
Time delay in Seconds from start of the round before AutoKick starts kicking again
-900
true
: Admins will NOT be kickedfalse
: Admins WILL be kickedfalse
true
: Reserve slot players will NOT be kickedfalse
: Reserve slot players WILL be kickedThe command used to randomize the teams.
false
randomize
The DiscordSubSystemRestarter
plugin allows you to manually restart SquadJS subsystems in case an issues arises with them.
!squadjs restartsubsystem rcon
!squadjs restartsubsystem logparser
The SCBLInfo
plugin alerts admins when a harmful player is detected joining their server based on data from the Squad Community Ban List.
Discord connector name.
discord
ID of role required to run the sub system restart commands.
+The ID of the channel to alert admins through.
667741905228136459
- The mysql-log
plugin will log various server statistics and events to a database. This is great for server performance monitoring and/or player stat tracking.
-
-Grafana (NOT YET WORKING WITH V2):
-
SquadJS
.The Sequelize connector to log server information to.
-mysql
667741905228136459
+A overridden server ID.
+Admins will be alerted when a player has this or more reputation points. For more information on reputation points, see the Squad Community Ban List's FAQ
null
6
The DiscordSubSystemRestarter
plugin allows you to manually restart SquadJS subsystems in case an issues arises with them.
!squadjs restartsubsystem rcon
!squadjs restartsubsystem logparser
The AutoKickUnassigned
plugin will automatically kick players that are not in a squad after a specified ammount of time.
Discord connector name.
+Message SquadJS will send to players warning them they will be kicked
discord
Join a squad, you are are unassigned and will be kicked
ID of role required to run the sub system restart commands.
+Message to send to players when they are kicked
667741905228136459
Unassigned - automatically removed
+How often in Seconds should we warn the player about being unassigned?
+30
How long in Seconds to wait before a unassigned player is kicked
+360
Player count required for AutoKick to start kicking players, set to -1 to disable
+93
Time delay in Seconds from start of the round before AutoKick starts kicking again
+900
true
: Admins will NOT be kickedfalse
: Admins WILL be kickedfalse
true
: Reserve slot players will NOT be kickedfalse
: Reserve slot players WILL be kickedfalse
The DiscordChat
plugin will log in-game chat to a Discord channel.
The AutoTkWarn
plugin will automatically warn players with a message when they teamkill.
The message to warn players with.
+Please apologise for ALL TKs in ALL chat!
The ChatCommands
plugin can be configured to make chat commands that broadcast or warn the caller with present messages.
An array of objects containing the following properties:
command
- The command that initiates the message.type
- Either warn
or broadcast
.response
- The message to respond with.ignoreChats
- A list of chats to ignore the commands in. Use this to limit it to admins.[
+ {
+ "command": "squadjs",
+ "type": "warn",
+ "response": "This server is powered by SquadJS.",
+ "ignoreChats": []
+ }
+]
The mysql-log
plugin will log various server statistics and events to a database. This is great for server performance monitoring and/or player stat tracking.
+
+Grafana (NOT YET WORKING WITH V2):
+
SquadJS
.The Sequelize connector to log server information to.
+mysql
A overridden server ID.
+null
The DiscordAdminBroadcast
plugin will send a copy of admin broadcasts made in game to a Discord channel.
667741905228136459
-The color of the embed for each chat.
-{}
{
- "ChatAll": 16761867
-}
The color of the embed.
16761867
A list of chat names to ignore.
-[
- "ChatSquad"
-]
16761867
The DiscordAdminBroadcast
plugin will send a copy of admin broadcasts made in game to a Discord channel.
The DiscordAdminCamLogs
plugin will log in game admin camera usage to a Discord channel.
discord
The ID of the channel to log admin broadcasts to.
+The ID of the channel to log admin camera usage to.
667741905228136459
@@ -404,83 +473,41 @@ Interested in creating your own plugin? [See more here](./squad-server/plugins/r
The DiscordServerStatus
plugin updates a message in Discord with current server information, e.g. player count.
The DiscordChat
plugin will log in-game chat to a Discord channel.
Discord connector name.
discord
ID of messages to update.
-[]
[
- {
- "channelID": "667741905228136459",
- "messageID": "766688383043895387"
- }
-]
-How frequently to update the status in Discord.
-60000
Disable the bot status.
-false
The AutoKickUnassigned
plugin will automatically kick players that are not in a squad after a specified ammount of time.
Message SquadJS will send to players warning them they will be kicked
-Join a squad, you are are unassigned and will be kicked
Message to send to players when they are kicked
-Unassigned - automatically removed
How often in Seconds should we warn the player about being unassigned?
-30
How long in Seconds to wait before a unassigned player is kicked
-360
Player count required for AutoKick to start kicking players, set to -1 to disable
+The ID of the channel to log admin broadcasts to.
93
667741905228136459
+Time delay in Seconds from start of the round before AutoKick starts kicking again
+The color of the embed for each chat.
900
{}
{
+ "ChatAll": 16761867
+}
+true
: Admins will NOT be kickedfalse
: Admins WILL be kickedThe color of the embed.
false
16761867
true
: Reserve slot players will NOT be kickedfalse
: Reserve slot players WILL be kickedA list of chat names to ignore.
false
[
+ "ChatSquad"
+]
The IntervalledBroadcasts
plugin allows you to set broadcasts, which will be broadcasted at preset intervals
The DiscordPlaceholder
plugin allows you to make your bot create placeholder messages that can be used when configuring other plugins.
Messages to broadcast.
+Discord connector name.
[]
[
- "This server is powered by SquadJS."
-]
-discord
Frequency of the broadcasts in milliseconds.
+Command to create Discord placeholder.
300000
!placeholder
The DiscordTeamkill
plugin logs teamkills and related information to a Discord channel for admins to review.
The DiscordRcon
plugin allows a specified Discord channel to be used as a RCON console to run RCON commands.
discord
The ID of the channel to log teamkills to.
+ID of channel to turn into RCON console.
667741905228136459
-The color of the embeds.
+{}
) permissions will be disabled16761867
{}
{
+ "123456789123456789": [
+ "AdminBroadcast",
+ "AdminForceTeamChange",
+ "AdminDemoteCommander"
+ ]
+}
+Disable Squad Community Ban List information.
+Prepend admin names when making announcements.
false
The SeedingMode
plugin broadcasts seeding rule messages to players at regular intervals when the server is below a specified player count. It can also be configured to display "Live" messages when the server goes live.
Frequency of seeding messages in milliseconds.
-150000
Player count required for server not to be in seeding mode.
-50
Seeding message to display.
-Seeding Rules Active! Fight only over the middle flags! No FOB Hunting!
Enable "Live" messages for when the server goes live.
-true
Player count required for "Live" messages to not bee displayed.
-52
"Live" message to display.
-Live!
The AutoTkWarn
plugin will automatically warn players with a message when they teamkill.
The message to warn players with.
-Please apologise for ALL TKs in ALL chat!
The mysql-log
plugin will log various server statistics and events to a database. This is great for server performance monitoring and/or player stat tracking.
-
-Grafana (NOT YET WORKING WITH V2):
-
SquadJS
.The Sequelize connector to log server information to.
-mysql
A overridden server ID.
-null
The ChatCommands
plugin can be configured to make chat commands that broadcast or warn the caller with present messages.
The DiscordServerStatus
plugin updates a message in Discord with current server information, e.g. player count.
An array of objects containing the following properties:
command
- The command that initiates the message.type
- Either warn
or broadcast
.response
- The message to respond with.ignoreChats
- A list of chats to ignore the commands in. Use this to limit it to admins.Discord connector name.
+discord
ID of messages to update.
[]
[
{
- "command": "squadjs",
- "type": "warn",
- "response": "This server is powered by SquadJS.",
- "ignoreChats": []
+ "channelID": "667741905228136459",
+ "messageID": "766688383043895387"
}
-]
How frequently to update the status in Discord.
+60000
Disable the bot status.
+false
The DiscordAdminCamLogs
plugin will log in game admin camera usage to a Discord channel.
The DiscordSubSystemRestarter
plugin allows you to manually restart SquadJS subsystems in case an issues arises with them.
!squadjs restartsubsystem rcon
!squadjs restartsubsystem logparser
Discord connector name.
discord
The ID of the channel to log admin camera usage to.
+ID of role required to run the sub system restart commands.
667741905228136459
-The color of the embed.
-16761867
667741905228136459
The DiscordRcon
plugin allows a specified Discord channel to be used as a RCON console to run RCON commands.
The DiscordTeamkill
plugin logs teamkills and related information to a Discord channel for admins to review.
discord
ID of channel to turn into RCON console.
+The ID of the channel to log teamkills to.
667741905228136459
-{}
) permissions will be disabledThe color of the embeds.
{}
{
- "123456789123456789": [
- "AdminBroadcast",
- "AdminForceTeamChange",
- "AdminDemoteCommander"
- ]
-}
-16761867
Prepend admin names when making announcements.
+Disable Squad Community Ban List information.
false
The TeamRandomizer
can be used to randomize teams. It's great for destroying clan stacks or for social events. It can be run by typing, by default, !randomize
into in-game admin chat
The IntervalledBroadcasts
plugin allows you to set broadcasts, which will be broadcasted at preset intervals
The command used to randomize the teams.
+Messages to broadcast.
randomize
[]
[
+ "This server is powered by SquadJS."
+]
+Frequency of the broadcasts in milliseconds.
+300000
6
The SeedingMode
plugin broadcasts seeding rule messages to players at regular intervals when the server is below a specified player count. It can also be configured to display "Live" messages when the server goes live.
Frequency of seeding messages in milliseconds.
+150000
Player count required for server not to be in seeding mode.
+50
Seeding message to display.
+Seeding Rules Active! Fight only over the middle flags! No FOB Hunting!
Enable "Live" messages for when the server goes live.
+true
Player count required for "Live" messages to not bee displayed.
+52
"Live" message to display.
+Live!
The TeamRandomizer
can be used to randomize teams. It's great for destroying clan stacks or for social events. It can be run by typing, by default, !randomize
into in-game admin chat
The command used to randomize the teams.
+randomize
DiscordPlaceholder
plugin allows you to make your bot create placeholder messages that ' +
+ 'can be used when configuring other plugins.'
+ );
+ }
+
+ static get defaultEnabled() {
+ return true;
+ }
+
+ static get optionsSpecification() {
+ return {
+ discordClient: {
+ required: true,
+ description: 'Discord connector name.',
+ connector: 'discord',
+ default: 'discord'
+ },
+ command: {
+ required: false,
+ description: 'Command to create Discord placeholder.',
+ default: '!placeholder'
+ }
+ };
+ }
+
+ constructor(server, options, connectors) {
+ super(server, options, connectors);
+
+ this.onMessage = this.onMessage.bind(this);
+ }
+
+ async mount() {
+ this.options.discordClient.on('message', this.onMessage);
+ }
+
+ async unmount() {
+ this.options.discordClient.removeEventListener('message', this.onMessage);
+ }
+
+ async onMessage(message) {
+ if (message.author.bot) return;
+ await message.channel.send('Placeholder.');
+ }
+}
From e4328ad4e24f73e995197697978db2654b89ac3b Mon Sep 17 00:00:00 2001
From: Thomas Smyth The AutoKickUnassigned
plugin will automatically kick players that are not in a squad after a specified ammount of time.
Message SquadJS will send to players warning them they will be kicked
-Join a squad, you are are unassigned and will be kicked
Message to send to players when they are kicked
-Unassigned - automatically removed
How often in Seconds should we warn the player about being unassigned?
-30
How long in Seconds to wait before a unassigned player is kicked
-360
Player count required for AutoKick to start kicking players, set to -1 to disable
-93
Time delay in Seconds from start of the round before AutoKick starts kicking again
-900
true
: Admins will NOT be kickedfalse
: Admins WILL be kickedfalse
true
: Reserve slot players will NOT be kickedfalse
: Reserve slot players WILL be kickedfalse
The AutoTkWarn
plugin will automatically warn players with a message when they teamkill.
The DiscordPlaceholder
plugin allows you to make your bot create placeholder messages that can be used when configuring other plugins.
The message to warn players with.
+Discord connector name.
Please apologise for ALL TKs in ALL chat!
The ChatCommands
plugin can be configured to make chat commands that broadcast or warn the caller with present messages.
discord
An array of objects containing the following properties:
command
- The command that initiates the message.type
- Either warn
or broadcast
.response
- The message to respond with.ignoreChats
- A list of chats to ignore the commands in. Use this to limit it to admins.Command to create Discord placeholder.
[
- {
- "command": "squadjs",
- "type": "warn",
- "response": "This server is powered by SquadJS.",
- "ignoreChats": []
- }
-]
!placeholder
The mysql-log
plugin will log various server statistics and events to a database. This is great for server performance monitoring and/or player stat tracking.
-
-Grafana (NOT YET WORKING WITH V2):
-
SquadJS
.The DiscordSubSystemRestarter
plugin allows you to manually restart SquadJS subsystems in case an issues arises with them.
!squadjs restartsubsystem rcon
!squadjs restartsubsystem logparser
The Sequelize connector to log server information to.
+Discord connector name.
mysql
discord
A overridden server ID.
+ID of role required to run the sub system restart commands.
null
667741905228136459
The DiscordAdminBroadcast
plugin will send a copy of admin broadcasts made in game to a Discord channel.
The DiscordChat
plugin will log in-game chat to a Discord channel.
667741905228136459
+The color of the embed for each chat.
+{}
{
+ "ChatAll": 16761867
+}
The color of the embed.
16761867
16761867
+A list of chat names to ignore.
+[
+ "ChatSquad"
+]
The DiscordAdminCamLogs
plugin will log in game admin camera usage to a Discord channel.
The DiscordAdminBroadcast
plugin will send a copy of admin broadcasts made in game to a Discord channel.
discord
The ID of the channel to log admin camera usage to.
+The ID of the channel to log admin broadcasts to.
667741905228136459
@@ -473,41 +421,83 @@ Grafana (NOT YET WORKING WITH V2):
The DiscordChat
plugin will log in-game chat to a Discord channel.
The DiscordServerStatus
plugin updates a message in Discord with current server information, e.g. player count.
Discord connector name.
discord
The ID of the channel to log admin broadcasts to.
+ID of messages to update.
667741905228136459
-[]
[
+ {
+ "channelID": "667741905228136459",
+ "messageID": "766688383043895387"
+ }
+]
+The color of the embed for each chat.
+How frequently to update the status in Discord.
{}
{
- "ChatAll": 16761867
-}
-60000
The color of the embed.
+Disable the bot status.
16761867
false
The AutoKickUnassigned
plugin will automatically kick players that are not in a squad after a specified ammount of time.
A list of chat names to ignore.
+Message SquadJS will send to players warning them they will be kicked
[
- "ChatSquad"
-]
Join a squad, you are are unassigned and will be kicked
+Message to send to players when they are kicked
+Unassigned - automatically removed
How often in Seconds should we warn the player about being unassigned?
+30
How long in Seconds to wait before a unassigned player is kicked
+360
Player count required for AutoKick to start kicking players, set to -1 to disable
+93
Time delay in Seconds from start of the round before AutoKick starts kicking again
+900
true
: Admins will NOT be kickedfalse
: Admins WILL be kickedfalse
true
: Reserve slot players will NOT be kickedfalse
: Reserve slot players WILL be kickedfalse
The DiscordPlaceholder
plugin allows you to make your bot create placeholder messages that can be used when configuring other plugins.
The IntervalledBroadcasts
plugin allows you to set broadcasts, which will be broadcasted at preset intervals
Discord connector name.
+Messages to broadcast.
discord
[]
[
+ "This server is powered by SquadJS."
+]
+Command to create Discord placeholder.
+Frequency of the broadcasts in milliseconds.
!placeholder
300000
The DiscordRcon
plugin allows a specified Discord channel to be used as a RCON console to run RCON commands.
The DiscordTeamkill
plugin logs teamkills and related information to a Discord channel for admins to review.
discord
ID of channel to turn into RCON console.
+The ID of the channel to log teamkills to.
667741905228136459
-{}
) permissions will be disabledThe color of the embeds.
{}
{
- "123456789123456789": [
- "AdminBroadcast",
- "AdminForceTeamChange",
- "AdminDemoteCommander"
- ]
-}
-16761867
Prepend admin names when making announcements.
+Disable Squad Community Ban List information.
false
The SeedingMode
plugin broadcasts seeding rule messages to players at regular intervals when the server is below a specified player count. It can also be configured to display "Live" messages when the server goes live.
Frequency of seeding messages in milliseconds.
+150000
Player count required for server not to be in seeding mode.
+50
Seeding message to display.
+Seeding Rules Active! Fight only over the middle flags! No FOB Hunting!
Enable "Live" messages for when the server goes live.
+true
Player count required for "Live" messages to not bee displayed.
+52
"Live" message to display.
+Live!
The AutoTkWarn
plugin will automatically warn players with a message when they teamkill.
The message to warn players with.
+Please apologise for ALL TKs in ALL chat!
The mysql-log
plugin will log various server statistics and events to a database. This is great for server performance monitoring and/or player stat tracking.
+
+Grafana (NOT YET WORKING WITH V2):
+
SquadJS
.The Sequelize connector to log server information to.
+mysql
A overridden server ID.
+null
The DiscordServerStatus
plugin updates a message in Discord with current server information, e.g. player count.
The ChatCommands
plugin can be configured to make chat commands that broadcast or warn the caller with present messages.
Discord connector name.
-discord
ID of messages to update.
+An array of objects containing the following properties:
command
- The command that initiates the message.type
- Either warn
or broadcast
.response
- The message to respond with.ignoreChats
- A list of chats to ignore the commands in. Use this to limit it to admins.[]
[
{
- "channelID": "667741905228136459",
- "messageID": "766688383043895387"
+ "command": "squadjs",
+ "type": "warn",
+ "response": "This server is powered by SquadJS.",
+ "ignoreChats": []
}
-]
-How frequently to update the status in Discord.
-60000
Disable the bot status.
-false
The DiscordSubSystemRestarter
plugin allows you to manually restart SquadJS subsystems in case an issues arises with them.
!squadjs restartsubsystem rcon
!squadjs restartsubsystem logparser
The DiscordAdminCamLogs
plugin will log in game admin camera usage to a Discord channel.
Discord connector name.
discord
ID of role required to run the sub system restart commands.
+The ID of the channel to log admin camera usage to.
667741905228136459
+ 667741905228136459
+The color of the embed.
+16761867
The DiscordTeamkill
plugin logs teamkills and related information to a Discord channel for admins to review.
The DiscordRcon
plugin allows a specified Discord channel to be used as a RCON console to run RCON commands.
discord
The ID of the channel to log teamkills to.
+ID of channel to turn into RCON console.
667741905228136459
-The color of the embeds.
+{}
) permissions will be disabled16761867
{}
{
+ "123456789123456789": [
+ "AdminBroadcast",
+ "AdminForceTeamChange",
+ "AdminDemoteCommander"
+ ]
+}
+Disable Squad Community Ban List information.
+Prepend admin names when making announcements.
false
The IntervalledBroadcasts
plugin allows you to set broadcasts, which will be broadcasted at preset intervals
The TeamRandomizer
can be used to randomize teams. It's great for destroying clan stacks or for social events. It can be run by typing, by default, !randomize
into in-game admin chat
Messages to broadcast.
-[]
[
- "This server is powered by SquadJS."
-]
-Frequency of the broadcasts in milliseconds.
+The command used to randomize the teams.
300000
randomize
6
The SeedingMode
plugin broadcasts seeding rule messages to players at regular intervals when the server is below a specified player count. It can also be configured to display "Live" messages when the server goes live.
Frequency of seeding messages in milliseconds.
-150000
Player count required for server not to be in seeding mode.
-50
Seeding message to display.
-Seeding Rules Active! Fight only over the middle flags! No FOB Hunting!
Enable "Live" messages for when the server goes live.
-true
Player count required for "Live" messages to not bee displayed.
-52
"Live" message to display.
-Live!
The TeamRandomizer
can be used to randomize teams. It's great for destroying clan stacks or for social events. It can be run by typing, by default, !randomize
into in-game admin chat
The command used to randomize the teams.
-randomize
The DiscordPlaceholder
plugin allows you to make your bot create placeholder messages that can be used when configuring other plugins.
The AutoKickUnassigned
plugin will automatically kick players that are not in a squad after a specified ammount of time.
Discord connector name.
+Message SquadJS will send to players warning them they will be kicked
discord
Join a squad, you are are unassigned and will be kicked
Command to create Discord placeholder.
+Message to send to players when they are kicked
!placeholder
Unassigned - automatically removed
How often in Seconds should we warn the player about being unassigned?
+30
How long in Seconds to wait before a unassigned player is kicked
+360
Player count required for AutoKick to start kicking players, set to -1 to disable
+93
Time delay in Seconds from start of the round before AutoKick starts kicking again
+900
true
: Admins will NOT be kickedfalse
: Admins WILL be kickedfalse
true
: Reserve slot players will NOT be kickedfalse
: Reserve slot players WILL be kickedfalse
The DiscordSubSystemRestarter
plugin allows you to manually restart SquadJS subsystems in case an issues arises with them.
!squadjs restartsubsystem rcon
!squadjs restartsubsystem logparser
The AutoTkWarn
plugin will automatically warn players with a message when they teamkill.
Discord connector name.
+The message to warn players with.
discord
Please apologise for ALL TKs in ALL chat!
The ChatCommands
plugin can be configured to make chat commands that broadcast or warn the caller with present messages.
ID of role required to run the sub system restart commands.
+An array of objects containing the following properties:
command
- The command that initiates the message.type
- Either warn
or broadcast
.response
- The message to respond with.ignoreChats
- A list of chats to ignore the commands in. Use this to limit it to admins.
667741905228136459
+ [
+ {
+ "command": "squadjs",
+ "type": "warn",
+ "response": "This server is powered by SquadJS.",
+ "ignoreChats": []
+ }
+]
The DiscordChat
plugin will log in-game chat to a Discord channel.
The mysql-log
plugin will log various server statistics and events to a database. This is great for server performance monitoring and/or player stat tracking.
+
+Grafana (NOT YET WORKING WITH V2):
+
SquadJS
.The Sequelize connector to log server information to.
+mysql
A overridden server ID.
+null
The DiscordAdminBroadcast
plugin will send a copy of admin broadcasts made in game to a Discord channel.
667741905228136459
-The color of the embed for each chat.
-{}
{
- "ChatAll": 16761867
-}
The color of the embed.
16761867
A list of chat names to ignore.
-[
- "ChatSquad"
-]
16761867
The DiscordAdminBroadcast
plugin will send a copy of admin broadcasts made in game to a Discord channel.
The DiscordAdminCamLogs
plugin will log in game admin camera usage to a Discord channel.
discord
The ID of the channel to log admin broadcasts to.
+The ID of the channel to log admin camera usage to.
667741905228136459
@@ -421,83 +473,41 @@ Interested in creating your own plugin? [See more here](./squad-server/plugins/r
The DiscordServerStatus
plugin updates a message in Discord with current server information, e.g. player count.
The DiscordChat
plugin will log in-game chat to a Discord channel.
Discord connector name.
discord
ID of messages to update.
-[]
[
- {
- "channelID": "667741905228136459",
- "messageID": "766688383043895387"
- }
-]
-How frequently to update the status in Discord.
-60000
Disable the bot status.
-false
The AutoKickUnassigned
plugin will automatically kick players that are not in a squad after a specified ammount of time.
Message SquadJS will send to players warning them they will be kicked
-Join a squad, you are are unassigned and will be kicked
Message to send to players when they are kicked
-Unassigned - automatically removed
How often in Seconds should we warn the player about being unassigned?
-30
How long in Seconds to wait before a unassigned player is kicked
-360
Player count required for AutoKick to start kicking players, set to -1 to disable
+The ID of the channel to log admin broadcasts to.
93
667741905228136459
+Time delay in Seconds from start of the round before AutoKick starts kicking again
+The color of the embed for each chat.
900
{}
{
+ "ChatAll": 16761867
+}
+true
: Admins will NOT be kickedfalse
: Admins WILL be kickedThe color of the embed.
false
16761867
true
: Reserve slot players will NOT be kickedfalse
: Reserve slot players WILL be kickedA list of chat names to ignore.
false
[
+ "ChatSquad"
+]
The IntervalledBroadcasts
plugin allows you to set broadcasts, which will be broadcasted at preset intervals
The DiscordPlaceholder
plugin allows you to make your bot create placeholder messages that can be used when configuring other plugins.
Messages to broadcast.
+Discord connector name.
[]
[
- "This server is powered by SquadJS."
-]
-discord
Frequency of the broadcasts in milliseconds.
+Command to create Discord placeholder.
300000
!placeholder
The DiscordTeamkill
plugin logs teamkills and related information to a Discord channel for admins to review.
The DiscordRcon
plugin allows a specified Discord channel to be used as a RCON console to run RCON commands.
discord
The ID of the channel to log teamkills to.
+ID of channel to turn into RCON console.
667741905228136459
-The color of the embeds.
+{}
) permissions will be disabled16761867
{}
{
+ "123456789123456789": [
+ "AdminBroadcast",
+ "AdminForceTeamChange",
+ "AdminDemoteCommander"
+ ]
+}
+Disable Squad Community Ban List information.
+Prepend admin names when making announcements.
false
The SeedingMode
plugin broadcasts seeding rule messages to players at regular intervals when the server is below a specified player count. It can also be configured to display "Live" messages when the server goes live.
Frequency of seeding messages in milliseconds.
-150000
Player count required for server not to be in seeding mode.
-50
Seeding message to display.
-Seeding Rules Active! Fight only over the middle flags! No FOB Hunting!
Enable "Live" messages for when the server goes live.
-true
Player count required for "Live" messages to not bee displayed.
-52
"Live" message to display.
-Live!
The AutoTkWarn
plugin will automatically warn players with a message when they teamkill.
The message to warn players with.
-Please apologise for ALL TKs in ALL chat!
The mysql-log
plugin will log various server statistics and events to a database. This is great for server performance monitoring and/or player stat tracking.
-
-Grafana (NOT YET WORKING WITH V2):
-
SquadJS
.The Sequelize connector to log server information to.
-mysql
A overridden server ID.
-null
The ChatCommands
plugin can be configured to make chat commands that broadcast or warn the caller with present messages.
The DiscordServerStatus
plugin updates a message in Discord with current server information, e.g. player count.
An array of objects containing the following properties:
command
- The command that initiates the message.type
- Either warn
or broadcast
.response
- The message to respond with.ignoreChats
- A list of chats to ignore the commands in. Use this to limit it to admins.Discord connector name.
+discord
ID of messages to update.
[]
[
{
- "command": "squadjs",
- "type": "warn",
- "response": "This server is powered by SquadJS.",
- "ignoreChats": []
+ "channelID": "667741905228136459",
+ "messageID": "766688383043895387"
}
-]
How frequently to update the status in Discord.
+60000
Disable the bot status.
+false
The DiscordAdminCamLogs
plugin will log in game admin camera usage to a Discord channel.
The DiscordSubSystemRestarter
plugin allows you to manually restart SquadJS subsystems in case an issues arises with them.
!squadjs restartsubsystem rcon
!squadjs restartsubsystem logparser
Discord connector name.
discord
The ID of the channel to log admin camera usage to.
+ID of role required to run the sub system restart commands.
667741905228136459
-The color of the embed.
-16761867
667741905228136459
The DiscordRcon
plugin allows a specified Discord channel to be used as a RCON console to run RCON commands.
The DiscordTeamkill
plugin logs teamkills and related information to a Discord channel for admins to review.
discord
ID of channel to turn into RCON console.
+The ID of the channel to log teamkills to.
667741905228136459
-{}
) permissions will be disabledThe color of the embeds.
{}
{
- "123456789123456789": [
- "AdminBroadcast",
- "AdminForceTeamChange",
- "AdminDemoteCommander"
- ]
-}
-16761867
Prepend admin names when making announcements.
+Disable Squad Community Ban List information.
false
The TeamRandomizer
can be used to randomize teams. It's great for destroying clan stacks or for social events. It can be run by typing, by default, !randomize
into in-game admin chat
The IntervalledBroadcasts
plugin allows you to set broadcasts, which will be broadcasted at preset intervals
The command used to randomize the teams.
+Messages to broadcast.
randomize
[]
[
+ "This server is powered by SquadJS."
+]
+Frequency of the broadcasts in milliseconds.
+300000
6
The SeedingMode
plugin broadcasts seeding rule messages to players at regular intervals when the server is below a specified player count. It can also be configured to display "Live" messages when the server goes live.
Frequency of seeding messages in milliseconds.
+150000
Player count required for server not to be in seeding mode.
+50
Seeding message to display.
+Seeding Rules Active! Fight only over the middle flags! No FOB Hunting!
Enable "Live" messages for when the server goes live.
+true
Player count required for "Live" messages to not bee displayed.
+52
"Live" message to display.
+Live!
The TeamRandomizer
can be used to randomize teams. It's great for destroying clan stacks or for social events. It can be run by typing, by default, !randomize
into in-game admin chat
The command used to randomize the teams.
+randomize
The AutoKickUnassigned
plugin will automatically kick players that are not in a squad after a specified ammount of time.
Message SquadJS will send to players warning them they will be kicked
-Join a squad, you are are unassigned and will be kicked
Message to send to players when they are kicked
-Unassigned - automatically removed
How often in Seconds should we warn the player about being unassigned?
-30
How long in Seconds to wait before a unassigned player is kicked
-360
Player count required for AutoKick to start kicking players, set to -1 to disable
-93
Time delay in Seconds from start of the round before AutoKick starts kicking again
-900
true
: Admins will NOT be kickedfalse
: Admins WILL be kickedfalse
true
: Reserve slot players will NOT be kickedfalse
: Reserve slot players WILL be kickedfalse
The AutoTkWarn
plugin will automatically warn players with a message when they teamkill.
The DiscordPlaceholder
plugin allows you to make your bot create placeholder messages that can be used when configuring other plugins.
The message to warn players with.
+Discord connector name.
Please apologise for ALL TKs in ALL chat!
The ChatCommands
plugin can be configured to make chat commands that broadcast or warn the caller with present messages.
discord
An array of objects containing the following properties:
command
- The command that initiates the message.type
- Either warn
or broadcast
.response
- The message to respond with.ignoreChats
- A list of chats to ignore the commands in. Use this to limit it to admins.Command to create Discord placeholder.
[
- {
- "command": "squadjs",
- "type": "warn",
- "response": "This server is powered by SquadJS.",
- "ignoreChats": []
- }
-]
!placeholder
The mysql-log
plugin will log various server statistics and events to a database. This is great for server performance monitoring and/or player stat tracking.
-
-Grafana (NOT YET WORKING WITH V2):
-
SquadJS
.The DiscordSubSystemRestarter
plugin allows you to manually restart SquadJS subsystems in case an issues arises with them.
!squadjs restartsubsystem rcon
!squadjs restartsubsystem logparser
The Sequelize connector to log server information to.
+Discord connector name.
mysql
discord
A overridden server ID.
+ID of role required to run the sub system restart commands.
null
667741905228136459
The DiscordAdminBroadcast
plugin will send a copy of admin broadcasts made in game to a Discord channel.
The DiscordChat
plugin will log in-game chat to a Discord channel.
667741905228136459
+The color of the embed for each chat.
+{}
{
+ "ChatAll": 16761867
+}
The color of the embed.
16761867
16761867
+A list of chat names to ignore.
+[
+ "ChatSquad"
+]
The DiscordAdminCamLogs
plugin will log in game admin camera usage to a Discord channel.
The DiscordAdminBroadcast
plugin will send a copy of admin broadcasts made in game to a Discord channel.
discord
The ID of the channel to log admin camera usage to.
+The ID of the channel to log admin broadcasts to.
667741905228136459
@@ -473,41 +421,83 @@ Grafana (NOT YET WORKING WITH V2):
The DiscordChat
plugin will log in-game chat to a Discord channel.
The DiscordServerStatus
plugin updates a message in Discord with current server information, e.g. player count.
Discord connector name.
discord
The ID of the channel to log admin broadcasts to.
+ID of messages to update.
667741905228136459
-[]
[
+ {
+ "channelID": "667741905228136459",
+ "messageID": "766688383043895387"
+ }
+]
+The color of the embed for each chat.
+How frequently to update the status in Discord.
{}
{
- "ChatAll": 16761867
-}
-60000
The color of the embed.
+Disable the bot status.
16761867
false
The AutoKickUnassigned
plugin will automatically kick players that are not in a squad after a specified ammount of time.
A list of chat names to ignore.
+Message SquadJS will send to players warning them they will be kicked
[
- "ChatSquad"
-]
Join a squad, you are are unassigned and will be kicked
+Message to send to players when they are kicked
+Unassigned - automatically removed
How often in Seconds should we warn the player about being unassigned?
+30
How long in Seconds to wait before a unassigned player is kicked
+360
Player count required for AutoKick to start kicking players, set to -1 to disable
+93
Time delay in Seconds from start of the round before AutoKick starts kicking again
+900
true
: Admins will NOT be kickedfalse
: Admins WILL be kickedfalse
true
: Reserve slot players will NOT be kickedfalse
: Reserve slot players WILL be kickedfalse
The DiscordPlaceholder
plugin allows you to make your bot create placeholder messages that can be used when configuring other plugins.
The IntervalledBroadcasts
plugin allows you to set broadcasts, which will be broadcasted at preset intervals
Discord connector name.
+Messages to broadcast.
discord
[]
[
+ "This server is powered by SquadJS."
+]
+Command to create Discord placeholder.
+Frequency of the broadcasts in milliseconds.
!placeholder
300000
The DiscordRcon
plugin allows a specified Discord channel to be used as a RCON console to run RCON commands.
The DiscordTeamkill
plugin logs teamkills and related information to a Discord channel for admins to review.
discord
ID of channel to turn into RCON console.
+The ID of the channel to log teamkills to.
667741905228136459
-{}
) permissions will be disabledThe color of the embeds.
{}
{
- "123456789123456789": [
- "AdminBroadcast",
- "AdminForceTeamChange",
- "AdminDemoteCommander"
- ]
-}
-16761867
Prepend admin names when making announcements.
+Disable Squad Community Ban List information.
false
The SeedingMode
plugin broadcasts seeding rule messages to players at regular intervals when the server is below a specified player count. It can also be configured to display "Live" messages when the server goes live.
Frequency of seeding messages in milliseconds.
+150000
Player count required for server not to be in seeding mode.
+50
Seeding message to display.
+Seeding Rules Active! Fight only over the middle flags! No FOB Hunting!
Enable "Live" messages for when the server goes live.
+true
Player count required for "Live" messages to not bee displayed.
+52
"Live" message to display.
+Live!
The AutoTkWarn
plugin will automatically warn players with a message when they teamkill.
The message to warn players with.
+Please apologise for ALL TKs in ALL chat!
The mysql-log
plugin will log various server statistics and events to a database. This is great for server performance monitoring and/or player stat tracking.
+
+Grafana (NOT YET WORKING WITH V2):
+
SquadJS
.The Sequelize connector to log server information to.
+mysql
A overridden server ID.
+null
The DiscordServerStatus
plugin updates a message in Discord with current server information, e.g. player count.
The ChatCommands
plugin can be configured to make chat commands that broadcast or warn the caller with present messages.
Discord connector name.
-discord
ID of messages to update.
+An array of objects containing the following properties:
command
- The command that initiates the message.type
- Either warn
or broadcast
.response
- The message to respond with.ignoreChats
- A list of chats to ignore the commands in. Use this to limit it to admins.[]
[
{
- "channelID": "667741905228136459",
- "messageID": "766688383043895387"
+ "command": "squadjs",
+ "type": "warn",
+ "response": "This server is powered by SquadJS.",
+ "ignoreChats": []
}
-]
-How frequently to update the status in Discord.
-60000
Disable the bot status.
-false
The DiscordSubSystemRestarter
plugin allows you to manually restart SquadJS subsystems in case an issues arises with them.
!squadjs restartsubsystem rcon
!squadjs restartsubsystem logparser
The DiscordAdminCamLogs
plugin will log in game admin camera usage to a Discord channel.
Discord connector name.
discord
ID of role required to run the sub system restart commands.
+The ID of the channel to log admin camera usage to.
667741905228136459
+ 667741905228136459
+The color of the embed.
+16761867
The DiscordTeamkill
plugin logs teamkills and related information to a Discord channel for admins to review.
The DiscordRcon
plugin allows a specified Discord channel to be used as a RCON console to run RCON commands.
discord
The ID of the channel to log teamkills to.
+ID of channel to turn into RCON console.
667741905228136459
-The color of the embeds.
+{}
) permissions will be disabled16761867
{}
{
+ "123456789123456789": [
+ "AdminBroadcast",
+ "AdminForceTeamChange",
+ "AdminDemoteCommander"
+ ]
+}
+Disable Squad Community Ban List information.
+Prepend admin names when making announcements.
false
The IntervalledBroadcasts
plugin allows you to set broadcasts, which will be broadcasted at preset intervals
The TeamRandomizer
can be used to randomize teams. It's great for destroying clan stacks or for social events. It can be run by typing, by default, !randomize
into in-game admin chat
Messages to broadcast.
-[]
[
- "This server is powered by SquadJS."
-]
-Frequency of the broadcasts in milliseconds.
+The command used to randomize the teams.
300000
randomize
6
The SeedingMode
plugin broadcasts seeding rule messages to players at regular intervals when the server is below a specified player count. It can also be configured to display "Live" messages when the server goes live.
Frequency of seeding messages in milliseconds.
-150000
Player count required for server not to be in seeding mode.
-50
Seeding message to display.
-Seeding Rules Active! Fight only over the middle flags! No FOB Hunting!
Enable "Live" messages for when the server goes live.
-true
Player count required for "Live" messages to not bee displayed.
-52
"Live" message to display.
-Live!
The TeamRandomizer
can be used to randomize teams. It's great for destroying clan stacks or for social events. It can be run by typing, by default, !randomize
into in-game admin chat
The command used to randomize the teams.
-randomize