mirror of
https://github.com/tribufu/node-gamedig
synced 2026-05-06 15:17:36 +00:00
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:
parent
68c8423c84
commit
6bfbc883be
6 changed files with 61 additions and 1 deletions
32
protocols/beammp.js
Normal file
32
protocols/beammp.js
Normal 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
17
protocols/beammpmaster.js
Normal 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'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue