Macie przed sobą szóstą już część kursu. Opiszę tutaj wszystkie typy komend, z których można tworzyć odpowiednie funkcje animacji oraz program do tworzenia własnych AI Scriptów, czyli SCAiEdit II. Sorry, że obiecanych programów nie było na CD, ale ich autorzy nie zgodzili się na ich umieszczenie. Jeśli masz internet, to po prostu sobie je ściągnij (linki są tutaj i chyba w dziale LINKI), jeśli nie... musisz zaopatrzyć się w ok. 20 dyskietek, iść do jakiejś kafejki internetowej, tam je ściągnąć i zgrać za dyskietkę. Jeśli nie ma w twoim mieście kafejki... no cóż, to masz dużego pecha. Innych pomysłów niestety nie mam. 

1.   ICE - LISTA KOMEND  

Oto wszystkie komendy, jakie możecie znaleźć w ICE. Niestety, niektóre z nich nie są znane, ale większość znana jest (pomijam te, które nie są znane). Jeśli zapamiętasz główne typy komend będziesz wiedział, jak tworzyć z nich funkcje animacji. Pamiętaj - 1% (lub 2%, 3%, 4% itp.) to dowolna liczba. Jeśli będzie Plame frame 1% (czyli: Odtwórz klatkę numer %1), oznacza to, że dana komenda odtworzy klatkę 1%, gdzie 1% to numer klatki. Lista komend MUSI kończyć się jedną z tych akcji: Go to offset 1% lub End Animation, Remove Graphic. Inaczej ICE poinformuje cię o błędzie i nie pozwoli ci zapisać zmian. Jest jeden Offset, o którym warto wiedzieć - 31162 - tu animacja po prostu robi pętlę (czeka 125 jednostek sekundy, a potem znowu idzie do 31162, czeka i znowu, i tak w kółko). Najbezpieczniej zakończyć listę komend właśnie taką komendą. 

Jeśli w nawiasie jakiejś komendy (zaraz po liczbie, zazwyczaj %1) jest nazwa pliku (sprites.dat, images.dat), to oznacza, że w miejsce %1 należy wpisać liczbę odpowiedniego obiektu, czyli numer ID (patrz opis Arsenala III w 4 części kursu). Przy umieszczaniu pokryć / podłóż (overlay / underlay) zazwyczaj trzeba będzie wstawić liczbę %2 do „vertical offset”. Przyznam się, że nie wiem o co chodzi w tym ofsecie, ale tam najczęściej wstawiana jest liczba zero.  

Play frame 1%

Odtwarza klatkę o podanym numerze (czyli odpowiednim w GRP) - jeśli dany sprite ma zaznaczoną opcję Turn Gfx, to oznacza to, że zostanie wyświetlona odpowiednia klatka zależnie w którą stronę sprite jest zwrócony (są 22 strony, ale ponieważ SC automatycznie robi lustrzane odbicie, to wystarczy tylko 17). Jeśli opcja ta nie jest zanczona, to komenda wyświetli klatkę z podanym numerem.  

Play frame 1% according to tileset

Ta komenda używana jest dla spritów, które mają inny wygląd w zależności od scenerii w jakiej się znajdują (np. Gejzery Vespańskie). Reszta - jak wyżej.  

Shift graphic position 1% vertical units:

Przesuwa sprite o jeden pixel w dół i zostawia aż do czasu zmiany. Aby sprite powrócił do normalnej postaci, w 1% wstaw 0. 

Wait %1 ticks

Czeka 1% jednostek sekundy (niestety nie wiem, ile wynosi dany “tick”). 

Wait either %1 or %2 ticks (random)

Losowo wybiera pomiędzy pierwszą ilością ticków (1%), a drugą (2%), a potem czeka odpowiednią ilość.  

Go to offset %1

Idzie do offsetu o numerze %1 i dalej tam. Możesz podwójnie kliknąć na daną komendę, aby ICE automatycznie przeszedł do danego Offestu.  

Place active overlay (images.dat) %1 at vertical offset %2

