• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5


Potrzebna mala pomoc
#1

Mam problem z zadaniem pojedynczych obrazen i usunieciu przy tym pocisku.
Problem polega na tym ze obrazenia zadawane sa czasami dwukrotnie.
Kiedy pociski sie spotykaja jeden pocisk sie niszczy natomiast drugi zatrzymuje sie.
Chcialbym aby sie wymijaly (wiem ze zadawanie obrazen jest zrobione tak ze pociski beda sie atakowaly nawzajem - to jest do przerobienia)

Mam nadzieje ze znajdzie sie szybko osoba, ktora bedzie w stanie mi pomoc.
Z gory dziekuje.

Screeny z wyzwalaczami
http://imgur.com/a/RcDb5

Link do mapki z umiejetnoscia
https://mega.nz/#!gkwHmYoY!Xej5hWeQ11572fEey9RFpmGpS9jOWxkDjphVMfsFc0g


Przepraszam za brak polskich znaków.
Reply }}}
Podziękowanie od:
#2
Zaczynamy od pospolitego błędu odnośnie ''zaczyna rzucać zaklęcie'' zmień na ''rozpoczyna działanie zdolności'',

Dlaczego? bo przy dobrym refleksie można rzucić twoje zaklęcie bez użycia many/CD(no chyba że caster nie ma cast pointu i cast time xD)

Units within postion of Unit001 w tym momencie deklarujesz że Unit001 czyli pocisk także jest w grupie zadawania obrażeń.
Musisz to rozgraniczyć dodaj warunkowość matching ~ Jednostka nie należy do typu Twojej jednostki and jednsotka nie nalezy do typu casterów and jednostka jest żywa and jednostka nie jest niezniszczalna.
W ogóle to wygląda strasznie kiepsko, obejrzyj jakiś Missle system na hive.
[Image: image.png]
Reply }}}
Podziękowanie od: A100F4R
#3
(23.03.2017, 09:54)Micek Wrote: Zaczynamy od pospolitego błędu odnośnie ''zaczyna rzucać zaklęcie'' zmień na ''rozpoczyna działanie zdolności'',

Dlaczego? bo przy dobrym refleksie można rzucić twoje zaklęcie bez użycia many/CD(no chyba że caster nie ma cast pointu i cast animacji xD)

To tak nie działa, lepiej niech nie zmienia Duży uśmiech


Próbujesz zrobić czar wieloinstancjowy.
Co się stanie, jeśli jedna strzała zostanie już odpalona i będzie gdzieś leciała i w tym momencie zostanie odpalona druga strzała? Zmienna Unit001 zostanie nadpisana przez nową strzałę. Stara strzała zostanie zapomniana i zatrzyma się.
Aby to rozwiązać, trzeba zapamiętać wszystkie strzały jakie istnieją w danej chwili. Do tego potrzebna jest tablica jednostek. Wykorzystujemy przy tym technikę którą nazywamy dynamicznym indeksowaniem. Każda instancja czaru otrzyma swój własny, unikalny indeks (liczbę) i dzięki temu czar będzie działał bezbłędnie przy wielu instancjach.
Napisałem poradnik dotyczący tego, polecam Duży uśmiech
http://goblinfactory.pl/showthread.php?tid=360
Ten post był edytowany -259638 raz(y) ostatnio edytowany przez Axator: Za 3 pojutrze, 29:89
Reply }}}
Podziękowanie od:
#4
Z gory przepraszam za zawracanie dupy zapewne banalnymi do rozwiazania problemami, 
ale jestem poczatkujacym-amatorem w edytorze, wiec prosze o wyrozumialosc :/

Obecny stan wyzwalaczy http://imgur.com/a/tFxXV

Zmienilem nazwy zmiennych dla wygody. Wiem ze zmienna ArrowShoot_R002 jest tak na prawde zbedna (mozna dodac index do ArrowShoot_Distance i tej zmiennej uzyc) ale jest to zrobione dla czytelnosci configu.

Teraz normalnie mozna uzywac skilla kilkoma postaciami jednoczesnie. Strzaly sie nie zatrzymuja. Wlaczanie wyzwalacza(z petla)/wylaczanie go w petli usunalem (wlaczajac jednoczesnie poczatkowo ten wyzwalacz w edytorze) poniewaz wtedy zdolnosc dzialala tylko raz (nie dzialala petla). 

