Poprzedni temat «» Następny temat
[TUTORIAL] Tworzenie NPC BG1 dla początkujących
Autor Wiadomość
Lava Del'Vortel 
Avatar Sune
Łasiczy Szperacz


Wiek: 28
Posty: 3017
Podziękowania: 183/60
Wysłany: 2008-10-12, 20:22   [TUTORIAL] Tworzenie NPC BG1 dla początkujących

Tutorial NPC BG1 dla początkujących (WeiDU) v.2 by Lava Del'Vortel

I. WSTĘP:

Ten tutorial pomoże Wam nauczyć się tworzyć NPC do Baldur's Gate I. W BG1 mamy dość duży wybór oryginalnych NPC, jednak na pewno znajdą się osoby chcące stworzyć coś do pierwszej części gry. Wydawałoby się, że NPC w BG1 i BG2 tworzy się tak samo, są jednak różnice.
Niektóre pliki tworzy się tak samo jak w BG2 więc nie zdziwcie się, że skopiuje je z mojego tutoriala do BG2. Po co w końcu pisać 2 razy to samo tylko z użyciem innych słów.

Jest to tak naprawdę działający NPC ale bardzo słabo rozbudowany! NPC powinniśmy dać jakieś dłuższe i ciekawsze dialogi, rozbudować koncepcję. Dobremu NPC powinniśmy dać także głos. Jak się to robi możemy dowiedzieć się w innych tutorialach. Linki na dole tego artykułu.

II. Tworzenie pliku .cre:

Czym właściwie jest plik .cre? To jest plik postaci. To w nim są zapisane wszystkie statystyki, liczba punktów życia, rasa, charakter itd. Oto najprostszy sposób na stworzenie takiego pliku:


1. Włączamy Wrota Baldura.
2. Wybieramy tryb gry dla wielu graczy i wybieramy połączenie przez port szeregowy.
3. Tworzymy (lub importujemy po prostu by było szybciej) dowódcę drużyny. Później tworzymy jako postać 2 podstawę dla naszego NPC. Najlepiej tutaj wybrać klasę, rasę, charakter etc. takie jakie już będą właściwe i odpowiednie dla naszego przyszłego NPC. Statystyki dowolne. To zmienimy później. Imię też nie robi różnicy. UWAGA: Nasza postać NPC nie powinna być dowódcą!
4. Rozpoczynamy grę i eksportujemy postać naszego przyszłego NPC.
5. Zamykamy grę.
6. Otwieramy Near Infinity i je konfigurujemy. Konfiguracja jest prosta. W konfiguracji po prostu wybieramy folder główny BG2 i źródło które w nim będzie. UWAGA: Jeżeli Twój komputer widzi NI jako spakowany plik to zainstaluj lub zaktualizuj java.
7. W lewym "drzewie" NI wyszukujemy w folderze "Characters" plik naszej postaci. Niech naszym założeniem będzie to Lava NPC. Szukamy więc pliku wyeksportowanego w punkcie 4. Powiedzmy Lava.chr.
8. Klikamy na Lava.chr po czym wybieramy zakładkę FILE w oknie NI. Klikamy na opcję "Convert CHR to CRE". Jako folder do którego konwertujemy wybieramy na chwilę obecną folder "Override".
9. Należy teraz wyłączyć i włączyć ponownie NI. Po włączeniu wybieramy w drzewie folder "Override".
10. Wyszukujemy Lava.cre, klikamy na nią i wybieramy zakładkę EDIT, która jest w OKNIE POSTACI (nie EDIT okna głównego NI).
11. Klikamy na linijkę "FLAGS" i klikamy na "EXPORT ALLOWED" by to odhaczyć.
12. Odnajdujemy linijkę "OVERRIDE SCRIPT" która jest mniej-więcej na wysokości 2/3 listy. Klikamy na tą linijkę prawym przyciskiem myszy i wybieramy "edit as string". Klikamy na to 2 razy i wpisujemy nazwę pliku skryptu. Powiedzmy, że u nas będzie to po prostu LAVA. To samo czynimi z linijką "DEFAULT SCRIPT".
13. Odnajdujemy linijkę "DEATH VARIABLE" lub "SCRIPT NAME". Wpisujemy tutaj "skryptowe imię" naszej postaci. Najlepiej by było to po prostu jej imię. Dla Lavy wpiszemy więc LAVA.
14. Klikamy na linijkę "DIALOG" prawym przyciskiem myszy. Wybieramy "edit as string" i wpisujemy nazwę pliku dialogu postaci. Najlepiej znowu po prostu imię. Dla Lavy będzie to LAVA.

