You are on page 1of 190

Spis treści:

Podstawy:
1.Wstępniak ............................................................................................................. 6

2.Podstawy poruszania się w PostED ................................................................. 7

●Klawiszologia
3.Tworzenie podstawowej mapy ............................................................................................. 10
●Zwykła mapa
●Skybox
●Tworzenie budynku
4.Tworzenie terenu .............................................................................................. 26
●Podstawowy teren
●Modelowanie terenu
●Terrain Decora!on Layer
●Tworzenie wody
●Tworzenie lawy

5.Dodawanie obiektów do mapy ....................................................................... 42

●Dodawanie ludzi
●Dodawanie broni
●Dodawanie PowerUp’ów
●Dodawanie StaticMesh’ów
●Dodawanie oświetlenia

●Dodawanie dźwięku

6.Niewidzialna ściana .......................................................................................... 64

7.Tworzenie własnych paczek ................................................................................................... 68


Zaawansowany PostED:
8.Trigger’y .............................................................................................................. 71

●ScriptedTrigger

9.Efekty ....................................................................................................................................................... 78

●Emitery
●Wybuchające obiekty

●Projektory

10.Tworzenie BOSS’a ........................................................................................................................ 91

11.Robienie Cut-Scenki .................................................................................................................... 95

12.PathNode i HomeNode, czyli sterowanie ludźmi ............................................... 102

13.Pomniejsze zagadnienia: ....................................................................................................... 107

●Punkt płatności – Tworzenie sklepu


●Jak zrobić drabinę?
●Robienie bankomatu
●Tworzenie lustra
●Elementy tylko w wybrane dni
14. Telepad’y ......................................................................................................................................... 121
Moddowanie:
15.Wprowadzenie do skryptów ............................................................................................. 125

16.Tworzenie własnej broni ...................................................................................................... 132

17.Tworzenie własnego PowerUp’a ............................................................... 148

Dodatki:
18.Mover’y ............................................................................................................................................. 156

19.Volume ............................................................................................................................................... 163

20.Optymalizacja poziomów ..................................................................................................... 166

●Distance Fog
●An!portals
●Kolizje
●Zoneportals
21.Static Mesh’e ................................................................................................................................. 174

22.Tekstury ............................................................................................................................................. 178

●Dopasowanie tekstury
23.Import i Export mesh’ów ....................................................................................................... 182

Info:
24.Info ........................................................................................................................................................ 187

●Kontakt
25.Źródła .................................................................................................................................................. 188

26.Użytkowanie & Licencja ........................................................................................................ 189


Podstawy:
1.Wstępniak:
Witam w moim MegaTutorialu do edytora PostED z gry Postal 2.
Dzięki niemu poznasz tajniki PostED’a, nauczysz się tworzyć podstawową mapę,
i może stworzysz kiedyś swojego własnego Apocalypse Weekend. ;)
Poszczególne rozdziały są dokładnie opisane i zawierają ilustracje co i jak.
W tym MegaTutorialu zawarte są są poradniki moje, jak i innych twórców,
ładnie uporządkowane i wyjaśnione w przejrzystej
przejrzystej formie w tym pliku PDF :)
(o czym więcej w rozdziale 24.Info).
Jako, że nie umiem pisać długich wstępów, przechodzimy od razu
do następnego rozdziału. :p

Aha…i jeszcze coś. Jeśli masz jakieś spostrzeżenia, wyłapałeś błędy,


lub masz pomysł, co jeszcze dodać do tutoriala pisz:
seebeeklegal@o2.pl (rzadko wchodzę)
lub:
na PW na forum.postalsite.info,
forum.post link do profilu:

forum.postalsite.info/profiles/2532.htm

Strona: 6
2.Podstawy poruszania się w PostED:
Na początek wyjaśnienia:
PPM – Prawy Przycisk Myszy

LPM – Lewy Przycisk Myszy

●Poruszanie się w górę i w dół:


Przytrzymaj PPM i LPM na raz i poruszaj myszką w górę oraz w dół.

●Poruszanie się naprzód i w tył:


Przytrzymaj LPM i wykonuj ruchy myszką do przodu i do tyłu.

●Rozglądanie się:
Przytrzymaj PPM i poruszaj myszką w dowolnym kierunku.

●Przemieszczanie obiektów:
Zaznacz obiekt i przytrzymując Lewy Shift/Lewy Ctrl i LPM/PPM przesuwaj go.

●Grupowe zaznaczanie:
Przytrzymując Ctrl zaznaczaj obiekty klikając na nie LPM.

Strona: 7
●Okna:
W PostED mamy 4 podstawowe okna, kilka widoków, oraz dodatkowo

przydatny tryb – RealTime Preview .

Aktywując tą opcję mamy podgląd ‘’na żywo” co się dzieje ze światem


(dotyczy tylko świata-niebo, ruchome tekstury itp.-nie dotyczy np. ludzi!),
i najlepiej się sprawdza na widoku Dynamic Light.
Oprócz tego możemy w naszych oknach zmieniać widok,
oto kilka tych przydatniejszych:

TOP – widok od góry


Front – widok od przodu
Side – widok z boku
Perspective – widok siatki
Textured – ten widok przydaje się przy tworzeniu ciemnych map
Dynamic Light – widok pokazuje jak mapa będzie wyglądać w grze

Strona: 8
●Obracanie przedmiotów:
Na obracanie obiektów w PostEDzie, są dwa sposoby.

#1
Za pomocą narzędzia Actor Rotate, który znajdziesz
na pasku, po lewej stronie edytora.

Obracasz obiekty, przytrzymując klawisz Ctrl


i przesuwając myszką z wciśniętym: PPM/LPM/PPM+LPM
(w zależności, w którą stronę chcesz obrócić przedmiot).

#2
Drugi sposób, to taki, że obracasz w różnych oknach/widokach.

Przytrzymujesz Ctrl i mając wciśnięty PPM/LPM poruszasz myszką


w wybranym oknie, np. jeśli zrobisz to w widoku TOP, to obrócisz obiekt
w osi pionowej, a robiąc to w widokach Front lub Side, to w inną stronę.

●Skalowanie przedmiotów:
Inaczej – powiększanie/zmniejszanie.

Zrobisz to podobnie jak w obracaniu pierwszym sposobem, ale tym razem


narzędziem Actor Scaling, którego znajdziesz też po lewej stronie.

Lub w opcjach obiektu (PPM ... Properties), w zakładce ‘’Display” w ‘’DrawScale3D”

albo w ‘’DrawScale”.
3.Tworzenie podstawowej mapy:
●Zwykła mapa:
Gdy masz uruchomionego PostED’a (a zakładam, że tak jest :p) poszukaj

po prawej stronie przycisk Cube , następnie kliknij go PPM,

i zmień dowolnie Height(wysokość), Width i Breadth(szerokość) i kliknij Build


(najlepiej by wpisywane wartości były potęgą liczby 2), by wybudować
aktywnego Brush’a (będzie to nasza ‘’foremka” do wytłaczania ścian),

potem, trochę niżej kliknij Subtract , by oteksturować Brush’a.

Teraz możesz zmienić tekstury. Poszukaj na górze edytora

StaticMesh Browser ,i przejdź do zakładki Textures.


Tam kliknij File Open i poszukaj paczki ‘’Zo_Skies.utx” i otwórz ją.
Zaznacz ściany i sufit i kliknij teksturę nieba, a na podłogę daj jakąś czarną.
Następnie zaznacz ściany i sufit (bez podłogi!) i kliknij np. na suficie PPM i na
samej górze wybierz Surface Properties i zaznacz Fake Backdrop
(dla wygody możesz też otworzyć to okno klawiszem F5).

Strona: 10
Brawo właśnie stworzyłeś podstawową mapę! ;)

Strona: 11
●SkyBox (Niebo):
Skybox musi powstać na osobnym planie.
Naciśnij więc PPM na Cube i wpisz tym razem większe proporcje,
np. Height(wysokość) na 6500, a szerokości na 8000.
Ważne, by Cube’y nie stykały się pod żadnym pozorem!

Następnie, najlepiej na widoku TOP ustaw oba sześciany obok siebie,

i kliknij Subtract, by oteksturować swojego Skybox’a.


Ustaw mu tekstury nieba(czy będą się poruszały, czy nie to zależy od ciebie).

Teraz zaznacz wszystkie ściany Skybox’a (łącznie z sufitem i podłogą),


i kliknij PPM i Surface Properties, następnie zaznacz Unlit.
To spowoduję wrażenie „nieba za horyzontem”.
Gdy mamy całe, piękne niebo, czas na chmury.

Strona: 12
●SkyBox (Chmury):

Budowa chmur to jedna z najprostszych rzeczy w Skybox.

Kliknij PPM na Sheet , i ustaw szerokości takie


jakie ma twój skybox (sześcian z niebem) i kliknij Build.

Potem ustaw Sheet’a tuż pod sufitem (niebem) skybox’a


(polecam widok FRONT).

Następnie wybierz jakąś teksturę chmur i kliknij Add .


Teraz już tylko pozostaje zaznaczenie(Sheet PPM SurfaceProperties)
opcji Unlit i ew.(jeśli nie jest zaznaczona) opcji Two Sided.

Strona: 13
●SkyBox (Widok ‘’horyzontu”):
Cóż, mamy Skybox’ a, ale co to?
Nasz krajobraz chmur jest kwadratowy… jednak mam na to radę.

Ta poświata nieba jako zachodzącego słońca, to nic innego,


jak zwykły Static Mesh. W tym celu otwieramy Static Mesh Browser,
zakładkę StaticMesh, klikamy File Open i szukamy paczki
‘’Zo_Highland_Meshes.usx”. Z niej wybierz kartę ‘’Other”,
lub naciśnij ‘’All” i wyszukaj StaticMesh’a pod nazwą ‘’zo_skybox_haze”.

W środku naszego Skybox’a naciśnij PPM na podłogę, po czym wybierz


‘’Add Static Mesh: Zo_Highland_Meshes.Other.zo_skybox_haze”.
Pojawi się nam ten właśnie StaticMesh. Teraz przyszedł czas na ustawienia.

Gdy naciśniemy dwa razy LPM na naszego StaticMesha,


pojawią się jego opcje zatytułowane StaticMeshActor Properties.

Rozwiń zakładkę ‘’Display” i zaznacz bUnlit z False na True.

Gdy jego opcje są poprawnie ustawione, musimy ustawić go na środku mapy.


W tym przypadku, sugeruję na widoku TOP ustawić Mesh’a na środku Skybox’a.

Gdy mamy już ustawiony nasz SM na widoku TOP, pora ustawić go od boku.
Musimy go ustawić tak, by jego koniec (góra) idealnie stykał się z chmurami.
Najlepiej to zrobić na widoku FRONT, a będzie to wyglądać tak:

Strona: 15
Tym sposobem nasz StaticMesh jest widoczny, ma kolory i dzięki niemu
jest wrażenie horyzontu ale to jeszcze nie koniec pracy. ;)

●SkyBox (Słoneczko :P):


By zrobić słońce, w zakładce StaticMeshes otwieramy tą samą
paczkę i katalog (Zo_Highland_Meshes.usx, Other), i wyszukujemy
Mesha pod nazwą ‘’zo_sky_sun”. Dodajmy słońce za/obok Mesha
z horyzontem.

Nie zwracaj uwagi na tą małą ikonkę w środku SM, o tym za chwilę.

By słońce miało kolory, trzeba wejść w ustawienia (PPM SurfaceProperties)


i w zakładce ‘’Display” zmienić bUnlit z False na True.
Teraz w zakładce ‘’LightColor” wybierz proporcje światła
odpowiadające Tobie, np.:

Brightness – 27
Hue – 51
Saturation – 102.

Strona: 16
●SkyBox (‘’SkyZone Info”):
Przed nami (prawie) najważniejsza rzecz w Skybox’ ie. SkyZone Info.
Pewnie zastanawiacie się, co to jest?
Jest to informacja (aktor) określająca Skybox.
Wyświetla to, co widzi się na każdej powierzchni z opcją Fake Backdrop.

By dodać SkyZone Info, wchodzimy w StaticMesh Browser,


Następnie klikamy w zakładkę ‘’ Actor Classes” i rozwijamy ‘’plusikiem”
Actor Info *ZoneInfo *SkyZoneInfo , tak jak na obrazku:

Zaznacz *SkyZoneInfo, i naciśnij (najlepiej na widoku TOP) na


StaticMesh’ a (na jego środek), Prawym Przyciskiem Myszy (PPM) , i
wybierz opcję ‘’Add SkyZoneInfo Here”:

Strona: 17
Gdy SkyZone Info jest już wstawione, możemy (musimy) je przesunąć na dół
(mniej więcej) naszego Mesh’a z widoku FRONT.

Gdy z widoku FRONT SkyZone Info jest ustawiony na dole, a z widoku TOP

na środku, naciskamy przycisk Build All .


Skybox Ukończony! :)

Strona: 18
●Tworzenie budynku:

Kliknij PPM na Cube . Jeśli stworzyłeś mapę o takich samych


wymiarach jak te podane w tutorialu stwórz sześcian np. o tych
proporcjach:

Przenieś wybudowany sześcian do dołu,


tak by dotykał ziemi na twojej mapie.

Teraz kliknij na Add, po czym na Intersect


(znajduje się pod przyciskiem Add).
Otrzymasz oteksturowany sześcian,
możesz teraz zmienić jego tekstury na zewnątrz.

Teraz musisz stworzyć mniejszy kwadrat o proporcjach:

Strona: 19
Następnie umieść owy sześcian w środku pierwszego,
i kliknij na Intersect, po czym na Subtract.
Kwadrat powinien być teraz oteksturowany w środku.
Oczywiście możesz teraz zmienić teksturę w wenątrz.

●Drzwi:
Zrób Cube o przykładowych wymiarach lub większych:

Następnie umieść
umieś swojego ‘’czerwonego” Cube’a w wybranym miejscu,
by jego grubość była większa niż ta ściany.:

Kliknij teraz na Intersect,


Inte a następnie na Subtract.

Strona: 20
Potem w zakładce StaticMesh w StaticMesh Browser otwórz
paczkę pod nazwą ‘’mex_props.usx” i wybierz drzwi
pod nazwą ‘’mex_burbs_door”, po czym zminimalizuj Browsera
(kilknij taką kreskę obok ‘’iksa” na górze po prawo w rogu ;) )

i kliknij PPM na przycisku Add Mover Brush


(znajduje się poniżej przycisku Add) i wybierz DoorMover.

Gdzieś na mapie pojawią się drzwi, umieść je w dopiero co zrobionej


dziurze w budynku.

By dokładnie dopasować swoje drzwi możesz użyć


Movement i osi X, Y i Z do określenia położenia...

Strona: 21
i Display do powiększania lub zmniejszania drzwi.:

Teraz zaznacz drzwi, kliknij na nie PPM i wybierz z Mover – Key 1,

potem obróć drzwi o 90o i wybierz Key 2,, potem cofnij i


wybierz Key 3, potem obróć w drugą stronę i kliknij Key 4,
na koniec ustaw drzwi w pozycji początkowej
i kliknij Key 0(Base).
0(Base)
Możemy się kierować dodatkowo zasadą, że najpierw obracamy
drzwi w kierunku obrotu wskazówek zegara.
Proste prawda? :p …nie? To spójrz na poniższy obrazek:

Strona: 22
●Okno:
Nadszedł czas na zrobienie okna, więc zaczynajmy! ;)

Na początek wejdź w Actor Classes Browser i rozwiń:


Actor *Prop *PropBreakable *Window

Następnie postaw go w wybranym miejscu na mapie


(PPM Add Window Here).

Powinna się pojawić taka ikona orzełka:

Strona: 24
Wejdź teraz w StaticMesh Browser i otwórz paczkę
pod nazwą ‘’STV_Suburbs.usx” i w ‘’Windose” wybierz jakieś okno.
Wejdź teraz w opcje orzełka (PPM Window Properties)
i w zakładce Display zmień DrawType na DT_StaticMesh,
potem w StaticMesh kliknij ‘’use” – wtedy ustalisz model okna...

