SquadJS/plugins/mysql-log/index.js

120 lines
3.8 KiB
JavaScript
Raw Normal View History

2020-05-15 12:42:39 -05:00
import {
LOG_PARSER_NEW_GAME,
LOG_PARSER_PLAYER_WOUNDED,
LOG_PARSER_PLAYER_DIED,
LOG_PARSER_PLAYER_REVIVED,
LOG_PARSER_SERVER_TICK_RATE
} from 'squad-server/events/log-parser';
import { SERVER_PLAYERS_UPDATED } from 'squad-server/events/server';
export default {
name: 'mysql-log',
description: 'Log server information and statistics to a MySQL DB.',
defaultDisabled: true,
2020-05-15 12:42:39 -05:00
optionsSpec: {
mysqlPool: {
type: 'MySQLPoolConnector',
required: true,
default: 'mysql',
description: 'The name of the MySQL Pool Connector to use.'
},
overrideServerID: {
type: 'Int',
required: false,
default: null,
description: 'A overridden server ID.'
}
},
2020-05-15 12:42:39 -05:00
init: async (server, options) => {
const serverID = options.overrideServerID === null ? server.id : options.overrideServerID;
server.on(LOG_PARSER_SERVER_TICK_RATE, (info) => {
options.mysqlPool.query(
'INSERT INTO ServerTickRate(time, server, tick_rate) VALUES (?,?,?)',
[info.time, serverID, info.tickRate]
);
});
2020-05-15 12:42:39 -05:00
server.on(SERVER_PLAYERS_UPDATED, (players) => {
options.mysqlPool.query(
'INSERT INTO PlayerCount(time, server, player_count) VALUES (NOW(),?,?)',
[serverID, players.length]
);
});
2020-05-15 12:42:39 -05:00
server.on(LOG_PARSER_NEW_GAME, (info) => {
options.mysqlPool.query('call NewMatch(?,?,?,?,?,?,?)', [
serverID,
info.time,
info.dlc,
info.mapClassname,
info.layerClassname,
info.map,
info.layer
]);
});
2020-05-15 12:42:39 -05:00
server.on(LOG_PARSER_PLAYER_WOUNDED, (info) => {
options.mysqlPool.query('call InsertPlayerWounded(?,?,?,?,?,?,?,?,?,?,?,?,?)', [
serverID,
info.time,
info.victim ? info.victim.steamID : null,
info.victim ? info.victim.name : null,
info.victim ? info.victim.teamID : null,
info.victim ? info.victim.squadID : null,
info.attacker ? info.attacker.steamID : null,
info.attacker ? info.attacker.name : null,
info.attacker ? info.attacker.teamID : null,
info.attacker ? info.attacker.squadID : null,
info.damage,
info.weapon,
info.teamkill
]);
});
2020-05-15 12:42:39 -05:00
server.on(LOG_PARSER_PLAYER_DIED, (info) => {
options.mysqlPool.query('call InsertPlayerDied(?,?,?,?,?,?,?,?,?,?,?,?,?,?)', [
serverID,
info.time,
info.woundTime,
info.victim ? info.victim.steamID : null,
info.victim ? info.victim.name : null,
info.victim ? info.victim.teamID : null,
info.victim ? info.victim.squadID : null,
info.attacker ? info.attacker.steamID : null,
info.attacker ? info.attacker.name : null,
info.attacker ? info.attacker.teamID : null,
info.attacker ? info.attacker.squadID : null,
info.damage,
info.weapon,
info.teamkill
]);
});
2020-05-15 12:42:39 -05:00
server.on(LOG_PARSER_PLAYER_REVIVED, (info) => {
options.mysqlPool.query('call InsertPlayerRevived(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', [
serverID,
info.time,
info.woundTime,
info.victim ? info.victim.steamID : null,
info.victim ? info.victim.name : null,
info.victim ? info.victim.teamID : null,
info.victim ? info.victim.squadID : null,
info.attacker ? info.attacker.steamID : null,
info.attacker ? info.attacker.name : null,
info.attacker ? info.attacker.teamID : null,
info.attacker ? info.attacker.squadID : null,
info.damage,
info.weapon,
info.teamkill,
info.reviver ? info.reviver.steamID : null,
info.reviver ? info.reviver.name : null,
info.reviver ? info.reviver.teamID : null,
info.reviver ? info.reviver.squadID : null
]);
});
}
};