2020-10-25 19:11:47 -05:00
|
|
|
import Rcon from './index.js';
|
|
|
|
|
|
|
|
export default class SquadRcon extends Rcon {
|
|
|
|
async broadcast(message) {
|
|
|
|
await this.execute(`AdminBroadcast ${message}`);
|
|
|
|
}
|
|
|
|
|
|
|
|
async getLayerInfo() {
|
|
|
|
const response = await this.execute('ShowNextMap');
|
|
|
|
const match = response.match(/^Current map is (.+), Next map is (.*)/);
|
|
|
|
return { currentLayer: match[1], nextLayer: match[2].length === 0 ? null : match[2] };
|
|
|
|
}
|
|
|
|
|
|
|
|
async getListPlayers() {
|
|
|
|
const response = await this.execute('ListPlayers');
|
|
|
|
|
|
|
|
const players = [];
|
|
|
|
|
|
|
|
for (const line of response.split('\n')) {
|
|
|
|
const match = line.match(
|
|
|
|
/ID: ([0-9]+) \| SteamID: ([0-9]{17}) \| Name: (.+) \| Team ID: ([0-9]+) \| Squad ID: ([0-9]+|N\/A)/
|
|
|
|
);
|
|
|
|
if (!match) continue;
|
|
|
|
|
|
|
|
players.push({
|
|
|
|
playerID: match[1],
|
|
|
|
steamID: match[2],
|
|
|
|
name: match[3],
|
|
|
|
teamID: match[4],
|
|
|
|
squadID: match[5] !== 'N/A' ? match[5] : null
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
return players;
|
|
|
|
}
|
|
|
|
|
|
|
|
async warn(steamID, message) {
|
|
|
|
await this.execute(`AdminWarn "${steamID}" ${message}`);
|
|
|
|
}
|
|
|
|
|
|
|
|
async switchTeam(steamID) {
|
|
|
|
await this.execute(`AdminForceTeamChange "${steamID}"`);
|
|
|
|
}
|
2020-10-25 19:12:20 -05:00
|
|
|
}
|