Zwalniania miejsc w indeksie nie robilem poniewaz nie do konca wiedzialem jak to dziala np. do czego doklanie sluzy to - (pierwszy obrazek) http://imgur.com/a/Ed0CH / albo jak u mnie zrobic ta czesc w petli (obrazek nr 2).

Zadawania obrazen przy zetknieciu z inna jednostka nie zrobilem poniewaz nawet wiedzac co powinno znalezc sie w warunku, nie moglem odnalezc tego w edytorze. Prosze o naprowadzenie mnie jakos :/ ,badz gotowy warunek.

Wiem ze raczej slabo mi to idzie ,ale nie moge za duzo czasu temu poswiecic ,natomiast mozecie mi uwierzyc ze moja zajawka na edytor jest jak najbardziej prawdziwa.

Z gory dzieki za pomoc.
Przepraszam za brak polskich znaków.
Reply }}}
Podziękowanie od:
#5
Po prostu jeśli wokół aury (obszaru wokół) jednostki - strzały znajduje się jakaś jednostka to wtedy wyzwalasz kod. Tu masz przykład na szybko.


[Image: example.png]

Dodajesz to pod pętlę, która porusza strzałą i modyfikujesz jedynie zmienne na twoje i tyle.

Myślę, że pomogłem.
Pozdrawiam Uśmiech

PS. Tu masz mapę z wyzwalaczem do przejrzenia

.w3x   example.w3x (Size: 16.83 KB / Downloads: 1)

PS2. Ups. Tam gdzie jest zmienna 'p' chodziło mi o zmienną 'punkt' Uśmiech
[Image: Intro_S.png]
Reply }}}
Podziękowanie od: A100F4R
#6
Analizując ten obrazek: http://imgur.com/a/Ed0CH

W pierwszym zaznaczyłeś warunek MaxIndex równa się 1. MaxIndex oznacza ile instancji czaru obecnie jest aktywnych. Kiedy jest dokładnie jedna instancja czaru (nie więcej, nie mniej) to uruchom wyzwalacz z pętlą (ten drugi).
Czemu nie mniej? Bo to by oznaczało że nie ma żadnej instancji czaru i nie ma potrzeby uruchamiania drugiego wyzwalacza.
Czemu nie więcej? Bo jeśli będzie więcej, będzie to znaczyło że drugi wyzwalacz jest już uruchomiony i nie ma potrzeby robić tego ponownie.

Teraz patrząc na drugi obrazek, warunek MaxIndex równa się 0, oznacza, że nie ma już żadnych aktywnych instancji czaru i możemy ten wyzwalacz wyłączyć.
To co jest ponad tym warunkiem, na przykład CzasTrwaniaCzaru[LoopIndex] = CzasTrwaniaCzaru[MaxIndex]. LoopIndex to index instancji, która obecnie kończy swoje działanie. MaxIndex to index instancji, która jest ostatnia w kolejce. Instancję, która się kończy nadpisujemy więc ostatnią instancją.
LoopIndex = LoopIndex - 1 <--- to jest po to, żeby nowo nadpisana instancja czaru nie została pominięta.
MaxIndex = MaxIndex - 1 <--- skoro jedna instancja czaru się zakończyła, zmniejszasz liczbę instancji o jeden.

Całość wykonuje się kiedy czar ma zakończyć swoje działanie (w tym wypadku kiedy czas trwania czaru dobiegnie do zera)

Warunek na zetknięcie się z inną jednostką: Real Comparision ---> Distance beetween points (porównujesz pozycje pocisku i innych jednostek i sprawdzasz, czy ich odległość od siebie jest mniejsza od jakiejś liczby)
Ten post był edytowany -259638 raz(y) ostatnio edytowany przez Axator: Za 3 pojutrze, 29:89
Reply }}}
Podziękowanie od: A100F4R
#7
Udalo mi sie odnalezc odpowiednie warunki // dzieki @Dark Destroyer

[Image: D59PGtr.png]
Teraz strzala nie zaatakuje samej siebie ani zadnej innej oraz budynkow, castera, i trupow.
(Celowo zostawilem mozliwosc zaatakowania swojej jednostki)
Wczesniej tez mowilem ze strzala zadaje obrazenia kilkukrotnie i tutaj moj blad polegal na tym ze zabijalem strzale zamiast ja usunac.

