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


Grupy jednostek (podstawy)
#1
I znów powodem dla którego robię ten poradnik jest Dekajo, nie będę się rozpisywał, a więc

Po co są grupy jednostek?
Jeżeli chcemy aby daną akcje wykonało ileśtam jednostek to zamiast robienia akcji możemy zastosować grupy jednostek (przydaje się to też w innych sytuacjach ale to już sami zauważycie)

Jeżeli chcemy żeby akcje dotyczyły kilku(i więcej) mających jakieś wspólne cechy jednostek
to tworzymy następującą akcje w kategori grupa jednostek
[Image: h7fDXDY.jpg]

jak widać możemy z listy wybrać konkretne funkcje według których będą dobierane jednostki do grupy np mają to być jednostki konkretnego gracza w jakimś regionie .
Pojawi nam pod tą akcją pętla. Wszystkie akcję dotyczące tej grupy w tym wyzwalaczu umieszczamy właśnie w tej pętli. Teraz tworząc w niej akcje  dla 1 jednostki oznaczamy ją nie jako "triggering unit" czy cokolwiek takiego ale jako "picked unit", dzięki temu wszystkie jednostki które zostały pick wykonają daną akcje
Tu na przykład owe jednostki neutralnego gracza z danego regionu będą przemieszczały się do innego regionu
[Image: jfQIlpq.jpg]
Nie możemy jednak w pętli dać akcji wait, zamiast tego możemy dać wait pomiędzy dwoma pętlami, jeżeli jednak po akcji wait jednostki nie będą już spełniać danego warunku to można to rozwiązać w poniższy sposóv

Jak stworzyć konkretną grupę jednostek?

Jeżeli chcemy stworzyć konkretną grupę jednostek dla której warto poświęcić więcej niż jedną akcje  to trzeba zrobić zmienną typu grupa jednostek. Potem w wyzwalaczu w którym chcemy stworzyć taką grupę w akcji ustawiamy zmienną
set = i wyświetli się nam taka sama lista jak w 1 obrazku, i jeśli chcemy żeby była to taka sama grupa jak poprzednio to robimy akcję
Set Grupa_Jednostek_Dekajo = (Units in Region owned by Neutralny - wrogi )


Teraz za każdym razem jak będziemy chcieli wydać tym jednostkom akcję to tworząc akcje z 1 obrazka zamiast warunków ustalamy daną zmienną. Dzięki czemu będziemy mogli nadal wydawać akcje tym jednostkom nawet jeżeli już dawno nie będą w tamtym regionie.

Teraz np chcemy aby te nasze jednostki poszły do regionu 001 a po 5 sekundach staneły , normalnie bez tworzenia zmiennych nie byłoby to możliwe gdyż wait musimy dać pomiędzy pętlami a w przy tworzeniu drugiej pętli jednostki te nie będą już w regionie 000 więć "pickując" jeszcze raz neutralne jednostki z 000 nie wybieramy tak naprawde żadnej ze chcianych (chyba że są na tyle wolne że jeszcze nie opuściły tego regionu)
rozwiązanie przedstawiam w obrazku poniżej
[Image: fsCl3Qu.jpg]
Jak pogrzebiecie w wyzwalaczach z kategorii grupa jednostek to zauważycie że istnieją takie opcję jak wyrzucanie i dodawanie pojedynczej jednostki do danej grupy, a nawet włączanie i wywalanie grup jednostek do innych grup jednostek. Akcja Clear sprawia że dana grupa jednostek staję się pusta (wywalamy z niej wszystkich)

Jeszcze jedna rzecz, jeżeli używacie zmiennej grupa jednostek z tablicą to żeby móc działać na danych elementach tablicy musimy ustalić te elementy za pomocą akcji set np
Set grupa_jednostek[1] = jakieś tam jednostki
jeżeli nie mamy zamiaru robić tego przy instalacji mapy, to można ustalić wtedy ten element jako pusty zbiór np
Set grupa_jednostek[1] = (Random 0 units from (Units in (Playable map area)))
dzięki czemu będziemy mogli swobodnie manipulować tą grupą w przyszłości

EDIT: Grupy jednostek zajmują pamięć jeśli mają się ich pojawiać większe ilości mogą one spowolnić pracę mapy. warto zapoznać się z poradnikiem axatora http://www.goblinfactory.pl/showthread.php?tid=341

Bezifabr: Wyłączyłem emotikony w tym poście w celu naprawienia kodu obrazka.
[Image: smiley.gif][Image: sad.gif]
a
[Image: 7XHzOkps.jpg]
Reply }}}
Podziękowanie od:
#2
Fajny poradnik, akurat czegoś takiego potrzebowałem Duży uśmiech
Reply }}}
Podziękowanie od:
#3
burybrzetyslaw Wrote:Potem w wyzwalaczu w którym chcemy stworzyć taką grupę w akcji ustawiamy zmienną
set = i wyświetli się nam taka sama lista jak w 1 obrazku, i jeśli chcemy żeby była to taka sama grupa jak poprzednio to robimy akcję
Set Grupa_Jednostek_Dekajo = (Units in Region owned by Neutralny - wrogi )

