|
WML- pytania i odpowiedzi
|
| kasim |
Dodany dnia 07-06-2017 20:52
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
Mam pytanie. Jak zrobić żeby atak był dostępny tylko w obronie? Skleciłem coś takiego i nie działa, i chyba nie może działać, pomógłby ktoś?
Kod źródłowy#define WEAPON_SPECIAL_DEFENDONLY
[dummy]
id=defendonly
name= _ "defend only"
description= _ "This attack can only be used defensively."
name_inactive= _ "defend only"
description_inactive= _ "This attack can only be used defensively."
#value=0
#cumulative=no
#active_on=defend
#apply_to=self
[/dummy]
#enddef
|
| |
|
|
| Smok |
Dodany dnia 08-06-2017 12:38
|

Czeladnik

Postów: 50
Data rejestracji: 05/08/2015 02:01
|
Nie widzę powodu, dla którego ten kod miałby nie działać. Nie wiem też jaki ma on związek z twoim pytaniem.
https://wiki.wesn...nittypewml
Nie widzę sposobu, aby zablokować użycie ataku w ofensywie, ale możesz zrobić event, który na czas ruchu właściciela jednostki np. mocno obniży celność ataku. |
| |
|
|
| Jarom |
Dodany dnia 08-06-2017 16:17
|

Awanturnik

Postów: 584
Data rejestracji: 28/03/2014 16:24
|
Cały kod blokujący atak w ofensywie wygląda tak:
Kod źródłowyattack_weight=0
i wrzuca się go bezpośrednio do [attack]. To co ty napisałeś daje tylko nic nie robiącą zdolność. Tag [dummy] nie robi nic poza pokazywaniem, że jednostka ma zdolność o jakiejśtam nazwie i opisie.
Edytowane przez Jarom dnia 08-06-2017 16:17
|
| |
|
|
| Smok |
Dodany dnia 08-06-2017 16:37
|

Czeladnik

Postów: 50
Data rejestracji: 05/08/2015 02:01
|
Jarom napisał(a):
Cały kod blokujący atak w ofensywie wygląda tak:
Kod źródłowyattack_weight=0
i wrzuca się go bezpośrednio do [attack]. To co ty napisałeś daje tylko nic nie robiącą zdolność. Tag [dummy] nie robi nic poza pokazywaniem, że jednostka ma zdolność o jakiejśtam nazwie i opisie.
Twoja metoda zadziała tylko w przypadku gdy jednostką steruje ai. |
| |
|
|
| Jarom |
Dodany dnia 08-06-2017 18:30
|

Awanturnik

Postów: 584
Data rejestracji: 28/03/2014 16:24
|
Nieprawda. Sprawdzałem. Atak w ogóle nie pokaże się w oknie walki.
|
| |
|
|
| kasim |
Dodany dnia 08-06-2017 20:20
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
Dzięki za pomoc, już działa. |
| |
|
|
| kasim |
Dodany dnia 27-06-2017 22:39
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
ten efekt nie działa:
Kod źródłowy[effect]
apply_to=defense
replace=yes
frozen=45
[/effect]
wie ktoś co zrąbałem? jakby co ten efekt ma zamieniać jednostce obronę w terenie zamarzniętym z jej własnej an 45. |
| |
|
|
| Piko |
Dodany dnia 27-06-2017 23:07
|

Opiekun

Postów: 1608
Data rejestracji: 26/07/2012 20:00
|
A wsadziłeś to w tag [object]? Bo effect sam od siebie nie wywołuje żadnego efektu.
Nie wiem też czy [modify_unit] zadziała w ten sposób. Zadziała za to store, {VARIABLE stored_unit.defense.frozen 45}, unstore. |
| |
|
|
| kasim |
Dodany dnia 28-06-2017 08:50
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
wsadziłem to w tag [advancement],
a to:
store, {VARIABLE stored_unit.defense.frozen 45}, unstore
wsadzić zamiast tego efektu? |
| |
|
|
| Jarom |
Dodany dnia 28-06-2017 10:16
|

Awanturnik

Postów: 584
Data rejestracji: 28/03/2014 16:24
|
frozen=45 powinno być wewnątrz tagu [defense]. Przeczytaj sobie jeszcze raz EffectWML. Poza tym frozen=45 oznacza w tym przypadku 55% obrony terenowej na lodzie.
|
| |
|
|
| kasim |
Dodany dnia 28-06-2017 12:34
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
dzięki Jarom, teraz działa. |
| |
|
|
| kasim |
Dodany dnia 08-07-2017 18:54
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
Wie ktoś jak zrobić event który dodawał by graczowi w zależności od tego jakiego przywódce wybrał, jednostki do rekrutacji? |
| |
|
|
| Smok |
Dodany dnia 09-07-2017 11:10
|

Czeladnik