Okno jest już gotowe, wystarczy je już tylko ustawić na mapie. ;)

Jeszcze dodam, że okno można kopiować, zamiast je ciągle ustawiać,


w przypadku drzwi radzę, by tego nie robić,
bo dzieją się wtedy złe i magiczne rzeczy. :p

Teraz, jeśli chcesz przetestować mapę, kliknij PPM w wybranym


miejscu i wybierz ‘’Add PlayerStart Here”.

Strona: 25
4.Tworzenie terenu:
●Podstawowy teren:
Na początek stwórz jakąś podstawową mapę o wymiarach 20tys.x20tys.

Wybierz ze StaticMesh Browsera z Actor Classes:

Actor Info *ZoneInfo:

i postaw na środku mapy najlepiej na widoku TOP,

klikając PPM i Add ZoneInfo Here.

(Możemy jeszcze – zamiast tego sposobu – ustawić to w LevelInfo,

wchodząc w View -> LevelInfo properties).

Wejdź w jego opcje i w zakładce ZoneInfo zmień bTerrainZone z false na true,

Strona: 26
a w zakładce ZoneLight zmień:
-AmbientBrightness na 55
-AmbientHue na 40
-AmbientSaturation na 100

(w zależności czy chcesz mieć dzień czy noc ustawiasz inne liczby)

Strona: 27
Następnie w Actor Classes rozwiń Actor Light i wybierz *SunLight:

i postaw gdzieś po boku mapy:

Przebuduj całą mapę przyciskiem Build All.

Strona: 28
Teraz kliknij po prawej stronie edytora przycisk Terrain Editing .
Następnie po kliknięciu przycisku ‘’new…”,

pojawi Ci się takie okienko:

W ‘’Package” możesz wpisać np. Terrain+NazwaMapy(TerrainMyMap),


a w ‘’Name” NazweMapy(np. MyMap), potem kliknij OK.

Teraz przejdź do zakładki ‘’Layers”, kliknij pierwsze pole,


zaznacz jakąś teksturę ze StaticMesh Browsera,
i kliknij ‘’new…”,

po czym…

W ‘’Package” wpisz to samo co wpisałeś wcześniej(np. TerrainMyMap),


a w ‘’Name” wpisz nazwe wybranej tekstury terenu, byś potem się
nie pogubił, która to była tekstura np. ziemi czy trawy. ;)

Teraz przyszedł czas na przyjemniejszą rzecz. :D


Jest nią właśnie tworzenie terenu. ;)

Teren formujesz klikając LPM w wybranym miejscu, następnie


przytrzymujesz Ctrl, LPM i PPM na raz i przesuwasz myszką do dołu
lub do góry w zależności czy chcesz mieć góry czy dziury. ;)

Strona: 30
Dodatkowo możesz ustawić suwaki i inne opcje w Terrain Editing
(promień wewnętrzny i zawnętrzny, siła, itp.):

●Inne narzędzia - modelowanie:


Oprócz samego ‘’Vertex Editing” jest kilka innych, nawet bardzo
przydatnych narzędzi, ale ja opiszę tylko te najprzydatniejsze.

Painting – Jest to narzędzie do ‘’kolorowania” już wymodelowanego terenu.


Wystarczy wybrać odpowiedni Layers i
przytrzymując Ctrl, malujemy LPM.

Smoothing – Tym narzędziem możemy wygładzić teren


ze wstępnego modelowania.
Jako, że to narzędzie jest pomocne, może również zaszkodzić,
dlatego zalecam ustawić Strenght na 10, by nie psuło naszej mapki.

Strona: 31
Na koniec, gdy już skończysz tworzyć teren na swojej mapce,
wybuduj ją przyciskiem Build All, następnie musisz zapisać
swoją paczkę terenu.

W tym celu przejdź do SM Browsera, do zakładki ‘’Textures”,


poszukaj swojej paczki(to jest właśnie to ‘’Package”, które
wpisywałeś podczas tworzenia nowych ‘’Layers’ów”),
kliknij teraz przycisk All, by wyświetlić wszystkie warstwy,
następnie zapisz swoją paczkę:

Jeszcze tylko zapisz mapę (File Save as...) i gotowe. :)

Uwaga!
Musisz tak zapisywać po każdym edytowaniu terenu(Vertex, painting, smooth, etc.)!
Dla początkujących zalecam dodawanie wszystkiego (tekstur, static mesh’ów itp.)
do paczki ‘’MyLevel”. Dzięki temu nie musimy się martwić o to czy zapisaliśmy paczkę,
bo pakunek ‘’MyLevel” zapisuje się samoistnie w naszej mapce (lecz dzięki temu
zwiększymy również ‘’wagę” mapy o dodane przez nas komponenty).

Strona: 32
●Terrain Decoration Layer:
Terrain Decoration Layer jest to warstwa terenu, na której możemy
‘’rysować” różnymi obiektami np. zrobić trawę czy postawić drzewa.

Na początek otwórz Terrain Editor. Stwórz nowy teren,


oraz nową warstwę terenu (Layer). Gdy już to zrobisz, wróć do zakładki
‘’Terrains” i kliknij 2 razy na TerrainInfo0.

Następnie wejdź w zakładkę ‘’TerrainInfo” a potem w ‘’DecoLayers”.


Stwórz tam nowe DecoLayers klikając przysick Add.

Strona: 33
Ustawiamy tam parę opcji.

AlignToTerrain – Obiekty będą wyrównywać się do podłoża.

DensityMap – Layer którym będą malowane nasze dekoracje;


DensityMultiplier – Gęstość malowania oczek Static Mesh’ów;
DisregardTerrainLighting – Jeśli jest ustawione na 0, dekoracje będą
reagować na światło terenu, jeśli na 1, będą miały pełną jasność;
FadeoutRadius – Średnica narzędzi do malowania;
LitDirectional – Jeśli jest na 1, Static Mesh’e reagują na
światło słoneczne. W przypadku np. trawy, efekt ten może
spowodować nierealny wygląd obiektów;

MaxPerQuad – Gęstość rysowania naszej trawy;


ScaleMultiplier – Korzystaj z tego aby dostosować skalę
statycznych siatek, jak w DrawScale3D;

ShowOnTerrain – Widoczność Decoration Layers;


StaticMesh – Obiekt, którym będzie się malować.

Przykładowe ustawienie warstwy decoration layer:

Strona: 35
●Tworzenie wody:
Najprostszym a zarazem najszybszym sposobem,
by dodać wodę jest FluidSurfaceInfo.
Tak więc rozwijamy w Actor Classes:
Actor Info *FluidSurfaceInfo

Następnie stawiamy na mapie w wybranym przez nas miejscu.

Teraz wybierz jakąś teksturę przypominającą wodę


(dobre ruchome tekstury wody są w paczce ‘’Zo_Smeg.utx”).

Teraz wchodzimy w opcje naszej wody.


W zakładce ‘’Display”, rozwiń Skins i w [0] dodaj
teksturę przyciskiem ‘’use”(jeśli nie ma, kliknij pierw Add).

Strona: 36
Wejdź w zakładkę ‘’FluidSurfaceInfo”.

Używając FluidXSize i FluidYSize zmień rozmiar wody.

Jeśli chcesz, by dodatkowo woda reagowała po strzeleniu w nią,


ustaw OrientShootEffect na True, a ShootEffect na Fragment.

Kombinowanie z innymi opcjami mile widziane. ;)

Strona: 37
●Tworzenie lawy:
Lawę tworzymy trochę inaczej niż wodę.

Dla lawy trzeba dodatkowo zrobić PhysicsVolume,


by po wejściu w nią zabierała część życia.
Robiąc PhysicsVolume, nadajemy mu DamageType.

By stworzyć lawę, zrób zwykłe pole wody tak jak


w poprzednim podrozdziale, lecz teraz z teksturą przypominającą lawę.

Pole lawy z odbiciem słoneczka :p

Gdy już mamy nasze pole lawy, teraz trzeba dodać PhysicsVolume.

Kliknij Cube’a PPM’em i dopasuj wymiary do lawy. Dla Height wpisz np. 20
(w zależności jak wysoko chcesz ustawić lawę nad podłogą).

Teraz kliknij PPM na Volume , i wybierz PhysicsVolume:

Pojawi się taka ciemno-fioletowa siatka.


Kliknij na nią PPM i wybierz ‘’PhysicsVolume Properties”,
i przejdź do zakładki PhysicsVolume.

Strona: 38
Teraz zmień bPainCausing z False na True,
ustaw ilość obrażeń na sekundę – DamagePerSec,
oraz rodzaj obrażeń, np. na ‘’BurnedDamage”.

Przydatna jest również opcja ‘’Gravity”, można nią ustawić grawitację


w polu lawy, czyli możliwość ‘’pływania” w niej. :)

Strona: 39
●Dodatkowe efekty wody:
FluidSurfaceOscilator – jest to pewnego rodzaju ‘’ruszajka”. :p
Służy ona do poruszania wybranego miejsca w polu wody czy lawy.

Na początek powinieneś już mieć stworzoną jakąś wodę czy lawę. ;)

By zrobić ową ‘’ruszajkę”, wejdź w ActorClasses i rozwiń:


Actor *FluidSurfaceOscilator

Następnie postaw to w wybranym miejscu, tak by ten ‘’orzełek”


był mniej-więcej w połowie zanurzony w wodzie/lawie.

Teraz wejdź w jego opcje(PPM FluidSurfaceOscilator Properties)


i przejdź do zakładki ‘’FluidSurfaceOscilator”

Strona: 40
Teraz trzeba przypisać naszego(no dobra...Twojego :D) Fluid ‘a
do Oscilatora, by gra wiedziała, którym polem wody/lawy ma poruszyć
wybrany Oscilator(gdyż na twojej mapie może ich być nawet kilka).

Robi się to poprzez kliknięcie we FluidInfo przycisku ‘’Find”,


wtedy przy Twoim kursorze myszki pojawi się dodatkowo znak zapytania
po najechaniu na okienko DynamicLight(lub Textured, jak u mnie ;) ).
Wtedy kliknij LPM na Twoim polu wody/lawy,
by je przypisać do Oscilatora.

Dalsze opcje do ustawienia to:


Radius – Zasięg poruszania wody/lawy od orzełka;
Strenght – Siła poruszania wody/lawy.

Strona: 41
5.Dodawanie obiektów do mapy:
●Dodawanie ludzi:
Gdy na mapie z samym terenem i domkiem robi się nudno,
przydałoby się dodać jakiegoś wirtualnego ludzika. ;)
Ale...jak go zrobić?
Jest to bardzo proste, wystarczy wybrać go w ActorClasses Browser:

Actor Pawn FPSPawn P2Pawn P2MoCapPawn MpPawn


PersonPawn Bystander

Stamtąd wybieramy chcianego człowieczka i stawiamy na mapę,


klikając PPM i Add ... Here (np. ‘’Add Gary Here”).

Polecam zajrzeć potem jeszcze do rozdziału PathNode i HomeNode. :)

Strona: 42
●Ustawienia
Ustawienia bystanderów(ludzi):
Po postawieniu wybranego ludzika, możesz go dodatkowo ustawić.

Na początek zmiana wyglądu(tekstury) bystandera.

Kliknij PPM na swojego ludka i wejdź w jego Properties(opcje).


Properties
Przejdź do zakładki ‘’Display”
‘’ i rozwiń Skins, i [0], wybierz jakąś
teksturę (np. z paczki ‘’ChameleonSkins.utx”) i kliknij ‘’use”
(tak jak robiłeś z wodą i lawą).

Pamiętaj, że nie które tekstury


tekstury mogą się niedopasować do modelu ludka,
na przykład tekstura grubasa wrzucona na chudzielca,
będzie średnio wyglądać. ;)

W przypadku, gdy nie damy żadnej tekstury na człowieczka, gra sama


nada wybranego skina z grupy Chemeleon.

Strona: 43
To teraz
eraz czas na poprzestawianie ludzika (prawie...) całkowicie... ;)
W jego opcjach wejdź w zakładkę ‘’PawnAttributes” i ustawiaj dowolnie. :)

Strona: 44
Armor -– Pancerz bystandera
bAdvancedFiring –- Dobry strzelec
bAngryWithHomeInvaders -– Postać ma bronić swojego domu/terytorium
określonego przez HomeNode
BaseEquipment –- Uzbrojenie postaci(o tym dalej...)
bBodyDisappears -– Czy ciało ma znikać
bCanTeleportWithPlayer –- Czy postać ma chodzić za graczem...
Beg -– Czy postać ma błagać o życie gdy ją bijemy
bFriendWithAuthority -– Pawn jest przyjazny dla policji i wojska
bGunCrazy -- Psychopata – postać zabije przeciwnika, bez względu na skutki
bIgnoresHearing –- Ignoruje krzyki i strzały – Stan obojętny
bIgnoresSenses –- Ignoruje widok broni i masakry
bInnocent -– Postać jest grzeczna i miła
bNoTriggerAttackPlayer -– Atakuje gracza po wejściu w triggera
bPersistent -– Postać szybko rezygnuje (np. z pościgu za graczem)
bPlayerIsEnemy –- Gracz jest wrogiem dla postaci
bPlayerIsFriend -– Gracz jest przyjacielem dla postaci
bReportDeath -– Czy ma reagować(np. powiadamiać policję) gdy zobaczy trupa
bRiotMode -– Powoduje zamieszki
bScaredOfPantsDown -– Krytykuje za rozpięty rozporek
bStartupRandomization -– Postać jest przygotowana po respawnie
bTeamLeader –- Szef gangu (po utworzeniu gangu - niżej...)
bUseForErrands -– Czy postać jest używana przy wykonywaniu misji
Cajones -- Odwaga (1.000000 - Rambo; 0.000001 – Tchórz)
Champ -- Napastliwość
Compassion –- Wrażliwość na widok przemocy
Confidence -- Ufność
Curiosity -- Ciekawość
Fitness –- Tężyzna fizyczna
FriendDamageThreshold -– “Przyjacielski ogień”
Gang –- Nazwa gangu, do której należy postać (jeśli taki gang zrobisz)
Glaucoma –- Widoczność (czy widzi daleko czy blisko)
Greed –- Łapczywość (np. na kasę)
HealthMax -– Życie postaci
MaxMoneyToStart –- Ilość pieniędzy
PainThreshold –- Granica obrażeń (działa z opcją Beg – gdy jest na True)
Patience -- Cierpliwość

PatrolTags –- o tym dalej...


PawnInitialState –- Akcje(o tym też dalej...)
Psychic –- 1.000000 -Myśli, szuka, znajduje; 000000.1 –Zdezorientowany

UWAGA!
Liczba 1.000000 nie jest największą w kilku przypadkach!

BaseEquipment –- Tutaj możesz dodać broń postaci.


Wystarczy, że po rozwinięciu, klikniesz Add, [0] i potem WeaponClass,
i z rozwijanej listy wybierzesz jakąś broń.

Możesz dodać nawet kilka broni do jednej postaci!

PatrolTags –- Tutaj ustawiasz HomeNode, których bystander ma pilnować.


By dodawać HomeNode’y, rozwiń PatrolTags, kliknij ‘’Add” i wpisuj tagi.

Po więcej informacji zapraszam do rozdziału o HomeNode.

PawnInitialState –- Ustawiasz tu akcje postaci.


Możesz ustawić, by postać np. od razu atakowała gracza, obserwowała go,
tańczyła lub nawet, by po prostu zginęłą na miejscu
(polecam łączenie z triggerem...fajna zabawa :D ).

Strona: 46
Rat –- Postać jest kapusiem
Reactivity -- 1.000000 –reaguje najmądrzej jak może; 000000.1 –głupieje
Rebel –- Poziom buntowniczości
SeeViewCone -– Spostrzegawczość, co się wokół niej dzieje
Stomach -– Jak bardzo chce jej się rzygać gdy widzi trupa
Takes<...> -- 0 –kuloodporność
kuloodporność; 1 –postać dostaje zwykłe obrażenia
Talkative -- 1.000000 –gaduła; 000000.1 –nie
nie lubi kontaktów z innymi
TalkBeforeFighting -–– Mówi coś przed walką np. ‘’-Rozwale
Rozwale waass!!!” :D
TalkWhileFighting -– Mówi coś podczas walki np. ‘’-O,
O, w dupe!” ;p
VoicePitch -– Ustawia wysokość
wysok głosu postaci
WarnPeople -– Ostrzega innych ludzi (np. przed niebezpieczeństwem)
WillDodge –- Umiejętność unikania strzałów

