Poradnik (po angielsku) by Dels © 2009
Spolszczony opis by Abes Mapper © 2010
Spis treści
- Przegląd
- Narzędzia
- Poradnik
2. Dekompilacja modelu
3. Eksport tekstur
4. Aktualizacja map UV
5. Edycja pliku .qc
6. Kompilacja modelu
7. (Nieobowiązkowe) Usuwanie martwych klatek
8. (Nieobowiązkowe) Obracanie modelu
- Pytania i odpowiedzi
- Słowko o podmienianiu muzzle flash
- Credits
Przegląd
Chciałeś kiedyś mieć model broni z CS:S w CS 1.6 ?
Teraz dowiesz się jak to zrobić ze wszystkimi broniami włączając w to animacje z C4




Wystarczy że przeczytasz dokładnie ten poradnik punkt za punktem
Narzędzia
Narzędzia wykorzystanie w tym poradniku:
- GCFScape (Nieobowiązkowe, aby wydobyć model z .GCF)
- GFlip (Nieobowiązkowe, aby obrócić model. Jest w paczce)
- Jed Half-Life Model Viewer (Aby zobaczyc model, zmienic rozne rzeczy, itp)
- HL1 Compiler & Decompiler (Jest w paczce)
- HL2 Decompiler (Jest w paczce)
- Milkshape3D (Do ustawienia map UV; chcesz CD-KEY? Pisz na PW; zalecam wersje 1.8.4)
- VTFEdit (Aby eksportować tekstury)
- XNView (Nieobowiązkowe jeżeli masz jakiś program graficzny oprócz Painta; do zmienienia rozmiaru i konwertowania tekstur).
Poradnik
Jeżeli masz już wszystkie potrzebne pliki, możesz przejść dalej.
1. Przygotowanie do pracy
- Stwórz folder o nazwie weapon conversion (nazwa może być dowolna) na pulpicie co łatwi zarządzanie plikami
- Potrzebujemy jakiegoś modelu z CS:S. Autor użył tego: FPSBANANA > Skins > Counter-Strike: Source > AK-47 > modderfreak's S.T.A.L.K.E.R. AK74u
- Także potrzebujemy modelu z CS 1.6 (potrzebny jest plik qc z niego).
- Następnie skopiuj CS:S AK-47 który ściągnąłeś do folderu CSS\AK47, Jeśli jest nadal spakowane to rozpakuj
- Stwórz w nim folder o nazwie decompiled (albo jak chcesz, tam będą zdekompilowane pliki)
- Teraz skopiuj model z CS 1.6 (v_ak47.mdl) z cstrike/models do CS16/AK47. Jeśli nie możesz go znaleść, wypakuj z pliku GFC za pomocą programu GCFScape
- Wypakuj folder tools do stworzonego na początku folderu
- Zainstaluj Jed Half-Life Model Viewer, MilkShape3D, VTFEdit i XNView.
- Twoja struktura folderów powinna wyglądać w ten sposób:
2. Dekompilacja modelu
Teraz będziesz dekompilować model (CS:S i CS 1.6) używając HL2 MDL Decompiler i MilkShape3D
MODEL Z CS:S
- Uruchom mdldecompiler.exe który znajduje się w tools\HL2 MDL Decompiler
- Wybierz model z CS:S klikając na [...]
Powinien być w ak47\models\weapons - Wybierz folder gdzie będą zdekompilowane pliki
W tym przypadku ak47\decompiled - Zaznacz Dump Old Unweighted SMD's i Do not fix rotations on animations, odznacz Use Steam File Access.
Obrócenie modelu naprawimy później - Naciśnij Extract i czekaj aż się zdekompiluje
Jeżeli wyskoczył błąd Unable to load model musisz otworzyć model za pomocą Notepad++
zmienić IDST0 na IDST, (zamieniasz znak który znajduje się za IDST na ,)
MODEL Z CS 1.6
- Uruchom MilkShape3D
- Przejdź do Tools -> Kratisto's Half-Life MDL Decompiler v1.2
- Wybierz model z CS 1.6 (w tym przypadku v_ak47.mdl)
Odznacz wszystkie opcja poza QC Script.
- Kliknij OK i czekaj aż się zrobi.
3. Eksport tekstur
- Przejdź do folderu materials\models\weapons\v_models\aksu i kliknij dwa razy na wpn_aksu.vtf żeby otworzyć go w VTFEdit.
Jeżeli jest więcej niż 1 vtf powinieneś wydobyć wszystkie ale pomiń pliki z _normal, _light i _ref.
- Naciśnij File -> Export albo naciśnij Ctrl + E, eksportuj do bmp dla łatwiejszego użytku
- Teraz otwórz wyeksportowane tekstury w programie XNView
Możesz to zrobić także w innym programie graficznym jak photoshop, acdsee, gimp, itp.
- Następnie musimy zmienić rozmiar tekstury żeby można było używać w CS 1.6 a także przekonwertować do 256 kolorów (8-bit).
Przejdź do Obraz -> Zmień rozmiar... albo naciśnij Shift + S, CS 1.6 ma maksymalną wielkość tekstury 512x512 dlatego wpisz 512 w Szerokości i Wysokości
Bądź pewien że masz zaznaczoną opcję Utrzymaj proporcje
- Teraz musimy to przekonwertować do 256 kolorów (8-bit).
Przejdź do Obraz -> Konwertuj do kolorowego..., wybierz 256 kolorów, Dithering: Brak i kliknij OK
Zapisz zmienioną teksturę do folderu decompiled
4. Aktualizacja map UV
Przed zaczęciem, wypakuj/skopiuj hands_reference.smd i v_hands.bmp do folderu decompiled
Ponieważ potem będzie potrzebny
- Otwórz MilkShape3D, przejdź do File -> Import -> Half-Life SMD... i wybierz plik smd do CS:S AK-47
W tym przykładzie będzie nazwany jako aks74u.smd (różni się od innych nazw)
- Widzisz pasek boczny po prawej stronie? Tam jest opcja Select, naciśnij to a będziesz miał dostęp do Select Options i naciśnij przycisk Group
- Bardzo dobrze, teraz musisz zaznaczyć wszystkie grupy, będzie to prostsze przeciągając kursorem na drugim oknie (top-right window)
- Następnie przejdź do Window -> Texture Coordinat Editor albo naciśnij Ctrl + T.
Gdzie są moje mapy UV a tekstura jest taka wielka? Spokojnie, widzisz pole z numerem przy przycisku Scale? Wpisz tam -2 i naciśnij Scale.
- Teraz widzisz? Następnie zobacz na przyciski po prawej, tam jest Move, naciśnij go.
Uzupełnij: Offset: 0.0 -1.0 i naciśnij na M, naciskaj tak M dopóki nie zobaczysz linii idealnie na teksturze
- Zrób tak ze wszystkimi teksturami a kiedy skończysz, eksportuj SMD i nadpisz oryginalny.
5. Edycja pliku .qc
Pamiętasz dekompilacje modelu z CS 1.6 ? Teraz go użyjemy
- Skopiuj v_ak47.qc do folderu decompiled
- Otwórz v_ak47.qc jakimś edytorem tekstu (notatnik wystarczy)
- Otwórz mdldecompiler.qc jakimś edytorem tekstu (notatnik wystarczy).
- Teraz musimy edytować v_ak47.qc bazując się na zawartości z mdldecompiler.qc
Skończone powinno wyglądać tak:
A teraz trochę wyjaśnień jak to zrobić
Pamiętaj że różne modele mają inne qc i inną strukturę. Kolejność animacji typu "shoot", "idle", "reload", muszą być w takiej samej kolejności jak w oryginalnym pliku .qc który został utworzony od modelu z CS 1.6. W przeciwnym wypadku np.: przy przeładowaniu, animacja będzie "draw" czyli wyjęcie broni
- Najpierw musimy zastąpić sekcję $body aby pasowało do tej z mdldecompiler.qc
Trzeba usunąć część odnosząca się do rąk ponieważ model już to ma
Pamiętaj że niektóre modele potrzebują odniesienie do rąk a nie które nie
Zmień:
//reference mesh(es) $body "rhand" "rhand" $body "lhand" "lhand" $body "weapon" "f_ak47_template"
na
//reference mesh(es) $body "weapon" "aks74u"
- Następnie trzeba zamienić sekcję $attachment aby pasowało do tej z mdldecompiler.qc
Zmień:
// 2 attachment(s) $attachment 0 "Bone 04" 2.750000 -22.500000 2.900000 $attachment 1 "Bone52" 0.000000 -3.000000 0.000000
na
// 2 attachment(s) $attachment "1" "a_ak74" -0.50 14.60 -2.50 rotate 0.00 -0.00 0.00 $attachment "2" "a_ak74" 0.30 -0.30 -3.00 rotate 25.00 -0.00 -180.00
- I dlatego że model używa $hboxset "default", trzeba usunąć wszystkie $hbox z tej sekcji
Niektóre modele mają hitbox'y, które nie były domyślnie, szczególnie własne modele, które mają różne ciała.
Zmień
// 4 hit box(es) $hbox 0 "Bone04" -1.980000 -8.880000 -1.020000 1.730000 0.030000 1.090000 $hbox 0 "Bone_Righthand" -1.340000 -2.980000 -0.410000 1.430000 0.000000 0.630000 $hbox 0 "Bone01" -1.720000 -8.900000 -1.020000 1.990000 0.020000 1.090000 $hbox 0 "Bone_Lefthand" -1.520000 -3.073735 -0.410000 1.250000 0.000000 0.630000
na
// 4 hit box(es)
- Ostatnie o sekwencji, nie ma dużej różnicy, trzeba trochę zmienić i dodać rotate -90.
Obracanie potrzebne aby naprawić obrót modelu, pamiętasz kiedy dekompilowałeś model? Model był obrócony o 90 stopni
Zmień
// 6 animation sequence(s) $sequence "idle1" "idle1" fps 30 ..
na
// 6 animation sequence(s) $sequence "idle1" "idle" fps 30 rotate -90 ..
- Zapisz to
6. Kompilacja modelu
Uruchom compiler.bat który znajduje się w tools\HL1 Model Compiler & Decompiler\.
- Przeciągnij i upuść twoje .qc (w tym przypadku będzie to v_ak47.qc) w oknie kompilatora
- Naciśnij Enter i poczekaj aż się zrobi. W sumie to już masz gotowy model
Sprawdź model w Jed Half-Life Model Viewer


