Fixed bug #148. Added PLAYER_DISCONNECTED event

This commit is contained in:
Dusan Milutinovic 2021-03-02 00:05:46 +01:00
parent e396478ff2
commit 0e7bc2fc91
7 changed files with 53 additions and 1 deletions

View File

@ -28,7 +28,11 @@
"username": "squadjs",
"password": "password",
"database": "squadjs",
"dialect": "mysql"
"dialect": "mysql",
"define": {
"charset": "utf8mb4",
"collate": "utf8mb4_unicode_ci"
}
}
},
"plugins": [

View File

@ -110,6 +110,10 @@ export default class SquadServerFactory {
if (typeof connectorConfig === 'string') {
connector = new Sequelize(connectorConfig, {
define: {
charset: 'utf8mb4',
collate: 'utf8mb4_unicode_ci'
},
logging: (msg) => Logger.verbose('Sequelize', 3, msg)
});
} else if (typeof connectorConfig === 'object') {

View File

@ -178,6 +178,16 @@ export default class SquadServer extends EventEmitter {
this.emit('PLAYER_CONNECTED', data);
});
this.logParser.on('PLAYER_DISCONNECTED', async (data) => {
data.player = await this.getPlayerBySteamID(data.steamID);
if (data.player) data.player.suffix = data.playerSuffix;
delete data.steamID;
delete data.playerSuffix;
this.emit('PLAYER_DISCONNECTED', data);
});
this.logParser.on('PLAYER_DAMAGED', async (data) => {
data.victim = await this.getPlayerByName(data.victimName);
data.attacker = await this.getPlayerByName(data.attackerName);

View File

@ -4,6 +4,7 @@ import AdminBroadcast from './admin-broadcast.js';
import DeployableDamaged from './deployable-damaged.js';
import NewGame from './new-game.js';
import PlayerConnected from './player-connected.js';
import PlayerDisconnected from './player-disconnected.js';
import PlayerDamaged from './player-damaged.js';
import PlayerDied from './player-died.js';
import PlayerPossess from './player-possess.js';
@ -25,6 +26,7 @@ export default class SquadLogParser extends LogParser {
DeployableDamaged,
NewGame,
PlayerConnected,
PlayerDisconnected,
PlayerDamaged,
PlayerDied,
PlayerPossess,

View File

@ -9,6 +9,7 @@ export default {
steamID: logParser.eventStore['steamid-connected']
};
logParser.eventStore[`player-name-tracker-${data.steamID}`] = data.playerSuffix;
logParser.emit('PLAYER_CONNECTED', data);
}
};

View File

@ -0,0 +1,19 @@
export default {
regex: /^\[([0-9.:-]+)]\[([ 0-9]*)]LogEasyAntiCheatServer: \[[0-9:]+]\[[A-z]+]\[EAC Server] \[Info]\[UnregisterClient] Client: ([A-z0-9]+) PlayerGUID: ([0-9]{17})/,
onMatch: (args, logParser) => {
const playerTrackerObjectName = `player-name-tracker-${args[4]}`;
const data = {
raw: args[0],
time: args[1],
chainID: args[2],
playerSuffix: logParser.eventStore[playerTrackerObjectName] ? logParser.eventStore[playerTrackerObjectName] : 'Unknown',
steamID: args[4]
};
if (logParser.eventStore[playerTrackerObjectName])
delete logParser.eventStore[playerTrackerObjectName];
logParser.emit('PLAYER_DISCONNECTED', data);
}
};

View File

@ -137,6 +137,9 @@ export default class DBLog extends BasePlugin {
lastName: {
type: DataTypes.STRING
}
}, {
charset: 'utf8mb4',
collate: 'utf8mb4_unicode_ci'
});
this.createModel('Wound', {
@ -176,6 +179,9 @@ export default class DBLog extends BasePlugin {
teamkill: {
type: DataTypes.BOOLEAN
}
}, {
charset: 'utf8mb4',
collate: 'utf8mb4_unicode_ci'
});
this.createModel('Death', {
@ -218,6 +224,9 @@ export default class DBLog extends BasePlugin {
teamkill: {
type: DataTypes.BOOLEAN
}
}, {
charset: 'utf8mb4',
collate: 'utf8mb4_unicode_ci'
});
this.createModel('Revive', {
@ -269,6 +278,9 @@ export default class DBLog extends BasePlugin {
reviverSquadID: {
type: DataTypes.INTEGER
}
}, {
charset: 'utf8mb4',
collate: 'utf8mb4_unicode_ci'
});
this.models.Server.hasMany(this.models.TickRate, {