02 Tworzymy erę Jak już wspomniałem, Wesnoth wymaga tylko pliku
_main.cfg. Co prawda istnieją też inne pliki np.
_server.pbl, których szuka, ale nie są one obowiązkowe, ani nie będą ci na razie do niczego potrzebne. A co z tym całym śmietnikiem, to jest masą folderów i plików jakie zawierają inne dodatki? Zapomnij o nich! Nie są do niczego potrzebne. Jedyne czego potrzebujesz do szczęścia to
_main.cfg.
Otwieramy
_main.cfg w edytorze tekstu. W Wesnoth używamy głównie języka WML (ale w pewnych przypadkach można korzystać też z lua). WML opiera się gównie na tak zwanych znacznikach, dzięki którym gra będzie wiedzieć czego od niej chcemy. Znaczniki najpierw otwieramy
[znacznik], a potem zamykamy
[/znacznik]. Między znacznikami możemy, a często wręcz musimy sprecyzować czego dokładnie chcemy. Dokonamy tego ustawiając wartości kluczy (czym jest klucz wyjaśnię dalej).
W swoim kodzie (tekście), możesz używać do woli spacji, tabulatora i entera, byle tylko nie dzielić wyrazów, a ustawianie wartości klucza powinno odbywać się w jednej linijce.
Czas użyć znaczników
[era].
Kod źródłowy
[era]
[/era]
W ten oto sposób dodaliśmy do gry nową erę. By nasza era działała poprawnie, brakuje jeszcze kilku rzeczy, które musimy wpisać między znacznikami. Przyda się dokumentacja:
https://wiki.wesn...org/EraWML. Niezbędne będą klucze
id oraz
name. Wpisujemy między znacznikami nazwę klucza, potem
=, na końcu wartość jaką chcemy mu ustawić.
Dla większego porządku, między każdymi znacznikami warto robić wcięcia tabulatorem.
id będzie nazwą ery niewidoczną dla gracza. Dzięki id będziemy mogli odwoływać się do naszej ery w kodzie.
name to nazwa naszej ery wyświetlana w grze.
Kod źródłowy
[era]
id = MojaEra
name = "Moja Era"
[/era]
Zwróć uwagę, że każda wartość dla klucza, która nie jest id (albo liczbą), powinna być w cudzysłowach ””.
Dodajmy teraz do naszej ery dwie strony konfliktu: Elfy i Nieumarłych. Makro
{RANDOM_SIDE} pozwoli na wybranie losowej frakcji.
Makro to nic innego jak gotowy kawałek kodu spakowany do postaci jednego wyrazu pomiędzy znakami
{}. Zamiast pisać całą serię znaczników i kluczy, możemy skorzystać właśnie z makr, żeby zaoszczędzić czas i skorcić kod. Krótszy kod łatwiej jest ogarnąć. Tutaj znajduje się spis wszystkich makr w Wesnoth:
https://www.wesno...ence.xhtml, jak by co. Na razie jednak nie ma potrzeby do niego zaglądać.
Nową stronę konfliktu dodamy znacznikiem
[multiplayer_side]. Niezbędne nam będą klucze
id i
name, działające podobnie jak w przypadku ery. Musimy ustalić jaki kolor na jednostkach będzie podmieniany na kolor gracza. Problem załatwi za nas to makro:
{MAGENTA_IS_THE_TEAM_COLOR}. Raczej nigdy nie trafi ci się sytuacja, w której nie miałbyś go użyć.
Kod źródłowy
[era]
id = MojaEra
name = "Moja Era"
{RANDOM_SIDE}
[multiplayer_side]
id = Elfy
name = "Elfy"
{MAGENTA_IS_THE_TEAM_COLOR}
[/multiplayer_side]
[multiplayer_side]
id = Nieumarli
name = "Nieumarli"
{MAGENTA_IS_THE_TEAM_COLOR}
[/multiplayer_side]
[/era]
leader to id jednostki przywódcy. Id jednostek możemy znaleźć pod tym adresem:
https://units.wes.... Można dodać więcej jednostek oddzielając je przecinkiem.
recruit to lista dostępnych do rekrutacji jednostek.
Kod źródłowy
[era]
id = MojaEra
name = "Moja Era"
{RANDOM_SIDE}
[multiplayer_side]
id = Elfy
name = "Elfy"
{MAGENTA_IS_THE_TEAM_COLOR}
leader = Elvish Lord
recruit = Elvish Archer
[/multiplayer_side]
[multiplayer_side]
id = Nieumarli
name = "Nieumarli"
{MAGENTA_IS_THE_TEAM_COLOR}
leader = Dark Sorcerer, Skeleton
recruit = Walking Corpse
[/multiplayer_side]
[/era]
Teraz możesz już uruchomić grę i zobaczysz, że twoja era działa.

Brakuje jeszcze tylko obrazków reprezentujących frakcje. Dodamy je za pomocą kluczy
image. Obrazki znajdziemy w folderze z zainstalowaną grą w folderze
data/core/images. Jako wartość klucza image podajemy brakującą ścieżkę do obrazka, czyli np. "units/orcs/archer.png".
Kod źródłowy
[era]
id = MojaEra
name = "Moja Era"
{RANDOM_SIDE}
[multiplayer_side]
id = Elfy
name = "Elfy"
{MAGENTA_IS_THE_TEAM_COLOR}
leader = Elvish Lord
recruit = Elvish Archer
image = "units/elves-wood/avenger+female-sword-1.png"
[/multiplayer_side]
[multiplayer_side]
id = Nieumarli
name = "Nieumarli"
{MAGENTA_IS_THE_TEAM_COLOR}
leader = Dark Sorcerer, Skeleton
recruit = Walking Corpse
image = "units/undead/shadow-s-attack-4.png"
[/multiplayer_side]
[/era]

Na koniec, dobrym zwyczajem było by objąć naszą erę za pomocą warunku preprocesora. Kod preprocesora to kod wykonywany PRZED kodem WML. Są to specjalne wyrazy użyte po znaku
#. Jeśli po znaku
# nie użyjesz jednego z wyrazów specjalnych, gra nie zgłosi błędu a reszta linijki zostanie po prostu pominięta. Dla tego znak
# również służy do zostawiania komentarzy w kodzie. Dodajmy
#ifdef MULTIPLAYER na początku naszego kodu i
#ednif na końcu. Po co? Ten kod mówi grze, że ma załadować wszystko co jest pomiędzy
#ifdef i
#endif (czyli naszą erę) jeśli rozpoczynamy grę w trybie wielu graczy. Takie warunki pozwalają uniknąć ładowania elementów naszego dodatku, kiedy nie są potrzebne.
Kod źródłowy
#ifdef MULTIPLAYER
[era]
id = MojaEra
name = "Moja Era"
{RANDOM_SIDE}
#Pierwszy komentarz. Pod spodem frakcja elfów.
[multiplayer_side]
id = Elfy
name = "Elfy"
{MAGENTA_IS_THE_TEAM_COLOR}
leader = Elvish Lord
recruit = Elvish Archer
image = "units/undead/avenger+female-sword-1.png"
[/multiplayer_side]
#Drugi komentarz. Poniżej mamy frakcję nieumarłych.
[multiplayer_side]
id = Nieumarli
name = "Nieumarli"
{MAGENTA_IS_THE_TEAM_COLOR}
leader = Dark Sorcerer, Skeleton
recruit = Walking Corpse
image = "units/undead/shadow-s-attack-4.png"
[/multiplayer_side]
[/era]
#endif
Autor: Smok