1. Diagnose: Warum gibt es keinen "Platsch"?
Ihr Problem ist ein Klassiker im GTA V Modding. Das Spiel unterscheidet streng zwischen dem, was man sieht (dem visuellen Modell) und dem, womit man interagiert (der Physik). Ihr Pool sieht gut aus, aber die Engine weiß nicht, dass er physisch Wasser ist. Wir müssen ihr das mitteilen.
Visuelles Modell (.ydr)
💧
Das ist Ihr Part, der bereits funktioniert. Das `Drawable` mit dem korrekten Wasser-Shader sorgt für die Optik: Wellen, Farbe und Reflexionen.
✓ ErledigtPhysik & Logik (.ybn + .xml)
💥
Hier liegt wahrscheinlich das Problem. Dies umfasst die unsichtbare Kollision und eine Datendatei (`water.xml`), die der Engine sagt: "Hier ist ein interaktiver Wasserbereich".
✗ Fehlend / Fehlerhaft2. Blender & Sollumz Setup: Dem Wasser Leben einhauchen
Folgen Sie diesen Schritten in Blender, um sicherzustellen, dass Ihr Wassermodell alle notwendigen Daten für die GTA-Engine enthält. Dies ist der wichtigste Teil, um die Interaktion zu ermöglichen.
Schritt 2.1: Der richtige Shader
Vergessen Sie generische Blender-Materialien wie `Principled BSDF`. Sie benötigen einen spezifischen GTA V Wasser-Shader von Sollumz. Der `sollumz_water`-Shader ist hier die erste Wahl.
1. Wählen Sie Ihr Wasser-Mesh.
2. Gehen Sie zu `Sollumz Tools > Drawable > Shader Tools`.
3. Suchen Sie `sollumz_water` in der Liste und klicken Sie auf `Create Shader Material`.
4. Weisen Sie die notwendigen Texturen (`DiffuseSampler`, `BumpSampler`, `SpecSampler`) im Material-Tab zu.
Tipp: Stellen Sie sicher, dass der Farbraum der `BumpSampler` (Normal Map) auf `Non-Color` gesetzt ist, um Darstellungsfehler zu vermeiden.
Schritt 2.2: Flags setzen
Flags sind einfache An/Aus-Schalter, die der Engine sagen, wie sich ein Material verhalten soll. Diese sind nicht optional!
| Flag-Name | Typ | Wirkung | Sollumz-Pfad |
|---|---|---|---|
| Water surface | MLO Portal Flag | Identifiziert die Oberfläche als Wasser. | Material > Flags > MLO Portal Flags |
| MLO_WATER_LEVEL | Special Attribute | Absolut entscheidend! Definiert den Wasserstand für die Spieler-Physik (Schwimmen). | Material > Special Attributes |
| VOLUME_DRAWING | Material Flag | Hilft der Engine, das Wasservolumen zu erkennen. | Material > Flags > Material Flags |
Schritt 2.3: Kollision definieren
Damit der Spieler im Wasser schwimmen kann (und nicht durchfällt), benötigt die Wasseroberfläche ein unsichtbares Kollisions-Mesh mit einem speziellen Wasser-Material.
1. Erstellen Sie ein Kollisions-Mesh (typischerweise eine Kopie der Wasseroberfläche).
2. Weisen Sie ihm über `Sollumz Tools > Collision Tools` ein Kollisionsmaterial zu.
3. Verwenden Sie die `Flag Presets`, um ein "Wasser"-Kollisionsmaterial auszuwählen.
Stellen Sie sicher, dass das Objekt, das die Kollision enthält, ebenfalls das `MLO_WATER_LEVEL` Special Attribute Flag erhält. Das verbindet die Physik mit der Spiellogik.
3. FiveM Integration: Den Pool ins Spiel bringen
Nachdem in Blender alles korrekt eingerichtet ist, müssen wir die Dateien exportieren und FiveM mitteilen, wie es sie laden soll.
Schritt 3.1: Richtig exportieren
Exportieren Sie Ihre Modelle als `CodeWalker XML`-Dateien. Das ist das Format, mit dem Sollumz und FiveM am besten zurechtkommen.
- Exportieren Sie Ihr visuelles Mesh als `.ydr.xml`.
- Exportieren Sie Ihr Kollisions-Mesh als `.ybn.xml`.
- Tipp: Betten Sie Texturen direkt ein (`Set all Materials Embedded`), um separate `.ytd`-Dateien zu vermeiden.
- Achten Sie auf Fehlermeldungen im Sollumz-Log beim Exportieren!
Schritt 3.2: Die `water.xml` erstellen
Diese Datei ist das Herzstück der Wasserphysik. Sie definiert einen 2D-Bereich und eine Höhe, in dem die Wasser-Engine aktiv wird. Hovern Sie über die Beschreibungen, um die entsprechenden Teile im Code zu sehen.
<WaterQuads>
<Item>
<minX value="-10.0" />
<maxX value="10.0" />
<minY value="-5.0" />
<maxY value="5.0" />
<Type value="0" />
<HasLimitedDepth value="true" />
<LimitedDepth value="2.0" />
<z value="150.5" />
<a1 value="0" /> <!-- ... -->
</Item>
</WaterQuads>
Schritt 3.3: Die `fxmanifest.lua` konfigurieren
Dies ist die "Packliste" für Ihre FiveM-Ressource. Sie müssen explizit angeben, dass Sie eine `water.xml`-Datei laden.
Ihre Ressourcenstruktur sollte so aussehen:
mein_pool/
├── stream/
│ ├── pool.ydr
│ ├── pool_collision.ybn
│ └── common/data/levels/gta5/
│ └── water.xml
└── fxmanifest.lua
Der Inhalt Ihrer `fxmanifest.lua` muss diese Zeile enthalten:
fx_version 'cerulean'
game 'gta5'
-- ... andere Infos ...
data_file 'WATER_XML' 'common/data/levels/gta5/water.xml'
this_is_a_map 'yes' -- Empfohlen
4. Troubleshooting: Häufige Probleme & Lösungen
Wenn es immer noch nicht funktioniert, gehen Sie diese Liste durch. Oft ist es nur eine Kleinigkeit, die übersehen wurde.
Ursache: Das ist ein klares Zeichen für ein Kollisionsproblem.
- Das Kollisions-Mesh (`.ybn`) fehlt oder wird nicht gestreamt.
- Dem Kollisions-Material fehlt die "Wasser"-Eigenschaft.
- Das `MLO_WATER_LEVEL`-Flag fehlt auf dem Objekt mit der Kollision.
Ursache: Die Physik funktioniert, aber die visuelle Darstellung nicht.
- Falscher Shader in Blender verwendet (kein `sollumz_water`).
- Material-Flags (`Water surface`) sind nicht gesetzt.
- Problem beim Export der Texturen. Versuchen Sie, Texturen einzubetten.
- Ihr Drawable (`.ydr`) wird nicht korrekt gestreamt.
Ursache: Meist ein grundlegendes Problem mit der FiveM-Ressource.
- Überprüfen Sie die `fxmanifest.lua` auf Tippfehler. Ist die `data_file 'WATER_XML'`-Zeile korrekt?
- Stimmt die Ordnerstruktur? (`stream/common/data/...`)
- Ist die Ressource auf dem Server gestartet (`ensure mein_pool`)?
- Konflikt mit einer anderen Wasser-Mod? Testen Sie mit deaktivierten anderen Mods.