Dziś jest: Niedziela, 20 października 2019, godzina 00:11
zaloguj się :


Odpowiedź

Temat: Problem z wyzwalaczem.

Renorus
Wiadomość [#1]: 25.03.2013 o 12:07

Konto skasowane





Witam, chciałem zrobić passyw, który sprawia, że jeśli życie jakiegoś sojuszniczego bohatera spadnie poniżej 25% to pewien bohater (Kars) dostanie tyle siły ile wynosi jego poziom pomnożony przez 3 na 15 sekund. Passyw miał móc się uaktywnić co 90 sekund. Problem jest taki, że po 15 sekundach siła bohatera nie wraca do normalnej wartości. Wyzwalacz wygląda tak.
Wydarzenia
Czas - Every 1.00 seconds of game time
Warunki
Akcje
Set couldownkars = (couldownkars - 1)
Set ownerKarsa = (Owner of (Random unit from (Units of type Bard))) (Jest tylko jedna taka jednostka na mapie)
Set Kars = (Random unit from (Units of type Bard))
Grupa graczy - Pick every player in (All allies of ownerKarsa) and do (Actions)
Pętla - Akcje
Grupa jednostek - Pick every unit in (Units owned by (Picked player) matching (((Matching unit) is Bohater) Równa się TAK)) and do (Actions)
Pętla - Akcje
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Jeśli - Warunki
And - All (Conditions) are true
Warunki
(Życie of (Picked unit)) Mniejsze lub równe ((Maksimum Życia of (Picked unit)) x 0.25)
couldownkars Mniejsze lub równe 0
To - Akcje
Set karspassyw = ((Hero level of Kars) x 3)
Set couldownkars = 90
Bohater - Modify Siła of Kars: Dodaj karspassyw
Wait 15.00 seconds
Bohater - Modify Siła of Kars: Odejmij karspassyw
Albo - Akcje
Do nothing
Z góry dziękuje za pomoc.

[Edycja Renorus - 25.03.2013 o 12:07]

shadow44
Wiadomość [#2]: 26.03.2013 o 11:37

Konto skasowane





A możesz podrzucić mapę? Bo najlepiej się coś naprawia mając to coś xD Sprawdził bym, popróbował i napisał jak znajdę rozwiązanie.



Masz wrogów? Bardzo dobrze. To znaczy, że postawiłeś się w jakieś sprawie w swoim życiu.
Eminem

Ostatni Bastion - http://forum.battlenet(...)p;page=0
Renorus
Wiadomość [#3]: 28.03.2013 o 13:54

Konto skasowane





Tylko mogę dość poradę jak coś zauplodować? Jestem nieogarnięty. Jak byś mógł możesz też sprawdzić, co nie działa z zestawem dźwięków tego bohatera.

shadow44
Wiadomość [#4]: 28.03.2013 o 14:00

Konto skasowane





Renorus napisał
Tylko mogę dość poradę jak coś zauplodować? Jestem nieogarnięty. Jak byś mógł możesz też sprawdzić, co nie działa z zestawem dźwięków tego bohatera.


Wrzuć mapę tu -> upload, a potem daj mi link do pobrania

[Edycja shadow44 - 28.03.2013 o 14:00]



Masz wrogów? Bardzo dobrze. To znaczy, że postawiłeś się w jakieś sprawie w swoim życiu.
Eminem

Ostatni Bastion - http://forum.battlenet(...)p;page=0
Renorus
Wiadomość [#5]: 28.03.2013 o 14:04

Konto skasowane





Od razu mówię, że mapa jest dosyć "goła" ponieważ dopiero zacząłem prace, a ponieważ poprzednią mapę, nad którą pracowałem 8 miesięcy, to po spotkaniu tych przeciwności szybko się zniechęciłem, ale jeśli ci się uda, to pewnie wrócę do pracy. Nie do końca czaje co z tym linkiem. Co powinienem wkleić? http://speedy.sh/aSNXG/hero-beta.w3x.

[Edycja Renorus - 28.03.2013 o 14:08]

shadow44
Wiadomość [#6]: 28.03.2013 o 14:39

Konto skasowane





Renorus napisał
Od razu mówię, że mapa jest dosyć "goła" ponieważ dopiero zacząłem prace, a ponieważ poprzednią mapę, nad którą pracowałem 8 miesięcy, to po spotkaniu tych przeciwności szybko się zniechęciłem, ale jeśli ci się uda, to pewnie wrócę do pracy. Nie do końca czaje co z tym linkiem. Co powinienem wkleić? http://speedy.sh/aSNXG/hero-beta.w3x.

[Edycja Renorus - 28.03.2013 o 14:08]


dobra, zobaczę co da się zrobić. Wieczorem dam znać.



Masz wrogów? Bardzo dobrze. To znaczy, że postawiłeś się w jakieś sprawie w swoim życiu.
Eminem

Ostatni Bastion - http://forum.battlenet(...)p;page=0
Renorus
Wiadomość [#7]: 28.03.2013 o 14:53

Konto skasowane





Dziękuje ci.
Ogólnie się okazało, że w niektórych wyzwalaczach akcje po użyciu wait nie działają. Np. Zrobiłem po jakimś tam wydarzeniu i innych akcjach itp.
wait 10 seconds
Vicotory for Gracz czerwony (Czy jakoś tak)
Co ogólnie nie ma prawa działać, a nie działa. A kiedy usunę wait wszystko gra. Sądzę, że to ma coś wspólnego z problemem powyższego wyzwalacza.

[Edycja Renorus - 29.03.2013 o 11:03]

shadow44
Wiadomość [#8]: 29.03.2013 o 21:18

Konto skasowane





Renorus napisał
Dziękuje ci.
Ogólnie się okazało, że w niektórych wyzwalaczach akcje po użyciu wait nie działają. Np. Zrobiłem po jakimś tam wydarzeniu i innych akcjach itp.
wait 10 seconds
Vicotory for Gracz czerwony (Czy jakoś tak)
Co ogólnie nie ma prawa działać, a nie działa. A kiedy usunę wait wszystko gra. Sądzę, że to ma coś wspólnego z problemem powyższego wyzwalacza.

[Edycja Renorus - 29.03.2013 o 11:03]


Możliwe, musisz sam pokombinować, bo mój warcraft odmówił współpracy. A mój laptop wymaga formatowania, a zrobie go gdzieś po świętach, więc do tego czasu nie będę miał warcrafta, więc narazie Ci nie pomogę.

[Edycja shadow44 - 29.03.2013 o 21:19]



Masz wrogów? Bardzo dobrze. To znaczy, że postawiłeś się w jakieś sprawie w swoim życiu.
Eminem

Ostatni Bastion - http://forum.battlenet(...)p;page=0
Drakonno
Wiadomość [#9]: 29.03.2013 o 23:11

Konto skasowane





Ten wyzwalacz z przywracaniem siły to jakiś żart, przynajmniej tak wygląda.

Wydarzenia
Czas - Every 1.00 seconds of game time

Akcje
Set karspassyw = ((Hero level of Kars) x 3)
Set couldownkars = 90
Bohater - Modify Siła of Kars: Dodaj karspassyw
Wait 15.00 seconds

Ten TimeEvent ma w podpisie, że NIE WOLNO go łączyć z Waitami na przykład.
Poza tym, jak chcesz, żeby po 15 sekundach wróciła siła, skoro co 1 sekundę ten wyzwalacz uruchamiasz. Po trzecie, trzeba tam wrzucić inne warunki i jak jest kilka "Krasów" czy innych rzeczy, które mają mieć coś takiego, to powinieneś użyć tak zwanych Tablic Mieszających (Hashtable).


Wydarzenia
Czas - Every 1.00 seconds of game time
Warunki
----
Akcje
Set couldownkars = (couldownkars - 1)
Set ownerKarsa = (Owner of (Random unit from (Units of type Bard))) (Jest tylko jedna taka jednostka na mapie)
Set Kars = (Random unit from (Units of type Bard))
Grupa graczy - Pick every player in (All allies of ownerKarsa) and do (Actions)
Pętla - Akcje
Grupa jednostek - Pick every unit in (Units owned by (Picked player) matching (((Matching unit) is Bohater) Równa się TAK)) and do (Actions)
Pętla - Akcje
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Jeśli - Warunki
And - All (Conditions) are true
Warunki
(Życie of (Picked unit)) Mniejsze lub równe ((Maksimum Życia of (Picked unit)) x 0.25)
couldownkars Mniejsze lub równe 0
To - Akcje
Set karspassyw = ((Hero level of Kars) x 3)
Set couldownkars = 90
Bohater - Modify Siła of Kars: Dodaj karspassyw
Wait 15.00 seconds
Bohater - Modify Siła of Kars: Odejmij karspassyw
Albo - Akcje
Do nothing


Poza tym, jak ktoś kopiuje kod, to niech umieszcza to w "[.CODE]...[/.CODE]" Bez tej kropki przed C. Kropek.

Grupa jednostek - Pick every unit in (Units owned by (Picked player) matching (((Matching unit) is Bohater) Równa się TAK)) and do (Actions) << To jest tak bardzo złe, że aż niemożliwie złe. Nie wspominając o totalnym pogłebieniu kodu, pętla, w pętli, w pętli, przy czym one nic nie robią.

Teraz masz sprawdzenie czy czas minął: couldownkars Mniejsze lub równe 0, zdecydowanie za daleko, to powinno być tuż po "Set couldownkars = (couldownkars - 1)".

Kolejne, teraz jeśli chcesz użyć wait, to zrób to w inny sposób, który już użyłeś, skoro uruchamiasz efekt co sekundę, to sprawdź, kiedy ilość sekund to 90-15 i wtedy odejmij pasyw. Pozostałe 75 sekund ma się to nie włączyć. Inna sprawa, że "Every 1 second" to strasznie duży odstęp obrażeń i to mogłoby mieć wpływ na rozgrywkę, zwykle się w tym używa "Every 0.03 sec" i to jest wartość dobra i nie lagująca komputera.

Ok, teraz inna sprawa, skoro jednostka jest tylko JEDNA na mapie, to po co zagłębiasz się w sprawdzanie jaki gracz i kiedy go ma i w ogóle zło. Powinieneś zrobić dwa wyzwalacze w takim razie, jeden, który będzie się uruchamiać co 0.03 sekundy, ale tylko wtedy, kiedy go włączysz funkcją "Turn on Trigger". Ta zaś powinna być właśnie odpalana "when unit takes damage", albo odpowiednikiem. Możesz inaczej, czyli jedna funkcja, która przypisuje do zmiennej tego bohatera, jak zostanie zwerbowany/stworzony/cokolwiek i potem uruchamia trigger sprawdzający stan życia. Tyle, że to obciąży Ci obliczenia na mapie. Chcesz gotowca, czy pokombinujesz sam? Tutorial o Hashtable'ach znajdziesz na TU

[Edycja Drakonno - 29.03.2013 o 23:13]

[Edycja Drakonno - 29.03.2013 o 23:13]



Skromna animacja - http://img694.imagesha(...)fend.gif

-Brrr... A którego z nich, powiedz, można ukatrupić za pomocą zwierciadła?
-Każdego. Jeśli walnąć prosto w łeb.
A. Sapkowski - Rozmowa wiedźmina z rycerzem po zabiciu kuroliszka.

-Gdzie podkop, jaki podkop, lampa w podłodze! Jakie to wszystko popieprzone!
Seksmisja
Renorus
Wiadomość [#10]: 30.03.2013 o 12:18

Konto skasowane





Drakono problem już rozwiązany,. Kars miał być tylko jeden, a zauważyłem, że wait nie działa w pętli "do,else" więc po prostu zamaist wait zrobiłem run tigger, który odczekiwał i zabierał i Karsowi siłę, którą otrzymał z passywu. I tak jak mówiłeś, set couldown też ustawie po wait, żeby to rzeczywiście było 90 i 75. No i musiałem ustalić gracza władającego tą jednostką, by określić jego sojuszników, bo miał on dostawać premie za każdego przyjaznego bohatera, nie tylko za siebie. Kurna nie mogę tego ustawić tego po wait, bo mu się siła stakuję cały czas, muszę ustawić przed na 105. Zmieniłem też, na 0.03 dzięki za poświęcony czas. Będzie tylko wtedy trzeba przerobić w couldown zamiast -1, to -3/100.

[Edycja Renorus - 30.03.2013 o 12:44]

REKLAMA
Strona 1 z 1.
Idź do strony :

Odpowiedź

Skocz do :