Ta komenda tworzy pokrycie (np. blask silników, ogień na palących się budynków) o numerze w Images.dat na górze danego spritu. To pokrycie będzie przesuwało się razem ze spritem (co oznacza że jest „aktywne”). Zostanie stworzone na pionowym ofsecie o liczbie podanej w %2 (najczęściej jest tam 0).  

Place active underlay (images.dat) %1 at vertical offset %2

Identyczna jak poprzednia komenda, ta tworzy “podłoże”, czyli coś, co będzie przesuwało się z jednostką (spritem) i będzie cały czas pod nią. Głównie używane do tworzenia cieni. Reszta - jak poprzednio. 

(?) Switch current underlay for underlay (images.dat) %1

Tak komenda (chyba) dotyczy power-upów. Zamienia podłoże (niezależne - czyli takie, które nie porusza się z żadnym spritem) - power-upa na pokrycie (też power-up - wtedy, kiedy robotnik go bierze). 

Place overlay (images.dat) %1 at vertical offset %2. Requires LOG file

Ta komenda tworzy pokrycie (numer %1 grafiki w images.dat) w pionowym ofsecie o numerze podanym w %2. Jednak potrzeba do tego jeszcze ustawień z plików LO* (dodaje dodatkowe ustawienia i opcja do grafiki), więc zajmuj się tym tylko wtedy, gdy będziesz wiedział, o co chodzi.  

Place independent overlay (sprites.dat) %1 at vertical offset %2

Ta komenda stworzy niezależne pokrycie o numerze %1 w sprites.dat (spójrz do AIII i numery ID) w pionowym ofsecie o liczbie podanej w %2. Niezależne - oznacza to, że pokrycie będzie nad danym spritem (najczęciej jednostką), ale nie będzie on poruszał się z tą jednostką. Głównie używane dla eksplozji, które ukazują się nad zniszczoną właśnie jednostką.  

Place independent overlay (sprites.dat) %1, over everything below this anim level, at vertical offset %2

Jak powyższa, jednak ta komenda tworzy sprite na maksymalnej wysokosci, a nie nad obecnym spritem / jednostką. Spójrz do 4 części kursu, aby uzyskać info na temat poziomów animacji (opis Arsenala III).  

Place independent underlay (sprites.dat) %1 at vertical offset %2

Kolejna komedna tworzy podłoże na najniższym poziomie animacji (czyli pod wszystkim). Używane głównie do wyświetlania martwych ciał zabitych jednostek czy szczątków zniszczonych struktur.  

Display overlay (sprites.dat) %1 with vertical offset %2. Requires LO* file

Nieznane. Potrzebuje dodatkowych ustawień z plików LO*.  

Display overlay (sprites.dat) %1 with unknown var %2. Requires LOG file

Jak wyżej. 

End animation, remove graphic

Usuwa sprite z ekranu. Już nigdy nie będzie mógł być on wyświetlony. 

Play sound (sfxdata.dat) %1

Odtwarza dźwięk o numerze %1 w pliku sfxdata.dat.  

Randomly play one of %1 sounds (sfxdata.dat): %2 or %3 or %4 or...

Komenda podobna do powyższej, ale tu określasz pewną ilość dźwięków, a potem komenda ta losowo wybiera jeden z nich i go odtwarza. W 1% określasz ilość tych dźwięków, a potem ich numery w kolejnych %2, %3, %4... itp.  

Randomly play a sound (sfxdata.dat) between entries %1 and %2

Jeszcze inna metoda odtwarzania dźwięków. Odtwarza ona losowo wybrany dźwięk o liczbie pomiędzy liczbami %1 i %2. Jeśli np. w %1 wpiszesz 5, a w %2 10, to komputer będzie mógł odtworzyć takie dźwięki: 5, 6, 7, 8, 9, 10. Pamiętaj, że komedna odtwarza JEDEN dźwięk w tym samym czasie.  

Do damage (missiles)

Ta komenda używana jest przy różnego rodzaju rakietach, pociskach. Jeśli taki sprite osiągnie cel, to zada mu obrażenia.

 Attack with %1 (1 = Ground, else Air) and play sound %2 (0 = no sound)

