screepsmod-admin-utils
Version:
## This is a Collection of utilities for Screeps Private Server admins
127 lines (80 loc) • 4.62 kB
Markdown
# screepsmod-admin-utils
## This is a Collection of utilities for Screeps Private Server admins
[](https://standardjs.com)
[](https://npmjs.com/package/screepsmod-admin-utils)
[](https://npmjs.com/package/screepsmod-admin-utils)
[](https://npmjs.com/package/screepsmod-admin-utils)
[](https://github.com/ScreepsMods/screepsmod-admin-utils/actions/workflows/test.yml)
[](https://github.com/ScreepsMods/screepsmod-admin-utils/actions/workflows/publish.yml)

## Commands
### utils.importMap(urlOrId)
<span style="color:orange">NOTE: [screepsmod-mongo](https://github.com/screepsmods/screepsmod-mongo) required for map imports</span>
Imports a map from a url or [maps.screepspl.us](https://maps.screepspl.us)
If the id is `random` or `random_WxH` a map will be randomly selected.
1x1 is assumed if size isn't specified.
The server will be paused on tick one, use `system.resumeSimulation()` to unpause
### utils.importMapFile(filePath)
Imports a map from a json file.
### utils.addNPCTerminals(interval = 10)
Creates NPC Terminals.
The `interval` defines how often they are added, with the default value of `10` matching the behavior of the public server.
A simple way to understand the `interval` is that it will place rooms where `x % interval === 0 && y % interval === 0`.
### utils.removeNPCTerminals()
Removes all NPC Terminals.
### utils.removeBots()
Removes all Bots.
### utils.setTickRate(value) <span style="color:red">DEPRECATED</span>
Deprecated in favor of `system.setTickDuration(value)`
~~Sets the tick rate to value (in milliseconds)~~
### utils.getTickRate() <span style="color:red">DEPRECATED</span>
Deprecated in favor of `system.getTickDuration()`
~~Gets the current tick rate~~
### utils.setSocketUpdateRate(value)
Sets socket update rate (in ms)
### utils.getSocketUpdateRate()
Returns current socket update rate
### utils.setShardName(value)
Sets the shard name
### utils.getCPULimit(username)
Returns current cpu limit for username.
### utils.setCPULimit(username, value)
Sets cpu limit to value for username. Will be overriden if GCLToCPU scaling is enabled.
### utils.enableGCLToCPU([maxCPU], [baseCPU], [stepCPU])
Enables GCLToCPU scaling which raises all user's CPU limit based on their GCL. The formula is "Math.min( (gclLevel * stepCPU + baseCPU), maxCPU )". Parameters are optional and default to maxCPU = 300, baseCPU = 20, stepCPU = 10. Enabling through the CLI will not persist after a server restart. Update the values in your config.yml to persist the settings.
### utils.disableGCLToCPU()
Disables GCLToCPU scaling. Disabling through the CLI will not persist after a server restart. Update the values in your config.yml to persist the setting.
### utils.reloadConfig()
Reloads the serverConfig section of a screeps-launcher config.yml
## Config file
config.yml example: (This can be the same file as screeps-launcher's config.yml)
```yaml
# Most of these fields will live reload on save.
# Values set here will override any saved via CLI on server startup
serverConfig:
map: random_1x2 # utils.importMap will be called automatically with this value, see utils.importMap above
tickRate: 200
socketUpdateRate: 200
whitelist: # Does not restrict login, only restricts spawning
- ags131
- zeswarm
shardName: 'screepsplus1'
constants:
UPGRADE_POWER: 10
POWER_CREEP_SPAWN_COOLDOWN: 3600000 # 1 Hour
POWER_CREEP_DELETE_COOLDOWN: 3600000
welcomeText: |
<h1>Welcome</h1>
<div>Powered by screepsmod-admin-utils</div>
statsToken: ...splusToken... # This enables submitting stats to S+ Grafana. Note: shardName MUST be set
gclToCPU: true
maxCPU: 100
baseCPU: 20
stepCPU: 10
```
## Endpoints
A few extra endpoints are implemented enabling some extra debuging and tools
`GET /stats` Lots of useful stats on server performance
`GET /api/user/world-start-room` Dynamically returns a start room for the client
`GET /api/experimental/pvp` Same as on mmo, returns active pvp rooms.
`GET /api/experimental/nukes` Same as on mmo, returns nukes.