Uwaga!
Niektóre opisane opcje mogą być błędne.

Strona: 47
●Stawianie władz na mapie:
Jeśli chciałbyś postawić jakichś przedstawicieli władz (władz..?...haha xD)
np. policjanta, wojskowego czy SWAT ‘a znajdziesz ich w ACBrowser:

Actor Pawn FPSPawn P2Pawn P2MoCapPawn MpPawn


PersonPawn AuthorityFigure

Aa...jeszcze o czymś zapomniałem! :D

Gdy stawiasz ludzi na mapę to nie musisz ciągle ustawiać im


innej tekstury. PostED z każdym kolejnym postawionym człowieczkiem
zmieni jego klasę (teksturę, zachowanie itd.) automatycznie.

Strona: 48
●Dodawanie zwierząt:
Stawianie zwierząt na mapę nie różni się od stawiania bystanderów.
Wybierasz jakieś zwierzę z ActorClasses Browser’a, PPM i Add <..> Here.:
Actor Pawn FPSPawn AnimalPawn

Również przy stawianiu zwierząt, edytor sam powinien wszystko


pozmieniać, lecz możesz sam to zrobić jeśli chcesz ;)

Strona: 49
●Dodawanie broni:
Jak poprzednio, tak również teraz, rozwiązanie prowadzi do ActorClasses.
Tak więc, wybierz którąś broń z AC Browser’a:

Actor Pickup WeaponPickup P2WeaponPickup

I postaw na mapę klikając PPM i ‘’Add <...> Here”.

Strona: 50
Możesz dodatkowo ustawić kilka opcji, po wejściu w Properties broni
w zakładce ‘’Pickup”.:
AmmoGiveCount -– Ilość amunicji
MPAmmoGiveCount -– Ilość amunicji w trybie multiplayer
RespawnTime –- Czas po jakim broń się odradza po zebraniu jej

Strona: 51
●Dodawanie Powerup’ów:
PowerUp’y to przedmioty takie jak FastFood, pizza, kotnik,
czy magazynki do broni.

Amunicję do broni masz w:

Actor Pickup Ammo P2AmmoPickup

Jak poprzednio, możesz zmienić kilka opcji.

Strona: 52
FastFood ‘y, Pizze, Pancerze itd. masz w:

Actor Pickup P2PowerupPickup OwnedPickup

Strona: 53
●Dodawanie Static Mesh’ów:
Static Mesh’e dzielą się na różne rodzaje. Zwykły StaticMesh to
nieruchomy obiekt. Inne to KActor i Mover’y (o czym potem).
Te drugie to ‘’Karma Actor” – o nich w następnym podrozdziale.

*Dodawanie zwykłych Static Mesh’ów:


Najpierw otwórz StaticMesh Browser i wybierz jakiś obiekt.

Następnie na mapie kliknij PPM i wybierz ‘’Add Static Mesh: ...”


*Dodawanie KActor’ów:
KActor ‘y są ruchome i można je kopać czy strzelać do nich.

Uwaga!
Nie do wszystkich StaticMesh’ów da się dodać Karmę!

Nie jest trudno dodać taki bajer. :)


Wystarczy np. wybrać pustaka (taka cegła jak by co... ;p)
i kliknąć na mapie PPM i ‘’Add Karma Actor”.:

Teraz, by ustawić masę przedmiotu, wejdź w jego opcje.:


Zakładka ‘’Karma” KParams KarmaParams ... KarmaParams
i w ‘’KMass” ustaw ciężar obiektu.
●Dodawanie oświetlenia:
By dodać światło, kliknij na mapie PPM i wybierz ‘’Add Light Here”.

Żeby zmienić kolor ‘’żarówy” wejdź w jej opcje (PPM Light Properties),
i w zakładce ‘’LightColor” ustaw kolor światła.:

LightBrightness – Jasność
LightHue – Kolor
LightSaturation – Nasycenie

By od razu wybrać kolor, bez bawienia się w cyferki, kliknij ‘’Color”.

Strona: 56
●Efekty świetlne:
Przydatne one są gdy chcesz np. zrobić oświetlenie w dyskotece,
czy też syreny policyjne.

Po postawianiu zwykłego Light ‘a, wejdź w jego opcje,


i w zakładce ‘’Lighting” możesz zmienić 3 opcje:

LightEffect – Efekt światła


LightRadius – Zasięg światła
LightType – Rodzaj światła

Strona: 57
●’’Poświata”:
Innym efektem jest taka jak by ‘’poświata”.
Jak chcesz wiedzieć dokładnie o co mi chodzi, zobacz obrazek: :p

Pewnie teraz chcesz wiedzieć jak to zrobić? :D

Już piszę i pokazuję. ;)

Najpierw postaw na mapę zwykłą ‘’żarówkę” (Add Light Here).


Potem wejdź do Texture Browser ‘a, kliknij File Open ,
i otwórz paczkę ‘’genFX.utx” i
w zakładce LensFlar wybierz któreś światełko.

Strona: 58
Następnie wejdź w opcje ‘’żarówki”, i w zakładce ‘’Display”,
kliknij ‘’Skins” i ‘’Add”, potem rozwiń ‘’[0]” i kliknij ‘’Use”.

Teraz wejdź w zakładkę ‘’Lighting”, i zmień bCorona z False na True.

Strona: 59
I to tyle. :)

Dodam jeszcze, że możesz dodawać kilka Skin’ów, by osiągnąć zajebiste efekty. ;)

Takim sposobem możesz zrobić również np. słońce. :)

Strona: 60
●Dodawanie dźwięku:
Na dodanie dźwięku jest kilka sposobów.
Ja tutaj pokażę tylko dwa.

1#
Pierwszym, najłatwiejszym i najszybszym sposobem jest SongThing.
By dodać dźwięk za jego pomocą, potrzebujesz muzykę w formacie ‘’.ogg”.
(Do konwertowania piosenki na format ‘’.ogg” polecam stronę zamzar.com)

Najpierw wybierz SongThing z ActorClasses i postaw na mapę.:

Actor *SongThing

Teraz kliknij go PPM i wybierz ‘’SongThing Properties”,


i przejdź do zakładki ‘’SongThing” i ustaw kilka opcji:
AttenuateRadius – Zasięg dźwięku
AttenuateVolume – Głośność dźwięku
bAttenuate – Dźwięk słychać na całej mapie/w miejscu SongThing’a

Strona: 61
Swoją piosenkę, już w formacie ‘’.ogg”, wklej do folderu ‘’Music”
tam gdzie masz zainstalowanego Postala 2, i w ‘’SongName”
wpisz nazwę swojej nutki razem z rozszerzeniem, np. ‘’NazwaPiosenki.ogg”

Strona: 62
#2
Kolejnym sposobem jest SoundThing.
Wybierz go z ActorClesses i postaw na mapę
(PPM ‘’Add SoundThing Here”).:

Actor *SoundThing

Tym razem musisz zrobić swoją paczkę z dźwiękami


(jak zrobić paczkę, znajdziesz niżej, w rozdziale o tworzeniu paczek).

Gdy już będziesz mieć swoją paczkę z dźwiękami,


kliknij(wybierz) w niej swoją muzykę, i wejdź w opcje SoundThing’a
i w zakładce ‘’Sound”, wybierz ‘’AmbientSound” i kliknij ‘’Use”.

Strona: 63
6.Niewidzialna ściana:
BlockingVolume(niewidzialna ściana) może służyć do blokowania wybranych
obszarów mapy, dodawania kolizji do StaticMesh’ ów czy nawet
optymalizacji gry(o czym więcej w rozdziale o optymalizacji).

●Stawianie niewidzialnej ściany:


Zwykłą niewidzialną ścianę, postawisz w kilka sekund. :)

Wystarczy wybudować Cube ‘a, postawić go w wybranym miejscu,

i kliknąć PPM ‘em przycisk ‘’Volume” w lewym przyborniku,


i wybrać ‘’BlockingVolume”.

Niewidzialna ściana zrobiona. :)

Strona: 64
●Kolizjowanie obiektów:
W Postalu 2, StaticMesh ‘e mają problem z wykrywaniem kolizji
z innymi obiektami. To nic, po to jest BlockingVolume... ;)

Postaw na mapę jakiś SM. Ja dla przykładu wezmę telewizor. :)

Wejdź w jego opcje, i w zakładkę ‘’Collision”.

Następnie zmień poniższe opcje na False.:


bBlockActors
bBlockKarma
bBlockNonZeroExtentTraces
bBlockPlayers
bBlockZeroExtentTraces
bCollideActors
bCollideWorld

Strona: 65
Teraz wybuduj Cube ‘a na wielkość obiektu, i postaw w jego miesjcu.

Po lewej stronie, na pasku poszukaj ‘’Volume” , kliknij go PPM


i wybierz BlockingVolume.

Gdy odsuniesz, czerwonego Cube’a, zobaczysz fioletową siatkę.


kliknij ją PPM i wybierz ‘’BlockingVolume Properties”,
i wejdź w zakładkę ‘’Collision”, i ustaw te same opcje
jak wyżej tylko, że na True, oprócz bCollideWorld.

Strona: 66
Strona: 67
7.Tworzenie własnych paczek:
Jak pewnie wiesz(lub nie :p), pierwszą własną paczkę
stworzyłeś podczas tworzeniu terenu.
Była to paczka tekstur z Twoim terenem,
bez której mapka, by nie działała. ;)
W tym rozdziale opiszę i pokażę jak zrobić prawdziwą
paczkę tekstur, oraz inne paczki.

●Paczka tekstur:
Na początek, wejdź w StaticMesh Browser i w zakładkę ‘’Textures”.
Przygotuj sobie jakąś teksturkę z końcówką ‘’.dds” lub ‘’.bmp”.

(Po więcej informacji zapraszam do rozdziału o tworzeniu tekstur)

Teraz kliknij File Import , wybierz tekstury i wypełnij okienko.:

W ‘’Package” wpisz nazwę swojej paczki, ‘’Name” możesz zostawić


tak jak jest, a kompresję ustaw na DXT3 i kliknij OK
(więcej o kompresji w dziale DODATKI).

Paczka jest już gotowa, wystarczy ją tylko zapisać.:

Strona: 68
●Paczka dźwięków:
Przejdź do zakładki ‘’Sounds”.

Paczkę z dźwiękami robi się podobnie, wręcz identycznie,


ale musisz mieć muzyczkę z rozszerzeniem ‘’.wav”
(konwertery on-line do formatu .wav znajdziesz w google ;) ).
Tak samo jak to było z paczką tekstur, klikasz File Import ,
wybierasz muzyczki, wpisujesz nazwę paczki i klikasz OK.

Strona: 69
Zaawansowany PostED:
8.Trigger’y:
Trigger ’y to swojego rodzaju wyzwalacze, które powodują jakąś akcję,
(np. wybuch auta, odtworzenie Cut-Scenki, ruch mover’a itd...).

●Zwykły trigger:
Działanie trigger’a pokażę na przykładzie wybuchającego radiowozu.

Zwykłego trigger’a, znajdziesz w ActorClasses:


Actor Triggers Trigger

Postaw go w wybranym miejscu na mapie (PPM Add Trigger Here).

Strona: 71
Teraz, również z ActorClasses postaw radiowóz, znajdziesz go w:
Actor KActor CarExplodable CarPolice

Wejdź w opcje Triggera, i w zakładce ‘’Events” w polu ‘’Events”


wpisz jakąś nazwę, np. PoliceCar.
Następnie wejdź w opcje radiowozu, i w polu ‘’Tag” wpisz to samo.

Czyt. musisz wpisać w ‘’Events” Trigger’a, ‘’Tag” jakiejś akcji (np. auta).

I gotowe.
Teraz możesz włączyć grę, wejść w Trigger’a i podziwiać efekty. ;)

Strona: 72
●Ustawienia trigger’a:
Dodatkowo, po ustawieniu Trigger’a, możesz go lekko zmodyfikować.

Wejdź w opcje Trigger’a, i zakładkę ‘’Trigger” i ustaw poniższe opcje.:

bTriggerOnceOnly – Trigger działa tylko raz


Message – Wiadomość wyświetlana po wejściu w Trigger
TriggerType – Typ Trigger’a

Typ Trigger’a możesz ustawić,


by np. uruchamiał akcję po strzeleniu w niego, zamiast wejściu w niego.

Strona: 73
●ScriptedTrigger:

ScriptedTrigger różni się od normalnego Trigger’a niemal wszystkim.


ST może być aktywowany Trigger’em (by np. aktywować
zakończenie gry), ale może też (bez Trigger’a), kontrolować
jakąś postać (by np. wykonywała jakąś czynność).

Daje to dużo przeróżnych możliwości,:


od włączenia następnego dnia, przez zaatakowanie kogoś,
aż po usuwanie aktorów, czy zrobienie innej czynności.

Jeśli planujesz zrobić pełną akcji mapkę, czy atrakcyjnego moda,


bez ScriptedTrigger’a się nie obejdzie. ;)

Dobra, koniec gadania (pisania... :p) ...zaczynajmy! :D

Dla przykładu pokażę co zrobić, by załadować kolejny dzień,


po wejściu w Trigger.

Pierw wybierz sobie miejsce gdzie chcesz,


by wczytywał się kolejny dzień.

Postaw w tym miejscu normalnego Trigger’a.


Następnie wejdź w jego opcje, i teraz podobnie jak w lekcji o Trigger’ach
wejdź w zakładkę ‘’Events” i w ‘’Events” wpisz np. ‘’NextDay”.

UWAGA!
Wpisując jakieś(jakiekolwiek) informacje, słowa, czy nawet nazwy własnych paczek,
nie używaj polskich znaków(tzw. ‘’z ogonkiem”) np. ‘’ą”, ‘’ę”, ‘’ż” itd.,
bo UnrealED ma to do siebie(choć nie tylko on), że może wywalać crash’e,
najprościej pisząc, może rozwalić naszą pracę, bo nie umie rozpoznać tych ‘’ogonków”.
Mogłem napisać to przy rozdziale o tworzeniu własnych paczek,
ale jakoś teraz mi się to przypomniało...

Strona: 74
Teraz w ActorClasses poszukaj ScriptedTrigger’a.:

Actor Keypoint AIScript ScriptedSequence ScriptedTrigger

Postaw go niedaleko zwykłego Trigger’a.


Nie za daleko, ale też nie za blisko, tak byś nie musiał go szukać,
ale żebyś wiedział, że dany ScriptedTrigger należy do owego Trigger’a.

(Jeśli chcesz wiedzieć co to te ‘’jabuszka” na screenie wyżej,


to zapraszam do rozdziału o PathNode i HomeNode. :) )

Potem wejdź w opcje ScriptedTrigger’a


(PPM ScriptedTrigger Properties), i w zakładce ‘’AIScript”,
kliknij pole ‘’Actions”, i potem ‘’Add”.
Następnie kliknij pole ‘’New” i z rozwijanej listy wybierz
‘’ACTION_SendPlayer” i zatwierdź nową akcję przyciskiem ‘’New”.

Strona: 75
Potem w opcjach akcji, ustaw ‘’Where”
‘’ ” na ‘’EW_StartNextDay”,
‘’bWaitForTrigger” zostaw na True, a ‘’bOneTimeOnly”
przestaw na True - działa tylko raz.

Strona: 76
Na koniec wejdź jeszcze w zakładkę ‘’Events”,
‘’
w opcjach ScriptedTrigger’a, i w polu ‘’Tag” wpisz ‘’NextDay
NextDay”
(czy co tam wpisałeś w ‘’Events” w zwykłym Trigger’ze).

