Difference between revisions of "Private Server Common Tasks"

From Screeps Wiki
Jump to navigation Jump to search
(Refactored sections and added more commands)
(Rearranged content)
Line 1: Line 1:
 
[[Category:Private Server|Common Tasks]]
 
[[Category:Private Server|Common Tasks]]
= Server CLI Commands =
 
   
  +
This page provides a list of common tasks that can be performed on a [https://wiki.screepspl.us/index.php/Private_Server Private Server] using the CLI server.
Run these commands in the screeps server CLI to perform various tasks.
 
   
  +
The CLI server is accessed through the terminal or command prompt and can be used to control the server and modify server settings.
== Getting Started ==
 
  +
 
== CLI Server Commands ==
   
 
=== Commands List ===
 
=== Commands List ===
   
  +
Get a list of available commands.
Get the list of supported commands. When using server mods, there can be additional commands available that are not listed.
 
 
<code>help()</code>
 
<code>help()</code>
   
  +
Additional commands may be available depending on the server configuration and installed mods.
=== Command Details ===
 
   
  +
== Server Config ==
Describe commands available for each command prefix: storage, map, bots, strongholds, system.
 
  +
<code>help(bots)</code>
 
 
=== System Commands ===
   
  +
Get the commands for managing the server.
== Manage Server ==
 
  +
<code>help(system)</code>
   
 
=== Pause Server Ticks ===
 
=== Pause Server Ticks ===
Line 38: Line 41:
 
<code>system.setTickDuration(1000)</code>
 
<code>system.setTickDuration(1000)</code>
   
== User Settings ==
+
== Users ==
   
 
=== Global Control Level ===
 
=== Global Control Level ===
Line 60: Line 63:
 
<code>storage.db.users.update({ username: 'username' },{ $set: { cpu: 500 } })</code>
 
<code>storage.db.users.update({ username: 'username' },{ $set: { cpu: 500 } })</code>
   
== Room Settings ==
+
== Rooms ==
   
 
=== Controller Level ===
 
=== Controller Level ===
Line 84: Line 87:
 
<code>storage.db['rooms.objects'].update({ type: 'mineral', room: 'W7N3' },{ $set: { mineralAmount: 250000 } })</code>
 
<code>storage.db['rooms.objects'].update({ type: 'mineral', room: 'W7N3' },{ $set: { mineralAmount: 250000 } })</code>
   
=== Regenerate Mineral ===
+
=== Mineral Regeneration Time ===
   
 
Reset the mineral regeneration time.
 
Reset the mineral regeneration time.
<code>storage.db['rooms.objects'].update({ type: 'mineral' },{ $set: { nextRegenerationTime: 0 } })</code>
+
<code>storage.db['rooms.objects'].update({ type: 'mineral' },{ $set: { nextRegenerationTime: 1000000 } })</code>
   
 
=== Add Energy to Storage ===
 
=== Add Energy to Storage ===
Line 106: Line 109:
 
<code>storage.db['rooms.objects'].update({ type: 'constructionSite' },{ $set: { progress: 99999 } })</code>
 
<code>storage.db['rooms.objects'].update({ type: 'constructionSite' },{ $set: { progress: 99999 } })</code>
   
== Repair Structures ==
+
== Repair ==
   
 
=== Repair Ramparts ===
 
=== Repair Ramparts ===
   
Repair all rampart structures to 1M hit points.
+
Repair all rampart structures. The type can be modified to repair other structure types as well.
 
<code>storage.db['rooms.objects'].update({ type: 'rampart' },{ $set: { hits: 1000000 } })</code>
 
<code>storage.db['rooms.objects'].update({ type: 'rampart' },{ $set: { hits: 1000000 } })</code>
   
=== Repair a Rampart ===
+
=== Repair Structure ===
   
Repair a single rampart structure by id.
+
Repair a structure by id.
<code>storage.db['rooms.objects'].update({ _id: 'idOfRampart' },{ $set: { hits: 1000000 } })</code>
+
<code>storage.db['rooms.objects'].update({ _id: 'idOfStructure' },{ $set: { hits: 1000000 } })</code>
   
== Strongholds ==
+
== Map ==
   
=== Add Invader Core ===
+
=== Map Commands ===
   
  +
Get the commands for managing the world map.
Add an [https://docs.screeps.com/api/#StructureInvaderCore Invader Core] to a room. The number in the templateName is the stronghold level.
 
<code>strongholds.spawn('W4N5', { templateName: 'bunker3' })</code>
+
<code>help(map)</code>
 
=== Remove Invader Cores ===
 
 
Remove Invader Cores from all rooms.
 
<code>storage.db['rooms.objects'].removeWhere({ type: 'invaderCore' })</code>
 
 
=== Add Invader Core Ruin ===
 
 
Add an Invader Core Ruin to a room. This can be used to prevent new invader cores from spawning in a room.
 
<code>storage.db['rooms.objects'].insert({ room: 'W6N4', x: 25, y: 32, type: 'ruin', structure: { id: '652eb0d77373ad0040d22421', type: 'invaderCore', hits: 0, hitsMax: 100000, user: '2'}, user: '2', store: {}, destroyTime: 1, decayTime: 5000000 })</code>
 
 
== NPC Invaders ==
 
 
=== Spawn NPC Invader ===
 
 
Add a ranged attack NPC invader to a room.
 
<code>storage.db['rooms.objects'].insert({ room: 'W6N3', x: 0, y: 11, type: 'creep', user: '2', name: 'invader_small_ranged', body: [{ type: 'tough', hits: 100 },{ type: 'tough', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'ranged_attack', hits: 100 },{ type: 'ranged_attack', hits: 100 },{ type: 'ranged_attack', hits: 100 },{ type: 'move', hits: 100 } ], hits: 1000, hitsMax: 1000, ticksToLive: 1500, fatigue: 0, store: {}, storeCapacity: 0 })</code>
 
 
Add a melee NPC invader to a room.
 
<code>storage.db['rooms.objects'].insert({ room: 'W6N3', x: 1, y: 40, type: 'creep', user: '2', name: 'invader_small_melee', body: [{ type: 'tough', hits: 100 },{ type: 'tough', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'attack', hits: 100 },{ type: 'attack', hits: 100 },{ type: 'attack', hits: 100 },{ type: 'move', hits: 100 } ], hits: 1000, hitsMax: 1000, ticksToLive: 1500, fatigue: 0, store: {}, storeCapacity: 0 })</code>
 
 
Add a healer NPC invader to a room.
 
<code>storage.db['rooms.objects'].insert({ room: 'W6N3', x: 1, y: 41, type: 'creep', user: '2', name: 'invader_small_healer', body: [{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'move', hits: 100 } ], hits: 1000, hitsMax: 1000, ticksToLive: 1500, fatigue: 0, store: {}, storeCapacity: 0 })</code>
 
 
== Map Commands ==
 
   
 
=== Insert New Room ===
 
=== Insert New Room ===
Line 188: Line 166:
 
<code>storage.db['rooms.objects'].insert({ room: 'W5N5', x: 25, y: 25, type: 'portal', destination: { x: 25, y: 25, room: 'E5N5' }, ticksToDecay: 100000 })</code>
 
<code>storage.db['rooms.objects'].insert({ room: 'W5N5', x: 25, y: 25, type: 'portal', destination: { x: 25, y: 25, room: 'E5N5' }, ticksToDecay: 100000 })</code>
   
== Find Commands ==
+
== Bots ==
  +
  +
=== Bots Commands ===
  +
  +
Get the commands for managing bots.
 
<code>help(bots)</code>
  +
  +
== Strongholds ==
  +
  +
=== Strongholds Commands ===
  +
  +
Get the commands for managing strongholds.
  +
<code>help(strongholds)</code>
  +
  +
=== Add Invader Core ===
  +
 
Add an [https://docs.screeps.com/api/#StructureInvaderCore Invader Core] to a room. The number in the templateName is the stronghold level.
  +
<code>strongholds.spawn('W4N5', { templateName: 'bunker3' })</code>
  +
 
=== Remove Invader Cores ===
  +
 
Remove Invader Cores from all rooms.
 
<code>storage.db['rooms.objects'].removeWhere({ type: 'invaderCore' })</code>
  +
 
=== Add Invader Core Ruin ===
  +
 
Add an Invader Core Ruin to a room. This can be used to prevent new invader cores from spawning.
 
<code>storage.db['rooms.objects'].insert({ room: 'W6N4', x: 25, y: 32, type: 'ruin', structure: { id: '652eb0d77373ad0040d22421', type: 'invaderCore', hits: 0, hitsMax: 100000, user: '2'}, user: '2', store: {}, destroyTime: 1, decayTime: 5000000 })</code>
  +
 
== NPC Invaders ==
  +
 
=== Spawn NPC Invader ===
  +
 
Add a ranged attack NPC invader to a room.
 
<code>storage.db['rooms.objects'].insert({ room: 'W6N3', x: 0, y: 11, type: 'creep', user: '2', name: 'invader_small_ranged', body: [{ type: 'tough', hits: 100 },{ type: 'tough', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'ranged_attack', hits: 100 },{ type: 'ranged_attack', hits: 100 },{ type: 'ranged_attack', hits: 100 },{ type: 'move', hits: 100 } ], hits: 1000, hitsMax: 1000, ticksToLive: 1500, fatigue: 0, store: {}, storeCapacity: 0 })</code>
  +
 
Add a melee NPC invader to a room.
 
<code>storage.db['rooms.objects'].insert({ room: 'W6N3', x: 1, y: 40, type: 'creep', user: '2', name: 'invader_small_melee', body: [{ type: 'tough', hits: 100 },{ type: 'tough', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'attack', hits: 100 },{ type: 'attack', hits: 100 },{ type: 'attack', hits: 100 },{ type: 'move', hits: 100 } ], hits: 1000, hitsMax: 1000, ticksToLive: 1500, fatigue: 0, store: {}, storeCapacity: 0 })</code>
  +
 
Add a healer NPC invader to a room.
 
<code>storage.db['rooms.objects'].insert({ room: 'W6N3', x: 1, y: 41, type: 'creep', user: '2', name: 'invader_small_healer', body: [{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'move', hits: 100 } ], hits: 1000, hitsMax: 1000, ticksToLive: 1500, fatigue: 0, store: {}, storeCapacity: 0 })</code>
  +
  +
== Find ==
   
 
=== Find Users ===
 
=== Find Users ===
Line 200: Line 220:
 
<code>storage.db.users.findOne({ username: 'username' })</code>
 
<code>storage.db.users.findOne({ username: 'username' })</code>
   
=== Find Room Objects ===
+
=== Find Objects ===
   
 
Find all room objects of a certain type.
 
Find all room objects of a certain type.
 
<code>storage.db['rooms.objects'].find({ room: 'W7N3', type: 'constructionSite' })</code>
 
<code>storage.db['rooms.objects'].find({ room: 'W7N3', type: 'constructionSite' })</code>
   
== User Memory ==
+
== Memory ==
   
 
=== Get User Memory ===
 
=== Get User Memory ===
Line 215: Line 235:
 
<code>storage.db.users.find({ username: 'username' }).then(([first]) => storage.env.get(storage.env.keys.MEMORY + first._id ))</code>
 
<code>storage.db.users.find({ username: 'username' }).then(([first]) => storage.env.get(storage.env.keys.MEMORY + first._id ))</code>
   
== Reset Server ==
+
== Wipe Server ==
   
 
=== Reset Server Data ===
 
=== Reset Server Data ===
   
Reset user data, rooms, GCL, GPL, server settings, etc.
+
Wipe the map and reset all user data, rooms, GCL, GPL, server settings, etc.
 
<code>system.resetAllData()</code>
 
<code>system.resetAllData()</code>
   
Line 229: Line 249:
 
<code>storage.db.rooms.update({ active: true }, { $set: { active: false } })</code>
 
<code>storage.db.rooms.update({ active: true }, { $set: { active: false } })</code>
   
=== Reset World Map Room Images ===
+
=== Reset Map Images ===
   
 
Regenerate room images for the world map.
 
Regenerate room images for the world map.

Revision as of 02:43, 21 April 2024


This page provides a list of common tasks that can be performed on a Private Server using the CLI server.

The CLI server is accessed through the terminal or command prompt and can be used to control the server and modify server settings.

CLI Server Commands

Commands List

Get a list of available commands.

help()

Additional commands may be available depending on the server configuration and installed mods.

Server Config

System Commands

Get the commands for managing the server.

help(system)

Pause Server Ticks

Pause the server to prevent ticks from running.

system.pauseSimulation()

Resume Server Ticks

Resume the server to allow ticks to run.

system.resumeSimulation()

Tick Rate

Get the current tick duration.

system.getTickDuration()

Change Tick Rate

Set the server tick duration to 1000 milliseconds per tick, default is 1000.

system.setTickDuration(1000)

Users

Global Control Level

Change the GCL of a user.

storage.db.users.update({ username: 'username' },{ $set: { gcl: 38000000 } })

Global Power Level

Change the GPL of a user.

storage.db.users.update({ username: 'username' },{ $set: { power: 540000 } })

Market Credits

Change the credits of a user.

storage.db.users.update({ username: 'username' },{ $set: { money: 2000000 } })

CPU Limit

Change the CPU limit of a user.

storage.db.users.update({ username: 'username' },{ $set: { cpu: 500 } })

Rooms

Controller Level

Change the room's controller level (RCL).

storage.db['rooms.objects'].update({ _id: 'idOfController' },{ $set: { level: 8 } })

Controller Progress

Change the progress amount of a controller.

storage.db['rooms.objects'].update({ room: 'W7N3', type: 'controller' },{ $set: { progress: 10899000 } })

Remove Objects

Remove all Ruins from a room. This can be used to remove other game object types as well.

storage.db['rooms.objects'].removeWhere({ type: 'ruin' })

Resources

Mineral Amount

Change the available amount of a mineral.

storage.db['rooms.objects'].update({ type: 'mineral', room: 'W7N3' },{ $set: { mineralAmount: 250000 } })

Mineral Regeneration Time

Reset the mineral regeneration time.

storage.db['rooms.objects'].update({ type: 'mineral' },{ $set: { nextRegenerationTime: 1000000 } })

Add Energy to Storage

Add energy to a storage structure.

storage.db['rooms.objects'].update({ type: 'storage', room: 'W7N3' },{ $set: { store: { energy: 100000 } } })

Add Minerals to Storage

Add minerals to a storage structure.

storage.db['rooms.objects'].update({ type: 'storage', room: 'W7N3' },{ $set: { store: { H: 25000, O: 25000, U: 25000, L: 25000, K: 25000, Z: 25000, X: 25000 } } })

Construction Sites

Max Construction Progress

Set max progress on all construction sites. As soon as a creep does any construction the structure will be built.

storage.db['rooms.objects'].update({ type: 'constructionSite' },{ $set: { progress: 99999 } })

Repair

Repair Ramparts

Repair all rampart structures. The type can be modified to repair other structure types as well.

storage.db['rooms.objects'].update({ type: 'rampart' },{ $set: { hits: 1000000 } })

Repair Structure

Repair a structure by id.

 storage.db['rooms.objects'].update({ _id: 'idOfStructure' },{ $set: { hits: 1000000 } })

Map

Map Commands

Get the commands for managing the world map.

help(map)

Insert New Room

Generate a new room and add it to the world.

map.generateRoom('W11N11', { sources: 2 })

Open Room

Make a room available for use.

map.openRoom('W5N1')

Open a room in 5 minutes.

map.openRoom('W5N1', Date.now() + 300 * 1000)

Close Room

Make a room not available.

map.closeRoom('W5N1')

Add NPC Terminals

Add a NPC Terminal to a room. Repeat as many times as desired changing rooms (Use highway rooms or SK rooms). NPC orders should appear on the market automatically after a little while.

storage.db['rooms.objects'].insert({ room: 'W0N0', x: 0, y: 0, type: 'terminal' })

Add Power Banks

Add a Power Bank to a room.

storage.db['rooms.objects'].insert({ room: 'W4N10', x: 25, y: 25, type: 'powerBank', store: { power: 4000 }, hits: 10000, hitsMax: 10000, decayTime: 1000000 })

Add Deposits

Add a Deposit to a room, change the depositType to change type of the deposit.

storage.db['rooms.objects'].insert({ room: 'W0N9', x: 16, y:26, type: 'deposit', depositType: 'mist' })

Add Portals

Add a Portal to a room. Run this command twice and create portals going both directions for the best result.

storage.db['rooms.objects'].insert({ room: 'W5N5', x: 25, y: 25, type: 'portal', destination: { x: 25, y: 25, room: 'E5N5' }, ticksToDecay: 100000 })

Bots

Bots Commands

Get the commands for managing bots.

help(bots)

Strongholds

Strongholds Commands

Get the commands for managing strongholds.

help(strongholds)

Add Invader Core

Add an Invader Core to a room. The number in the templateName is the stronghold level.

strongholds.spawn('W4N5', { templateName: 'bunker3' })

Remove Invader Cores

Remove Invader Cores from all rooms.

storage.db['rooms.objects'].removeWhere({ type: 'invaderCore' })

Add Invader Core Ruin

Add an Invader Core Ruin to a room. This can be used to prevent new invader cores from spawning.

storage.db['rooms.objects'].insert({ room: 'W6N4', x: 25, y: 32, type: 'ruin', structure: { id: '652eb0d77373ad0040d22421', type: 'invaderCore', hits: 0, hitsMax: 100000, user: '2'}, user: '2', store: {}, destroyTime: 1, decayTime: 5000000 })

NPC Invaders

Spawn NPC Invader

Add a ranged attack NPC invader to a room.

storage.db['rooms.objects'].insert({ room: 'W6N3', x: 0, y: 11, type: 'creep', user: '2', name: 'invader_small_ranged', body: [{ type: 'tough', hits: 100 },{ type: 'tough', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'ranged_attack', hits: 100 },{ type: 'ranged_attack', hits: 100 },{ type: 'ranged_attack', hits: 100 },{ type: 'move', hits: 100 } ], hits: 1000, hitsMax: 1000, ticksToLive: 1500, fatigue: 0, store: {}, storeCapacity: 0 })

Add a melee NPC invader to a room.

storage.db['rooms.objects'].insert({ room: 'W6N3', x: 1, y: 40, type: 'creep', user: '2', name: 'invader_small_melee', body: [{ type: 'tough', hits: 100 },{ type: 'tough', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'attack', hits: 100 },{ type: 'attack', hits: 100 },{ type: 'attack', hits: 100 },{ type: 'move', hits: 100 } ], hits: 1000, hitsMax: 1000, ticksToLive: 1500, fatigue: 0, store: {}, storeCapacity: 0 })

Add a healer NPC invader to a room.

storage.db['rooms.objects'].insert({ room: 'W6N3', x: 1, y: 41, type: 'creep', user: '2', name: 'invader_small_healer', body: [{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'move', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'heal', hits: 100 },{ type: 'move', hits: 100 } ], hits: 1000, hitsMax: 1000, ticksToLive: 1500, fatigue: 0, store: {}, storeCapacity: 0 })

Find

Find Users

Find all users.

storage.db.users.find()

Find a User

Find a user by their username to get data such as the user id.

storage.db.users.findOne({ username: 'username' })

Find Objects

Find all room objects of a certain type.

storage.db['rooms.objects'].find({ room: 'W7N3', type: 'constructionSite' })

Memory

Get User Memory

Get the memory of a user by their user id.

storage.env.get('memory:41dbd8207f1bf62')

Alternatively you can find the user by their username and chain together the commands to get the memory.

storage.db.users.find({ username: 'username' }).then(([first]) => storage.env.get(storage.env.keys.MEMORY + first._id ))

Wipe Server

Reset Server Data

Wipe the map and reset all user data, rooms, GCL, GPL, server settings, etc.

system.resetAllData()

Server Fixes

Reset Room Activity

Occasionally, a server may encounter an issue where all rooms are set to active for processing, even those without player objects. The cause of this issue is unknown, but it can result in the server running slowly. By setting rooms to inactive, you can resolve this issue and improve server performance.

storage.db.rooms.update({ active: true }, { $set: { active: false } })

Reset Map Images

Regenerate room images for the world map.

storage.db.rooms.find().then(rooms => rooms.map(r => map.updateRoomImageAssets(r._id)))