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

-> Użytkowników online: 0

-> Łącznie użytkowników: 2,099
-> Najnowszy użytkownik: Gaara
 
Linki

















Polecane portale

Sygnaturki i buttony wesnoth.com.pl


 
6a. Scenariusze - część 3
Tworzenie scenariuszy - cz. 3.

Akcje i ich rodzaje:

Wiesz już jak zrobić event i precyzyjnie określić, kiedy ma być aktywowany. Teraz poznasz całą masę przeróżnych akcji, które w połączeniu z eventami pozwolą Ci stworzyć Twój własny, wymarzony scenariusz.

Podział akcji:

Istnieją 3 różne kategorie akcji w WML:

Akcje:
bezpośrednie - akcje te widać w grze, np. stworzenie jednostki, koniec scenariusza.
pośrednie - akcje pośrednie są niewidoczne w grze, np. stworzenie zmiennej.
interfejsu - nie wpływają na rozgrywkę i służą do wyświetlania różnych informacji na ekranie.

Omówię teraz różne akcje należące do poszczególnych kategorii. Nie będzie to jednak bardzo szczegółowa rozpiska. Pomijam niektóre niezwykle rzadko stosowane parametry. Dla wszystkich zainteresowanych pogłębieniem swojej wiedzy poza tym tutorialem polecam oficjalną rozpiskę tagów WML (po ang.) na stronie: http://wiki.wesnoth.org/ReferenceWML

Wskazówka: Jeśli powracasz na tą stronę aby sprawdzić interesujący Cię tag, możesz użyć kombinacji klawiszy ctrl+f w swojej wyszukiwarce, aby go szybko odnaleźć w treści dokumentu.


Akcje bezpośrednie:


[endlevel]
Kończy scenariusz. Opcje:
result - wynik misji, może się równać: victory (zwycięstwo) lub defeat (porażka)
next_level - tu wpiszemy id scenariusza, do którego przeniesiemy się po wygraniu obecnego.
bonus - czy gracz ma dostać nagrodę w złocie za wcześniejsze skończenie scenariusza (yes/no) (domyślnie yes)
carryover_report - czy graczowi ma zostać pokazane podsumowanie scenariusza (yes/no) (domyślnie yes)
linger_mode - czy po zakończeniu misji natychmiast rozpoczyna się kolejna (wartość - no), czy może ma być pauza i to gracz ma ręcznie kliknąć aby kontynuować nowy scenariusz (yes). (domyślnie yes)
carryover_percentage - ile procent złota ma być przeniesione do następnego scenariusza? (domyślnie 80)


[recall]

Przywołuje weterana z poprzedniego scenariusza (za darmo!). Przywołany weteran pojawia się domyślnie przy liderze.
(filtr - [filter]) - określający, którą jednostkę przywołać z listy
x,y - jednostka jest przyzywana na konkretnym heksie o współrzędnych x,y zamiast przy liderze
show - czy jednosta ma się pojawić nagle (no) czy ma wyświetlać animację rekrutacji? (yes) (domyślnie yes)


[terrain]
zmienia typ terenu na określonych filtrem heksach
terrain - kod terenu na jaki ma zmienić. Aby wiedzieć jaki kod ma interesujący Cię typ terenu, otwórz edytor map i naciśnij "i" - pokażą Ci się literki na heksach. Te literki to właśnie kody terenu. Dla trawy będzie to więc "Gg" a dla głębokiej wody "Wog".
(filtr - [filter_location]) - służy do znalezienia terenu jaki mamy zmienić, może zawierać takie pozycje jak x,y (konkrente współrzędne), terrain (konkretny typ terenu do podmiany) czy [fliter] - dla określenia pod jaką jednostką ziemia ma się zmienić. Filtr ten zostanie szczegółowo omówiony w innym poradniku.


[gold]
Daje określonej drużynie złoto.
amount - ilość
side - strona, której ma dać (domyślnie 1), może być listą oddzielaną przecinkiem, np. 1,2 dla strony pierwszej i drugiej