Strona: 77
9.Efekty:
●Emittery:
Emittery – to obiekty, które pokazują nam np. płomienie ognia,
kapiącą wodę z kranu czy krew tryskającą we wszystkie strony.

Zrobienie Emittera, na początku, może się wydawać trochę


trudne i skomplikowane, ale z każdym kolejnym, zrobionym przez nas
Emiterem jest coraz łatwiej, i przecież po to jest ten poradnik,
by wszystko, ładnie wyjaśnił co i jak. :)

Na początek, postaw zwykłego Emittera z ActorClasses.:

Actor *Emitter

Następnie wejdź w jego opcje (PPM Emitter Properties),


przejdź do zakładki ‘’Emitter” i stwórz ‘’SpriteEmitter”.

Strona: 78
Dla przykładu stworzę ogień.

Otwórz Texture
xture Browser i wczytaj (File Open) paczkę
‘’nathans.utx” i z grupy ‘’Skins” wybierz jakąś teksturkę ognia
(cztery płomienie w jednym obrazku).
obrazku)
Teraz wejdź w ‘’Texture”
‘’ ” (w opcjach Sprite Emittera) i w ‘’Texture”
dodaj tą teksturę płomieni.
W ‘’TextureUSubdivisions”
ubdivisions” wpisz 1, a w ‘’TextureVSubdivisions” wpisz 4.

Teraz zmienimy rozmiar naszego płomienia.

Wejdź w ‘’Size”,
”, w ‘’StartSizeRange”, i zmień ‘’Min” na 8 a ‘’Max” na 10,
tak jak na obrazku.:

Strona: 79
Następnie musimy zmienić zanikanie i cząsteczki.
By to zrobić wchodzimy do ‘’Velocity”.

Tutaj ustaw ‘’StartVelocityRange” na liczby od 0 do 20,


w polach X, Y i Z.

Ja ustawiłem ‘’Min” na 1, a ‘’Max” na 10, więc mój (nasz..? :p)


ogień będzie się palił średnio wolno. :)

Na koniec zmienimy ‘’Time”.


Tam ustaw ‘’LifeTimeRange”. ‘’Min” na 2, a ‘’Max” na 4.

Strona: 80
Właśnie stworzyliśmy mały płomyk :D

To był tylko przykład i możesz dowolnie modyfikować


inne opcje np. zwiększyć rozmiar; lub je
‘’podpatrzeć” od innych Emitterów ;)

Możesz jeszcze zmienić w zakładce ‘’Local”, ‘’AutoDestroy” na True


(Emitter zniknie gdy wykona jeden [lub kilka] ‘’obieg”. Na przykład
tak jak robi to granat. Wybuchnie raz i znika :) ),
lub ‘’AutoReset” na True (choć nie polecam, ale powoduje to to,
że płomień [czy coś tam innego] po każdym ‘’obiegu”,
resetuje sie i pali od nowa, zamiast ‘’kontynuować”
spalanie z poprzedniego obiegu).

Przydatne przy łączeniu Emittera z Trigger’em. ;)

Jeśli chciałbyś się dowiedzieć więcej, o tym jak się robi Emittery,
zapraszam do działu ‘’Dodatki”.

Strona: 81
●Wybuchające obiekty:
Powinieneś już wiedzieć(o ile przeczytałeś rozdział o Trigger’ach...),
jak postawić na mapę wybuchający radiowóz.
Czasami to jednak nie wystarcza, gdy chcemy zrobić, by
zamiast tamtego auta wybuchło coś innego...np. .... telewizor?

Ten podrozdział wyjaśni jak zrobić takiego typu bajery. ;)

Na początku, ustal co ma być tym eksplodującym obiektem.


Ja dla przykładu wysadzę...zwykłego miniwana. :)

Zależnie od tego czy chcesz, by obiekt działał w parze z Trigger’em,


postaw tego Trigger’a w wybranym miejscu, lub jeśli nie, to nie stawiaj. :p

Postaw na mapę, w wybranym miejscu zwykły samochód,


wybierając go z ActorClasses.:

Actor KActor KActorExplodable *CarExplodable

Ok. Mamy zmutowaną wersję polskiego ‘’Malucha”.


Wszystko fajnie, ale jak teraz zrobić z tego miniwana?
Otóż trzeba ustawić obiekt w stanie, przed i po wybuchu.

Daje to duży wachlarz wariackich możliwości, bo możemy postawić


np. kwiatka, który po wybuchu zamieni się w półkę z książkami! :D

Strona: 82
Na razie zmienimy wygląd obiektu przed wybuchem.
By to zrobić, wybierz ze StaticMesh Browser’a, jakiś obiekt.
Ja wybiorę miniwana, z paczki ‘’Timb_mesh.usx” z grupy ‘’cars”.

Teraz wybierz teksturę.

Ja wybiorę teksturkę miniwana, z paczki ‘’Timb.utx” z grupy ‘’cars”.

Strona: 83
Następnie wejdź w opcje naszego ‘’Malucha”, do zakładki ‘’Display”.
‘’
Tam kliknij ‘’Skins
Skins” i w [0] kliknij ‘’Use”,
potem kliknij ‘’StaticMesh
StaticMesh” i też kliknij ‘’Use”.
Teraz ustawimy wygląd po wybuchu.
Tym razem wybierz model i teksturę obiektu po wybuchu.:
Znowu wejdź w opcje, tym razem, do zakładki ‘’KActorExplodable”.
Tam kliknij ‘’BrokenStaticMesh”, i kliknij ‘’Use”,
i w ‘’DamageSkin” również kliknij ‘’Use”.

I gotowe. :)

Możesz dodatkowo zmienić ilość życia (Health) pojazdu,


i zrobić z niego wóz opancerzony. :D

Oprócz ustawienia kwiatka przed wybuchem, i półki z książkami


po wybuchu, możesz również pozmieniać Emittery
po wybuchu, np. przerobić kolor ognia na niebieski. ;)

Strona: 86
●Projektory:
Projektory – to takie cośki, które wyświetlają jakąś teksturę
na danej powierzchni.

Projektor może wyświetlić teksturę na wszystkim!


Może być to: ściana, teren, StaticMesh itp.

Dla przykładu, cień pod tym drzewem jest stworzony za pomocą projektora. :)

Światło przechodzące przez okno, również wyświetla projektor.

Strona: 87
Ok. Gdy już wiesz co to są projektory, mogę przejść
do omawiania jak takie cudeńka zrobić. ;)

Na początek postaw na mapę projektora, z Actor Classes:

Actor *Projector

Jeśli plusikiem rozwiniesz go bardziej, będziesz miał gotowe


projektory takie jak np. ślady krwi, dziury po pociskach.

Teraz tego projektora trzeba skonfigurować. :)

Strona: 88
Wejdź w opcje projektora (PPM
( Projector Properties),
Properties
i przejdź do zakładki ‘’Projector”.
‘’

To ‘’skonfigurowanie
skonfigurowanie” projektora, sprowadza się tylko do tej zakładki,
i tylko tu będziemy grzebać. :)

Pierw ‘’bLevelStatic
bLevelStatic” daj na True.

Opcje zaczynające się na ‘’bProject...”,


‘’ ...”, zaznaczone w pomarańczowej
ramce to po prostu informacja dla gry, na których powierzchniach
ma być wyświetlana tekstura.

Uwaga!
Koniecznie ustaw powierzchnie zmieniając niepotrzebne na False, i zostaw tylko
te, na których chcesz wyświetlić, np. jak tylko na ścianie to daj na True tylko
‘’bProjectBSP”, gdyż czasami się zdarza, że gdy ustawi się na True więcej
powierzchni niż potrzeba, to zaczyna prześwitywać na inne powierzchnie za
z nim,
zmniejszając wydajność gry, a także wygląd. :)
Następnie wybierz teksturę z Texture Browser’a, i dodaj ją
w ‘’ProjTexture”” przyciskiem ‘’Use”.

Ustaw zasięg wyświetlania tekstury przez projektor,


wpisując w ‘’MaxTraceDistance
MaxTraceDistance” – dobra jest liczba od 100 do 300.

oniec dostosuj wygląd wyświetlanej tekstury, używając


Na koniec
‘’FrameBufferBlendingOp
FrameBufferBlendingOp” oraz ‘’MaterialBlendingOp”.
10.Tworzenie BOSS ‘a:
UWAGA!
Ten rozdział dotyczy TYLKO (i wyłącznie) Apocalypse Weekend!
Jeśli chcesz zrobić BOSS’a, w zwykłym P2 lub STP, musisz
przenieść skrypt ‘’EnemyHealth” z AW(lub ED/AVPC) do P2/STP,
ale, to już jest Modderski poziom trudności, więc lepiej
jest zrobić BOSS’a w samym AW/ED/AVPC,
niż bawić się w skryptach. :)

BOSS – (jak by ktoś nie wiedział co to ;p) to jakiś byt(człowiek/potwór),


który ma znacznie więcej życia, niż normalni przeciwnicy, oraz
ma mocniejsze ataki, i zazwyczaj trudno go pokonać. :p

By stworzyć BOSS’a, na początek wybierz, kto ma nim być.


Ja zrobię BOSS’a z taliba. :D

Postaw swojego BOSS’a w wybranym przez Ciebie miejscu,


wejdź w jego opcje (PPM <ludzik> Properties),
przejdź do zakładki ‘’Events”, i w polu ‘’Tag” wpisz np. ‘’BOSS”.

Strona: 91
Teraz postaw ScriptedTrigger’a, nie daleko BOSS’a,
wejdź w jego opcje,
opcj i w zakładkę ‘’AIScript”.
Tam w polu ‘’Actions
Actions”, kliknij ‘’Add”,, i z rozwijanej listy wybierz
‘’ACTION_EnemyHealth” i zatwierdź potem przyciskiem ‘’New”.:

Następnie rozwiń ten skrypt i w ‘’EnemyTag”,


‘’ ”, wpisz Tag swojego BOSS’a,
czyli wcześniejsze
wcześniejsz ‘’BOSS”.

Strona: 92
Teraz wybierz jakąś teksturkę z Texture Browser’a –
będzie ona wyświetlała życie przeciwnika.
Może być na przykład taka.:

I dodaj ją w ‘’HudPawnIcon przyciskiem ‘’Use”.

Możesz dodatkowo powiększyć BOSS’a.


Zrobisz to w zakładce ‘’Display”
‘’ ” używając ‘’DrawScale3D”
(tak jak to można było zrobić w podrozdziale o tworzeniu drzwi).
●Zakończenie:
BOSS nie żyje.. Co dalej?
Wariantów jest wiele. Może to być Cut-Scenka,
Cut
zespawnowanie się kilku mniejszych ‘’pomocników”
‘’pomocników” BOSS’a. itd.

Dla przykładu pokażę jak zrobić koniec gry, po jego zabiciu.

Pierw postaw na mapę drugiego ScriptedTrigger’a,


i w zakładce ‘’AIScript
AIScript”” ustaw akcję ‘’ACTION_EndOfGame”,
potem w zakładce ‘’Events”
‘’ w polu ‘’Tag” wpisz np. ‘’Konie
KoniecGry”.

Następnie wejdź
ejdź w opcje ScriptedTrigger’a
(tego z akcją ‘’EnemyHealth”),i w zakładce ‘’Events”,
”, w polu ‘’Events”
wpisz to co wcześniej, czyli np. ‘’KoniecGry”.
11.Robienie Cut-Scenki
Scenki:
Cut-Scenka –- jest to przerywnik - filmowy, lub tworzony
tworzo na silniku gry.
Ja w tym podrozdziale pokażę jak zrobić taką Cut-Scenkę,
Cut
aktywowaną Trigger’em.

Na początek otwórz swojego Scene Managera , i stwórz nową scenę.

Następnie zaznacz tą scenę, i przejdź do zakładki ‘’Tools


‘’Tools”.
Teraz ustaw kamerę na widoku 3D, tak, jak chcesz żeby ‘’leciała” kamera,
i kliknij ‘’Add Interpolation Point”.
Point”
Interpolation Point – to taki checkpoint, przez który
będzie ‘’przechodziła” kamera.

Gdy poustawiasz wszystkie Interpolation Point’y, które będziesz


chciał mieć, przejdź do zakładki ‘’Actions”, by je połączyć.
Tam kliknij New ActionMoveCamera .

Teraz zaznacz pierwszego Interpolation Point’a ,


i w ‘’MatAction”, w ‘’IntPoint” dodaj go przyciskiem ‘’Use”.

Strona: 96
Jeszcze w zakładce ‘’Time”
‘’ ustaw czas trwania akcji.

Kolejne Int Point’y, łączysz w ten sam sposób...


-tworzysz
tworzysz nowe ‘’ActionMoveCamera” i w zakładce ‘’MatAction
MatAction”
dodajesz następny Int Point, i ustawiasz czas.

Gdy chcesz zobaczyć jak wygląda Twoja Cut-Scenka,


Cut
kliknij
liknij w tą lupę.:

Uwaga!
Jeżeli na początku filmiku, kamera ‘’zakręca” w inną stronę
i dopiero po tym, przechodzi przez wyznaczone checkpoint’y,
to w pierwszej akcji ustaw czas na 0. Powinno pomóc. :)

Na koniec ustaw Trigger’a w wybranym miejscu,


miejscu, i w zakładce ‘’Events”,
‘’
w ‘’Events” wpisz np. ‘’ActionInHouse”, i w Scene Manager,
w ‘’Events”” w ‘’Tag” wpisz to samo, np. ‘’ ActionInHouse”.
”.

Strona: 97
●’’Łagodny” ruch kamery:
Normalny ruch kamery jest taki trochę ‘’kwadratowy”. ;)
Po to jest właśnie opcja ‘’Bezier”, by go trochę ‘’zaokrąglić”. :p

Taką opcję Bezier, musisz powłączać, we wszystkich akcjach osobno.

Zrobisz to w Scene Managerze, przechodząc do zakładki ‘’Actions”,


następnie wybierasz akcję, potem wchodzisz w ‘’Path”,
i z ‘’PathStyle” wybierasz ‘’PATHSTYLE_Bezier”.

O tym, że dana akcja ma ustawioną opcję Bezier,


poinformuje Cie taki znaczek po prawej stronie akcji, nad literą ‘’S”
- będzie ‘’pofalowany” zamiast prosty.

Strona: 98
Tor ‘’lotu” dla kamery ustawiasz, naciskając na jedną z dwóch kulek,
i przesuwasz je używając Shift/Ctrl + PPM/LPM.

Strona: 99
●Kamera patrząca w punkt:
Jeśli chcesz, by Twoja Cut-Scenka wyglądała jak Cut-Scenka,
a nie jak jakiś ‘’pociąg”, musisz użyć LookTarget’ów. ;p
Są to punkty, w które ‘’patrzy” się kamera podczas akcji.

Gdy już zrobisz swoją Cut-Scenkę, przejdź do zakładki


‘’Tools” w Scene Managerze.
Ustaw się w widoku 3D w miejsce, w które chcesz by patrzyła kamera,
i kliknij ‘’Add Look Target”.:

Możesz poustawiać ich nawet kilkanaście, ale na początek wystarczy 1-2.

Teraz wybierz jakąś akcję z zakładki ‘’Actions”,


i potem przejdź do zakładki ‘’Sub Actions”, kliknij tam New
a następnie wybierz ‘’SubActionOrientation”.

Strona: 100
Następnie zaznacz wcześniej postawiony LookTarget, i rozwiń
‘’Orientation” i dodaj go w polu ‘’LookAt” przyciskiem ‘’Use”.

Jeszcze tylko zmień ‘’CamOrientation” na ‘’CAMORIENT_Interpolate”,


i niżej w zakładce ‘’Time” ustaw czas przez jaki kamera ma na to patrzeć
w wybranej akcji.

W ‘’Sub Actions” można ustawić nie tylko kamerę


patrzącą na LookTarget’a, ale również takie rzeczy jak np.:
ściemnienie obrazu, napis-teksturę, prędkość gry podczas
Cut-Scenki, i wiele innych. :)

Strona: 101
12.PathNode i HomeNode:
●PathNode:
PathNode’y – to takie punkty nawigacyjne, przez które przechodzi
NPC (Bystander) podczas podróży po metropolii.

