diff --git a/squad-server/index.js b/squad-server/index.js index 43a68b56..0a479d95 100644 --- a/squad-server/index.js +++ b/squad-server/index.js @@ -224,6 +224,15 @@ export default class SquadServer extends EventEmitter { this.emit('PLAYER_CONNECTED', data); }); + this.logParser.on('PLAYER_PREFIX', async (data) => { + data.player = await this.getPlayerByEOSID(data.eosID, true); + if (data.player && data.player.suffix) { + const prefixLen = data.player.name.length - data.player.suffix.length - 1; + data.player.prefix = data.player.name.substr(0, prefixLen); + this.emit('PLAYER_PREFIX', data); + } + }); + this.logParser.on('PLAYER_DISCONNECTED', async (data) => { data.player = await this.getPlayerByEOSID(data.eosID); diff --git a/squad-server/log-parser/player-prefix.js b/squad-server/log-parser/player-prefix.js new file mode 100644 index 00000000..db1a146b --- /dev/null +++ b/squad-server/log-parser/player-prefix.js @@ -0,0 +1,22 @@ +import { iterateIDs, lowerID } from 'core/id-parser'; + +export default { + regex: + /^\[([\d.:-]+)\]\[([ \d]*)\]LogSquadCommon: SQCommonStatics Check Permissions, UniqueId:(\w+)/, + onMatch: (args, logParser) => { + const eosID = args[3]; + const player = logParser.eventStore.players[eosID]; + if (!player || !player.playerSuffix || player.seen) + return; + player.seen = true; + + const data = { + raw: args[0], + time: args[1], + chainID: +args[2], + ...player + }; + + logParser.emit('PLAYER_PREFIX', data); + } +};