[allow_recruit]
pozwala określonej stronie rekrutować określoną nową jednostkę.
type - a więc ID jednostki, lub jednostek (oddzielanych przecinkiem), które mają być od teraz możliwe do rekrutacji.
side - strona, której to dotyczy (domyślnie 1)


[disallow_recruit]
zabrania określonej stronie rekrutowania określonej jednostki.
type - a więc ID jednostki, lub jednostek (oddzielanych przecinkiem), które staną się niemożliwe do rekrutacji.
side - strona, której to dotyczy (domyślnie 1)


[set_recruit]
podmienia listę rekrutów dla określonej strony (skuteczne, gdy chcemy szybko zmienić wiele pozycji)
recruit - lista ID jednostek, które strona będzie mogła rekturtować (zastępuje starą!)
side - strona, której to dotyczy (domyślnie 1)


[modify_side]
zmienia pewne ustawienia dla konkretnej strony jak, np. dochód z wiosek, kto nią steruje, czy widzi mgłę itp.
side - strona, której to dotyczy (domyślnie 1)
income - zmienia przychód na turę strony
gold - ustawia ile złota ma strona
village_gold - ustawia nowy przychód z wiosek dla strony
controller - kto teraz steruje - człowiek, komputer, nikt - (human/ai/null)
fog - czy widzi mgłę, czy nie - prawda/fałsz (true/false)
shroud - czy widzi całun czy nie - prawda/fałsz (true/false)
color - zmienia kolor drużyny, wartości: red, blue, green, brown, orange, purple, black, white


[modify_turns]
Zmienia limit tur w trakcie scenariusza
value - nowy limit
add - dodaje/odejmuje określoną liczbę tur


[kill]
Usuwa jednostkę lub jednostki, spełniające odpowiednie kryteria (dotyczy to również jednostek na liście do przywołania z poprzedniego scenariusza!)
(filtr) - kryteria określające, które jednostki usunąć (uwaga: nie stosujemy tu [filter] tylko piszemy od razu).
animate - czy animować śmierć jednostki (domyślnie yes), w przeciwnym razie jednostka znika natychmiast
fire_event - czy śmierć jednostki w ten sposób ma aktywować event dotyczący jej śmierci (w innym miejscu scenariusza)? (yes/no)


[petrify]
Zamienia jednostkę/jednostki w kamień.
(filtr) - kryterium (nie trzeba używać [filter] - piszemy bezpośrednio)


[unpetrify]
Odczarowywuje jednostkę z bycia posągiem.
(filtr) - kryterium (nie trzeba używać [filter] - piszemy bezpośrednio)


[heal_unit]
Leczy jednostkę, przywraca punkty ruchu i ataku
(filtr -[filter]) - wszystkie spełniające kryteria jednostki zostaną uleczone.
amount - wartość uleczenia - nie może być mniejsza od jeden i większa od maksymalnej liczby punktów życia. Jeśli ustawiona na paramter "full", leczy maksimum punktów życia.
moves - przywraca jednostce/jednostkom określoną ilość punktów ruchu, warunki podobne jak wyżej.
restore_attacks - czy ma przywrócić ataki jednostce (yes/no). Domyślnie no.
restore_statuses - czy ma przywrócić statusy (dotyczy zatrucia, spowolnienia, skamienienia). (yes/no) Domyślnie yes.