Gdy postawimy człowieczka, bez żadnych PathNode’ów,


to gra sama wybierze mu punkty nawigacyjne, lecz nie będą one
widoczne dla nas, tylko dla samej gry, czyt. ‘’bystek będzie chodził
gdzie popadnie”. :p

Uwaga!
Odległość pomiędzy PathNode’ami (jabuszkami) nie może przekraczać 1200!
W przeciwnym wypadku może to powodować crashe gry.

Z początku może się wydawać, że zwykły widok ‘’jabuszek” wystarcza.


Niestety nie....komfortowa praca z PathNode’ami staje się dopiero,
po włączeniu widoku połączeń między nimi, tak więc włączaj go zawsze
przed zabawą z nimi. ;)

Taki widoczek możesz włączyć, klikając PPM’em na któreś z okien,


i z ‘’View” wybrać ‘’Show Paths”.

Strona: 102
Tak mniej-więcej wyglądają połączenia między punktami nawigacyjnymi.: :)

By dowiedzieć się, co dokładnie oznaczają kolory


poszczególnych połączeń musisz pogrzebać w dokumentacji...
czyli np. tu.:
udn.epicgames.com/two/NawigationAI

Powodzenia przy szukaniu. ;)

Strona: 103
PathNode’a możesz postawić na mapę, na dwa sposoby.
Pierwszy to po prostu klikasz PPM i wybierasz ‘’Add Path Node Here”.

Drugi jest prawie identyczny tylko musisz jeszcze


wybrać go w ActorClasses.:

Actor NavigationPoint *PathNode

Po czym tak samo go stawiasz, tylko wybierasz ‘’Add Path Node Here”
tego bardziej na górze. ;)

Strona: 104
Gdy już poustawiasz PathNode’y w wybranych miejscach,
logiczne jest, by teraz je połączyć,
...bo skąd niby gra ma się domyślić, że to ‘’to” jabuszko
jest następne, a nie ‘’to”? ;)

Tak więc połączmy punkty nawigacyjne. :)

Kliknij na pierwszego PN (PathNode) i kliknij PPM’em drugiego


PN, i wybierz ‘’Proscribe...” lub ‘’Force...”, w zależności czy chcesz
połączyć PN, czy też rozłączyć.

●HomeNode:
HomeNode to punkt nawigacyjny, podobny do PathNode,
z tą różnicą, że wyznacza on ‘’miejsce patrolowe”,
którego nasz obiekt będzie pilnował.

Pierw poustawiaj kilka HomeNode’ów np. na podwórku.


Wejdź w opcje HN, i w zakładce ‘’Events”, w polu ‘’Tag”
wpisz np. ‘’podworko”.

Strona: 105
Teraz postaw na podwórku psa.

Wejdź w jego opcje i w zakładce ‘’PawnAttributes”, w polu ‘’HomeTag”


wpisz to samo, np. ‘’podworko”.

PathNode i HomeNode możesz ze sobą łączyć,


tak samo jak to się robi w przypadku samych PathNode.

Połączenia możesz sprawdzić, wybierając zakładkę ‘’NavigationPoint”,


a w niej rozwijając ’ForcedPaths” i ‘’ProscribedPaths”.

Strona: 106
13.Pomniejsze zagadnienia:
●Tworzenie sklepu:
Stworzenie punktu płatności –sklepu- wymaga kilka elementów,
przy czym jest to troszkę skomplikowane, szczególnie zrobienie kolejki
do stoiska, o którym powiem w następnym podrozdziale. :)

Na początek postaw z Actor Classes QStartPoint’a,


którego ustaw po stronie kupującego.

Actor Keypoint AIScript InterestPoint QPoint *QStartPoint

W jego Tagu (powinieneś już wiedzieć gdzie się to wpisuje ;) ) wpisz np. ‘’kupno”.

Strona: 107
Teraz postaw CashRegPoint’a – po stronie sprzedającego.

Actor Keypoint OperateMePoint *CashRegPoint

W jego Tagu wpisz np. ‘’sprzedaz” (oczywiście bez polskich ogonków ;) ).

Strona: 108
Następnie postaw jakiegoś sprzedawcę, może to być MallWorker.
W jego Tagu wpisz np. ‘’SellFastFood”.

Potem wejdź w opcje CashRegPoint’a, w zakładkę ‘’CashRegPoint’’,


i tam ustaw koszt przedmiotu (ItemCostMax) i jego rodzaj (ItemGiven).
Możesz jeszcze ustawić jaką ilość ma sprzedać sprzedawca
(MaxNumberOfItemsGiven).

Na koniec, w zakładce ‘’OperateMePoint”, w ‘’InputTag” wpisz


Tag QStartPoint’a, czyli tamto ‘’kupno”, a w ‘’OperatorTagList”
wpisz Tag sprzedawcy – wcześniejsze ‘’SellFastFood”.
●Jak zrobić drabinę?:
Jest to trochę skomplikowane, ale razem damy radę. :p

Po wybraniu miejsca dla drabiny, wejdź w StaticMesh Browser


i poszukaj drabiny w paczce ‘’P2-outdoors-SW.usx”,
w zakładce ‘’ROOF-DETAILS”.

Teraz trzeba dodać najważniejszą rzecz – LadderVolume,


który powoduje, że można po niej wchodzić.

Wybuduj Cube’a o wymiarach takich, by gracz zmieścił się


‘’ramionami” w tego brusha (choćby 128x128) a wysokość jaką chcesz,
i ustaw go przy drabinie w taki sposób jak na obrazku.:

Strona: 110
Następnie klikasz PPM na Volume na prawym pasku narzędziowym,
i wybierasz ‘’LadderVolume”.:

W miejscu brusha o określonych przez Ciebie wymiarach masz już


gotową drabinę, ale trzeba jeszcze nad nią popracować.
Strzałka tego LadderVolume musi wskazywać kierunek,
w jakim ma to Volume działać, czyli na StaticMesh drabiny, ścianę, skałę.

Wejdź w opcje (PPM LadderVolume Properties), w zakładkę


również o tej nazwie, i tam masz ‘’WallDir” oraz trzy sekcje,
nas interesuje ‘’Yaw”. I tu jest problem, bo obracać tego nie można,
a zapamiętać liczb też nie idzie. W takim razie
przebudowujesz mapę (Build All) - pojawi się mała drabinka,
jest to AutoLadder. Jego możesz już obracać, więc jej strzałkę skieruj
we właściwą stronę (zapamiętując oryginalną pozycję).
We właściwościach w pozycji Movement Rotation Yaw kopiujesz
znajdującą się tam liczbę. Samemu AutoLadder przywracasz oryginalną
pozycję strzałki (no, przybliżoną do oryginalnej chociażby) i przechodzisz
do LadderVolume. W nadmienianej pozycji
LadderVolume WallDir Yaw wklejasz daną liczbę.

Jeśli powyższy wykład do Ciebie nie przemawia,


spójrz na poniższy obrazek.: :)

Strona: 111
Oczywiście jeszcze musisz, przed punktem piątym (Build All),
obrócić AutoLadder to pozycji początkowej,
i dopiero potem przebudować mapę. ;)

Jeśli na górze robisz otwór (bo to będzie wyłaz na dach),


to nie zapomnij zrobić go szerszego od samego LadderVolume.
Gdy będzie za wąski, to i gracz i sam bystander, jeśli wejdą na drabinę
nie po jej środku, ale z boku, to zawadzą o otwór i utkną w nim.
Gracz musi się cofać na sam dół i wejść poprawnie jeszcze raz, ale
bystander nie jest tak mądry i będzie tam cały
czas "skakał" zablokowany. Blokując też innych.

A to mój badziewny rysunek w paintcie xD

Strona: 113
●Robienie bankomatu:
Na początek postaw w wybranym miejscu sam bankomat
z paczki ‘’Timb_Mesh.usx” z grupy ‘’fooo”.

Potem z ActorClasses wybierz Spawner:

Actor *Spawner

i postaw go przed bankomatem


(to właśnie z niego będą ‘’wylatywały” pieniążki :p).

Strona: 114
Teraz wejdź w opcje Spawnera, i w zakładce ‘’Events” w ‘’Tag”
wpisz np. ‘’SpawnMoney”, a w zakładce ‘’Spawner”,
w ‘’SpawnClass” ustaw ‘’MoneyPickup”.

Następnie postaw, również przed bankomatem, zwykłego Trigger’a.

W jego opcjach, w zakładce ‘’Events”, w ‘’Events” wpisz ‘’SpawnMoney”,


a w zakładce ‘’Trigger”, ustaw TriggerType na Shoot.

Możesz jeszcze ustawić ‘’bTriggerOnceOnly” na True, wtedy będzie


działać tylko raz – tak jak w normalnym Postalu 2. :)

Potem postaw, przed bankomatem SoundThing i teraz tak...:


-w zakładce ‘’SoundThing” zmień oba ‘’b...” na False tak jak na obrazku;
-w zakładce ‘’SoundThingSettings”, w ‘’General” zmień ‘’RepeatCount” na 1,
a ‘’RepeatMode” na ‘’ERM_Count”. W ‘’PerSound” zmień ‘’RadiusRange”
na 200, i potem wybierz dźwięk z Sound Browsera i dodaj do ‘’Sounds”
(paczka ‘’MiscSounds.uax”, grupa ‘’Props”, nazwa ‘’atm”).
Jeszcze w ‘’Events” SoundThing’a, w ‘’Tag’u” wpisz ‘’SpawnMoney”.

Żeby osiągnąć jeszcze lepszy efekt, możesz zrobić Emittera


przy bankomacie i w ‘’Tag’u” wpisać ‘’SpawnMoney”,
ale to już musisz samemu ‘’podpatrzeć”
jak to RWS(*) zrobił na mapach w Postalu 2. :p

(*) – Jak by ktoś nie wiedział. ;p


RWS (Running With Scissors) – firma, która zrobiła Postala 2. :)

Strona: 116
●Tworzenie lustra:
Na początek wybuduj gdzieś brusha, o wybranej wielkości tak,
by nie dotykał ściany.

Zaznacz drugą stronę (tą od ściany) ‘’lustra” i wejdź w opcje


(PPM Surface Properties) i zaznacz ‘’Invisible”

(choć to ostatnie nie jest wymagane).

Teraz na właściwej stronie ‘’lustra”, także wejdź w opcje,


ale tym razem zaznacz ‘’Mirror”.

Na koniec przebuduj geometrię mapy


(choć możesz też przebudować całą – Build All :) ).

Strona: 117
Strona: 118
●Elementy tylko w wybrane dni:
Jeśli czytasz ten podrozdział, to zapewne chcesz się dowiedzieć jak
zrobić, by jakieś elementy świata PostED pojawiały się tylko
w określone dni. :)

Potrzebne jest to gdy chcesz zrobić np. jakieś blokady,


czy po prostu dać jakiegoś człowieczka w wybranym dniu.

Cała praca to tylko zaznaczenie obiektu i dodanie go do tzw. grupy.


Grup jest na prawdę wiele m.in. np. grupa policjantów, czy dni.
Można utworzyć własną grupę i dodawać do niej obiekty,
jest to bardzo pomocne w przypadku dużej ilości obiektów na mapie.
Wystarczy, że po zaznaczeniu jakiegoś obiektu, wejdziesz w
Browser’a, w zakładkę ‘’Groups”, i tam zaznaczysz grupę i ‘’plusikiem”

przyporządkujesz ją do obiektu.:

‘’Day_A” to poniedziałek, ‘’Day_B” to wtorek, ‘’Day_C” to środa itd.

I to tyle. Masz już obiekt w wybrany dzień. :)

Strona: 119
●DayBlocker:
DayBlocker – jego się stosuje głównie do budowania blokad dniowych
typu ‘’zamknięte do wtorku”. Po co to, gdy można zrobić to
normalnym przypisaniem do grupy z wybranym dniem?
Nie wiem. Z tym pytaniem kieruj się do twórców. :D
Choć wspominam o nim tak przy okazji, to warto go wtedy stosować.
Znajdziesz go w Actor Classes:

Actor Prop *DayBlocker

Stawiasz go normalnie (PPM Add DayBlocker Here), po czym zmieniasz


jego wygląd w zakładce ‘’Display”. Możesz już go dodać do grupy z dniem.

Strona: 120
14.Telepad’y:
Telepad’y to takie punkty, dzięki którym możemy się przenosić
między mapami. Po wejściu w telepad’a, przenosi nas on
na inną, ustaloną przez nas mapę, na której jest ‘’wyjściowy” telepad,
‘’podpięty” do tego pierwszego, i nawzajem.

By zrobić takie ‘’łączenie” między poziomami, przejdź do edytora.

Wejdź w Actor Browser i wybierz:

Actor NavigationPoint SmallNavigationPoint *Teleporter *Telepad

Postaw jednego telepad’a na pierwszej mapce i jednego na drugiej mapce.

Teraz wejdź w opcje telepad’ów i w zakładce Events, w polu ‘’Tag”


wpisz nazwy jednego i drugiego telepad’a
(pamiętaj, że nazwy muszą być unikalne!).

Potem w zakładce Teleporter, w polu ‘’URL” wpisz miejsce,


do którego chcesz się przenieść używając danego pad’a:

[NazwaMapy]#[NazwaPad’a(Tag)]?peer

Zrób to według wzoru pokazanego na obrazku poniżej. :)

Strona: 121
Gdy zrobiłeś wszystko dobrze, telepad’y powinny już działać. :)

Strona: 122
Moddowanie:
Teraz zaczyna się prawdziwa zabawa w moddera! :)
Ten dział wymaga dobrego opanowania edytora UnrealED,
także jeśli nie opanowałeś wcześniejszych tematów,
jak najszybciej to zmień i wróć tu potem. :)

Jeśli jednak obsługa PostED nie sprawia Ci trudności, czytaj dalej...

W tym dziale postaram


ostaram się wyjaśnić najpotrzebniejsze funkcje
w języku, z którego korzysta Unreal Engine – Unreal Script.

Oczywiście po przeczytaniu tego działu, nie napiszesz od razu


jakiegoś
akiegoś bardzo skomplikowanego moda, bo do tego trzeba o wiele więcej
nauki i umiejętności.

Unreal Script to w większości c++, z domieszką Javy.

Polecam przeczytać kursy o podstawach c++ (pełno jest ich w internecie),


wtedy łatwiej będzie Ci rozumieć język Unreala.

Jeśli przebrnąłeś przez (pewnie nudne ;p ) wprowadzenie,


czytaj następny podrozdział. :)
15.Podstawy Unreal Script:
●Wprowadzenie:
Ten rozdział wprowadzi Cię w podstawy Unreal Script’u.
Od razu mówię (piszę? :p ) – nie jestem jakimś wielkim znawcą
tego języka. Opanowałem go w mniejszym lub większym stopniu,
i tą wiedzę chcę wam w tym poradniku przekazać. :)

Jak pisałem wcześniej, Unreal Script jest oparty na c++ i javie,


i jeśli znasz choć trochę, jeden z tych języków, to będziesz miał łatwiej.

Nie polecam pisać skryptów w zwykłym edytorze tekstu UnrealED,


żeby było Ci wygodnie ściągnij sobie np. program ConText lub UnCodeX.
Główne zalety to między innymi podświetlenie składni.
Dodatkowo ściągnij sobie UMake do kompilowania skryptów,
jeśli jeszcze go nie masz. ;)

●Klasy, obiekty, etc..:


OOP - "Object Oriented Programming" - inaczej programowanie
obiektowe, jest wykorzystywane w wielu językach a np. taki C++ jest
tylko jednym z wielu. Koncepcje OOP można najkrócej ująć w słowach:
"Wszystko jest obiektem". Może śmiesznie to brzmi, ale taka jest
prawda. Rakietnica, Skaarj, ASMD i cała reszta to obiekty. Obiekty te są
kontrolowane przez kod (który to jest zawarty w klasie). Sama z siebie
rakietnica nie będzie strzelać, będzie tylko statycznym modelem, to kod
sprawia, że możesz strzelać, że rakieta wybucha, granat się odbija kilka
razy, itp.
Teraz przyjrzyj się klasom widocznym w ”Actor Class Browser” w UED.
Jak zatem widzisz wszystko co napiszesz na początku będzie należało do
klasy Actor albo do klas potomnych. W istocie nie widzisz wszystkiego.
Odznacz "Actor Classes Only", wtedy zobaczysz podstawę wszystkich
klas – Object. Cała idea polega na tym, że KAŻDA klasa potomna
dziedziczy kod klasy macierzystej. Dlatego tworząc nową broń lub NPC,
nie musisz pisać wszystkiego od początku, wystarczy, że rozszerzysz o
nowe funkcje istniejące klasy.

Strona: 125
A jak to wygląda w praktyce? przyjrzyjmy się bliżej czemuś
zemuś takiemu:

Odczytujemy to tak: klasa MyClass należy do klasy Actor i dziedziczy


wszystkie jej zmienne i funkcje. Co jednak dzięki temu zyskujemy?
Ułatwienie i możliwość skrócenia kodu.

Przykładowo: Chcemy stworzyć naszą klasę jednostek specjalnych


SWAT. Nie musimy pisać całego kodu od nowa, wystarczy, że
napiszemy coś takiego:

W ten sposób utworzymy


utworzymy naszą klasę jednostek SuperSWAT,
która odziedziczy wszystko co ma klasa SWAT. :)

Teraz mamy możliwość zmodyfikowania odziedziczonych atrybutów.


Zrobimy to dopisując na końcu defaultproperties i zmianę zmiennych
(zmienne po defaultproperties zamykamy nawiasami klamrowymi).:
klamrowymi).

W ten sposób zwiększyliśmy życie (Health) naszego SuperSWAT’a


do 600HP (oprócz tego nasz gostek będzie taki sam jak zwykły SWAT).

Uwaga!
Napisany skrypt zapisujemy pod taką samą nazwą jak nasza klasa,
dopisując
c rozszerzenie .uc (np. SuperSWAT.uc). W przeciwnym razie
wyskoczy błąd i nasz kodzik się nie skompiluje.

Strona: 126
Uwaga!
Nigdy nie próbuj rekompilować, dodawać, zmieniać zawartość podstawowych
plików gry, które zostały dołączone do którejkolwiek
którejkolwiek gry na silniku
Unreal Engine. Nie możesz dodawać tekstur, dźwięków, mesh’y,
mesh klas NICZEGO!
Dlaczego? Otóż przy każdej kompilacji generowana jest suma kontrolna, która
to jest sprawdzana przez serwery i w razie jakichkolwiek różnic klient zostaje
odłączony. Jest to mechanizm, który gwarantuje, że wszyscy grają w tę samą
grę, bez żadnych modyfikacji. Możesz modyfikować rdzeń tylko w przypadku,
gdy tworzysz mody TYLKO do trybu singleplayer.

●Komentarze:
W Unreal Script są dwa typy komentarzy,
komentarzy jedno
no i wielo linjkowe:

Komentarze zwiększają czytelność kodu i pozwalają zachować porządek.

Pamiętaj też, żeby nigdy nie pisać komentarzy (i zmiennych) po Polsku.


Gdy kiedyś udostępnisz część skryptów, które napisałeś i gdy komentarze
i zmienne nie
ie będą po angielsku to większość mapperów z zagranicy
nie będzie mogła ich zrozumieć i nie będzie ich używać.

●Zmienne:
Jeśli nie wiesz co to są zmienne,, poczytaj kursy c++ lub javy.

Składnia zmiennych wygląda następująco:

Var – informacja dla gry,


gry że jest to zmienna;
[typ] – np. byte (liczba całkowita od 0 do 255), int (liczba 32-bitowa),
32
float (liczba zmiennoprzecinkowa), bool (zmienna logiczna
- wartość true lub false), string (ciąg znaków), itp.
NazwaZmiennej – np. MojaZmienna;

Strona: 127
●Stałe:
Najprzydatniejszą stałą jest ‘const’.

(polecam pisać stałe dużymi literami, nie pisać polskich liter (z ogonkami
np. ą, ć, ń itp.), oraz nie używać w łączeniu słów
spacji (tylko np. takie podkreślenia jak wyżej)).

var const - stała – po nadaniu jej wartości (domyślna wartość zmiennej


lub w UED) podczas działania skryptu nie możesz jej zmienić
(używane w starszych wersjach Unreal Engine 2).

editconst – stała-zmienna, której nie można zmienić z poziomu UnrealED.

●Specjalne klasy:
Klasy specjalne tworzymy, dodając na końcu zadeklarowanej klasy
wybrany przez nas dodatkowy parametr dla niej.
Robimy to w następujący sposób.:

Jeśli chcemy dodać 2 lub więcej tych parametrów określających klasę,


oddzielamy je po prostu spacją. Na końcu dajemy oczywiście średnik ‘’ ; ‘’.

-- Rodzaje parametrów:
native – skrypt korzysta z c++ i szuka plików dll o nazwie danego package.
abstract – klasy z końcówką abstract nie można umieścić na mapie.
Działa tylko na deklarowaną klasę, nie na pochodne.
config (NazwaPliku) - klasa używa pliku konfiguracyjnego.
Placeable – klasę można postawić na mapie
(używa się w klasie dziedziczącej, po abstract).

●Operatory:
*Operatory logiczne
Są używane w instrukcjach warunkowych (if) lub do zaprzeczeń.

Strona: 128
*Operatory porównawcze
Używane w instrukcjach warunkowych. Jedynie takie same typy
zmiennych mogą być porównywane (int z int, string ze string, itp.)

*Operatory liczbowe
Mogą być używane tylko w stosunku do typów int, float i byte.

*Operatory wektorów
Operatory używane do zmiennych typu vector.

*Operatory rotatorów
Operatory używane do zmiennych typu rotator.

*Operatory tekstowe
Operatory używane do zmiennych typu string.
Instrukcja warunkowa:
●Instrukcja warunkowa
Służy do wykonywania różnych bloków kodu w zależności od wartości
podanego parametru. Instrukcja warunkowa ma postać:

lub:

●Instrukcja
Instrukcja wyboru (switch):
(switch)
Instrukcja warunkowa jest przydatna, niestety nieużyteczna w pewnych
wypadkach.
kach. Właśnie dlatego powstała instrukcja wyboru switch
sw o postaci:

Instrukcje z bloku default zostaną wykonane w przypadku gdy wartość


wyrażenia będzie inna od tych podanych w case.

Strona: 130
●Pętle:
Pętle służą do wykonywania wielokrotnie danej części kodu. Podczas ich
stosowania należy pamiętać, że w UnrealED, maksymalna liczba
powtórzeń to 100 000. Większa ilość spowoduje errory.

*pętla for
Pętla for ma postać:

i służy do wykonania N razy danego bloku instrukcji.


Jest przydatna np. w momencie gdy chcemy odczytać wartości z tablicy:

*pętla while
Pętla while ma postać:

i w przeciwieństwie do pętli for można ją wykonywać bez określenia


liczby jej powtórzeń - tzn., że może być wykonywana dopóki
nie otrzymamy żądanego przez nas wyniku (np. odpowiedniego obiektu).

Strona: 131
16.Tworzenie własnej broni:
W tym rozdziale, pokażę Ci jak zrobić
własną klasę broni i jak ją zmodyfikować.

O co chodzi?

O to, że nie zrobisz całkowicie SWOJEJ broni.


Po prostu lekko przerobisz już istniejącą. :)

Bronią tą będzie pistolet do trybu singleplayer - Desert Eagle.

●Wypakowanie skryptów:
Wszystkie skrypty znajdują się w folderze System w folderze z grą,
spakowane w plikach ‘’.u”. Na początek musimy je wypakować.

Uruchom edytor i wejdź w Actor Classes.


Wybierz File ‘Export All Scripts’, potem potwierdź wybór.

Odczekaj kilka chwil. :)

Strona: 132
Następnie udaj się do głównego folderu z grą,
gdzie wypakowały się wszystkie skrypty.

Utwórz tam nowy folder dla swoich skryptów i nazwij go np. ‘’MyPistol”.

Teraz wejdź w niego i zrób w nim kolejny folder o nazwie ‘’ Classes”:

Kolejny krok to udanie się do folderu /Inventory/Classes/


w Postal 2: STP. Kopiujemy stąd 5 plików:

- PistolAmmoPickup.uc
- PistolAttachment.uc
- PistolBulletAmmoInv.uc
- PistolPickup.uc
- PistolWeapon.uc
Teraz wklejamy pliki do folderu /MyPistol/Classes/:

Pora zmienić nazwy plików, powiedzmy na:

- PGAmmoPickup.uc
AmmoPickup.uc
- PGAttachment.uc
Attachment.uc
- PGAmmoInv.uc
AmmoInv.uc
- PGPickup.uc
Pickup.uc
- PGWeapon.uc
Weapon.uc

(PG.. – Pistol Gold - to będzie nazwa ‘nowej’ broni ).

Po tym zabiegu mamy już wszystko przygotowane do


skryptowania (a raczej do niewinnych modyfikacji).

Strona: 134
Własne paczki do broni:
●Własne broni
Na początek tekstura. Aby móc ją przerobić,, musimy ją najpierw
wyeksportować.. W tym celu wracamy do
d PostED
i otwieramy Texture Browser. Wybieramy paczkę ‘’WeaponSkins
‘’WeaponSkins”
(lub jeśli nie ma – otwieramy/wczytujemy ręcznie),
I szukamy tekstury desert_eagle_timb:

Klikamy na nią PPM i wybieramy ‘’Export to File...”

Zapisz w wybranym miejscu.

Strona: 135
Nasz plik .dds otwieramy np. za pomocą programu GIMP.

I przerabiamy na złotą.:

Teraz wyexportuj przerobioną teksturę do tego samego formatu .dds,


ale nazwij ją np. ‘’PistolGold_DE.dds”.

Strona: 136
●HUD:
Jest to kolejna rzecz,
rzecz które przerobimy. :)

Wróć do edytora, i do Texture Browser’a.


Stamtąd wyexportuj jeszcze jedną teksturę:

Paczka: HUDPack ;; Nazwa: Icon_Weapon_Pistol

Ponownie w GIMPie przerób ją na złotą.:

Wyexportuj przerobioną teksturę do tego samego formatu


formatu .dds,
ale nazwij ją np. ‘’PistolGoldHUD.dds”.

Strona: 137
Wróć ponownie do Texture Browser’a.
Wybierz File Import .

W okienku oczywiście wybieramy nasze 2 nowe tekstury,


i klikamy Open/Import/Otwórz.

PostED zaatakuje nas okienkiem Import Texture.


Możemy je wypełnić na przykład tak:

Głowy nie daję, ale ponoć ustawienie kompresji na DXT3 jest ważne.
U mnie nie sprawia to jednak różnicy (chyba, że tekstura zjada
więcej/mniej zasobów). Klikamy OK i czekamy aż tekstura się zimportuje.
W teorii w Texture Browser powinna pojawić się nasza nowa paczka z
teksturami. W praktyce jednak czasami tak się nie dzieje. Musimy zatem
zamknąć edytor, a ten zapyta się nas, czy ma zapisać naszą paczkę.
Klikamy Yes, po czym zapisujemy paczuszkę
w /Textures/ pod nazwą PistolGoldTex.utx

Strona: 138
Załóżmy jednak, że wszystko idzie bez problemów.
Mamy zatem przed oczami nasze tekstury:

Kolejnym krokiem jest kliknięcie ikony dyskietki i


zapisanie naszego pliku PistolGoldTex.utx .

Strona: 139
●Przerabiamy
Przerabiamy skrypty:
skrypty
Nadszedł czas na (dla niektórych) czarną magię,
która nie taka straszna jak mogłoby się zdawać.
zdawa
Biegniemy do naszego folderu z kopiami skryptów /MyPistol/Classes/
i otwieramy plik ‘’ PGAmmoInv.uc” dowolnym edytorem tekstowym.

PGAmmoInv.uc
Inv.uc
Zmiany, jakie tu poczynimy to zmiana klasy (class) na ‘PGAmmoInv’,
w linijce 13, zmiana PickupClass na 'MyPistol.PGAmmoPickup' w linijce 75,
oraz tekstury HUD w linii 76 na 'PistolGoldTex.PistolGoldHUD'.
'PistolGoldTex.PistolGoldHUD'

Dodatkowo możesz tutaj zmienić obrażenia zadawane


zadawane przez broń,
oraz maksymalną ilość amunicji w linijkach 67 i 70.

PGAmmoPickup.uc
Kolejne zmiany przeprowadzimy w pliku ‘’PGAmmoPickup.uc”.
Zmieniamy tam klasę na ‘PGAmmoPickup’
‘PGAmmoPickup w linii 5,
oraz InventoryType na 'MyPistol.PGAmmoInv' w linii 11.
Następnie usuń 9 linijkę.
Możesz zmienić ilość amunicji, którą dają magazynki do pistoletu
w linijce 10, zmieniając liczbę w AmmoAmount.
PGAttachment.uc
W tym pliku zmieniamy klasę na ‘PGAttachment’ w linii 10,
oraz WeapClass na ‘MyPistol.PGWeapon’ w linijce 16.
Linijka 17 to dźwięk wystrzału. Możesz samemu go zmienić.
Wystarczy, że zrobisz swoją paczkę z nowymi dźwiękami
i podstawisz ścieżkę w FireSound według wzoru. :)

PGPickup.uc
Kolejny plik do zmodyfikowania – ‘’PGPickup.uc”.
W nim klasę zmienimy na ‘PGPickup’ w linijce 13, następnie w linii 26
zmienimy InventoryType na 'MyPistol.PGWeapon'.
Ostatnią rzeczą, którą zrobimy w tym pliku to
usunięcie linijki 24 i 25.
PGWeapon.uc
Ostatni plik do edycji to ‘’ PGWeapon.uc”.
Modyfikujemy tam następujące rzeczy.:
Klasę zmieniamy na ‘PGWeapon’ w linii 23,
zmieniamy AmmoName na 'MyPistol.PGAmmoInv' w linijce 231,
PickupClass na 'MyPistol.PGPickup' – linijka 251,
potem AttachmentClass na 'MyPistol.PGAttachment' – linijka 254.
Linię 250 zmieniamy na: GroupOffset=5 (może być więcej, ważne
żeby nie nachodziło na zwykły DE).
DE)
Linię 255
55 zmieniamy na ItemName="Gold Pistol”.
Po linii 257 dodajemy:

Skins(1)=Texture'PistolGoldTex.PistolGold_DE'
Skins(2)=Texture'PistolGol
Skins(2)=Texture'PistolGoldTex.PistolGold_DE'

W skrócie – zmuszamy za pomocą skryptu grę,


by na model Desert Eagle nałożyła naszą teksturę.

Jeśli wcześniej zmieniłeś dźwięk strzału,


to teraz także musisz podać nową ścieżkę w linijce 240.

Zapisujemy plik.
Strona: 143
Rekompilacja skryptów:
●Rekompilacja skryptów
Pokażę 2 sposoby na rekompilowanie skryptów.
Pierwszy za pomocą programu UMake, a drugi za pomocą
Postalowego kompilatora UCC.exe.

#1
Zakładam, że masz już ściągnięty program UMake. :)
Na początek go uruchom.

Wejdź w opcje
pcje klikając przycisk ‘’Options...”

Konfiguracja programu sprowadza się tylko do podania ścieżki


do UCC.exe w folderze System w głównym folderze z grą.

UMake to tak dokładnie tylko nakładka graficzna na program UCC.exe. ;)

Strona: 144
By uruchomić kompilację, podaj ścieżkę do folderu ze skryptami.

Nie musisz podawać adresu bezpośrednio do folderu Classes,


ale jeśli tak zrobisz to UMake automatycznie powinien ‘’cofnąc”
lokalizację i wziąć pod uwagę cały folder MyPistol. ;)

Jeszcze tylko kliknięcie przycisku ‘’Compile”,


potwierdzenie dalszych okienek przyciskiem OK i gotowe! :)

