Witaj Wesnothańczyku
Zobacz temat
 Drukuj temat
WML- pytania i odpowiedzi
Jarom
Spróbuj dodać pusty tag [inspect][/inspect] i sprawdź czy event w ogóle się uruchamia.
 
kasim
Niestety nadal nie działa
 
Jarom
Zrób tak:
Pobierz kod źródłowy  Kod źródłowy
#define ABILITY_LOOTER
[dummy]
id=looter
name= _ "looter"
description= _ "If looter capture village they get 3 gold."
[/dummy]
[/abilities]
[event]
name=capture
[filter]
ability=looter
[/filter]
[inspect]
[/inspect]
[gold]
amount=3
side=$unit.side
[/gold]
[/event]
[+abilities]
#enddef


i sprawdź czy działa.
Edytowane przez Jarom dnia 08-05-2017 21:31
 
kasim
Wielkie dzięki Jarom, już działa.
 
thomasso_calgori
Ja mam pytanie, które zdaje się, zadałem już jakiś czas temu, ale nie mogę go znaleźć, oraz nie jestem też pewien czy może cokolwiek się nie zmieniło. Dodatkowo doszło mi drugie, na pewno wykonalne.

Otóż:
1. czy jest możliwość wprowadzenia takiej opcji w kodzie, żeby jednostka potrafiła atakować na odległość? Przy czym mam tu na myśli prawdziwą odległość, np. przez pół mapy, nie zbliżając się nawet do przeciwnika. (potrzebne mi to do moda inspirowanego World of Tanks, taka ciekawostka)

2. jak wprowadzić jednostce opcję rekrutowania? W jednym z modów (Infinity) spotkałem się z możliwością budowania wieżyczek przez pewną jednostkę, co wyglądało w z grubsza podobny sposób co rekrutacja. Jednostki pojawiały się dookoła jednostki rekrutującej.

Z góry dziękuję za odpowiedź!
 
Smok
1) To pytanie pada dość regularnie na oficjalnym forum. Odpowiedź: da się. Chyba najłatwiej to zrobić przez [set_menu_item] i [hurt_unit].

2) Ustaw jednostce atrybut can_recruit, czy jakoś tak, lub jeśli chcesz rekrutować poza twierdzą użyj [set_menu_item] i [unit].
Edytowane przez Smok dnia 11-05-2017 17:19
 
Jarom
Małe sprostowanie: [harm_unit] nie [hurt_unit].

Inną implementację ataku dystansowego, niestety dość mocno opóźniającą działanie gry, można znaleźć w New Settlers.

Klucz canrecruit (pisane łącznie) tworzy po prostu kolejnego lidera, co niesie za sobą znacznie więcej niż tylko możliwość rekrutacji w zamkach.
Edytowane przez Jarom dnia 11-05-2017 19:28
 
kasim
mam pytanie. wsadziłem to na koniec kodu jednostki(to ma działać tak że przy werbunku COSS_1czern ma losować czy pojawi nię ta jednostka, czy inna jej wersja):
Pobierz kod źródłowy  Kod źródłowy
[event]
      name = prerecruit
      first_time_only = no
      [filter]
         type = COSS_1czern
      [/filter]
      [kill]
         x,y = $x1,$y1
         animate = no
         fire_event = no
      [/kill]
      {RANDOM "COSS_1czern, COSS_2czern, COSS_3czern, COSS_4czern, COSS_5czern "}
      [unit]
         x,y = $x1,$y1
         side = $side_number
         attacks_left = 0
         moves = 0
         type = $random
      [/unit]
   [/event]



i nie działa. Gdy wylosuje pierwszą jednostkę to ją wystawia normalnie, ale jak wylosuje dowolną inną jednostkę to wyskakuje nieznany typ jednostki. Za pomoc z góry dziękuje.
 
Jarom
A jak zaimplementowałeś inne warianty? Bo do użycia tego sposobu trzeba osobno stworzyć jednostki o id COSS_2czern, COSS_3czern itd.
 
kasim
są zrobione w osobnych plikach i dodane i _main.cfg
 
Smok
Bąd pewnie leży nie w tym kodzie, ale mainie. Pewnie te inne jednostki są źle dodane.
Edytowane przez Smok dnia 21-05-2017 14:25
 
Maksiu
Mam pytanie:
Da się zaprogramować nową zdolność ataku (tak się chyba to nazywa), która sprawiałaby że jednostka przeciwnika (jeśli zostanie trafiona), nie ma żadnego punktu ataku ani ruchu (w swojej turze) a nad trafioną jednostką pojawia się jakaś mała grafika?
Jeśli się da, powiedziałby ktoś jak to zrobić? Pfft
"Dragon Blade wcale nie opuścił forum. [...] To że z kilkoma osobami ma na pieńku, w tym między innymi ze mną, nie oznacza, że się tutaj nie liczy. Udowadniał to nie raz robiąc też dobre rzeczy i nie mowa tu wyłącznie o jego umiejętnościach graficznych." - Sulik
Moja pracownia:http://www.wesnot...post_28706
 