Ta komenda rozkazuje spritowi zaatakować za pomocą określonej broni ustawionej w %1 (1 - broń naziemna, wszystko inne - powietrzna). Dodatkowo, odtworzy ona dźwięk podany w %2 (numer ID w sfxdata.dat).

Follow frame changes of main graphic (underlay opcode for shadows)

Komenda używana przez sprity, które zazwyczaj są pokryciami / podłożami innych. Po prostu: jeśli główny sprite, dla którego ten jest pokryciem / podłożem wyświetla klatkę numer 1, to ten też będzie wyświetlał klatkę numer 1. Używane głównie do cieni jednostek i struktur.  

Using randomizer value (?) %1, jump to offset %2

Losowo wybiera liczbę (jakoś to się łączy z wartością podaną w %1) i wtedy, gdy ta liczba ma określoną wartość, idzie do offsetu podanego w %2. Używane jest do do animacji postoju - np. zmiany kierunku patrzenia, czy celowanie bronią u Marinesów i Ghostów.  

Turn graphic %1 frames counterclockwise

Obraca dany sprite o %1 klatek przeciwnie do wskazówek zegara.  

Turn graphic %1 frames clockwise

J.w., ale zgodnie ze wskazówkami.  

Turn graphic 1 frame clockwise

J.w., ale obróci o jedną klatkę. 

Turn graphic %1 frames in a random direction

Jak powyżej, ale losowo wybierze stronę - zgodnie czy przeciwnie do wskazówek zegara.

(?) Send signal to unit for order: %1

To jest bardzo ważna komenda, ale nie jestem pewien do czego ona służy. Wysyła ona rodzaj sygnału (o wartości podanej w %1) do jednostki, który jej coś mówi. Tylko niestety, nie wiem co. Dobrym pomysłem jest umieszczenie tej komendy, jeśli coś nie działa.  

Attack with %1 (1 = Ground, else Air)

Ta komenda służy w ataku. Patrz poprzednia komenda z “Attack” w nazwie - ta jednak nie pozwoli ci odtworzyć żadnego dźwięku. Możesz „atakować” więcej niż raz, dając podobne efekty, jak np. Valkyrie.  

Attack with appropriate weapon

J.w., ale nie musisz określać broni (przy ataku naziemnej jednostki użyje naziemnej broni, przy powietrznej - broni przeciwpowietrznej)  

Cast Spell

Używane przy rzucaniu zaklęć (zazwyczaj numer podany w Special Ability Animation 2). Kiedy ta komenda zostanie użyta, jednostka użyje specjalnej umiejętności.  

Use weapon (weapons.dat) %1

Ta komenda zmusza sprite do ataku celu przy użyciu broni o numerze %1 w pliku weapons.dat. Zazwyczaj używane jest to dla robotników, którzy mają tą samą animację zbierania surowców jak i ataku. Jednak komenda może działać dobrze także z innymi animacjami.  

Move graphic %1 units forward

Używana do animacji ruchu - przesuwa jednostkę o %1 jednostek w kierunku, w którym jest ona zwrócona. 

(?) Goto Repeated Attack if still attacking

Ta komenda odpowiada za powtórzenie ataku przez jednostkę, jeśli cel ataku nadal istnieje. Powinieneś umieścić tą komendę na końcu animacji rozpoczęcia ataku (Initial Attack Animation) oraz kontynuowania ataku (Repeated Attack Animation). Jeśli ta komenda nie istnieje, jednostka nie powtórzy swego ataku.  

Begin unbreakable code section

Ta komenda połączona jest z poniższą - rozpoczyna ona nieprzerywalną sekcję kodu. Na czym ona polega? Otóż podczas jej trwania gracz nie może wydać spritowi żadnych rozkazów oprócz tych typu anuluj (np. strzał Battlecruisera z Yamato Gun lub normalny atak Valkyrii). 

End unbreakable code section

Kończy nieprzerywalną sekcję kodu. 

(?) Ignore other opcodes

Powoduje, że sprite będzie ignorował wszystkie poniższe komendy oprócz goto.  

Attack with projectile spawned from angle %1

