Kwasowa Grota Heroes VIIMight & Magic XDark MessiahHorn of the AbyssHistoria Światów MMSkarbiecCzat
Cmentarz jest opustoszały



Pierwsze kroki




Jak stworzyć modyfikację?

Aby wykonać najprostszą modyfikację, wystarczy zmienić dowolną wartość w jakimkolwiek pliku zawartym w data.pak lub innym pliku z folderu data. Aby jednak wszystko było prawidłowe, najlepiej działać na kopiach tychże plików, umieszczanych bez pakowania w folderze data. Przypominam, że najlepiej na początku wypakować sobie cały data.pak do jednego folderu podrzędnego. Najlepszym według mnie widokiem są "Szczegóły", ale to już kwestia tego, co dla kogo jest najwygodniejsze. Równie dobrze możecie wybrać "Listę". W niektórych przypadkach może to być nawet korzystne.


Tak wygląda zawartość pliku data.pak. Nazwy folderów w większości są tożsame z ich zawartością - Characters zawiera pliki Character i podrzędne w stosunku do nich, _(Model) zawiera pliki Model i odnośniki do podrzędnych plików, Textures zawiera pliki tekstur itd. Niestety, dane są rozłożone nieco chaotycznie - pliki Model możemy na przykład znaleźć w folderze Characters, a lokalizację tekstur często można wyczytać jedynie z określających ją plików Material lub za pomocą wyszukiwarki.

Żeby wszystko prawidłowo działało, należy skopiowane i zmodyfikowane pliki uszeregować w takiej hierarchii, jakiej podlegały pierwotnie (pamiętaj jednak aby kopiować tylko pliki, które będą modyfikowane lub potrzebne do innych celów, nie musisz duplikować całych folderów!), tzn. jeśli chcemy dla przykładu zmienić punkty życia chłopa z 3 na 50, trzeba:
1. Otworzyć okno Eksploratora Windows i znaleźć folder data w folderze instalacyjnym Heroes of Might and Magic V lub Dzikich Hord (lub dataa jeśli chcemy modyfikować Kuźnię Przeznaczenia);
2. Otworzyć drugie okno i przejść do folderu, do którego wypakowaliśmy zawartość data.pak - jeśli posłuchaliście mojej rady, zamiast tego wystarczy kliknąć prawym przyciskiem myszy na folder data w folderze data i wybrać opcję "Otwórz w nowym oknie";
3. Znaleźć plik /GameMechanics/Creature/Creatures/Haven/Peasant.xdb;
4. W pierwszym otwartym oknie bezpośrednio w folderze data stworzyć folder GameMechanics;
5. W folderze GameMechanics stworzyć folder o nazwie Creature;
6. W folderze Creature stworzyć folder o nazwie Creatures;
7. W folderze Creatures stworzyć folder o nazwie Haven;
8. Do folderu Haven przekopiować plik Peasant.xdb;
9. W pliku Peasant.xdb odszukać linijkę
<Health>3</Health>
i zmienić jej treść na
<Health>50</Health>
po czym zapisać plik.

Możecie wykonać taką modyfikację samodzielnie jako pierwszą wprawkę i sprawdzić, że nie trzeba jej pakować, aby działała! Co najciekawsze, w Heroes V istnieje wiele sposobów na "wrzucanie" do gry modyfikacji - jeden z nich, wspomniany powyżej, to bezpośrednie wrzucenie zmodyfikowanych plików do folderu data, w wyniku czego gra uzna je za "nadpisujące" oryginalne pliki i to z nich będzie korzystać. Jednakże, aby ułatwić upload i pobieranie modyfikacji, najlepiej jest je spakować:

