[C&C 3: TW] Odcinek 3 - Kodowanie piechura 2 4791 0

O temacie

Autor WielkiKaszaniarz

Zaczęty 2.08.2015 roku

Wyświetleń 4791

Odpowiedzi 0

WielkiKaszaniarz

WielkiKaszaniarz

Użytkownicy
posty35
Propsy7
Profesjabrak
  • Użytkownicy
Modding "Command & Conquer 3: Tiberium Wars" - Kodowanie jednostki piechoty 2

Spis treści

1) Cel i przygotowania
2) Dodawanie nowej jednostki
3) Dodawanie nowego cameosa
4) Tworzenie moda i testowanie
5) Źródła zewnętrzne

Cel i przygotowania

Tym 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.xml
GDIRifleSoldierSquad.xml

Teraz wróć się do MOD SDK/Mods/TrainingMod/data i otwórz Notatnikiem plik Mod.xml. Najważniejsze to zaktualizować adresy przeniesionych plików:

Cytuj
<Include type="all" source="DATA:TrainingMod/data/GDIRifleSoldier.xml" />
<Include type="all" source="DATA:TrainingMod/data/GDIRifleSoldierSquad.xml" />

Teraz powinno to wyglądać tak:

Cytuj
<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:

Cytuj
<!--
         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:

Cytuj
<!--   REQUIRED DATA FILES   -->


Ten zapis niech dotyczy dwóch pierwszych ścieżek (z typem reference).
Teraz odstęp, i zapis:

Cytuj
<!--   GLOBAL DATA   -->

Odstęp.

Cytuj
<!--   ART DATA   -->

Odstęp.

Cytuj
<!--   GDI UNITS   -->

Pod spodem obie ścieżki dotyczące zakodowanej poprzednim razem jednostki.

Cytuj
<!--   NOD UNITS   -->

Odstęp.

Cytuj
<!--   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.xml
i wklej go do swojego folderu NOD

Teraz skopiuj pliki:
MOD SDK/CnC3Xml/GlobalData/LogicCommand
MOD SDK/CnC3Xml/GlobalData/LogicCommandSet
i wklej je do swojego folderu Global

Folderem 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:

Cytuj
<?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 jednostki

Skoro 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   -->

Cytuj
<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 :D).
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:

Cytuj
<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.

Cytuj
  <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

Cytuj
<Cmd>Command_ConstructNODMilitantRocketSquad</Cmd>

Kopiuj-wklej pod spód-Dodaj Elite-Zapisz-Zamknij.


Dodawanie nowego cameosa

Stworzona 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 :P ) 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 :P ), 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:

Cytuj
<?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:

Cytuj
   <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:

Cytuj
<?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.

Cytuj
      <Include type="all" source="DATA:TrainingMod/data/Images/UpdatedIcons.xml" />


Tworzenie moda i testowanie

Zbuduj 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 :P)

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ętrzne

Takie 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.
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry