From 71856b15e92e41f164dcae911a1a2aaa5d2bb18c Mon Sep 17 00:00:00 2001 From: Claude Opus 5 Date: Wed, 12 Aug 2026 23:23:19 +0000 Subject: [PATCH] The server itself: repo now mirrors the machine it runs on, plus install.sh The repository carried two different servers side by side - the early `justrp` prototype with its Python auth API, and a snapshot of the real one under `server-code/`. Only the second one is a server anyone should start from, so the prototype is gone and the real one moved to the root. Taken from the live box, so the UI is the finished version (the tokens, the county-records sheets and the variable fonts landed after the last snapshot was pushed): resources/[rp]/ rp_db, rp_core, rp_session, rp_loading, rp_ui, rp_selftest, rp_dbtest bin/ supervise.sh (keep-alive + console FIFO), rcon, init script etc/schema.sql accounts, characters, transactions, inventory, vehicles assets/fonts/ the bundled subsets docs/SERVER.md how it is put together, resource by resource install.sh turns a clean Ubuntu/Debian box into this server in one command: recommended FXServer build, MariaDB with the schema, resources, server.cfg + a generated database password, boot entry (systemd or init.d), then it waits for the Cfx registration. --name/--port/--db-name let a second server live on the same machine. Tested end to end on a spare install root: build 25770 fetched, schema applied, boot entry written, FXServer started and stopped exactly where a wrong licence key should stop it. No secrets travel with it: the licence key and the database password live in data/secrets.cfg on the machine, and .gitignore now names it. Co-Authored-By: Claude Opus 5 --- .gitignore | 15 +- README.md | 138 +- api/api.py | 340 ----- .../fonts/archivo-100900-latin.woff2 | Bin assets/fonts/archivo.css | 30 + .../fonts/plex-400-latin.woff2 | Bin .../fonts/plex-500-latin.woff2 | Bin assets/fonts/plex.css | 90 ++ bin/fivem.init | 60 + bin/rcon | 7 + bin/supervise.sh | 66 + server-code/README.md => docs/SERVER.md | 35 + {server-code/etc => etc}/schema.sql | 0 etc/secrets.cfg.example | 12 + install.sh | 236 ++++ .../[rp]/rp_core/client/state.lua | 0 .../[rp]/rp_core/fxmanifest.lua | 0 .../[rp]/rp_core/lib/callbacks_client.lua | 0 .../[rp]/rp_core/lib/callbacks_server.lua | 0 .../[rp]/rp_core/server/crypto.js | 0 .../[rp]/rp_core/server/player.lua | 0 .../[rp]/rp_core/shared/appearance.lua | 0 .../[rp]/rp_core/shared/config.lua | 0 .../[rp]/rp_core/shared/util.lua | 0 .../[rp]/rp_db/fxmanifest.lua | 0 .../[rp]/rp_db/lib/db.lua | 0 .../[rp]/rp_db/server/mysql.js | 0 .../[rp]/rp_dbtest/fxmanifest.lua | 0 .../[rp]/rp_dbtest/server/test.lua | 0 .../[rp]/rp_loading/fxmanifest.lua | 3 +- .../[rp]/rp_loading/html/app.css | 69 +- .../[rp]/rp_loading/html/app.js | 0 .../rp_loading/html/fonts/archivo-var.woff2 | Bin 0 -> 90104 bytes .../rp_loading}/html/fonts/plex-400.woff2 | Bin .../rp_loading}/html/fonts/plex-500.woff2 | Bin .../rp_loading/html/fonts/plexsans-var.woff2 | Bin 0 -> 45712 bytes .../[rp]/rp_loading/html/index.html | 0 resources/[rp]/rp_loading/html/tokens.css | 182 +++ .../[rp]/rp_selftest/fxmanifest.lua | 0 .../[rp]/rp_selftest/server/test.lua | 0 .../[rp]/rp_session/fxmanifest.lua | 0 .../[rp]/rp_session/server/main.lua | 0 .../[rp]/rp_ui/client/camera.lua | 0 .../[rp]/rp_ui/client/main.lua | 0 .../[rp]/rp_ui/client/ped.lua | 0 .../[rp]/rp_ui/fxmanifest.lua | 3 +- resources/[rp]/rp_ui/html/app.css | 820 +++++++++++ .../[rp]/rp_ui/html/app.js | 9 +- .../[rp]/rp_ui/html/fonts/archivo-var.woff2 | Bin 0 -> 90104 bytes .../[rp]/rp_ui/html/fonts/plex-400.woff2 | Bin 0 -> 14708 bytes .../[rp]/rp_ui/html/fonts/plex-500.woff2 | Bin 0 -> 14888 bytes .../[rp]/rp_ui/html/fonts/plexsans-var.woff2 | Bin 0 -> 45712 bytes .../[rp]/rp_ui/html/index.html | 173 ++- resources/[rp]/rp_ui/html/tokens.css | 182 +++ resources/justrp/client/main.lua | 343 ----- resources/justrp/fxmanifest.lua | 25 - resources/justrp/html/app.html | 1203 ----------------- resources/justrp/html/loading.html | 469 ------- resources/justrp/server/main.lua | 208 --- .../resources/[rp]/rp_loading/html/tokens.css | 117 -- .../data/resources/[rp]/rp_ui/html/app.css | 839 ------------ .../[rp]/rp_ui/html/fonts/archivo.woff2 | Bin 34928 -> 0 bytes .../data/resources/[rp]/rp_ui/html/tokens.css | 117 -- server-code/etc/rpdata.env.example | 4 - server-code/etc/secret.cfg.example | 1 - server.cfg.example | 48 +- 66 files changed, 2030 insertions(+), 3814 deletions(-) delete mode 100644 api/api.py rename server-code/data/resources/[rp]/rp_loading/html/fonts/archivo.woff2 => assets/fonts/archivo-100900-latin.woff2 (100%) create mode 100644 assets/fonts/archivo.css rename server-code/data/resources/[rp]/rp_loading/html/fonts/plex-400.woff2 => assets/fonts/plex-400-latin.woff2 (100%) rename server-code/data/resources/[rp]/rp_loading/html/fonts/plex-500.woff2 => assets/fonts/plex-500-latin.woff2 (100%) create mode 100644 assets/fonts/plex.css create mode 100755 bin/fivem.init create mode 100755 bin/rcon create mode 100755 bin/supervise.sh rename server-code/README.md => docs/SERVER.md (64%) rename {server-code/etc => etc}/schema.sql (100%) create mode 100644 etc/secrets.cfg.example create mode 100755 install.sh rename {server-code/data/resources => resources}/[rp]/rp_core/client/state.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_core/fxmanifest.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_core/lib/callbacks_client.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_core/lib/callbacks_server.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_core/server/crypto.js (100%) rename {server-code/data/resources => resources}/[rp]/rp_core/server/player.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_core/shared/appearance.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_core/shared/config.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_core/shared/util.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_db/fxmanifest.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_db/lib/db.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_db/server/mysql.js (100%) rename {server-code/data/resources => resources}/[rp]/rp_dbtest/fxmanifest.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_dbtest/server/test.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_loading/fxmanifest.lua (90%) rename {server-code/data/resources => resources}/[rp]/rp_loading/html/app.css (78%) rename {server-code/data/resources => resources}/[rp]/rp_loading/html/app.js (100%) create mode 100644 resources/[rp]/rp_loading/html/fonts/archivo-var.woff2 rename {server-code/data/resources/[rp]/rp_ui => resources/[rp]/rp_loading}/html/fonts/plex-400.woff2 (100%) rename {server-code/data/resources/[rp]/rp_ui => resources/[rp]/rp_loading}/html/fonts/plex-500.woff2 (100%) create mode 100644 resources/[rp]/rp_loading/html/fonts/plexsans-var.woff2 rename {server-code/data/resources => resources}/[rp]/rp_loading/html/index.html (100%) create mode 100644 resources/[rp]/rp_loading/html/tokens.css rename {server-code/data/resources => resources}/[rp]/rp_selftest/fxmanifest.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_selftest/server/test.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_session/fxmanifest.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_session/server/main.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_ui/client/camera.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_ui/client/main.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_ui/client/ped.lua (100%) rename {server-code/data/resources => resources}/[rp]/rp_ui/fxmanifest.lua (89%) create mode 100644 resources/[rp]/rp_ui/html/app.css rename {server-code/data/resources => resources}/[rp]/rp_ui/html/app.js (98%) create mode 100644 resources/[rp]/rp_ui/html/fonts/archivo-var.woff2 create mode 100644 resources/[rp]/rp_ui/html/fonts/plex-400.woff2 create mode 100644 resources/[rp]/rp_ui/html/fonts/plex-500.woff2 create mode 100644 resources/[rp]/rp_ui/html/fonts/plexsans-var.woff2 rename {server-code/data/resources => resources}/[rp]/rp_ui/html/index.html (55%) create mode 100644 resources/[rp]/rp_ui/html/tokens.css delete mode 100644 resources/justrp/client/main.lua delete mode 100644 resources/justrp/fxmanifest.lua delete mode 100644 resources/justrp/html/app.html delete mode 100644 resources/justrp/html/loading.html delete mode 100644 resources/justrp/server/main.lua delete mode 100644 server-code/data/resources/[rp]/rp_loading/html/tokens.css delete mode 100644 server-code/data/resources/[rp]/rp_ui/html/app.css delete mode 100644 server-code/data/resources/[rp]/rp_ui/html/fonts/archivo.woff2 delete mode 100644 server-code/data/resources/[rp]/rp_ui/html/tokens.css delete mode 100644 server-code/etc/rpdata.env.example delete mode 100644 server-code/etc/secret.cfg.example diff --git a/.gitignore b/.gitignore index fc09f1f..4df07a8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,12 @@ -server-data/ -cache/ -*.log +# Anything holding a licence key or a password +secrets.cfg +*.env .env -server.cfg.local + +# Runtime state, never in the repo +cache/ +logs/ +*.log +/server/ +/data/ +/server.cfg diff --git a/README.md b/README.md index 3c66f1f..0e02810 100644 --- a/README.md +++ b/README.md @@ -4,24 +4,23 @@ An open-source **FiveM roleplay base written completely from scratch** — no ES > 🇷🇺 Русская версия — ниже / Russian version below. +This repository is the server itself, exactly as it runs: the resources, the schema, the supervisor, the config. `sh install.sh` puts it on a clean Ubuntu box. + ## Why another base? Most FiveM projects start by dropping in a 200 MB framework, of which you use maybe 5%. You inherit somebody else's bugs, somebody else's dependencies, and you end up with the same server as a thousand other people — and you're afraid to touch any of it, because you don't know what breaks. This is the opposite. It's small, it's readable, and it only contains what was actually asked for. If you don't understand a file, you can ask for it to be rewritten. -## What's in part 1 +## What's in it -- Clean `fxserver` setup on Ubuntu -- MariaDB with tables for accounts and characters, hashed passwords -- Own Lua resource: registration, login, character creation, spawn -- NUI screens with real design work (not default template UI): - - cinematic loading screen with music and a real progress bar - - register / login with live validation - - character creation with an orbiting camera and live model updates - - spawn point selection +- Own MySQL driver (`rp_db`) — the wire protocol spoken directly over a TCP socket: handshake, `mysql_native_password`, text result sets, a connection pool, transactions. No npm packages, no third-party database resource. +- Accounts and characters (`rp_core`, `rp_session`): registration, login, scrypt password hashing, the connection gate (bans, capacity), character creation and spawn. Every decision is made server-side; the client can only ask. +- NUI screens with real design work (`rp_ui`, `rp_loading`), not a template: a loading screen with a procedural night-city flyover and synthesised ambience, sign-in / register with live validation, character creation with an orbiting camera and a live ped, and a spawn picker. +- A self-test (`rp_selftest`) that proves the account/character data path survived the last restart, and a driver test suite (`rp_dbtest`). +- `cfx-server-data` is not used at all — the player cap, chat, spawning and session handling are ours. -## Screens (written by the agent, part 1) +## Screens The whole UI follows one theme the agent picked itself — **Los Santos County records**: your login is a residency file, character creation is an identity-record intake, spawn selection is a county survey map. @@ -29,66 +28,121 @@ The whole UI follows one theme the agent picked itself — **Los Santos County r |---|---|---| | ![Auth](docs/screens/auth.png) | ![Character](docs/screens/character.png) | ![Spawn](docs/screens/spawn.png) | -## Requirements - -- Ubuntu 22.04 / 24.04, 4 vCPU / 8 GB RAM recommended -- A free Cfx.re server registration key (`sv_licenseKey`) -- MariaDB - ## Install -Setup instructions land here together with part 1 of the video. +Ubuntu 22.04 / 24.04 (or Debian 12), 4 vCPU / 8 GB RAM recommended, and a free server key from [keymaster.fivem.net](https://keymaster.fivem.net). -## Roadmap +```sh +git clone https://github.com/RedlHosting/redl-fivem-rp.git +cd redl-fivem-rp +sudo sh install.sh --licence cfxk_your_key_here +``` -- **Part 1** — foundation: database, registration, login, character creation ← *you are here* -- **Part 2** — money, jobs, banking +The installer fetches the recommended FXServer build, installs MariaDB and applies the schema, copies the resources into `/opt/fivem`, writes `server.cfg` and a `secrets.cfg` with a generated database password, sets the server to start on boot, and waits until it has registered with Cfx. Then connect to `:30120`. + +Useful options: `--dir`, `--hostname`, `--port`, `--name` (run several servers on one box), `--db-name`, `--db-user`, `--no-start`. Run `sh install.sh --help` for the list. + +Day to day: + +```sh +service fivem start|stop|restart|status # systemd boxes: systemctl ... +rcon status # send a command to the live console +tail -f /opt/fivem/logs/server.log +``` + +## Layout + + resources/[rp]/ the server: rp_db, rp_core, rp_session, rp_loading, rp_ui, rp_selftest, rp_dbtest + etc/schema.sql database schema (accounts, characters, transactions, inventory, vehicles) + bin/ supervise.sh (keep-alive + console FIFO), rcon, the init script + assets/fonts/ the bundled font subsets — a NUI page has no guaranteed internet + server.cfg.example main config + etc/secrets.cfg.example + docs/SERVER.md how it is put together, resource by resource + +`docs/SERVER.md` is the design document: what each resource does, why the interface looks the way it does, how the database is protected. + +## What's not built yet + +The pre-spawn experience and the framework underneath it are done. Gameplay on top of it — chat, HUD, inventory, jobs, vehicles, policing, medical — is not. `characters`, `transactions`, `inventory` and `vehicles` already have their tables, and the money API in `rp_core/server/player.lua` is journalled and ready. + +- **Part 1** — the foundation: database, registration, login, character creation ← *we are here* +- **Part 2** — money, jobs, the bank - **Part 3** — inventory and phone - **Part 4** — garages and vehicles -- **Part 5** — admin panel + project website on the same machine +- **Part 5** — an admin panel and the project website on the same machine -## How this was built +Issues and pull requests are welcome — this is meant to be used, not admired. -Everything is built on a [REDL](https://redl.io) VDS, where an AI agent lives on the server itself with root access. The task is given in plain English, the agent writes the code, fixes its own errors, and restarts the service. The full process is recorded — including the parts where it broke. +## How it was made -## License +Everything is built on a [REDL](https://redl.io) VDS, where an AI agent lives on the server itself with root access. The task is given in plain words, the agent writes the code, fixes its own mistakes and restarts the service. The whole process is recorded — including the parts where it broke. -MIT — take it, change it, ship it. Attribution appreciated, not required. +## Licence + +MIT — take it, change it, ship it. Credit is nice but not required. --- -# 🇷🇺 redl-fivem-rp +# redl-fivem-rp (RU) Открытая **ролевая база для FiveM, написанная полностью с нуля** — без ESX, без QBCore, без скачанных с форума скриптов. Каждая строчка здесь написана ИИ-агентом на живом сервере, в кадре, и выложена бесплатно для всех. +В репозитории лежит сам сервер, ровно в том виде, в каком он работает: ресурсы, схема базы, супервизор, конфиг. `sh install.sh` ставит его на чистую Ubuntu. + ## Зачем ещё одна база? Обычно проект начинается с того, что ставится сборка на 200 мегабайт, из которой реально используется процентов пять. Вместе с ней приезжают чужие баги, чужие зависимости, и в итоге у тебя такой же сервер, как ещё у тысячи человек, — и трогать его страшно, потому что непонятно, что отвалится. Здесь наоборот. Мало кода, он читаемый, и в нём есть только то, что мы попросили. Не понял файл — попросил переписать. -## Что в первой части +## Что внутри -- Чистый `fxserver` на Ubuntu -- MariaDB, таблицы под аккаунты и персонажей, хешированные пароли -- Свой ресурс на Lua: регистрация, авторизация, создание персонажа, спавн -- Экраны на NUI с настоящей дизайн-проработкой (а не шаблонный интерфейс): - - кинематографичный загрузочный экран с музыкой и реальным прогрессом - - регистрация/вход с живой валидацией - - создание персонажа с облётом камеры и живым обновлением модели - - выбор точки спавна +- Свой драйвер MySQL (`rp_db`) — протокол реализован прямо поверх TCP-сокета: рукопожатие, `mysql_native_password`, разбор результатов, пул соединений, транзакции. Ни одного npm-пакета и ни одного чужого ресурса для базы. +- Аккаунты и персонажи (`rp_core`, `rp_session`): регистрация, вход, хеширование паролей scrypt, шлюз подключения (баны, вместимость), создание персонажа и спавн. Все решения принимает сервер, клиент может только попросить. +- Экраны NUI с настоящей дизайн-проработкой (`rp_ui`, `rp_loading`), а не шаблон: загрузочный экран с процедурным облётом ночного города и синтезированной атмосферой, вход/регистрация с живой валидацией, создание персонажа с облётом камеры и живой моделью, выбор точки спавна. +- Самотест (`rp_selftest`), который на каждом запуске доказывает, что данные аккаунтов и персонажей пережили перезапуск, и набор тестов драйвера (`rp_dbtest`). +- `cfx-server-data` не используется вообще — лимит игроков, чат, спавн и сессии свои. -## Требования +## Экраны -- Ubuntu 22.04 / 24.04, рекомендую 4 vCPU / 8 ГБ RAM -- Бесплатный ключ регистрации сервера Cfx.re (`sv_licenseKey`) -- MariaDB +Весь интерфейс сделан в одной теме, которую агент выбрал сам, — **архив округа Лос-Сантос**: вход это дело о проживании, создание персонажа — анкета учёта личности, выбор спавна — топографическая карта округа. ## Установка -Инструкция появится здесь вместе с первой частью видео. +Ubuntu 22.04 / 24.04 (или Debian 12), рекомендую 4 vCPU / 8 ГБ RAM, и бесплатный ключ сервера с [keymaster.fivem.net](https://keymaster.fivem.net). -## План частей +```sh +git clone https://github.com/RedlHosting/redl-fivem-rp.git +cd redl-fivem-rp +sudo sh install.sh --licence cfxk_ваш_ключ +``` + +Установщик сам скачает рекомендованную сборку FXServer, поставит MariaDB и накатит схему, разложит ресурсы в `/opt/fivem`, напишет `server.cfg` и `secrets.cfg` со сгенерированным паролем базы, поставит сервер в автозапуск и дождётся регистрации в Cfx. Дальше — `connect <ваш ip>:30120`. + +Полезные параметры: `--dir`, `--hostname`, `--port`, `--name` (несколько серверов на одной машине), `--db-name`, `--db-user`, `--no-start`. Список — `sh install.sh --help`. + +Повседневное: + +```sh +service fivem start|stop|restart|status # на машинах с systemd — systemctl ... +rcon status # команда в живую консоль сервера +tail -f /opt/fivem/logs/server.log +``` + +## Что где лежит + + resources/[rp]/ сам сервер: rp_db, rp_core, rp_session, rp_loading, rp_ui, rp_selftest, rp_dbtest + etc/schema.sql схема базы (accounts, characters, transactions, inventory, vehicles) + bin/ supervise.sh (перезапуск + FIFO консоли), rcon, init-скрипт + assets/fonts/ вшитые подмножества шрифтов — у страницы NUI нет гарантированного интернета + server.cfg.example основной конфиг + etc/secrets.cfg.example + docs/SERVER.md как всё устроено, ресурс за ресурсом + +## Чего ещё нет + +Всё до спавна и фундамент под этим — готово. Геймплей сверху — чат, HUD, инвентарь, работы, транспорт, полиция, медицина — нет. Таблицы `characters`, `transactions`, `inventory`, `vehicles` уже заведены, денежный API в `rp_core/server/player.lua` журналируемый и готов. - **Часть 1** — фундамент: база, регистрация, авторизация, создание персонажа ← *мы здесь* - **Часть 2** — деньги, работы, банк @@ -96,6 +150,8 @@ MIT — take it, change it, ship it. Attribution appreciated, not required. - **Часть 4** — гаражи и транспорт - **Часть 5** — админка + сайт проекта на этой же машине +Issues и pull request'ы приветствуются — это сделано, чтобы этим пользовались. + ## Как это сделано Всё собирается на VDS [REDL](https://redl.io), где ИИ-агент живёт прямо на сервере с root-доступом. Задача ставится обычными словами, агент пишет код, чинит свои же ошибки и перезапускает сервис. Весь процесс записан — включая те моменты, где всё ломалось. diff --git a/api/api.py b/api/api.py deleted file mode 100644 index 19b76e1..0000000 --- a/api/api.py +++ /dev/null @@ -1,340 +0,0 @@ -#!/usr/bin/env python3 -"""JustRP Database API — internal HTTP service on port 8787""" -import json -import hashlib -import os -import socket -from http.server import HTTPServer, BaseHTTPRequestHandler -from urllib.parse import urlparse, parse_qs - -try: - import pymysql - import pymysql.cursors -except ImportError: - import subprocess - subprocess.run(["pip3", "install", "pymysql"], check=True) - import pymysql - import pymysql.cursors - -# Секреты берутся из окружения. Заведите их перед запуском, например в systemd-юните: -# Environment=JUSTRP_API_SECRET=... Environment=JUSTRP_DB_PASS=... -API_SECRET = os.environ.get("JUSTRP_API_SECRET", "change-me") -DB = { - "host": os.environ.get("JUSTRP_DB_HOST", "localhost"), - "user": os.environ.get("JUSTRP_DB_USER", "fivem"), - "password": os.environ.get("JUSTRP_DB_PASS", "change-me"), - "database": os.environ.get("JUSTRP_DB_NAME", "fivem"), - "charset": "utf8mb4", - "cursorclass": pymysql.cursors.DictCursor, -} - - -def db(): - return pymysql.connect(**DB) - - -def hash_pw(password: str, salt: str) -> str: - return hashlib.scrypt( - password.encode(), salt=salt.encode(), n=16384, r=8, p=1 - ).hex() - - -def new_salt() -> str: - return os.urandom(16).hex() - - -class Handler(BaseHTTPRequestHandler): - def log_message(self, fmt, *args): - pass # silence default logging - - def send_json(self, code, data): - body = json.dumps(data).encode() - self.send_response(code) - self.send_header("Content-Type", "application/json") - self.send_header("Content-Length", str(len(body))) - self.end_headers() - self.wfile.write(body) - - def auth_check(self): - return self.headers.get("X-API-Key") == API_SECRET - - def read_body(self): - n = int(self.headers.get("Content-Length", 0)) - if n == 0: - return {} - raw = self.rfile.read(n) - try: - return json.loads(raw) - except Exception: - return {} - - def do_POST(self): - if not self.auth_check(): - return self.send_json(403, {"error": "forbidden"}) - path = urlparse(self.path).path - body = self.read_body() - - if path == "/auth/register": - self.handle_register(body) - elif path == "/auth/login": - self.handle_login(body) - elif path == "/character/create": - self.handle_char_create(body) - elif path == "/character/save": - self.handle_char_save(body) - elif path == "/account/ban": - self.handle_ban(body) - else: - self.send_json(404, {"error": "not found"}) - - def do_GET(self): - if not self.auth_check(): - return self.send_json(403, {"error": "forbidden"}) - parsed = urlparse(self.path) - path = parsed.path - qs = parse_qs(parsed.query) - - if path == "/characters": - self.handle_chars_list(qs) - elif path == "/character": - self.handle_char_get(qs) - elif path == "/account": - self.handle_account_get(qs) - else: - self.send_json(404, {"error": "not found"}) - - # --- Auth --- - - def handle_register(self, body): - license_ = body.get("license", "").strip() - username = body.get("username", "").strip() - password = body.get("password", "") - - if not license_ or not username or not password: - return self.send_json(400, {"success": False, "error": "Missing fields"}) - if len(username) < 3 or len(username) > 20: - return self.send_json(400, {"success": False, "error": "Username must be 3–20 characters"}) - if len(password) < 6: - return self.send_json(400, {"success": False, "error": "Password must be at least 6 characters"}) - - salt = new_salt() - pw_hash = hash_pw(password, salt) - stored = f"{salt}:{pw_hash}" - - try: - conn = db() - with conn.cursor() as cur: - cur.execute("SELECT id FROM accounts WHERE username = %s", (username,)) - if cur.fetchone(): - conn.close() - return self.send_json(409, {"success": False, "error": "Username already taken"}) - cur.execute("SELECT id FROM accounts WHERE license = %s", (license_,)) - if cur.fetchone(): - conn.close() - return self.send_json(409, {"success": False, "error": "A JustRP account already exists on this device"}) - cur.execute( - "INSERT INTO accounts (license, username, password_hash) VALUES (%s, %s, %s)", - (license_, username, stored), - ) - account_id = cur.lastrowid - conn.commit() - conn.close() - return self.send_json(200, {"success": True, "account_id": account_id, "username": username}) - except Exception as e: - return self.send_json(500, {"success": False, "error": str(e)}) - - def handle_login(self, body): - license_ = body.get("license", "").strip() - username = body.get("username", "").strip() - password = body.get("password", "") - - if not license_ or not username or not password: - return self.send_json(400, {"success": False, "error": "Missing fields"}) - - try: - conn = db() - with conn.cursor() as cur: - cur.execute( - "SELECT id, password_hash, banned, ban_reason FROM accounts WHERE username = %s", - (username,), - ) - row = cur.fetchone() - if not row: - conn.close() - return self.send_json(401, {"success": False, "error": "Invalid username or password"}) - if row["banned"]: - conn.close() - return self.send_json(403, {"success": False, "error": f"Banned: {row['ban_reason'] or 'No reason given'}"}) - - stored = row["password_hash"] - salt, expected = stored.split(":", 1) - actual = hash_pw(password, salt) - if actual != expected: - conn.close() - return self.send_json(401, {"success": False, "error": "Invalid username or password"}) - - cur.execute("UPDATE accounts SET last_login = NOW() WHERE id = %s", (row["id"],)) - conn.commit() - conn.close() - return self.send_json(200, {"success": True, "account_id": row["id"], "username": username}) - except Exception as e: - return self.send_json(500, {"success": False, "error": str(e)}) - - # --- Characters --- - - def handle_chars_list(self, qs): - account_id = int(qs.get("account_id", ["0"])[0]) - if not account_id: - return self.send_json(400, {"error": "missing account_id"}) - try: - conn = db() - with conn.cursor() as cur: - cur.execute( - "SELECT * FROM characters WHERE account_id = %s ORDER BY slot", - (account_id,), - ) - rows = cur.fetchall() - conn.close() - return self.send_json(200, {"success": True, "characters": rows}) - except Exception as e: - return self.send_json(500, {"success": False, "error": str(e)}) - - def handle_char_get(self, qs): - char_id = int(qs.get("id", ["0"])[0]) - if not char_id: - return self.send_json(400, {"error": "missing id"}) - try: - conn = db() - with conn.cursor() as cur: - cur.execute("SELECT * FROM characters WHERE id = %s", (char_id,)) - row = cur.fetchone() - conn.close() - if not row: - return self.send_json(404, {"success": False, "error": "Character not found"}) - return self.send_json(200, {"success": True, "character": row}) - except Exception as e: - return self.send_json(500, {"success": False, "error": str(e)}) - - def handle_char_create(self, body): - required = ["account_id", "slot", "firstname", "lastname"] - for f in required: - if f not in body: - return self.send_json(400, {"success": False, "error": f"Missing field: {f}"}) - - fields = { - "account_id": body["account_id"], - "slot": body["slot"], - "firstname": body["firstname"][:32], - "lastname": body["lastname"][:32], - "backstory": body.get("backstory", ""), - "gender": body.get("gender", 0), - "face_blend": body.get("face_blend", 0.5), - "face_shape": body.get("face_shape", 0.5), - "skin_tone": body.get("skin_tone", 0.5), - "eye_color": body.get("eye_color", 0), - "hair_style": body.get("hair_style", 0), - "hair_color": body.get("hair_color", 0), - "body_weight": body.get("body_weight", 0.5), - "outfit_top": body.get("outfit_top", 0), - "outfit_pants": body.get("outfit_pants", 0), - "outfit_shoes": body.get("outfit_shoes", 0), - } - - try: - conn = db() - with conn.cursor() as cur: - cur.execute( - "SELECT COUNT(*) as cnt FROM characters WHERE account_id = %s", - (fields["account_id"],), - ) - if cur.fetchone()["cnt"] >= 3: - conn.close() - return self.send_json(400, {"success": False, "error": "Maximum 3 characters per account"}) - - cols = ", ".join(fields.keys()) - placeholders = ", ".join(["%s"] * len(fields)) - cur.execute( - f"INSERT INTO characters ({cols}) VALUES ({placeholders})", - list(fields.values()), - ) - char_id = cur.lastrowid - conn.commit() - conn.close() - return self.send_json(200, {"success": True, "character_id": char_id}) - except Exception as e: - return self.send_json(500, {"success": False, "error": str(e)}) - - def handle_char_save(self, body): - char_id = body.get("character_id") - if not char_id: - return self.send_json(400, {"success": False, "error": "Missing character_id"}) - - allowed = { - "last_x", "last_y", "last_z", "last_heading", - "cash", "bank", "playtime", - "face_blend", "face_shape", "skin_tone", "eye_color", - "hair_style", "hair_color", "body_weight", - "outfit_top", "outfit_pants", "outfit_shoes", - } - updates = {k: v for k, v in body.items() if k in allowed} - if not updates: - return self.send_json(200, {"success": True}) - - set_clause = ", ".join(f"{k} = %s" for k in updates) - values = list(updates.values()) + [char_id] - - try: - conn = db() - with conn.cursor() as cur: - cur.execute( - f"UPDATE characters SET {set_clause} WHERE id = %s", - values, - ) - conn.commit() - conn.close() - return self.send_json(200, {"success": True}) - except Exception as e: - return self.send_json(500, {"success": False, "error": str(e)}) - - def handle_account_get(self, qs): - license_ = qs.get("license", [""])[0] - if not license_: - return self.send_json(400, {"error": "missing license"}) - try: - conn = db() - with conn.cursor() as cur: - cur.execute( - "SELECT id, username, banned, ban_reason FROM accounts WHERE license = %s", - (license_,), - ) - row = cur.fetchone() - conn.close() - if not row: - return self.send_json(404, {"success": False, "error": "not found"}) - return self.send_json(200, {"success": True, "account": row}) - except Exception as e: - return self.send_json(500, {"success": False, "error": str(e)}) - - def handle_ban(self, body): - account_id = body.get("account_id") - reason = body.get("reason", "No reason given") - if not account_id: - return self.send_json(400, {"success": False, "error": "missing account_id"}) - try: - conn = db() - with conn.cursor() as cur: - cur.execute( - "UPDATE accounts SET banned = 1, ban_reason = %s WHERE id = %s", - (reason, account_id), - ) - conn.commit() - conn.close() - return self.send_json(200, {"success": True}) - except Exception as e: - return self.send_json(500, {"success": False, "error": str(e)}) - - -if __name__ == "__main__": - server = HTTPServer(("127.0.0.1", 8787), Handler) - print("[JustRP API] Listening on 127.0.0.1:8787", flush=True) - server.serve_forever() diff --git a/server-code/data/resources/[rp]/rp_loading/html/fonts/archivo.woff2 b/assets/fonts/archivo-100900-latin.woff2 similarity index 100% rename from server-code/data/resources/[rp]/rp_loading/html/fonts/archivo.woff2 rename to assets/fonts/archivo-100900-latin.woff2 diff --git a/assets/fonts/archivo.css b/assets/fonts/archivo.css new file mode 100644 index 0000000..eb2e3ad --- /dev/null +++ b/assets/fonts/archivo.css @@ -0,0 +1,30 @@ +/* vietnamese */ +@font-face { + font-family: 'Archivo'; + font-style: normal; + font-weight: 100 900; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLySOxK-vA.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Archivo'; + font-style: normal; + font-weight: 100 900; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLyTOxK-vA.woff2) format('woff2'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Archivo'; + font-style: normal; + font-weight: 100 900; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLydOxI.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/server-code/data/resources/[rp]/rp_loading/html/fonts/plex-400.woff2 b/assets/fonts/plex-400-latin.woff2 similarity index 100% rename from server-code/data/resources/[rp]/rp_loading/html/fonts/plex-400.woff2 rename to assets/fonts/plex-400-latin.woff2 diff --git a/server-code/data/resources/[rp]/rp_loading/html/fonts/plex-500.woff2 b/assets/fonts/plex-500-latin.woff2 similarity index 100% rename from server-code/data/resources/[rp]/rp_loading/html/fonts/plex-500.woff2 rename to assets/fonts/plex-500-latin.woff2 diff --git a/assets/fonts/plex.css b/assets/fonts/plex.css new file mode 100644 index 0000000..e1c7016 --- /dev/null +++ b/assets/fonts/plex.css @@ -0,0 +1,90 @@ +/* cyrillic-ext */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1iIq129k.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1isq129k.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1iAq129k.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1iEq129k.woff2) format('woff2'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1i8q1w.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJwl1FgtIU.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJwlRFgtIU.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJwl9FgtIU.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJwl5FgtIU.woff2) format('woff2'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJwlBFgg.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/bin/fivem.init b/bin/fivem.init new file mode 100755 index 0000000..4932e44 --- /dev/null +++ b/bin/fivem.init @@ -0,0 +1,60 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: fivem +# Required-Start: $network mariadb +# Default-Start: 2 3 4 5 +# Short-Description: Los Santos RP FXServer +### END INIT INFO + +NAME=fivem +DATA=/opt/fivem/data +SERVER=/opt/fivem/server +LOG=/opt/fivem/logs/server.log +SUPPID=/run/$NAME.sup.pid +CHILDPID=/run/$NAME.child.pid + +status() { + if [ -f $CHILDPID ] && kill -0 "$(cat $CHILDPID)" 2>/dev/null; then + echo "$NAME running (pid $(cat $CHILDPID))" + return 0 + fi + echo "$NAME not running" + return 3 +} + +start() { + if status >/dev/null 2>&1; then echo "$NAME already running"; return 0; fi + + # the database has to answer before resources start querying it + service mariadb start >/dev/null 2>&1 + i=0 + while ! mysqladmin ping >/dev/null 2>&1; do + i=$((i+1)) + [ $i -gt 30 ] && echo "warning: mariadb did not come up" && break + sleep 1 + done + + cd $DATA || exit 1 + setsid /opt/fivem/bin/supervise.sh "$NAME" "$LOG" \ + $SERVER/run.sh +set citizen_dir $SERVER/alpine/opt/cfx-server/citizen/ \ + +exec $DATA/server.cfg >/dev/null 2>&1 < /dev/null & + sleep 2 + echo "$NAME started" +} + +stop() { + [ -f $SUPPID ] && kill -TERM "$(cat $SUPPID)" 2>/dev/null + [ -f $CHILDPID ] && kill -TERM "$(cat $CHILDPID)" 2>/dev/null + sleep 2 + [ -f $CHILDPID ] && kill -9 "$(cat $CHILDPID)" 2>/dev/null + rm -f $SUPPID $CHILDPID + echo "$NAME stopped" +} + +case "$1" in + start) start ;; + stop) stop ;; + restart) stop; start ;; + status) status ;; + *) echo "usage: $0 {start|stop|restart|status}"; exit 1 ;; +esac diff --git a/bin/rcon b/bin/rcon new file mode 100755 index 0000000..1eb0392 --- /dev/null +++ b/bin/rcon @@ -0,0 +1,7 @@ +#!/bin/sh +# Send a command to the running FXServer console, e.g. rcon refresh +if [ ! -p /run/fivem.stdin ]; then + echo "server is not running (no console pipe)" >&2 + exit 1 +fi +printf '%s\n' "$*" > /run/fivem.stdin diff --git a/bin/supervise.sh b/bin/supervise.sh new file mode 100755 index 0000000..e616199 --- /dev/null +++ b/bin/supervise.sh @@ -0,0 +1,66 @@ +#!/bin/sh +# --------------------------------------------------------------------------- +# supervise.sh +# +# Keeps one process alive. There is no systemd in this container, so this is +# what restarts FXServer if it crashes. +# +# Two details that matter for FXServer specifically: +# +# * It reads its console from stdin and quits the moment stdin reaches EOF, +# so it is given a FIFO whose write end this script holds open forever. +# That doubles as a command channel - see /opt/fivem/bin/rcon. +# +# * A server that dies immediately is usually failing for a reason that will +# not fix itself (bad licence key, database down, Cfx rate limiting). The +# restart delay backs off so a broken server does not hammer an upstream +# service, and resets once it has stayed up for a while. +# --------------------------------------------------------------------------- +NAME="$1"; LOG="$2"; shift 2 + +FIFO="${FIFO:-/run/$NAME.stdin}" +MIN_DELAY=5 +MAX_DELAY=300 +HEALTHY_AFTER=120 # seconds of uptime that count as "it actually started" + +mkdir -p "$(dirname "$LOG")" +echo $$ > "/run/$NAME.sup.pid" + +[ -p "$FIFO" ] || { rm -f "$FIFO"; mkfifo "$FIFO"; } +# read-write open: holds the pipe open without blocking and without a helper process +exec 9<> "$FIFO" + +cleanup() { + kill "$CHILD" 2>/dev/null + rm -f "/run/$NAME.sup.pid" "/run/$NAME.child.pid" + exit 0 +} +trap cleanup TERM INT + +delay=$MIN_DELAY + +while true; do + if [ -f "$LOG" ] && [ "$(stat -c %s "$LOG")" -gt 209715200 ]; then + mv "$LOG" "$LOG.1" + fi + + echo "=== $(date -Is) starting $NAME ===" >> "$LOG" + started=$(date +%s) + + "$@" >> "$LOG" 2>&1 <&9 & + CHILD=$! + echo $CHILD > "/run/$NAME.child.pid" + wait $CHILD + RC=$? + + ran=$(( $(date +%s) - started )) + if [ "$ran" -ge "$HEALTHY_AFTER" ]; then + delay=$MIN_DELAY + else + delay=$(( delay * 2 )) + [ "$delay" -gt "$MAX_DELAY" ] && delay=$MAX_DELAY + fi + + echo "=== $(date -Is) $NAME exited (rc=$RC) after ${ran}s, restarting in ${delay}s ===" >> "$LOG" + sleep "$delay" +done diff --git a/server-code/README.md b/docs/SERVER.md similarity index 64% rename from server-code/README.md rename to docs/SERVER.md index 967cbe2..93bbbe2 100644 --- a/server-code/README.md +++ b/docs/SERVER.md @@ -27,6 +27,41 @@ resources: `cfx-server-data` is not used at all, and the bundled `chat` and | `rp_selftest` | Checks the account/character data path on every boot and proves it survived the restart. | | `rp_dbtest` | Driver test suite. Not started by default; `ensure rp_dbtest` to run it. | +## The look + +The interface is the paperwork side of a life in Los Santos: every screen is a +sheet from the city's Office of Vital Records, lying on a dark desk while the +game runs on behind it. Paper is the only surface we draw; the game is the room +the desk is in. That is why the NUI body stays transparent and the sheets are +opaque - an opaque sheet stays legible over a bright daylight city, where a dark +glass panel would not. + +`html/tokens.css` is shared verbatim by `rp_ui` and `rp_loading` and holds the +whole system. Three typographic voices, and the rule between them is literal: + +| voice | face | what it is | +|-------|------|------------| +| preprinted | Archivo, expanded, caps | what the form was printed with: headings, field captions, buttons | +| typed | IBM Plex Mono | what somebody entered on it: values, serials, names, user input | +| prose | IBM Plex Sans | the plain-English notes in the margin: blurbs and hints | + +Three inks, each with exactly one job and never used decoratively: `--canary` +(municipal form yellow) is what is selected right now, `--stamp` (oxblood) is +filed / refused / destroyed, `--verdi` (municipal teal) is checked and valid. + +The one loud thing is the rubber stamp, and it only ever marks a real change of +state: the file opened, the application approved, the placement issued. It is +masked with SVG turbulence so the ink lands unevenly, and the paper on the desk +takes the hit with it. + +Fonts are bundled, never fetched: a NUI page has no guaranteed internet. Any +glyph used in `content:` must exist in the shipped latin subset, which is why +the validation tick is drawn from borders rather than U+2713. + +Screens can be looked at without launching the game: `python3 /opt/preview/build.py` +stubs the NUI bridge, pushes each screen into a representative state, and writes +standalone pages to `/opt/preview/out` for headless Chrome to shoot. + ## Operating it service fivem start|stop|restart|status diff --git a/server-code/etc/schema.sql b/etc/schema.sql similarity index 100% rename from server-code/etc/schema.sql rename to etc/schema.sql diff --git a/etc/secrets.cfg.example b/etc/secrets.cfg.example new file mode 100644 index 0000000..c594916 --- /dev/null +++ b/etc/secrets.cfg.example @@ -0,0 +1,12 @@ +# Copy to /opt/fivem/data/secrets.cfg and chmod 600. +# This file is exec'd by server.cfg and must never be committed anywhere. + +# Free key from https://keymaster.fivem.net +sv_licenseKey "cfxk_your_key_here" + +# Database the rp_db driver connects to. +set rp_db_host "127.0.0.1" +set rp_db_port "3306" +set rp_db_user "rp" +set rp_db_pass "your_database_password" +set rp_db_name "rp" diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..f50dccc --- /dev/null +++ b/install.sh @@ -0,0 +1,236 @@ +#!/bin/sh +# --------------------------------------------------------------------------- +# Los Santos RP - installer +# +# Puts a working server on a clean Ubuntu/Debian box: FXServer artefacts, +# MariaDB with the schema, the resources from this repository, the keep-alive +# supervisor and a boot entry. +# +# sudo sh install.sh --licence cfxk_xxxxxxxx +# +# Options +# --licence KEY Cfx.re server key from https://keymaster.fivem.net +# --dir PATH install root (default /opt/fivem) +# --hostname NAME server name shown in the list (default from server.cfg.example) +# --port N game port (default 30120) +# --name NAME service name, one per server (default fivem) +# --db-name NAME database (default rp) +# --db-user USER database user (default rp) +# --db-pass PASS password for that user (default: generated) +# --build ID FXServer build to use (default: latest recommended) +# --no-start install everything, do not start the server +# --------------------------------------------------------------------------- +set -e + +DIR=/opt/fivem +LICENCE="" +HOSTNAME_="" +BUILD="" +DB_PASS="" +DB_NAME=rp +DB_USER=rp +PORT=30120 +SVC=fivem +START=1 +ARTIFACTS="https://runtime.fivem.net/artifacts/fivem/build_proot_linux/master/" +SRC=$(cd "$(dirname "$0")" && pwd) + +while [ $# -gt 0 ]; do + case "$1" in + --licence|--license) LICENCE="$2"; shift 2 ;; + --dir) DIR="$2"; shift 2 ;; + --hostname) HOSTNAME_="$2"; shift 2 ;; + --build) BUILD="$2"; shift 2 ;; + --db-pass) DB_PASS="$2"; shift 2 ;; + --db-name) DB_NAME="$2"; shift 2 ;; + --db-user) DB_USER="$2"; shift 2 ;; + --port) PORT="$2"; shift 2 ;; + --name) SVC="$2"; shift 2 ;; + --no-start) START=0; shift ;; + -h|--help) sed -n '2,20p' "$0"; exit 0 ;; + *) echo "unknown option: $1" >&2; exit 1 ;; + esac +done + +say() { printf '\n\033[1;33m==\033[0m %s\n' "$*"; } +ok() { printf ' \033[32mok\033[0m %s\n' "$*"; } +die() { printf '\n\033[31mfailed:\033[0m %s\n' "$*" >&2; exit 1; } + +[ "$(id -u)" = 0 ] || die "run as root (sudo sh install.sh ...)" +[ -f "$SRC/etc/schema.sql" ] || die "run this from a clone of the repository" +command -v apt-get >/dev/null || die "this installer is for Debian/Ubuntu" + +# --- 1. packages ----------------------------------------------------------- +say "Installing packages" +export DEBIAN_FRONTEND=noninteractive +apt-get update -qq +apt-get install -y -qq curl ca-certificates xz-utils mariadb-server >/dev/null +ok "curl, xz-utils, mariadb-server" + +# --- 2. FXServer artefacts ------------------------------------------------- +say "Fetching FXServer" +if [ -n "$BUILD" ]; then + REL=$(curl -fsSL "$ARTIFACTS" | tr '>' '\n' | grep -oE "\./$BUILD-[0-9a-f]+/fx\.tar\.xz" | head -1) + [ -n "$REL" ] || die "build $BUILD not found on $ARTIFACTS" +else + REL=$(curl -fsSL "$ARTIFACTS" | tr '>' '\n' | grep -B4 'LATEST RECOMMENDED' \ + | grep -oE '\./[0-9]+-[0-9a-f]+/fx\.tar\.xz' | head -1) + [ -n "$REL" ] || die "could not find the recommended build on $ARTIFACTS" +fi +URL="$ARTIFACTS${REL#./}" +BUILD_ID=$(echo "$REL" | grep -oE '[0-9]+' | head -1) + +mkdir -p "$DIR/server" "$DIR/data/resources" "$DIR/bin" "$DIR/logs" "$DIR/etc" +if [ -x "$DIR/server/run.sh" ] && [ -f "$DIR/server/.build" ] && [ "$(cat "$DIR/server/.build")" = "$BUILD_ID" ]; then + ok "build $BUILD_ID already installed" +else + TMP=$(mktemp -d) + curl -fL# "$URL" -o "$TMP/fx.tar.xz" || die "download failed: $URL" + rm -rf "$DIR/server"; mkdir -p "$DIR/server" + tar xJf "$TMP/fx.tar.xz" -C "$DIR/server" + rm -rf "$TMP" + chmod +x "$DIR/server/run.sh" + echo "$BUILD_ID" > "$DIR/server/.build" + ok "build $BUILD_ID unpacked into $DIR/server" +fi + +# --- 3. database ----------------------------------------------------------- +say "Preparing the database" +if [ ! -f /etc/init.d/mariadb ] && [ ! -d /run/systemd/system ]; then + die "no init system found for mariadb" +fi +if [ -d /run/systemd/system ]; then + systemctl enable --now mariadb >/dev/null 2>&1 || true +else + service mariadb start >/dev/null 2>&1 || true +fi +i=0 +while ! mysqladmin ping >/dev/null 2>&1; do + i=$((i+1)); [ $i -gt 60 ] && die "mariadb did not start" + sleep 1 +done + +if [ -z "$DB_PASS" ]; then + if [ -f "$DIR/data/secrets.cfg" ]; then + DB_PASS=$(sed -n 's/^set rp_db_pass "\(.*\)"$/\1/p' "$DIR/data/secrets.cfg" | head -1) + fi + [ -n "$DB_PASS" ] || DB_PASS=$(head -c 24 /dev/urandom | base64 | tr -dc 'A-Za-z0-9' | cut -c1-24) +fi + +mysql -e "CREATE DATABASE IF NOT EXISTS \`$DB_NAME\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" +mysql -e "CREATE USER IF NOT EXISTS '$DB_USER'@'127.0.0.1' IDENTIFIED BY '$DB_PASS';" +mysql -e "ALTER USER '$DB_USER'@'127.0.0.1' IDENTIFIED BY '$DB_PASS';" +mysql -e "GRANT SELECT, INSERT, UPDATE, DELETE ON \`$DB_NAME\`.* TO '$DB_USER'@'127.0.0.1'; FLUSH PRIVILEGES;" +mysql "$DB_NAME" < "$SRC/etc/schema.sql" +ok "database $DB_NAME, user $DB_USER@127.0.0.1, schema applied" + +# --- 4. resources and configuration --------------------------------------- +say "Installing the server files" +rm -rf "$DIR/data/resources/[rp]" +mkdir -p "$DIR/data/resources" +cp -r "$SRC/resources/[rp]" "$DIR/data/resources/" +cp "$SRC/bin/supervise.sh" "$DIR/bin/" +sed "s|/run/fivem.stdin|/run/$SVC.stdin|" "$SRC/bin/rcon" > "$DIR/bin/rcon" +chmod +x "$DIR/bin/supervise.sh" "$DIR/bin/rcon" +cp "$SRC/etc/schema.sql" "$DIR/etc/schema.sql" +ln -sf "$DIR/bin/rcon" "/usr/local/bin/$([ "$SVC" = fivem ] && echo rcon || echo "rcon-$SVC")" + +if [ -f "$DIR/data/server.cfg" ]; then + ok "server.cfg kept (already present)" +else + sed -e "s|exec /opt/fivem/data/secrets.cfg|exec $DIR/data/secrets.cfg|" \ + -e "s|0.0.0.0:30120|0.0.0.0:$PORT|g" \ + "$SRC/server.cfg.example" > "$DIR/data/server.cfg" + [ -n "$HOSTNAME_" ] && sed -i "s|^sv_hostname .*|sv_hostname \"$HOSTNAME_\"|;s|^sets sv_projectName .*|sets sv_projectName \"$HOSTNAME_\"|" "$DIR/data/server.cfg" + ok "server.cfg written" +fi + +if [ -z "$LICENCE" ] && [ -f "$DIR/data/secrets.cfg" ]; then + LICENCE=$(sed -n 's/^sv_licenseKey "\(.*\)"$/\1/p' "$DIR/data/secrets.cfg" | head -1) +fi +cat > "$DIR/data/secrets.cfg" < "/etc/init.d/$SVC" +chmod +x "/etc/init.d/$SVC" + +if [ -d /run/systemd/system ]; then + cat > "/etc/systemd/system/$SVC.service" </dev/null 2>&1 + ok "systemd unit $SVC.service" +elif [ -d /etc/redl/enabled ]; then + # REDL VDS: no systemd, the platform starts whatever is marked here + touch "/etc/redl/enabled/$SVC" /etc/redl/enabled/mariadb + ok "marked in /etc/redl/enabled (REDL VDS autostart)" +elif [ -f /etc/redl/enabled ]; then + grep -qx "$SVC" /etc/redl/enabled || echo "$SVC" >> /etc/redl/enabled + grep -qx mariadb /etc/redl/enabled || echo mariadb >> /etc/redl/enabled + ok "marked in /etc/redl/enabled (REDL VDS autostart)" +else + command -v update-rc.d >/dev/null && update-rc.d "$SVC" defaults >/dev/null 2>&1 || true + ok "/etc/init.d/$SVC installed" +fi + +# --- 6. start -------------------------------------------------------------- +if [ "$START" = 0 ]; then + say "Done (not started, --no-start)" + exit 0 +fi +if [ -z "$LICENCE" ]; then + say "Done" + echo " No licence key given. Get a free one at https://keymaster.fivem.net," + echo " put it into $DIR/data/secrets.cfg and run: service $SVC start" + exit 0 +fi + +say "Starting the server" +if [ -d /run/systemd/system ]; then systemctl restart "$SVC"; else service "$SVC" restart >/dev/null; fi + +i=0 +while [ $i -lt 90 ]; do + if grep -q "Authenticated with cfx.re Nucleus" "$DIR/logs/server.log" 2>/dev/null; then + ok "server is up and registered with Cfx" + grep -q "\[selftest\] data path OK" "$DIR/logs/server.log" && ok "self-test passed: the data path works" + IP=$(curl -fsS --max-time 5 https://api.ipify.org 2>/dev/null || echo "") + printf '\n connect %s:%s\n logs: tail -f %s\n console: rcon status\n\n' "$IP" "$PORT" "$DIR/logs/server.log" + exit 0 + fi + if grep -qE "Could not authenticate server license key|invalid license key|Failed to verify" "$DIR/logs/server.log" 2>/dev/null; then + if [ -d /run/systemd/system ]; then systemctl stop "$SVC"; else service "$SVC" stop >/dev/null 2>&1; fi + die "the licence key was refused - get one at https://keymaster.fivem.net, put it into $DIR/data/secrets.cfg and run: service $SVC start" + fi + i=$((i+1)); sleep 2 +done +die "the server did not come up in 3 minutes - see $DIR/logs/server.log" diff --git a/server-code/data/resources/[rp]/rp_core/client/state.lua b/resources/[rp]/rp_core/client/state.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_core/client/state.lua rename to resources/[rp]/rp_core/client/state.lua diff --git a/server-code/data/resources/[rp]/rp_core/fxmanifest.lua b/resources/[rp]/rp_core/fxmanifest.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_core/fxmanifest.lua rename to resources/[rp]/rp_core/fxmanifest.lua diff --git a/server-code/data/resources/[rp]/rp_core/lib/callbacks_client.lua b/resources/[rp]/rp_core/lib/callbacks_client.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_core/lib/callbacks_client.lua rename to resources/[rp]/rp_core/lib/callbacks_client.lua diff --git a/server-code/data/resources/[rp]/rp_core/lib/callbacks_server.lua b/resources/[rp]/rp_core/lib/callbacks_server.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_core/lib/callbacks_server.lua rename to resources/[rp]/rp_core/lib/callbacks_server.lua diff --git a/server-code/data/resources/[rp]/rp_core/server/crypto.js b/resources/[rp]/rp_core/server/crypto.js similarity index 100% rename from server-code/data/resources/[rp]/rp_core/server/crypto.js rename to resources/[rp]/rp_core/server/crypto.js diff --git a/server-code/data/resources/[rp]/rp_core/server/player.lua b/resources/[rp]/rp_core/server/player.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_core/server/player.lua rename to resources/[rp]/rp_core/server/player.lua diff --git a/server-code/data/resources/[rp]/rp_core/shared/appearance.lua b/resources/[rp]/rp_core/shared/appearance.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_core/shared/appearance.lua rename to resources/[rp]/rp_core/shared/appearance.lua diff --git a/server-code/data/resources/[rp]/rp_core/shared/config.lua b/resources/[rp]/rp_core/shared/config.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_core/shared/config.lua rename to resources/[rp]/rp_core/shared/config.lua diff --git a/server-code/data/resources/[rp]/rp_core/shared/util.lua b/resources/[rp]/rp_core/shared/util.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_core/shared/util.lua rename to resources/[rp]/rp_core/shared/util.lua diff --git a/server-code/data/resources/[rp]/rp_db/fxmanifest.lua b/resources/[rp]/rp_db/fxmanifest.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_db/fxmanifest.lua rename to resources/[rp]/rp_db/fxmanifest.lua diff --git a/server-code/data/resources/[rp]/rp_db/lib/db.lua b/resources/[rp]/rp_db/lib/db.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_db/lib/db.lua rename to resources/[rp]/rp_db/lib/db.lua diff --git a/server-code/data/resources/[rp]/rp_db/server/mysql.js b/resources/[rp]/rp_db/server/mysql.js similarity index 100% rename from server-code/data/resources/[rp]/rp_db/server/mysql.js rename to resources/[rp]/rp_db/server/mysql.js diff --git a/server-code/data/resources/[rp]/rp_dbtest/fxmanifest.lua b/resources/[rp]/rp_dbtest/fxmanifest.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_dbtest/fxmanifest.lua rename to resources/[rp]/rp_dbtest/fxmanifest.lua diff --git a/server-code/data/resources/[rp]/rp_dbtest/server/test.lua b/resources/[rp]/rp_dbtest/server/test.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_dbtest/server/test.lua rename to resources/[rp]/rp_dbtest/server/test.lua diff --git a/server-code/data/resources/[rp]/rp_loading/fxmanifest.lua b/resources/[rp]/rp_loading/fxmanifest.lua similarity index 90% rename from server-code/data/resources/[rp]/rp_loading/fxmanifest.lua rename to resources/[rp]/rp_loading/fxmanifest.lua index 6035030..fae2bcb 100644 --- a/server-code/data/resources/[rp]/rp_loading/fxmanifest.lua +++ b/resources/[rp]/rp_loading/fxmanifest.lua @@ -20,7 +20,8 @@ files { 'html/tokens.css', 'html/app.css', 'html/app.js', - 'html/fonts/archivo.woff2', + 'html/fonts/archivo-var.woff2', + 'html/fonts/plexsans-var.woff2', 'html/fonts/plex-400.woff2', 'html/fonts/plex-500.woff2', } diff --git a/server-code/data/resources/[rp]/rp_loading/html/app.css b/resources/[rp]/rp_loading/html/app.css similarity index 78% rename from server-code/data/resources/[rp]/rp_loading/html/app.css rename to resources/[rp]/rp_loading/html/app.css index 6576a72..84a872b 100644 --- a/server-code/data/resources/[rp]/rp_loading/html/app.css +++ b/resources/[rp]/rp_loading/html/app.css @@ -46,7 +46,7 @@ .rail { position: relative; z-index: 2; - width: var(--rail); + width: var(--sheet); height: 100%; padding: var(--gut-y) var(--gut-x); display: grid; @@ -68,14 +68,14 @@ /* --- file header --------------------------------------------------------- */ .file { - border-top: 1px solid var(--sodium-line); + border-top: 1px solid rgba(217,178,60,.42); padding-top: 14px; } .file .serial { margin-top: 7px; - color: var(--paper-dim); + color: rgba(233,226,204,.62); } -.file .serial span { color: var(--sodium); } +.file .serial span { color: var(--canary); } /* --- wordmark ------------------------------------------------------------ */ @@ -108,13 +108,13 @@ font-size: 12px; font-weight: 500; letter-spacing: 0.42em; - color: var(--sodium); + color: var(--canary); text-transform: uppercase; } .dash { flex: 1; height: 1px; - background: linear-gradient(90deg, var(--sodium-line), transparent); + background: linear-gradient(90deg, rgba(217,178,60,.42), transparent); } /* --- notices ------------------------------------------------------------- */ @@ -126,9 +126,9 @@ justify-content: space-between; align-items: baseline; padding-bottom: 10px; - border-bottom: 1px solid var(--line); + border-bottom: 1px solid rgba(233,226,204,.14); } -.notice-index { color: var(--muted); } +.notice-index { color: rgba(233,226,204,.40); } .notice { padding-top: 18px; min-height: 132px; } @@ -140,7 +140,7 @@ } .notice-body { font-size: 14.5px; - color: var(--paper-dim); + color: rgba(233,226,204,.62); max-width: 40ch; } @@ -168,7 +168,7 @@ gap: 16px; } .step { - color: var(--paper-dim); + color: rgba(233,226,204,.62); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @@ -178,27 +178,27 @@ font-weight: 500; font-size: 28px; line-height: 1; - color: var(--paper); + color: var(--stock-hi); font-variant-numeric: tabular-nums; } .pct i { font-style: normal; font-size: 13px; - color: var(--muted); + color: rgba(233,226,204,.40); margin-left: 2px; } .track { position: relative; height: 2px; - background: var(--line); + background: rgba(233,226,204,.14); overflow: hidden; } .bar { display: block; height: 100%; width: 0%; - background: var(--sodium); + background: var(--canary); transition: width 420ms var(--ease); } /* a light runs ahead of the fill so the bar reads as active even when the @@ -227,7 +227,7 @@ gap: 14px; margin-top: 26px; padding-top: 18px; - border-top: 1px solid var(--line-soft); + border-top: 1px solid rgba(233,226,204,.07); } .mute { @@ -236,15 +236,15 @@ display: grid; place-items: center; background: transparent; - border: 1px solid var(--line); - color: var(--paper-dim); + border: 1px solid rgba(233,226,204,.14); + color: rgba(233,226,204,.62); cursor: pointer; transition: color 180ms var(--ease), border-color 180ms var(--ease), transform 120ms var(--ease); } -.mute:hover { color: var(--sodium); border-color: var(--sodium-line); } +.mute:hover { color: var(--canary); border-color: rgba(217,178,60,.42); } .mute:active { transform: translateY(1px); } .mute.off #wave { opacity: 0.18; } -.mute.off { color: var(--muted); } +.mute.off { color: rgba(233,226,204,.40); } input[type='range'] { flex: 1; @@ -256,14 +256,14 @@ input[type='range'] { } input[type='range']::-webkit-slider-runnable-track { height: 2px; - background: var(--line); + background: rgba(233,226,204,.14); } input[type='range']::-webkit-slider-thumb { -webkit-appearance: none; width: 3px; height: 15px; margin-top: -6.5px; - background: var(--sodium); + background: var(--canary); border: 0; border-radius: 0; transition: height 160ms var(--ease), margin-top 160ms var(--ease); @@ -274,11 +274,11 @@ input[type='range']:focus-visible::-webkit-slider-thumb { margin-top: -9.5px; } -.volval { width: 3ch; text-align: right; color: var(--muted); } +.volval { width: 3ch; text-align: right; color: rgba(233,226,204,.40); } .audiohint { margin-top: 10px; - color: var(--sodium); + color: var(--canary); animation: pulse 2.4s ease-in-out infinite; } @keyframes pulse { 50% { opacity: 0.45; } } @@ -300,3 +300,26 @@ body.handover .scrim { transition: opacity 1400ms var(--ease); opacity: 0; } body.handover #sky { transition: opacity 1400ms var(--ease); opacity: 0; } body.handover .grain { transition: opacity 1400ms var(--ease); opacity: 0; } body.handover .rail { transition: opacity 900ms var(--ease), transform 1200ms var(--ease); opacity: 0; transform: translateY(-12px); } + + +/* --------------------------------------------------------------------------- + The loading screen is the only screen with no paper on it, so the three + voices have to be restated in their light-on-dark values. + --------------------------------------------------------------------------- */ +.eyebrow { color: rgba(233,226,204,.42); } +.data { color: rgba(233,226,204,.60); } +body { color: var(--stock-hi); } + +/* The posted notice is a real notice: a slip of the same stock the rest of the + product is printed on, taped to the window of a city that is still loading. */ +.notice { + background: var(--stock); + color: var(--ink); + padding: 15px 17px 16px; + box-shadow: var(--lift-1); + border-left: 3px solid var(--canary); +} +.notice-head { border-bottom: 1px solid var(--rule); padding-bottom: 7px; margin-bottom: 9px; } +.notice-index { color: var(--ink-3); } +.notice-title { color: var(--ink); } +.notice-body { color: var(--ink-2); } diff --git a/server-code/data/resources/[rp]/rp_loading/html/app.js b/resources/[rp]/rp_loading/html/app.js similarity index 100% rename from server-code/data/resources/[rp]/rp_loading/html/app.js rename to resources/[rp]/rp_loading/html/app.js diff --git a/resources/[rp]/rp_loading/html/fonts/archivo-var.woff2 b/resources/[rp]/rp_loading/html/fonts/archivo-var.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e2448d0561ffdb0b0974d063a7cdbb712f41ad49 GIT binary patch literal 90104 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

