Witaj Wesnothańczyku
Nawigacja
-> Poradniki dla graczy
-> Poradniki dla twórców
-> Zrzuty ekranu
-> Komendy do BfW
-> Ladder of Wesnoth
-> JAK NIE DOSTAĆ BANA?
-> Kodeks strony
-> Kanały IRC
-> Darczyńcy
-> Galeria
-> Kontakt
-> Szukaj

-> Władcy Taktyk
-> Polski Ranking Graczy

-> Era Magii
-> Eastern Europe at War
-> Forgotten Legends
-> Nowy Porządek
-> Ku Nieznanym Krainom
 
Aktualnie online
-> Gości online: 1

-> Użytkowników online: 0

-> Łącznie użytkowników: 2,036
-> Najnowszy użytkownik: Borubar
 
Ankieta
Która drużyna wygra turniej 2vs2 2016/2017?















Musisz zalogować się, aby móc zagłosować.
 
Linki

















Polecane portale

Sygnaturki i buttony wesnoth.com.pl


 
4. Scenariusze - część 1.
Tworzenie scenariuszy - część 1.

Scenariusz to nic innego jak pojedyncza misja w kampanii lub zaawansowana mapa do gry wieloosobowej. Poprzez scenariusz możemy umieścić na naszej mapie jednostki, dialogi bohaterów, pułpapki, wydarzenia, nowe cele misji i wiele, wiele innych. Scenariusz daje Ci prawie nieograniczone możliwości tworzenia własnej przygody.

Programowanie scenariuszy wymaga od nas znajomości WML (Wesnoth Markup Language) czyli języka programowania tej gry. Jest on bardzo prosty w obsłudze jednak dość obszerny. Poznanie wszystkich jego możliwości może zająć trochę czasu, ale nie jest konieczne, jeśli chcemy tworzyć w miarę proste scenariusze. Sporym ułatwieniem są tzw. makra, czyli bardzo użyteczne formułki zastępujące ogromne fragmenty kodu. Dla początkujących twórców jest to wielkie ułatwienie z którego będziemy często korzystać w dalszych częściach poradnika.

Tworzenie scenariusza wieloosobowego z bajerami:
W poprzednim tutorialu nauczyłeś się robić scenariusze wieloosobowe do własnych map. Dzięki temu mogłeś określić ustawienia dla różnych graczy, tworzyć opisy do map i nadawać im ulepszone tytuły.
Teraz dowiesz się jak tchnąć życie w taki scenariusz. Oto nasz przykładowy scenariusz bez bajerów:


[multiplayer]
id=moj_scenariusz
name= _ "2p - Moj Scenariusz"
map_data="{add-ons/Moj_Dodatek/mapka.map}"
description= _ "To moj scenariusz multiplayer na dwóch graczy z dodatkowymi bajerami"

{DEFAULT_SCHEDULE}
{DEFAULT_MUSIC_PLAYLIST}

[side]
side=1
canrecruit=yes
controller=human
team_name=north
user_team_name= _ "teamname^North"
gold=150
village_gold=2
fog=yes
[/side]
[side]
side=2
canrecruit=yes
controller=human
team_name=south
user_team_name= _ "teamname^South"
gold=150
village_gold=2
fog=yes
[/side]
[/multiplayer]

Jak widać jest to typowy scenariusz na dwóch graczy z domyślnym cyklem dnia i nocy, z normalną ścieżką dźwiękową i z aktywną mgłą - nudy. Trzeba to zmienić! A może dodamy parę jednostek do mapy dla każdej ze stron? W edytorze map nie można tego zrobić ale tu jak najbardziej. Skorzystamy tu z makra dodającego jedną jednostkę na określoną pozycję na mapie:

{UNIT STRONA TYP X Y WML}

Przykładowo pierwszej stronie (side=1) damy Smoczego Mistrza Ognia i umieścimy go na pozycji 2,4:
{UNIT 1 "Drake Blademaster" 2 4 ()}

Objaśnienie:
1 to numer strony konfliktu
"Drake Blademaster" to typ jednostki (id w jej pliku .cfg). Jeśli nie znamy id jednostki możemy podpatrzeć je na tej stronie: link
2 4 to nasze współrzędne x i y na mapie na których ma pojawić się jednostka
() to miejsce na nasz dodatkowy kod wml, który modyfikowałby jednostkę. Na razie jest nam to niepotrzebne, ale gdybyśmy chcieli, aby nasz smoczek miał 1 punkt życia to wpiszemy w te nawiasy to: hitpoints=1

Tak uzupełnione makro wstawiamy do scenariusza. Możemy je umieścić gdzie chcemy, ja natomiast umieszczam je pomiędzy [side][/side] strony do której jednostka ma należeć. Wtedy mam porządek w pliku.

Dajmy jeszcze stronie 2 np. Wróżkę Elfów na pozycję 10,5. Oto jak wygląda nasz plik:


[multiplayer]
id=moj_scenariusz
name= _ "2p - Moj Scenariusz"
map_data="{add-ons/Moj_Dodatek/mapka.map}"
description= _ "To moj scenariusz multiplayer na dwóch graczy z dodatkowymi bajerami"

{DEFAULT_SCHEDULE}
{DEFAULT_MUSIC_PLAYLIST}

[side]
side=1
canrecruit=yes
controller=human
team_name=north
user_team_name= _ "teamname^North"
gold=150
village_gold=2
fog=yes
{UNIT 1 "Drake Blademaster" 2 4 ()}
[/side]
[side]
side=2
canrecruit=yes
controller=human
team_name=south
user_team_name= _ "teamname^South"
gold=150
village_gold=2
fog=yes
{UNIT 2 "Elvish Shyde" 10 5 ()}
 [/side]
[/multiplayer]

Warto teraz zapisać i zagrać w taką mapkę. Powinniśmy zauważyć, że na starcie mamy nie tylko swojego bohatera ale i dodatkową jednostkę, którą właśnie dodaliśmy.

Wiesz już jak dodawać jednostki. Teraz zajmijmy się porami dnia i nocy.

Mamy makro:
{DEFAULT_SCHEDULE} (domyślny cykl dnia i nocy). Makro to składa się z kilku mniejszych makr:
{DAWN} - świt
{MORNING} - ranek
{AFTERNOON} - popołudnie
{DUSK} - zmierzch
{FIRST_WATCH} - noc cz.1
{SECOND_WATCH} - noc cz.2

Możemy wykorzystać te informacje i zastąpić makro {DEFAULT_SCHEDULE} właśnie tymi mniejszymi makrami i ułożyć z nich własny cykl, a nawet pousuwać określone pory tak aby nigdy nie występowały. Równie dobrze możemy zrobić jedną porę np. zmierzch. Wtedy napiszemy zamiast {DEFAULT_SCHEDULE} samo makro {DUSK}.

Ja w swoim przykładzie wydłużę domyślny cykl tak aby każda pora trwała 2 tury. Zastąpię więc {DEFAULT_SCHEDULE} czymś takim:
[multiplayer]
id=moj_scenariusz
name= _ "2p - Moj Scenariusz"
map_data="{add-ons/Moj_Dodatek/mapka.map}"
description= _ "To moj scenariusz multiplayer na dwóch graczy z dodatkowymi bajerami"

{DAWN}
{DAWN}
{MORNING}
{MORNING}
{AFTERNOON}
{AFTERNOON}
{DUSK}
{DUSK}
{FIRST_WATCH}
{FIRST_WATCH}
{SECOND_WATCH}
{SECOND_WATCH}

{DEFAULT_MUSIC_PLAYLIST}

[side]
side=1
canrecruit=yes
controller=human
team_name=north
user_team_name= _ "teamname^North"
gold=150
village_gold=2
fog=yes
{UNIT 1 "Drake Blademaster" 2 4 ()}
[/side]
[side]
side=2
canrecruit=yes
controller=human
team_name=south
user_team_name= _ "teamname^South"
gold=150
village_gold=2
fog=yes
{UNIT 2 "Elvish Shyde" 10 5 ()}
 [/side]
[/multiplayer]

