Modowanie Pojazdów

Jedną z rzeczy "modowalnych" w Original War są pojazdy. Aby rozpocząć przygodę z tym zagadnieniem trzeba poznać jak "zbudowane" są pojazdy. Zacznijmy zatem od początku.


vehicles.txt

Pierwszym omawianym aspektem będzie niepozorny pliczek vehicles.txt znajdujący się w folderze Data/GameInit. Znaleźć go można w Data1.owp (jeżeli nie wiesz jak odpakowywuje się pliki *.owp to zajrzyj tutaj). Po wypakowaniu umieść plik w folderze swojego moda.

Cała ścieżka powinna wyglądać następująco: TwójMod/Data/GameInit/vehicles.txt.

Po otwarciu pliku (można to zrobić zwykłym notatnikiem) naszym oczom ukaże się następująca zawartość:

GAMEINIT VEHICLES VEHICLES_LABEL "E(&Vehicle)C(&Vozidlo)" SPEED_LABEL "E(Speed)C(Rychlost)"

Na samym szczycie pliku znajduje się nagłówek GAMEINIT, następnie mamy kolejne nagłówki VEHICLES,VEHICLES_LABEL oraz SPEED_LABEL. Nie należy ich w żaden sposób modyfikować. Przejdźmy dalej.



Komponenty podwozia

Komponenty podwozia to części z których zbudowane są podwozia, a nie same podwozia. W ich skład wchodzą różnego rodzaju koła, gąsienice, cylindry itd.

WHEELS_AND_TRACKS WHEEL 1 1 wh-u-small WHEEL 2 1 wh-u-big TRACK 3 1 wh-u-medtrack TRACK 4 1 wh-u-heavytrack SPEC 5 1 wh-u-morphling HOVER 11 1 wh-a-hoverfront HOVER 12 1 wh-a-hoverback WHEEL 13 1 wh-a-lightsmall WHEEL 14 1 wh-a-lightbig WHEEL 15 1 wh-a-medsmall WHEEL 16 1 wh-a-medbig WHEEL 17 1 wh-a-cylinder TRACK 18 1 wh-a-track WHEEL 21 1 wh-r-med WHEEL 22 1 wh-r-heavy TRACK 23 1 wh-r-medtrack TRACK 24 1 wh-r-heavtrack TRACK 25 1 wh-r-behemoth END_OF_WHEELS_AND_TRACKS Powyższy kod to spis części wchodzących w skład poszczególych rodzajów podwozia. Na przykład WHEEL 17 1 wh-a-cylinder jest identyfikatorem cylinrda będącego przednią częścią arabskiego podwozia półgąsienicowego.



Podwozia

Dalej znajdują się definicje poszczególnych rodzajów podwozia występujących w grze. Za przykład objaśniający posłużę się pierwszym z brzegu lekkim podwoziem amerykańskim.

CHASSIS_TYPE 1 NAME "E(Light wheeled)C(Light wheeled)" NATION American WEIGHT 1 SYMBOL u-lw OIL 0 SIBERIUM 0 CANS 5 TIME 10 SOUND_NAME Light SOUND_TYPE 1 SEL_XY 0 -30 DEFEND 25 PROTECTION 65 SPEED 18 MOVEMENT_TYPE Wheeled ANIM_ENGINE 1 1 1 10 10 10 ANIM_CONTROL 1 36 2 2 2 1 1 10 10 10 UNIT_SIZE 7 TRAMPLE Small 1 3 0 2 VEHICLE_TYPE Combined WHEELS 4 1 2 1 2 PRODUCED_IN 2

    Legenda

  • CHASSIS_TYPE ID - identyfikator liczbowy podwozia.
  • NAME "E(Light wheeled)C(Light wheeled)" - pierwszy nawias to indetyfikator słowny, natomiast drugi to identyfikator używany przy nadawaniu nazw w odpowiednich plikach językowych.
  • NATION - nacja.
  • WEIGHT - waga pojazdu, domyślnie dostępne są cztery rodzaje wag (od 1 do 4).
  • SYMBOL u-lw - nazwa pliku graficznego znajdujący się w folderze Vehicles.
  • OIL, SIBERIUM, CANS - koszt w surowcach, chyba nie trzeba tłumaczyć.
  • TIME - czas potrzebny na skonstruowanie podwozia. Należy mieć na uwadze że na czas jaki potrzebny jest na skonstruowanie całego pojazdu wliczane są czasy konstrukcji poszczególnych komponentów.
  • SOUND_NAME Nazwa - Nazwa pliku dźwiekowego podwozia. Wszystkie pliki dźwiekowe pojazdów znaleźć można Data2.owp (Effects/Vehicles/Nacja).
  • SOUND_TYPE - typ odtwarzanego dźwieku, zazwyczaj ustawiony na 0.
  • SEL_XY - położenie paska ze zdrowiem i paliwem.
  • DEFEND - parametr obrony pojazdu.
  • PROTECTION - drugi parametr obrony, nie wykorzystywany przez grę.
  • SPEED - bazowa szybkość poruszania, wartość ta może być modyfikowana przez różne czynniki jak badania, poziom kierowcy itd.
  • MOVEMENT_TYPE Wheeled - rodzaj poruszania, w tym przypadku kołowy.
  • ANIM_ENGINE - parametry animacji, unikalne dla każdego pojazdu.
  • ANIM_CONTROL - parametry arnimacji poruszania.
  • UNIT_SIZE - wielkość podwozia.
  • TRAMPLE - definiuje jak "deptana" jest trawa.
  • VEHICLE_TYPE Combined - rodzaj pojazdu. Występują trzy rodzaje: Combined - składający się z komponentów. Mastodont - tylko dla mastodonta (takie podwozie można leczyć naukowcem). Behemoth - tylko dla behemotha.
  • WHEELS X r1, r2, r3, r4 - pierwsza liczba odpowiada za ilość kół, następne to kolejno identyfikatory komponentów (przykładowo 1 - małe koło, 2 - średnie koło itd.).
  • PRODUCED_IN - produkowane w, liczba oznacza identyfikator budynku potrzebnego do produkcji podwozia [2 - warsztat, 3 - fabryka, inne - rozbudowy]



