Forum jest aktualnie zamknięte.

Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Tworzenie własnych czarów cz.3 - Systemy i funkcje
#1
Siema,

witajcie w ostatniej części poradnika o robieniu czarów.
Tym razem podzielimy nasze czary na systemy i funkcje, aby łatwiej, wygodniej i wydajniej się na nich pracowało.

O co tak dokładniej chodzi?
Skoro już robimy jakiś czar, to zapewne na naszej mapie nie pojawi się jeden własny czar, ale sporo więcej (na przykład 30) albo tak jak w docie jest ponad 100 bohaterów i każdy ma 4 czary dając nam 400 czarów.
Niektóre z tych czarów korzystają z podobnych albo takich samych funkcji, na przykład 10 z naszych 30 czarów będzie niszczyło drzewa w ten czy inny sposób. W każdym z tych czarów musimy sprawdzać, czy obiekt zniszczalny który chcemy zniszyczć jest drzewem. Mamy więc w 10 czarach to samo. Dobrze by było to wyodrębnić do osobnej funkcji i wywoływać ją za każdym razem jak będziemy ją potrzebowali. Wtedy zamiast 10 takich samych funkcji mamy tylko jedną. Bardzo wygodne prawda?

Systemy możemy zrobić niemalże ze wszystkiego co pojawiło się w pierwszej części poradnika i jeszcze więcej. Systemy mogą też nie mieć nic wspólnego z czarami, jak ich użyjecie to już Wasza sprawa, nam chodzi jedynie o to żeby zminimalizować nasze wyzwalacze i to co się w nich powtarza zastąpić jedną funkcją wspólną dla każdego czaru.

Funkcje zazwyczaj są natychmiastowe na przykład sprawdzenie czegoś (czy obiekt zniszczaly jest drzewem), a systemy zazwyczaj działają w czasie (system knockback).

Zobaczmy najpierw jak zrobić funkcję natychmiastowy.

Mam czar który odpycha jedną jednostkę bez kolizji. Odepchnięta jednostka niszczy drzewa na swojej drodze. Wygląda on mniej więcej tak:

[Obrazek: Ku1SP5P.png]
[Obrazek: Q1YiVPX.png]
[Obrazek: WA8Qt8p.png]

W trzecim wyzwalaczu na dole nie zmieścił mi się na screenie warunek, jak Index = 0 to wyzwalacz ma się wyłączyć.
Widać wyraźnie w którym miejscu sprawdzamy obiekt zniszczalny czy jest drzewem. Spróbujmy go wyciąć z tego wyzwalacza i zrobić z niego funkcję. Będzie to coś w stylu "Ja ci daję obiekt zniszczalny, ty mi powiedz czy jest drzewem czy nie". Jeżeli jest drzewem to ma powiedzieć "tak", a jak nie jest to ma powiedzieć "nie". Znamy zmienną która może osiągać dwie takie wartości. Jest nią Boolean (BDLBQ). Czyli mamy funkcję która pobiera obiekt zniszczalny a zwraca boolean.
Mając takie informacje zróbmy nasz system:

[Obrazek: i3U9gjf.png]

Zauważcie że nie ma tutaj żadnych wydarzeń. Żeby ta funkcja zadziałała, potrzebujemy aby zmienna o nazwie Destructible nie była pusta, tzn aby jakiś obiekt zniszczalny był w niej zapisany. Jak widzicie taka jej konstrukcja spełnia warunki naszego pytania. Odpowiada tylko "tak" lub "nie" Jak jej teraz użyć w naszej umiejętności?

[Obrazek: eZRGPFt.png]
Zapisujemy interesujący nas obiekt zniszczalny w zmiennej Destructible i uruchamiamy funkcję jedną komendą. Dajemy funkcji Obiekt zniszczalny a on zwraca nam boolean. Sprawdzamy czy boolean = Tak. Jeżeli mamy ochotę, to możemy akcję zabijania obiektu zniszczalnego dać od razu do funkcji. Nie będzie wtedy potrzebny nam boolean.

