|
WML- pytania i odpowiedzi
|
| Warlord |
Dodany dnia 14-05-2015 22:38
|

Przybysz

Postów: 23
Data rejestracji: 25/04/2015 17:25
|
Myślałem że filter_opponent to filter dotyczący przeciwnika a nie broni 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ć 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 |
Dodany dnia 14-05-2015 23:29
|

Opiekun

Postów: 1608
Data rejestracji: 26/07/2012 20:00
|
Bo amountofhitpoints to w tym przypadku nazwa zmiennej wybranej przez gracza. Asfaifsduighsdkgsdfgdh też by działało.
Kod źródłowy[heal_unit]
amount=$amountofhitpoints
[/heal_unit]
Można też zapisać tak:
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
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 |
Dodany dnia 15-05-2015 16:44
|

Awanturnik

Postów: 604
Data rejestracji: 07/12/2014 12:26
|
Z tym, że tylko przy heal_unit pojawią się zielone cyfry
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 |
Dodany dnia 18-11-2016 20:05
|

Czeladnik

Postów: 82
Data rejestracji: 10/02/2011 09:58
|
Próbowałem rozgryźć problem, ale albo nie rozumiem składni WMLa albo jestem cienki jak polsilver 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  |
| |
|
|
| ForPeace |
Dodany dnia 18-11-2016 21:58
|

Awanturnik

Postów: 604
Data rejestracji: 07/12/2014 12:26
|
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.
Kod źródłowyrace= ork, goblin, troll
Oczywiście to nie rozwiązuje sprawy z negacją, zatem:
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 |
Dodany dnia 18-11-2016 22:39
|

Opiekun

Postów: 1608
Data rejestracji: 26/07/2012 20:00
|
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 |
Dodany dnia 19-11-2016 17:06
|

Czeladnik

Postów: 82
Data rejestracji: 10/02/2011 09:58
|
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  |
| |
|
|
| Piko |
Dodany dnia 19-11-2016 20:27
|

Opiekun

Postów: 1608
Data rejestracji: 26/07/2012 20:00
|
Ź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.  |
| |
|
|
| glonstons |
Dodany dnia 31-12-2016 01:53
|

Początkujący

Postów: 33
Data rejestracji: 27/10/2015 20:20
|
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 |
Dodany dnia 31-12-2016 11:38
|

Czeladnik

Postów: 50
Data rejestracji: 05/08/2015 02:01
|
Stwórz sobie jednostkę Qwerty. Wystarczą jej nazwa, opis, obrazek i cena. W kodzie jednostki Qwerty dodaj:
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 |
Dodany dnia 31-12-2016 14:38
|

Początkujący

Postów: 33
Data rejestracji: 27/10/2015 20:20
|
Dzieki wielkie za pomoc..
Edytowane przez glonstons dnia 31-12-2016 19:53
|
| |
|
|
| kasim |
Dodany dnia 25-04-2017 18:33
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
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 |
Dodany dnia 25-04-2017 18:42
|

Czeladnik

Postów: 50
Data rejestracji: 05/08/2015 02:01
|
Poczytaj o tagu binarypath. Oprócz niego potrzebujesz folderu images zamiast textures. Wtedy wystarczy ci image = "Flag1.png" |
| |
|
|
| kasim |
Dodany dnia 25-04-2017 18:59
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
Dzięki za odpowiedź już działa. |
| |
|
|
| kasim |
Dodany dnia 25-04-2017 21:40
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
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 |
Dodany dnia 25-04-2017 22:27
|

Czeladnik

Postów: 50
Data rejestracji: 05/08/2015 02:01
|
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 |
Dodany dnia 26-04-2017 15:53
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
ponownie dzięki za odpowiedź, teraz działa
|
| |
|
|
| kasim |
Dodany dnia 07-05-2017 16:29
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
#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 |
Dodany dnia 08-05-2017 10:17
|

Czeladnik

Postów: 50
Data rejestracji: 05/08/2015 02:01
|
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 |
Dodany dnia 08-05-2017 15:53
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
Dziękuje smoku umiejętność już się poprawnie wczytuje, ale event nie działa 
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] |
| |
|