[harm_unit]
Zadaje obrażenia jednostce/jednostkom.
(filtr -[filter]) - wszystkie spełniające kryteria jednostki zostaną zranione.
amount - ilość obrażeń, jaka zostanie zadana
damage_type - jeśli podany, dostarczy grze informacji jaki to rodzaj obrażeń i dzięki temu jednostka będzie mogła wykorzystać swoje odporności w trakcie zadawania obrażenia. Wartości: impact, pierce, blade, fire, cold, arcane (obuchowy, kłuty, sieczny, ogień, chłód, tajemny).
kill - czy jeśli obrażenia będą śmiertelne dla jednostki (większe od jej obecnego hp), to czy ma zabić jednostkę, czy zachować z 1 hp. (yes/no). Domyślnie yes.
animate - czy ma animować jednostkę/jednostki (np. centrować na każdej kolejno widok i zadawać obrażenia), czy zadać obrażenia wszystkim naraz bez animacji. (yes/no). Domyślnie no.
delay - jeśli animate=yes to delay będzie oznaczało odstęp w milisekundach pomiędzy kolejnymi jednostkami objętymi działaniem obrażenia.
poisoned, slowed, petrified - czy ma zatruć, spowolnić lub zamienić w kamień oprócz zadania obrażeń.


[end_turn]
Natychmiast kończy turę gracza.

[replace_map]
Podmienia CAŁĄ mapę w trakcie gry.
map - ścieżka do nowej mapy
expand - czy ma powiększyć obecne rozmiary mapy w razie potrzeby, gdy nowa mapa będzie większa (yes/no)
shrink - czy ma zmniejszyć obecne rozmiary mapy w razie potrzeby, gdy nowa mapa będzie mniejsza (yes/no)
Jeśli mapa zostanie zmniejszona, to wszystkie jednostki, które były na utraconych pozycjach lądują na liście od przywołania.


[replace_schedule]
Podmienia tryb dnia i nocy na nowy, tu podany.


Pomocne makra:
Makra te bardzo ułatwiają życie twórcom, oferując czasem bardzo skomplikowane działania w postaci jednej, prostej linijki kodu. Każdy MUSI je znać, albo przynajmniej wiedzieć o ich istnieniu, aby nie tracić czasu, obmyślając wszystko od zera.

Jednostki:
{UNIT STRONA TYP X Y (WML)}
tworzy jednostkę na mapie. To makro zostało omówione w cz.1 poradnika o scenariuszach.

{TELEPORT_UNIT FILTR X Y}
teleportuje jednostkę opisaną przez filtr do heksa x,y

{TELEPORT_TILE STARY_X STARY_Y NOWY_X NOWY_Y}
teleportuje jednostkę na starym heksie do heksa nowego. Przydatne do robienia stałych teleportów.

{MOVE_UNIT FILTR X Y}
Przemieszcza określoną jednostkę opisaną przez filtr do heksa o współrzędnych x,y. Jeśli heks jest zajęty, to przemieści jednostkę do najbliższego wolnego.

{MODIFY_UNIT FILTR PARAMETR WARTOŚĆ}
potężne makro do szybkiego zmieniania cech jednostek. Przykład:
{MODIFY_UNIT type=Spearman side 2} - zmienia wszystkich włóczników, aby należeli do gracza nr 2.

{ADVANCE_UNIT FILTR ID}
awansuje wszystkie pasujące jednostki na nowy typ (id), a jeśli nie jest podany, na ich odpowiednie awanse. Przykład:
{TRANSFORM_UNIT type=Spearman Cavalryman} - awansuje wszystkich włóczników w jeźdźców.

{FULL_HEAL FILTR}
szybko leczy określoną jednostkę/jednostki do pełni zdrowia.

{PUT_TO_RECALL_LIST FILTR}
usuwa jednostkę z mapy i umieszcza z powrotem na liście przywołania


Wioski:

{STARTING_VILLAGES STRONA ZASIĘG}
przydatne makro, które sprawia, że już na starcie scenariusza konkretny gracz ma przejęte wioski w określonym zasięgu od lidera. Aby zadziałać, musi być umieszczone poza wszelkimi eventami.

{STARTING_VILLAGES_AREA STRONA X Y ZASIĘG}

podobne makro do poprzedniego z tą różnicą, że przejmuje wioski na starcie na określonym obszarze na mapie a nie wokół lidera

{CAPTURE_VILLAGES STRONA X Y ZASIĘG}
przejmuje automatycznie wioski dla konkretnego gracza na określonym obszarze wokół podanego heksa.