a) Jako archiwum .zip z rozszerzeniem .pak zamiast .zip - wtedy mod będzie działał tylko po wrzuceniu do folderu data - oto jak to jest z chłopem, a jeżeli nie chciało Wam się zrobić go samodzielnie, możecie też sprawdzić, że po wypakowaniu archiwum mod wciąż będzie działał (jeśli zostanie umieszczony w data);
b) Jako archiwum .zip z rozszerzeniem .h5m zamiast .zip - wtedy mod zadziała tylko po wrzuceniu do folderu Maps;
c) Jako archiwum .zip z rozszerzeniem .h5c zamiast .zip - wtedy mod zadziała tylko po wrzuceniu do folderu UserCampaigns;
d) Jako archiwum .zip z rozszerzeniem .h5p zamiast .zip - wtedy mod zadziała tylko po wrzuceniu do folderu DuelPresets;
e) Jako archiwum .zip z rozszerzeniem .h5u zamiast .zip - wtedy mod zadziała tylko po wrzuceniu do folderu UserMODs (choć teoretycznie może też zadziałać po umieszczeniu w folderze data), który działa tylko i wyłącznie w dodatku Dzikie Hordy. Niemniej, jest to rozwiązanie dosyć praktyczne, bo można szybko opróżnić folder z modami lub zapełnić go z powrotem.

Wskazówka: Jako stopień kompresji możemy spokojnie wybrać "Ultra". Dzięki temu mod będzie miał najmniejszy możliwy rozmiar.

Mod może też zadziałać jeśli zostanie umieszczony w folderze o dowolnej nazwie znajdującym się w folderze H5MMods w folderze Editor w folderze z grą, dlatego należy uważać, by przy grze przez internet nie dostały się tam żadne "zanieczyszczenia"!

W modyfikacji mogą znaleźć się pliki, których nie ma w grze, jednak muszą być one skonstruowane według określonych schematów, a odnośniki do nich - podane w innych pliczkach, które w grze były, a ich zmodyfikowane wersje również powinny znaleźć się w gotowym modzie.

Odnośniki mogą występować w różnych wersjach:

<Texture href="/Textures/Creatures/AAA.(Texture).xdb#xpointer(/Texture)"/> - w takim formacie podawane są odnośniki do plików, które dla danego XDB występują pojedynczo;
<Item href="/Effects/_(Effect)/AAA.xdb#xpointer(/ParticleInstance)"/> - w taki sposób podawane są odnośniki do plików, których dla danego XDB może być kilka, najczęściej stosuje się to w efektach specjalnych. Zestaw linijek jest otwierany i zamykany określonym tagiem.

Jak widać, ogólny wzór odnośnika to:

<XYZ href="LOKALIZACJA/PLIK.xdb#xpointer(/TYP PLIKU)"/>, gdzie:
XYZ to nazwa parametru w danym XDB, zazwyczaj taka jak typ pliku
LOKALIZACJA to położenie pliku w danych gry, a jej określanie zostanie omówione dalej
PLIK to nazwa pliku XDB (bez rozszerzenia), do którego podajemy odnośnik
TYP PLIKU to nazwa rodzaju pliku, który czasem jest podawany przy jego nazwie, a czasem nie. Pełen spis rodzajów znajdziesz tutajIn progress


Na określenie lokalizacji istnieją cztery sposoby:

Pierwszym z nich jest podanie dokładnej lokalizacji pliku w folderze data, Maps lub UserMODs, zaczynamy ją od ukośnika:


Drugim jest podanie lokalizacji pliku, który znajduje się w tym samym folderze, co plik wskazujący lokalizację lub w folderze podrzędnym. Jako domyślną uznajemy wtedy lokalizację pliku PODAJĄCEGO i od niej zaczynamy wpisywanie "ścieżki" do pliku, który chcemy wskazać. Jest to zazwyczaj o wiele wygodniejsze od wpisywania za każdym razem pełnej lokalizacji, zwłaszcza gdy pliki znajdują się bardzo daleko.

Ścieżkę wpisujemy wtedy bez ukośnika, na przykład gdy powyższy plik Effect.xdb znajduje się w folderze /Effects/_(Effect)/, wystarczy podać samą nazwę pliku AAA.xdb:


Można tę metodę stosować zamiennie z pierwszą. W przypadku niektórych plików, np. tekstur DDS, nie dodaje się do nazwy części #xpointer(/typ). Zresztą, zorientujecie się patrząc na oryginalne pliki.