Silniki

Kolejną sekcją są silniki.

ENGINES ENGINES_LABEL "E(Engine)C(Motor)" ENGINE_TYPE 1 NAME "E(Combustion)C(Combustion)" SYMBOL comb OIL 30 SIBERIUM 0 CANS 5 TIME 10 SOUND_NAME Combust SOUND_TYPE 1 WEIGHT 1 3 PRODUCED_IN 2 TECHNOLOGY 47 ENGINE_TYPE 2 NAME "E(Solar)C(Solar)" SYMBOL solar OIL 0 SIBERIUM 0 CANS 10 TIME 20 SOUND_NAME Solar SOUND_TYPE 1 WEIGHT 1 2 PRODUCED_IN 2 TECHNOLOGY 45 ENGINE_TYPE 3 NAME "E(Siberite)C(Siberite)" SYMBOL siber OIL 0 SIBERIUM 10 CANS 5 TIME 35 SOUND_NAME Siberium SOUND_TYPE 1 WEIGHT 2 3 PRODUCED_IN 21 TECHNOLOGY 22 END_OF_ENGINES

Parametry silników są prawie identyczne dlatego nie będę ich ponownie opisywać. Jedyną nowością jaką się tu pojawia jest paramer WEIGHT min max który mówi dla jakich wag ten silnik jest dozwolony oraz parametr TECHNOLOGY numer który definiuje jaka technologia jest wymagana do jego budowy.



Sterowanie

CONTROLS CONTROLS_LABEL "E(Control)C(Řízení)" CONTROL_TYPE 1 NAME "E(Manual)C(Manual)" SYMBOL man OIL 0 SIBERIUM 0 CANS 15 TIME 0 WEIGHT 1 3 PRODUCED_IN 2 CONTROL_TYPE 3 NAME "E(Computer)C(Computer)" SYMBOL comp OIL 0 SIBERIUM 0 CANS 5 TIME 20 WEIGHT 1 3 PRODUCED_IN 24 TECHNOLOGY 27 CONTROL_TYPE 2 NAME "E(Remote)C(Remote)" SYMBOL rem OIL 0 SIBERIUM 0 CANS 10 TIME 15 WEIGHT 1 3 PRODUCED_IN 20 TECHNOLOGY 15 CONTROL_TYPE 4 NAME "E(Rider)C(Rider)" SYMBOL rider OIL 0 SIBERIUM 0 CANS 0 TIME 0 WEIGHT 4 3 PRODUCED_IN 4 CONTROL_TYPE 5 NAME "E(Apeman)C(Apeman)" SYMBOL comp OIL 0 SIBERIUM 0 CANS 5 TIME 20 WEIGHT 1 3 PRODUCED_IN 3 TECHNOLOGY 3 END_OF_CONTROLS

Dostępne w grze sterowania wykorzystują wcześniej opisywane parametry. Niestety jest to najmniej modowalna rzecz w grze w powodu ograniczeń kodu źródłowego gry.



Wyposażenie

W końcu dotarliśmy do najciekawszej części pojazdu jaką jest wyposażenie. Na wyposażenie składają się wszelakiego rodzaju bronie oraz narzędzia takie jak dźwigi, komory transportowe, buldożery itd.

Przykład kodu dla karabinu maszynowego:

