feat: add BeamMP support (#447)

* feat: add beammp support

* fix: cleanup server name of escape codes

* chore: add a new line for better readability
This commit is contained in:
CosminPerRam 2023-12-30 22:41:56 +02:00 committed by GitHub
parent 68c8423c84
commit 6bfbc883be
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 61 additions and 1 deletions

32
protocols/beammp.js Normal file
View file

@ -0,0 +1,32 @@
import Core from './core.js'
import beammpmaster from './beammpmaster.js'
export default class beammp extends Core {
async run (state) {
const master = new beammpmaster()
master.options = this.options
const masterState = await master.runOnceSafe()
const servers = masterState.raw.servers
const server = servers.find(s => s.ip === this.options.host)
if (!server) {
throw new Error('Server not found in the master list')
}
state.name = server.sname.replace(/\^./g, '')
state.map = server.map
state.password = server.password
state.numplayers = parseInt(server.players)
state.maxplayers = parseInt(server.players)
const players = server.playerslist.split(';')
if (players[players.length - 1] === '') {
players.pop()
}
players.forEach(player => {
state.players.push({ name: player })
})
state.raw = server
}
}

17
protocols/beammpmaster.js Normal file
View file

@ -0,0 +1,17 @@
import Core from './core.js'
export default class beammpmaster extends Core {
constructor () {
super()
// Don't use the tcp ping probing
this.usedTcp = true
}
async run (state) {
state.raw.servers = await this.request({
url: 'https://backend.beammp.com/servers-info',
responseType: 'json'
})
}
}

View file

@ -48,11 +48,13 @@ import valve from './valve.js'
import vcmp from './vcmp.js'
import ventrilo from './ventrilo.js'
import warsow from './warsow.js'
import beammpmaster from './beammpmaster.js'
import beammp from './beammp.js'
export {
armagetron, ase, asa, assettocorsa, battlefield, buildandshoot, cs2d, discord, doom3, eco, epic, ffow, fivem, gamespy1,
gamespy2, gamespy3, geneshift, goldsrc, hexen2, jc2mp, kspdmp, mafia2mp, mafia2online, minecraft,
minecraftbedrock, minecraftvanilla, mumble, mumbleping, nadeo, openttd, quake1, quake2, quake3, rfactor, samp,
savage2, starmade, starsiege, teamspeak2, teamspeak3, terraria, tribes1, tribes1master, unreal2, ut3, valve,
vcmp, ventrilo, warsow, eldewrito
vcmp, ventrilo, warsow, eldewrito, beammpmaster, beammp
}