Zmusza jednostkę do ataku (jeśli atakuje ona za pomocą jakiegoś pocisku czy rakiety), ale obiekt pojawi się w kącie określonym w %1.  

Temporarily remove graphic

To “chwilowo usunie”, dany sprite. Można go przywrócić za pomocą poniższej opcji. 

Play graphic again after temporarily removed (by op 0x32)

Ta komenda przywraca “chwilowo usuniętą” grafikę. 

Play specific frame %1

Ta komenda różni się od Play Frame %1 tylko tym, że pokaże klatkę numer %1 i NIE DODA 17 lub mniej klatek w zależności, w którą stronę jednostka byłaby zwrócona.  

If picked up (powerup) goto offset %1

Ta komenda zazwyczaj używana jest jako początek animacji power-upów. Kiedy power-up jest podniesiony, jest jakby „tworzony ponownie” w rękach robotnika. Jeśli robotnik weźmie power-up, to animacja pójdzie do linijki podanej w %1.   

If target within range of %1 (pixels?) goto offset %2

Ta komenda używana jest w animacji specjalnych ataków (jak np. atak Archona). Jeśli cel jest w zasięgu %1 pikseli, to animacji idzie do linijki podanej w %2. Np. fala psioniczna Archona ma różną długość, w zależności od tego, jak blisko znajduje się jej cel.  

If target in arc with starting angle at %1 clockwise from -45 degrees, until %2 degrees, goto offset %3

Komenda ta idzie do linijki numer %3, jeśli cel spritu znajduje się w zasięgu kątów od %1 do %2. Inaczej komenda będzie zignorowana. Używane jest to głównie do stacjonarnych jednostek (jak np. Sunken Colony), które mają inną animację ataku w zależności od pozycji celu.  

2. SCAIEDIT II - EDYTOR SKRYPTÓW AI  

Jak pewnie pamiętacie, Blizzard zrobił do każdej misji inny skrypt - dlatego przeciwnik w nich zachowuje się inaczej. My też możemy robić AI Scripty za pomocą programu SCAiEdit. Na początek radzę się w niego zaopatrzyć, ściągając go stąd. OK, po zainstalowaniu tego programu możemy rozpocząć edycję skryptów. Zanim jednak włączysz program, musisz zaopatrzyć się w trzy pliki (są w MPQ, ściągnij je za pomocą jakiegoś MPQ Vievera):

aiscript.bin - pierwszy i podstawowy plik ze skryptami

bwscript.bin - drugi plik ze skryptami. Został stworzony po to, ponieważ pliki *.bin nie mogą przekroczyć 65335 bajtów, a w aiscript.bin ten limit został już przekroczony

stat_txt.tbl - w tym pliku, wśród gąszczu tekstów, znajdują się nazwy skryptów

Skrypty AI to nie tylko „inteligencja” odpowiadająca za rodzaj i kolejność budowanych struktur i jednostek. To wszystko, co po prostu „rozkazuje” jednostkom coś robić: czyli np. wejście do bunkru / transportowca, rozpoczęcie patrolu, użycie specjalnej umiejętności.  

Dobra, zaczynamy! Włącz program. Od razu zwiadamiam - tworzenie dobrych skryptów to cholernie żmudna robota, a sam program jest dość skomplikowany. W góenym pasku znjduje się kilka opcji. Opiszę po kolei wszystkie, najpierw File:

New AI Script file - tworzy nowy plik ze skryptami. Aby mógł on funkcjonować, i tak musi się nazywać aiscript.bin lub bwscript.bin, więc raczej pomiń tę opcję

Load Necessary Files - wgrywa do pamięci programu trzy niezbędne pliki; aiscript.bin, bwscript.bin i stat_txt.tbl - muszą być one gdzieś na dysku

Set Default Directory - tu ustawiasz domyślny katalog na dysku, w ktróym masz swoje modyfikowane pliki aiscript.bin, bw.script.bin i stat_txt.tbl.

Save Modification As - zapisuje twoją pracę w wymienionych trzech plikach (umówmy się: zamiast aiscript.bin, bwscript.bin i stat_txt.tbl, będę pisał ABS, OK.? Zaoszczędzi mi to pisania :)))

