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,085
-> Najnowszy użytkownik: ekexine
 
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ść.

25/06/2017 11:21
@Hejne chociaż bajkę ,,sąsiedzi,, lubię. Lepsze to jak np. wieści z naszego sejmu, a w sumie to prawie jedno i to samo... Grin Jestem na serwerze. Wbijajcie. Wink

25/06/2017 10:45
Króla lwa, krecika, muminków i tego typu horrorów. Grin Dla mnie jeden link na rok wystarczy jbc, bo jakbym chciał więcej Shock, to mam toto w TV. Pfft Gra ktoś? Wink

25/06/2017 06:33
XD

25/06/2017 00:21
A kiedyś dawno króla lwa nie było? Może to nie tu i tylko mi się zdaje rżę (że) ( to się liczy za 3 czy za 2 błędy? Grin ) tu.

24/06/2017 23:17
@Hejnewar, dodałem kilka zdań w temacie turnieju EEaW jakbyś był ciekawy. Wink @Elder, ale Disney-a na sb to My jeszcze chyba nie słuchaliśmy. Grin Spoko. Wink

24/06/2017 13:06

24/06/2017 11:03
@Piko być może żeby opuścić serwer to Ja rzeczywiście potrzebuję do tego czyjejś aprobaty. Grin Dobra nie drążmy tego. Wbijajcie na serwer. Wink

24/06/2017 10:54
Oj Elder w żywiole. Grin Jak ten zły craken mógł ci tak zrujnować grę, ehhhh... A nie przeszło ci przez myśl tzw. "Let it go"? Grin

24/06/2017 08:42
@Elder lubisz bawić się w nadinterpretacje. Grin Kto jeszcze się nie zdecydował na start w turnieju igorbata99, to jbc jest jeszcze czas do 1.07. Cool

24/06/2017 08:35
udawało, no ja tego nie pojmuje XD. No ja chciałem to skończyć wcześniej XD

 
Wygenerowano w sekund: 0.04
4,852,474 unikalnych wizyt