Strona: 145
#2
Teraz drugi sposób. :p

Aby móc skompilować naszą paczuszkę za pomocą UCC.exe,


musimy nieco zmodyfikować plik Postal2.ini. Otwieramy go zatem
i jako ostatni EditPackages (okolice linii 279) dodajemy naszą paczkę
MyPistol. Ma to wyglądać mniej-więcej tak:

Następnie (również w folderze System) tworzymy plik tekstowy.


piszemy w nim:

‘’cmd”

..po czym zapisujemy jako plik z końcówką ‘’.bat”, np.: ‘’CompilerUCC.bat”.


Uruchamiamy go i w konsolkę wpisujemy: ‘’ucc make” i klikamy enter.

Strona: 146
Jeśli wszystko poszło dobrze, w folderze System powinien
pojawić się plik MyPistol.u. Wracamy zatem do edytora, otwieramy
ponownie zakładkę Actor Classes, po czym klikamy File Open Package.
Jako paczkę wskazujemy nasz plik MyPistol.u. Naszą broń znajdziemy w:

Actor Pickup WeaponPickup P2WeaponPickup *PGPickup

Teraz wystarczy postawić broń na mapkę i wypróbować. :P

Co dociekliwszym polecam zabawę z różnymi zmiennymi w defaultproperties. ;-)

Strona: 147
17.Tworzenie własnego PowerUp’a:
W poprzednim rozdziale tworzyliśmy własną wersję pistoletu Desert Eagle.
Teraz zrobimy całkowicie własnego PowerUp’a, jakim jest jabłko! :)

Uprzedzam jednak, że w dalszej części rozdziału, potrzebna jest


znajomość programu do grafiki 3D - ja wykorzystam 3DS Max’a. ;)

●Skryptowe przedpole:
Podobnie jak wcześniej, musimy utworzyć folder na skrypty.
Tak więc uczyńmy i nazwijmy go ‘’apple”.
W nim zróbmy kolejny folder – ‘’Classes”.

Podobnie jak poprzednio, wejdź do folderu Inventory,


i skopiuj stamtąd 2 pliki.:

- FastFoodInv.uc
- FastFoodPickup.uc

Następnie wklej do swojego folderu i zmień nazwy tych plików na.:

- appleInv.uc
- applePickup.uc

Strona: 148
●Modelowanie jabłka:
Jak już wspominałem, potrzebny Ci jest jakiś program do modelowania.
Oprócz tego, jeszcze umiejętności w modelowaniu obiektów. :P

Nie pokażę Ci tutaj jak krok po kroku wymodelować jabłko,


to by zajęło za dużo miejsca oraz czasu. Jeśli nie umiesz, jak najszybciej
to zmień i poszukaj w internecie poradników i się doucz. ;)

Tak więc...do dzieła! :D

Wymodeluj jakieś jabłko.

Ja mam taki oto model.: :)

Następnie zmappuj go, i oteksturuj.

Strona: 149
Teraz wyexportuj swój model do formatu ‘.ase’, i nazwij go np.’’apple.ase”.

Kolejna rzecz do zrobienia, to ‘’wsadzenie” tego do PostED’a.

Nie zwlekając, otwórz edytor, wejdź do Texture Browser’a,


i zaimportuj tam potrzebne tekstury jabłka i HUD’a (lub teksturę,
jeśli jest tylko jedna), tworząc swoją paczkę.
Ja mam 3 tekstury – appleStem, appleTex i appleHUD. :)
Nazwij ją ‘’AppleTex.utx” i zapisz.

Potem przejdź do Static Mesh Browser’a i zaimportuj tam model jabłka.


Dodaj swoją teksturę w polu Materials.
Paczkę zapisz pod nazwą ‘’AppleMesh.usx”.

Strona: 150
●Skryptowanie
Skryptowanie PowerUp’a:
PowerUp’a
Mamy już obie paczki – czas na skrypty. :)

Wróćmy do naszego folderu ze skryptami.


skrypt
Otwórz tam ‘’appleInv.uc
appleInv.uc”,, dowolnym edytorem tekstowym.

W linijce 11, zmień klasę na ‘’appleInv”


‘’apple .:

Zjedź niżej do DefaultProperties.


DefaultProperties
W linijce 86 zmień wartość na wyższą niż jest, np. na 345.
W linii 87 zmień PickupClass na 'apple.applePickup'.
W linii 88 zmień ścieżkę do tekstury HUD np. na 'appleTex.appleHUD'.
'appleTex.appleHUD'

Dodatkowo w linijce 79, możesz zmienić ilość HP (życia) jaką daje jabłko,
a w 85, napis który pojawi się po zjedzeniu owocu. :)

Strona: 151
Otwórz następnie plik
pli ‘’ applePickup.uc”.

Zmień klasę FastFoodPickup na applePickup,, w linijce 9.

Potem w linii 23 zmień InventoryType na ‘apple.appleInv’,


‘apple.appleInv’
w linii 24 zmień PickupMessage na tekst pojawiający się po zebraniu jabłka.
Jeszcze tylko zmiana StaticMesh na ‘AppleMesh.apple’ w linijce 26
(AppleMesh to nazwa paczki ze StaticMeshem, a apple to nazwa modelu).

Skrypty załatwione! :)

Strona: 152
●Kompilacja:
Na koniec musisz jeszcze tylko skompilować swoje
swoje skrypty.

Zrób to za pomocą UCC.exe, lub wygodniejszym UMake. :)

Nasze jabłko znajdziemy w Actor Classes, po wcześniejszym wczytaniu paczki:

Actor Pickup P2PowerupPickup OwnedPickup *applePickup


Dodatki:
Witaj w ostatnim dziale w tym poradniku. :)
Ten dział zawiera dodatkowe informacje, głównie dopełniające
wcześniejsze lekcje, m.in.: Mover’y, Emittery,
oraz kilka przydatnych rad, które umilą i ułatwią Ci pracę
z edytorem PostED (lub innym podobnym do niego na przykład
ten z Unreal Tournament 2004 ;) ).

Strona: 155
18.Mover’y:
Mover’y – są to specjalne StaticMesh’e.
Spotkałeś się już z nimi przy tworzeniu drzwi. :)
Oprócz nich możesz zrobić jeszcze obracane drzwi
(takie jak w hotelach ;) ), elevatory, ruchome platformy itd.
Niemal wszystkie rodzaje Mover’ów ustawia się za pomocą Key’ów
(czyli podobnie jak to było z drzwiami :p ).

Mover’y można stworzyć tylko ze StaticMesh’ów,


tak więc otwórz StaticMesh Browser i wybierz jakiś obiekt.:

Teraz w lewym pasku narzędziowym, poszukaj przycisku

‘’Add Mover Brush” i kliknij go PPM i wybierz ‘’Mover”.

Strona: 156
Siatka Mover’ów ma fioletowy kolor, po zaznaczeniu jest jaśniejszy.

Gdy już znajdziesz swojego Mover’a i postawisz go w wybranym miejscu,


możesz przejść do ustawiania Key’ów.

Key’e można ustawiać na 2 sposoby.

*Pierwszy to poprzez kliknięcie PPM na Mover’ze, i wybranie


Key’a z rozkładki ‘’Mover”(‘’zakładka” będę używał do opisów w opcjach,
a ‘’rozkładka” do rozwijanych opcji po kliknięciu PPM’a tak jak teraz ;D ).

*Drugi to ustawienie Key’ów w opcjach Mover’a, w zakładce ‘’Mover”,


w polu ‘’KeyNum”.

Strona: 157
Key 0(Base) – oznacza pozycję, do której Mover ma zawsze wracać
(tak jak to było z drzwiami). Tego Key’a używa się tylko wtedy,
gdy chcemy zrobić np. drzwi, ruchomą platformę itp.,
ale jak chcemy zrobić, by Mover tylko przemieścił się na stałe
do jakiegoś miejsca, to tego zazwyczaj się nie używa.;
Key 1 – pozycja początkowa Mover’a.
Od niej zaczyna się ustawianie Mover’a.

Strona: 158
●Asystujące aktywatory:
Masz poustawiane Key’e Mover’a, wie on gdzie ma się przemieszać,
ale....nie wie kiedy....

Gdy chcemy zrobić ruchomą platformę, ustawienie czasu,


po jakim Mover ma się przemieszczać do miejsca wyznaczonego
w następnym Key’u, jest niezbędne.

Bo przecież musimy mieć chwilkę, by na tą platformę wskoczyć, nie? :p

Do tego celu musimy użyć tzw. ‘’dodatkowych aktywatorów”.

Znajdziemy je w opcjach Mover’a (PPM Mover Properties),


w zakładce ‘’Object”, w ‘’InitialState”.:

Niżej przedstawiam opis wszystkim funkcji,


na rozwijanej liście w ‘’InitialState”.

Strona: 159
None – Mover nie może być aktywowany
(będzie po prostu zwykłym StaticMesh’em);

BumpButton – Gdy taki Mover zostanie dotknięty, przechodzi przez


kolejne Key’e, a gdy dotrze do ostatniego ustalonego Key’a,
to od razu wraca na pozycję początkową;

TriggerPound – Mover przemieszcza się do ostatniego Key’a, tak długo,


jak jest aktywowany Trigger, po czym od razu wraca;

TriggerControl - Mover przemieszcza się do ostatniego Key’a, tak długo,


jak jest aktywowany Trigger. Gdy Trigger zostanie zwolniony,
Mover wraca z ostatniego Key’a (lub wraca od miejsca, do którego
zdążył dojść) do miejsca początkowego. Mover pozostanie
na ostatnim Key’u, dopóki Trigger jest aktywny;

TriggerToggle – Przy tej opcji, potrzebne są tylko 2 Key’e.


Po naciśnięciu Trigger’a, Mover przemieszcza się do ostatniego Key’a.
Gdy Trigger zostanie włączony ponownie, Mover przechodzi
do pierwszego Key’a. To taki rodzaj ‘’przełącznika”;

TriggerOpenTimed – Po aktywacji Trigger’a, Mover przemieszcza się


po Key’ach, następnie chwilę czeka i wraca z powrotem;

BumpOpenTimed – Taki Mover, po dotknięciu go, przechodzi przez kolejne


ustalone Key’e, następnie czeka chwilę, i wraca do pierwszego Key’a;

StandOpenTimed – Po dotknięciu, Mover przemieszcza się przez kolejne


ustalone Key’e, ale nie wraca, dopóki gracz będzie stał na jego
początkowej pozycji.

Wyszło z tego duże masło maślane, ale jak zaczniesz stosować te dodatki
w praktyce to docenisz ich cechy. ;)

Strona: 160
●Dźwięk Mover’a:

Możliwe jest nadać Mover’om dźwięk. I to nawet kilka :)


(Choć to pewnie wiesz, z przykładem drzwi, to napiszę jak je zmienić :p).
Wszystko zrobisz w opcjach Mover’a, w zakładce ‘’MoverSounds”.
Wystarczy wybrać dźwięk w Sound Browser, i kliknąć ‘’Use”. :)

ClosedSound – Ten dźwięk usłyszysz, gdy Mover dotrze do ostatniego Key’a;

ClosingSound – Ten dźwięk usłyszysz, gdy Mover będzie wracał,


z ostatniego Key’a do pierwszego;

MoveAmbientSound – Dźwięk, odtwarzany przez cały czas,


kiedy mover jest w ruchu.

OpenedSound – Ten dźwięk będzie odtworzony, gdy Mover opuści


pierwszego Key’a, a skończy się gdy dotrze do drugiego Key’a;

OpeningSound – Ten dźwięk będzie odtworzony, podczas ‘’podróży” Mover’a,


od pierwszego Key’a do ostatniego ustalonego Key’a.

Strona: 161
●AI Mover’a:

Oczywiście muszę wspomnieć o jeszcze jednej sprawie. ;)


Chodzi o zakładkę ‘’AI” w opcjach Mover’a. :)

bAutoDoor – Jeśli jest na True, i jeśli to są drzwi, to ludzie będą


‘’inteligentniej” przechodzić przez nie.
Czyt. nie będą wykonywać animacji chodzenia,
podczas otwierania drzwi, tylko się przed nimi
zatrzymają i poczekają aż się te drzwi otworzą; :p

bNoAIRelevance – tego do końca to nie wiem (soryy :p), ale chyba


jak to jest na True, i chcesz postawić, przed, i za Mover’em jakiegoś
NavigationPoint’a (PathNode itp.) to przechodnie nie będą wiedzieli
gdzie iść, bo właśnie ta opcja zdezaktywuje te NavigationPoint’y.

Strona: 162
19.Volume:
Volume’y – to żeby nie wymyślać jakiejś skomplikowanej definicji,
powiem, że są to wyznaczone obszary, które podlegają
podle pewnym
ustalonym zasadom. ;)

Znasz już je w miarę dobrze z poprzednich rozdziałów,


ale nic nie stoi na przeszkodzie, by bardziej się
w ten temat zagłębić. ;)

Z tymi zasadami, to dokładnie chodzi o to, że jeden obszar


ma DamageType i zadaje
zadaje nam obrażenia, w drugim jest mniejsza
grawitacja dzięki czemu możemy ‘’popływać”,, a w jakimś trzecim
grawitacja,
jest ustawiona kolizja, co powoduje, że nie możemy przez ten
obszar przejść (wszystko było w większej części omawiane
wcześniej ;) ).

Jeden z ciekawszych obszarów to ‘’InterestVolume”.


‘’
Powoduje on, że gdy wejdziemy w niego, to okoliczni ludzie będą
wykonywać jakąś czynność, zależnie jak ten obszar jest skonfigurowany.
Ludzie mogą wtedy np. gapić się na gracza (jak to jest w normalnej
norm grze),
mogą także nas wtedy zaatakować. :)
Po wybudowaniu obszaru ‘’InterestVolume”, wejdź w jego opcje.
W zakładce ‘’InterestVolume”, w ‘’SightReaction”, ustaw co mają robić
przechodnie, gdy dostrzegą gracza.

Możesz jeszcze ustawić mgłę i jej kolor, po wejściu w ten Volume.


Zrobisz to w zakładce ‘’VolumeFog”.

Strona: 164
Pierw zmień ‘’bDistanceFog” na True, a potem ustaw kolor mgły.
Jeszcze koniec mgły ustaw na 9999, a początek mgły zostaw na 0.

Na screenie wyżej ustawiłem zieloną mgłę, i taniec ludzi, gdy na mnie spojrzą. ;p
20.Optymalizacja poziomów:
Gdy tworzysz dużej wielkości mapy, i nie masz w miarę dobrego sprzętu
(o kompa chodzi – dla ścisłości ;p), lub jeśli nie mają go inni, to można odczuć
spadki FPS’ów (klatek na sekundę) – zamiast gry będzie widać pokaz slajdów. ;)

By tego uniknąć trzeba dbać o dobrą optymalizację poziomów.


Jest dużo sposobów na to, ale ja pokażę tylko te, które są najwydajniejsze
(np. szybsze budowanie mapy, brak ‘’przycinek”, ...) i nie potrzeba
dużo czasu na ich zrobienie.

●Mgła:
Distance fog (mgła) służy do ‘’zakrywania” części mapy,
czyli zmniejsza trochę widoczność. Co to nam da?
Oczywiście więcej FPS’ów (gra będzie płynnie chodzić),
bo łatwiej jest grze wyrenderować mgłę niż kilkadziesiąt obiektów. :)

Świat gry bez włączonej mgły...:

...oraz z włączonym Distance fog’iem (mgłą).:


By włączyć taką mgłę musisz postawić na swojej mapie ZoneInfo.
Następnie wejść w jego opcje i ustawić 4 rzeczy.

W zakładce ‘’ZoneInfo” ustaw ‘’bDistanceFog” na True.


Teraz w zakładce ‘’ZoneLight” ustaw pozostałe trzy rzeczy.:

DistanceFogColor –- Kolor mgły

DistanceFogEnd -– Odległość, w której mgła się zaczyna

DistanceFogStart -- Odległość, w której mgła się kończy

Polecam aktywować DistanceFog’a, szczególnie w etapach otwartych (las, itp.).