7. (Nieobowiązkowe) Usuwanie martwych klatek
Niektóre własne modele mają martwe klatki, dlatego trochę to wygląda jak lagi, ponieważ nie jest zoptymalizowany
HL2 compiler & decompiler i tak wiele razy się model kompiluje i dekompiluje że dodaje parę martwych klatek na początek animacji
Aby to usunąć zrób tak:
- Otwórz model w Jed Half-Life Model Viewer który przed chwilą skompilowałeś
- Idź do karty Weapon Origin wybierz jedną z animacji (shoot1 powinna ci teraz pomóc).
- Nacisnij Stop i wpisz 0 w widoczne pole
Patrz tak klatka po klatce od kiedy zacznie się animacja
- Zapamiętaj animację którą musisz skasować, np.: z 0-2.
Potrzebna jest conajmniej jedna animacja która się nie rusza przed rozpoczęciem animacji
- Teraz otwórz shoot1.smd używając notatnika
- Znajdź linie w której jest time 0 a następnie usuń wszystkie linie pomiędzy time 0 a time 3,
teraz widać że time 3 jest tuż za linią skeleton. Zapisz plik
- Zrób tak ze wszystkimi plikami .smd
- Skompiluj model ponownie
8. (Nieobowiązkowe) Obracanie modelu
Niektóre modele mogą być odwrócone w grze (JHLMV pokazuje model normalnie) zwłaszcza model C4.
Chodzi o to że w grze broń jest po lewej stronie gdy mamy ustawione cl_righthand 1 czyli standardowo po prawej stronie.
Możesz łatwo to naprawić za pomocą programu GFlip który znajduje się w tools\HL1 MDL Compiler & Decompiler
- Uruchom GFlip.
- Przeciągnij v_c4.mdl (or albo inny model) którego potrzebujesz odwrócić na okno GFlip
- Naciśnij Flip i poczekaj aż się zrobi, GFlip zrobi nowy model o nazwie v_c4_gflip.mdl.
- Skasuj oryginalny model i zmień nazwę tego utworzonego przez GFlip na v_c4.mdl.
- Będzie on pokazał jak to było źle (odzwierciedlenie) w JHLMV ale działa poprawnie w grze.