No dobra, to była malutka funkcja, nie zaoszczędza nam tak dużo czasu ale zawsze coś. Mając taką funkcję łatwiej też szukać błędów. Jeżeli dla 9 czarów ta funkcja działa a dla jednego nie, to znaczy że z tym jednym czarem jest coś nie tak, a jak w żadnym nie działa to funkcja jest zła. Ta akurat była bardzo prosta więc raczej nie powinno być w niej żadnego błędu.

W tej umiejętności możemy coś jeszcze zamienić na system. Tym czymś jest odepchnięcie. Wtedy cały czar będzie składać się z jednego systemu i jednej funkcji. Ale jak zrobić coś, co dzieje się w czasie? Przecież odepchnięcie nie jest natychmiastowe.

Robimy to dokładnie w taki sam sposób w jaki robimy czar MUI. Tylko w naszym systemie wyzwalacz w którym jednostka rzuca zaklęcie zamieniamy na wyzwalacz w którym następuje rejestracja (zaraz wyjaśnię na przykładzie o co chodzi).

Robiąc system dążymy do tego samego co przy funkcji z drzewem. Aby zapisać coś w kilku zmiennych i uruchomić jakiś inny wyzwalacz w naszej umiejętności. Tym, co chcemy zapisać w zmiennych, czyli tym co chcemy wysłać do naszego systemu, z pewnością łatwo się można domyślić czym to będzie. Chcemy odpychać konkretną jednostkę, a więc musimy zapisać jednostkę którą chcemy odepchnąć. Ma ona do przebycia jakiś dystans z jakąś prędkością pod jakimś kątem. To wszystko zapiszemy w zmiennych. Aby uruchomić nasz system będziemy potrzebowali więc 4 zmiennych.

Zacznijmy od samego systemu, bo będzie on podstawą wszystkiego. Ma on wyglądać jak czar MUI. A więc do dzieła:

[Obrazek: IFl0yPC.png]

To jest ten wyzwalacz w którym następuje rejestracja. Jak widzicie jest bardzo podobny do tego, gdzie jednostka rzuca jakiś czar. Nie ma oczywiście wydarzenia i warunku, a w zmiennych z indeksem zapisujemy zmienne, w których zapisaliśmy coś tam gdzie jest nasz konkretny czar.

[Obrazek: QEq0ZpI.png]

Drugi wyzwalacz jest identyczny jak wyzwalacz w naszej zdolności.

Jak zobaczmy jak użyć teraz naszego systemu na dwóch zaklęciach: obszarowym i na jedną jednostkę:

Przykład 1:

[Obrazek: gHY49we.png]

Przykład 2:

[Obrazek: 8wnBChf.png]

Jak widzicie użyłem jednego systemu w obu czarach. Oba czary drastycznie zmniejszyły swoją wielkość i nadal są MUI. Jeżeli umiejętnie podzielimy swoje czary na systemy, to nie będziemy potrzebowali robić czaru MUI w dwóch wyzwalaczach. Oczywiście nie zawsze da się tego uniknąć, wszystko zależy od tego ile systemów posiadacie, jak bardzo są one zaawansowane i w jaki sposób z nich korzystacie.

Po przeczytaniu wszystkich części poradnika w całości i samodzielnym ćwiczeniu tego w praktyce z pewnością będziecie tworzyć niesamowite czary. Mam nadzieję że każdy znajdzie tutaj coś nowego do nauczenia się i będzie chętnie korzystać z tej wiedzy.

Jeżeli macie jakieś pytania odnośnie całego ogólnego tematu robienia czarów to piszcie śmiało.
Jeżeli o czymś zapomniałem lub uważacie że powinno się tutaj pojawić to również piszcie.

Pozdrawiam wszystkich.
Odpowiedz
  


Skocz do:


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