Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Jak korzystać z unit indexera
#1
Kostka 
Siema,

jako, że sporo osób nie wie jak z tego wspaniałego systemu korzystać, wyjaśnię Wam dokładnie jak to zrobić.

Na początek wyszukujemy sobie unit indexer na hive, na przykład ten: https://www.hiveworkshop.com/threads/gui...-0.197329/
Dziękujemy autorowi za wykonanie go dla nas.

Na ściągniętej mapce znajdziemy takie oto katalogi:

[Obrazek: c0zGaep.png]

Kopiujemy zmienne z katalogu WESTRING_VARIABLESCATEGORY oraz katalog Unit Indexer. Katalog Test zawiera tylko wyzwalacze do testowania indexera, ten katalog jest opcjonalny.

Gdy przekopiujemy niezbędne rzeczy na nasza mapę, zamieniamy wszystkie wydarzenia "Map Initialization" na "Gra = UnitIndexEvent becomes Równa się 3.00"

[Obrazek: T4WXWsw.png]

Podobnie dla wydarzenia "Jednostka - A unit enters region" Zamieniamy na "Gra - UnitIndexEvent becomes Równa się 1.00" 
Te wydarzenia sprawiają, że nasze akcje uruchomią się dopiero po zaindeksowaniu nowych jednostek.

Taki zabieg sprawia, że indexer jest gotowy do pracy.

A teraz PO CO NAM ON?
Indekser sprawia, że każda jednostka na mapie dostaje swój unikalny indeks zapisany w custom value jednostki.
Indeksowanie odbywa się automatycznie, my jedynie z niego korzystamy.

Jeżeli chcemy, aby nasze jednostki posiadały dodatkowy atrybut jak na przykład "Energia", to możemy to zrobić w taki sposób:

[Obrazek: valf1gg.png]

Taki oto przykład, załóżmy, że jednostka może atakować tylko, gdy posiada energię (nie dałem przykładu na regenerację energii, możecie sami dorobić xD). Kiedy nowa jednostka pojawia się na mapie, ustawiamy jej energię na domyślne 100. Aby to zrobić, pobieramy jej custom value (które posiada unikalny indeks), na podstawie tego custom value indeksujemy tablicę Energii.
Załóżmy więc, że mamy trzy jednostki z indeksami od 1 do 3.
Stanie się tutaj coś takiego:
Energy[1] = 100
Energy[2] = 100
Energy[3] = 100

Teraz załóżmy, że jednostka z indeksem 2 zaatakowała kogoś jeden raz. Traci wtedy jeden punkt energii. Po takim ataku nasza tablica wygląda tak:

Energy[1] = 100
Energy[2] = 99
Energy[3] = 100

Tak więc Energy[2] należy tylko do jednostki, której custom value zawiera liczbę 2. Żadna inna jednostka na mapie nie będzie posiadała w custom value liczby 2.
------------------------------------------------------------------------------------------------------------------------

Inny przykład pokazujący, jak stwierdzić, czy dana jednostka jest zakorzeniona czy nie.

[Obrazek: nXOEYIQ.png]

Dosyć ułomny przykład, bo zakorzenienie może zostać przerwane, należy to wykryć i stosownie zareagować.

Domyślnie ustawiamy wszystkie budynki jako zakorzenione (Rooted = TAK),
Kiedy jednostka użyje rozkazu "unroot", zmieniamy jej Rooted na NIE.
Kiedy jednostka użyje rozkazu "root", zmieniamy jej Rooted na TAK.
To są informacje o jednostkach które są zakorzenione, a które nie. Można na podstawie tych informacji zrobić pętlę sprawdzającą wszystkie jednostki na mapie, czy są zakorzenione.

Pamiętajcie również, aby każdej nowo utworzonej/zaindeksowanej jednostce ustawić domyślne wartości dla wszystkich zmiennych, jakie ta jednostka będzie wykorzystywać. Jeśli tego nie zrobicie, ryzykujecie, że nowa jednostka otrzyma indeks innej jednostki(już usuniętej), która posiadała inne wartości w swoich zmiennych, a które zostaną odziedziczone przez nową jednostkę.

Praktycznych zastosowań indeksera jest całe mnóstwo, jednak strzeżcie się: NIGDY NIE ZMIENIAJCIE SAMODZIELNIE WARTOŚCI CUSTOM VALUE JEDNOSTEK, WTEDY INDEKSER BĘDZIE BEZUŻYTECZNY.

Dajcie znać czy jest to zrozumiałe, czy przykłady są przejrzyste.

Lucius: Poradnik zaakceptowany, a temat zostaje zamknięty. W razie potrzeby, ponownego jego otworzenia, proszę o kontakt na PW. 
#2
Może ja używam jakiegoś ułomnego indexera, ale w swoim projekcie jeśli np. przechowuję rangę jednostki w indeksie, albo jej kolor to jeśli jednostka zniknie i nowa po pojawieniu się otrzyma jej zwolniony indeks, system nie przewiduje przywrócenia wartości do stanu początkowego więc należało zrobić w wyzwalaczu stosowny reset zmiennych dla jednostek. Warto mieć na uwadze jakby ktoś zauważył niezgodności w zmiennych u jednostek.
#3
Tak, masz rację, zapomniałem o tym wspomnieć :D Zaraz uzupełnię
#4
Sam myślałem by o tym napisać, dobra robora Axartor :)
#5
A ja bym powiedział bardziej, że to potrzeba jest matką wynalazków.
Gdyby nie byłoby potrzeby indexera - nie byłoby poradnika
Gdyby nie było potrzeby, aby ludzie wrócili na forum, nie byłoby reformy 

tak czy inaczej dzięki za poradnik, axator ;)
  


Skocz do:


Użytkownicy przeglądający ten wątek:
1 gości