Teraz mój scenariusz ma własny, rozszerzony cykl dnia i nocy. Robi się ciekawie. A może na zakończenie zrobimy dodatkowy warunek zwycięstwa?Wieczne załatwianie przywódcy wroga może być nudne. Wymyślmy coś nowego i prostego. Powiedzmy, że dodatkowym warunkiem wygrania na naszej mapie będzie dojście do heksa 5,5. Kto pierwszy tam dotrze wygrywa scenariusz (trochę to głupie, ale za to łatwe do zaprogramowania).

Aby stworzyć nowy warunek zwycięstwa potrzebujemy event'u. O tym cudzie będę pisał w następnej części, dlatego od razu pokażę jak będzie wyglądał nasz nowy cel misji w WML'u:

[event]
name=moveto

[filter]
x,y=5,5
[/filter]

[endlevel]
result=victory
[/endlevel]
[/event]


Wystarczy, że umieścimy go np. w następnej linijce pod [/side]. Teraz musimy jedynie powiedzieć graczowi o istnieniu dodatkowego warunku zwycięstwa:

    [event]
name=prestart

[objectives]
[objective]
description= _ "Pokonaj przywodce wroga"
condition=win
[/objective]
[objective]
description= _ "lub dostan sie do 5,5"
condition=win
[/objective]
[/objectives]
[/event]
Wrzucamy to pod nasz poprzedni event.

Wypadałoby jeszcze pokazać na mapie, który heks to 5,5. Możemy to zrobić poprzez umieszczenie takiego obrazka:
gohere.png

Korzystamy z makra umieszczającego obrazki na mapie:

{PLACE_IMAGE ŚCIEŻKA X Y}

W tym przypadku:
{PLACE_IMAGE "items/gohere.png" 5 5}

Umieszczamy to z poziomu [multiplayer] (tzn. nie wstawiamy tego wewnątrz [event], [side] itp.). Ja dałem to na koniec pliku nad [/multiplayer] ale pod [/event].

Oto jak teraz wygląda nasz scenariusz:
[multiplayer]
id=moj_scenariusz
name= _ "2p - Moj Scenariusz"
map_data="{add-ons/Moj_Dodatek/mapka.map}"
description= _ "To moj scenariusz multiplayer na dwóch graczy z dodatkowymi bajerami"

{DAWN}
{DAWN}
{MORNING}
{MORNING}
{AFTERNOON}
{AFTERNOON}
{DUSK}
{DUSK}
{FIRST_WATCH}
{FIRST_WATCH}
{SECOND_WATCH}
{SECOND_WATCH}

{DEFAULT_MUSIC_PLAYLIST}

[side]
side=1
canrecruit=yes
controller=human
team_name=north
user_team_name= _ "teamname^North"
gold=150
village_gold=2
fog=yes
{UNIT 1 "Drake Blademaster" 2 4 ()}
[/side]
[side]
side=2
canrecruit=yes
controller=human
team_name=south
user_team_name= _ "teamname^South"
gold=150
village_gold=2
fog=yes
{UNIT 2 "Elvish Shyde" 10 5 ()}
 [/side]

[event]
     name=moveto

     [filter]
           x,y=5,5
     [/filter]

     [endlevel]
           result=victory
     [/endlevel]

[/event]

[event]
name=prestart
[objectives]
[objective]
description= _ "Pokonaj przywodce wroga"
condition=win
[/objective]
[objective]
description= _ "lub dostan sie do 5,5"
condition=win
[/objective]
[/objectives]

[/event]

{PLACE_IMAGE "items/gohere.png" 5 5}

[/multiplayer]

Tak wygląda scenariusz z dodatkowymi jednostkami na starcie, rozszerzonym cyklem dnia i nocy oraz dodatkowym warunkiem zwycięstwa. Prawda, że proste? Miłego eksperymentowania ;)