Import IAF File into ascript.bin - wgrywa plik IAF (Importable AI File - wgrywalny plik AI) w plik aiscript.bin

Import IAF File into bwscript.bin - wgrywa plik IAF do bwscript.bin (na razie pomiń te dwie opcje)

Export current script to IAF File - zapisuje edytowany obecnie skrypt w pliku IAF

Import ASC2 File into aiscript.bin - wgrywa plik ASC2 do aiscript.bin

Import ASC2 File into bwscript.bin - wgrywa plik ASC2 do bwscript.bin (j.w., też pomiń te opcje)

Dump current script to txt File - zgrywa obecnie edytowany skrypt do pliku tekstowego

Exit - wychodzi z programu  

Pliki IAF można tworzyć w tym programie, ASC2 - w programie ASC2Editor, dołączonym do SCAiEdit II w katalogu Utils. Na razie jednak zajmiemy się kolejnymi opcjami. Teraz do omówienia będzie opcja Edit.

Cut - wytnij (kopiuje i kasuje linijkę)

Copy - kopiuje

Paste After - wkleja skopiowaną linijkę po wybranej linijce

Paste Before - wkleja skopiowaną linijkę przed wybraną linijkę 

Kolejna opcja dotyczy samych skryptów, czyli Script (bo samych skryptów w plikach skryptowych jest kilkadziesiąt). Warto coś wspomnieć, zanim przejdę dalej: możesz się zastanawiać, JAK robi się te skrypty? Otóż składają one się po prostu z odpowiednich linijek, np. zbuduj 2SCV’y, zgrupuj wojsko, zaatakuj, odkryj technologię itp. Chyba teraz wszystko powinno być jasne.

Add Script Line - dodaje linijkę do skryptu

