Od 1.12 w edytorze map pojawiła się nowa funkcja -
edytor scenariuszy. Po wybraniu opcji "New Scenario" ("Nowy Scenariusz") pojawi nam się mapa, niby taka sama jak zwykła, ale będziemy mogli definiować obszary, strony, czas i muzykę (od 1.13 również umieszczać grafiki przedmiotów takich jak skrzynie, monety czy znaki, oraz dodawać do scenariusza nazwę, id i kilka innych podstawowych opcji). Poza tym, po stworzeniu strony odblokujemy opcje dodawania jednostek i przypisywania wiosek. Ale tutaj spotka nas niespodzianka - widzimy tylko jednostki z ery domyślnej (w chwili pisania tego artykułu bardzo niewiele dodatków dodaje jednostki w nim się znajdujące do edytora map, a wiedza na ten temat zdaje się być niewielka nawet na oficjalnym forum). Jak jednak zrobić, żeby tam były? Da się w ogóle? Niestety, pliki gry milczą na ten temat. Pewną podpowiedzią jest wczytanie folderu multiplayer przy ładowaniu edytora, jednak jak się okazuje chodzi jedynie o ery i scenariusze, nie o jednostki.
Sprawa jest jednak prosta. Cofnijmy się do przykładowego pliku
_main.cfg ery znajdującego się w poradniku z naszej strony. Po wyrzuceniu z niego kilku niepotrzebnych (komentarze, powtórzenia, wczytywanie folderów bez plików .cfg) bądź mało potrzebnych (tłumaczenia) linijek wygląda on tak:
[binary_path] path=data/add-ons/Moja_Era [/binary_path] #ifdef MULTIPLAYER #define MOJA_ERA_SIDE ERA FACTION {~add-ons/Moja_Era/factions/{ERA}-{FACTION}.cfg} #enddef {~add-ons/Moja_Era/Moja_Era_Eras.cfg} #undef MOJA_ERA_SIDE {~add-ons/Moja_Era/images} {~add-ons/Moja_Era/macros} [units] {~add-ons/Moja_Era/units} {~add-ons/Moja_Era/units/frakcja1} [/units] #endif |
Na początku tego pliku dodajemy nową ścieżkę do grafik, muzyki, itp, w niczym ona zazwyczaj nie zawadza, stąd ten kawałek kodu wykonuje się już przy wczytywaniu gry. Cała reszta znajduje się między
#ifdef MULTIPLAYER a
#endif. Oznaczają one, że nasza era wczyta się przy ładowaniu gry wieloosobowej, i tylko wtedy. Czyli w edytorze nie.
Stąd wniosek: załadujmy nasze jednostki do edytora. Kopiujemy cały blok multiplayer i wklejamy poniżej. Potem zmieniamy
#ifdef MULTIPLAYER na
#ifdef EDITOR (oczywiście tylko ten nowy, wklejony, inaczej dla odmiany nie będziemy mogli w erę zagrać). Ery w trybie edytora nie są nam do niczego potrzebne - pozbądźmy się odpowiadających za nie linijek. Nasz nowy plik _main.cfg powinien wyglądać jakoś tak:
[binary_path] path=data/add-ons/Moja_Era [/binary_path] #ifdef MULTIPLAYER #define MOJA_ERA_SIDE ERA FACTION {~add-ons/Moja_Era/factions/{ERA}-{FACTION}.cfg} #enddef {~add-ons/Moja_Era/Moja_Era_Eras.cfg} #undef MOJA_ERA_SIDE {~add-ons/Moja_Era/macros} [units] {~add-ons/Moja_Era/units} {~add-ons/Moja_Era/units/frakcja1} [/units] #endif #ifdef EDITOR {~add-ons/Moja_Era/macros} [units] {~add-ons/Moja_Era/units} {~add-ons/Moja_Era/units/frakcja1} [/units] #endif |
Można trochę to zmodyfikować definiując to, co jest wczytywane w obu przypadkach jako makro, co pozwoli uniknąć zmieniania pliku w dwóch miejscach kiedy np. dodamy nową frakcję, ale w tym przypadku wiele nie zaoszczędzimy, a kod może stać się nieco mniej czytelny.
Po uruchomieniu powinniśmy zobaczyć swoje jednostki w edytorze. Ale jeżeli stworzyliśmy własne rasy, to zauważymy inny problem - nie będą one miały ikonek. Da się je dodać? Da się. Tym razem nie będzie to wymagało żadnej wiedzy programistycznej. Wewnątrz folderu images naszej ery tworzymy folder icons. Wewnątrz folderu icons tworzymy folder unit-groups. Do folderu
unit-groups wkładamy ikonki (domyślne znajdują się w folderze
Battle for Wesnoth <wersja>/images/icons/unit-groups), po czym zmieniamy ich nazwy na
race_ID_rasy_30.png lub
race_ID_rasy_30-pressed.png, na przykład
race_human_30-pressed.png. Wersja
-pressed dotyczy grafik, jakie są wyświetlane gdy zakładka z daną rasą jest aktywna.
Dobrym przykładem umieszczenia jednostek w edytorze jest Era of Myths.
~Jarom