Witaj Wesnothańczyku
Zobacz temat
 Drukuj temat
WML- pytania i odpowiedzi
AxeFighter
Problem wyżej rozwiązałem robiąc po prostu dwie umiejki, fear i hope. Teraz wyskakuje z kolejnym pytaniem: jak zrobić, by lider danego rodzaju dostawał traita, tak jak w przypadku krasnoludów w defaulcie? Zależy mi na tym, gdyż chcę wstawić jednostkę piesza z 7 pkt ruchu jako lidera i chciałbym ją spowolnić traitem "wolny".
Edytowane przez AxeFighter dnia 23-06-2013 22:34
 
http://wesnoth.com.pl
Dunno
tak na szybko:
Pobierz kod źródłowy  Kod źródłowy

[event]
name=turn 1
   [modify_unit]
      [filter]
      canrecruit=yes
      type=typ
      [/filter]
   tutaj idzie trait wolny
   [/modify_unit]
[/event]




Już czwarty rok bez podpisu!
 
AxeFighter
Dobra, kolejne pytanko względem tego wyżej. Jak daje ten event to lider nie ma max hp przy rozpoczęciu. Próbowałem wrzucić efekt z amli, ale to nic nie dało. Ma ktoś jakiś pomysł?
 
http://wesnoth.com.pl
Dunno
huh, wątpię żeby ten event miał jakikolwiek wpływ na hp. Wstaw cały kod scenariusza, ok? Może coś wypatrzymy Smile
Już czwarty rok bez podpisu!
 
AxeFighter
Tyle, ze chodzi o to, że robię erę, daję lidera dla gracza z 7 pkt ruchu, spowalniam go skryptem (w pliku jednostki), by zachować balans, jednak ten dodatkowy punkt hp (powolny daje -1 do ruchu i +5% do hp) jest dodawany do maksymalnej wartości, jednak nie do aktualnej, co wygląda w ten sposób, że gra się zaczyna, a lider ma 28/29 hp. Czy da się zaskryptować, by jednostka była leczona w 1 turze?
Edytowane przez AxeFighter dnia 25-06-2013 17:24
 
http://wesnoth.com.pl
Piko
Jasne że da się. Kod prawie jak tamten:

Pobierz kod źródłowy  Kod źródłowy
[event]
name=turn 1
   [modify_unit]
      [filter]
      canrecruit=yes
      type=typ
      [/filter]
      hitpoints=$this_unit.max_hitpoints
   [/modify_unit]
[/event]


 
AxeFighter
Działa, Piko, jesteś wielki, od teraz w mojej erze mnich będzie mógł być liderem Grin
 
http://wesnoth.com.pl
Dunno
PS: lider z 6 punktami ruchu jest nadal OP Pfft
Już czwarty rok bez podpisu!
 
Elensefar
Dunno napisał/a:
PS: lider z 6 punktami ruchu jest nadal OP Pfft