PODPUNKTY 15 I 16 TEJ CZĘŚCI TUTORIALU DOTYCZY ZMIAN STATYSTYK ETC POSTACI. JEŻELI PRZY TWORZENIU POSTACI WYBRANO WSZYSTKO ODPOWIEDNIO TO MOŻESZ POMINĄĆ TE PODPUNKTY.

15. Możemy teraz zmienić statystyki, rasę, PŻ etc. postaci.
16. By tego dokonać musimy znać podstawy angielskiego. Dokonajcie zmian. Występują tam odpowiednie linijki statystyk (np. zręczności czylo DEXTERITY), czy np. punktów życia (PŻ czyli angielskie HP).

17. Zapisujemy dokonane zmiany i zamykamy NI.

Plik postaci jest gotowy.

III. Tworzenie dialogu przyłączenia i odłączenia:

Tutaj przedstawię sposób tworzenia rozmowy przyłączenia i odłączenia postaci. Napiszę najprostszy dialog bez wielu bloków. Link do tutorialu o tworzeniu dialogów znajdzie się na końcu tej pracy.

1. Otwieramy notatnik.
2. Rozpoczynamy cały plik od słów BEGIN ~LAVA~ (zachowujemy wielkość liter!), gdzie LAVA to plik dialogowy który ustawiliśmy w NI.
3. Piszemy dialog. Teraz podam przykład najprostszego dialogu:

Kod:

BEGIN ~LAVA~

IF~NumTimesTalkedTo(0)~ THEN BEGIN LAVA-01     
SAY~Witaj! Jestem Lava. Jam jest prawdziwy bard i awanturnik. Potrzebujesz mojej pomocy?~
IF~~THEN REPLY ~Tak. Dołączysz do mojej drużyny?~ GOTO LAVA-02
IF~~THEN REPLY ~Nie. Bywaj!~ GOTO LAVA-03
END

IF~~THEN BEGIN LAVA-02
SAY~Tak! Ruszajmy, przyjaciele!~
IF~~THEN DO ~JoinParty()~ EXIT
END

IF~~THEN BEGIN LAVA-03
SAY~Nie to nie! Zmiatać!~
IF~~THEN EXIT
END


To był dialog pierwszego spotkania. Teraz dialog kolejnych rozmów, gdybyśmy wrócili porozmawiać.

Kod:

IF~NumTimesTalkedToGT(0)~ THEN BEGIN LAVA-04     
SAY~Wróciłeś! Zmieniłeś zdanie?~
IF~~THEN REPLY ~Tak. Dołączysz do mojej drużyny?~ GOTO LAVA-02
IF~~THEN REPLY ~Nie. Bywaj!~ GOTO LAVA-03
END


W tym przypadku polecenia GOTO poprowadzą do bloków które już napisaliśmy. Nie będziemy ich powtarzać. Teraz dialog przy wyrzuceniu z drużyny. dodajmy po prostu literę P w nazwie.

Kod:

BEGIN ~LAVAP~

IF~~THEN BEGIN LAVA-KickOut
SAY~Chcesz bym odszedł?~
IF~~THEN REPLY ~Tak.~ GOTO LAVA-KickOut1
IF~~THEN REPLY ~Nie.~ GOTO LAVA-KickOut2
END

IF~~THEN BEGIN LAVA-KickOut1
SAY~To dobrze. Idźmy dalej.~
IF~~THEN DO ~JoinParty()~ EXIT
END

IF~~THEN BEGIN LAVA-KickOut2
SAY~Szkoda. Bywajcie.~
IF~~THEN EXIT
END


NumTimesTalkedTo(0) oznacza, że jeszcze nie rozmawialiśmy z postacią czyli to pierwsza rozmowa. NumTimesTalkedToGT(0) natomiast posiada GT czyli "GRATER THAN". Warunkiem jest więc to, że rozmawialiśmy z tą postacią przynajmniej jeden raz. LAVA-01 i inne to nazwy bloków dialogowych. Nie może być 2 bloków o tej samej nazwie.
WSZYSTKIE TE BLOKI MAJĄ ZNAJDOWAĆ SIĘ W JEDNYM PLIKU. WSZYSTKIE 3 PODANE PRZEZE MNIE CZĘŚCI.