Pytania i odpowiedzi
Nie można skompilować modelu?
Upewnij się że masz wszystkie potrzebne pliki w jednym folderze i plik .qc jest poprawny, potem skompiluj plugin ponownie.
Błąd: "too many vertices" przy kompilowaniu?
Musisz podzielić .smd na pare części
- Uruchom MilkShape3D
- Załaduj model
- Zaznacz grupę rąk (już powinieneś wiedzieć jak się zaznacza grupy)
- Skasuj naciskając "Delete" i powinna zostać broń
- Eksportuj do osobnego pliku jako weapon.smd (ale nie zamykaj programu)
- Teraz cofnij akcję (Ctrl+Z)
- Wybierz Edit -> Select Inverse
- Skasuj naciskając "Delete" i powinny zostać ręce
- Eksportuj do osobnego pliku jako hands.smd
$body "weapon" "weapon" $body "weapon" "hands"Jeżeli nadal błąd występuje to podziel model na mniejsze kawałki
Czarna ręka w JHLMV?
Upewnij się że skopiowałeś hands_reference.smd i v_hands.bmp do folderu decompiled folder i poprawnie ułożyłeś mapę UV na teksturę w Milkshape3D.
Co z modelami w_ (world) i p_ (player)?
Dla modelu w_ możesz zrobić to samo co z v_ (view) lecz niestety CS:S nie posiada modeli p_ ponieważ brane są one z modeli v_
Błąd GFlip?
Czasami autor też to miał, czyścił rejestr używając programu CCleaner i ponownie włączał program GFlip
Słówko o muzzle flash
Czasami kiedy konwertujesz model, nie pokazuje się muzzle flash (ogień po wylocie kuli), to głownie z powodu linii $attachment w pliku .qc która nie działa, należy ponownie połączyć muzzle do kości i dostosować samodzielnie. To samo tyczy się lewej komory wylotowe (miejsce, w którym łuska wyskakuje)
Dlatego $attachment ma zazwyczaj dwie linie - jedna dla muzzle flash, druga dla komory wylotowej łusek
Kość jest zazwyczaj nazywana v_weapon.xxx gdzie xxx = nazwa broni, dla przykładu v_weapon.m249, ale czasami nazwane tylko xxx (m249) albo xxx.parent (m249.parent) albo w innej kombinacji. Możesz sprawdzić to w MilkShape3D
Musisz dostosować $attachment tak aby muzzle flash był we właściwej pozycji.
Credits
- Dels - autor tematu, ja tylko spolszczyłem
- Valve za CS 1.6, CS:S i studiomdl.exe.
- Jed a.k.a Wunderboy za Jed Half-Life Model Viewer.
- Kratisto za mdldecompiler.exe.
- Cannonfooder za HL2 MDL Decompiler.
- Nemesis za GCFScape & VTFEdit.
- TeH SubSoNiC (FPSBanana.com) za świetny poradnik, autor na jego podstawie zrobił ten
- ModderFreak (FPSBanana.com) za świetny model AK-47, autor użył go w tym poradniku
------------------------------------------------------------------------------------------------------------------------
Oryginalny temat:
Convert CS:S Weapon to CS 1.6 Tutorial - AlliedModders
Convert CS:S Weapon to CS 1.6 Tutorial - AlliedModders