edit: //Zrobilem to przed przeczytaniem postu wyzej//

Natomiast problem z brakiem mozliwosci rozwijania sie wartosci ArrowShoot_Index001 w nieskonczonosc rozwiazalem tak:[Image: LB8AA7p.png]
Wiem ze moze to jest bardzo prymitywne rozwiazanie ,ale dziala Duży uśmiech
Zanim ArrowShoot_Index001 osiagnie wartosc 100 (wartosc te moge podniesc/obnizyc w razie problemow) zmienne z indeksem np. 1,2,3 skoncza swoje dzialanie i nie bedzie problemu z tym ze po stu uzyciach spella zostana nadpisane.(Testowane przy resecie ArrowShoot_Index001 kiedy osiagalo wartosc 10 podczas spamu 2 postaci z cooldownem 0)

Jezeli cos z tego co przedstawilem jest zrobione niepoprawnie, to z checia czekam na uwagi.
Przepraszam za brak polskich znaków.
Reply }}}
Podziękowanie od:
#8
Wyobraź sobie, że Twój ArrowShoot_Index001 osiągnął wartość 99. Wszystkie poprzednie instancje czaru się zakończyły. Teraz odpalone są dwie nowe instancje. Index przyjmie wartość 1, pętla wykona się dla wartości do 1, pomijając całkowicie instancję z indeksem 100.
Ten post był edytowany -259638 raz(y) ostatnio edytowany przez Axator: Za 3 pojutrze, 29:89
Reply }}}
Podziękowanie od:
#9
(25.03.2017, 02:02)Axator Wrote: Wyobraź sobie, że Twój ArrowShoot_Index001 osiągnął wartość 99. Wszystkie poprzednie instancje czaru się zakończyły. Teraz odpalone są dwie nowe instancje. Index przyjmie wartość 1, pętla wykona się dla wartości do 1, pomijając całkowicie instancję z indeksem 100.

For each (Integer ArrowShoot_Index002) from 1 to 20, do (Actions)



If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    JeÅ›li - Warunki
        ArrowShoot_Index001 Równa siÄ™ 20
    To - Akcje
        Set ArrowShoot_Index001 = 0
    Albo - Akcje
        Do nothing

W tym przypadku nic nie pominie. Przy maksymalnej liczbie jednostek z mozliwoscia uzycia tego spella - 10. 
(Przy braku cooldownu kazda z nich jest w stanie miec po 2 arrowy co daje akurat 20).
Przy takim configu spell sie nie buguje. (Testowane na 10 spamujacych jednostkach przez 0.5 minuty)
Przepraszam za brak polskich znaków.
Reply }}}
Podziękowanie od:
#10
W takim razie nawet gdy jedna instancja będzie aktywna, pętla będzie szła po 20 instancjach, a to z kolei marnotrawstwo xD Kolejny czar
Jeśli zrobisz wiele czarów w ten sposób, możesz zauważyć spadki fps (dolicz jeszcze wycieki pamięci których nie usunąłeś).
Z tego powodu polecam nauczenie się o co chodzi w indeksowaniu Oczko
Ten post był edytowany -259638 raz(y) ostatnio edytowany przez Axator: Za 3 pojutrze, 29:89
Reply }}}
Podziękowanie od:
#11
A100F4R, patrz. Ja ci wytłumaczę mniej więcej to indexowanie.

Masz np. zmienną index. Przy uruchomianiu zaklęcia zwiększasz jej wartość o 1.
Następnie ustawiasz zmienną, np jednostka na jakąś jednostkę i wychodzi to tak: set jednostka[index] = Triggering Unit.

Masz już jedną aktywną instancję.

Robiąc ten krok ponownie, masz już 2 instancje, przy czym:
jednostka[1] oraz jednostka[2], a także index równy 2.

Gdy spell kończy swoje działanie, robisz tak jednostka[index2] = jednostka[index]
Robisz to po to, aby obecna instancja zmieniła swą wartość na najnowszą instację, ponieważ gdybyś index zmniejszył o 1 utraciłbyś najnowszą instancję.
Dopiero potem zmniejszasz index o 1, a także index2 (ten z pętli) o 1, aby pętla wzięła pod uwagę instancję, którą dwie linijki wyżej wymieniłem.
[Image: Intro_S.png]
Reply }}}
Podziękowanie od: A100F4R
#12
[Image: cSfQQ4U.png]

