- Przy okazji tego tematu powstał tutorial, który w dość skomplikowanych okolicznościach odzyskałem teraz i dla tych potrzeb przedstawiam. Rzecz sprzed lat i pisana dla AVPC, więc wymagała poprawek, ale mam nadzieję, że będzie zrozumiała.
Warsztat pracy tworzymy zaczynając od pliku samej mapy. Całość przedstawiam na tym, co ma sama gra, dla własnego moda robimy, co oczywiste, swoje. Oto znany wszystkim plik, o wymiarach kwadratu, przez grę rozciągnięty do proporcji ekranu:
2. Wyliczamy współrzędne.
Siatka w P2 jest wielkości od 1 do 1024. To, co "robi" za strzałkę na planie, to akurat pozycja gracza względem tej siatki współrzędnych. Sama siatka, to określenie za pomocą współrzędnych X i Y, gdzie na naszej mapie znajduje się gracz. Współrzędne zapisane są w w skrypcie MapScreen (dla StP) lub AW7MapScreen (dla AWP). Kiedy wiemy, gdzie na planie ma stać gracz, to współrzędne z tej siatki odczytujemy i zapisujemy. Dla własnych potrzeb zrobiłem sobie kiedyś siatkę takich mappoint'ów. Wersja robocza moich żmudnych wyliczeń i nie piękna, ale przyjrzenie się jej może pomóc. Oto ona:
3. Stawianie MapPointów, krok 1.
Każda mapa wymaga dwóch punktów, MapPointów. Najlepiej na krańcach mapy, aby dobrze pokazać, gdzie się zaczyna a gdzie kończy. Gdzie je postawić? W miejscach charakterystycznych dla mapy - punkt wczytania na inną mapę, charakterystyczny budynek. Otwierasz daną mapę w PostEd. Teraz idziesz do przeglądarki klas (Actor Browser). Dla samych MapPointów opisany zaraz zabieg nie jest potrzebny, ale jest niezbędny dla AW7MapScreen, o którym potem. Jeśli masz włączony widok paczek pod drzewem klas, musisz go wyłączyć, aby pokazały się obie (a nie jedna) zaptaszalne opcje. Czyli menu View i odznaczasz Show Packages. Widzisz tylko drzewo a nad drzewem dwie pozycje. Use ''Actor'' as parent? oraz Placeable classes Only? Obie musisz odznaczyć. Drzewo klas ci się przeładuje.
4. Stawianie MapPointów, krok 2.
W drzewie klas otwierasz kolejno Object-Actor-Keypoint-MapPoint. Zaznaczasz ów MapPoint i przechodzisz do mapy. Wybierasz miejsce i dajesz z menu Add MapPoint Here. Robisz to samo z drugim MapPoint. Możesz dodać i trzecie, jeśli okaże się w grze, że dwa to za mało. Ale od razu więcej niż dwóch nie dawaj. Zapisujesz mapę pod tą samą nazwą. Nie musisz jej przebudowywać. Czynność więc, jak widzisz, bezbolesna dla mapy i przyjemna dla edytującego. No i rzecz ważna. Nazwa każdego MapPointa musi być odmienna od innych MapPointów, jedyna. Aby gra współrzędne dla niego przypisane w MapScreen/AW7MapScreen kojarzyła wyłącznie z tym MapPointem. A nazwa może być bardzo krótka, ale też i dłuższa, tak byś Ty mógł się po niej łatwo zorientować, czego dotyczy. No i nie może mieć polskich znaków ani spacji, rzecz jasna.
5. Edycja właściwości AW7MapScreen, krok 1.
Przerażać może edycja skryptów, że trzeba wypakować skrypty, edytować, kompilować... Nic z tego. Wszystko zrobisz tu i teraz za pomocą PostEd, niczego więcej. Ale, żeby ustrzec się notorycznego błędu, że zapisana w PostEd paczka skryptów jest mniejsza od oryginalnej, musisz wszystkie skrypty, wszyściutkie używane w grze otworzyć w PostEd i wczytać je do niego. Bo samo otwarcie mapy tego nie da, edytor wczyta z paczek tylko to, co mu teraz potrzebne, reszty nie. A więc wczytujesz zawartość folderu System oraz podfolderów w tej kolejności: \System, \AWSystem i \AW7System. PostEd jest gotowy do roboty. Przypominam, tutek pisany jest dla mapy AVPC.
6. Edycja właściwości AW7MapScreen, krok 2.
Teraz dopiero przyda się "odptaszenie" opcji, jakie wybrałeś wcześniej. Musisz bowiem wyjść poza klasę Actor i zająć się elementem, który nie dodaje się do mapy. A dokładnie, musisz znaleźć to tak: Object-Interactions-Interaction-P2Screen-MapScreen-AW7MapScreen. Prawoklikasz na AW7MapScreen i wybierasz z menu Default Properties... Wyskoczy ci okienko podobne do tego, jakie widać, gdy się wybierze właściwości czegoś, co znajduje się na mapie. Tylko że to okienko nie zmieni swej zawartości, kiedy klikniesz na coś na mapie, bo jest stale przypisane do obiektu otwartego nie na mapie, ale w przeglądarce klas. Masz je więc stale pod ręką i nie zamykaj, gdy wczytasz inną mapę. Ono będzie stale i stale potrzebne. Znalazłeś już AW7MapScreen, to możesz teraz powrócić do Object-Actor-Keypoint-MapPoint i ów MapPoint zaznaczyć w przeglądarce klas. Po co? On musi być aktywny, aby pojawiło się menu Add MapPoint Here, które wybierzesz na następnej wczytanej mapie, do której będziesz dodawał MapPointy.
7. Orientujemy się.
I teraz już do roboty! Stawiasz na mapie dwa MapPointy. Zapisujesz mapę. Zaglądasz do okna edytora graficznego i na obrazku odczytujesz współrzędne punktów, które wybrałeś na lokalizację MapPointa. Masz współrzędne, dodać je więc pora do AW7MapScreen. Najlepiej robić to bowiem na bieżąco, kiedy widzisz co i jak z edytowaną mapą i niczego nie zapomnisz. Dodajesz oba MapPointy do właściwości skryptu AW7MapPoint i uzupełniasz je o współrzędne. Teraz zapobiegawczo warto zapisać paczkę AW7Game.u, aby nie utracić wprowadzonych danych. O czym poniżej. Ale nie musisz tego robić po każdej edytowanej mapie, sam wybierasz częstotliwość zapisania paczki AW7Game.u - w niej jest AW7MapScreen i by zachować swoją pracę, jej zapisywanie jest niezbędne. Dla StP: skrypt MapScreen jest w Postal2Game.u i tą paczkę musisz zapisać.
8. Edycja właściwości AW7MapScreen, krok 3.
Czyli właściwa już edycja skryptu wzbogacająca samą grę o strzałkę na mapie. W okienku właściwości AW7MapScreen rozwijasz MapScreen a tam MapPositions. Widzisz calutką listę mappointów jakie są w P2 i w AW oraz na nowych mapach AWP. Pozycji jest 54 (od 0 do 53) i ostatnia to school-far. Niczego nie kasujesz, by mapa Paradise nadal była aktualna, tylko dodajesz swój dowolny, dodany wcześniej MapPoint dla AVPC. Jak dodać? Klikasz na napis MapPositions i pojawia się po prawo przycisk Add. Klikasz w niego i jesteś na końcu listy z nowym MapPointem. (Przypominam, że każdy musi mieć wyjątkową nazwę). Jak wpisać współrzędne, zobaczysz, rozwijając wcześniejszą pozycję. Gdy już z wszystkim się uporasz - zapisujesz skrypt, czyli paczkę AW7Game.u jego zawierającą. I tu uwaga: Nie edytowałeś treści samego skryptu, od tego jest inne okno i inne narzędzia. Dodałeś tylko nowe linie do Default properties. A to początkowa lista MapPoint'ów w skrypcie AW7MapScreen:
9. Zapisywanie paczki AW7Game.
Edytowane skrypty (czy to treść czy właściwości) zapisujemy do paczki, w której były. Jak się zapisuje paczkę w przeglądarce klas? W punkcie pierwszym wyłączyłeś widok View-ShowPackages. Musisz go teraz włączyć. Zobaczysz pod drzewem klas listę paczek wczytanych do gry. Zaptaszasz kwadracik przy paczce AW7Game i tylko przy niej. Wybierasz menu File-Save Selected Packages. Jeśli paczka okaże się mniejsza od oryginału edytor ostrzeże o tym. Widać nie wczytałeś do edytora wszystkich skryptów. Ale zakładam, że takiego ostrzeżenia nie zobaczysz. Nie zobaczysz też pytania, czy nadpisać oryginalną paczkę. Czemu? Oryginalna paczka znajduje się w folderze \System\AW7System zaś PostEd zapisze twoją edycję do folderu \System. I właśnie tą paczuszkę dajesz ludziom. Razem z twoją mapą, rzecz jasna.
Powodzenia!