-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 literal 0 HcmV?d00001 diff --git a/server-code/data/resources/[rp]/rp_loading/html/index.html b/resources/[rp]/rp_loading/html/index.html similarity index 100% rename from server-code/data/resources/[rp]/rp_loading/html/index.html rename to resources/[rp]/rp_loading/html/index.html diff --git a/resources/[rp]/rp_loading/html/tokens.css b/resources/[rp]/rp_loading/html/tokens.css new file mode 100644 index 0000000..8f0823b --- /dev/null +++ b/resources/[rp]/rp_loading/html/tokens.css @@ -0,0 +1,182 @@ +/* --------------------------------------------------------------------------- + Los Santos RP - design tokens. + + The interface is a set of documents from the city's Office of Vital Records, + lying on a dark desk while the city runs on behind them. Paper is the only + surface; the game is the room the desk is in. Nothing here is a dark glass + panel, because a city clerk does not hand you one. + + Three typographic voices, and the rule between them is literal: + + preprinted Archivo, expanded, caps what the form was printed with + typed IBM Plex Mono what somebody entered on it + prose IBM Plex Sans plain-English notes in the margin + + Shared verbatim by rp_loading and rp_ui so every screen reads as one product. + --------------------------------------------------------------------------- */ + +@font-face { + font-family: 'Archivo'; + src: url('fonts/archivo-var.woff2') format('woff2-variations'); + font-weight: 100 900; + font-stretch: 62% 125%; + font-display: block; +} +@font-face { + font-family: 'Plex Sans'; + src: url('fonts/plexsans-var.woff2') format('woff2-variations'); + font-weight: 100 700; + font-display: block; +} +@font-face { + font-family: 'Plex Mono'; + src: url('fonts/plex-400.woff2') format('woff2'); + font-weight: 400; + font-display: block; +} +@font-face { + font-family: 'Plex Mono'; + src: url('fonts/plex-500.woff2') format('woff2'); + font-weight: 500; + font-display: block; +} + +:root { + /* --- the room ---------------------------------------------------------- */ + --room: #0b0c0a; /* the dark the desk stands in, never pure black */ + --desk: #1a1b16; /* desk surface where the lamp reaches it */ + --lamp: rgba(224, 196, 128, 0.10); + + /* --- the paper --------------------------------------------------------- */ + --stock: #e3dbc2; /* manila card stock: warm, but grey-olive, not cream */ + --stock-hi: #efe9d7; /* the top sheet, directly under the lamp */ + --stock-2: #cbc09f; /* the sheet underneath, and every tab edge */ + --stock-3: #b3a888; /* deepest fold */ + + /* --- what is written on it --------------------------------------------- */ + --ink: #191c18; /* ballpoint black with a green cast */ + --ink-2: #4e5449; /* second-rank text */ + --ink-3: #7d8175; /* captions, disabled, ruled lines */ + + /* --- the three official inks, each with exactly one job ---------------- */ + --canary: #d9b23c; /* municipal form yellow: what is selected, now */ + --canary-dp: #a8801d; + --stamp: #7e2b26; /* oxblood rubber stamp: filed, refused, destroyed */ + --verdi: #2e6155; /* municipal teal: checked, valid, approved */ + + /* rules printed on the form */ + --rule: rgba(25, 28, 24, 0.22); + --rule-soft: rgba(25, 28, 24, 0.11); + --rule-firm: rgba(25, 28, 24, 0.55); + + /* paper fibre, laid over every sheet at low opacity */ + --fiber: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23f)'/%3E%3C/svg%3E"); + + /* uneven rubber-stamp ink: large soft blobs, not fine noise */ + --inkmask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='400' height='200'%3E%3Cfilter id='r'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.028' numOctaves='4' seed='11'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.4 0 0 0 -0.32'/%3E%3C/filter%3E%3Crect width='400' height='200' filter='url(%23r)'/%3E%3C/svg%3E"); + + /* a sheet of paper casts a real shadow onto the desk */ + --lift-1: 0 1px 0 rgba(255,255,255,.28) inset, 0 10px 22px -8px rgba(0,0,0,.7); + --lift-2: 0 1px 0 rgba(255,255,255,.34) inset, 0 26px 48px -18px rgba(0,0,0,.82); + + --sheet: clamp(360px, 27vw, 460px); + --sheet-w: clamp(440px, 34vw, 580px); + + --gut-x: clamp(26px, 2.4vw, 40px); + --gut-y: clamp(22px, 2.2vw, 34px); + + --ease: cubic-bezier(0.22, 0.61, 0.36, 1); + --ease-out: cubic-bezier(0.16, 1, 0.3, 1); +} + +* { box-sizing: border-box; margin: 0; padding: 0; } + +html, body { + height: 100%; + overflow: hidden; + background: var(--room); + color: var(--ink); + font-family: 'Plex Sans', system-ui, sans-serif; + font-size: 15px; + line-height: 1.55; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +/* --------------------------------------------------------------------------- + The three voices. + --------------------------------------------------------------------------- */ + +/* preprinted: everything the form arrived with */ +.pp, +.eyebrow, +.head, +label, +.btn, +.tab, +.ctrl-label, +.charname, +.spawnname, +.stagechip span { + font-family: 'Archivo', system-ui, sans-serif; + font-variation-settings: 'wdth' 112, 'wght' 700; + text-transform: uppercase; + letter-spacing: 0.07em; +} + +/* typed: everything a person put on the form */ +.data, +.typed, +input, +textarea, +.ctrl-val, +.stepval, +.charmeta, +.charmoney, +.counter, +.stagechip em, +.filetag { + font-family: 'Plex Mono', ui-monospace, monospace; + font-variation-settings: normal; + text-transform: none; + letter-spacing: 0.01em; + font-variant-numeric: tabular-nums; +} + +/* prose: the plain-English notes, the only voice allowed sentence case */ +.sub, +.hint, +.spawnblurb, +.switch { + font-family: 'Plex Sans', system-ui, sans-serif; + text-transform: none; + letter-spacing: 0; +} + +.eyebrow { + font-size: 10px; + font-variation-settings: 'wdth' 104, 'wght' 600; + letter-spacing: 0.19em; + color: var(--ink-3); +} + +.data { + font-size: 11.5px; + color: var(--ink-2); +} + +.rule { height: 1px; background: var(--rule); border: 0; } + +/* Focus is always the canary, always visible, and never subtle. */ +:focus-visible { + outline: 2px solid var(--canary-dp); + outline-offset: 2px; +} + +@media (prefers-reduced-motion: reduce) { + *, *::before, *::after { + animation-duration: 0.001ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.001ms !important; + } +} diff --git a/server-code/data/resources/[rp]/rp_selftest/fxmanifest.lua b/resources/[rp]/rp_selftest/fxmanifest.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_selftest/fxmanifest.lua rename to resources/[rp]/rp_selftest/fxmanifest.lua diff --git a/server-code/data/resources/[rp]/rp_selftest/server/test.lua b/resources/[rp]/rp_selftest/server/test.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_selftest/server/test.lua rename to resources/[rp]/rp_selftest/server/test.lua diff --git a/server-code/data/resources/[rp]/rp_session/fxmanifest.lua b/resources/[rp]/rp_session/fxmanifest.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_session/fxmanifest.lua rename to resources/[rp]/rp_session/fxmanifest.lua diff --git a/server-code/data/resources/[rp]/rp_session/server/main.lua b/resources/[rp]/rp_session/server/main.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_session/server/main.lua rename to resources/[rp]/rp_session/server/main.lua diff --git a/server-code/data/resources/[rp]/rp_ui/client/camera.lua b/resources/[rp]/rp_ui/client/camera.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_ui/client/camera.lua rename to resources/[rp]/rp_ui/client/camera.lua diff --git a/server-code/data/resources/[rp]/rp_ui/client/main.lua b/resources/[rp]/rp_ui/client/main.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_ui/client/main.lua rename to resources/[rp]/rp_ui/client/main.lua diff --git a/server-code/data/resources/[rp]/rp_ui/client/ped.lua b/resources/[rp]/rp_ui/client/ped.lua similarity index 100% rename from server-code/data/resources/[rp]/rp_ui/client/ped.lua rename to resources/[rp]/rp_ui/client/ped.lua diff --git a/server-code/data/resources/[rp]/rp_ui/fxmanifest.lua b/resources/[rp]/rp_ui/fxmanifest.lua similarity index 89% rename from server-code/data/resources/[rp]/rp_ui/fxmanifest.lua rename to resources/[rp]/rp_ui/fxmanifest.lua index 0f190e0..952550b 100644 --- a/server-code/data/resources/[rp]/rp_ui/fxmanifest.lua +++ b/resources/[rp]/rp_ui/fxmanifest.lua @@ -26,7 +26,8 @@ files { 'html/tokens.css', 'html/app.css', 'html/app.js', - 'html/fonts/archivo.woff2', + 'html/fonts/archivo-var.woff2', + 'html/fonts/plexsans-var.woff2', 'html/fonts/plex-400.woff2', 'html/fonts/plex-500.woff2', } diff --git a/resources/[rp]/rp_ui/html/app.css b/resources/[rp]/rp_ui/html/app.css new file mode 100644 index 0000000..779191b --- /dev/null +++ b/resources/[rp]/rp_ui/html/app.css @@ -0,0 +1,820 @@ +/* --------------------------------------------------------------------------- + Los Santos RP - the pre-spawn screens. + + Every screen is a sheet of paper from the Office of Vital Records, lying on a + dark desk with the city running behind it. The body stays transparent: the + game is the room, and the paper is the only thing we draw. + --------------------------------------------------------------------------- */ + +body { + background: transparent; + transition: opacity 420ms var(--ease); +} +body.hidden { opacity: 0; pointer-events: none; } + +/* --- the room ------------------------------------------------------------- + A lamp over the desk on the left, and the dark closing in everywhere else. + This is what makes an opaque sheet of paper look lit rather than pasted on. */ +.edge { + position: fixed; inset: 0; z-index: 0; pointer-events: none; + background: + radial-gradient(58% 74% at 22% 46%, var(--lamp) 0%, transparent 62%), + radial-gradient(120% 96% at 26% 50%, transparent 38%, rgba(0,0,0,.58) 100%); +} +.grain { + position: fixed; inset: 0; z-index: 60; pointer-events: none; + opacity: .10; mix-blend-mode: overlay; + background-image: var(--fiber); + background-size: 160px 160px; +} + +/* ========================================================================= + persistent chrome: the edge of the desk + ========================================================================= */ + +.topbar { + position: fixed; top: 0; left: 0; right: 0; z-index: 40; + display: flex; align-items: center; justify-content: space-between; + gap: 26px; + padding: 20px var(--gut-x) 26px; + background: linear-gradient(to bottom, rgba(6,7,5,.80), rgba(6,7,5,0)); + pointer-events: none; +} + +.mark { display: flex; align-items: center; gap: 12px; } + +.seal { width: 32px; height: 32px; flex: none; opacity: .92; } +.seal-ring { fill: none; stroke: var(--stock-2); stroke-width: 3; } +.seal-ring.thin { stroke-width: 1.4; opacity: .6; } +.seal-ticks { + fill: none; stroke: var(--stock-2); stroke-width: 5; opacity: .5; + stroke-dasharray: 2 9; +} +.seal-star { fill: var(--canary); } + +.mark-lines { display: flex; flex-direction: column; line-height: 1.1; } +.mark-name { + font-family: 'Archivo', sans-serif; + font-variation-settings: 'wdth' 118, 'wght' 800; + font-size: 15px; letter-spacing: .04em; text-transform: uppercase; + color: var(--stock-hi); +} +.mark-tag { + font-family: 'Plex Mono', monospace; + font-size: 9px; letter-spacing: .3em; text-transform: uppercase; + color: var(--canary); +} + +/* the routing box: three stations, in the order the file moves through them */ +.stages { display: flex; align-items: center; gap: 10px; } +.stagechip { + display: inline-flex; align-items: center; gap: 8px; + background: none; border: 0; padding: 0; cursor: default; +} +.stagechip em { + font-style: normal; font-size: 9px; line-height: 1; + width: 21px; height: 19px; display: grid; place-items: center; + border: 1px solid rgba(222,216,198,.26); + color: rgba(222,216,198,.45); + transition: all 320ms var(--ease); +} +.stagechip span { + font-size: 9.5px; letter-spacing: .17em; + color: rgba(222,216,198,.42); + transition: color 320ms var(--ease); +} +.stagechip.on em { + background: var(--canary); border-color: var(--canary); color: var(--ink); +} +.stagechip.on span { color: var(--stock-hi); } +.stagechip.done em { color: transparent; border-color: rgba(222,216,198,.4); position: relative; } +.stagechip.done em::after { + content: '\00D7'; + position: absolute; inset: 0; display: grid; place-items: center; + font-size: 13px; color: var(--canary); +} +.stagelink { width: 26px; height: 1px; background: rgba(222,216,198,.2); } + +.filetag { display: flex; align-items: baseline; gap: 8px; font-size: 11px; color: rgba(222,216,198,.55); } +.filetag-k { + font-family: 'Archivo', sans-serif; + font-variation-settings: 'wdth' 104, 'wght' 600; + font-size: 9px; letter-spacing: .19em; text-transform: uppercase; + color: rgba(222,216,198,.35); +} + +/* ========================================================================= + the sheet + ========================================================================= */ + +.screen { + position: fixed; inset: 0; z-index: 10; + display: flex; align-items: center; + padding: 96px var(--gut-x) var(--gut-y); +} +.screen[hidden] { display: none; } + +.rail { + position: relative; + width: var(--sheet); + max-height: 100%; + display: flex; flex-direction: column; + background: var(--stock); + box-shadow: var(--lift-2); + z-index: 2; +} +.rail.wide { width: var(--sheet-w); } + +/* paper: fibre, a warmer lit edge on the lamp side, and a shaded far edge */ +.rail-scrim { + position: absolute; inset: 0; z-index: 0; pointer-events: none; + background-image: + linear-gradient(to right, transparent 70%, rgba(25,28,24,.10) 100%), + var(--fiber); + background-size: auto, auto, 160px 160px; + opacity: 1; + mix-blend-mode: normal; +} +.rail-scrim::after { + content: ''; position: absolute; inset: 0; + background-image: var(--fiber); + background-size: 150px 150px; + opacity: .05; + mix-blend-mode: multiply; +} + +.rail::after { + content: ''; position: absolute; inset: 0; z-index: 3; pointer-events: none; + background: radial-gradient(78% 62% at 16% 6%, rgba(255,240,196,.55) 0%, rgba(255,240,196,0) 64%); + mix-blend-mode: soft-light; +} + +.rail-inner { + position: relative; z-index: 1; + padding: 22px var(--gut-x) var(--gut-y); + overflow-y: auto; overflow-x: hidden; + scrollbar-width: thin; + scrollbar-color: var(--stock-3) transparent; +} +.rail-inner::-webkit-scrollbar { width: 4px; } +.rail-inner::-webkit-scrollbar-thumb { background: var(--stock-3); } +.rail-inner::-webkit-scrollbar-track { background: transparent; } + +/* --- letterhead ----------------------------------------------------------- */ +.letterhead { + position: relative; z-index: 1; flex: none; + display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; + padding: 20px var(--gut-x) 14px; + border-bottom: 2.5px solid var(--ink); +} +.letterhead::after { + content: ''; position: absolute; left: var(--gut-x); right: var(--gut-x); bottom: -5px; + height: 1px; background: var(--ink); opacity: .45; +} +.lh-dept { display: flex; flex-direction: column; gap: 2px; } +.lh-city { + font-family: 'Plex Mono', monospace; + font-size: 9.5px; letter-spacing: .22em; text-transform: uppercase; + color: var(--ink-3); +} +.lh-office { + font-family: 'Archivo', sans-serif; + font-variation-settings: 'wdth' 116, 'wght' 800; + font-size: 15px; letter-spacing: .015em; text-transform: uppercase; + color: var(--ink); line-height: 1.15; +} +.lh-form { + font-size: 10px; letter-spacing: .1em; color: var(--ink-2); + border: 1px solid var(--rule); padding: 3px 7px; white-space: nowrap; +} + +/* --- headings ------------------------------------------------------------- */ +.head { + font-size: clamp(23px, 2.05vw, 30px); + font-variation-settings: 'wdth' 108, 'wght' 800; + letter-spacing: .005em; line-height: 1.06; + color: var(--ink); + margin: 12px 0 10px; + text-wrap: balance; +} +.sub { + font-size: 13.5px; line-height: 1.6; color: var(--ink-2); + max-width: 46ch; margin-bottom: 20px; +} + +.kicker { display: flex; align-items: center; gap: 12px; margin: 0 0 12px; } +.hair { flex: 1; height: 1px; background: var(--rule); } + +/* ========================================================================= + form fields - a printed box with its caption punched through the rule + ========================================================================= */ + +.form { display: block; } + +.field { position: relative; margin-top: 24px; } +.field:first-child { margin-top: 8px; } + +.field label { + position: absolute; top: -7px; left: 11px; z-index: 2; + font-size: 9px; letter-spacing: .17em; + color: var(--ink-2); + background: var(--stock); + padding: 0 6px; +} + +.field input, +.field textarea { + width: 100%; display: block; + border: 1.4px solid var(--rule-firm); + background: rgba(255,255,255,.34); + color: var(--ink); + font-size: 14px; line-height: 1.4; + padding: 14px 13px 11px; + transition: border-color 200ms var(--ease), background 200ms var(--ease); +} +.field textarea { min-height: 108px; resize: none; padding-top: 15px; } +.field input::placeholder, +.field textarea::placeholder { color: var(--ink-3); opacity: .65; } +.field input:focus, +.field textarea:focus { + outline: none; + border-color: var(--ink); + background: rgba(255,255,255,.6); +} + +/* the clerk's tick in the margin of the box */ +.field::after { + content: ''; position: absolute; top: 15px; right: 13px; + font-size: 14px; line-height: 1; pointer-events: none; + opacity: 0; transition: opacity 180ms var(--ease); +} +.field.good::after { + content: ''; opacity: 1; + width: 6px; height: 11px; top: 15px; right: 16px; + border: 2px solid var(--verdi); border-top: 0; border-left: 0; + transform: rotate(42deg); +} +.field.bad::after { content: '\00D7'; color: var(--stamp); opacity: 1; } +.field.good input { border-color: var(--verdi); } +.field.bad input { border-color: var(--stamp); } +.field.good .hint { color: var(--verdi); } +.field.bad .hint { color: var(--stamp); } + +.hint { + font-size: 11.5px; line-height: 1.45; color: var(--ink-3); + margin-top: 7px; +} +.counter { + font-size: 10.5px; color: var(--ink-3); margin-top: 7px; text-align: right; +} + +.withbtn { position: relative; } +.withbtn input { padding-right: 68px; } +.reveal-btn { + position: absolute; right: 12px; top: 50%; transform: translateY(-50%); + background: none; border: 0; cursor: pointer; + font-family: 'Archivo', sans-serif; + font-variation-settings: 'wdth' 104, 'wght' 600; + font-size: 9.5px; letter-spacing: .15em; text-transform: uppercase; + color: var(--ink-2); + border-bottom: 1px solid var(--rule-firm); + padding-bottom: 1px; +} +.reveal-btn:hover { color: var(--ink); border-bottom-color: var(--ink); } + +.collapse { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 380ms var(--ease); } +.collapse.open { grid-template-rows: 1fr; } +.collapse-inner { overflow: hidden; min-height: 0; } + +.formerror { + margin-top: 16px; + font-family: 'Plex Sans', sans-serif; + font-size: 12.5px; line-height: 1.45; + color: var(--stamp); + border-left: 3px solid var(--stamp); + background: rgba(126,43,38,.07); + padding: 9px 12px; + animation: nudge 380ms var(--ease); +} + +/* ========================================================================= + buttons + ========================================================================= */ + +.btn { + position: relative; overflow: hidden; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + font-size: 11px; letter-spacing: .15em; + padding: 15px 24px; + border: 1.4px solid var(--ink); + background: none; color: var(--ink); + cursor: pointer; + transition: color 260ms var(--ease), border-color 260ms var(--ease), opacity 200ms var(--ease); +} +.btn::before { + content: ''; position: absolute; inset: 0; z-index: 0; + background: var(--canary); + transform: scaleX(0); transform-origin: left center; + transition: transform 340ms var(--ease-out); +} +.btn:hover:not(:disabled)::before { transform: scaleX(1); } +.btn-label, .btn-spin { position: relative; z-index: 1; } + +.btn.primary { background: var(--ink); color: var(--stock-hi); width: 100%; margin-top: 22px; } +.btn.primary:hover:not(:disabled) { color: var(--ink); } + +.btn.ghost { background: rgba(255,255,255,.2); } +.btn.ghost:hover:not(:disabled) { color: var(--ink); } + +.btn.danger { border-color: var(--stamp); color: var(--stamp); } +.btn.danger::before { background: var(--stamp); } +.btn.danger:hover:not(:disabled) { color: var(--stock-hi); } + +.btn:disabled { opacity: .32; cursor: default; } + +.btn-spin { display: none; width: 13px; height: 13px; } +.btn.busy .btn-label { opacity: .35; } +.btn.busy .btn-spin { + display: block; + border: 1.6px solid currentColor; border-top-color: transparent; + border-radius: 50%; + animation: spin 720ms linear infinite; +} + +.switch { margin-top: 18px; font-size: 12.5px; color: var(--ink-2); } +.linkbtn { + background: none; border: 0; cursor: pointer; padding: 0; + font-family: inherit; font-size: inherit; color: var(--ink); + border-bottom: 1px solid var(--rule-firm); +} +.linkbtn:hover { border-bottom-color: var(--ink); } +.linkbtn.danger { + font-family: 'Archivo', sans-serif; + font-variation-settings: 'wdth' 104, 'wght' 600; + font-size: 9.5px; letter-spacing: .16em; text-transform: uppercase; + color: var(--stamp); border-bottom-color: rgba(126,43,38,.4); +} +.linkbtn.danger:hover { border-bottom-color: var(--stamp); } + +/* ========================================================================= + 02 / the register of persons - ruled index cards in a drawer + ========================================================================= */ + +.charlist { list-style: none; } + +.charcard { + position: relative; + padding: 15px 18px 14px 52px; + margin-bottom: 9px; + background: var(--stock-hi); + border: 1px solid var(--rule); + cursor: pointer; + display: flex; align-items: center; justify-content: space-between; gap: 14px; + transition: transform 200ms var(--ease), box-shadow 200ms var(--ease), background 200ms var(--ease); + /* the faint ruling of a real index card */ + background-image: repeating-linear-gradient( + to bottom, transparent 0 22px, rgba(46,97,85,.075) 22px 23px); +} +.charcard:hover { transform: translateY(-1px); box-shadow: 0 6px 14px -8px rgba(0,0,0,.55); } + +.charslot { + position: absolute; left: 0; top: 0; bottom: 0; width: 36px; + display: grid; place-items: center; + background: var(--stock-2); + border-right: 1px solid var(--rule); + font-size: 10.5px; color: var(--ink-2); + transition: background 200ms var(--ease), color 200ms var(--ease); +} + +.charname { + display: block; font-size: 14.5px; letter-spacing: .045em; + color: var(--ink); line-height: 1.2; +} +.charmeta { display: block; font-size: 10.5px; color: var(--ink-3); margin-top: 4px; } +.charmoney { font-size: 13px; color: var(--ink); white-space: nowrap; } + +.charcard.on { + background-color: #f4f0e4; + border-color: var(--ink); + box-shadow: inset 4px 0 0 var(--canary), 0 8px 18px -8px rgba(0,0,0,.6); +} +.charcard.on .charslot { background: var(--canary); color: var(--ink); } + +.charcard.empty { + background-color: transparent; background-image: none; + border: 1.4px dashed var(--rule-firm); + color: var(--ink-2); + justify-content: flex-start; +} +.charcard.empty .charslot { background: transparent; border-right-color: var(--rule-soft); font-size: 15px; } +.charcard.empty .charname { font-size: 11px; color: var(--ink-2); } +.charcard.empty:hover { background-color: rgba(255,255,255,.24); } + +.charactions { display: flex; gap: 10px; align-items: stretch; margin-top: 20px; } +.charactions .btn.primary { margin-top: 0; } +.charactions .btn.ghost { width: auto; flex: none; margin-top: 0; } + +/* ========================================================================= + 03 / application for identity + ========================================================================= */ + +.tabs { + position: relative; z-index: 1; flex: none; + display: flex; gap: 2px; + padding: 14px var(--gut-x) 0; + border-bottom: 1.4px solid var(--rule-firm); +} +.tab { + padding: 8px 11px 7px; + font-size: 9.5px; letter-spacing: .12em; + background: var(--stock-2); + border: 1px solid var(--rule); border-bottom: 0; + color: var(--ink-2); cursor: pointer; + margin-bottom: -1.4px; + transition: background 200ms var(--ease), color 200ms var(--ease); +} +.tab:hover { background: var(--stock); color: var(--ink); } +.tab.is-on { + background: var(--stock-hi); color: var(--ink); + border-bottom: 1.4px solid var(--stock-hi); +} + +.rail-inner.creator { padding-top: 20px; } + +.pane { display: none; } +.pane.is-on { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 18px 20px; + align-content: start; +} +.pane .sub { grid-column: 1 / -1; margin-bottom: 0; } +.pane .field { grid-column: 1 / -1; } + +.ctrl { min-width: 0; } +.ctrl.span2 { grid-column: 1 / -1; } +.ctrl-head { + display: flex; align-items: baseline; justify-content: space-between; gap: 10px; + margin-bottom: 7px; +} +.ctrl-label { font-size: 9.5px; letter-spacing: .14em; color: var(--ink-2); } +.ctrl-val { font-size: 10.5px; color: var(--ink-3); white-space: nowrap; } + +/* a measuring scale with a surveyor's marker riding on it */ +.slider { + -webkit-appearance: none; appearance: none; + width: 100%; height: 24px; background: transparent; cursor: pointer; +} +.slider::-webkit-slider-runnable-track { + height: 24px; + background-image: + linear-gradient(var(--rule-firm), var(--rule-firm)), + repeating-linear-gradient(90deg, var(--rule) 0 1px, transparent 1px 10%); + background-size: 100% 1.4px, 100% 7px; + background-position: 0 12px, 0 13px; + background-repeat: no-repeat, repeat-x; +} +.slider::-webkit-slider-thumb { + -webkit-appearance: none; appearance: none; + width: 11px; height: 18px; margin-top: 3px; + background: var(--ink); border: 0; + clip-path: polygon(0 0, 100% 0, 100% 62%, 50% 100%, 0 62%); + transition: background 160ms var(--ease); +} +.slider:hover::-webkit-slider-thumb { background: var(--canary-dp); } + +.stepper { + display: grid; grid-template-columns: 32px 1fr 32px; + border: 1.4px solid var(--rule-firm); + background: rgba(255,255,255,.34); +} +.stepper button { + border: 0; background: none; height: 32px; cursor: pointer; + color: var(--ink-2); font-size: 14px; line-height: 1; + transition: background 160ms var(--ease), color 160ms var(--ease); +} +.stepper button:hover { background: var(--ink); color: var(--stock-hi); } +.stepval { + display: grid; place-items: center; + font-size: 11.5px; color: var(--ink); + border-left: 1px solid var(--rule); border-right: 1px solid var(--rule); + overflow: hidden; white-space: nowrap; +} + +/* a printed colour chart: a fixed grid, so it can never wrap into orphans */ +.swatches { + display: grid; grid-template-columns: repeat(16, 1fr); + grid-auto-rows: 17px; + gap: 1px; padding: 1px; + background: var(--rule-firm); + border: 1px solid var(--rule-firm); +} +.swatch { + border: 0; padding: 0; cursor: pointer; + position: relative; min-width: 0; + transition: transform 140ms var(--ease); +} +.swatch:hover { transform: scale(1.18); z-index: 3; box-shadow: 0 0 0 1px var(--ink); } +.swatch.on { + z-index: 4; + box-shadow: 0 0 0 2px var(--ink), 0 0 0 4px var(--canary); +} + +/* the sex field, ticked the way a form is ticked */ +.seg { display: flex; gap: 24px; grid-column: 1 / -1; margin-bottom: 2px; } +.seg button { + display: inline-flex; align-items: center; gap: 9px; + background: none; border: 0; cursor: pointer; + font-family: 'Archivo', sans-serif; + font-variation-settings: 'wdth' 108, 'wght' 700; + font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; + color: var(--ink-2); +} +.seg button::before { + content: ''; width: 15px; height: 15px; flex: none; + display: grid; place-items: center; + border: 1.4px solid var(--rule-firm); + background: rgba(255,255,255,.4); + font-size: 13px; line-height: 1; color: var(--stamp); +} +.seg button.on { color: var(--ink); } +.seg button.on::before { content: '\00D7'; border-color: var(--ink); } + +.creator-foot { + position: relative; z-index: 1; flex: none; + display: flex; gap: 10px; + padding: 14px var(--gut-x) 18px; + border-top: 1px solid var(--rule); +} +.creator-foot .btn { margin-top: 0; } +.creator-foot .btn.ghost { flex: none; width: auto; } +.creator-foot .btn.primary { flex: 1; } + +#screen-creator .formerror { margin: 0 var(--gut-x); } + +/* --- the photograph plate ------------------------------------------------ + The subject stands inside this frame, and the frame is also the drag + surface, so the thing you aim at is the thing that turns. It is drawn wide + on purpose: the ped is framed generously rather than pinned to a cut-out. */ +.turntable { + position: absolute; left: 36%; right: 16%; top: 16%; bottom: 17%; + z-index: 5; cursor: grab; +} +.turntable.dragging { cursor: grabbing; } + +.plate-corner { + position: absolute; width: 30px; height: 30px; + border: 2px solid rgba(233,226,204,.72); + transition: border-color 260ms var(--ease); +} +.plate-corner.tl { left: 0; top: 0; border-right: 0; border-bottom: 0; } +.plate-corner.tr { right: 0; top: 0; border-left: 0; border-bottom: 0; } +.plate-corner.bl { left: 0; bottom: 0; border-right: 0; border-top: 0; } +.plate-corner.br { right: 0; bottom: 0; border-left: 0; border-top: 0; } +.turntable.dragging .plate-corner { border-color: var(--canary); } + +.plate-cap { + position: absolute; left: 0; right: 0; bottom: -28px; + display: flex; align-items: center; justify-content: space-between; gap: 14px; +} +.plate-cap-k { + font-family: 'Archivo', sans-serif; + font-variation-settings: 'wdth' 104, 'wght' 600; + font-size: 9px; letter-spacing: .22em; text-transform: uppercase; + color: rgba(222,216,198,.5); +} +.turnhint { + display: inline-flex; align-items: center; gap: 8px; + font-family: 'Plex Mono', monospace; + font-size: 10px; letter-spacing: .1em; + color: rgba(222,216,198,.45); + transition: opacity 200ms var(--ease); +} +.turntable.dragging .turnhint { opacity: 0; } +.turnicon { + width: 14px; height: 14px; display: block; flex: none; + border: 1px solid currentColor; border-radius: 50%; + border-right-color: transparent; + transform: rotate(-30deg); +} + +/* ========================================================================= + 04 / notice of placement + ========================================================================= */ + +.spawnlist { list-style: none; border-top: 1px solid var(--rule); } + +.spawncard { + position: relative; + padding: 13px 14px 13px 44px; + border-bottom: 1px solid var(--rule); + cursor: pointer; + transition: background 180ms var(--ease); +} +.spawncard:hover { background: rgba(255,255,255,.28); } + +.spawncard::before { + content: ''; position: absolute; left: 14px; top: 15px; + width: 15px; height: 15px; + display: grid; place-items: center; + border: 1.4px solid var(--rule-firm); + background: rgba(255,255,255,.45); + font-family: 'Plex Sans', sans-serif; + font-size: 13px; line-height: 1; color: var(--stamp); +} +.spawncard.on::before { content: '\00D7'; border-color: var(--ink); } +.spawncard.on { background: rgba(217,178,60,.13); } + +.spawnhead { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; } +.spawnname { font-size: 12.5px; letter-spacing: .07em; color: var(--ink); } +.spawnarea { + font-family: 'Plex Mono', monospace; + font-size: 9.5px; letter-spacing: .11em; text-transform: uppercase; + color: var(--ink-3); white-space: nowrap; +} +.spawnblurb { font-size: 12px; line-height: 1.5; color: var(--ink-2); margin-top: 4px; } + +/* --- the plan sheet ------------------------------------------------------- */ +.chart { + position: absolute; right: 6%; top: 50%; + transform: translateY(-50%) rotate(.5deg); + width: min(33vw, 58vh); aspect-ratio: 1 / 1; + z-index: 1; + background: var(--stock); + box-shadow: var(--lift-2); + padding: 3%; +} +.chart-paper { + position: absolute; inset: 0; pointer-events: none; + background-image: + radial-gradient(80% 66% at 14% 8%, rgba(255,244,206,.26) 0%, rgba(255,244,206,0) 62%), + var(--fiber); + background-size: auto, 150px 150px; + opacity: .9; +} +.chart svg { position: relative; width: 100%; height: 100%; display: block; } + +.chart-frame { fill: none; stroke: var(--rule); stroke-width: 1; } +.chart-ticks { fill: none; stroke: var(--ink); stroke-width: 2.5; opacity: .55; } +#landmass { fill: rgba(46,97,85,.07); stroke: var(--ink-2); stroke-width: 1.4; } +#coastline { fill: none; stroke: var(--ink); stroke-width: 2.6; } + +.pins { position: absolute; inset: 3%; pointer-events: none; } +.pin { + position: absolute; transform: translate(-50%, -50%); + display: flex; align-items: center; gap: 7px; +} +.pin.flip { flex-direction: row-reverse; } +.pin-mark { + width: 9px; height: 9px; flex: none; + background: var(--stock); + border: 1.6px solid var(--ink); + transform: rotate(45deg); + transition: all 220ms var(--ease); +} +.pin-label { + font-family: 'Plex Mono', monospace; + font-size: 8.5px; letter-spacing: .12em; text-transform: uppercase; + color: var(--ink-2); white-space: nowrap; +} +.pin.on .pin-mark { + background: var(--canary); border-color: var(--ink); + width: 13px; height: 13px; + box-shadow: 0 0 0 3px rgba(217,178,60,.3); +} +.pin.on .pin-label { color: var(--ink); } + +.titleblock { + position: absolute; right: 3%; bottom: 3%; + border: 1.4px solid var(--ink); + background: var(--stock-hi); + min-width: 44%; +} +.tb-row { display: flex; } +.tb-row + .tb-row { border-top: 1px solid var(--rule); } +.tb-k, .tb-v { padding: 4px 7px; font-size: 8px; line-height: 1.3; } +.tb-k { + font-family: 'Archivo', sans-serif; + font-variation-settings: 'wdth' 100, 'wght' 600; + letter-spacing: .14em; text-transform: uppercase; + color: var(--ink-3); + border-right: 1px solid var(--rule); + flex: none; +} +.tb-v { + font-family: 'Plex Mono', monospace; + color: var(--ink); flex: 1; + letter-spacing: .04em; +} +.tb-row + .tb-row .tb-k { border-left: 1px solid var(--rule); } +.tb-row + .tb-row .tb-k:first-child { border-left: 0; } +.tb-main .tb-v { + font-family: 'Archivo', sans-serif; + font-variation-settings: 'wdth' 112, 'wght' 700; + font-size: 10px; letter-spacing: .06em; text-transform: uppercase; +} + +/* ========================================================================= + the stamp - the one bold moment, and the only thing that moves loudly + ========================================================================= */ + +.stamp { + position: fixed; left: 17%; top: 53%; z-index: 50; + transform: translate(-50%, -50%) rotate(-8deg) scale(1); + display: none; + flex-direction: column; align-items: center; gap: 3px; + padding: 13px 30px 11px; + border: 4px solid var(--stamp); + color: var(--stamp); + pointer-events: none; + /* real rubber never inks evenly */ + -webkit-mask-image: var(--inkmask); + mask-image: var(--inkmask); + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; +} +.stamp::before { + content: ''; position: absolute; inset: 4px; + border: 1.4px solid var(--stamp); +} +.stamp-word { + font-family: 'Archivo', sans-serif; + font-variation-settings: 'wdth' 118, 'wght' 800; + font-size: 37px; letter-spacing: .1em; text-transform: uppercase; + line-height: 1; +} +.stamp-sub { + font-family: 'Plex Mono', monospace; + font-size: 8.5px; letter-spacing: .2em; text-transform: uppercase; + opacity: 1; +} +.stamp.show { display: flex; animation: stampdown 1700ms var(--ease-out) forwards; } + +@keyframes stampdown { + 0% { opacity: 0; transform: translate(-50%,-50%) rotate(-8deg) scale(2.3); filter: blur(4px); } + 22% { opacity: 1; transform: translate(-50%,-50%) rotate(-8deg) scale(.93); filter: blur(0); } + 32% { transform: translate(-50%,-50%) rotate(-8deg) scale(1.03); } + 42% { transform: translate(-50%,-50%) rotate(-8deg) scale(1); } + 78% { opacity: 1; } + 100% { opacity: 0; transform: translate(-50%,-50%) rotate(-8deg) scale(1); } +} + +/* the desk takes the hit when the stamp lands */ +body.struck .rail, body.struck .chart { animation: jolt 260ms var(--ease); } +@keyframes jolt { + 0% { transform: translate(0,0); } + 18% { transform: translate(-1px, 2px); } + 46% { transform: translate(1px, -1px); } + 100% { transform: translate(0,0); } +} +/* the plan sheet keeps its rotation while it shakes */ +body.struck .chart { animation-name: joltchart; } +@keyframes joltchart { + 0% { transform: translateY(-50%) rotate(.5deg); } + 18% { transform: translate(-1px, calc(-50% + 2px)) rotate(.5deg); } + 46% { transform: translate(1px, calc(-50% - 1px)) rotate(.5deg); } + 100% { transform: translateY(-50%) rotate(.5deg); } +} + +/* ========================================================================= + entrances - one orchestrated move per screen, not seven scattered ones + ========================================================================= */ + +.screen.is-on .rail { animation: sheetdown 520ms var(--ease-out) both; } +.screen.is-on .chart { animation: chartin 620ms var(--ease-out) 120ms both; } +.screen.is-on .turntable { animation: platein 700ms var(--ease-out) 180ms both; } +.screen.is-on .rail-inner, +.screen.is-on .creator-foot { animation: settle 520ms var(--ease-out) 160ms both; } + +@keyframes sheetdown { + from { opacity: 0; transform: translateY(-14px) scale(.995); } + to { opacity: 1; transform: none; } +} +@keyframes settle { + from { opacity: 0; transform: translateY(6px); } + to { opacity: 1; transform: none; } +} +@keyframes chartin { + from { opacity: 0; transform: translateY(-50%) rotate(.5deg) scale(.97); } + to { opacity: 1; transform: translateY(-50%) rotate(.5deg) scale(1); } +} +@keyframes platein { + from { opacity: 0; } + to { opacity: 1; } +} + +@keyframes spin { to { transform: rotate(360deg); } } +@keyframes nudge { + 0% { transform: translateX(0); } + 22% { transform: translateX(-5px); } + 44% { transform: translateX(4px); } + 68% { transform: translateX(-2px); } + 100% { transform: translateX(0); } +} + +/* Small screens: the sheet takes the width, the plate and plan sheet stand down. */ +@media (max-width: 1100px) { + .rail, .rail.wide { width: min(92vw, 560px); } + .chart { display: none; } + .turntable { left: auto; right: 4%; width: 34%; } +} diff --git a/server-code/data/resources/[rp]/rp_ui/html/app.js b/resources/[rp]/rp_ui/html/app.js similarity index 98% rename from server-code/data/resources/[rp]/rp_ui/html/app.js rename to resources/[rp]/rp_ui/html/app.js index 336a290..eb27eb5 100644 --- a/server-code/data/resources/[rp]/rp_ui/html/app.js +++ b/resources/[rp]/rp_ui/html/app.js @@ -72,12 +72,18 @@ function paintChips(activeKey) { }); } +/* The stamp is the only loud thing in the interface, so it only ever marks a + real change of state: the file opened, the application approved, the + placement issued. The paper on the desk takes the hit with it. */ function stamp(text) { const el = $('stamp'); $('stampText').textContent = text; el.classList.remove('show'); + document.body.classList.remove('struck'); void el.offsetWidth; el.classList.add('show'); + setTimeout(() => document.body.classList.add('struck'), 170); + setTimeout(() => document.body.classList.remove('struck'), 600); } function busy(btn, on) { @@ -491,7 +497,8 @@ const Creator = { swatches(label, palette, value, onPick) { const wrap = document.createElement('div'); - wrap.className = 'ctrl'; + /* A colour chart is 16 columns wide, so it always takes the full form. */ + wrap.className = 'ctrl span2'; wrap.innerHTML = `

`; diff --git a/resources/[rp]/rp_ui/html/fonts/archivo-var.woff2 b/resources/[rp]/rp_ui/html/fonts/archivo-var.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e2448d0561ffdb0b0974d063a7cdbb712f41ad49 GIT binary patch literal 90104 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

-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 literal 0 HcmV?d00001 diff --git a/server-code/data/resources/[rp]/rp_ui/html/index.html b/resources/[rp]/rp_ui/html/index.html similarity index 55% rename from server-code/data/resources/[rp]/rp_ui/html/index.html rename to resources/[rp]/rp_ui/html/index.html index 81f5543..10ee82f 100644 --- a/server-code/data/resources/[rp]/rp_ui/html/index.html +++ b/resources/[rp]/rp_ui/html/index.html @@ -14,10 +14,21 @@

- LOS SANTOS - ROLEPLAY + + + LOS SANTOS + ROLEPLAY +
+ -
- FILE 0000-000000 +
+ File + 0000-000000
- + - + - + - + - + diff --git a/resources/[rp]/rp_ui/html/tokens.css b/resources/[rp]/rp_ui/html/tokens.css new file mode 100644 index 0000000..8f0823b --- /dev/null +++ b/resources/[rp]/rp_ui/html/tokens.css @@ -0,0 +1,182 @@ +/* --------------------------------------------------------------------------- + Los Santos RP - design tokens. + + The interface is a set of documents from the city's Office of Vital Records, + lying on a dark desk while the city runs on behind them. Paper is the only + surface; the game is the room the desk is in. Nothing here is a dark glass + panel, because a city clerk does not hand you one. + + Three typographic voices, and the rule between them is literal: + + preprinted Archivo, expanded, caps what the form was printed with + typed IBM Plex Mono what somebody entered on it + prose IBM Plex Sans plain-English notes in the margin + + Shared verbatim by rp_loading and rp_ui so every screen reads as one product. + --------------------------------------------------------------------------- */ + +@font-face { + font-family: 'Archivo'; + src: url('fonts/archivo-var.woff2') format('woff2-variations'); + font-weight: 100 900; + font-stretch: 62% 125%; + font-display: block; +} +@font-face { + font-family: 'Plex Sans'; + src: url('fonts/plexsans-var.woff2') format('woff2-variations'); + font-weight: 100 700; + font-display: block; +} +@font-face { + font-family: 'Plex Mono'; + src: url('fonts/plex-400.woff2') format('woff2'); + font-weight: 400; + font-display: block; +} +@font-face { + font-family: 'Plex Mono'; + src: url('fonts/plex-500.woff2') format('woff2'); + font-weight: 500; + font-display: block; +} + +:root { + /* --- the room ---------------------------------------------------------- */ + --room: #0b0c0a; /* the dark the desk stands in, never pure black */ + --desk: #1a1b16; /* desk surface where the lamp reaches it */ + --lamp: rgba(224, 196, 128, 0.10); + + /* --- the paper --------------------------------------------------------- */ + --stock: #e3dbc2; /* manila card stock: warm, but grey-olive, not cream */ + --stock-hi: #efe9d7; /* the top sheet, directly under the lamp */ + --stock-2: #cbc09f; /* the sheet underneath, and every tab edge */ + --stock-3: #b3a888; /* deepest fold */ + + /* --- what is written on it --------------------------------------------- */ + --ink: #191c18; /* ballpoint black with a green cast */ + --ink-2: #4e5449; /* second-rank text */ + --ink-3: #7d8175; /* captions, disabled, ruled lines */ + + /* --- the three official inks, each with exactly one job ---------------- */ + --canary: #d9b23c; /* municipal form yellow: what is selected, now */ + --canary-dp: #a8801d; + --stamp: #7e2b26; /* oxblood rubber stamp: filed, refused, destroyed */ + --verdi: #2e6155; /* municipal teal: checked, valid, approved */ + + /* rules printed on the form */ + --rule: rgba(25, 28, 24, 0.22); + --rule-soft: rgba(25, 28, 24, 0.11); + --rule-firm: rgba(25, 28, 24, 0.55); + + /* paper fibre, laid over every sheet at low opacity */ + --fiber: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23f)'/%3E%3C/svg%3E"); + + /* uneven rubber-stamp ink: large soft blobs, not fine noise */ + --inkmask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='400' height='200'%3E%3Cfilter id='r'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.028' numOctaves='4' seed='11'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.4 0 0 0 -0.32'/%3E%3C/filter%3E%3Crect width='400' height='200' filter='url(%23r)'/%3E%3C/svg%3E"); + + /* a sheet of paper casts a real shadow onto the desk */ + --lift-1: 0 1px 0 rgba(255,255,255,.28) inset, 0 10px 22px -8px rgba(0,0,0,.7); + --lift-2: 0 1px 0 rgba(255,255,255,.34) inset, 0 26px 48px -18px rgba(0,0,0,.82); + + --sheet: clamp(360px, 27vw, 460px); + --sheet-w: clamp(440px, 34vw, 580px); + + --gut-x: clamp(26px, 2.4vw, 40px); + --gut-y: clamp(22px, 2.2vw, 34px); + + --ease: cubic-bezier(0.22, 0.61, 0.36, 1); + --ease-out: cubic-bezier(0.16, 1, 0.3, 1); +} + +* { box-sizing: border-box; margin: 0; padding: 0; } + +html, body { + height: 100%; + overflow: hidden; + background: var(--room); + color: var(--ink); + font-family: 'Plex Sans', system-ui, sans-serif; + font-size: 15px; + line-height: 1.55; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +/* --------------------------------------------------------------------------- + The three voices. + --------------------------------------------------------------------------- */ + +/* preprinted: everything the form arrived with */ +.pp, +.eyebrow, +.head, +label, +.btn, +.tab, +.ctrl-label, +.charname, +.spawnname, +.stagechip span { + font-family: 'Archivo', system-ui, sans-serif; + font-variation-settings: 'wdth' 112, 'wght' 700; + text-transform: uppercase; + letter-spacing: 0.07em; +} + +/* typed: everything a person put on the form */ +.data, +.typed, +input, +textarea, +.ctrl-val, +.stepval, +.charmeta, +.charmoney, +.counter, +.stagechip em, +.filetag { + font-family: 'Plex Mono', ui-monospace, monospace; + font-variation-settings: normal; + text-transform: none; + letter-spacing: 0.01em; + font-variant-numeric: tabular-nums; +} + +/* prose: the plain-English notes, the only voice allowed sentence case */ +.sub, +.hint, +.spawnblurb, +.switch { + font-family: 'Plex Sans', system-ui, sans-serif; + text-transform: none; + letter-spacing: 0; +} + +.eyebrow { + font-size: 10px; + font-variation-settings: 'wdth' 104, 'wght' 600; + letter-spacing: 0.19em; + color: var(--ink-3); +} + +.data { + font-size: 11.5px; + color: var(--ink-2); +} + +.rule { height: 1px; background: var(--rule); border: 0; } + +/* Focus is always the canary, always visible, and never subtle. */ +:focus-visible { + outline: 2px solid var(--canary-dp); + outline-offset: 2px; +} + +@media (prefers-reduced-motion: reduce) { + *, *::before, *::after { + animation-duration: 0.001ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.001ms !important; + } +} diff --git a/resources/justrp/client/main.lua b/resources/justrp/client/main.lua deleted file mode 100644 index 48efd40..0000000 --- a/resources/justrp/client/main.lua +++ /dev/null @@ -1,343 +0,0 @@ --- JustRP — Client-side core --- Manages NUI screens, cameras, spawning and position sync - -local inSession = false -local charLoaded = false -local camHandle = nil -local saveTimer = 0 - --- ─── NUI helper ───────────────────────────────────────────────────────────── - -local function nuiMsg(action, data) - SendNUIMessage({ action = action, data = data or {} }) -end - --- ─── On resource start (loading screen is already showing) ────────────────── - -AddEventHandler("onClientMapStart", function() - Wait(1500) -- give the game a moment to settle - TriggerServerEvent("justrp:clientReady") -end) - --- ─── Session start from server ─────────────────────────────────────────────── - -RegisterNetEvent("justrp:startSession") -AddEventHandler("justrp:startSession", function() - -- Freeze world while auth is happening - SetEntityVisible(PlayerPedId(), false, false) - FreezeEntityPosition(PlayerPedId(), true) - DisplayHud(false) - DisplayRadar(false) - - -- Shut loading screen, then show auth UI - Wait(800) - ShutdownLoadingScreenNui() - Wait(300) - - SetNuiFocus(true, true) - nuiMsg("showAuth") - inSession = true -end) - --- ─── Auth results ──────────────────────────────────────────────────────────── - -RegisterNetEvent("justrp:auth:ok") -AddEventHandler("justrp:auth:ok", function(accountId, username) - nuiMsg("authOk", { accountId = accountId, username = username }) - TriggerServerEvent("justrp:chars:load") -end) - -RegisterNetEvent("justrp:auth:fail") -AddEventHandler("justrp:auth:fail", function(err) - nuiMsg("authFail", { error = err }) -end) - --- ─── Character list from server ────────────────────────────────────────────── - -RegisterNetEvent("justrp:chars:list") -AddEventHandler("justrp:chars:list", function(chars) - nuiMsg("showChars", { characters = chars }) -end) - --- ─── Character creation result ─────────────────────────────────────────────── - -RegisterNetEvent("justrp:char:created") -AddEventHandler("justrp:char:created", function(charId) - -- Reload character list so the new one shows - TriggerServerEvent("justrp:chars:load") -end) - -RegisterNetEvent("justrp:char:createFail") -AddEventHandler("justrp:char:createFail", function(err) - nuiMsg("charCreateFail", { error = err }) -end) - --- ─── Character selected → load appearance ──────────────────────────────────── - -RegisterNetEvent("justrp:char:loaded") -AddEventHandler("justrp:char:loaded", function(ch) - -- Apply appearance to player ped - local ped = PlayerPedId() - local model = ch.gender == 1 and GetHashKey("mp_f_freemode_01") or GetHashKey("mp_m_freemode_01") - - RequestModel(model) - while not HasModelLoaded(model) do Wait(10) end - SetPlayerModel(PlayerId(), model) - SetModelAsNoLongerNeeded(model) - - ped = PlayerPedId() - - -- Face blend - SetPedHeadBlendData( - ped, - math.floor(ch.face_blend * 45), math.floor(ch.face_blend * 45), - 0, - math.floor(ch.face_blend * 45), math.floor(ch.face_blend * 45), - 0, - ch.face_blend, ch.face_blend, 0.0, false - ) - - -- Skin overlay (skin tone) - SetPedMicroblendData(ped, ch.skin_tone, ch.skin_tone, ch.skin_tone) - - -- Eyes - SetPedEyeColor(ped, ch.eye_color) - - -- Hair - SetPedComponentVariation(ped, 2, ch.hair_style, 0, 2) - SetPedHairColor(ped, ch.hair_color, 0) - - -- Body shape - SetPedFaceFeature(ped, 16, (ch.body_weight - 0.5) * 2) -- body weight feature - - -- Outfit - SetPedComponentVariation(ped, 11, ch.outfit_top, 0, 2) - SetPedComponentVariation(ped, 4, ch.outfit_pants, 0, 2) - SetPedComponentVariation(ped, 6, ch.outfit_shoes, 0, 2) - - -- Tell NUI to show spawn screen - nuiMsg("showSpawn", { - name = ch.firstname .. " " .. ch.lastname, - }) -end) - --- ─── Spawn ─────────────────────────────────────────────────────────────────── - -RegisterNetEvent("justrp:spawn:go") -AddEventHandler("justrp:spawn:go", function(pos) - local ped = PlayerPedId() - - -- Teleport to position and unfreeze - SetEntityCoords(ped, pos.x, pos.y, pos.z, false, false, false, true) - SetEntityHeading(ped, pos.h) - - -- Cinematic camera fly-down - local camX = pos.x + math.sin(math.rad(pos.h)) * 200 - local camY = pos.y + math.cos(math.rad(pos.h)) * 200 - camHandle = CreateCameraWithParams( - "DEFAULT_SCRIPTED_CAMERA", - camX, camY, pos.z + 180, - 0.0, 0.0, 0.0, - 60.0, false, 0 - ) - SetCamActive(camHandle, true) - RenderScriptCams(true, true, 1000, true, true) - - -- Animate camera flying down to player - local steps = 80 - Citizen.CreateThread(function() - for i = 1, steps do - local t = i / steps - local ease = 1 - math.pow(1 - t, 3) -- ease out cubic - - local cx = camX + (pos.x - camX) * ease - local cy = camY + (pos.y - camY) * ease - local cz = (pos.z + 180) + ((pos.z + 2) - (pos.z + 180)) * ease - - SetCamCoord(camHandle, cx, cy, cz) - PointCamAtCoord(camHandle, pos.x, pos.y, pos.z) - Wait(16) - end - - -- Transition back to player cam - RenderScriptCams(false, true, 1200, true, true) - Wait(1300) - DestroyCam(camHandle, false) - camHandle = nil - - -- Reveal player - SetEntityVisible(ped, true, false) - FreezeEntityPosition(ped, false) - DisplayHud(true) - DisplayRadar(true) - SetNuiFocus(false, false) - nuiMsg("hide") - charLoaded = true - end) -end) - --- ─── NUI Callbacks ─────────────────────────────────────────────────────────── - --- Auth -RegisterNUICallback("authRegister", function(data, cb) - TriggerServerEvent("justrp:auth:register", data.username, data.password) - cb("ok") -end) - -RegisterNUICallback("authLogin", function(data, cb) - TriggerServerEvent("justrp:auth:login", data.username, data.password) - cb("ok") -end) - --- Character management -RegisterNUICallback("charSelect", function(data, cb) - TriggerServerEvent("justrp:char:select", tonumber(data.id)) - cb("ok") -end) - -RegisterNUICallback("charCreate", function(data, cb) - TriggerServerEvent("justrp:char:create", data) - cb("ok") -end) - --- Spawn selection -RegisterNUICallback("spawnRequest", function(data, cb) - TriggerServerEvent("justrp:spawn:request", data.location) - cb("ok") -end) - --- Character creation — camera rotation control -RegisterNUICallback("rotateCam", function(data, cb) - if camHandle then - -- data.delta is horizontal rotation amount - local heading = GetEntityHeading(PlayerPedId()) - SetEntityHeading(PlayerPedId(), heading - (data.delta or 0) * 0.4) - end - cb("ok") -end) - --- ─── Character creation preview camera ─────────────────────────────────────── - -local charCamActive = false -local charCamAngle = 0.0 - -RegisterNUICallback("startCharCam", function(data, cb) - if charCamActive then - cb("ok") - return - end - charCamActive = true - local ped = PlayerPedId() - SetEntityVisible(ped, true, false) - - camHandle = CreateCamera("DEFAULT_SCRIPTED_CAMERA", false) - SetCamActive(camHandle, true) - RenderScriptCams(true, false, 0, true, true) - - Citizen.CreateThread(function() - while charCamActive do - local pedPos = GetEntityCoords(ped) - local angle = charCamAngle - local dist = 1.6 - local cx = pedPos.x + math.sin(math.rad(angle)) * dist - local cy = pedPos.y - math.cos(math.rad(angle)) * dist - local cz = pedPos.z + 0.7 - - SetCamCoord(camHandle, cx, cy, cz) - PointCamAtCoord(camHandle, pedPos.x, pedPos.y, pedPos.z + 0.7) - charCamAngle = charCamAngle + 0.15 -- slow auto-orbit - - Wait(16) - end - end) - - cb("ok") -end) - -RegisterNUICallback("stopCharCam", function(data, cb) - charCamActive = false - if camHandle then - RenderScriptCams(false, true, 600, true, true) - Wait(700) - DestroyCam(camHandle, false) - camHandle = nil - end - cb("ok") -end) - -RegisterNUICallback("charCamDrag", function(data, cb) - charCamAngle = charCamAngle + (data.delta or 0) * 0.5 - charCamActive = true -- stop auto-orbit briefly - cb("ok") -end) - --- Apply live appearance updates during char creation -RegisterNUICallback("applyAppearance", function(data, cb) - local ped = PlayerPedId() - - if data.gender ~= nil then - local model = data.gender == 1 - and GetHashKey("mp_f_freemode_01") - or GetHashKey("mp_m_freemode_01") - if not HasModelLoaded(model) then - RequestModel(model) - while not HasModelLoaded(model) do Wait(10) end - end - SetPlayerModel(PlayerId(), model) - SetModelAsNoLongerNeeded(model) - ped = PlayerPedId() - end - - if data.face_blend ~= nil then - SetPedHeadBlendData( - ped, - math.floor(data.face_blend * 45), - math.floor(data.face_blend * 45), - 0, - math.floor(data.face_blend * 45), - math.floor(data.face_blend * 45), - 0, - data.face_blend, data.face_blend, 0.0, false - ) - end - if data.skin_tone ~= nil then - SetPedMicroblendData(ped, data.skin_tone, data.skin_tone, data.skin_tone) - end - if data.eye_color ~= nil then - SetPedEyeColor(ped, data.eye_color) - end - if data.hair_style ~= nil or data.hair_color ~= nil then - SetPedComponentVariation(ped, 2, data.hair_style or 0, 0, 2) - SetPedHairColor(ped, data.hair_color or 0, 0) - end - if data.body_weight ~= nil then - SetPedFaceFeature(ped, 16, (data.body_weight - 0.5) * 2) - end - if data.outfit_top ~= nil then - SetPedComponentVariation(ped, 11, data.outfit_top, 0, 2) - end - if data.outfit_pants ~= nil then - SetPedComponentVariation(ped, 4, data.outfit_pants, 0, 2) - end - if data.outfit_shoes ~= nil then - SetPedComponentVariation(ped, 6, data.outfit_shoes, 0, 2) - end - - cb("ok") -end) - --- ─── Position auto-save ─────────────────────────────────────────────────────── - -Citizen.CreateThread(function() - while true do - Wait(60000) - if charLoaded then - local ped = PlayerPedId() - local pos = GetEntityCoords(ped) - local hdg = GetEntityHeading(ped) - TriggerServerEvent("justrp:savePosition", pos.x, pos.y, pos.z, hdg) - end - end -end) - -print("[JustRP] Client core loaded.") diff --git a/resources/justrp/fxmanifest.lua b/resources/justrp/fxmanifest.lua deleted file mode 100644 index ee46c44..0000000 --- a/resources/justrp/fxmanifest.lua +++ /dev/null @@ -1,25 +0,0 @@ -fx_version 'cerulean' -game 'gta5' - -author 'JustRP' -description 'JustRP — Core authentication, character management and session control' -version '1.0.0' - -loadscreen 'html/loading.html' -loadscreen_manual_shutdown 'yes' -loadscreen_cursor_shown 'yes' - -ui_page 'html/app.html' - -client_scripts { - 'client/main.lua', -} - -server_scripts { - 'server/main.lua', -} - -files { - 'html/loading.html', - 'html/app.html', -} diff --git a/resources/justrp/html/app.html b/resources/justrp/html/app.html deleted file mode 100644 index bd20337..0000000 --- a/resources/justrp/html/app.html +++ /dev/null @@ -1,1203 +0,0 @@ - - - - -Los Santos County — Resident Intake - - - - - - - - -
-
-
FORM LS-01 · RESIDENCY
-
-
DEPT. RESIDENT AFFAIRS
-
- -
-
-
-
LOS SANTOS COUNTY
-

ResidentIntake

-
-

Everyone in this county is on file. Open yours, or sign back into the one you already have — the city picks up exactly where you left it.

-
-
64RESIDENT CAP
-
3RECORDS PER FILE
-
24/7COUNTY UPTIME
-
-
- -
-
-
Sign In
-
LS-01
-
- -
- - -
- - - - -
-
-
Username
- -
-
-
-
Password
-
- - -
-
-
- -
- NO FILE YET? - Open one → -
-
- - -
-
-
Username3–20
- -
-
-
-
Password
-
- - -
-
-
-
-
-
Confirm Password
-
- - -
-
-
- -
- ALREADY ON FILE? - Sign in → -
-
- -
-
-
-
- - -
-
-
FILE INDEX
-
-
LOS SANTOS COUNTY
-
-
-
-
DEPT. OF RESIDENT AFFAIRS · FILE INDEX
-
SIGNED IN ·
-
-
-
-

Your Records

-

SELECT A RECORD TO RESUME · THREE PER FILE

-
-
-
-
-
- - -
-
-
- INTAKE PHOTOGRAPHY · BAY 3
LS-000000 -
- - -
-
-
-
-
LOS SANTOS COUNTY
IDENTITY RECORD
-
LS-000000
-
-
UNNAMED
-
NO DECLARATION ON FILE
-
-
SEX
M
-
BUILD
MEDIUM
-
COMPLEXION
III
-
HAIR
01 / 01
-
EYES
01
-
ATTIRE
01·01·01
-
-
-
-
Filed
-
- -
DRAG TO ROTATE SUBJECT
-
- -
-
-
FORM LS-02 · IDENTITY RECORD
-

New Record

-

SLOT 1 OF 3

-
-
SEC.1 FACE
-
SEC.2 BUILD
-
SEC.3 ATTIRE
-
SEC.4 NAME
-
-
- -
- - -
-
SUBJECT SEX
-
- - -
-
FACIAL STRUCTURE
-
-
Bone structure50
- -
-
-
Feature blend50
- -
-
-
Complexion50
- -
-
EYE COLOUR
-
-
- - -
-
PHYSICAL BUILD
-
-
Body weight50
- -
-
HAIR STYLE
-
-
HAIR COLOUR
-
-
- - -
-
TOP
-
-
LEGWEAR
-
-
FOOTWEAR
-
-
- - -
-
LEGAL NAME
-
-
First name
- -
-
-
-
Last name
- -
-
-
STATEMENT OF ARRIVAL
-
-
Backstory0 / 600
- -
-
- -
- -
-
- - -
-
-
- - -
-
-
FORM LS-03 · POINT OF ENTRY
-
-
LOS SANTOS COUNTY
-
-
-
-
POINT OF ENTRY · COUNTY SURVEY GRID
-
RECORD ·
-
-
-
-
- -
-
- -
-
- SELECT A POINT OF ENTRY
- ON THE COUNTY GRID -
-
-
ENTRY 01
-
-

-
-
DISTRICT
-
GRID REF
-
DENSITY
-
-
- -
-
-
-
-
-
- - - - diff --git a/resources/justrp/html/loading.html b/resources/justrp/html/loading.html deleted file mode 100644 index 7b90266..0000000 --- a/resources/justrp/html/loading.html +++ /dev/null @@ -1,469 +0,0 @@ - - - - -Los Santos County — Resident Processing - - - - - - - - -
-
-
- -
-
- -
-
- LOS SANTOS COUNTY · DEPT. OF RESIDENT AFFAIRS
- AERIAL SURVEY LS-4471-A · SECTOR 07 -
-
- ALT 1420 FT · HDG 274°
- 00:00:00 · REC -
-
- -
-
INTAKE IN PROGRESS
-

JustRP

-
-

A persistent roleplay county. Your record begins the moment you land — every job, every debt, every name you make here is kept on file.

-
- -
-
COUNTY ORDINANCE · CONDITIONS OF RESIDENCY
-
§1Remain in character within county limits.
-
§2Your life has value. Act like it does.
-
§3No violence without roleplay leading to it.
-
§4Vehicles are not weapons.
-
§5Knowledge your character never earned is knowledge they do not have.
-
§6Losing is part of the story. Play it out.
-
§7Staff rulings close the matter.
-
- -
-
- ESTABLISHING UPLINK - 0% -
-
-
-
- -
- ROOM TONE - -
- - - - diff --git a/resources/justrp/server/main.lua b/resources/justrp/server/main.lua deleted file mode 100644 index 679170b..0000000 --- a/resources/justrp/server/main.lua +++ /dev/null @@ -1,208 +0,0 @@ --- JustRP — Server-side core --- All DB operations go through the internal Python API on :8787 - -local API_BASE = "http://127.0.0.1:8787" -local API_KEY = "JustRP_Internal_2026_Secret" - --- Per-player session state -local Sessions = {} - --- ─── HTTP helper ──────────────────────────────────────────────────────────── - -local function apiRequest(method, path, data, cb) - PerformHttpRequest( - API_BASE .. path, - function(status, body, _headers) - local ok, result = pcall(json.decode, body or "{}") - if ok then - cb(status, result) - else - cb(status, { success = false, error = "parse error" }) - end - end, - method, - data and json.encode(data) or "", - { - ["Content-Type"] = "application/json", - ["X-API-Key"] = API_KEY, - } - ) -end - --- ─── Player connecting ─────────────────────────────────────────────────────── - -AddEventHandler("playerConnecting", function(name, setKickReason, deferrals) - local src = source - local license = GetPlayerIdentifierByType(src, "license") or - GetPlayerIdentifierByType(src, "license2") or - "license:" .. tostring(src) - deferrals.defer() - Wait(0) - deferrals.update("Checking account…") - - apiRequest("GET", "/account?license=" .. license, nil, function(status, res) - if status == 200 and res.success then - if res.account.banned == 1 then - deferrals.done("You are banned from JustRP.\nReason: " .. (res.account.ban_reason or "No reason given")) - else - deferrals.done() - end - else - -- No account yet — let them through, they'll register in-game - deferrals.done() - end - end) -end) - --- ─── Client ready → start session ─────────────────────────────────────────── - -RegisterNetEvent("justrp:clientReady") -AddEventHandler("justrp:clientReady", function() - local src = source - local license = GetPlayerIdentifierByType(src, "license") or - GetPlayerIdentifierByType(src, "license2") or - "license:" .. tostring(src) - Sessions[src] = { license = license, accountId = nil, charId = nil } - TriggerClientEvent("justrp:startSession", src) -end) - --- ─── Auth events ──────────────────────────────────────────────────────────── - -RegisterNetEvent("justrp:auth:register") -AddEventHandler("justrp:auth:register", function(username, password) - local src = source - local ses = Sessions[src] - if not ses then return end - - apiRequest("POST", "/auth/register", { - license = ses.license, - username = username, - password = password, - }, function(status, res) - if res.success then - ses.accountId = res.account_id - TriggerClientEvent("justrp:auth:ok", src, res.account_id, res.username) - else - TriggerClientEvent("justrp:auth:fail", src, res.error or "Unknown error") - end - end) -end) - -RegisterNetEvent("justrp:auth:login") -AddEventHandler("justrp:auth:login", function(username, password) - local src = source - local ses = Sessions[src] - if not ses then return end - - apiRequest("POST", "/auth/login", { - license = ses.license, - username = username, - password = password, - }, function(status, res) - if res.success then - ses.accountId = res.account_id - TriggerClientEvent("justrp:auth:ok", src, res.account_id, res.username) - else - TriggerClientEvent("justrp:auth:fail", src, res.error or "Unknown error") - end - end) -end) - --- ─── Character events ──────────────────────────────────────────────────────── - -RegisterNetEvent("justrp:chars:load") -AddEventHandler("justrp:chars:load", function() - local src = source - local ses = Sessions[src] - if not ses or not ses.accountId then - TriggerClientEvent("justrp:chars:list", src, {}) - return - end - - apiRequest("GET", "/characters?account_id=" .. ses.accountId, nil, function(status, res) - if res.success then - TriggerClientEvent("justrp:chars:list", src, res.characters or {}) - else - TriggerClientEvent("justrp:chars:list", src, {}) - end - end) -end) - -RegisterNetEvent("justrp:char:create") -AddEventHandler("justrp:char:create", function(data) - local src = source - local ses = Sessions[src] - if not ses or not ses.accountId then return end - - data.account_id = ses.accountId - apiRequest("POST", "/character/create", data, function(status, res) - if res.success then - ses.charId = res.character_id - TriggerClientEvent("justrp:char:created", src, res.character_id) - else - TriggerClientEvent("justrp:char:createFail", src, res.error or "Unknown error") - end - end) -end) - -RegisterNetEvent("justrp:char:select") -AddEventHandler("justrp:char:select", function(charId) - local src = source - local ses = Sessions[src] - if not ses or not ses.accountId then return end - - apiRequest("GET", "/character?id=" .. tostring(charId), nil, function(status, res) - if res.success and res.character then - local ch = res.character - if ch.account_id ~= ses.accountId then - return -- character doesn't belong to this account - end - ses.charId = charId - TriggerClientEvent("justrp:char:loaded", src, ch) - end - end) -end) - --- ─── Spawn ─────────────────────────────────────────────────────────────────── - -RegisterNetEvent("justrp:spawn:request") -AddEventHandler("justrp:spawn:request", function(spawnKey) - local src = source - local ses = Sessions[src] - if not ses or not ses.charId then return end - - local spawns = { - legion = { x = -166.7, y = -928.9, z = 31.4, h = 120.0 }, - vespucci = { x = -1380.0, y = -1520.0, z = 4.9, h = 75.0 }, - sandy = { x = 1843.4, y = 3683.0, z = 34.3, h = 200.0 }, - paleto = { x = -165.8, y = 6330.0, z = 31.5, h = 270.0 }, - airport = { x = -1037.0, y = -2738.0, z = 20.0, h = 330.0 }, - } - local pos = spawns[spawnKey] or spawns["legion"] - TriggerClientEvent("justrp:spawn:go", src, pos) -end) - --- ─── Auto-save position every 60s ──────────────────────────────────────────── - -RegisterNetEvent("justrp:savePosition") -AddEventHandler("justrp:savePosition", function(x, y, z, h) - local src = source - local ses = Sessions[src] - if not ses or not ses.charId then return end - apiRequest("POST", "/character/save", { - character_id = ses.charId, - last_x = x, - last_y = y, - last_z = z, - last_heading = h, - }, function() end) -end) - --- ─── Disconnect ────────────────────────────────────────────────────────────── - -AddEventHandler("playerDropped", function() - local src = source - Sessions[src] = nil -end) - -print("[JustRP] Server core loaded.") diff --git a/server-code/data/resources/[rp]/rp_loading/html/tokens.css b/server-code/data/resources/[rp]/rp_loading/html/tokens.css deleted file mode 100644 index cd88d8c..0000000 --- a/server-code/data/resources/[rp]/rp_loading/html/tokens.css +++ /dev/null @@ -1,117 +0,0 @@ -/* --------------------------------------------------------------------------- - Los Santos RP - design tokens. - - The interface is styled as a municipal record being opened on you: strict - grid, hairline rules, monospaced serials, and one accent taken from the only - light source the city has at night - sodium street lamps. - Shared verbatim by rp_loading and rp_ui so the four screens read as one - product. - --------------------------------------------------------------------------- */ - -@font-face { - font-family: 'Archivo'; - src: url('fonts/archivo.woff2') format('woff2-variations'); - font-weight: 100 900; - font-display: block; -} -@font-face { - font-family: 'Plex Mono'; - src: url('fonts/plex-400.woff2') format('woff2'); - font-weight: 400; - font-display: block; -} -@font-face { - font-family: 'Plex Mono'; - src: url('fonts/plex-500.woff2') format('woff2'); - font-weight: 500; - font-display: block; -} - -:root { - /* asphalt at night - cold, never pure black */ - --ink-900: #08090b; - --ink-800: #0d0f13; - --ink-700: #14171d; - --ink-600: #1d212a; - --ink-500: #272c37; - - /* document stock */ - --paper: #e8e4dc; - --paper-dim: #a9a69f; - --muted: #6e747f; - - /* the accent: sodium vapour, the colour of the city from the air */ - --sodium: #ff9f45; - --sodium-soft: rgba(255, 159, 69, 0.14); - --sodium-line: rgba(255, 159, 69, 0.42); - --sodium-deep: #c4711f; - - /* semantic only, never decorative */ - --stamp: #c4462f; - --good: #7f9f5a; - - --line: rgba(232, 228, 220, 0.13); - --line-soft: rgba(232, 228, 220, 0.07); - - --rail: clamp(400px, 31vw, 520px); - - --gut-x: clamp(32px, 3.4vw, 56px); - --gut-y: clamp(28px, 3vw, 48px); - - --ease: cubic-bezier(0.22, 0.61, 0.36, 1); - --ease-out: cubic-bezier(0.16, 1, 0.3, 1); -} - -* { box-sizing: border-box; margin: 0; padding: 0; } - -html, body { - height: 100%; - overflow: hidden; - background: var(--ink-900); - color: var(--paper); - font-family: 'Archivo', system-ui, sans-serif; - font-weight: 400; - font-size: 15px; - line-height: 1.55; - -webkit-font-smoothing: antialiased; - text-rendering: optimizeLegibility; -} - -/* Typographic roles --------------------------------------------------------- */ - -.eyebrow { - font-family: 'Plex Mono', monospace; - font-size: 10.5px; - font-weight: 500; - letter-spacing: 0.2em; - text-transform: uppercase; - color: var(--muted); -} - -.data { - font-family: 'Plex Mono', monospace; - font-size: 12px; - letter-spacing: 0.04em; - color: var(--paper-dim); - font-variant-numeric: tabular-nums; -} - -.rule { - height: 1px; - background: var(--line); - border: 0; -} - -/* Focus is always visible and always the accent. */ -:focus-visible { - outline: 2px solid var(--sodium); - outline-offset: 2px; -} - -@media (prefers-reduced-motion: reduce) { - *, *::before, *::after { - animation-duration: 0.001ms !important; - animation-iteration-count: 1 !important; - transition-duration: 0.001ms !important; - } -} diff --git a/server-code/data/resources/[rp]/rp_ui/html/app.css b/server-code/data/resources/[rp]/rp_ui/html/app.css deleted file mode 100644 index 62a7fc6..0000000 --- a/server-code/data/resources/[rp]/rp_ui/html/app.css +++ /dev/null @@ -1,839 +0,0 @@ -/* --------------------------------------------------------------------------- - Pre-spawn interface. - - One spatial rule holds across every screen: the instrument sits in a rail on - the left, the world stays visible on the right. Nothing is ever a floating - centred card, because nothing here is a dialog - it is a file being worked - on while the city carries on behind it. - --------------------------------------------------------------------------- */ - -body { - background: transparent; - opacity: 1; - transition: opacity 420ms var(--ease); -} -body.hidden { opacity: 0; pointer-events: none; } - -/* Keeps interface text legible over whatever the camera happens to be on. */ -.edge { - position: fixed; - inset: 0; - pointer-events: none; - background: - linear-gradient(90deg, rgba(8,9,11,.55) 0%, rgba(8,9,11,0) 55%), - radial-gradient(130% 100% at 70% 50%, transparent 45%, rgba(0,0,0,.6) 100%); -} - -.grain { - position: fixed; - inset: 0; - pointer-events: none; - opacity: .1; - mix-blend-mode: overlay; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E"); -} - -/* ========================================================================= - chrome - ========================================================================= */ - -.topbar { - position: fixed; - top: 0; left: 0; right: 0; - height: 74px; - padding: 0 var(--gut-x); - display: flex; - align-items: center; - justify-content: space-between; - gap: 28px; - z-index: 40; - pointer-events: none; -} - -.mark { display: flex; align-items: baseline; gap: 11px; } -.mark-name { - font-weight: 800; - font-size: 17px; - letter-spacing: -.01em; -} -.mark-tag { - font-family: 'Plex Mono', monospace; - font-size: 9.5px; - letter-spacing: .34em; - color: var(--sodium); - text-transform: uppercase; -} - -.stages { display: flex; align-items: center; gap: 10px; } - -.stagechip { - display: flex; - align-items: center; - gap: 9px; - background: none; - border: 0; - padding: 6px 2px; - color: var(--muted); - font-family: inherit; - font-size: 12.5px; - letter-spacing: .01em; - cursor: default; - transition: color 300ms var(--ease); -} -.stagechip em { - font-family: 'Plex Mono', monospace; - font-style: normal; - font-size: 10px; - letter-spacing: .1em; - padding: 3px 5px; - border: 1px solid var(--line); - color: var(--muted); - transition: color 300ms var(--ease), border-color 300ms var(--ease), background 300ms var(--ease); -} -.stagechip.done { color: var(--paper-dim); } -.stagechip.done em { color: var(--paper-dim); border-color: var(--line); } -.stagechip.on { color: var(--paper); } -.stagechip.on em { - color: var(--ink-900); - background: var(--sodium); - border-color: var(--sodium); -} - -.stagelink { - width: 26px; - height: 1px; - background: var(--line); -} - -.filetag { color: var(--muted); } -.filetag span { color: var(--paper-dim); } - -/* ========================================================================= - screens + rail - ========================================================================= */ - -.screen { - position: fixed; - inset: 0; - z-index: 20; -} -.screen[hidden] { display: none; } - -.rail { - position: absolute; - top: 0; left: 0; bottom: 0; - width: var(--rail); - display: flex; - align-items: center; - pointer-events: auto; -} -.rail.wide { width: clamp(470px, 36vw, 640px); } - -.rail-scrim { - position: absolute; - top: 0; bottom: 0; left: 0; - width: 168%; - pointer-events: none; - background: linear-gradient( - 90deg, - rgba(8,9,11,.96) 0%, - rgba(8,9,11,.92) 42%, - rgba(8,9,11,.6) 72%, - rgba(8,9,11,0) 100% - ); -} - -.rail-inner { - position: relative; - width: 100%; - padding: 96px var(--gut-x) var(--gut-y); - max-height: 100vh; - overflow-y: auto; - overflow-x: hidden; - scrollbar-width: thin; - scrollbar-color: var(--ink-500) transparent; -} -.rail-inner::-webkit-scrollbar { width: 3px; } -.rail-inner::-webkit-scrollbar-thumb { background: var(--ink-500); } - -/* staged entrance, replayed each time a screen becomes current */ -.screen.is-on .rail-inner > * { animation: rise 720ms var(--ease-out) both; } -.screen.is-on .rail-inner > *:nth-child(1) { animation-delay: 40ms; } -.screen.is-on .rail-inner > *:nth-child(2) { animation-delay: 110ms; } -.screen.is-on .rail-inner > *:nth-child(3) { animation-delay: 175ms; } -.screen.is-on .rail-inner > *:nth-child(4) { animation-delay: 235ms; } -.screen.is-on .rail-inner > *:nth-child(5) { animation-delay: 290ms; } -.screen.is-on .rail-inner > *:nth-child(6) { animation-delay: 340ms; } -.screen.is-on .rail-inner > *:nth-child(7) { animation-delay: 385ms; } - -@keyframes rise { - from { opacity: 0; transform: translateY(12px); } - to { opacity: 1; transform: none; } -} - -/* ========================================================================= - type blocks - ========================================================================= */ - -.kicker { - display: flex; - align-items: center; - gap: 14px; - margin-bottom: 22px; -} -.kicker .hair { - flex: 1; - height: 1px; - background: linear-gradient(90deg, var(--line), transparent); -} - -.head { - font-size: clamp(30px, 2.9vw, 44px); - font-weight: 700; - line-height: 1.02; - letter-spacing: -.032em; - margin-bottom: 14px; -} - -.sub { - color: var(--paper-dim); - font-size: 14.5px; - max-width: 46ch; - margin-bottom: 30px; -} - -/* ========================================================================= - form - ========================================================================= */ - -.form { display: block; } - -.field { margin-bottom: 20px; } - -.field label { - display: block; - font-family: 'Plex Mono', monospace; - font-size: 10.5px; - font-weight: 500; - letter-spacing: .18em; - text-transform: uppercase; - color: var(--muted); - margin-bottom: 9px; - transition: color 220ms var(--ease); -} -.field:focus-within label { color: var(--sodium); } - -.field input { - width: 100%; - height: 46px; - padding: 0 14px; - background: rgba(20, 23, 29, .72); - border: 1px solid var(--line); - border-radius: 0; - color: var(--paper); - font-family: inherit; - font-size: 15px; - letter-spacing: .005em; - transition: border-color 220ms var(--ease), background 220ms var(--ease), box-shadow 220ms var(--ease); -} -.field input::placeholder { color: #565c66; } -.field input:hover { border-color: rgba(232,228,220,.22); } -.field input:focus { - outline: none; - border-color: var(--sodium); - background: rgba(29, 33, 42, .85); - box-shadow: inset 0 -2px 0 var(--sodium-soft); -} - -.withbtn { position: relative; display: flex; } -.withbtn input { padding-right: 62px; } -.reveal-btn { - position: absolute; - right: 1px; top: 1px; bottom: 1px; - padding: 0 13px; - background: none; - border: 0; - border-left: 1px solid var(--line); - color: var(--muted); - font-family: 'Plex Mono', monospace; - font-size: 10px; - letter-spacing: .12em; - text-transform: uppercase; - cursor: pointer; - transition: color 200ms var(--ease); -} -.reveal-btn:hover { color: var(--sodium); } - -.hint { - margin-top: 8px; - font-family: 'Plex Mono', monospace; - font-size: 11px; - line-height: 1.45; - letter-spacing: .01em; - color: var(--muted); - transition: color 220ms var(--ease), transform 220ms var(--ease); -} -.field.bad input { border-color: var(--stamp); } -.field.bad .hint { color: var(--stamp); } -.field.good input { border-color: rgba(127,159,90,.55); } -.field.good .hint { color: var(--good); } - -/* register-only row: grid trick so height animates without a fixed value */ -.collapse { - display: grid; - grid-template-rows: 0fr; - opacity: 0; - transition: grid-template-rows 460ms var(--ease-out), opacity 300ms var(--ease); -} -.collapse.open { grid-template-rows: 1fr; opacity: 1; } -.collapse-inner { overflow: hidden; min-height: 0; } - -.formerror { - margin-bottom: 16px; - padding: 11px 13px; - border-left: 2px solid var(--stamp); - background: rgba(196,70,47,.09); - color: #e8a598; - font-size: 13.5px; - animation: shake 380ms var(--ease); -} -.formerror[hidden] { display: none; } -@keyframes shake { - 0%,100% { transform: translateX(0); } - 22% { transform: translateX(-5px); } - 46% { transform: translateX(4px); } - 72% { transform: translateX(-2px); } -} - -.switch { - margin-top: 22px; - font-size: 13.5px; - color: var(--muted); -} - -/* ========================================================================= - buttons - ========================================================================= */ - -.btn { - position: relative; - display: inline-flex; - align-items: center; - justify-content: center; - gap: 10px; - height: 50px; - padding: 0 26px; - border: 1px solid transparent; - border-radius: 0; - font-family: inherit; - font-size: 13px; - font-weight: 600; - letter-spacing: .07em; - text-transform: uppercase; - cursor: pointer; - overflow: hidden; - transition: transform 110ms var(--ease), background 240ms var(--ease), - color 240ms var(--ease), border-color 240ms var(--ease), opacity 240ms var(--ease); -} -.btn:active { transform: translateY(1px); } -.btn[disabled] { opacity: .34; cursor: not-allowed; } -.btn[disabled]:active { transform: none; } - -.btn.primary { - width: 100%; - background: var(--sodium); - color: #17120b; -} -.btn.primary:hover:not([disabled]) { background: #ffb063; } - -/* a light sweeps across on hover - the only ornament on the button */ -.btn.primary::after { - content: ''; - position: absolute; - inset: 0; - background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,.42) 50%, transparent 70%); - transform: translateX(-130%); - transition: transform 720ms var(--ease); -} -.btn.primary:hover:not([disabled])::after { transform: translateX(130%); } - -.btn.ghost { - background: transparent; - border-color: var(--line); - color: var(--paper-dim); -} -.btn.ghost:hover:not([disabled]) { border-color: var(--sodium-line); color: var(--sodium); } - -.btn-spin { - width: 13px; height: 13px; - border: 1.5px solid rgba(23,18,11,.3); - border-top-color: #17120b; - border-radius: 50%; - display: none; - animation: spin 640ms linear infinite; -} -.btn.busy .btn-spin { display: block; } -.btn.busy .btn-label { opacity: .55; } -@keyframes spin { to { transform: rotate(360deg); } } - -.linkbtn { - background: none; - border: 0; - padding: 0; - color: var(--sodium); - font-family: inherit; - font-size: inherit; - cursor: pointer; - position: relative; -} -.linkbtn::after { - content: ''; - position: absolute; - left: 0; right: 0; bottom: -2px; - height: 1px; - background: var(--sodium); - transform: scaleX(0); - transform-origin: left; - transition: transform 280ms var(--ease-out); -} -.linkbtn:hover::after { transform: scaleX(1); } - -/* ========================================================================= - character list - ========================================================================= */ - -.charlist { list-style: none; margin-bottom: 26px; } - -.charcard { - position: relative; - display: grid; - grid-template-columns: auto 1fr auto; - align-items: center; - gap: 16px; - padding: 17px 18px; - margin-bottom: 10px; - background: rgba(20,23,29,.6); - border: 1px solid var(--line); - cursor: pointer; - transition: border-color 240ms var(--ease), background 240ms var(--ease), transform 240ms var(--ease); -} -.charcard:hover { border-color: rgba(232,228,220,.24); transform: translateX(3px); } -.charcard.on { - border-color: var(--sodium); - background: rgba(255,159,69,.07); -} -/* the accent bar only exists on the selected row */ -.charcard.on::before { - content: ''; - position: absolute; - left: -1px; top: -1px; bottom: -1px; - width: 2px; - background: var(--sodium); -} - -.charslot { - font-family: 'Plex Mono', monospace; - font-size: 10px; - letter-spacing: .1em; - color: var(--muted); - border: 1px solid var(--line); - padding: 4px 6px; -} -.charcard.on .charslot { color: var(--sodium); border-color: var(--sodium-line); } - -.charname { display: block; font-size: 17px; font-weight: 600; letter-spacing: -.015em; } -.charmeta { - display: block; - font-family: 'Plex Mono', monospace; - font-size: 11px; - color: var(--muted); - margin-top: 4px; - letter-spacing: .02em; -} -.charmoney { - font-family: 'Plex Mono', monospace; - font-size: 12.5px; - color: var(--paper-dim); - text-align: right; - font-variant-numeric: tabular-nums; -} - -.charcard.empty { - border-style: dashed; - background: transparent; - color: var(--muted); - grid-template-columns: auto 1fr; -} -.charcard.empty:hover { border-color: var(--sodium-line); color: var(--sodium); } -.charcard.empty .charname { font-size: 14px; font-weight: 500; color: inherit; } - -.charactions { display: grid; grid-template-columns: 1fr auto; gap: 10px; } - -/* ========================================================================= - creator - ========================================================================= */ - -.creator { padding-bottom: 26px; } - -.tabs { - display: flex; - flex-wrap: wrap; - gap: 2px; - margin-bottom: 22px; - border-bottom: 1px solid var(--line); -} -.tab { - position: relative; - background: none; - border: 0; - padding: 10px 13px; - color: var(--muted); - font-family: inherit; - font-size: 12.5px; - letter-spacing: .01em; - cursor: pointer; - transition: color 220ms var(--ease); -} -.tab:hover { color: var(--paper-dim); } -.tab.is-on { color: var(--paper); } -.tab.is-on::after { - content: ''; - position: absolute; - left: 0; right: 0; bottom: -1px; - height: 2px; - background: var(--sodium); - animation: tabin 320ms var(--ease-out); -} -@keyframes tabin { from { transform: scaleX(.2); } to { transform: scaleX(1); } } - -.panes { min-height: 300px; } -.pane { display: none; } -.pane.is-on { display: block; animation: panein 420ms var(--ease-out); } -@keyframes panein { - from { opacity: 0; transform: translateX(10px); } - to { opacity: 1; transform: none; } -} - -.ctrl { margin-bottom: 15px; } -.ctrl-head { - display: flex; - justify-content: space-between; - align-items: baseline; - margin-bottom: 6px; - gap: 12px; -} -.ctrl-label { - font-size: 13px; - color: var(--paper-dim); -} -.ctrl-val { - font-family: 'Plex Mono', monospace; - font-size: 11px; - color: var(--muted); - font-variant-numeric: tabular-nums; -} - -.slider { - -webkit-appearance: none; - appearance: none; - width: 100%; - height: 20px; - background: transparent; - cursor: pointer; -} -.slider::-webkit-slider-runnable-track { height: 2px; background: var(--line); } -.slider::-webkit-slider-thumb { - -webkit-appearance: none; - width: 3px; - height: 14px; - margin-top: -6px; - background: var(--sodium); - border: 0; - transition: height 150ms var(--ease), margin-top 150ms var(--ease); -} -.slider:hover::-webkit-slider-thumb, -.slider:focus-visible::-webkit-slider-thumb { height: 20px; margin-top: -9px; } - -.stepper { display: flex; align-items: stretch; gap: 0; } -.stepper button { - width: 34px; - background: transparent; - border: 1px solid var(--line); - color: var(--paper-dim); - font-family: 'Plex Mono', monospace; - font-size: 14px; - cursor: pointer; - transition: color 180ms var(--ease), border-color 180ms var(--ease), background 180ms var(--ease); -} -.stepper button:hover { color: var(--sodium); border-color: var(--sodium-line); } -.stepper button:active { background: var(--sodium-soft); } -.stepper .stepval { - flex: 1; - display: grid; - place-items: center; - border: 1px solid var(--line); - border-left: 0; border-right: 0; - font-family: 'Plex Mono', monospace; - font-size: 12px; - color: var(--paper); - font-variant-numeric: tabular-nums; -} - -/* 64 colours is a lot of surface; kept small so a palette never outweighs the - control it belongs to */ -.swatches { display: flex; flex-wrap: wrap; gap: 4px; } -.swatch { - width: 13px; height: 13px; - border: 1px solid var(--line); - cursor: pointer; - padding: 0; - transition: transform 160ms var(--ease), border-color 160ms var(--ease); -} -.swatch:hover { transform: scale(1.3); } -.swatch.on { border-color: var(--sodium); transform: scale(1.3); } - -.seg { display: flex; gap: 0; margin-bottom: 22px; } -.seg button { - flex: 1; - height: 42px; - background: transparent; - border: 1px solid var(--line); - color: var(--muted); - font-family: inherit; - font-size: 12.5px; - letter-spacing: .05em; - text-transform: uppercase; - cursor: pointer; - transition: color 220ms var(--ease), background 220ms var(--ease), border-color 220ms var(--ease); -} -.seg button + button { border-left: 0; } -.seg button.on { - color: var(--ink-900); - background: var(--sodium); - border-color: var(--sodium); -} -.seg button:not(.on):hover { color: var(--paper); } - -.field textarea { - width: 100%; - min-height: 132px; - padding: 13px 14px; - background: rgba(20,23,29,.72); - border: 1px solid var(--line); - color: var(--paper); - font-family: inherit; - font-size: 14.5px; - line-height: 1.55; - resize: vertical; - transition: border-color 220ms var(--ease), background 220ms var(--ease); -} -.field textarea:focus { - outline: none; - border-color: var(--sodium); - background: rgba(29,33,42,.85); -} -.counter { - margin-top: 6px; - text-align: right; - font-family: 'Plex Mono', monospace; - font-size: 10.5px; - color: var(--muted); -} - -.creator-foot { display: grid; grid-template-columns: auto 1fr; gap: 10px; margin-top: 24px; } - -/* drag surface over the world half */ -.turntable { - position: fixed; - top: 0; right: 0; bottom: 0; - left: clamp(470px, 36vw, 640px); - z-index: 15; - cursor: grab; -} -.turntable.dragging { cursor: grabbing; } - -.turnhint { - position: absolute; - left: 50%; - bottom: 46px; - transform: translateX(-50%); - display: flex; - align-items: center; - gap: 9px; - padding: 7px 13px; - border: 1px solid var(--line); - background: rgba(8,9,11,.55); - color: var(--paper-dim); - letter-spacing: .1em; - text-transform: uppercase; - font-size: 10px; - transition: opacity 420ms var(--ease); -} -.turntable.dragging .turnhint { opacity: 0; } -.turnicon { - width: 13px; height: 13px; - border: 1px solid currentColor; - border-radius: 50%; - border-left-color: transparent; - border-right-color: transparent; - animation: turnspin 2.6s linear infinite; -} -@keyframes turnspin { to { transform: rotate(360deg); } } - -/* ========================================================================= - spawn - ========================================================================= */ - -.spawnlist { list-style: none; margin-bottom: 24px; } - -.spawncard { - position: relative; - padding: 15px 17px; - margin-bottom: 8px; - border: 1px solid var(--line); - background: rgba(20,23,29,.55); - cursor: pointer; - transition: border-color 240ms var(--ease), background 240ms var(--ease), transform 240ms var(--ease); -} -.spawncard:hover { border-color: rgba(232,228,220,.24); transform: translateX(3px); } -.spawncard.on { border-color: var(--sodium); background: rgba(255,159,69,.07); } -.spawncard.on::before { - content: ''; - position: absolute; - left: -1px; top: -1px; bottom: -1px; - width: 2px; - background: var(--sodium); -} -.spawnhead { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; } -.spawnname { font-size: 15.5px; font-weight: 600; letter-spacing: -.01em; } -.spawnarea { - font-family: 'Plex Mono', monospace; - font-size: 10px; - letter-spacing: .14em; - text-transform: uppercase; - color: var(--muted); -} -.spawnblurb { margin-top: 5px; font-size: 13px; color: var(--paper-dim); max-width: 42ch; } - -.chart { - position: fixed; - top: 50%; - right: clamp(40px, 7vw, 130px); - transform: translateY(-50%); - width: min(38vw, 44vh); - aspect-ratio: 1; - z-index: 18; - pointer-events: none; - opacity: 0; - animation: chartin 900ms var(--ease-out) 260ms forwards; -} -@keyframes chartin { - from { opacity: 0; transform: translateY(-50%) scale(.96); } - to { opacity: 1; transform: translateY(-50%) scale(1); } -} -.chart svg { width: 100%; height: 100%; display: block; } - -/* the coastline draws itself once, then stays */ -#coastline { - stroke-dasharray: 1400; - stroke-dashoffset: 1400; - animation: draw 2600ms var(--ease-out) 400ms forwards; -} -@keyframes draw { to { stroke-dashoffset: 0; } } - -.pins { position: absolute; inset: 0; } - -/* The marker rotates; the label must not, so they are separate elements - inside an unrotated anchor. */ -.pin { position: absolute; width: 0; height: 0; } - -.pin-mark { - position: absolute; - left: -6px; top: -6px; - width: 12px; height: 12px; - border: 1px solid var(--sodium-line); - background: rgba(255,159,69,.16); - transform: rotate(45deg); - transition: background 260ms var(--ease), border-color 260ms var(--ease), transform 260ms var(--ease); -} -.pin-label { - position: absolute; - left: 18px; - top: -7px; - white-space: nowrap; - font-family: 'Plex Mono', monospace; - font-size: 10px; - letter-spacing: .12em; - text-transform: uppercase; - color: var(--muted); - transition: color 260ms var(--ease); -} -.pin.on .pin-mark { - background: var(--sodium); - border-color: var(--sodium); - transform: rotate(45deg) scale(1.35); -} -.pin.on .pin-label { color: var(--paper); } -/* pins on the eastern side label leftwards so nothing runs off the sheet */ -.pin.flip .pin-label { left: auto; right: 18px; } -/* a single ping when selected, not a permanent pulse */ -.pin.on .pin-mark::before { - content: ''; - position: absolute; - inset: -6px; - border: 1px solid var(--sodium); - animation: ping 900ms var(--ease-out); -} - -/* survey chart furniture */ -.chart-frame { fill: none; stroke: rgba(232,228,220,.10); } -.chart-ticks { fill: none; stroke: rgba(255,159,69,.45); stroke-width: 2; } -.chart-label { - font-family: 'Plex Mono', monospace; - font-size: 19px; - letter-spacing: 3.4px; - fill: #6e747f; - text-transform: uppercase; -} -@keyframes ping { - from { opacity: .9; transform: scale(.6); } - to { opacity: 0; transform: scale(1.9); } -} - -/* ========================================================================= - the stamp - ========================================================================= */ - -.stamp { - position: fixed; - top: 46%; - left: 62%; - z-index: 60; - padding: 14px 30px; - border: 3px solid var(--stamp); - color: var(--stamp); - font-family: 'Plex Mono', monospace; - font-weight: 500; - font-size: 30px; - letter-spacing: .22em; - text-transform: uppercase; - opacity: 0; - pointer-events: none; - transform: translate(-50%, -50%) rotate(-19deg) scale(2.6); -} -.stamp::before { - content: ''; - position: absolute; - inset: 4px; - border: 1px solid var(--stamp); - opacity: .55; -} -.stamp.show { animation: stamp 1500ms var(--ease-out) forwards; } -@keyframes stamp { - 0% { opacity: 0; transform: translate(-50%,-50%) rotate(-19deg) scale(2.6); } - 38% { opacity: .95; transform: translate(-50%,-50%) rotate(-6deg) scale(.94); } - 48% { transform: translate(-50%,-50%) rotate(-8deg) scale(1.04); } - 58% { transform: translate(-50%,-50%) rotate(-7deg) scale(1); } - 80% { opacity: .95; } - 100% { opacity: 0; transform: translate(-50%,-50%) rotate(-7deg) scale(1); } -} diff --git a/server-code/data/resources/[rp]/rp_ui/html/fonts/archivo.woff2 b/server-code/data/resources/[rp]/rp_ui/html/fonts/archivo.woff2 deleted file mode 100644 index 716d4abd199a236dc4b9e112f63429b9b47ce911..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34928 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 E05fT^n*aa+ diff --git a/server-code/data/resources/[rp]/rp_ui/html/tokens.css b/server-code/data/resources/[rp]/rp_ui/html/tokens.css deleted file mode 100644 index cd88d8c..0000000 --- a/server-code/data/resources/[rp]/rp_ui/html/tokens.css +++ /dev/null @@ -1,117 +0,0 @@ -/* --------------------------------------------------------------------------- - Los Santos RP - design tokens. - - The interface is styled as a municipal record being opened on you: strict - grid, hairline rules, monospaced serials, and one accent taken from the only - light source the city has at night - sodium street lamps. - Shared verbatim by rp_loading and rp_ui so the four screens read as one - product. - --------------------------------------------------------------------------- */ - -@font-face { - font-family: 'Archivo'; - src: url('fonts/archivo.woff2') format('woff2-variations'); - font-weight: 100 900; - font-display: block; -} -@font-face { - font-family: 'Plex Mono'; - src: url('fonts/plex-400.woff2') format('woff2'); - font-weight: 400; - font-display: block; -} -@font-face { - font-family: 'Plex Mono'; - src: url('fonts/plex-500.woff2') format('woff2'); - font-weight: 500; - font-display: block; -} - -:root { - /* asphalt at night - cold, never pure black */ - --ink-900: #08090b; - --ink-800: #0d0f13; - --ink-700: #14171d; - --ink-600: #1d212a; - --ink-500: #272c37; - - /* document stock */ - --paper: #e8e4dc; - --paper-dim: #a9a69f; - --muted: #6e747f; - - /* the accent: sodium vapour, the colour of the city from the air */ - --sodium: #ff9f45; - --sodium-soft: rgba(255, 159, 69, 0.14); - --sodium-line: rgba(255, 159, 69, 0.42); - --sodium-deep: #c4711f; - - /* semantic only, never decorative */ - --stamp: #c4462f; - --good: #7f9f5a; - - --line: rgba(232, 228, 220, 0.13); - --line-soft: rgba(232, 228, 220, 0.07); - - --rail: clamp(400px, 31vw, 520px); - - --gut-x: clamp(32px, 3.4vw, 56px); - --gut-y: clamp(28px, 3vw, 48px); - - --ease: cubic-bezier(0.22, 0.61, 0.36, 1); - --ease-out: cubic-bezier(0.16, 1, 0.3, 1); -} - -* { box-sizing: border-box; margin: 0; padding: 0; } - -html, body { - height: 100%; - overflow: hidden; - background: var(--ink-900); - color: var(--paper); - font-family: 'Archivo', system-ui, sans-serif; - font-weight: 400; - font-size: 15px; - line-height: 1.55; - -webkit-font-smoothing: antialiased; - text-rendering: optimizeLegibility; -} - -/* Typographic roles --------------------------------------------------------- */ - -.eyebrow { - font-family: 'Plex Mono', monospace; - font-size: 10.5px; - font-weight: 500; - letter-spacing: 0.2em; - text-transform: uppercase; - color: var(--muted); -} - -.data { - font-family: 'Plex Mono', monospace; - font-size: 12px; - letter-spacing: 0.04em; - color: var(--paper-dim); - font-variant-numeric: tabular-nums; -} - -.rule { - height: 1px; - background: var(--line); - border: 0; -} - -/* Focus is always visible and always the accent. */ -:focus-visible { - outline: 2px solid var(--sodium); - outline-offset: 2px; -} - -@media (prefers-reduced-motion: reduce) { - *, *::before, *::after { - animation-duration: 0.001ms !important; - animation-iteration-count: 1 !important; - transition-duration: 0.001ms !important; - } -} diff --git a/server-code/etc/rpdata.env.example b/server-code/etc/rpdata.env.example deleted file mode 100644 index ae7ea6d..0000000 --- a/server-code/etc/rpdata.env.example +++ /dev/null @@ -1,4 +0,0 @@ -RP_DB=/opt/fivem/datasvc/rp.db -RP_TOKEN=generate_your_own_random_token -RP_BIND=127.0.0.1 -RP_PORT=7788 diff --git a/server-code/etc/secret.cfg.example b/server-code/etc/secret.cfg.example deleted file mode 100644 index 9ced822..0000000 --- a/server-code/etc/secret.cfg.example +++ /dev/null @@ -1 +0,0 @@ -sv_licenseKey "CFX_LICENSE_KEY=cfxk_your_key_here" diff --git a/server.cfg.example b/server.cfg.example index c82b021..c8ea984 100644 --- a/server.cfg.example +++ b/server.cfg.example @@ -1,26 +1,40 @@ -# JustRP — пример server.cfg -# Скопируйте в server.cfg и подставьте свои значения. +# --------------------------------------------------------------------------- +# Los Santos RP - server configuration +# Copy to /opt/fivem/data/server.cfg (install.sh does this for you). +# --------------------------------------------------------------------------- endpoint_add_tcp "0.0.0.0:30120" endpoint_add_udp "0.0.0.0:30120" -sv_hostname "JustRP | Los Santos Roleplay" -sv_maxclients 64 +sv_maxclients 48 +sv_hostname "Los Santos Roleplay" +sets sv_projectName "Los Santos Roleplay" +sets sv_projectDesc "Serious roleplay. Custom framework, written from scratch." + +set onesync on +sv_enforceGameBuild 3095 sv_scriptHookAllowed 0 -onesync on -# Ключ сервера с https://keymaster.fivem.net — НИКОГДА не публикуйте его -sv_licenseKey "СЮДА_ВАШ_КЛЮЧ" +# Licence key and database credentials. Mode 600, never echoed. +exec /opt/fivem/data/secrets.cfg -# Должен совпадать с JUSTRP_API_SECRET у Python-API -set justrp_api_key "СЮДА_СВОЙ_КЛЮЧ" +# --- resources ------------------------------------------------------------- +# Nothing from cfx-server-data is used. The player cap, chat, spawning and +# session handling are all implemented in the resources below. +ensure rp_db +ensure rp_core +ensure rp_session +ensure rp_loading +ensure rp_ui -ensure mapmanager -ensure chat -ensure spawnmanager -ensure sessionmanager -ensure fivem-map-hipster -ensure basic-gamemode -ensure hardcap +# Diagnostics. Safe to leave on; they only touch their own marker rows. +ensure rp_selftest -ensure justrp +# Driver test suite, off by default: +# ensure rp_dbtest + +# Admin access. Add real identifiers here, e.g. +# add_principal identifier.license: group.admin +# Deliberately empty: a placeholder like identifier.fivem:1 would grant admin +# to whoever actually owns that Cfx account. +add_ace group.admin command allow