Witaj Wesnothańczyku
Zobacz temat
 Drukuj temat
WML- pytania i odpowiedzi
Warlord
Myślałem że filter_opponent to filter dotyczący przeciwnika a nie broni Grin I też dla mnie jest dziwne że twoja pierwotna wersja nie działała, gdy dokładnie tak samo jest określony event feeding właśnie... a najśmieszniejsze jest to, że w moim folderze zdolności, feeding w naturalnej postaci też nie działał!
+Dzięki za tego switcha, może teraz samemu uda mi się coś zrobić Pfft I tak się zastanawiałem, skąd wiedziałeś np. że taka rzecz jak amountofhitpoints zadziała akurat tak, a nie np. zwiększy na stałe całkowitą liczbę punktów życia? Normalnie jest chyba increase przy apply_to=hitpoints...
Edytowane przez Warlord dnia 14-05-2015 22:39
 
Piko
Bo amountofhitpoints to w tym przypadku nazwa zmiennej wybranej przez gracza. Asfaifsduighsdkgsdfgdh też by działało.
Pobierz kod źródłowy  Kod źródłowy
[heal_unit]
    amount=$amountofhitpoints
[/heal_unit]




Można też zapisać tak:
Pobierz kod źródłowy  Kod źródłowy
[modify_unit]
    hitpoints=$($unit.hitpoints+$amountofhitpoints) #jak co to nie sprawdzałem w grze więc nie wiem czy zadziała
[/modify_unit]



lub
Pobierz kod źródłowy  Kod źródłowy
[object]
    [filter]
        x,y=$x2,$y2
    [/filter]
    [effect]
        apply_to=hitpoints
        increase=$amountofhitpoints
    [/effect]
[/object]



Edytowane przez Piko dnia 14-05-2015 23:32
 
ForPeace
Z tym, że tylko przy heal_unit pojawią się zielone cyfry Smile
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
 
jurijuice
Próbowałem rozgryźć problem, ale albo nie rozumiem składni WMLa albo jestem cienki jak polsilver Cool a oto i zadanie:

Jednostka posiadająca rasę IIWW_Tank posiada atak do którego doklejony jest specjal TANKRAM. Specjal ma działać wyłącznie przeciwko rasie IIWW_Tank, natomiast ma nie działać przeciwko żadnej innej (np. IIWW_Infantry, IIWW_Air).

A poniżej kod wraz z komentarzami w liniach gdzie dokonywałem prób - która linia działa a która nie działa.


#define WEAPON_SPECIAL_TANKRAM
[disable]
name=_"Tank Ram"
description=_"Can be used only vs tanks"
id=WW2_tankram
apply_to=self
[filter_opponent]
[filter_wml]
#race=IIWW_Infantry #działa

#race=(IIWW_Air || IIWW_Infantry) #nie działa

#race=!(IIWW_Tank) #nie działa

#race=!IIWW_Tank #nie działa

[/filter_wml]
[/filter_opponent]
[/disable]
#enddef




Działa mi tylko jeden przykład - ten w którym mogę wyłączyć pojedynczą rasę z dostawania obrażeń (w powyższym przypadku piechota), natomiast operatory logiczne (jednak są w internetach) zachowują się jakby ich nie było, albo to problem składni której nie ogarniam.

Proszę o pomoc bo skończyły mi się pomysły, jak ogarnąć składnię aby działało jak trzeba Sad
 
ForPeace
Nie wiem, czy operatory AND i OR działają w takiej formie (widocznie nie), natomiast z pewnością działają jako tagi [and], [or]. https://wiki.wesn...ition_Tags

Ale jeżeli już upieramy się przy prostym zapisie, możemy wypisać rasy po przecinku.
Pobierz kod źródłowy  Kod źródłowy
race= ork, goblin, troll



Oczywiście to nie rozwiązuje sprawy z negacją, zatem:
Pobierz kod źródłowy  Kod źródłowy
[filter_wml]
[not]
race=IIWW_Tank
[/not]
[/filter_wml]



Tak to powinno działać.
Edytowane przez ForPeace dnia 18-11-2016 21:58
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
 
Piko
Tak jak pe_em napisał. Tylko zamiast [filter_wml] używaj zwykłego [filter]. Jest szybsze i sprawniejsze, a działa w większości podstawowych akcji. [filter_wml] używa się dopiero wtedy, gdy wszystko inne zawiedzie.

Zarówno wypisanie race=IIWW_Infantry,IIWW_Air po przecinku, jak i powyższe z [not]em, będzie działało.
 
jurijuice
Ogromne dzięki! Działa ale wyłącznie na [filter_wml], a [filter] niestety się nie łapie.

