SquadJS/squad-server/log-parser/player-connected.js
ect0s 49809169b8 Player Connection/Disconnection Flow. cleareventStore caller
pending connection destroyed: error path for clients that fail to connect, required to cleanup connection state in this error case.

client-connected: Supersedes steamid connected, use base unreal engine client flow. Removes dependancy on EAC (broken as of squad 3.4). First step in resolving a new client connection. this gets us a connection id, steamid.

client-login: 2nd step in player connected flow, this setups the steamid into eventstore.steamid-connected.

playercontroller connected: gets us player controller. used in player connected flow.

player-connected: update to use new eventStore layout, now all players should always have suffix,steamid,controller. These are now also cached within the logparser for lookup. last step in player connected flow.

player-disconnected: uses new eventStore layout, marks players in eventStore.disconnected but doesn't remove cached players till map change; may be needed in cases with delayed logs, needs further testing. Broken as of Squad 3.4 due to EAC changes

steamid-connected: Removed in favor of client-connected, no longer works as of squad 3.4 due to EAC changes.
2022-11-09 20:20:50 -05:00

28 lines
886 B
JavaScript

export default {
regex: /^\[([0-9.:-]+)]\[([ 0-9]*)]LogNet: Join succeeded: (.+)/,
onMatch: (args, logParser) => {
const data = {
raw: args[0],
time: args[1],
chainID: args[2],
playerSuffix: args[3],
steamID: logParser.eventStore['steamid-connected'], // player connected
controller: logParser.eventStore['player-controller'] // playercontroller connected
};
delete logParser.eventStore['steamid-connected'];
delete logParser.eventStore['player-controller'];
// Handle Reconnecting players
if (logParser.eventStore.disconnected[data.steamID]) {
delete logParser.eventStore.disconnected[data.steamID];
}
logParser.emit('PLAYER_CONNECTED', data);
logParser.eventStore.players[data.steamID] = {
steamID: data.steamID,
suffix: data.playerSuffix,
controller: data.controller
};
}
};