Roleplay & Permissions turns a multiplayer server into a community with property and an economy. Every part belongs to its builder; anyone who wants to use, open, modify or dismantle someone else's part needs a permission. On top come groups and companies with ranks, plots to buy or rent, employment contracts, taxes, an ID card with licences, fines, safe trade, a marketplace and game master tools. Money runs through the Banking System.
The server decides everything. The server checks every action of a player before it takes effect – it determines the sender from the connection, not from the message. Players only see a hint in the tooltip beforehand. In single player the protection is off.
Requirements
- Stationeers 0.2.6428, BepInEx 5.4.23.5, StationeersLaunchPad 1.0, see Installation
- The server and all players need the mod (new devices and networking)
- Recommended: Banking System – without the bank, everything that costs or moves money is off: buying, renting, salaries, taxes, fees, fine payments, money in trades and the marketplace (visible in the window with a hint). With
PreisJeParzelle,AusweisGebuehr,GruendungsKostenandLizenzPreisat 0, plots, groups, ID cards and licences work without the bank too.
Building and recipes
| Part | Machine | Cost | Power |
|---|---|---|---|
| ID card (blank) | Electronics Printer | 1 iron, 1 gold, 1 copper, 1 silicon | – |
| Kit plot marker | Autolathe | 4 iron, 2 steel, 1 copper | – |
| Kit ID reader | Electronics Printer | 4 iron, 2 steel, 4 copper, 3 gold, 2 silicon | 15 W |
| Kit marketplace terminal | Electronics Printer | 12 iron, 6 steel, 8 copper, 5 gold, 4 silicon | 60 W |
| Device | Prefab | Hash | Form |
|---|---|---|---|
| Plot marker | StructureRpGrundstueckspfahl | -1093130804 | floor, 1.24 m, rotate with C + mouse wheel |
| ID reader | StructureRpAusweisleser | 1447424244 | wall, front 0.2 m off the wall, cable below |
| Marketplace terminal | StructureRpMarktterminal | 1182894667 | floor, 1.5 m, cable at the back at floor level |
| ID card | ItemRpAusweis | 627585974 | card, fits the card slots of the uniform |
Reader and terminal are paintable. Mount the ID reader so its screen sits about 1 m above the floor – the eye height of the character.
First steps
Setting up the server
- Put the mod and the Banking System into the server's mod folder and enable them in
modconfig.xml. - Define admins: Steam IDs in
AdminSteamIds(comma separated) or anAdminPasswordin the server'ssetting.xml– admins then log in withrp login PASSWORDor in the window. The host of a game is always admin (HostIstAdmin). - Set prices, taxes and fines in the config
dominik1199.rollenspiel.cfg(table below). - Enter server rules in the window (F7 → Game master → Rules) or with
rp rule TEXT– everyone sees them under Overview.
As a player
- F7 opens the roleplay window.
- Print a blank ID card, insert it into an ID reader, click the screen, issue ID card.
- Build a plot marker (allowed on free land too), click its sign, Use starter size and Create starter plot for free – your first plot is free. Buy or rent larger or additional plots. You can only build on your own plot.
- Found a company under Groups and invite members; trust friends under Property.
Ownership and permissions
Who owns a part is stored with the part itself in the save (the game remembers the builder anyway). What is built on a plot belongs to the plot owner – so everything a company's employees build on the company plot belongs to the company (BautenGehoerenGrundstueck).
| Level | For |
|---|---|
| Use | buttons, switches, doors, levers; choosing a recipe; other players' IC10 chips may write |
| Open | slots, lockers, crates, machine slots – in and out |
| Build/Modify | continue building, repair, upgrade, label, paint, set logic devices, program IC10, sorters; build and dig on a plot |
| Dismantle | deconstruct, remove wrecks |
| Manage | set permissions, transfer ownership, configure ID readers |
Permissions exist on three levels:
- Trust list (F7 → Property, bottom): applies to everything you or your group own – parts and plots.
- Permissions on a part: only for that part, also "for everyone" (e.g. a public door).
- Permissions on a plot: who may build there.
An entry applies to one player, to a group (all members or from a rank upwards) or to everyone. Presets: Guest (Use), Employee (+ Open), Craftsman (+ Build), Trusted (+ Dismantle), Manager (everything).
What is protected, what is not
| protected | not protected |
|---|---|
| parts and everything in their slots | loose items on the ground |
| inventory of living players | inventory of dead players (LeichenDurchsuchen) |
logic writes (IC10 s/sb/sbn/sd/ss/put/clr, logic writers) to foreign devices | reading (l/lb/lbn) – the data network is shared |
explosion damage to owned parts on plots (Explosionsschutz) | fire, pressure, weather |
building, digging and blasting on a foreign plot; building and dismantling on free land (FreiesLandGesperrt) | digging and mining on free land (FreiesLandGraben) |
ATMs and the shop vending machine of the bank, ID readers, marketplace terminals and plot markers stay usable for everyone (OeffentlicheGeraete) – only the owner may dismantle them.
Existing parts. Whatever was built before the mod was installed belongs to the community by default (everyone may do everything except Manage, GemeinschaftDarf). With AltbestandGehoert = Server it belongs to the server (players may use and open, ServerDarf); with Erbauer to the player who built it. Existing parts inside a plot belong to the plot owner (AltbestandGehoertGrundstueck). The game master can transfer ownership at any time (F7 → Game master → Property, rp owner).
Tooltip and look info. When you look at someone else's property, the owner and your rights (U O M D A) appear below the crosshair. If a permission is missing, the tooltip shows "Belongs to … – no permission" before you even start.
Groups, companies, factions
F7 → Groups. Founding costs GruendungsKosten (to the state); only the game master founds authorities. Companies get a company account in the Banking System right away, other groups at the push of a button.
- Joining only by invitation (valid
EinladungStunden), accept or decline in the window. - Ranks: rank 1 is the leadership (always everything), below it any number of ranks (up to 10). Each rank has rights on the group's property (permission levels) and powers: invite, dismiss, manage ranks, pay from the account, manage the account, plots, contracts, manage group property, issue licences (authorities only).
- Bank rights on the company account follow the rank: manage account = manager, pay from account = payer, otherwise view.
- Dissolving: property goes to the one who dissolves, rented plots and contracts end, the company account stays in the bank.
Plots
A plot is a rectangle of parcels (ParzelleMeter, default 8 m) over the full height. It is created at a plot marker: click the sign, choose the extent in parcels forward, back, left and right (as seen by someone standing in front of the sign; the yellow arrow on the foot points forward), then choose name and owner (you or a group). A yellow preview shows the rectangle.
- Buy: parcels ×
PreisJeParzelleto the state, plus property taxGrundsteuerJeParzelleeveryGrundsteuerIntervallStundenby standing order. Giving up refundsRueckerstattungProzentof the price. - Rent: parcels ×
MieteJeParzelleright away, then by standing order everyMieteIntervallStunden. If rent is missing, a reminder follows afterMieteKulanzintervals and termination after another period. - Plots may not overlap and may not be laid over other players' buildings. At most
MaxGrundstueckeJeBesitzerper player/group, at mostMaxParzellenin size. - Starter plot: every player's first own plot is free up to
StartGrundstueckParzellen(default 9 = 3 × 3 parcels, i.e. 24 × 24 m) – no price, no property tax, no bank needed (StartGrundstueckGratis). The Use starter size button sets the matching square around the marker. Giving it up lets you claim it again; transferring it does not. - If all prices are 0, plots are free and need no bank.
- Borders: while building, when looking at a marker, and permanently with
rp borders, translucent bands appear: green = you may build, blue = permission without building, red = foreign. Entering a plot shows its name at the top. - The lamp on the marker shows the same for each viewer, white = free.
- If the marker is dismantled, the plot remains. A new marker inside the plot can be linked in the window.
Game time: 24 game hours are one game day (20 minutes). The clock only runs while the game is being played – just like in the Banking System.
Free land
Land that belongs to no plot is free land. With FreiesLandGesperrt (default: on) only admins and game masters may build and dismantle there. To keep the game playable, free land still allows:
| allowed | locked |
|---|---|
| placing the plot marker (otherwise nobody could claim land) | placing any other new part (kits, cables, pipes, Ziehbau) |
| dismantling your own parts (yours, or your group's if your rank has "Dismantle") | dismantling other players' parts – even with the owner's permission |
existing parts and parts without a builder: as before (AltbestandGehoert, GemeinschaftDarf) | |
digging and mining (FreiesLandGraben) | |
| using, opening, modifying and repairing your own or permitted parts |
The red build preview and the tooltip say "Free land – claim a plot first (marker)"; leaving a plot shows the same hint at the top. Free land is not drawn as a band – it is everything outside the coloured bands. The server enforces the rule: kits (Constructor/MultiConstructor.Construct, including the cable gun and Ziehbau) and the players' build and dismantle messages; refused attempts are logged (fine BussgeldGrundstueck or BussgeldAbbauen).
Jobs and taxes
F7 → Jobs. Whoever holds the "contracts" power in a company offers a player a contract: title, salary, interval in game hours. If he accepts, the server creates two standing orders from the company account: the net salary to the employee and the income tax (EinkommensteuerProzent) to the state treasury. Both sides can terminate; dismissing ends the contract.
| Tax | on | Setting |
|---|---|---|
| Income tax | salaries, paid by the company | EinkommensteuerProzent |
| Trade tax | market sales (paid by the seller) and money in trades (paid by the recipient) | HandelssteuerProzent |
| Property tax | bought plots, per parcel | GrundsteuerJeParzelle, GrundsteuerIntervallStunden |
| Stall fee | share of each market sale for the terminal owner | StandgebuehrProzent |
ID card, licences and ID reader
A blank ID card from the Electronics Printer is issued at an ID reader – for the player who inserted it (AusweisGebuehr). Only the most recently issued card is valid; a lost card becomes invalid when a new one is issued.
Licences are listed in LizenzArten (default: Mining, Trade, Construction, Weapons, Pilot, Medicine; the order is the number). Players buy them in the window (LizenzPreis, valid LizenzDauerSpieltage), or the game master or an authority grants them. With LizenzPreis at 0, licences only come from there.
The ID reader checks the inserted card with the server – configurable (Manage on the reader):
| Check | Granted when … |
|---|---|
| 0 Valid ID | the card is valid and the holder is not blocked |
| 1 Licence | additionally the selected licence is valid |
| 2 Group | the holder is a member of the group (optionally from a rank) |
| 3 Permission on the reader | the holder has "Use" on the reader (owner, trust list, permissions) |
Access holds while the card is inserted and for the set hold time afterwards. Optionally the reader itself opens all doors with a given name in the same data network (only doors its owner may use).
| LogicType | Meaning | Access |
|---|---|---|
Setting | 1 = access granted | read |
Activate | 1 = card inserted | read |
Error | 1 = card refused | read |
Mode | check 0–3 | read |
On, Power, RequiredPower | as for game devices | as in the game |
Example: workshop door with ID card
ID reader "Leser Werkstatt", composite doors "Werkstatt", chip in the same data network.
# Rollenspiel & Rechte: Ausweisleser gibt eine Tuer frei
# Leser heisst "Leser Werkstatt", Tuer(en) heissen "Werkstatt"
# alles im selben Datennetz wie der Chip
define LESER 1447424244 # Ausweisleser (StructureRpAusweisleser)
define TUER -793837322 # Verbundtuer (StructureCompositeDoor)
define MITTEL 0 # Batchmodus Average
define ZU 0 # Tuer geschlossen
alias frei r0 # 1 = Freigabe am Leser
alias fehlt r1 # 1 = Leser nicht gefunden (NaN)
# --- 1. Hauptschleife ---
start:
yield
lbn frei LESER HASH("Leser Werkstatt") Setting MITTEL
snan fehlt frei
select frei fehlt ZU frei # ohne Leser bleibt die Tuer zu
sbn TUER HASH("Werkstatt") Open frei
j start
It also works without a chip: enter Werkstatt under "Open doors with this name" in the reader window.
Rules and fines
Every attempt the server refuses is logged – dismantling, modifying, using or opening foreign property, building or digging on a foreign plot, spawning without admin. The player gets a message, and a fine per type is charged (BussgeldAbbauen, BussgeldUmbauen, BussgeldBenutzen, BussgeldOeffnen, BussgeldGrundstueck, BussgeldSpawnen; 0 = off). At most once per player and type within BussgeldAbstandSekunden. It is paid from the bank account to the state treasury; without funds it stays open (F7 → Overview → Pay), with BussgeldInsMinus the account goes negative.
Blocked players cannot build anywhere and may only use foreign things (doors) – not open, modify or dismantle them. Their own property stays theirs.
Safe trade
F7 → Trade: request a trade with a player nearby (TauschAbstand). Both put items from hands, backpack, belt and uniform as well as money into the offer. Every change cancels the confirmations. Once both have confirmed, the server checks that everything is still there, books the money (the recipient bears the trade tax) and puts the items into free slots of the recipient – otherwise at his feet. If the money fails, nothing moves.
Marketplace terminal
- Sell: put the goods into the upper slot (SELL), click the screen, set a price, Offer. The server moves the goods into the hidden storage (12 places per terminal). At most
MaxAngeboteJeSpieleroffers. - Buy: the window shows the offers of all terminals. You buy at the offer's terminal; the goods go into the lower slot (PICKUP), which only the buyer can empty.
- Withdraw: at the offer's terminal, the goods go into the pickup slot.
- The seller receives the price minus trade tax and stall fee. The goods stay a real thing (contents, charge, code are kept).
- While offers are in storage, the terminal cannot be dismantled.
| LogicType | Meaning |
|---|---|
Quantity | offers at this terminal |
Setting | free storage places |
Activate | 1 = pickup slot occupied |
Game master
Admin is whoever is host (HostIstAdmin), is listed in AdminSteamIds, has logged in with the server password (rp login; password = AdminPassword from the server's setting.xml, otherwise AdminPasswort from the config) or was appointed game master. The game itself has no admin role for players – its AdminPassword is not checked anywhere else; the mod uses it for this. Only a real admin appoints game masters.
F7 → Game master: player list (online, ID card, groups, licences, open fines, violations), block (minutes of game time or indefinitely), unblock, kick, ban (with Shift), fine, waive, credit/debit money, grant/revoke licences, set the owner of a part or of a whole plot, delete plots, rules, log with filter. Members of an authority with the "licences" power only see the licence functions.
Test mode
As admin or host you may do everything – so you never see the locks, and in single player protection is off entirely. With rp testmode on (or the button under F7 → Overview or Game master) you act like a normal player: no admin exceptions, and in single player protection applies. "TEST MODE" shows at the top left and in the window. The game master tools (window, rp commands) stay usable, so you can give yourself licences or waive fines while testing. rp testmode off ends it; leaving the world ends it too. In multiplayer only admins and game masters may use test mode, in single player everyone.
At the host (and in single player) test mode checks building, tools on parts (dismantling, modifying) as well as buttons and doors. Moving items between slots is only checked by the server for remote players – test that with a second player.
Console commands
Console with F3. Game master commands run on the server: in the server console, at the host, or as a player with serverrun rp … (needs ServerAuthSecret).
| Command | Effect |
|---|---|
rp window | open the window (like F7) |
rp borders | show plot borders permanently on/off |
rp info | owner and your own rights of the part under the crosshair |
rp login PASSWORD | log in as admin |
rp testmode on/off | test as a normal player while admin; protection on in single player |
rp status | overview: counts, bank, protection, free land, test mode, existing-parts limit |
rp players / rp groups / rp plots | lists |
rp log [N] | last N entries (default 20) |
rp block PLAYER MINUTES [REASON] | block (0 = indefinitely) |
rp unblock PLAYER | lift a block |
rp kick PLAYER / rp ban PLAYER | kick / ban from the server |
rp fine PLAYER AMOUNT [REASON] | impose a fine |
rp waive PLAYER | waive open fines |
rp money PLAYER +/-AMOUNT [REASON] | credit or debit |
rp licence PLAYER NO [DAYS] / rp revoke PLAYER NO | grant / revoke a licence |
rp gm PLAYER on/off | appoint a game master (admin only) |
rp owner ID/look TARGET | set the owner; TARGET = player, g:NO, server, community |
rp delplot ID | delete a plot |
rp rule TEXT / rp delrule NO | add / delete a rule |
rp help | all commands |
German names work too: fenster, grenzen, testmodus an/aus, spieler, gruppen, grundstuecke, protokoll, sperren, entsperren, bann, bussgeld, erlassen, geld, lizenz, lizenzweg, spielleiter, eigentum, grundstueckweg, regel, regelweg, hilfe.
Configuration
File BepInEx\config\dominik1199.rollenspiel.cfg, also in the LaunchPad menu. What the server sets applies to everyone; section 10 only applies to your own computer.
| Section | Key | Default | Meaning |
|---|---|---|---|
| 1 Allgemein | EinzelspielerTest | false | protection in single player too (with HostIstAdmin = false); easier: rp testmode on |
HostIstAdmin | true | host is admin | |
AdminSteamIds | empty | Steam IDs of the admins | |
AdminPasswort | empty | password if setting.xml has none | |
ProtokollEintraege | 2000 | size of the log | |
| 2 Schutz | AltbestandGehoert | Gemeinschaft | Gemeinschaft (community), Server or Erbauer (builder) |
AltbestandGehoertGrundstueck | true | existing parts on a plot belong to the plot owner | |
GemeinschaftDarf | Benutzen,Oeffnen,Bauen,Abbauen | everyone's rights on community property | |
ServerDarf | Benutzen,Oeffnen | everyone's rights on server property | |
OeffentlicheGeraete | bank machines, reader, terminal, marker | anyone may use them | |
IC10Schutz | true | logic write protection for foreign devices | |
Explosionsschutz | 1 | 0 normal, 1 not on plots, 2 nowhere | |
SprengenImGrundstueck | false | blasts dig terrain on plots | |
FreiesLandGesperrt | true | on free land only admins build and dismantle (marker, dismantling own parts, existing parts, digging excepted) | |
FreiesLandGraben | true | digging and mining on free land still allowed | |
BautenGehoerenGrundstueck | true | parts built on a plot belong to its owner | |
SpawnNurAdmins | true | spawn menu, authoring tool, deleting only for admins | |
SpawnSperreAuchKreativ | false | spawn lock in creative worlds too | |
LeichenDurchsuchen | true | inventory of dead players is open | |
| 3 Grundstuecke | ParzelleMeter | 8 | 4, 8, 16 or 32 m |
MaxParzellen | 64 | largest plot | |
MaxGrundstueckeJeBesitzer | 3 | per player/group (0 = unlimited) | |
PreisJeParzelle | 500 | price (0 = free) | |
MieteJeParzelle | 40 | rent per interval (0 = no renting) | |
MieteIntervallStunden | 24 | game hours | |
MieteKulanz | 1 | intervals until reminder and termination | |
RueckerstattungProzent | 50 | when giving up | |
StartGrundstueckGratis | true | first own plot free, no property tax, no bank | |
StartGrundstueckParzellen | 9 | size of the starter plot (9 = 3 × 3) | |
| 4 Steuern | HandelssteuerProzent | 5 | market and trade |
EinkommensteuerProzent | 10 | salaries | |
GrundsteuerJeParzelle | 5 | per interval | |
GrundsteuerIntervallStunden | 24 | game hours | |
StandgebuehrProzent | 2 | for the terminal owner | |
| 5 Gruppen und Jobs | MaxGruppenJeSpieler | 3 | |
GruendungsKosten | 1000 | Cr to the state | |
EinladungStunden | 48 | validity of an invitation | |
MaxGehalt | 100000 | per payment | |
MinGehaltIntervallStunden | 6 | shortest interval | |
| 6 Ausweis und Lizenzen | LizenzArten | Bergbau|Mining, Handel|Trade, … | "German|English", order = number |
LizenzPreis | 250 | 0 = game master/authority only | |
LizenzDauerSpieltage | 7 | 0 = unlimited | |
AusweisGebuehr | 50 | 0 = free | |
| 7 Bussgelder | BussgeldAbbauen | 200 | 0 = off |
BussgeldUmbauen | 100 | ||
BussgeldBenutzen | 25 | ||
BussgeldOeffnen | 50 | ||
BussgeldGrundstueck | 100 | ||
BussgeldSpawnen | 500 | ||
BussgeldAbstandSekunden | 60 | throttle per type and player | |
BussgeldInsMinus | false | go negative without funds | |
| 8 Handel und Markt | TauschAbstand | 5 | metres |
MaxAngeboteJeSpieler | 10 | ||
MaxPreis | 1000000 | ||
| 9 Geraete | AusweisleserLeistungW | 15 | |
TerminalLeistungW | 60 | ||
| 10 Anzeige | FensterTaste | F7 | |
Schriftgroesse | 1.1 | ||
UmlauteErsetzen | false | ||
BlickInfo | true | owner below the crosshair | |
GrenzenAnzeigen | Bauen | Aus (off), Bauen (while building) or Immer (always) |
Multiplayer and security
- The server checks 51 kinds of game messages from players (dismantling, buttons, slots, building, labelling, painting, logic settings, IC10 programming, digging, spawning …) before the game executes them. It determines the sender from the connection; if a player enters someone else's builder ID, it is replaced.
- Windows only send requests; distance, rights, money and limits are checked by the server.
- Everything is stored in the save (
Rollenspiel.jsonin the ZIP, ownership with the part itself). If the mod is removed later, the save still loads.
Known limits
- Loose items in the world, fire, pressure and weather are not protected; explosions only for owned parts.
- Anyone who connects a cable to your data network can read your devices, but not write to them.
- Plots check the anchor point of a part – a large part at the edge can reach slightly inside.
- Ownership is tied to the client ID (Steam ID). Without Steam (substitute IDs), a player may get a different ID after reconnecting.
- Other mods that build or fill slots directly on the server without a game message bypass the message protection; building still only happens where the plot allows it (checked at the kit).
- Marketplace: pickup only via the pickup slot, not via a chute.
- Free land: upgrading existing parts (e.g. welding a frame into a wall) counts as modifying, not as a new part – it stays allowed with the rights on the part.
- Test mode at the host or in single player: moving items between slots is not checked there (it is for remote players).
Troubleshooting
- "Banking System missing" – install and enable the Banking System;
rp statusshows whether the bank was found. - Rent never runs out – needs the bank's booking event; if
rp statusreports "without booking event", rented plots never expire. - I can't dismantle anything any more –
rp infoshows owner and rights. Existing parts: ask the game master or changeAltbestandGehoert. If the tooltip says "Free land": claim a plot first. - I can't build ("Free land") – place a plot marker and create your free starter plot, or get "Build" permission on someone else's plot. Servers without this rule:
FreiesLandGesperrt = false. - As admin I never see any locks – admins and the host may do everything.
rp testmode on, then test like a normal player. - Window does not open –
rp windowin the console; key inFensterTaste. - Log:
BepInEx\LogOutput.log, entries with[RP].