A companion library in JavaScript for the Fallout 4 pip boy app.
This is a node library, so you'll need node
and npm
. If, like Nick Valentine, you're close to the metal:
npm install pipboylib
In order for this library to have any utility, you'll need a running Fallout 4 game with the pip-boy app enabled. It only works on PS4 and PC at the moment (see pipboylib#27).
import {
connection,
decoding,
status,
constants
} from 'pipboylib'
const {
discover,
createSocket,
sendPeriodicHeartbeat
} = connection
const {
createObservable,
parseBinaryDatabase,
aggregateBundles,
generateTreeFromDatabase
} = decoding
const {
connected
} = status
const {
channels
} = constants
discover()
.then(server => createSocket(server.info.address))
.then(socket => {
sendPeriodicHeartbeat(socket)
return createObservable(socket)
})
.then(observable => {
connected(observable)
.then(handshake => {
console.log('Connected!', handshake)
const database = observable
.filter(x => x.type === channels.DatabaseUpdate)
.map(x => parseBinaryDatabase(x.payload))
.scan(aggregateBundles, {})
.map(x => generateTreeFromDatabase(x))
database
.map(x => x.Map.World.Player)
.map(x => ({
x: x.X || null,
y: x.Y || null,
deg: x.Rotation || null
}))
.distinctUntilChanged()
.subscribe(x => {
console.log('Player Position:', x)
})
})
.catch(err => {
console.error('Couldn\'t establish connection!', err)
})
})
.catch(err => {
throw err
})
See examples or the Electron app, pipboy, for more examples.