Edit current Script Line - edytuje obecnie wybraną linijkę (trzeba najpierw wybrać daną linijkę, aby podświetliła się ona na niebiesko.

Delete current Script Line - kasuje wybraną linijkę

Move script line up - wybiera poprzednią linijkę

Move script line down - wybiera następną linijkę (dwie zupełnie bezużteczne opcje, gdyż lepiej jest wybierać linijki myszką).

Create new script - tworzy nowy skrypt (opis okna za chwilę)

Rename current script - zmienia nazwę wybranego skryptu (musisz wybrać najpierw skrypt - wybieramy go w polu pod ikonkami - jeśli masz tam puste pole, to wybierz opcję Load Necessary File i wgraj wszystkie pliki)

Delete current script - kasuje wybrany skrypt

Goto script line - idzie do wybranej linijki skryptu (każda ma swój numer 1,2,3 itp.)

Change Flags - zmienia ustawienia skryptu (o tym za chwilę)

Script Checker - ta opcja poszukuje błędów w twoim skrypcie  

Wszystkie wymienione wyżej opcje są też ukazywane po kliknięciu PPM na jedną z linijek. Zanim zajmiemy się tworzeniem skryptów, opiszę dwie ostatnie opcje. Utils pozwala włączyć dwa programy (ASC à ASC2 Converter oraz ASC2 Editor - oba omówię później, albo w ogóle, w zależności od ich przydatności). W Help, w Color Legend, możesz znaleźć co oznacza tło pod linijkami, a About to ogólne info o programie. Tu macie opis kolorów:

biały - normalna linijka w skrypcie

szary - niezapisana linijka skryptowa

czerwony - normalna linijka w skrypcie, używana przez inne skrypty 

Praktycznie wszystkie opcje mają swoje odpowiedniki w ikonkach - po przytrzymaniu kursora na danej ikonce pojawi się jej nazwa. 

O ile wcześniej tego nie zrobiłeś, zrób to teraz: wybierz opcję Fileà Load Necessary Files i wgraj pliki ABS. Wybieraj niektóre skrypty i popatrz. Jest tu duuuuuużo linijek i niestety - ty też będziesz musiał tyle. Wielu z was opadnie pewnie teraz z sił, no ale cóż - chcieliście skryptów AI, to macie. Ci co chcą brnąć dalej, zapraszani są do dalszej lektury. 

Wybierz opcje Script à Create New Script . Pojawi się to oto okno: 

W Script Identifer wpisujemy czteroliterowy identyfikator używany przez pliki skryptowe. Dwa skrypty mogą mieć tą samą nazwę (wspisujemy ją w Script Name), ale nie mogą identyfikatora. W Deafult flags możemy ustawić trzy opcje naszego skryptu: Executed at location - uruchamiany na lokacji (większość skryptów), Invisible in StarEdit - niewidzialny w StarEdicie (większość skryptów używanych w misjach w oryginalnej kampanii), Brood War Script - skrypt używany przez Brood War (ponieważ program ten i tak wymaga Brood Wara, to niech ta opcja poostanie włączona). Zostaw domyślne opcje. W Default Script Begin można wybrać początek skryptu: Simple Reset - normalny skrypt, Custom Script - skrypt uzywany w grze multiplayer, Campaign Script - skrypt używany w grze singleplayer (w kampaniach). Opcja Stocked into bwscript.bin file powinna być włączana tylko wtedy, gdy robisz więcej niż dwa nowe skrypty - dla przypomnienia: objętość pliku nie może przekroczyć 65 KB, a aiscript.bin ma już 56 KB, więc zbyt duża ilość skryptów może się w nim nie zmieścić. Jednak jeśli robisz jeden skrypt (na pewno jeden na początku), to nie zaznaczaj tej opcji. 

 

Teraz mamy już skrypt, choć nic w nim nie ma. Spójrz na dół ekranu programu - tu też jest kilka nowych opcji, które dotychczas omijaliśmy, a teraz się nimi zajmiemy. Wszystkie one dotyczą dodawania akcji (nowych linijek) do skryptu. Zacznę od prawej, tak jak czyta się mangi :). A więc Open Command List otwiera plik z komednami (commandlist.txt - jest w katalogu programu), a klikając na Before i After możemy wybrać, czy nowa linijka ma być dodana przed wybraną linijką czy po niej. Są dwie metody na dodanie linijki - możemy wpisać komendę w pole obok Add a line i nacisnąć Enter (odradzam) oraz druga - wybrać odpowiednią akcję z listy nad przyciskiem Add Line. Opiszę oczywiście wszystkie akcje. Ale najpierw wybierz jakąś z nich, najlepiej Build. Jak widzisz obok listy pojawił się nowy tekst i dwa pola. W pierwszym wpisujesz liczbę, w drugim - rodzaj jednostki / budynku. Po ustawieniu właściwości klikasz na Add Line i już mamy pierwszą linijkę. Jeśli się pomyliliśmy, to możemy edytować linijkę, klikając na odpowiedni jej element (np. liczbę, rodzaj jednostki w przypadku akcji Build). No to może teraz opis wszystkick akcji? 

ATTACK[0xB] - ta akcja wydaje komputerowi rozkaz ataku. Aby komputer mógł zaatakować, musi wiedzieć, czym - patrz niższe akcje

ATTACK[0xE] - podobna do powyższej - te dwie kacje powinny być razem, jeśli chcesz wydać rozkaz ataku komputerowi

ATTACK_ADD - za pomocą tej akcji dodajesz do grupy atakującej odpowiednią ilość (pierwsze pole) jednostek (drugie pole)

ATTACK_GROUP - po tej akcji komputer zbierze swoją grupę w kupę :), czyli zgrupuje ich przed atakiem

BUILD - buduje struktury (pierwsze pole) aż do odpowiedniej ilości (drugie pole). Tylko za pomocą tej akcji powinieneś budować struktury (nie jednostki), ale pamiętaj: robotnicy, czyli SCV, Drone, Probe (i dodatkowo Overlord) są traktowane jak budynki, więc do ich budowy używaj akcji Build nie Train

CHECK_RESOURCES - sprawdza czy komputer ma odpowiednią ilość minerałów (pierwsze pole) i gazu (drugie pole). Jeśli tak, to idzie do podanej linijki (trzecie pole).