Nie zmienia to faktu, że WML jest dla mnie nieco dziwaczny (pewnie przyzwyczajenia z C# robią swoje... no to mam prawie kompletny update, jeżeli nie dziś to jutro można się go spodziewać na serwerze Smile
 
Piko
Źle przekazałem.
W tym miejscu nie musisz pisać podwójnego filtra. [Filter_opponent] zastępuje zwykłe [filter]. Tak samo [filter_wml] chyba nie działa samo od siebie, trzeba je otoczyć zwykłym [filter]em.

WML jest najbardziej podobny do XMLa i HTMLa, do C# niekoniecznie. Ale jako ktoś kto nie jest programistą, sądzę że jest o wiele łatwiejszy do nauczenia się niż większość mainstreamowych języków. Więc choć musisz porzucić dawne przyzwyczajenia, to sądzę że nie powinno ci to sprawić problemu. Wink
 
glonstons
Jak sprawic aby w mojej erze rekrutujac np. Qwerty
Losowo wybierana byla jednostka:a, b ,c lub d.
Z gory dzieki za pomoc i przepraszam za ortografie- brak polskich znakow
 
Smok
Stwórz sobie jednostkę Qwerty. Wystarczą jej nazwa, opis, obrazek i cena. W kodzie jednostki Qwerty dodaj:
Pobierz kod źródłowy  Kod źródłowy
[event]
      name = prerecruit
      first_time_only = no
      [filter]
         type = Qwerty
      [/filter]
      [kill]
         x,y = $x1,$y1
         animate = no
         fire_event = no
      [/kill]
      {RANDOM "a,b,c,d"}
      [unit]
         x,y = $x1,$y1
         side = $side_number
         attacks_left = 0
         moves = 0
         type = $random
      [/unit]
   [/event]


 
glonstons
Dzieki wielkie za pomoc..
Edytowane przez glonstons dnia 31-12-2016 19:53
 
kasim
Jak zrobić własny obrazek do frakcji w erze? Mam w folderze dodatku obrazek, ale nie chce mi go wczytać i nie wyświetla mi go w grze.
Ta linijka wygląda tak:
image = "add-ons/Era_of_Warnwgard/textures/Flag1.png"

wcześniej próbowałem tak:
image = "textures/Flag1.png"

ale też nie działało. W folderze dodatku mam folder textures i plik Flag1.png. Jak zrobic by ścierzka do tego pliku była poprawna/żeby była ustawiona względem folderu z dodatkiem?
 
Smok
Poczytaj o tagu binarypath. Oprócz niego potrzebujesz folderu images zamiast textures. Wtedy wystarczy ci image = "Flag1.png"
 
kasim
Dzięki za odpowiedź już działa.
 
kasim
znowu mam problem :/

w pliku _main.cfg mam:
[binary_path]
path=data/add-ons/Era_of_Warnwgard
[/binary_path]
#ifdef MULTIPLAYER
[era]
id=Era_of_Warnwgard
name="Era of Warnwgard"

{RANDOM_SIDE}

[multiplayer_side]
id = Warnwgard
name = "Warnwgard"
leader = WARN_herszt
recruit = Elvish Archer
image = "Flag1.png"
[/multiplayer_side]

[multiplayer_side]
id = Nieumarli
name = "Nieumarli"
leader = Dark Sorcerer, Skeleton
recruit = Walking Corpse
image = "units/undead/shadow-s-attack-4.png"
[/multiplayer_side]
[/era]

[units]
{units/warnwgard/herszt.cfg}
[/units]
#endif


w pliku herszt.cfg mam to:
[binary_path]
path=data/add-ons/Era_of_Warnwgard
[/binary_path]
[unit_type]
id = WARN_herszt
name = _ "Herszt"
image = "units/warnwgard/1lvl_herszt.png"
movement = 5
movement_type = orcishfoot
[/unit_type]


A to moja struktura plików:
Era_of_Warnwgard
| images
| | warnwgard
| | | 1lvl_herszt.png
| | Flag1.png
| units
| | warnwgard
| | | herszt.cfg
| _main.cfg


Co mam źle bo wyskakuje mi że brakuje pliku herszt.cfg?
 
Smok
binary_path wystarczy ci tylko jedno, to w pliku _main.cfg.
Problem leży w {units/warnwgard/herszt.cfg}. Musisz użyć {~add-ons/FOLDER_TWOJEGO_DODATKU/RESZTA_ŚCIEŻKI_DO_PLIKU}. To ~add-ons jest kluczowe. Bez tego, Wesnoth będzie szukał w oryginalnych plikach gry, a nie folderze dodatków.
Edytowane przez Smok dnia 25-04-2017 22:33
 
kasim
ponownie dzięki za odpowiedź, teraz działa
 
kasim
#define ABILITY_LOOTER
id=looter
name= _ "looter"
description= _ "If looter capture village they get 3 gold."
[event]
name=capture
[filter]
ability=looter
[/filter]
[gold]
amount=3
side=$unit.side
[/gold]
[/event]
#enddef

Mam pytanie czy dobrze napisałem taką umiejętność i jak ją dołączyć do dodatku?
Jak co umiejętność ma działać tak, że gdy jednostka z tą umiejętnością zajmie wioskę to gracz dodatkowo dostanie 3 goldy.
 
Smok
Wygląda dobrze, tylko to przed eventem powinno być w tagu [dummy]. Wsadź ten kod do jakiegokolwiek pliku i wczytaj go przed jednostkami. Potem używasz tak jak innych umiejętności. Przy okazji rzuć okiem na [floating_text], myślę że będzie tu pasować.
 
kasim
Dziękuje smoku umiejętność już się poprawnie wczytuje, ale event nie działa Sad
Nie wiem co w nim nie tak ale nic nie robi. Szukałem rozwiązania na RefferenceWML, ale nie mogłem sobie poradzić. Próbowałem przenosić sam event do innych plików, ale nic nie działało, również po usunięciu filtra nie działało.
[event]
name=capture
[filter]
ability=looter
[/filter]
[gold]
amount=3
side=$unit.side
[/gold]
[/event]
 
Przejdź do forum:
Wygenerowano w sekund: 0.16
10,884,884 unikalne wizyty