Smok
Nie mam teraz dostępu do komputera, wiec nie pokaże przykładowego kodu, ale postaram się wyjaśnić ogólną zasadę.
Tworzysz standardowo dummy abilitkę, będzie mieć dwa eventy. W pierszym, podczas trafienia atakiem z tą umiejętnością nadajesz trafionej jednostce status stuned, czy jak go tam sobie nazwiesz. Możesz użyć też [unit_overlay], jeśli chcesz nadać ikonkę. W drugim (side turn) szukasz jednostek obecnego gracza (side = $side_number) z statusem stuned i ustaiwasz im ruch i ataki na 0, po czym usuwasz status. Ikonkę usuwasz za pomocą [remove_unit_overlay].
Edytowane przez Smok dnia 30-05-2017 10:01
 
inferno8
Na podobnej zasadzie działa umiejętność anti-sails z EEaW, z tą różnicą, że ogranicza ruch jednostek. Ale struktura kodu będzie zbliżona.
 
Maksiu
Hmmm dzięki za szybką odpowiedź, ale tak szczerze niezbyt rozumiem to co napisałeś @Smok, jakbyś napisał jednak przykładowy tekst byłbym bardzo wdzięczny. Smile

Sprawdzę tą zdolność z EEaW Smile

I mam jeszcze jedno pytanie, gdzie tą zdolność wstawić, folder "utlis" czy jakiś inny trzeba zrobić? (w kampanii).
"Dragon Blade wcale nie opuścił forum. [...] To że z kilkoma osobami ma na pieńku, w tym między innymi ze mną, nie oznacza, że się tutaj nie liczy. Udowadniał to nie raz robiąc też dobre rzeczy i nie mowa tu wyłącznie o jego umiejętnościach graficznych." - Sulik
Moja pracownia:http://www.wesnot...post_28706
 
Jarom
Kod bardzo bliski temu, co chcesz osiągnąć, znajdziesz w ostatniej TE, w utils, freeze.cfg. Usuwa wszystkie punkty ruchu. Zwróć tylko uwagę, że ikonka, taka jak przy spowolnieniu, wymaga pliku lua.cfg.

Czy ma być w utils? Tak jest najlepiej. Z drugiej strony ważne jest tylko, żeby było wczytane kiedy jest potrzebne. Jeżeli ma to mieć tylko jedna jednostka, to równie dobrze możesz odpuścić sobie makro i wrzucić bezpośrednio, ale nie polecam, bo kodu jest dużo. Innymi słowy, folder nie ma znaczenia, byle kod był załadowany zanim będzie potrzebny (czyli, jak podejrzewam, przed wczytywaniem jednostek).
 
Maksiu
@inferno8: Zdolności anti-sails nie znalazłem, nie wiem gdzie szukać.
@Jarom: Zdolność freeze znalazłem, ale kod przekracza moje umiejętności programistyczne, nie rozumiem tych eventów.
A można dodać coś innego niż jest w podstawie? (o ile dobrze pamiętam w deuflacie jest jakiś ślimak), bo chciałbym dać taką grafikę jaką prezentuję poniżej (i, o ile to możliwe, aby jednostka która oberwie taką zdolnością, nie miała żadnej animacji oddechu ani znudzenia - aby była w pełni sparaliżowana).
Maksiu dodał/a następującą grafikę:
stun.gif

"Dragon Blade wcale nie opuścił forum. [...] To że z kilkoma osobami ma na pieńku, w tym między innymi ze mną, nie oznacza, że się tutaj nie liczy. Udowadniał to nie raz robiąc też dobre rzeczy i nie mowa tu wyłącznie o jego umiejętnościach graficznych." - Sulik
Moja pracownia:http://www.wesnot...post_28706
 
Piko
To co chcesz wykonać jest w 100% możliwe - zrobiłem coś podobnego w erze Shadowborn. Mianowicie umiejętność Curse. Ja ci niestety tego nie zaprogramuję z powodu braku czasu, ale założę się że Jarom da radę jeżeli ładnie go poprosisz.
 
inferno8
Anti-sails jest w folderze abilities w pliku naval.cfg. Z tego co pamiętam status jest ustawiany tam na 2 tury.

Ta grafika jest możliwa do wstawienia jako animowany overlay - dodaje się go przez tag [object][effect]apply_to=overlay

Co do zatrzymania animacji jednostki, to jedyne co mi do głowy przychodzi to zrobić osobną 1-klatkową animację "idle" z filtrem, który aktywuje się w określonych sytuacjach (to już zaawansowana rzecz)
 
Piko
Ja natomiast proponuję wszystkie klatki animacji poza pierwszą przekopiować do zmiennych, po czym usunąć. W evencie zakończenia statusu, zostałyby one przywrócone do normalnego działania.
 
Przejdź do forum:
Wygenerowano w sekund: 0.19
10,882,060 unikalne wizyty