CLEAR_COMBAT_DATA - z nazwy wynika, że ta akcja powinna kasować poprzednie, ale ona nie ma chyba żadnego zastosowania.

COND - nie wiadomo (wiem że są dwa)

DISPRUTION_WEB - puszcza mgłę korsarza na wybraną lokacje

ENTER_BUNKER - wchodzi do bunkra

ENTER_TRANSPORT - wchodzi do najbliższego transportu

EXPAND - chodzi tu o rozwój komputera, czyli o budowę odpowiednich budynków. Do tego dojdziemy później

GEN_CMD - rola tej akcji jest dla mnie nieznana, ale wiem, że MUSI być ona stawiana po każdej akcji Build

GOTO - idzie do linijki numer (pierwsze pole)

HARASS LOCATION - nie wiadomo, zignoruj

IF_COMMAND - jeśli coś, to pomiń następną linijkę. Ale co, to niestety nie wiem

IF_NOT_COMMAND - j.w., ale chodzi tu o brak czegoś

JUNKYARD_DOG - sprawia, że jednostki na danej lokacji zaczną błąkać się bez celu (jak Criterrsy)

MAKE_PATROL - jak Make This Units Patrol, spójrz do trzeciej części kursu

MOVE_DT - jak Move Dark Templars to Region, spójrz do trzeciej części kursu

MULTI_RUN - oprócz dotychczasowych linijek uruchomi jednocześnie te, które zaczynają się od (pierwsze pole)

NUKE_LOCATION - spuszcza Nukę na wybraną lokację

PLAYER_ALLY - jak Set Player to Ally, patrz druga część kursu

PLAYER_ENEMY - jak Set Player to Enemy, patrz druga część kursu

RECALL - puszcza Recall na wybranej lokacji

REPAIR/REBUILD - odbudowuje / naprawia ilość (pierwsze pole) odpowiednich jednostek (drugie pole), jeśli są uszkodzone / zniszczone

RESEARCH - odkrywa odpowiednią technologię (pierwsze pole)

RESET - resetuje AI, pozwala zacząć od początku skrypt. Ta akcja powinna być NA SAMYM początku w KAŻDYM skrypcie

SHARED_VISION_OFF - wyłącza podzieloną wizję (patrz Turn Off Shared Vision for Player x w III części kursu)

SHARED_VISION_ON - włącza podzieloną wizję (patrz Turn On Shared Vision for Player x w III części kursu)

SPAWN - są to komendy, które rozkazują budowę jednostek. Niestety, nie wiemy, jak one działają. Do budowy jednostek używaj na razie akcji Train

STOP - zatrzymuje skrypt. Skrypt MUSI być zakonczony akcją Stop lub Goto

SWITCH_RESCUE - jak skrypt Switch Computer Player to Rescuable (patrz II część kursu)

TRAIN - główna akcja służąca do produkcji jednostek. Rozkazuje trenować jednostki (pierwsze pole), aż osiągnie odpowiednią ich ilość (drugie pole)

TRIBRANCH - losowo wybiera jedną z linijek podaną w pierwszym, drugim lub trzecim polu i idzie do niej

UNITS_SUICIDE - jak srypty Send All Units to Random / Strategic Suicide Missions (patrz II część)

UNK - wszystkie te akcje są nieznane

UNK_BEHAVIOR - nie wiadomo co toto robi, ale trzeba to KONIECZNIE dać na początku skryptu, zaraz po poniższej akcji

UNK_BUILDING - dawaj to w każdym skrypcie zaraz po akcji Reset

UPGRADE - odkrywa odpowiedni upgrade (pierwsze pole) na poziom (drugie pole)

VALUE_AREA - jak skrypt Value This Area Higher (patrz II część)

WAIT - czeka odpowiednią ilość sekund 