W następnym odcinku zajmiemy się już wspomnianymi eventami oraz innymi rzeczami jak dialogi i filtry.
Komentarze
#1 | Kuki1537 dnia grudzień 11 2010 16:52:22
!!!SUPER!!! Będę mógł teraz dokończyć mój MapPack!
#2 | ygbut dnia grudzień 12 2010 11:17:26
Dałbym 4,(9) Gdyby byłaby taka ocena. Inferno zapomniałeś o jednym drobnym szczególe. Co początkujący mają wpisać, żeby był całun? Ja oczywiście nie oceniam, bo nie wiem jak on się przyda początkującym.
EDIT: I jeszcze zapomniałem dodać, że nie podałeś ścieżki, gdzie są "dodatkowe elementy", bo niektórym może się przydać, np. drogowskaz lub zniszczone budynki.
EDIT: Inferno, a czy można dodawać własne elementy?
#3 | inferno8 dnia grudzień 12 2010 12:57:02
Całun? Pisałem o tym w poprzednim tutorialu. Zerknij sobie Wink
Co do innych elementów terenu, to znajdziecie je w folderze images gry, lub w tym samym folderze wewnątrz własnego dodatku (dzięki temu można umieszczać własne obrazki).
#4 | inferno8 dnia grudzień 12 2010 18:54:58
Przecież pliki .cfg jednostek masz na własnym dysku. Battle for Wesnoth/data/core/units <- tam są wszystkie jednostki z domyślnej.
#5 | Sylar dnia grudzień 18 2010 15:02:55
Super, Inferno8! (Nie super Inferno, tylko super poradnik). Właśnie będzie mi to potrzebne do mojego drugiego mappacka.
#6 | Kopernik dnia marzec 21 2013 19:58:22
No, to coś ciekawego chyba zacznę dodatki robić.
#7 | blackkate80 dnia styczeń 09 2017 13:32:11
nie da się ukryć że programistom dodatek łatwiej opanować... Wink

---
kleje rozpuszczalnikowe
Dodaj komentarz
Zaloguj się, aby móc dodać komentarz.
Oceny
Tylko zarejestrowani użytkownicy mogą oceniać zawartość strony

Zaloguj się lub zarejestruj, żeby móc zagłosować.

Świetne! Świetne! 67% [6 głosów]
Bardzo dobre Bardzo dobre 33% [3 głosów]
Dobre Dobre 0% [Brak oceny]
Średnie Średnie 0% [Brak oceny]
Słabe Słabe 0% [Brak oceny]
Logowanie
Nazwa użytkownika

Hasło



Nie masz jeszcze konta?
Zarejestruj się

Nie możesz się zalogować?
Poproś o nowe hasło
 
Shoutbox
Musisz zalogować się, aby móc dodać wiadomość.

23/02/2017 22:59
Ale jeżeli Kalfat się wciągnie to daj mu samemu odkryć grę, zobaczymy ile straci postaci. Grin

23/02/2017 22:55
Jak co to załóż temat w offtopie jeżeli chcesz pogadać, bo masz zwyczaj zaśmiecania czatu. Pfft

23/02/2017 22:55
Wstręt w drużynie to niby utrudnienie? Na necie krążą team compy z 3 Abominacjami na raz.

23/02/2017 22:53
I w sumie NG+ też nie było jakieś straszne 4 osoby mi umarły nie licząc tych w DD pod koniec.

23/02/2017 22:52
Ale wciąż da się wyrwać za 35zł http://www.ceneo..
..
http://www.ceneo..
..

23/02/2017 22:52
DD myślałem że będzie trudniejsze. Co prawda nie grałem na no vesel, no light, abomination if u can, ale na standardzie poszło mi dość gładko. Za to FTLa przeszedłem tylko kilka razy...

23/02/2017 22:50
No i jak zaczniesz grać w DD to będę mógł cię co wieczór oglądać. Grin Tylko musisz pokombinować ze znalezieniem dobrej ceny, bo zniżki się skończyły.

23/02/2017 22:46
Spróbuj trafić w trochę szerszą niszę, to ludzie spoza strony też będą oglądać. Pfft

23/02/2017 22:21
Wielkie dzięki za feedback, miło usłyszeć wykończony całym dniem że ktoś jednak ogląda Grin

23/02/2017 22:20
spokojnie, jak znajdę 5min żeby odsłuchać siebie to zobaczę co i jak. Dzisiaj to od 6:00 do 22:00 na nogach praktycznie, ale daje radę Cool

 
Wygenerowano w sekund: 0.14
4,556,615 unikalnych wizyt