4. Zapisujemy plik. Wpisujemy LAVA.d i wybieramy format pliku jako inny (nie .txt).

Jednak w BG1 jest pewna ciekawostka. Nie możemy używać tutaj polskich znaków. Dialog jaki napisałem jest z tutorialu BG2 i by zadziałał w BG1 najpierw musimy jeszcze pozmieniać polskie znaki na ich odpowiedniki z zasobów gry:

ą - î
Ą - ĺ
ł - ń
Ł - č
ó - ó
Ó - é
ć - ď
Ć - ć
ń - ň
Ń - ę
ź - ő
Ź - ě
ę - đ
Ę - ç
ś - ô
Ś - ë
ż - ö
Ż - í

Link do makr Zeda Noceara konwertujący polskie znaki na odpowiedniki i na odwrót. (Makra do

MS Worda)

Link do informacji o makrach i innych technikaliach a propos BG1 (Strona Domowa Zeda)

W BG1 dialogi po wyrzucenia, przy odłączaniu same się nie włączają. Musimy używać taki actions jak StartDialog i SetDialog (w skryptach postaci).

IV. DODAWANIE NPC DO LOKACJI:

Dodawanie NPC do lokacji wygląda inaczej niż w BG2. Nie piszemy skryptu lokacji. W ten sposób dodajemy inne postacie które nie są NPC. Tutaj dodajemy do pliku .tp2 kilka nowych wierszy. Są 2 sposoby ale wg. mnie tylko jeden jest bezpieczny. Drugi wywołuje błędy, jest niedokładny. By nie komplikować sprawy podam tylko jeden sposób.

Uruchamiamy grę i odwiedzamy w niej miejsce w którym chcemy by stała nasza postać. Najeżdżamy na odpowiednie miejsce na mapie i klikamy wciskamy przycisk X. Podane zostaną nam plik AR, wartość x i wartość y. Zapisujemy sobie te dane na kartce.

Oto bloki które trzeba dodać:

Kod:

COPY_EXISTING ~baldur.gam~ ~override~

INSERT_BYTES 0xB4 0x160
WRITE_LONG 0x140 0xFFFFFFFF
WRITE_LONG 0x144 0xFFFFFFFF
WRITE_LONG 0x168 0xFFFFFFFF
WRITE_SHORT 0x16C 0xFFFF

READ_LONG 0x34 npc_count
WRITE_LONG 0x34 ("%npc_count%" + 1) // gdzie liczba 1 to liczba nowych NPC
READ_LONG 0x20 party_offset
WRITE_LONG 0x20 ("%party_offset%" + 0x160)
WRITE_LONG 0x28 ("%party_offset%" + 0x160)
WRITE_LONG 0x50 ("%party_offset%" + 0x930)

WRITE_ASCII 0xC0 ~Lava~     // Gdzie "Lava" to plik .cre naszego NPC
WRITE_LONG 0xC8 0x5        // Ostatnia cyfra to kierunek w którym zwrócona jest postać.
WRITE_ASCII 0xCC ~ARXXXX~    // Gdzie ARXXXX to lokacja w której ma znajdować się postać np. AR1000
WRITE_SHORT 0xD4 XXX        // Gdzie XXX to warość X
WRITE_SHORT 0xD6 XXX        // Gdzie XXX to warość Y



Jak mówiłem jest jeszcze automatyczna metoda, czyli użycie ADD_GAME_NPC ale przez jej używanie można uszkodzić wszystkie save'y i samą zainstalowaną grę. Jak mawia Zed "ta metoda ma status NIE UŻYWAĆ". Warto jednak przynajmniej o niej wspomnieć.

UWAGA: Używając metody którą tutaj opisałem trzeba rozpocząć nową grę by NPC się pojawił!

V. INSTALKA MODA:

Teraz zaprezentuję jak stworzyć plik instalki moda. Po prostu teraz napiszę instalkę do dodatku który razem napisaliśmy. Oczywiście wpisujecie takie nazwy, jakie sami nadaliście plikom.