{STARTING_VILLAGES_ALL STRONA}

już na starcie przejmuje wszystkie wioski dla określonego gracza

{TRANSFER_VILLAGE_OWNERSHIP DAWCA BIORCA}

przenosi własność wszystkich wiosek gracza dawcy dla gracza biorcy


Rekrutacja:
{LIMIT_RECRUITS STRONA ID LIMIT}
określa ile jednostek określonego typu strona będzie mogła zrekrutować w całym scenariuszu, np.:
{LIMIT_RECRUITS 2 Spearman 1} - gracz 2 będzie mógł kupić tylko jednego włócznika na całą rozgrywkę.

{LIMIT_CONTEMPORANEUS_RECRUITS STRONA ID LIMIT}
makro podobne do poprzedniego, z tą różnicą, że jeśli liczba jednostek dla gracza spadnie poniżej limitu, znów będzie on mógł je kupić.


Muzyka:

{DEFAULT_MUSIC_PLAYLIST}
ustawia domyślną, standardową ścieżkę dźwiękową dla scenariusza.

{SCENARIO_MUSIC UTWÓR}
ustawia muzykę dla scenariusza. Przykład: {SCENARIO_MUSIC northern_mountains.ogg} Makro to powinno być ustawione poza wszelkimi eventami. Pliki z muzyką z Wesnoth znajdują się w katalogu głównym BfW a dokładnie w: data/core/music

{REPLACE_SCENARIO_MUSIC UTWÓR}
zmienia muzykę w trakcie scenariusza.




To by było na tyle, jeśli chodzi o te najważniejsze makra dotyczące akcji bezpośrednich. Dla tych, którym to niewystarcza polecam stronę (po ang.): http://www.wesnoth.org/macro-reference.html


W razie jakichkolwiek pytań dotyczących programowania akcji zapraszam do Warsztatów.

W następnym odcinku omówione zostaną akcje pośrednie, a więc wszelkiego rodzaju działania niewidoczne w grze ale mające dla niej ogromne znaczenie (manipulacja zmiennymi, zapisywanie i odczytywanie danych ze zmiennych). Oprócz tego omówione zostaną również warunki, które w połączeniu z eventami pozwolą Ci stworzyć pełne przygód i możliwości scenariusze ;)
Komentarze
#1 | BAN Gibki Kaktus dnia lipiec 31 2012 12:29:08
Przydatne, kiedy następny tutorial?
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! 75% [3 głosów]
Bardzo dobre Bardzo dobre 25% [1 głos]
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ść.

17/08/2017 00:11
Lub dla 3 (głupie 0) 2,4km=hex 500/2,4=208,3

17/08/2017 00:09
500/3,2=156,25. Wink

17/08/2017 00:08
30km/h to trochę za dużo. Grin Tura to 4 godziny (6tur =1 dzień) piechota ma 5 ruchów (regularne wojsko) idzie z prędkością powiedźmy 4km/h. 4*4=16 16/5= 3,2 km=hex.

16/08/2017 23:54
Grin

16/08/2017 23:36
Wprowadźcie łowców niewolników XD

16/08/2017 23:33
Poza podpaleniem proponuję stworzyć jeszcze jeden efekt specjalny. Zaraza: jeżeli 90% jednostek przeciwnika jest tego samego typu, to wszystkie umierają.

16/08/2017 23:31
Ja tam się cieszę, że jestem w grupie eoma

16/08/2017 23:31
@Hejnewar ja to między bajki włożę.

16/08/2017 22:34
No to jak mogę atakować statki w walce wręcz w takim razie? Ps. 500km to 20,8(3)hexa.

16/08/2017 22:16
@Hejne zedytowałem, żeby łatwiej tobie było całą metaforę tamtego wpisu zrozumieć. Dobranoc

 
Wygenerowano w sekund: 0.02
4,994,288 unikalnych wizyt