Jest trzecia możliwość, wykorzystywana przy podawaniu odnośników do plików muzycznych. Określa ona położenie pożądanego pliku w folderze gry i folderach, które on zawiera. Przykładem niech będzie:


Chciałbym zauważyć, że zamiast lewoskośnych ukośników używane są tu prawoskośne. Nie ma też określenia rodzaju pliku (co jest zrozumiałe, gdyż ma to sens tylko dla tabeli XDB). Prawdopodobnie nie da się w inny sposób określać lokalizacji plików muzycznych, a trzeciego sposobu nie należy stosować do innych rodzajów plików. Nie miałoby to jednak sensu, gdyż wszystkie niemuzyczne pliki moda powinny się znajdować w folderze data.

Wreszcie ostatnia, czwarta opcja - ID. W ten sposób podawane są pliki binarne, tj. geometrieDa się je przekonwertować do .gr2 bądź .obj, szkieletyTypu GR2, animacje i dźwiękiSą to w rzeczywistości wave'y pozbawione rozszerzenia, umieszczone w plikach Sounds.pak i Soundsfx.pak. Są to nazwy plików znajdujących się w odpowiednich podfolderach folderu bin (animations, geometries, AIgeometries, skeletons, sounds itp.).

Odnośniki te wyglądają mniej-więcej tak:

<uid>D3DEFAE3-A35A-45E5-ABD2-E62EC947297C</uid>

Możemy co najwyżej podawać ID istniejących plików, gdyż tworzenie nowych pozostaje wciąż zagadką; wyjątkiem są geometrie, które można importować za pomocą edytora map z grafik 3D, choć jest to trudna sztuka, do której potrzeba wielu narzędzi i doświadczenia, a także dźwięki, które można stworzyć z dowolnych plików WAVE (.wav) poprzez wymazanie rozszerzenie i zmianę nazwy. W tym ostatnim przypadku najlepiej zastosować same cyfry w układzie 8-4-4-4-12 znaków. Litery chyba też by uszły, ale mogą to być jedynie litery od A do F (czyli używane w zapisie szesnastkowym).


Czasami zdarza się, że zamiast odnośnika łączącego plik nadrzędny z podrzędnym, plik podrzędny jest zawarty w nadrzędnym. Jest to instancja "wewnętrzna" ("inline"), wyglądająca mniej-więcej tak:


Jak widać, odnośnik zamiast pojedynczo występuje tu w formie tagu - ma swoje otwarcie (ze wskazaniem rodzaju pliku) i zamknięcie. To, co znajduje się między nimi, to "plik". Aby go skopiować, należy przekopiować wszystko od tagu otwierającego (z podanym rodzajem instancji i jej ID) do tagu zamykającego. Jeśli chcemy to zrobić w obrębie jednego pliku i mieć tu zarówno instancję wewnętrzną jak i jej kopię (lub więcej kopii), każda kopia musi mieć zmienione ID, aby wszystko było poprawnie odczytywane (można dopisać jedną cyfrę lub literę, można zastąpić - ważne, żeby zmienić).

Instancję wewnętrzną można łatwo zamienić w odrębny plik (przy większej ich liczbie może to być całkiem praktyczne posunięcie) - aby to zrobić, trzeba skopiować istniejący plik XDB, wykasować jego zawartość (poza linijką o treści <?xml version="1.0" encoding="UTF-8"?>) i przekopiować do niej to, co znajduje się między tagami: otwierającym i zamykającym instancję wewnętrzną (ale bez nich). Tak przygotowany plik można pozbawić zbędnych tabulatur, a następnie zapisać.

Trudniej jest zrobić na odwrót - ze zwykłego pliku uczynić instancję wewnętrzną. Tylko po co to robić?
© 2003-21 Kwasowa Grota. Wszelkie prawa zastrzeżone. Jakiekolwiek kopiowanie, publikowanie lub modyfikowanie tekstów grafiki i innych materiałów chronionych prawem autorskim znajdujących się na stronie bez wyraźnej zgody autorów jest zabronione.
Komnaty "Heroes V". Redakcja, kontakt