1. Tworzymy folder dla plików naszej postaci. Powiedzmy że nasz to "Lava".
2. Wkładamy do niego wszystkie pliki jakie dziś razem stworzyliśmy.
3. Otwieramy notatnik.
4. Tworzymy instalkę. Dla tego dodatku będzie to wyglądało tak:

Kod:

BACKUP ~Lava\backup~
AUTHOR ~Lava Del'Vortel~
BEGIN ~Lava NPC - BG2~

COPY ~Lava\LAVA.cre~ ~override\LAVA.cre~
SAY NAME1 ~LAVA~
SAY NAME2 ~LAVA~
SAY BIO~Zapytany o przeszłość LAVA nic nie mówi.~

COMPILE ~Lava\LAVA.d~

APPEND ~pdialog.2da~
~LAVA LAVAP~
UNLESS ~LAVA~

COPY_EXISTING ~baldur.gam~ ~override~

INSERT_BYTES 0xB4 0x160
WRITE_LONG 0x140 0xFFFFFFFF
WRITE_LONG 0x144 0xFFFFFFFF
WRITE_LONG 0x168 0xFFFFFFFF
WRITE_SHORT 0x16C 0xFFFF

READ_LONG 0x34 npc_count
WRITE_LONG 0x34 ("%npc_count%" + 1)
READ_LONG 0x20 party_offset
WRITE_LONG 0x20 ("%party_offset%" + 0x160)
WRITE_LONG 0x28 ("%party_offset%" + 0x160)
WRITE_LONG 0x50 ("%party_offset%" + 0x930)

WRITE_ASCII 0xC0 ~Lava~    
WRITE_LONG 0xC8 0x5       
WRITE_ASCII 0xCC ~AR1000~   
WRITE_SHORT 0xD4 666       
WRITE_SHORT 0xD6 666       



Tak więc wyjaśnijmy najważniejsze komendy. COMPILE to komenda kompilowania plików dialogowych i skryptów. To sprawdzi, czy skrypty/dialogi są poprawnie napisane, przetłumaczy je na język gry. Przy tym zmienią się rozszerzenia (.d = .dlg ; .baf = .bcs)
SAY NAME1 i SAY NAME2 nadaje imię postaci, SAY BIO ustawia biografię.
Natomiast ten blok:
Kod:

APPEND ~pdialog.2da~
~LAVA LAVA LAVAP~
UNLESS ~LAVA~

Nadaje dialogi postaci. Pierwszy blok i przy UNLESS wpisujemy Death Variable.


Podane wartości są przykładowymi!


5. Zapisujemy to jako Setup-LavaNPC.tp2 (Ten plik nie wkładamy do folderu Lava!)
6. Potrzebujemy teraz plik WeiDU. Możemy go ściągnąć ze storny WeiDU albo po prostu skopiować z innego moda WeiDU. Załóżmy, że zabierzemy z Skie NPC plik Setup-Skie.exe. Zmieniamy teraz po prostu jego nazwę na Setup-LavaNPC.exe (taka sama nazwa jak pliku .tp2 tylko inne rozszerzenie).


VI. Zakończenie:

Kto umie dodawać NPC do BG2 ten nie powinien mieć problemów z dodaniem takowego do BG1. Jak widać, różnic w plikach bardzo wielkich nie ma.
Podziękować pragnę Zedowi Nocearowi od którego nauczyłem się odrobinę tworzyć modyfikacje do BG1. Jest w końcu także autorem makr które ułatwią nie jednej osobie w konwersji polskich znaków na odpowiedniki z BG1.

VII. PRZYDATNE LINKI:

Linki które mogą się przydać w tworzeniu NPC do BG1.

Technikalia cz.1 autorstwa Zeda Noceara
Technikalia cz.2 autorstwa Zeda Noceara
Tutorial plików dialogowych autorstwa L'f
Tutorial Audio autorsta Lavy Del'Vortel
Ostatnio zmieniony przez L`f 2014-04-27, 18:09, w całości zmieniany 2 razy  
Podziękuj autorowi tego posta
 
 
 
Więcej szczegółów
Za tę wypowiedź podziękowali:
morgan
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  
Powered by phpBB modified by Przemo © 2003 phpBB Group