Strona: 167
●Antiportals:
Antiportals są to niewidzialne bariery, używane do blokowania
renderowanego przez grę widoku. Antiportals
Antiportals są bardzo
wszechstronnym narzędziem do zakrywania geometrii,
nie tylko w szeroko otwartych środowiskach, ale także
mogą być wykorzystywane do maskowania mniejszych obszarów.
Mogą być one stosowane w połączeniu z dowolną wizualną barierą
dla gracza, czy to geometria BSP (np. ściany), czy też
te siatka terenu.

Antiportals przede wszystkim muszą być wypukłe.


Nie mogą być wklęsłe ani mieć żadnych otworów.
Poniższy schemat przedstawia poprawne i błędne ich użycie.:

Kolejna sprawa,
sprawa to, że Antiportale muszą
dotykać zakrywanej powierzchni.
powierzch

Po postawieniu Antiportalu nie możemy zmienić jego rozmiarów.


Możemy go jedynie obracać i przemieszczać.

Na temat wprowadzenia do Antiportal’ów to tyle. :)

Dalej przedstawię sposób ich działania,


oraz pokażę jak je dodać na naszą mapkę.

Strona: 168
Sposób działania Antiportal’ów jest prosty.
‘’Zakrywają” one renderowany obszar mapy, który jest w danej chwili
niedostrzegalny przez gracza. Na przykład jeśli jest jakaś góra,
i postawimy przed nią Antiportal, to obszar za tą górą nie będzie
renderowany, a gra zaoszczędzi w ten sposób zasoby.

Bez AntiPortal’ów:

Z AntiPortal’ami:

Jak widać renderowany jest tylko obszar


aktualnie widziany przez gracza. :)

Strona: 169
Stworzyć taki AntiPortal możesz na 2 sposoby.

Pierwszy. Tworzysz Cube, ustawiasz go w wybranym miejscu,

następnie w lewym pasku narzędziowym klikasz Add Antiportal .

Drugi. Również tworzysz Cube, ale tym razem, by go postawić,

klikasz w Add Special Brush , i wybierasz Anti-Portal,


potem zatwierdzasz przyciskiem OK.

Strona: 170
●Kolizje:
W przypadku, gdy zaimportujesz jakiś model 3D do edytora i będzie miał
bardzo złożoną siatkę (będzie bardzo szczegółowy), może on mocno
obciążać komputer. Jest na to prosty sposób, by poprawić wydajność,
nie zmniejszając jakości modelu. :)

Na początek postaw zaimportowany model na mapę.


Wejdź w jego opcje i w zakładkę ‘’Collision”.

Ustaw te opcje zaznaczone na obrazku na False.

Następnie utwórz Blocking Volume, o rozmiarach tamtego modelu 3D.


Ustaw mu kolizje na True.

Teraz ustaw Blocking Volume w miejscu modelu i gotowe! :)

Strona: 171
Sprawa wygląda trochę inaczej, gdy chcemy zaimportować jakiś model,
który będzie np. pickup’em, lub ma to być ruchomy obiekt typu KActor.

Wtedy po prostu, po zaimportowaniu modelu, wchodzimy w


Static Mesh Browser i w jego skromnych opcjach,
ustawiamy UseSimpleBoxCollision na True.

Ta opcja zazwyczaj ustawia się automatycznie na True,


więc nie musisz się przyjmować tym podczas importowania obiektów. :)

Strona: 172
●ZonePortals:
Podział na strefy (ZonePortals) to główny sposób optymalizacji poziomów.
Polega to na oddzieleniu 2 stref, np. dwóch pokoi rozdzielenia drzwiami.

Podczas gdy poruszamy się w pierwszym pokoju, tego drugiego


nie widzimy, przez co nie jest on renderowany przez grę.

By utworzyć ZonePortal, przejdź do edytora, stwórz Cube


o wybranych rozmiarach, ustaw w odpowiednim miejscu np. w drzwiach,
potem w pasku narzędziowym, po lewej stronie,

wybierz Add Special Brush .

Z listy wybierz ‘’Zone Portal”, i kliknij OK.

Gotowe! Właśnie zoptymalizowałeś trochę grę. :D

Strona: 173
21.StaticMesh’e:
Ustawienia Static Mesh’y:
Na początku przypomnę o tym, jak postawić StaticMesh’a.

Pierw wybierz go ze StaticMesh Browser’a...

...następnie kliknij na mapie PPM’em, i wybierz ‘’Add Static Mesh”.

Strona: 174
W zakładce ‘’Collision
Collision”” możesz ustawić kolizje Static Mesh’a
(zostało to opisane wcześniej).

Teraz o zakładce
z ‘’Display”.:

* bShadowCast –- Jeśli jest na True to daje cień;

Strona: 175
* bUnlit -– Jeśli jest na True to odbija światło;

* DrawScale -– Powiększa SM’a określoną ilość razy. 1 to rozmiar pierwotny;

* DrawScale3D -– Pozwala ‘’rozciągnąć” SM w wybraną stronę;

* DrawType –- Określa czym dany obiekt jest w grze:


static mesh’em,
em, mesh’em,
mesh sprite’m, itp.

Strona: 176
Do swojego Static Mesh’a możesz również dodać światło.
Zrobisz to w zakładce ‘’Lighting”, oraz ustawisz kolor w ‘’LightColor”.

Dużo można zrobić bawiąc się poniższymi opcjami: ;)

- bCorona (więcej o tej opcji, w rozdziale o dodawaniu światła)


- LightEffect
- LightRadius
- LightType

Efekt :)

Strona: 177
22.Tekstury:
Ten rozdział jest dopełnieniem kilku rzeczy,
również odkrywając różne przydatne zagadnienia.

●Import tekstur:
Gdy już wiesz jak tworzyć paczki, to bliżej przyjrzyjmy się
tej ‘’tajemniczej” kompresji ‘’DXT” podczas importu. :p

DXT1 – Jest to najstarszy sposób kompresji tekstur.


Nie obsługuje kanału alpha (przezroczystości).
Na starszych kartach graficznych mogły wystąpić problemy
z ‘’artefaktami”. Tekstury po skompresowaniu są brzydkie,
lecz przez to nie wpływają tak bardzo na wydajność.
Można stosować tę kompresję np. do robienia tła, czy do
robienia ‘’prototypów tekstur”, które potem planujemy
wymienić na lepsze.

DXT3 – Lepszy sposób kompresji, który wspiera już kanał alpha.


Tekstury po skompresowaniu są lepszej jakości niż w przypadku
DXT1. Jest to podobno najlepszy sposób kompresji.

DXT5 – Jeszcze lepszy sposób kompresowania tekstur.


Nie używam go za często, więc bardziej polecam DXT3. ;)

Strona: 178
*Inne opcje importu:

Masked – Ta opcja jest najprawdopodobniej uszkodzona.


Jeśli chcesz zmienić właściwości alpha, musisz zrobić
to w opcjach tekstury.

Generate MipMaps – To ustawienie powinno być domyślnie zaznaczone.


Niweluje występowanie ‘’artefaktów”, rozmywa teksturę znajdującą
się w większej odległości. Sprawia to, że tekstura ładniej wygląda.

Jeśli przy exportowaniu tekstury z programu graficznego,


zaznaczyłeś opcję generowania MipMap, to nie zaznaczaj tej opcji.

Detail Hack – Ta opcja sprawia, że tekstura jest bardziej szczegółowa,


lecz także chyba nie działa.

Strona: 179
●Jak zrobić bardziej szczegółową teksturę?:
Po zaimportowaniu nowej tekstury do paczki, kliknij na nią PPM,
i wybierz ‘’Properties”...

...potem wejdź w zakładkę ‘’Quality” i zmień opcję ‘’LODSet”


z domyślnego ‘’LODSET_World” na ‘’LODSET_None”.

EFEKT:

Strona: 180
●Dopasowanie tekstury:
Postawiłeś ścianę i gdy nałożyłeś na nią teksturę, nieładnie ona wyglądała?
Nie przejmuj się! Dopasujesz ją w kilka sekund.

Masz do tego 2 narzędzia – Skalowanie, przesuwanie i obracanie.

Gdy nałożona tekstura jest zbyt mała, zbyt duża, lub zwyczajnie
nie pasuje, możesz ją przeskalować, obrócić lub przesunąć.

Służą do tego narzędzia Texture Pan i Texture Rotate.


Znajdziesz je pasku narzędziowym po lewej stronie edytora.

Texture Pan służy do skalowania i przesuwania tekstury.


Przytrzymując Ctrl i LPM/PPM/LPM+PPM, przesuwasz teksturę w bok,
do góry lub do dołu, albo skalujesz ją.

Texture Rotate służy do obracania tekstury.


Przytrzymując Ctrl i LPM/PPM, obracasz teksturę w prawo lub w lewo.

Możesz jeszcze dopasować teksturę w osi pionowej lub poziomej,


w zależności czy chcesz ją dać na podłogę czy na ścianę.

Zrobisz to naciskając PPM na ścianie, następnie rozwiń ‘’Alignment”,


i wybierz któryś z pasujących Ci ustawień tekstury (polecam ‘’Face” :) ).
23.Import i Export static mesh’ów:
W tym rozdziale dowiesz się, jak importować i eksportować mesh’e
(Static Mesh’e – modele, Mesh’e - szkielety i animacje).

Ja posłużę się programem UModel.


Możesz go pobrać stąd:
http://www.gildor.org/en/projects/umodel

●Exportowanie mesh’ów/static mesh’ów:


Ściągnij i wypakuj program UModel.

Ja dla przykładu wyeksportuję model Machine Gun’a.

Skopiuj wybraną paczkę (ja wezmę TP_Weapons.usx


z moim MachineGun’em), np. do folderu z Umodel’em.

Teraz przeciągnij paczkę na program UModel i używając klawiszy


Page Up i Page Down wyszukaj obiekt, który chcesz wyexportować.

Aby wyeksportować wybrany model wciśnij Ctrl+x.


Gotowy obiekt pojawi się w tym samym folderze co paczka.

Już masz ‘’czysty” model i możesz robić z nim co chcesz,


np. wrzucić do 3DS Max’a i przerobić. ;)

Strona: 182
●Importowanie static mesh’ów:
Gdy zrobisz swój model (lub przerobisz stary),
możesz zaimportować go do edytora.

By to zrobić, obiekt musi być w formacie ‘’.ase”,


gdyż tylko taki format ‘’weźmie” edytor.

Lecz załóżmy, że masz model w formacie ‘’.ase”...

Przejdź do Static Mesh Browser i wybierz File Import.

Pojawi Ci się takie okienko.:

W polu Package wpisz nazwę swojej paczki z modelami,


a w Name wpisz nazwę obiektu, lub pozostaw domyślną.
Następnie zatwierdź przyciskiem OK
(albo OK All jeśli importujesz kilka modelów).

Strona: 183
●Teksturowanie modelu:
Po zaimportowaniu tekstury, model będzie miał domyślną teksturę.

By go oteksturować, spójrz na małe okienko, obok okna 3D z modelem.


Masz tam rozwijaną opcję Materials. Wybierz jakąś teksturę
z Texture Browser’a i kliknij ‘’Use” w polu Material.

Obiekt został już oteksturowany. :)

Uwaga!
Pamiętaj, żeby przed importem modelu, najpierw zmappować
teksturę w programie do modelowania! Jeśli tego nie zrobisz,
tekstura sama ustawi się na modelu jak będzie chciała,
przez co może wyglądać tak, jak byś tego nie chciał. ;)

Strona: 184
Jeśli Twój model jest bardzo szczegółowy, może to negatywnie
wpływać na wydajność w grze. Najlepiej jeśli opcja
UseSimpleBoxCollision jest ustawiona na True
(nie musisz się tym przejmować,
przejmować, gdyż ustawia się to automatycznie :) ).

●Importowanie mesh’ów
mesh i animacji:

Importowanie animacji jest podobne do importowania tekstur czy modeli.


Pamiętaj jednak, by pierw importować Skieletal Mesh (Mesh import),
a potem dopiero same animacje (Animation
(Animation import). Nie da odwrót.

Strona: 185
Info:
24.Info:
MegaTutorial for PostED by seebeek17-MiRRoRRek, został stworzony
dla największego forum o grach z serii Postal.

MegaTutorial jest to zbiór różnych poradników o edytowaniu


gry Postal 2(STP) (jak i innych gier opartych na tym silniku),
starannie zebranych i uporządkowanych,
oraz wzbogacony osobiście zebraną przez autora wiedzą.

* Nazwa: MegaTutorial for PostED


*Autor: seebeek17 / MiRRoRRek

*Data rozpoczęcia: 30.06.2013r.


*Data ukończenia: 25.07.2014r.
(z przerwami)

*Strony: 190
*Ilość liter: 79 620
*Ilość wyrazów: 13 700

*Obrazki: 360+

Kontakt:
e-mail: seebeeklegal@o2.pl (rzadko wchodzę)
lub: pisać na PW na forum PSI (forum.postalsite.info)
forum.postalsite.info/profiles/2532.htm

Strona: 187
25.Źródła:
Daję tu spis wszystkich wykorzystanych poradników/innych treści,
oraz podaję autora, do którego wykorzystana treść należy
(jeśli o kimś zapomniałem, to przepraszam, i proszę o powiadomienie
mnie o tym, to na pewno uzupełnię spis).

Z góry dziękuję wszystkim, którzy przyczynili się do powstania


poradnika (także użytkownikom PostalSite.info w tym podziękowania
dla Rycho3D oraz Tiquill’a i innych niewymienionych tutaj),
gdyż bez nich MegaTutorial by nie powstał,
lub nie był by w takiej formie jakiej jest obecnie. :)

Dziękuję również Tiquill’owi, który pomógł w opracowaniu poradnika.

[Tutorial] Skybox (autorstwa ZigHor'a)

[TUTORIAL] Budowanie podstawowej mapy w POSTed (by Reality Master)

[TUTORIAL] Zaawansowany PostEd by MaKiPL

PostED - Retex Tutorial

Poradnik kieszonkowy - sztuczna inteligencja (by Pablo Abruzzi)

Teren - tutorial (by prawdziwy 666)

http://udn.epicgames.com/Two/

http://www.angelmapper.com/

http://wiki.beyondunreal.com/

(w tym treść i/lub obrazki)

Strona: 188
26.Użytkowanie & Licencja:
● MegaTutorial for PostED jest darmowym źródłem wiedzy;

● Nie zezwalam na zarabianie (w jakiejkolwiek formie)


na tym MegaTutorialu;

● Może być rozpowszechniany jedynie (wyjątki*) przez samego autora;

● Nie zezwalam na rozpowszechnianie MegaTutoriala


(jak i wszystkich plików wchodzących w jego skład) na żadnych
serwerach/hostingach itp. bez wiedzy i zgody autora; *

● Nie zezwalam na umieszczanie tego poradnika na


stronach pozwalających osiągać jakiekolwiek korzyści,
jak np. chomikuj, bez wiedzy i zgody autora; *

● Zabrania się przerabiania, modyfikowania, kopiowania itp.


tego poradnika, jak i podszywania się pod jego autora;

● Nie zezwala się również na dzielenie poradnika na części


(bez wiedzy i zgody autora), kopiowania, modyfikowania itp.
treści w nim zawartych (obrazków, tekstu itp.),
bez wiedzy i zgody autora/autorów, do których należy dany podmiot;

● W razie zauważenia łamania jakiejkolwiek wyżej wymienionej


zasady/zasad (jak i innych nie opisanych tu zasad lub
wykroczeń moralnych), proszę o skontaktowanie się z autorem
MegaTutoriala i powiadomienie go o tym:

Kontakt:
e-mail: seebeeklegal@o2.pl
lub: pisać na PW na forum PSI (forum.postalsite.info)
forum.postalsite.info/profiles/2532.htm

*Nie dotyczy osób, którzy przyczynili się do powstania poradnika


(po wcześniejszym skontaktowaniu się z autorem).

Copyright © 2015 seebeek17/MiRRoRRek Wszystkie prawa zastrzeżone.

Strona: 189

You might also like