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 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`.
@@ -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
+ ```