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

29/04/2017 20:23
Moi drodzy, niewykluczone, że za tydzień ukaże się długo wyczekiwany remake TLU Wink

29/04/2017 09:48
Eee Druid, modrzew to "za dobre drzewko" do tamtej komisji, bo tam najlepiej czułaby się lipa... Grin Ps: po majówce chyba zobaczymy się na serwie (nie obiecuję) Pozdrawiam.

29/04/2017 08:29
Cześć Modrzew. Mówisz „lepszy w te klocki”, no to na 100 % miejsce eksperta w pewnej komisji już czeka. Grin

28/04/2017 16:21
To jestem lepszy w te klocki niż niejeden tupolew Grin

28/04/2017 12:32
Ominęły cię dwie wierzby i trzy sosny. hy hy Grin

28/04/2017 06:43
Cześć wszystkim! Co mnie ominęło? Pfft

24/04/2017 20:44
"Punkty chwały" zostały naliczone do Polskiego Rankingu. Proszę sprawdźcie, czy gdzieś się nie pomyliłem. Wink

24/04/2017 18:39
Teraz o wiele lepiej GrinD

24/04/2017 17:00
Pewien twórca? pewien user? Wiem że tak trochę ból tyłka z mojej strony ale co tam Grin

23/04/2017 12:05
Dzięki, zaraz napisze

 
Wygenerowano w sekund: 0.04
4,715,758 unikalnych wizyt