roleplay-data 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CREDITS.md +34 -0
- package/LICENSE +30 -0
- package/README.md +163 -0
- package/assets/README.md +38 -0
- package/catalog/items.json +3177 -0
- package/catalog/schemas/item.schema.json +133 -0
- package/catalog/schemas/theme-registry.schema.json +52 -0
- package/catalog/schemas/theme.schema.json +83 -0
- package/catalog/schemas/vehicle.schema.json +116 -0
- package/catalog/vehicles.json +273 -0
- package/package.json +50 -0
- package/src/index.d.ts +182 -0
- package/src/index.js +131 -0
- package/src/localize.d.ts +31 -0
- package/src/localize.js +28 -0
- package/src/resolve.d.ts +29 -0
- package/src/resolve.js +162 -0
- package/themes/dayz.json +56 -0
- package/themes/gta-artwork.json +16 -0
- package/themes/themes.json +25 -0
package/CREDITS.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# CREDITS
|
|
2
|
+
|
|
3
|
+
`roleplay-data` est une **base de données RP open source** : les données, les visuels et les
|
|
4
|
+
traductions sont le fruit de contributions multiples.
|
|
5
|
+
|
|
6
|
+
> 💛 Merci d'apprécier le travail : quand vous utilisez ce projet (ou ses données) dans le
|
|
7
|
+
> vôtre, un petit crédit fait toujours plaisir — un lien, une ligne dans votre README,
|
|
8
|
+
> une page « À propos ». Ce n'est pas une obligation, juste une attention.
|
|
9
|
+
|
|
10
|
+
## Auteurs / projets fondateurs
|
|
11
|
+
|
|
12
|
+
| Qui | Contribution |
|
|
13
|
+
|---|---|
|
|
14
|
+
| **Amity Studio — Stananas** | Catalogue initial des items, système de thèmes, structure du projet, package npm |
|
|
15
|
+
| **Amity RolePlay V2 (bot + sites)** | Les données proviennent initialement de l'écosystème Amity RolePlay |
|
|
16
|
+
|
|
17
|
+
## Sources des visuels
|
|
18
|
+
|
|
19
|
+
Certains visuels des packs de thèmes s'inspirent de jeux existants. Chaque thème déclare
|
|
20
|
+
sa licence / son attribution dans `themes/themes.json` :
|
|
21
|
+
|
|
22
|
+
| Thème | Origine des visuels |
|
|
23
|
+
|---|---|
|
|
24
|
+
| `gta-artwork` | Inspirés de GTA V © Rockstar Games — usage non commercial |
|
|
25
|
+
| `dayz` | Générés par la communauté Amity Studio (MIT) |
|
|
26
|
+
|
|
27
|
+
Si vous ajoutez un thème ou des images, créez vous aussi une entrée dans le registre
|
|
28
|
+
`themes/themes.json` (licence + attribution).
|
|
29
|
+
|
|
30
|
+
## Contribuer au crédit
|
|
31
|
+
|
|
32
|
+
Quand vous contribuez (PR acceptée), ajoutez votre nom / pseudo ici en une ligne :
|
|
33
|
+
|
|
34
|
+
- ...
|
package/LICENSE
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Amity Studio — Stananas & contributeurs
|
|
4
|
+
|
|
5
|
+
Permission est hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
--------------------------------------------------------------------------------
|
|
24
|
+
|
|
25
|
+
Remarque sur les crédits (non contraignante) :
|
|
26
|
+
|
|
27
|
+
Les contributeurs sont chaleureusement invités à mentionner le projet
|
|
28
|
+
`roleplay-data` et leur propre contribution (nom ou pseudo) dans leurs propres
|
|
29
|
+
projets, via un lien, un CREDITS, une page « À propos » ou un simple merci.
|
|
30
|
+
Cette mention est une marque d'appréciation, pas une obligation contractuelle.
|
package/README.md
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# roleplay-data
|
|
2
|
+
|
|
3
|
+
**Base de données RP open source** : items, véhicules, thèmes (packs d'images +
|
|
4
|
+
renommages) et i18n. Une source de vérité unique, consommable partout :
|
|
5
|
+
|
|
6
|
+
- 📦 **package npm** pour vos services (bot Discord, sites, API)
|
|
7
|
+
- 🗄️ **seed SQL / MongoDB** prêt à injecter (catalogues, thèmes)
|
|
8
|
+
- 📦 **archive ZIP** des assets pour une version donnée (FiveM, ESX, serveurs custom)
|
|
9
|
+
|
|
10
|
+
> 🇫🇷 🇬🇧 Conventions : la langue source des données est **fr + en** (obligatoires),
|
|
11
|
+
> toute autre locale est une contribution bonus.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Structure
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
catalog/ ✨ données canoniques
|
|
19
|
+
├── items.json 166 items (nom, description i18n, poids, stats, tags…)
|
|
20
|
+
├── vehicles.json 10 modèles de véhicules (marque/modèle i18n, catégorie, specs, cargo)
|
|
21
|
+
└── schemas/ JSON Schema : la validation CI les applique aux PR
|
|
22
|
+
themes/ 🎨 systèmes de thèmes (packs d'images + renommages + exclusifs)
|
|
23
|
+
├── themes.json le registre : un thème est déclaré une fois, partout consommé
|
|
24
|
+
├── gta-artwork.json renommages « monde GTA V » (ex: arme Beretta → « Pistol »)
|
|
25
|
+
└── dayz.json renommages + items exclusifs DayZ
|
|
26
|
+
assets/ 🖼️ images (brutes en git — LFS later)
|
|
27
|
+
├── items/gta-artwork/ pack d'images par défaut (référence)
|
|
28
|
+
├── items/dayz/ pack d'images du thème DayZ
|
|
29
|
+
└── no_image.png fallback universel
|
|
30
|
+
src/ 📦 l'API du package (zéro dépendance)
|
|
31
|
+
├── index.js chargement + cache + API publique
|
|
32
|
+
├── resolve.js résolution thème (image fallback gta-artwork → no_image, overrides, exclusifs)
|
|
33
|
+
├── localize.js i18n (fallback en)
|
|
34
|
+
└── index.d.ts types TypeScript
|
|
35
|
+
scripts/ 🔧 outils de maintenance
|
|
36
|
+
├── validate.mjs validation (schéma, unicité des ids, cohérence thèmes, images)
|
|
37
|
+
└── build-release.mjs génère dist/ : package npm + seed SQL + seed MongoDB + ZIP
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Exemples d'items
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"id": "weapon_beretta",
|
|
47
|
+
"name": { "fr": "Beretta", "en": "Beretta" },
|
|
48
|
+
"description": { "fr": "Un pistolet semi-automatique fiable.", "en": "A reliable semi-automatic pistol." },
|
|
49
|
+
"image": "weapon_beretta.png",
|
|
50
|
+
"emoji": "🔫",
|
|
51
|
+
"weight": 950,
|
|
52
|
+
"food": 0, "thirst": 0, "drug": null,
|
|
53
|
+
"stackable": false, "usable": false,
|
|
54
|
+
"tags": ["weapon"],
|
|
55
|
+
"metadata": { "irl": { "model": "Beretta 92FS", "fabricant": "Beretta", "caliber": "9×19 mm Parabellum" } },
|
|
56
|
+
"customProperties": {}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
- `metadata` : identité réelle de l'objet — sert de base au **renommage par thème**
|
|
61
|
+
(voir `themes/gta-artwork.json` : la même arme porte son nom GTA V dans ce thème).
|
|
62
|
+
- `customProperties` : **point d'extension libre** pour vos besoins propres,
|
|
63
|
+
sans jamais modifier le schéma.
|
|
64
|
+
|
|
65
|
+
## Exemple de thème
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
// themes/gta-artwork.json — renommage monde GTA V
|
|
69
|
+
{ "overrides": [ { "id": "weapon_beretta", "name": { "fr": "Pistol", "en": "Pistol" } } ], "exclusiveItems": [] }
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Règles des thèmes :
|
|
73
|
+
- les **overrides** ne touchent que les champs fournis (fusion sur l'item du catalogue) ;
|
|
74
|
+
- les **exclusiveItems** n'existent que dans le thème (ex: `aks74u` en DayZ) ;
|
|
75
|
+
- les **virtualIds** autorisent des overrides sur des ids créés par le code (ex: `money_clean`) ;
|
|
76
|
+
- une image absente du pack du thème **retombe sur le pack `gta-artwork`**, puis sur `no_image.png`.
|
|
77
|
+
|
|
78
|
+
> ⚖️ **Neutralité des données** : le registre ne contient **aucune notion de
|
|
79
|
+
> monétisation** (pas de champ `premium`). Le fait qu'un thème soit gratuit,
|
|
80
|
+
> payant, réservé, exclusif, etc. est une décision **du projet consommateur** —
|
|
81
|
+
> pas une propriété de la donnée. Si vous monétisez certains thèmes, gérez ce
|
|
82
|
+
> mapping dans la config de votre projet, pas ici.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Consumption
|
|
87
|
+
|
|
88
|
+
### npm
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
npm install roleplay-data
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```js
|
|
95
|
+
import { getItems, getItem, getThemedItemName, getItemImage } from 'roleplay-data';
|
|
96
|
+
|
|
97
|
+
getItems(); // 166 items canoniques
|
|
98
|
+
getThemedItemName('burger', 'dayz', 'fr'); // "Conserve DayZ"
|
|
99
|
+
getItemImage('aks74u', 'dayz'); // thème → gta-artwork → no_image
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### SQL (PostgreSQL)
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
node scripts/build-release.mjs && psql -U postgres -d ma_base -f dist/sql/roleplay-data.sql
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Tables : `rp_items`, `rp_vehicles`, `rp_themes`, `rp_theme_entries`.
|
|
109
|
+
|
|
110
|
+
### MongoDB
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
mongoimport --db roleplay-data --collection items --file dist/mongodb/seed.items.json
|
|
114
|
+
mongoimport --db roleplay-data --collection vehicles --file dist/mongodb/seed.vehicles.json
|
|
115
|
+
mongoimport --db roleplay-data --collection themes --file dist/mongodb/seed.themes.json
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Archives
|
|
119
|
+
|
|
120
|
+
Chaque release GitHub embarque `roleplay-data-vX.Y.Z.zip` (catalog + themes + assets + docs).
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Contribuer
|
|
125
|
+
|
|
126
|
+
1. `npm run validate` doit passer en local (⚠️ 8 warnings connus = images manquantes, voir ci-dessous).
|
|
127
|
+
2. Une PR = un sujet : ajouter un item / un véhicule / un thème / une traduction, ou corriger des données.
|
|
128
|
+
3. Ne **jamais** casser les ids existants (rétro-compatibilité).
|
|
129
|
+
4. La CI `validate` vérifie schémas, unicité, cohérence des thèmes et existence des images.
|
|
130
|
+
|
|
131
|
+
### Images manquantes connues (bonnes premières issues)
|
|
132
|
+
|
|
133
|
+
Les items suivants pointent vers des images qui n'existaient déjà pas dans le jeu source —
|
|
134
|
+
parfaits pour un premier PR « ajouter une image » :
|
|
135
|
+
|
|
136
|
+
`poisson_propre`, `pioche`, `lanterne_mini`, `minerai`, `minerai_rare`, `lingot`, `hache`, `bois`
|
|
137
|
+
|
|
138
|
+
Ajoutez le fichier `assets/items/gta-artwork/<id>.png` et le warning disparaît.
|
|
139
|
+
|
|
140
|
+
### Assets & Git LFS
|
|
141
|
+
|
|
142
|
+
Actuellement les images sont **committées telles quelles** (fichiers de 3-4 Ko
|
|
143
|
+
chacun, ~30 Mo au total — aucun souci pour git/GitHub). Le **Git LFS** sera
|
|
144
|
+
adopté quand un pack deviendra lourd — la procédure de migration est documentée
|
|
145
|
+
dans `assets/README.md`.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Feuille de route
|
|
150
|
+
|
|
151
|
+
- [x] v0.1 — items + véhicules + thèmes + i18n + validation + builds multi-produits
|
|
152
|
+
- [ ] habitations (`catalog/properties.json`), drogues, jobs
|
|
153
|
+
- [ ] images de véhicules (`assets/vehicles/`)
|
|
154
|
+
- [ ] API items/thèmes (hostée)
|
|
155
|
+
- [ ] migration des services Amity vers `roleplay-data` (fin des copies locales)
|
|
156
|
+
- [ ] publication npm + releases GitHub automatisées
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Licence
|
|
161
|
+
|
|
162
|
+
MIT — libre, code et données. Une mention (crédit) est appréciée, jamais obligatoire.
|
|
163
|
+
Voir `LICENSE` et `CREDITS.md`.
|
package/assets/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Assets — roleplay-data
|
|
2
|
+
|
|
3
|
+
Ce dossier contient les **images** des packs de thèmes. Il est versionné avec
|
|
4
|
+
**Git LFS** — pensez à `git lfs install` après clonage.
|
|
5
|
+
|
|
6
|
+
```
|
|
7
|
+
assets/
|
|
8
|
+
└── items/
|
|
9
|
+
├── gta-artwork/ pack d'images de référence (par défaut)
|
|
10
|
+
├── dayz/ pack d'images du thème DayZ
|
|
11
|
+
└── no_image.png fallback universel (affiché quand une image manque)
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Règles
|
|
15
|
+
|
|
16
|
+
- Le fichier référencé par un item dans `catalog/items.json` doit exister dans `items/gta-artwork/`.
|
|
17
|
+
- Le fichier référencé par un thème peut exister dans `items/<thème>/` (et retombe sur `items/gta-artwork/` sinon).
|
|
18
|
+
- Conventions de nommage fichiers : `snake_case.png`, sans espace ni accent.
|
|
19
|
+
- Pas de sous-dossier dans `items/`.
|
|
20
|
+
- Toute image doit être au format PNG (fond transparent recommandé pour les items).
|
|
21
|
+
|
|
22
|
+
## Vérification
|
|
23
|
+
|
|
24
|
+
`npm run validate` signale en warning toute image référencée et introuvable
|
|
25
|
+
(voir README, section « Images manquantes connues »).
|
|
26
|
+
|
|
27
|
+
## Git LFS (optionnel, plus tard)
|
|
28
|
+
|
|
29
|
+
Pour l'instant les assets sont **committés tels quels** : les fichiers font
|
|
30
|
+
3-4 Ko chacun (~30 Mo au total), ce qui est très bien géré par git/GitHub.
|
|
31
|
+
|
|
32
|
+
On basculera en **Git LFS** quand un pack grossira (visuels lourds, vidéos,
|
|
33
|
+
vignettes HD). La migration se fera alors avec :
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
git lfs install
|
|
37
|
+
git lfs migrate import --yes --include="assets/**/*.png" --include-ref=main --include-ref=origin/main
|
|
38
|
+
```
|