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: 3

-> Użytkowników online: 0

-> Łącznie użytkowników: 2,107
-> Najnowszy użytkownik: ytosuco
 
Ankieta
Jak oceniasz najnowszą odsłonę Władców Taktyk 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ść.

19/10/2017 00:09
@Druid, a tak z innej beczki Grin , to zajrzyj do akademii. Cool Spokojnej nocki. Wink

18/10/2017 22:47
- w nagrodę i będziesz widział kogo "spójników" tutaj uczysz. Grin Nie ma tego złego, bo te "korepetycje" poprawiły znacznie Twoje własne pisanie... Grin Nie sądzisz? Pfft ...

18/10/2017 22:44
@Jarom, cieszę się, że "wiele błędów crakena puszczasz bez echa" i nie wiercisz się nerwowo w fotelu przed monitorem jak je widzisz Grin, a jak będziesz grzeczny, to dam tobie mojego fb w nagr

18/10/2017 20:28
@Jarom To trochę pewnie uspokoiłeś crakena i te jego "tęsknoty", będą odrobinę mniejsze. Grin Tylko nie wiem czy doceni komplement „odniosły skutek” . Grin

18/10/2017 18:50
Spokojnie Jarom, spokojnie. Grin

18/10/2017 17:59
@Piko wiele błędów crakena puszczam bez echa bo nie przeszkadzają w czytaniu tekstu. Ale wstawienie dodatkowego wyrazu to nie jest błąd podpadający pod mózgową autokorektę.

18/10/2017 17:57
logiki. Chyba że po prostu zacząłeś pisać o rzeczach, o których masz jakiekolwiek pojęcie i stąd ta poprawa.

18/10/2017 17:55
@craken tyle twoich wpisów, a większość nie do mnie. Czyżbyś spodziewał się, że będę próbował wyłapać każdy źle postawiony przecinek? Poza tym moje działania odniosły skutek, twoje wypowiedzi nabrały

18/10/2017 17:27
@craken1 Skoro tak szybko działasz, to wstępne info co do terminów i nie tylko, Wink jest już w Akademii. Cool Wyczuwam też Twoją "tęsknotę" za Jaromem. Grin

18/10/2017 12:45
@Jarom tyle moich wpisów i żadnej analizy. Shock Czyżbyś w końcu któryś z nich zrozumiał? Wink Zaczynam się o to niepokoić. Grin @Druid, będę dziś na serwerze po 22.00. Cool

 
Wygenerowano w sekund: 0.03
5,197,889 unikalnych wizyt