05 Dodawanie nowych map Tym razem umieścimy w naszym dodatku nową mapę, w którą będzie można zagrać w trybie wielu graczy.
Nie będę tłumaczył obsługi edytora map, bo jest on bardzo prosty. Kiedy stworzysz już swoją mapę (na potrzeby poradnika możesz użyć dowolnej mapy, nawet takiej z samą trawą), nie zapomnij umieścić pozycji startowych i zapisać (swoją nazwałem
mapa).
Umieszczamy mapę w naszym dodatku W folderze dodatku stwórz folder na mapy (u mnie to będzie
maps) i umieść w nim swoją mapę. Oczywiście, mapę możesz równie dobrze umieścić bezpośrednio w folderze dodatku, ale żeby uniknąć bałaganu zalecam segregować rzeczy w odpowiednich folderach. Samo umieszczenie mapy w dodatku jednak nie wystarczy. Musisz stworzyć scenariusz, by gra wiedziała co z tą mapą zrobić. Istnieją dwa typy scenariuszy. Tworzymy je znacznikami
[scenario] oraz
[multiplayer]. Scenariusze typu
[scenario] są nie widoczne w grze i mogą posłużyć do stworzenia kampanii. My jednak zajmiemy się drugim typem. Dzięki użyciu
[multiplayer] zamiast
[scenario], nasz scenariusz pojawi się na liście dostępnych map. Dodaj znaczniki
[multiplayer] między
#ifdef i
#enddef, gdzieś obok naszej ery. Musimy podać kilka niezbędnych informacji o naszej mapie. Dokumentację znajdziesz tutaj:
https://wiki.wesn...cenarioWML. Użyj kluczy
id i
name, które już wiesz co oznaczają. W kluczu
description podamy opis naszej mapy.
map_data to ścieżka do mapy wyglądająca tak:
{~add-ons/<reszta_ścieżki>}.
Kod źródłowy
[multiplayer]
id = MojaMapa
name = _ "2p - MojaMapa"
description = _ "Opis"
map_data = "{~add-ons/MojDodatek/maps/mapa.map}"
[multiplayer]
Mapę już można uruchomić, ale nie będzie na niej muzyki ale ani pór dnia. Dodamy je makrami
{DEFAULT_SCHEDULE} i
{DEFAULT_MUSIC_PLAYLIST}. Aby nasza mapa nie zaczynała się zawsze o świcie, dodamy
random_start_time=yes.
Kod źródłowy
[multiplayer]
id = MojaMapa
name = _ "2p - MojaMapa"
description = _ "Opis"
map_data = "{~add-ons/MojDodatek/maps/mapa.map}"
{DEFAULT_SCHEDULE}
{DEFAULT_MUSIC_PLAYLIST}
random_start_time=yes
[/multiplayer]
W ten sposób w grze pojawiła się mapa, która funkcjonuje dodobnie do domyślnych.
Robimy porządki w dodatku Nasz cały kod w
_main.cfg wygląda tak:
Kod źródłowy
#textdomain wesnoth-MojDodatek
[textdomain]
name="wesnoth-MojDodatek"
path="data/add-ons/MojDodatek/translations"
[/textdomain]
#ifdef MULTIPLAYER
[era]
id = MojaEra
name = _"My Era"
{RANDOM_SIDE}
#Pierwszy komentarz. Pod spodem frakcja elfów.
[multiplayer_side]
id = Elfy
name = _"Evles"
{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 = _"Undead"
{MAGENTA_IS_THE_TEAM_COLOR}
leader = Dark Sorcerer, Skeleton
recruit = Walking Corpse
image = "units/undead/shadow-s-attack-4.png"
[/multiplayer_side]
[/era]
[multiplayer]
id = MojaMapa
name = _ "2p - MojaMapa"
description = _ "Opis"
map_data = "{~add-ons/MojDodatek/maps/mapa.map}"
{DEFAULT_SCHEDULE}
{DEFAULT_MUSIC_PLAYLIST}
random_start_time=yes
[/multiplayer]
#endif
Zrobił się trochę długi. Jak tak dalej pójdzie, będziesz musiał scrollować pół dnia, żeby coś w nim znaleźć. Podzielimy sobie kod naszego dodatku na więcej plików. Stwórz folder
multiplayer. W nim plik
MojaMapa.cfg. To tu umieścimy sobie nasz scenariusz. Wytnij znaczniki
[multiplayer] razem z zawartością i wklej do
MojaMapa.cfg. Możesz dodać też
#textdomain wesnoth-MojDodatek na początek.
Dodanie #textdomain wesnoth-MojDodatek w pliku _main.cfg zwalnia z konieczności umieszczania go w innych plikach. Jeśli zdecydowałeś się korzystać akurat z WesPo, musisz zawsze dodawać #textdomain wesnoth-MojDodatek na początek pliku, by program go nie pomiął.
Żeby gra wiedziała gdzie szukać naszego kodu należy użyć
{~add-ons/MojDodatek/multiplayer} w miejscu gdzie wcześniej był kod. Dzięki temu przeszuka folder
multiplayer i wykona WSZYSTKIE pliki
.cfg jakie w nim znajdzie. Oto co teraz mamy:
_main.cfg
Kod źródłowy
#textdomain wesnoth-MojDodatek
[textdomain]
name="wesnoth-MojDodatek"
path="data/add-ons/MojDodatek/translations"
[/textdomain]
#ifdef MULTIPLAYER
[era]
id = MojaEra
name = _"My Era"
{RANDOM_SIDE}
#Pierwszy komentarz. Pod spodem frakcja elfów.
[multiplayer_side]
id = Elfy
name = _"Evles"
{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 = _"Undead"
{MAGENTA_IS_THE_TEAM_COLOR}
leader = Dark Sorcerer, Skeleton
recruit = Walking Corpse
image = "units/undead/shadow-s-attack-4.png"
[/multiplayer_side]
[/era]
{~add-ons/MojDodatek/multiplayer}
#endif
MojaMapa.cfg
Kod źródłowy
#textdomain wesnoth-MojDodatek
[multiplayer]
id = MojaMapa
name = _ "2p - MojaMapa"
description = _ "Opis"
map_data = "{~add-ons/MojDodatek/maps/mapa.map}"
{DEFAULT_SCHEDULE}
{DEFAULT_MUSIC_PLAYLIST}
random_start_time=yes
[/multiplayer]
Zrób podobnie z kodem ery. Umieść go w folderze
eras w pliku
MojaEra.cfg. Efekt końcowy:
_main.cfg
Kod źródłowy
#textdomain wesnoth-MojDodatek
[textdomain]
name="wesnoth-MojDodatek"
path="data/add-ons/MojDodatek/translations"
[/textdomain]
#ifdef MULTIPLAYER
{~add-ons/MojDodatek/eras}
{~add-ons/MojDodatek/multiplayer}
#endif
MojaMapa.cfg
Kod źródłowy
#textdomain wesnoth-MojDodatek
[multiplayer]
id = MojaMapa
name = _ "2p - MojaMapa"
description = _ "Opis"
map_data = "{~add-ons/MojDodatek/maps/mapa.map}"
{DEFAULT_SCHEDULE}
{DEFAULT_MUSIC_PLAYLIST}
random_start_time=yes
[/multiplayer]
MojaEra.cfg
Kod źródłowy
#textdomain wesnoth-MojDodatek
[era]
id = MojaEra
name = _"My Era"
{RANDOM_SIDE}
#Pierwszy komentarz. Pod spodem frakcja elfów.
[multiplayer_side]
id = Elfy
name = _"Evles"
{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 = _"Undead"
{MAGENTA_IS_THE_TEAM_COLOR}
leader = Dark Sorcerer, Skeleton
recruit = Walking Corpse
image = "units/undead/shadow-s-attack-4.png"
[/multiplayer_side]
[/era]
Autor: Smok