[Image: vjZS4MX.png][Image: MsJmsYp.png][Image: W5MubCi.png]
Poddaje sie chyba xD | Ja po prostu jestem na to za glupi xd (przyznaje sie). Tak staralem sie to zrobic tak jak w tutkach- na koncach petli przepisalem zmienne z indexem ...002 na 001 oraz | ASindex001 -> ASindex001 - 1 | ASindex002 -> ASindex002 - 1 | 
i w wyzwalaczu cast wlaczenie petli tylko kiedy index001 = 1


Attached Files
.w3x   Unnamed.w3x (Size: 16.68 KB / Downloads: 4)
Przepraszam za brak polskich znaków.
Reply }}}
Podziękowanie od:
#13
ArrowShoot_Unit001[ArrowShoot_Index002] = ArrowShoot_Unit001[ArrowShoot_Index002] <-- to jest źle

Jednostka - Move ArrowShoot_Unit001[ArrowShoot_Index002] instantly to ArrowShoot_Point001 <--- powinien być Point002

Jak masz warunek

If(ArrowShoot_Unit003 is budynek
ArrowShoot_Unit003 is alive
ArrowShoot_Unit003 is in Units of type Arrow
ArrowShoot_Unit003 nie równa się coś tam
to akcje
bla bla bla
albo - akcje
tutaj wrzuć wszystko to co znajduje się pod tym ifem

Wtedy powinno działać
Ten post był edytowany -259638 raz(y) ostatnio edytowany przez Axator: Za 3 pojutrze, 29:89
Reply }}}
Podziękowanie od:
#14
(27.03.2017, 21:35)Axator Wrote: ArrowShoot_Unit001[ArrowShoot_Index002] = ArrowShoot_Unit001[ArrowShoot_Index002] <-- to jest źle

Jednostka - Move ArrowShoot_Unit001[ArrowShoot_Index002] instantly to ArrowShoot_Point001 <--- powinien być Point002

Jak masz warunek

If(ArrowShoot_Unit003 is budynek
  ArrowShoot_Unit003 is alive
 ArrowShoot_Unit003 is in Units of type Arrow
  ArrowShoot_Unit003 nie równa się coś tam
to akcje
      bla bla bla
albo - akcje
   tutaj wrzuć wszystko to co znajduje się pod tym ifem

Wtedy powinno działać

[Image: 2uG8GsR.png]
[Image: m63s8mB.png]
Point przy move pomylic musialem jak usuwalem jedna zmienna i nazwe innej :/
Drugi blad pojawil sie przy mechanicznym klikaniu
Poprawilem wyzwalacz (lacznie z przeniesieniem tych akcji (niebieskie zaznaczenie)) natomiast nadal to nie dziala xd


Attached Files
.w3x   Unnamed.w3x (Size: 16.74 KB / Downloads: 0)
Przepraszam za brak polskich znaków.
Reply }}}
Podziękowanie od:
#15
Wrzuciłeś to do nie tego Albo - Akcje co trzeba.
Wrzuć do tego na samym dole
Ten post był edytowany -259638 raz(y) ostatnio edytowany przez Axator: Za 3 pojutrze, 29:89
Reply }}}
Podziękowanie od:

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  




Users browsing this thread:
2 Guest(s)

Silnik forum - © MyBB - Styl forum - iAndrew, grafika - Kithraya, Midas, Bezifabr, Blizzard Entertainment
   
O NAS
Goblin Factory to założone w grudniu 2013 roku forum moderów Warcraft 3 wspólnym wysiłkiem dwóch osób - Scaraba, i WrathaAmona. Celem ich było stworzenie czegoś na wzór starego arcane.pl - miejsca, w którym osoby które wciąż tworzą coś do Warcrafta mogą się spotkać, porozmawiać, zaprezentować swoje dzieła, zapytać o rozwiązanie różnych problemów itd. 22 czerwca 2014 roku Goblin Factory został przeniesiony na nowy silnik, i nowy hosting, a obecnie jest już największym i najpopularniejszym polskim forum dotyczącym Warcrafta 3.