Modding "Command & Conquer 3: Tiberium Wars" - Kodowanie jednostki piechoty 2Spis treści1) Cel i przygotowania
2) Dodawanie nowej jednostki
3) Dodawanie nowego cameosa
4) Tworzenie moda i testowanie
5) Źródła zewnętrzne
Cel i przygotowaniaTym razem czeka cię duuuuużo przygotowań.
Ostatnim razem zmodyfikowałeś istniejącą jednostkę GDI. Jak zapewne zauważyłeś, pozostałe elementy gry, których nie edytowałeś, dodały się same w niezmienionej formie. Czas nauczyć się dodawania nowej jednostki. Za bazę posłuży nam piechota rakietowa Nodu. Dodasz oddział składający się z 4 zamiast 2 rakierowców, zwiększysz ich cenę oraz wartość na polu bitwy (w punktach, potrzebne tylko do wykresów po skończonej batalii) dodasz także nową ikonę.
Zanim się jednak za to zabierzesz, musisz zrobić dwie rzeczy.
Po pierwsze, uzupełnij folder
Art znajdujący się w
MOD SDK. Jak to zrobić?
Wejdź do jednego z pobranych na samym początku kursu folderów o nazwie
UI_and_Texture, następnie w
UI_In-Game_Textures. Skopiuj cały folder
Art i wklej go do
MOD SDK. Zezwól na wszelkie scalanie, zamiany plików itp.
Po drugie, musisz zmienić nieco strukturę swojego poprzedniego moda. Wejdź do
MOD SDK/Mods/TrainingMod/data. Stwórz 4 nowe foldery:
GDI,
NOD,
Global oraz
Images. Do pierwszego z nich wklej pliki:
GDIRifleSoldier.xmlGDIRifleSoldierSquad.xmlTeraz wróć się do
MOD SDK/Mods/TrainingMod/data i otwórz Notatnikiem plik
Mod.xml. Najważniejsze to zaktualizować adresy przeniesionych plików:
<Include type="all" source="DATA:TrainingMod/data/GDIRifleSoldier.xml" />
<Include type="all" source="DATA:TrainingMod/data/GDIRifleSoldierSquad.xml" />
Teraz powinno to wyglądać tak:
<Include type="all" source="DATA:TrainingMod/data/GDI/GDIRifleSoldier.xml" />
<Include type="all" source="DATA:TrainingMod/data/GDI/GDIRifleSoldierSquad.xml" />
Zanim przejdziesz dalej, wyjaśnię jedną rzecz. Zwróć uwagę na coś takiego:
<!--
mod.xml is the central include for mod setup data.
-->
Między znakami <!-- oraz --> możesz pisać co tylko ci ślina na język przyniesie, kreator nawet tego nie czyta, po prostu ignoruje takie zapisy. Dzięki temu modder może sobie pomóc i nieco uporządkować chaos w plikach.
Wykasuj to badziewie i wstaw zamiast tego:
<!-- REQUIRED DATA FILES -->
Ten zapis niech dotyczy dwóch pierwszych ścieżek (z typem
reference).
Teraz odstęp, i zapis:
<!-- GLOBAL DATA -->
Odstęp.
<!-- ART DATA -->
Odstęp.
<!-- GDI UNITS -->
Pod spodem obie ścieżki dotyczące zakodowanej poprzednim razem jednostki.
<!-- NOD UNITS -->
Odstęp.
<!-- SCRIN UNITS -->
Zapisz i zamknij.
Jeszcze skopiujesz kilka plików i zabierzesz się do właściwej roboty.
Skopiuj plik:
MOD SDK/CnC3Xml/NOD/Units/NODMilitantRocketSquad.xmli wklej go do swojego folderu
NODTeraz skopiuj pliki:
MOD SDK/CnC3Xml/GlobalData/LogicCommandMOD SDK/CnC3Xml/GlobalData/LogicCommandSeti wklej je do swojego folderu
GlobalFolderem
Images zajmiesz się już później. Ostatnie, co teraz musisz zrobić, to "zaadresować" wszystkie skopiowane pliki w
Mod.xml. Ostatecznie całość ma wyglądać mniej więcej tak:
<?xml version="1.0" encoding="UTF-8"?>
<AssetDeclaration xmlns="uri:ea.com:eala:asset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Tags></Tags>
<Includes>
<!-- REQUIRED DATA FILES -->
<Include type="reference" source="DATA:static.xml" />
<Include type="reference" source="DATA:global.xml" />
<!-- GLOBAL DATA -->
<Include type="all" source="DATA:TrainingMod/data/Global/LogicCommand.xml" />
<Include type="all" source="DATA:TrainingMod/data/Global/LogicCommandSet.xml" />
<!-- ART DATA -->
<!-- GDI UNITS -->
<Include type="all" source="DATA:TrainingMod/data/GDI/GDIRifleSoldier.xml" />
<Include type="all" source="DATA:TrainingMod/data/GDI/GDIRifleSoldierSquad.xml" />
<!-- NOD UNITS -->
<!-- SCRIN UNITS -->
</Includes>
</AssetDeclaration>
Dodawanie nowej jednostkiSkoro ma to być zupełnie nowa jednostka, musi się inaczej nazywać. Zmień nazwę pliku
NODMilitantRocketSquad.xml na
NODMilitantRocketEliteSquad. Od razu dodaj stosowny zapis w pliku mod.xml, pod
<!-- NOD UNITS --><Include type="all" source="DATA:TrainingMod/data/GDI/NODMilitantRocketEliteSquad.xml" />
Ponieważ nasz nowy oddział składa się z takich samych chłopaków co ten zwykły, nie musisz doklejać pliku
NODMilitantRocket i go zmieniać. Wystarczy zakodowanie teamu. No to koduj:
a) Znajdź
BuildCost="400". Zmień 400 na 1000. Wzrośnie koszt rekrutacji.
b) Poniżej jest
BuildTime="4". Zmień 4 na 6. Wydłuży się czas rekrutacji.
c) Poniżej jest
CommandSet="NODMilitantRocketSquadCommandSet". Zmień zawartość cudzysłowia na
NODMilitantRocketEliteSquadCommandSet. Ten zapis jest konieczny, żeby w ogole dało się ten oddział rekrutować (choć to nie wystarczy, ale o tym póniej).
d) Jeszcze niżej jest
CommandPoints="100". Zmień 100 na 1000 (wtedy na pewno zobaczysz różnice na wykresie
).
e) Parę linijek dalej mamy
EditorName="NODMilitantRocketSquad". Dopisz tu też to
Elite, żeby potem przypadkiem się nie gryzło z podstawowa jednostką.
f) No a teraz zmieniaj opis jak w poprzednim poradniku: tam gdzie masz
Desc:,
Type:,
Name: wstawiaj w cudzysłów
NODMilitantRocketEliteSquad.
g) Na koniec zwiększ liczbę wojaków z 2 do 4, tak samo jak zmniejszałeś ich liczbę w poprzednim poradniku. Tylko uwazaj. Nieco niżej masz zapis pozycji dodatkowej jednostki (NODConfessor), która pojawia się w oddziale po wykupieniu ulepszenia. Żaden z dodawanych żołnierzy nie może mieć takich samych współrzędnych jak on. Ot, i cała komplikacja.
Zapisz i zamknij. Przejdź do
mod.str. Skopiuj sobie cały zapis i wklej pod spód. Powinieneś coś teraz zauważyć. Wróć do podpunktu f).
Desc:,
Type:,
Name:. A teraz popatrz na strukturę zapisu w
mod.str.
DESC:,
TYPE:,
NAME:. Dostrzegasz zależność? Analogiczne wartości muszą być identyczne. Czyli w skopiowanym zapisie poniżej wszystkie
GDIRiflemanSquad zastępujesz
NODMilitantRocketEliteSquad. Opis zrób taki jak ci się podoba, zapisz i zamknij.
W podpunkcie d) powyżej wspomniałem, że trzeba coś jeszcze zrobić, by jednostkę dało się rekrutować. Kluczowe są pliki
LogicCommand.xml oraz
LogicCommandSet.xml.
Otwótz ten pierwszy i wyszukaj formułę
NODMilitantRocketSquad. Powinieneś zobaczyć zapis:
<LogicCommand
Type="UNIT_BUILD"
id="Command_ConstructNODMilitantRocketSquad">
<Object>NODMilitantRocketSquad</Object>
</LogicCommand>
Skopiuj to i wklej pod spodem. Pozostaje ci tylko dopisać przed
Squad słówko
Elite. Zapisz zmiany, zamknij i otwórz
LogicCommandSet.xml. Znowu wyszukaj
NODMilitantRocketSquad.
<LogicCommandSet
id="NODMilitantRocketSquadCommandSet">
<Cmd>Command_StanceDrillDown</Cmd>
<Cmd>Command_AttackMove</Cmd>
<Cmd>Command_NodCallForTransportInfantry</Cmd>
</LogicCommandSet>
Kopiuj-wklej pod spód-Dodaj
Elite. I jeszcze raz (po raz ostatni) znajdź
NODMilitantRocketSquad<Cmd>Command_ConstructNODMilitantRocketSquad</Cmd>
Kopiuj-wklej pod spód-Dodaj
Elite-Zapisz-Zamknij.
Dodawanie nowego cameosaStworzona przez ciebie jednostka jak na razie ma przypisaną taką samą ikonę jak
NODMilitantRocketSquad. Czas to zmienić. Wejdź w
MOD SDK/Art/Images. Potrzebujesz dwóch plików:
a)
PackedImages_177.tga - oryginalny cameos rakieciarza Nodu
b) Dowolny plik .xml
Oba skopiuj i wklej tutaj:
MOD SDK/Mods/TrainingMod/data/Images.
Otwórz cameosa GIMP-em i go zmodyfikuj - zacieniuj jakiś obszar, pomaluj albo zmień odcień całości. Ja użyłem funkcji Warstwy -> Barwienie i zmieniłem odcień na zielony (wszak Nodowcy najbardziej kochają Tyberium - pomijając Kane'a
) Teraz wyeksportuj do formatu .tga (Plik-> Zastąp PackedImages_177.tga) i zamknij (nie zapisuj zmian, one już się wyeksportowały tam gdzie trzeba).
Tylko że numer 177 nie ma racji bytu, bo taki numer ma właśnie standardowy rakieciarz. Ponieważ wszystkich plików
PacketImages_XXX jest 220 (wprawdzie 220. to elf z SampleMod, no ale dobra
), nadaj swojemu cameosowi numer 221.
Obrazek już masz, musisz go jeszcze zakodowań. Zmień nazwę skopiowanego pliku .xml na
UpdatedIcons. Teraz go otwórz i wyczyść jego zawartość - ma być pusty. Teraz musisz dodać na początek zapis:
<?xml version="1.0" encoding="UTF-8"?>
<AssetDeclaration xmlns="uri:ea.com:eala:asset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</AssetDeclaration>
W przeciwnym razie plik nie zostanie potraktowany jako plik od EA i nie zostanie uwzględniony (o błędach nie wspominając)
W puste miejsce wklej sobie wzorek z
SampleUpdatedImages.xml, który znajdziesz tu: MOD SDK/Art/Images. Chodzi o taki kawałek:
<Texture id="PackedImages_220" File="PackedImages_220.tga" OutputFormat="A8R8G8B8" GenerateMipMaps="false" AllowAutomaticResize="false"/>
<PackedTextureImage id="Portrait_GDIElfWarrior" Texture="PackedImages_220" Rotated="false">
<Dimensions x="128" y="128"/>
<Coords x="0" y="0"/>
<TextureDimensions x="128" y="128"/>
</PackedTextureImage>
Wiesz, co robić, prawda? Każdy numer 220 ma się zmienić w 221, a
id="Portrait_GDIElfWarrior" na
id="Portrait_NODMilitantMissileEliteSquad"Całość powinna wyglądać tak:
<?xml version="1.0" encoding="UTF-8"?>
<AssetDeclaration xmlns="uri:ea.com:eala:asset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Texture id="PackedImages_221" File="PackedImages_221.tga" OutputFormat="A8R8G8B8" GenerateMipMaps="false" AllowAutomaticResize="false"/>
<PackedTextureImage id="Portrait_NODMilitantMissileEliteSquad" Texture="PackedImages_221" Rotated="false">
<Dimensions x="128" y="128"/>
<Coords x="0" y="0"/>
<TextureDimensions x="128" y="128"/>
</PackedTextureImage>
</AssetDeclaration>
Koniec? Jeszcze nie. W pliku
NodMilitantRocketEliteSquad trzeba zmienić przypisanie cameosa. Znajdź
SelectPortrait= i dopisz to Elite przed słowem
Squad Analogicznie postąp z kolejną linijką (ButtonImage). Grunt żeby nazwa była taka sama jak id w
UpdatedIcons.xml.
I ostatni krok: zaadresowanie
UpdatedIcons.xml w
Mod.xml. Najlepiej pod linijką
<!-- ART DATA -->, tak dla porządku.
<Include type="all" source="DATA:TrainingMod/data/Images/UpdatedIcons.xml" />
Tworzenie moda i testowanieZbuduj kolejnego moda (wyskoczy jeden błąd opisany fioletową czcionką ale się nim nie przejmuj, to normalne). Tak jak ostatnio wybierz z rozwijanej listy
TrainingMod, wszystko niech będzie zaznaczone, a na dole wpisz kolejny numer wersji, np. 1.01 (U mnie to było 1.32, bo eksperymentowałem
)
Po stworzeniu moda włóż płytę z grą i uruchom. Z menu wybierz
GameBrowser, zakładkę
Mods. Niespodzianka, poprzednia wersja się zachowała mimo zmian, nowa dodała się pod spodem. Po prostu wyniki pracy kreatora są zapisywane gdzieś indziej. W moim przypadku
Dokumenty/Command & Conquer 3 Wojny o tyberium choć zupełnie nie rozumiem, czemu jest polska wersja tytułu, skoro zainstalowałem tylko angielski pakiet językowy. Domyślasz się już pewnie, jak usuwać swoje mody.
Po uruchomieniu moda znów wybierz Skirmisha, ale tym razem graj jako Nod. Po wybudowaniu baraków powinieneś zobaczyć swoją ikonę obok oryginalnej, nowy opis i cenę. Po rekrutacji wojaków będzie 4 zamiast 2. Rekrutuj ich w cholerę i spamuj bazę wroga (do testów najlepiej GDI na poziomie Easy, z profilem Turtle). Po wygranej zobaczysz wykresy. Widać rónicę w punktach dowodzenia? Powinno to być zauważalne.
Źródła zewnętrzneTakie same jak w poradniku 2, przy czym tym razem zaznaczam, że w tych oryginalnych poradnikach jest to wszystko opisane w sposób nadzwyczaj zagmatwany, do tego jest kilka poważnych błędów.