Um sich im Valve Hammer Editor 3.5 die passenden Models zu Pointentities anzeigen zu lassen muss die .fgd mit der wir mappen modifiziert werden. Das ist eigentlich ganz einfach.
Bevor wir uns daran machen irgendwelche Dateien umzuschreiben sollten wir aber zu allererst ein mal Google konsultieren, um herauszufinden ob es für die Mod, für die wir mappen, nicht schon eine umgeschriebene .fgd gibt. Bei Half-Life, DoD oder Counter-Strike dürfte so eine schon bearbeitete Datei nicht allzuschwer zu finden sein.
Sollten wir nun nicht fündig werden, oder aus anderen Gründen einem Entitie ein Model verpassen wollen, müssen wir uns erst überlegen ob wir:
a) Das Model für das Entitie im Editor auswählen wollen
b) Dem Entite ein Model fest zuweisen wollen
Beide Fälle werden wir anhand einer nicht modifizieren halflife.fgd Schritt für Schritt durchgehen. Als Beispielentitie nehmen wir das info_player_start.
Um aas Model für das Entitie im Editor auswählen können tun wir folgendes:
@PointClass base(PlayerClass) = info_player_start : „Player 1 start“ []studio() in die erste Zeile nach dem @PointClass.model(studio) : „Model“ in die eckigen Klammern.
Unser info_player_start, der vorher so aussah:
@PointClass base(PlayerClass) = info_player_start : "Player 1 start" []
sieht jetzt so aus:
@PointClass studio() base(PlayerClass) = info_player_start : "Player 1 start"
[
model(studio) : "Model"
]
Und damit wären wir auch schon fertig. Ob es jetzt Sinn macht, dass man ein Model für einen info_player_start festlegen (welches sich auch nur auf den Editor und nicht auf das Spiel auswirkt!) kann sei dahingestellt, es geht ja nur um das Prinzip.
Wenn man, was ausnahmsweise mal Sinn machen würde, z.B. einen Cycler oder monster_furniture (also alle Model-Auswählen-Entities) dazu bringen will dass das ausgewählte Model angezeiegt wird, muss man NUR das studio() nach @PointClass einfügen, da man, wenn man sich den den Cycler genauer ansieht, merkt, dass model(studio) : „Model“ beim Cyler standartmäßig dabei ist (Logisch, irgendwie muss man die Models ja auswählen können).
Ein normaler Cycler:
@PointClass base(Targetname, Angles) size(-16 -16 0, 16 16 72) = cycler : "Monster Cycler"
[
model(studio) : "Model"
renderfx(choices) :"Render FX" : 0 =
[
0: "Normal"
1: "Slow Pulse"
2: "Fast Pulse"
3: "Slow Wide Pulse"
4: "Fast Wide Pulse"
9: "Slow Strobe"
10: "Fast Strobe"
11: "Faster Strobe"
12: "Slow Flicker"
13: "Fast Flicker"
5: "Slow Fade Away"
6: "Fast Fade Away"
7: "Slow Become Solid"
8: "Fast Become Solid"
14: "Constant Glow"
15: "Distort"
16: "Hologram (Distort + fade)"
]
rendermode(choices) : "Render Mode" : 0 =
[
0: "Normal"
1: "Color"
2: "Texture"
3: "Glow"
4: "Solid"
5: "Additive"
]
renderamt(integer) : "FX Amount (1 - 255)"
rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
]
Und ein modifizierter:
@PointClass studio() base(Targetname, Angles) size(-16 -16 0, 16 16 72) = cycler : "Monster Cycler"
[
model(studio) : "Model"
renderfx(choices) :"Render FX" : 0 =
[
0: "Normal"
1: "Slow Pulse"
2: "Fast Pulse"
3: "Slow Wide Pulse"
4: "Fast Wide Pulse"
9: "Slow Strobe"
10: "Fast Strobe"
11: "Faster Strobe"
12: "Slow Flicker"
13: "Fast Flicker"
5: "Slow Fade Away"
6: "Fast Fade Away"
7: "Slow Become Solid"
8: "Fast Become Solid"
14: "Constant Glow"
15: "Distort"
16: "Hologram (Distort + fade)"
]
rendermode(choices) : "Render Mode" : 0 =
[
0: "Normal"
1: "Color"
2: "Texture"
3: "Glow"
4: "Solid"
5: "Additive"
]
renderamt(integer) : "FX Amount (1 - 255)"
rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
]
Bei allen Entities bei denen man so wie so ein Model auswählen muss, damit sie funktionieren muss man also nur studio() nach @PointClass einfügen.
Wenn wir jetzt den Editor aufmachen, haben die Entities ihre altbekannten bunten Boxen, erst wenn ein Model ausgewählt wird wird es auch im Editor angezeigt.
Hier wollen wir dem Entity ein Model fest zuweisen.
@PointClass base(PlayerClass) = info_player_start : "Player 1 start" []
@PointClass studio("models/player/zombie/zombie.mdl") base(PlayerClass) = info_player_start : "Player 1 start"[]
Das Prinzip auf andere Entities zu übertragen dürfte nicht all zu schwer sein. Einfach immer nur ein studio(„pfad/zu/meinem/model.mdl“) nach dem @PointClass einfügen.
Das häufigste Problem, mit dem User in dieser Sache zu kämpfen haben, ist das, daß die Models einfach nicht im 3D Fenster von Hammer 3.5 beta erscheinen wollen. Das kann im Kern nur 3 Ursache haben:
In diesem Fall sollte man sich eine der im Internet frei erhältlichen und vorkonfigurierten FGD Dateien für HL oder seine Mods besorgen.
Bei der „Game configuration“ in den Optionen ist der Pfad zum Game-Directory und Mod-Directory wichtig. Denn dort sucht Hammer relativ zur Pfadangabe nach den Models. Der Suchpfad ist in den meisten FGD-Dateien relativ zum ..\models Verzeichnis angegeben. Wenn Hammer dieses Verzeichnis sucht und dort (relativ) nichts findet, kann er auch nichts anzeigen.
Im oberen Abschnitt angesprochen müssen die Models im Verzeichnis GAME_DIRECTORY\models bzw. MOD_DIRECTORY\models vorhanden sein, die von der jeweiligen FGD Datei angesprochen werden sollen. Fehlt in diesem Verzeichnis ein Haufen Models, dann sollte man je nach Installationsart dieses Verzeichnis schleunigst mit Leben füllen!
In der normalen CD-ROM Installation von HL zum Beispiel ist dies das Verzeichnis ..\SIERRA\Half-Life\valve\models. Dort muß neben einigen Unterordnern auch zumindest die Datei player.mdl vorhanden sein. Falls nicht, sollte man das PAK-Archiv pak0.pak mit GCFScape oder dem PakExplorer öffnen und den gesamten Inhalt des Archivs ins valve Verzeichnis extrahieren. Spätestens dann erkennt Half-Life automatisch, daß es die lokale Ordnerstruktur benutzen und nicht - wie sonst üblich - auf das PAK-Archiv zurückgreifen soll. Das ist nämlich auch der Grund, wieso Hammer nichts findet: HL sucht in der PAK-Datei und nicht in der lokalen Ordnerstruktur. Doch dorthin kann Hammer nicht reinkommen, er ist auf die lokale Ordnerstruktur angewiesen! Sie muß also vorhanden sein!
Wer STEAM Half-Life zockt, der sollte stattdessen die Datei half-life.gcf aus seinem SteamApps Ordner mit GCFScape öffnen und den Inhalt nach ..\Valve\Steam\SteamApps\<Dein Accountname>\half-life\valve extrahieren.
Jetzt sollte auch das models Verzeichnis mit reichlich Models gefüllt sein, u.a. auch das Model player.mdl. Jetzt noch schnell den Hammer neu starten und die Models sollten soweit angezeigt werden.