update char slot handling

This commit is contained in:
2026-11-06 18:05:43 +01:00
parent 644b860145
commit 4efb7dcf21
+29 -2
View File
@@ -36,6 +36,18 @@ docker compose exec al-mongo mongosh adventureland --eval \
'db.user.updateMany({}, { $set: { "info.slots": 18 } })' 'db.user.updateMany({}, { $set: { "info.slots": 18 } })'
``` ```
Der Wert wird bei jeder Anfrage neu aus MongoDB gelesen; ein Neustart ist nicht
nötig. Maximal sind 18 Plätze möglich. Prüfen, ob der richtige Account getroffen
wurde:
```sh
docker compose exec al-mongo mongosh adventureland --eval \
'db.user.findOne(
{ "info.email": "du@example.com" },
{ _id: 1, name: 1, "info.slots": 1, "info.characters": 1, pid: 1 }
)'
```
**Admin werden:** Die Admin-Seiten (`/admin/executor`, `/admin/renderer`) sind **Admin werden:** Die Admin-Seiten (`/admin/executor`, `/admin/renderer`) sind
standardmäßig gesperrt. `is_admin` in `common/admin.js` prüft das Feld standardmäßig gesperrt. `is_admin` in `common/admin.js` prüft das Feld
`user.admin`; setzen lässt es sich direkt in MongoDB: `user.admin`; setzen lässt es sich direkt in MongoDB:
@@ -52,12 +64,27 @@ sinnvoll.
**GM werden (Game):** Der Web-Admin ist **kein** Game-GM. Die GM-Rolle hängt am **GM werden (Game):** Der Web-Admin ist **kein** Game-GM. Die GM-Rolle hängt am
Charakter, nicht am Benutzerkonto: Der Game-Server prüft `player.role` bzw. Charakter, nicht am Benutzerkonto: Der Game-Server prüft `player.role` bzw.
`player.p.role` auf `"gm"`. Charakter vorher ausloggen, dann in MongoDB setzen: `player.p.role` auf `"gm"`. Charakter vorher ausloggen, dann in MongoDB setzen.
Wichtig: Das Top-Level-Feld `name` wird beim Anlegen kleingeschrieben
(`simplify_name`), das Anzeige-Feld `info.name` behält die Schreibweise. Eine
Abfrage auf `{ name: "CharName" }` findet deshalb nichts. Nutze den
kleingeschriebenen Namen oder `info.name`:
```sh ```sh
docker compose exec al-mongo mongosh adventureland --eval \ docker compose exec al-mongo mongosh adventureland --eval \
'db.character.updateOne( 'db.character.updateOne(
{ name: "CharName" }, { name: "charname" },
{ $set: { role: "gm", "info.p.role": "gm" } }
)'
```
Alternativ, wenn die Groß-/Kleinschreibung im Spiel erhalten bleiben soll:
```sh
docker compose exec al-mongo mongosh adventureland --eval \
'db.character.updateOne(
{ "info.name": "CharName" },
{ $set: { role: "gm", "info.p.role": "gm" } } { $set: { role: "gm", "info.p.role": "gm" } }
)' )'
``` ```