Na koniec dam trochę niezbędnych rad do edycji skryptów. A więc na początku każdego skryptu muszą być trzy akcje (w takiej kolejności): RESET, UNK_BUILDING, UNK_BEHAVIOR. Po każdej akcji BUILD musi być akcja GEN_CMD, czyli Set General Command Target. Aby komputer zacząć zbierać minerały, musisz mu dać na początku taką akcję: Build Terran SCV (oczywiście, jeśli skrypt jest dla Zergów, będzie Drone, jeśli dla Protów - Probe) until it commands (i tu liczba robotników, jakich komp będzie miał JUŻ ZBUDOWANYCH, czyli umieszczonynch przez ciebie w StarEdicie). Jak zmusić komp do ataku? Najpierw musisz dodać do atakującej grupy odpowiednie jednostki ( ATTACK_ADD), potem zgrupować wojsko ( ATTACK_GROUP), wreszcie wydać rozkaz ataku umieszczając akcje w takiej kolejności: ATTACK[0xE], ATTACK[0xB]. Każdy skrypt musi być zakończony jedną z akcji: STOP lub GOTO lub TRIBRANCH.  

OK, do omówienia pozostała jeszcze komenda EXPAND. O co w niej chodzi? Otóż gdybyś chciał wszystko razem umieścić - budowę struktur i jednostek - komputer nie mógł by jednocześnie budować jednostek i budynków. Najpierw musiałby zbudować budynek podany w akcji, a dopiero potem mógłby iść dalej. Do tego właśnie służy komenda EXPAND - czyli rozwój - tworzy ona oddzielną sekcję w skrypcie, odpowiedzialną za budowę budynków. Jak jej używać?  

Kiedy skończysz już tworzenie skryptu, dodaj po ostatniej linijce komendę RESET. Teraz tutaj umieszczaj opcje BUILD z budynkami i robotnikami, aż wreszcie zakończ komedną STOP. Teraz wróć do głównego skryptu i dodaj gdzieś linijkę (najlepiej zaraz po UNK_BEHAVIOR) EXPAND - w pierwsze pole wpisz numer linijki z komendą RESET (nie tą na początku, tylko tą na końcu skryptu i na początku sekcji rozwoju), a w drugie numer 1. 1 - oznacza tutaj pierwszą sekcję rozwoju. Jeśli chcesz mieć kilka, po prostu będziesz musiał zmieniać liczby. Pamiętaj: na każdym początku sekcji rozwoju MUSI być komenda RESET, inaczej SC się zawiesi.  

Teraz sekcję rozwoju zacznij tak samo jak normalny skrypt, ale nie umieszczaj tam jednostek. Najpierw daj komendę BUILD z głównym budynkiem (czyli Command Center, Hatchery, Nexus - w kazdej bazie gdzie działać ma skrypt musi być przynajmniej jeden z tych budynków w zależności od rasy), potem (też z komendą BUILD) podaj całą liczbę robotników, jaką chcesz mieć w sekcji, a potem po kolei budynki. Zakończ za pomocą STOP. Acha - po każdej akcji BUILD umieszczaj GEN_CMD. OK, już wszystko powinno być jasne. Jeśli jakieś będą pytania - chyba znasz adres. 

Ogromna rada na koniec, dotycząca wszystkich programów. NIGDY brak działania modu / skryptu / mapy / czegokolwiek, NIE JEST spowodowane złym działaniem programu, tylko TWOIM błędem - wielokrotnie doświadczałem tego na własnej skórze. Więc jeśli coś nie działa - nie klnij na komputer, nie klnij na program, tylko zaciśnij zęby i DOKŁADNIE przeanalizuj program. Zapewniam, że wina będzie leżała (przynajmniej na 95%) w twojej głupocie lub nieuwadze, a nie w programie.  

Co w następnej części? Hmmm.... na pewno opis edytora terenu, czyli TileEdit. Spis plików w images.dat. Poza tym.. coś wymyślę :)  

Tekst napisał ZIUZIEK . Nie pozwalam modyfikować dokumentu bez mojej zgody oraz podpisywać się pod nim. Już niedługo część VII.

 Copyright © by STRATEGIC Area™ All Rights reserved    

 


WSTĘPNIAK
NOWOŚCI
TEKSTY
WYWIADY
WOJSKO
OFFLINE
PLIKI
GALERIA
DODATKI
KODY
ŚMIESZNE
LINKI
LISTY
KLANY
KONTAKT

Screen
miesiąca