|
|
| |
| ZASOBY |
| |
| |
|
|
|
| |
|
| NASZ BUTTON |
|
|
| |
|
|
| |
|
| |
|
TUTORIALE - CODING
|
[ Dodaj ]
|
|
Od czego zacząć...
| [ 2005-07-20 19:56:01 Dodał:
mefi Wyświetleń: 5664 Komentarzy: 4 ]
|
|
Aby zacząć zabawę w modyfikację kodu źródłowego Half-Life 2 należy zaopatrzyć się oczywiście w grę (najlepiej oryginał) oraz kompilator i edytor C++ (najlepiej użyć pakietu Microsoft Visual C++ 2003).
Jeżeli macie już wszystkie wymienione rzeczy to czas zacząć zabawę. W odróżnieniu od HL 1 gdzie, aby zacząć tworzyć moda było trzeba poświęcić dużo czasu na konfiguracje kodu źródłowego itp. w nowej odsłonie gry Half-Life programiści z firmy Valve uprościli to do minimum. Aby stworzyć szkielet w pełni działającego moda ze skonfigurowanym już kodem źródłowym (ścieżki itp.) wystarczy kilka kliknięć myszy i 2 minuty czasu. Teraz krok po kroku opiszę jak to zrobić.
Włączamy steam'a, z menu wybieramy PLAY GAMES, a następnie szukamy kategorii Tools gdzie klikamy na SOURCE SDK. Teraz prawym klawiszem myszy otwieramy menu z którego wybieramy INSTALL GAME i naszym oczom ukaże się ramka w której wyczytamy co zawiera SDK, a następnie klikamy na DOWNLOAD AND INSTALL. Po chwili pokaże się okno informujące, że SDK został zainstalowany i jest teraz dostępny z menu Steam'a. Teraz czas uruchomić SDK. Robimy to tak jak poprzednio z menu Tools, zaznacamy SDK i z menu wybieramy LAUNCH GAME. A teraz najbardziej wnerwiająca rzecz czyli czekanie aż nastąpi update SDK, czasem trwa to nawet godzinę czasu! Gdy juź odczekamy swoje zobaczymy takie okno:
Tak jak na obrazku w Current Game wybieramy Half-Life 2 i klikamy dwa razy na CREATE A MOD. Pojawi się kolejne okno w którym zaznaczamy MODIFY HALF-LIFE 2 SINGLE PLAYER i naciskamy guzik NEXT.
W kolejnym oknie musimy podać dwie rzeczy. Po pierwsze, gdzie będzie trzymany na dysku kod źródłowy wraz katalogami dla źródeł, map itp. I druga rzecz jaką musimy podać to nazwa katalogu moda, który znajdzie się w folderze SOURCEMODS gry HL2. Do tego katalogu kopiuje się wszystkie nowe mody. Można skonfigurować to np. tak:
Już teraz mam gotowego moda przygotowanego do modyfikacji. Aby go uruchomić wystarczy ze Steam'a z kategorii Third Party Games wybrać HALF-LIFE 2 MOD lub wejść do katalogu, który podawaliśmy przy konfiguracji, ten z kodem źródłowym (w naszym przypadku MOJ MOD) i kliknać na plik RUN_MOD.BAT. Jeżeli chcielibyśmy zmienić nazwę naszego moda wyświetlaną w Third Party Games należy zmodyfikowć plik GAMEINFO.TXT znajdującym się w katalogu moda. Otwieramy go np. notatnikiem i w sekcji Gameinfo usuwamy niepotrzebną linię z napisem game. A następnie zamiast niej wstawiamy linię jak w przykładzie poniżej:
"GameInfo"
{
// This is what shows up in the 'Third Party Games' area of the Steam games list.
game "Half-Life 2 Mod"
|
"GameInfo"
{
// This is what shows up in the 'Third Party Games' area of the Steam games list.
name "Nazwa mojego moda" |
Aby mod działał bez problemów takich jak np. dziwne nazwy broni musimy zmienić nazwę pliku HL2_ENGLISH.TXT znajdującego się w katalogu RESOURCE naszego moda na MOD_ENGLISH.TXT. W pierwszym członie nazwy pliku musi być nazwa katalogu moda.
Przyszedł czas aby uruchomić Viasual Studio, gdy już to zrobimy to z menu wybieramy
FILE->OPEN->PROJECT i z katalogu C:\MOJ MOD\SRC otwieramy plik GAME_SDK.SLN.
W Half-Life 2 nie modyfikuje się exe'ka (HL2.EXE). Modyfikuje się natomiast dwa pliki DLL, CLIENT.DLL oraz SERVER.DLL. Pierwszy jak sama nazwa wskazuje to client, a drugi to serwer i to je będziemy zmieniali.
Po otwarciu wyżej wymienionego pliku w prawym oknie zobaczymy takie coś:
Są to dwa projekty, pierwszy dotyczy kodu źródłowego pliku CLIENT.DLL, natomiast drugi pliku SERVER.DLL. Pogrubiona nazwa projektu clienta oznacza, że to on jest teraz projektem aktywnym.
Pod spodem okna są dwie zakładki:
- CLASSVIEW (dodawanie, przeglądanie klas)
- FILEVIEW (dodawanie, usuwanie i przeglądanie plików źródłowych)
Teraz ważna rzecz, domyślnie oba projekty ustawione są na tworzenie plików, które będzie można debugować, czyli z poziomu Visual'a krok po kroku śledzić ich wykonywanie. W tej konfiguracji pliki wynikowe są o wiele większe i aby mod się włączył trzeba zezwolić na obsługę takich plików. Aby to zrobić musimy włączyć moda z parametrem -allowdebug. Jeżeli włączacie mod'a poprzez plik RUN_MOD.BAT to nie musicie nic dopisywać, bo jest w nim już odpowiedni wpis. Jeżeli jednak chcecie generować pliki w trybie Release to musicie z menu BUILD wybrać CONFIGURATION MANAGER i Active Solution Configuration zmienić na RELEASE HL2.
Aby wraz z plikami DLL nie kopiowane były do katalogu BIN niepotrzebne nam pliki PDB, naleźy kliknąć na wybrany projekt i z menu podręcznego wybrać PROPERTIES. Następnie znajdujemy kategorię CUSTOM BUILD STEP i w Command Line i Outputs usuwamy wszytskie wpisy dotyczące tych plików. Oczywiście to samo należy zrobić dla drugiego projektu.
Teraz pomyślmy co chcemy na początek modyfikować serwer czy klienta, żeby wam skrócić myślenie weźmy na tapetę serwer (SERVER.DLL). Klikając na plus obok napisu HL pokaże się nam struktura katalogów zawierających pliki źródłowe serwera:
- SOURCE FILES (pliki CPP z funkcjami i algorytmami)
- HEADER FILES (pliki nagłówkowe H, które zawierają deklaracje funkcji, stałych oraz zmiennych).
Teraz coś zmienimy w kodzie i w końcu go skompilujemy. Powiedzmy, że chcemy, aby broń SMG1 mogła strzelać także pod wodą. Aby to zrobić w projekcie HL otwieramy katalog SOURCE FILES, a w nim HL2 DLL. Następnie szukamy pliku WEAPON_SMG1.CPP i otwieramy go. Teraz musimy znaleźć miejsce w kodzie, które będziemy zmieniać, nie będę podawał do której linii w kodzie trzeba skoczyć gdyż jak coś zmodyfikujemy to numery linii się zmienią. Będę podawał więc nazwę funkcji w której będzie jakaś modyfikacja. Z menu EDIT->FIND AND REPLACE->FIND otwieramy okienko w którym wpisujemy nazwę funkcji, w naszym wypadku CWeaponSMG1::CWeaponSMG1( ). Szukana funkcja wygląda tak:
CWeaponSMG1::CWeaponSMG1( )
{
m_fMinRange1 = 0;// No minimum range.
m_fMaxRange1 = 1400;
} |
Teraz aby broń strzelała pod wodą należy dodać zmienną, która za to odpowiada. Zmienna ta nazywa się m_bFiresUnderwater i jest typu BOOL. To że zmienna ta jest tego typu można rozpoznać po przedrostku b lub można skorzystać z fajnej opcji jaka ma w Visual Studio. Opcja ta pokazuje, w którym pliku i miejscu nastąpiła deklaracja stałych, zmiennych oraz funkcji. Zobaczmy więc jak działa ta opcja w praktyce. Dopiszcie po m_fMaxRange1 = 1400 taką linię m_bFiresUnderwater = true, teraz kliknijcie na nazwie tej zmiennej i z menu podręcznego wybierzcie opcję GO TO DECLARATION. Po chwili otworzy się wam plik BASECOMBATWEAPON_SHARED.H z podświetloną linią kodu: bool m_bFiresUnderwater.
Zmodyfikowany kod dla broni SMG1 umożliwiający strzelanie pod wodą powinień wygladać tak:
CWeaponSMG1::CWeaponSMG1( )
{
m_fMinRange1 = 0;// No minimum range.
m_fMaxRange1 = 1400;
m_bFiresUnderwater = true;
} |
Teraz wystarczy zapisać plik i z menu BUILD wybrać BUILD SOLUTION, aby skompilować oba pliki DLL. Po kompilacji, która trwa od minuty do kilku minut w zależności od mocy komputera można włączyć naszego moda i sprawdzić jak działa nasza modyfikacja.
|
|
|
| |
| KOMENTARZE |
|
| [ 2010-01-04 14:57:14 Dodał:
Mr_R1 ]
|
|
|
|
Ja mam problem. Robiłem jak trzeba z source sdk. Wszystko ok, ale nie mam pliku hl2.english.txt w folderze resource (jest tylko pusty folder ui) i pliku game.sdk.sln w folderze src. Gdzie są te pliki?? |
| |
|
|
|
tez tego nie mam ): |
| |
| [ 2010-01-22 16:12:29 Dodał:
Fighter ]
|
|
|
|
Znajduje się zapewne w pliky .gcf plików Source. Poszukajcie w plikach Source SDK Base albo silnika Source na którym tworzycie moda. |
| |
| [ 2010-02-20 00:37:07 Dodał:
VorteX ]
|
|
|
|
Ja nie mam nigdzie lol |
|
|
|
|
|
| |
|
|
| |
| SHOUTBOX |
|
MoonBlaze: ciasto is a lie |
|
zwieracz: Przyłącz się do mnie, mam ciasto |
|
Jodla: <kontemplujac stwierdza iz obecna rzeczywistosc jest do bani> |
|
MoonBlaze: sm_ban @Dabu 1 |
|
Dabu: Ta strona umarła, zapraszam lepiej na heacrab.pl :D [/koniec reklamy] |
|
Jodla: open beta nowego gmoda a tu 0 info na stronie ...może czas to zmienic zwłaszcza iż screeny z GM13 wygladaja apetycznie |
|
Dabu: web 3.0 |
|
Elektryk: Link |
|
Tracha: Ruski gracz! |
|
zwieracz: Za moich czasów, to się bawilismy przy takiej gierce, gdzie zając łapaj kury za jaja. A moze to był wilk. |
|
| |
|
|
|