WEAPON_TYPE 2 NAME "E(Machine gun)C(Machine gun)" NATION American SYMBOL w-u-mg OIL 0 SIBERIUM 0 CANS 5 TIME 10 SOUND_NAME KulometSingle SOUND_TYPE 0 SEL_XY 0 0 ROTATE_TYPE Free SIGHT 9 WEIGHT 1 3 ATTACK MINMAX_RANGE 1 8 FREQUENCY 20 30 DAMAGE 25 10 6 EFF 25 10 6 ANIM 1 1 1 END_OF_ATTACK PRODUCED_IN 2
    Legenda
  • WEAPON_TYPE - numer wyposażenia.
  • NAME (id)(id_nazwa) - identyfikatory słowne.
  • NATION nacja - nacja.
  • SYMBOL nazwa - nazwa pliku graficznego.
  • OIL, SIBERIUM, CANS - koszt w surowcach.
  • TIME t - czas potrzebny na konstrukcję.
  • SOUND_NAME nazwa - nazwa pliku z dźwiekiem wystrzału.
  • SOUND_TYPE n - typ dźwieku.
  • SEL_XY x y - położenie paska z pojemnością (używany tylko przy komorach transportowych).
  • ROTATE_TYPE - tryb rotacji narzędzia. Dostępne typy: [FREE - dowolny obrót np. karabin maszynowy, FREE_GYRO - dowolny obrót np. laser, LIMITED - ograniczony obrót np. karabin gatlinga, FIRM - brak obrotu np. podwójny laser, ROTATE - automatyczny obrót np. radar, BULLDOZER - brak obrotu np. buldożer, HEAD - brak obrotu np. mastodont]
  • SIGHT n - zasięg widzenia.
  • WEIGHT min max - dopuszczalna waga podwozia na jakim może być zamontowane wyposażenie.
  • ATTACK - otwiera sekcje tylko dla wyposażenia zadającego obrażenia.
  • MINMAX_RANGE min max - zasięg minimalny, maksymalny bronii.
  • FREQUENCY b r - gdzie b oznacza ilość wystrzeliwanych pocisków przy jednym wystrzale, r oznacza czas przeładowania pomiędzy strzałami.
  • DAMAGE h v b - obrażenia zadawane: h - jednostkom żywym, v - pojazdom, b - budynkom.
  • EFF h v b - obrażenia wyświetlane na interfejsie jednostki.
  • ANIM - identyfikator animacji, unikalny.
  • END_OF_ATTACK - kończy sekcje ataku.
  • PRODUCE_IN - numer budynku wymaganego do produkcji danego wyposażenia.
  • TECHNOLOGY - numer technologii wymaganej do produkcji wyposażenia.
  • MODIFY_CHASSIS - definiuje czy broń modyfikuje wygląd podwozia.
  • CARGO_SIZE n - definiuje pojemność komory (tylko dla komór transportowych) gdzie n oznacza ilość skrzynek np. CARGO_SIZE 10 oznacza że pojazd może zabrać do 100 jednostek surowca.
  • BASE_WEAPON n - broń bazowa, umożliwia kopiowanie unikalnych właściwości bronii o numerze n. Przydante gdy chcemy stworzyć nowy dźwig.

To tyle jeśli chodzi o omówienie struktury vehicles.txt. Zachęcam jednak aby samemu przestudiować poszczególne fragmenty aby lepiej budowę tego pliku.



Dodajemy nowe wyposażenie

Nadszedł najwyższy moment aby dodać własne unikalne wyposażenie. W tym przypadku wspólnie dodamy dużą komorę rosyjską do naszego moda. Ustawimy jej pojemność na 200 jednostek.

Pierwszy krokiem jest odnalezienie fragmentu kodu odpowiadającego za zwykły rosyjski transporter.

Po odnalezieniu go kopiujemy cały blok kodu.

Następnie przechodzimy pod koniec pliku i wklejamy kod po bloku poświęconemu rosyjskiemu uchwytowi na bombę syberytową.

Zmieniamy identyfikator na Heavy Cargo Bay oraz dodajemy parametr CARGO 20. Cały fragment powinnien wyglądać następująco: WEAPON_TYPE 89 NAME "E(Heavy Cargo bay)C(Heavy Cargo bay)" NATION Russian SYMBOL n-cargo OIL 0 SIBERIUM 0 CANS 50 TIME 35 SOUND_NAME none SOUND_TYPE 0 SEL_XY 0 0 ROTATE_TYPE Firm MODIFY_CHASSIS 1 SIGHT 9 WEIGHT 3 3 PRODUCED_IN 19 CARGO_SIZE 20

Oczywiście numer bronii jest dowolny ale nie może on przekroczyć liczby 100 ani też wykorzystywać zajętej już liczby. Zapisujemy zmiany i zamykamy plik.

Kolejnym zadaniem jest dodanie przetłumaczonej nazwy nowego wyposażenia. Aby to zrobić otwieramy Data1.owp i wypakowywujemy plik VehicleNames z Data/GameInit i oraz folder #pol. Całość wklejamy do tego samego folderu co vehicles.txt.

Po wykonaniu operacji otwieramy VehicleNames w głównym folderze GameInit. Znajdują się tam nazwy części pojazdów w języku angielskim. Natomiast VehicleNames w folderze #pol zawiera nazwy w języku polskim.

W pierwszym pliku dodajemy tą linijkę: Weapon 89 "Heavy Cargo Bay", natomiast w drugim tą: Weapon 89 "Ciężka komora transportowa".

Od tej chwili możemy się cieszyć nową jednostką!