Files
D4rkst3randClaude Opus 5 a33dba46a4 FiveM Natives + Docs Nachschlagewerk
7359 Natives (GTA5 + Cfx) und 342 Doc-Seiten von docs.fivem.net in einer
SQLite-DB mit FTS5-Volltextsuche, dazu ein dependency-freies Python-CLI und
eine SKILL.md fuer Claude Code.

- build.py zieht runtime.fivem.net/doc/natives*.json und citizenfx/fivem-docs
  und loest die Hugo-Shortcodes der Docs auf (code, native_link, alert, events)
- lua_name folgt exakt der Regel aus FiveM ext/natives/codegen_out_lua.lua
- fivem.py: show / search / ns / docs / doc / stats, optional --json
- data/natives.jsonl als grep-barer Fallback

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 02:14:56 +02:00

91 lines
3.8 KiB
Markdown

---
name: fivem-natives
description: Nachschlagewerk für FiveM/GTA5 Natives und docs.fivem.net. Nutzen, sobald ein FiveM-Native, ein Hash (0x...), eine Native-Signatur, ein Parameter oder ein Rückgabewert geprüft werden soll, wenn unklar ist ob ein Native client-, server- oder shared-seitig ist, wenn ein Native über die Beschreibung gesucht wird ("wie setze ich einen Ped in Ragdoll"), oder wenn etwas aus den FiveM-Docs gebraucht wird (fxmanifest, Resource-Manifest-Einträge, Server-Convars, Events, Scripting-Runtimes, Server-Setup, Streaming/Assets, Game-Referenzen).
---
# FiveM Natives & Docs
Lokale SQLite-Datenbank mit **7.359 Natives** (GTA5 + Cfx) und **342 Doc-Seiten** von
docs.fivem.net. Offline, keine Dependencies außer Python 3.
**Immer diese Datenbank statt WebFetch/WebSearch verwenden** — sie ist schneller,
vollständig und enthält die Beschreibungen, Parametertypen und Beispiele aus den
offiziellen Quellen.
## Aufruf
Alle Kommandos relativ zum Skill-Verzeichnis (`$SKILL_DIR = Ordner dieser SKILL.md`):
```bash
python "$SKILL_DIR/fivem.py" <kommando> [args]
```
## Kommandos
| Kommando | Zweck |
|---|---|
| `fivem.py <freitext>` | Kombinierte Suche über Natives **und** Docs (Default) |
| `fivem.py show <Name\|Hash>` | Volles Detail: Signatur, Parameter, Rückgabe, Beschreibung, Beispiele |
| `fivem.py search <worte>` | Nur Natives, mit `--apiset client\|server\|shared`, `--ns VEHICLE`, `--limit N`, `--json` |
| `fivem.py ns` / `fivem.py ns PED` | Namespaces auflisten / alle Natives eines Namespace |
| `fivem.py docs <worte>` | Volltextsuche in docs.fivem.net (`--section scripting-reference`) |
| `fivem.py doc <slug>` | Komplette Doc-Seite ausgeben |
| `fivem.py stats` | Umfang / Build-Datum |
## Typische Abläufe
**Signatur eines bekannten Natives prüfen** — vor dem Schreiben von Native-Aufrufen:
```bash
python "$SKILL_DIR/fivem.py" show SetEntityCoords
python "$SKILL_DIR/fivem.py" show 0xAE99FB955581844A
```
Akzeptiert Lua-Name (`SetPedToRagdoll`), Original-Name (`SET_PED_TO_RAGDOLL`),
Hash und jhash — Groß-/Kleinschreibung egal.
**Native über die Funktion suchen**, wenn der Name unbekannt ist:
```bash
python "$SKILL_DIR/fivem.py" search vehicle engine health
python "$SKILL_DIR/fivem.py" search identifier --apiset server
```
**Server- vs. Client-Kontext klären** — das Feld `apiset` ist maßgeblich:
```bash
python "$SKILL_DIR/fivem.py" search player ping --apiset server
```
**Docs nachschlagen**:
```bash
python "$SKILL_DIR/fivem.py" docs fxmanifest
python "$SKILL_DIR/fivem.py" doc scripting-reference/resource-manifest
python "$SKILL_DIR/fivem.py" docs convar --section server-manual
```
## Wichtig beim Interpretieren
- **`apiset`** sagt, wo das Native läuft: `client`, `server` oder `shared`.
Alle GTA5-Natives sind `client`; Cfx-Natives können server- oder shared-seitig sein.
- **Gleicher Name, zwei Einträge**: viele Natives existieren zusätzlich als
server-seitiges RPC-Pendant (z.B. `SetPedToRagdoll` als `0xAE99FB955581844A`
client und `0x83CB5052` server). `show` gibt beide aus — den passenden auswählen.
- **`lua_name`** ist der Bezeichner, der in Lua/JS tatsächlich aufgerufen wird.
Achtung auf Sonderfälle wie `DrawScaleformMovie_3d` (Unterstrich vor Ziffern
bleibt) und `World3dToScreen2d`.
- **Unbenannte Natives** heißen `N_0x<hash>`; per `Citizen.InvokeNative(0x..., ...)`
aufrufbar.
- Parameter mit Namen wie `p4`, `p19` sind in den offiziellen Docs undokumentiert —
das im Code kenntlich machen statt zu raten.
## Fallback ohne Python
`data/natives.jsonl` enthält ein Native pro Zeile und ist direkt grep-bar:
```bash
grep -i '"lua_name": "SetPedToRagdoll"' "$SKILL_DIR/data/natives.jsonl"
```
## Daten aktualisieren
```bash
python "$SKILL_DIR/build.py" --refresh
```
Zieht `runtime.fivem.net/doc/natives*.json` und `github.com/citizenfx/fivem-docs` neu.