Postów: 50
Data rejestracji: 05/08/2015 02:01
|
Kod źródłowy[event]
name = start
#zbiera wszystkich liderów do zmiennej
[store_unit]
[filter]
canrecruit = yes
[/filter]
variable = leaders
[/store_unit]
#pętla po wszystkich liderach
[foreach]
array = leaders
[do]
#szuka w case jaki bonus ma dostać lider danego typu
[switch]
variable = this_item.type
[case]
#lider typu Deathblade...
value = Deathblade
#...dostaje listę dodatkowych jednostek do rekrutacji
[allow_extra_recruit]
id = $this_item.id
extra_recruit = Spearman, Yeti
[/allow_extra_recruit]
[/case]
[case]
value = Dark Sorcerer
[allow_extra_recruit]
id = $this_item.id
extra_recruit = Giant Spider
[/allow_extra_recruit]
[/case]
[/switch]
[/do]
[/foreach]
[/event]
|
| |
|
|
| kasim |
Dodany dnia 09-07-2017 17:54
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
niestety nie działa, wyskakuje że brakuje variable= attribute |
| |
|
|
| Smok |
Dodany dnia 09-07-2017 19:04
|

Czeladnik

Postów: 50
Data rejestracji: 05/08/2015 02:01
|
kasim napisał(a):
niestety nie działa, wyskakuje że brakuje variable= attribute
Działa, bo testowałem na czystym scenariuszu, tylko w wersji bez komentarzy. Tak poza tym, skoro gra ci powiedziała gdzie masz błąd, to sobie go po prostu popraw. 
Jeszcze jedno. Ten kod działa tylko w wersji Dev.
Edytowane przez Smok dnia 09-07-2017 19:07
|
| |
|
|
| kasim |
Dodany dnia 09-07-2017 21:39
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
Dobra już teraz działa, dzięki. I jeszcze pytanie czy da się usunąć z czatu wiadomość o jakimś lua error który wyskakuje przez ten event? |
| |
|
|
| Smok |
Dodany dnia 09-07-2017 23:02
|

Czeladnik

Postów: 50
Data rejestracji: 05/08/2015 02:01
|
kasim napisał(a):
Dobra już teraz działa, dzięki. I jeszcze pytanie czy da się usunąć z czatu wiadomość o jakimś lua error który wyskakuje przez ten event?
Da się. Musisz naprawić błąd, który go powoduje, ale raczej żaden z tych błędów nie jest związany z moim kodem.
Tu masz cały kod scenariusza:
Kod źródłowy[multiplayer]
id = TEST
name = _ "TEST"
description = _ "Opis"
map_data = "{multiplayer/maps/2p_Aethermaw.map}"
{DEFAULT_SCHEDULE}
{DEFAULT_MUSIC_PLAYLIST}
random_start_time=yes
[event]
name = start
#zbiera wszystkich liderów do zmiennej
[store_unit]
[filter]
canrecruit = yes
[/filter]
variable = leaders
[/store_unit]
#pętla po wszystkich liderach
[foreach]
array = leaders
[do]
#szuka w case jaki bonus ma dostać lider danego typu
[switch]
variable = this_item.type
[case]
#lider typu Deathblade...
value = Deathblade
#...dostaje listę dodatkowych jednostek do rekrutacji
[allow_extra_recruit]
id = $this_item.id
extra_recruit = Spearman, Yeti
[/allow_extra_recruit]
[/case]
[case]
value = Dark Sorcerer
[allow_extra_recruit]
id = $this_item.id
extra_recruit = Giant Spider
[/allow_extra_recruit]
[/case]
[/switch]
[/do]
[/foreach]
[/event]
[side][/side]
[side][/side]
[/multiplayer]
Testowany na 1.13.7. |
| |
|
|
| kasim |
Dodany dnia 10-07-2017 07:51
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
Możliwe że ten błąd wyskakuje bo ja tego eventu w erze używam, a nie w mapie. Czy to nie ma znaczenia? |
| |
|
|
| Jarom |
Dodany dnia 10-07-2017 13:28
|

Awanturnik

Postów: 584
Data rejestracji: 28/03/2014 16:24
|
Umiejscowienie kodu eventu raczej nie to jest problemem, event to event, ale podejrzewam, że błąd pojawia się, kiedy którakolwiek ze stron ma lidera, którego nie ma na liście. Dodaj tag [else] do [switch] i może zniknie.
|
| |
|
|
| kasim |
Dodany dnia 10-07-2017 14:27
|

Czeladnik

Postów: 60
Data rejestracji: 04/02/2016 15:49
|
pomysł z [else] niestety nie podziałał, ale przeczytałem treść błędu i wynika z tego (przynajmniej ja tak zrozumiałem) że argument funkcji 'set_variable' powinien być jako string. Spróbowałem dać przy każdym variable to co jest po = dać do nawiasu ale także nie podziałało. Chyba se lepiej dać z tym siana, lub jakoś czyścić czat(jak się da)na początku rozgrywki. |
| |
|