Deoran w Południowej Straży ma też 6 (na 3 lvl'u 8) punktów ruchu, więc o co ci chodzi? Smile

"Głupota ludzka jest jak wyobraźnia- nie zna granic"

Elensefar
 
AxeFighter
Dunno mówił o multiplayerze... Życzę mu szczęścia w przekonaniu Guurahka, który upiera się, że konnica z 9 pkt ruchu nie jest za mocna... Taki już oftop.

Edit: 300 post.
Edytowane przez AxeFighter dnia 26-06-2013 20:20
 
http://wesnoth.com.pl
ForPeace
A ja mam problem z GB. Kilkunastu jednostkom ustawiłem coś takiego:
Pobierz kod źródłowy  Kod źródłowy
[unit]
side=4
        type=tu Strzelec
   x=43
   y=17
     role=attack_when_sighted
[/unit]




W evencie start:

Pobierz kod źródłowy  Kod źródłowy
[set_variable]
         name=turks_sighted
         value=0
     [/set_variable]




Pobierz kod źródłowy  Kod źródłowy
[event]
name=moveto
[filter]
x,y=24,13
id=Jan_III_Sobieski
[/filter]
[message]
 message=_"Rozejrzyjmy sie..."
 speaker=Jan_III_Sobieski
[/message]
[modify_side]
side=1
fog=no
[/modify_side]
     [set_variable]
         name=turks_sighted
         value=1
     [/set_variable]
[/event]



Pobierz kod źródłowy  Kod źródłowy
[event]
name=sighted
[filter]
side=4 #strona Kary Mustafy (Turkowie)
[/filter]
     [set_variable]
         name=turks_sighted
         value=1
     [/set_variable]
[/event]




Event, który powinien powodować zmniejszanie MP do 0 przed zobaczeniem Turków.
Pobierz kod źródłowy  Kod źródłowy
[event]
name=side turn
 [if]
    [variable]
       name=turks_sighted
       equal=0
    [/variable]
    [then]
     [store_unit]
  [filter]
role=attack_when_sighted
  [/filter]
  variable=cann
[/store_unit]
{FOREACH cann i}
[set_variable]
  name=cann[$i].moves
  value=0
[/set_variable]
[unstore_unit]
  variable=cann[$i]
  find_vacant=no
[/unstore_unit]
{NEXT i}
first_time_only=no
    [/then]
 [/if]

[/event]




I to wszystko ogółem nie działa. Proszę o pomoc.

Edit. Poradziłem sobie.
Pobierz kod źródłowy  Kod źródłowy
[event]
name=side turn
[if]
 [variable]
   name=turks_sighted
   equal=0
  [/variable]
    [then]
[modify_unit]
[filter]
role=attack_when_sighted
[/filter]
moves=0
[/modify_unit]
   [/then]
[/if]
[/event]



Edytowane przez ForPeace dnia 01-04-2015 17:59
Mój ladderowy profil

"10 lat mówisz? Jak ja mówię że gram 10 lat to przychodzą ludzie i mówią że grali 15 i nic się nie znam na tej grze bo nie grałem jak PRAWDZIWI prosi grali. xD" ~Hejnewar
 
AxeFighter
Głupie pytanko: jak zrobić event, który wsadzimy do [era] w pliku ery, by odblokować np. awans lisza na starożytnego lisza? Jest to mi bardzo potrzebne, więc liczę na pomoc. Wink
Ja zaczynałem jako zwykły, napalony user, pisałem często newsy. Bach! Redaktor! Więc niebywale uradowany, pisałem jeszcze więcej, dodatkowo artykuły. Nie ma co, byłem nadpobudliwy wtedy... A jak zostałem mianowany adminem, to z początku w ogóle nie chciałem nim być! Byłem przestraszony odpowiedzialnością. Bo mnie nie kręciły tytuły, tylko Wesnoth. - Sagez

https://www.youtu...QuObfTx6Cg - link zaktualizowany!
 
http://wesnoth.com.pl
Jarom
A nie lepiej użyć #define ENABLE_ANCIENT_LICH?
 
AxeFighter
Całkowicie zapomniałem o tym tagu, dzięki. jednak jak go wsadzić, by działał? Przeszukiwałem ReferenceWML pół godziny i sposobu nie znalazłem.
Ja zaczynałem jako zwykły, napalony user, pisałem często newsy. Bach! Redaktor! Więc niebywale uradowany, pisałem jeszcze więcej, dodatkowo artykuły. Nie ma co, byłem nadpobudliwy wtedy... A jak zostałem mianowany adminem, to z początku w ogóle nie chciałem nim być! Byłem przestraszony odpowiedzialnością. Bo mnie nie kręciły tytuły, tylko Wesnoth. - Sagez

https://www.youtu...QuObfTx6Cg - link zaktualizowany!
 
http://wesnoth.com.pl
Jarom
Sprawdziłem, niestety nie da się tego zrobić bo #ifdefy są wykonywane na początku. Natomiast jest to:
Pobierz kod źródłowy  Kod źródłowy
[unit_type]
    id=Ancient Lich a
    [base_unit]
        id=Ancient Lich
    [/base_unit]
    [advancefrom]
        unit=Lich
    [/advancefrom]
[/unit_type]



i działa.
Edytowane przez Jarom dnia 22-04-2015 08:52
 
Warlord
Jak rozumiem tutaj mogę was zapytać o pomoc dotyczącą niedziałającego kodu i czekać na odpowiedź?
A co jeśli poproszę was o stworzenie kodu? Chciałem stworzyć zdolność, która sprawi, że po zabiciu jednostki wroga, nasza jednostka uleczy sobie kilka punktów życia. Tak na chłopski rozum to wziąłbym tag regeneracji plus kilka filtrów, ale właśnie na filtrowaniu się specjalnie nie znam.
Konkretnie co ma robić zdolność:
Po zabiciu żywej, wrogiej jednostki, postać z tą umiejętnością wyleczy (jeśli jest co leczyć) 2 punkty życia razy poziom pokonanej jednostki (czyli zero za zerowy, dwa za pierwszy, 4 za drugi etc., chociaż zastanawiam się czy za zerowy nie dać dwa albo chociaż jeden).
Generalnie różnica w ilości wyleczonych punktów załatwiłbym tak jak dowodzenie na wyższym poziomie czyli spięte w klamrę kilka zdolności osobno przefiltrowanych dla konkretnych poziomów, tylko właśnie nie mam pojęcia jak stworzyć filter zabitej jednostki wroga oraz filter poziomu tego zabitego wroga. No i filter "żywego" a nie nieumarłego/mechanicznego/itd przeciwnika.
Pomożecie? Wink
Edytowane przez Warlord dnia 14-05-2015 14:25
 
Piko
Działanie tagu regeneracji obejmuje jedynie rozpoczęcie tury, więc nie pomoże ci on w osiągnięciu zamierzonego efektu. Zamiast tego odnajdź umiejętność żerowania, ją już łatwo ci będzie przerobić.
 
ForPeace
Spoko
Pobierz kod źródłowy  Kod źródłowy
#define ABILITY_FEEDING_ADVANCED
[dummy]
    id=feedadv
    name=_"nazwa"
    description=_"opis"
[/dummy]
[/abilities]
[event]
    name=die
    first_time_only=no
    [if]
        [variable]
            name=unit.race
            not_equals=undead
        [/variable]
        [and]
            [variable]
                name=unit.race
                not_equals=mechanical
            [/variable]
        [/and]
        [then]
            [switch]
                variable=unit.level
                [case]
                    value=0
                    {VARIABLE amountofhitpoints 0}
                [/case]
                [case]
                    value=1
                    {VARIABLE amountofhitpoints 2}
                [/case]
                [case]
                    value=2
                    {VARIABLE amountofhitpoints 4}
                [/case]
                [case]
                    value=3
                    {VARIABLE amountofhitpoints 8}
                [/case]
                [case]
                    value=4
                    {VARIABLE amountofhitpoints 16}
                [/case]
                [else]
                    {VARIABLE amountofhitpoints 32}
                [/else]                 
            [/switch]
            [heal_unit]
                [filter]
                    x,y=$x2,$y2
                [/filter]
                amount=$amountofhitpoints
            [/heal_unit]
        [/then]
    [/if]
[/event]
[+abilities]




Mam nadzieję, że zadziała.
Edytowane przez ForPeace dnia 14-05-2015 17:22
Mój ladderowy profil

"10 lat mówisz? Jak ja mówię że gram 10 lat to przychodzą ludzie i mówią że grali 15 i nic się nie znam na tej grze bo nie grałem jak PRAWDZIWI prosi grali. xD" ~Hejnewar
 
Warlord
Dzięki pe_em jesteś super Grin Ale sprawdzę czy działa dopiero jak wrócę do domu.

Edit:
W formie w jakiej mi to podałeś, nie działało. Najpierw próbowałem to jednak zrobić samemu ale poległem na filtrowaniu poziomu, niby dawałem filter_oponent ale nie działało. Później wziąłem się za przeróbkę twojego kodu, właściwie to pousuwałem tylko te tagi abilities, zamknąłem zdolność, otworzyłem event osobno i dodałem tag eventu do pliku jednostki i zadziałało. Także i tak dzięki Grin
 
ForPeace
Warlord napisał/a:
Później wziąłem się za przeróbkę twojego kodu, właściwie to pousuwałem tylko te tagi abilities, zamknąłem zdolność, otworzyłem event osobno i dodałem tag eventu do pliku jednostki i zadziałało.


Serio? Shock nie wierzę, że to była przyczyna Pfft Możesz pokazać kod zdolności oraz event?

Nie mam pojęcia, gdzie chciałeś użyć [filter_opponent]. Można go użyć tylko przy specjalnych broniach.

Jak masz event jak kill to używasz (w zależności od tego co chcesz sprawdzić i od nazwy eventu) unit.costam lub second_unit.costam w instrukcji warunkowej typu [if] albo [switch] (Kostrukcja switch-case jest bardzo fajna i nie trzeba przy niej robić if/else/if/else/if/else, tylko case/case/case/case/else. Dużo czytelniejsza i łatwiejsza.) - jeżeli chcesz wybrać różne akcje dla różnych wyników.

- albo [filter] lub [filter_second] dla jednego działania eventu tylko przy spełnionych warunkach filtra.
Edytowane przez ForPeace dnia 14-05-2015 22:20
Mój ladderowy profil

"10 lat mówisz? Jak ja mówię że gram 10 lat to przychodzą ludzie i mówią że grali 15 i nic się nie znam na tej grze bo nie grałem jak PRAWDZIWI prosi grali. xD" ~Hejnewar
 
Przejdź do forum:
Wygenerowano w sekund: 0.34
10,820,279 unikalne wizyty