Nie byłbym pewien co do tego (Jeżeli chodzi o set variables).. Robi się to za pomocą Grupa Jednostek Add unit. W set variable możemy dać co najwyżej wartość ostatnio stworzonej grupy.
Reply }}}
Podziękowanie od:
#4
Dzięki za sprawdzenie poradnika ale w tym przypadku nie masz racji, w ten sposób też da się ustalić grupę i mniej jest z tym roboty niż pick i set blabla= last created group
No może nie jest mniej roboty ale jest to bardziej klarowne.
[Image: smiley.gif][Image: sad.gif]
a
[Image: 7XHzOkps.jpg]
Reply }}}
Podziękowanie od:
#5
No faktycznie xD

Ale i tak nie zrozumiałeś o co mi chodziło.. Po co robić set variable, skoro można to zrobić za pomocą unit group. Ale tak, jak to mówisz, to jest bez różnicy. No chyba, że potrzebujesz połączenia grup w inny sposób (grupa + grupa), to już wtedy konieczna jest ta akcja.
Reply }}}
Podziękowanie od:
#6
Nie wiem czy dobrze ciebie zrozumiałem ale w niektórych przypadkach ustawienie zmiennej grupy jest konieczne (przypadek w poradniku)
Quote:Teraz np chcemy aby te nasze jednostki poszły do regionu 001 a po 5 sekundach staneły , normalnie bez tworzenia zmiennych nie byłoby to możliwe gdyż wait musimy dać pomiędzy pętlami a w przy tworzeniu drugiej pętli jednostki te nie będą już w regionie 000 więć "pickując" jeszcze raz neutralne jednostki z 000 nie wybieramy tak naprawde żadnej ze chcianych (chyba że są na tyle wolne że jeszcze nie opuściły tego regionu)

poza tym bawienie się za każdym razem w wybieranie z listy odpowiednich tych samych warunków jest dużo dłuższe niż po prostu wybranie zmiennej grupy
[Image: smiley.gif][Image: sad.gif]
a
[Image: 7XHzOkps.jpg]
Reply }}}
Podziękowanie od:
#7
Ja bym dodał od siebie, że nieużywane grupy jednostek zalegają w pamięci i trzeba je usunąć. Tak przynajmniej się nauczyłem z różnych tutków, powiedzcie, czy jest to tak bardzo istotne.
Można je usunąć za pomocą deklaracji:
custom script: call DestroyGroup(udg_Nazwa_Zmiennej_Grupy)
Ten post był edytowany -259638 raz(y) ostatnio edytowany przez Axator: Za 3 pojutrze, 29:89
Reply }}}
Podziękowanie od:
#8
@Axator Tak jak pisałem było dobrze (chyba), nie wiem dlaczego skasowałem ten post, ale ostatnio mam jakąś manie kasowania. W każdym razie mało grup nie obciąża na tyle żeby miało to znaczenie

Masz racje to ważna rzecz axator, dodano do poradnika
[Image: smiley.gif][Image: sad.gif]
a
[Image: 7XHzOkps.jpg]
Reply }}}
Podziękowanie od:
#9
Dzięki za poradnik, przydał się Uśmiech
Reply }}}
Podziękowanie od:
#10
Jednym z błędów tego forum jest to że 1 z obrazków mi się nie wyświetla przez tą niefajną emontikone czy jak tam te gęby się zwią
[Image: smiley.gif][Image: sad.gif]
a
[Image: 7XHzOkps.jpg]
Reply }}}
Podziękowanie od:
#11
Pamiętaj, że podczas pisania postu możesz wyłączać emotikonki .. :)
Reply }}}
Podziękowanie od:
#12
(01.05.2014, 11:09)Axator Wrote: Ja bym dodał od siebie, że nieużywane grupy jednostek zalegają w pamięci i trzeba je usunąć. Tak przynajmniej się nauczyłem z różnych tutków, powiedzcie, czy jest to tak bardzo istotne.
Można je usunąć za pomocą deklaracji:
custom script: call DestroyGroup(udg_Nazwa_Zmiennej_Grupy)

Dodałem link do twojego poradnika, człowiek kiedyś to głupi strasznie był,przepraszam że to zlekcewarzyłem. a teraz mi właśnie uświadomiłeś dlaczego porzuciłem non-target combat system. przez właśnie wyciek pamięci, nie wiem dlaczego tego nie skojarzyłem wtedy :/
[Image: smiley.gif][Image: sad.gif]
a
[Image: 7XHzOkps.jpg]
Reply }}}
Podziękowanie od:

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  




Users browsing this thread:
1 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.