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


Wiek: 27
Posty: 2998
Podziękowania: 180/58
Wysłany: 2008-10-06, 01:42   [TUTORIAL] Tworzenie NPC BG2 dla początkujących

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

I. WSTĘP:

Ten tutorial powstał by pomóc zupełnie początkującym stworzyć własnych NPC do gry BG2. Zaprezentowane metody nie są perfekcyjne, ale są proste. Stanowczo

wystarczą do stworzenia własnej postaci. Jest to nowa wersja, bez błędów z tutorialu Riklaunima.
Programy, których będziemy potrzebowali: Near Infinity (NI), zainstalowane BG2, Notatnik.



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.
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 asstring". Klikamy na to 2 razy i wpisujemy nazwę pliku skryptu. Powiedzmy, że u nas będzie to po prostu LAVA. To samo czynimy z linijką "DEFAULT SCRIPT".
13. Odnajdujemy linijkę "DEATH VARIABLE". DV kiedyś było zwane SCRIPTING 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. Ostatnią rzeczą jaką jeszcze trzeba zmienić to Ally na Neutral.

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 czyli 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~Łe...~
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łaczysz 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~!InParty("LAVA")~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 "GREATER 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).


IV. PLIK SKRYPTU LOKACJI:

Teraz stworzymy skrypt lokacji który sprawi, że nasza postać pojawi się w grze. Załóżmy, że miejscem gdzie pojawi się nasz NPC będzie jeden z namiotów w Targowie. (To co podam to zmieniony plik z dodatku Skie NPC mojego autorstwa.)

1. 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 sobię te dane na kartce.
2. Zamykamy grę.
3. Otwieramy notatnik. Tworzymy skrypt. Przykładowy i zarazem podstawowy wygląda tak:

Kod:

IF
Exists(Player1)
!Global("LavaExists","AR2017",1)
THEN
RESPONSE #100
CreateCreature("Lava",[523.333],3)
SetGlobal("LavaExists","AR2017",1)
END


Oznacza to, że jeżeli istnieje główna postać gracza na tym obszarze, a zmienna globalna lokacji AR2017 (Przykładowa lokacja. Jako drugą część zmiennej wpisujecie takie AR jakie zapisaliście na kartce.) Global("LavaExists","AR2017",1) nie wynosi 1 (wykrzyknij oznacza "not" czyli warunkiem jest, że jest przeciwnie niż podano po wykrzykniku) to jest 100% prawdopodobieństwo, że zostanie stworzona postać "Lava" w danym miejscu (te liczy to to co zapisaliśmy na kartce w postaci [wartość x.wartość y] ). Kolejna cyfra oznacza w która stronę jest odwrócona postać. Ustalona teraz zostanie zmienna Glob("LavaExists","AR2017",1) co sprawi, że postacie nie będą się pojawiać w nieskończoność.

4. Zapisujemy plik jako ARXXXX.baf gdzie XXXX to nr lokacji. W tym przypadku byłby to AR2017.baf



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 "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~
COMPILE ~Lava\LAVA.baf~

EXTEND_TOP ~AR2017.bcs~ ~Lava\AR2017.baf~

APPEND ~pdialog.2da~
~LAVA LAVAP LAVAJ LAVAD LAVA25P LAVA25J LAVA25D LAVA25~
UNLESS ~LAVA~

APPEND ~interdia.2da~

~LAVA LAVAB LAVA25B~


SAY NAME1 oraz 2 muszą być takie same. To ustawia imię postaci. SAY BIO ustawia biografię. EXTEND_TOP dopisuje nasz skrypt lokacji do innych skryptów tego miejsca. APPEND ustawia dialogi. Te z numerem 25 dotyczą ToB.

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 strony 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-Lava.exe (taka sama nazwa jak pliku .tp2 tylko inne rozszerzenie).


VI. ZAKOŃCZENIE:

Nie musimy na tym stadium modu tworzyć Lava.baf. Tak więc NPC został skończony. Teraz wystarczy go po prostu uruchomić i zainstalować.

UWAGA: Jeżeli nie tworzymy nowego skryptu dla postaci to w pliku tp2 TRZEBA usunąć linijkę:

Kod:
COMPILE ~Lava\LAVA.baf~


Możemy też po prostu otworzyć notatnik i pusty plik zapisać jako Lava.baf.

VII. Tutoriale przydatne przy tworzeniu NPC:

Tutorial Audio autorsta Lavy Del'Vortel
Tutorial CD_STATE_NOTVALID autorstwa Lavy Del'Vortela (dla zaawansowanych)
Tutorial plików dialogowych autorstwa L'f
Tutorial NPC dla początkujących i zaawansowanych autorstwa Kat “theacefes” Bella (po angielsku) [/code]
Ostatnio zmieniony przez L`f 2014-04-27, 19:07, w całości zmieniany 3 razy  
Podziękuj autorowi tego posta
 
 
 
Więcej szczegółów
Za tę wypowiedź podziękowali:
Yochloll, Theorp, Trista, Aeremar, Jvegi, Dark
Zireael 


Wiek: 25
Posty: 724
Podziękowania: 13/42
Skąd: Ched Nasad
Wysłany: 2011-03-08, 11:28   

Cytat:
UWAGA: Nasza postać NPC nie powinna być dowódcą!


Dowódcą w sensie protagonistą?
_________________
SiNafay Vrinn z 13tego domu Ched Nasad, prawdziwa córka Lloth!
Podziękuj autorce tego posta
 
 
Vinci
Zasłużony


Posty: 2484
Podziękowania: 234/50
Wysłany: 2011-03-08, 11:37   

Zireael napisał/a:
Dowódcą w sensie protagonistą?


Tak. Nie powinna dostać mocy bhaala. Tworzysz grę multiplayer i swoją postać, którą zamierzasz stworzyć, robisz jako drugą. Albo znajdujesz inny plik .cre i go sobie edytujesz. Jeżeli chodzi o Khalida, to masz przecież gotowe .cre w BG1, a może i w BG2 się znajdzie.
Podziękuj autorowi tego posta
 
 
picollo 

Posty: 575
Podziękowania: 63/97
Wysłany: 2011-03-08, 11:53   

Vinci napisał/a:
eżeli chodzi o Khalida, to masz przecież gotowe .cre w BG1, a może i w BG2 się znajdzie.

W BG1 jest na strasznie niskim poziomie, a w BG2 jest, ale jego zwłoki to pierwszopoziomowy mag bez żadnych zmian w statystykach. Ja jednak myślę, że szybciej będzie zrobić nowy plik cre Khalida właśnie w ten sposób. Nie trzeba zmieniać rzutów obronnych, THAC0, etc.
_________________
był szalony jak stado zajęcy na wiosnę, kiedyś kazał nam ściąć cały zagajnik dębów, bo uroiło mu się, że go szpiegują... a potem doszedł do wniosku, że były jednak w porządku i rozkazał nam je pochować.
- czy wy wiecie ile czasu zajmuje zakopanie dębowego lasu?
Podziękuj autorowi tego posta
 
 
Tuldor88 
Uczeń Gonda
Dziki kurczak zagłady


Wiek: 29
Posty: 1742
Podziękowania: 128/135
Wysłany: 2014-04-29, 23:59   

Do tutka dopiszę tylko, że możemy wpisać nieco więcej pozycji (zresztą te które wymienię to też nie wszystko bo już lecę a jutro zapomnę, tak uzupełnię w najbliższym czasie):

Cytat:
WRITE_ASCII DEATHVAR ~~<= DeathVariable (DV lub ScriptName, identyfikator postaci), można zamiast DEATHVAR wpisać 0x280

WRITE_ASCII DIALOG ~~<= Nazwa pliku dialogowego

WRITE_ASCII SCRIPT_GENERAL ~~<= skrypt postaci (wbrew nazwie nie najważniejszy bo kolejno są to skrypty: 1) Override, 2) Class, 3) Race, 4) General, 5) Default) więc jest 4 z kolei
WRITE_ASCII SCRIPT_OVERRIDE ~~<= jw

WRITE_ASCII 0x34 ~~<= mały portret
WRITE_ASCII 0x3c ~~<= duży portret

WRITE_SHORT 0x2e ~~<= główny kolor
WRITE_SHORT 0x2d ~~<= dodatkowy kolor
WRITE_SHORT 0x2f ~~<= kolor skóry
WRITE_SHORT 0x32 ~~<= kolor włosów

WRITE_SHORT 0x28 ~~<= animacja

WRITE_BYTE 0x237 ~~<= płeć
_________________
Heinrich Heine napisał/a:
Sen jest dobrą rzeczą, śmierć jeszcze lepszą, ale najlepiej byłoby wcale się nie narodzić.
Alvarez o modowaniu napisał/a:
Może przytoczę twierdzenie Liberty'ego, które jakoś tak idzie: planujesz jakiś projekt, wyznacz sobie termin, pomnóż potrzebny czas przez 2 a i tak nie zdążysz.

Wybrane fragmenty banterów:
Edwin napisał/a:
-Phi! Porównywać mnie do jakiegoś podrzędnego nekromanty! (Stanowczo na zbyt wiele sobie pozwala, muszę pokazać mu gdzie jego miejsce.) Prawdopodobnie przemawia przez ciebie zwykła zazdrość. Wy, maluczcy macie tendencje do zawiści wobec tych, którzy was przerastają. Ja zaś czynię to nie tylko talentem ale i wzrostem, karzełku.
-*Posłał Edwinowi szeroki uśmiech przemawiając serdecznym tonem* Jeszcze raz nazwiesz mnie „karzełkiem” a utnę ci na dole coś niezwykle małego, co może jednak mimo wszystko być ci drogie. Gdy zaś chodzi o te dyrdymały o talencie... znów przypominasz mojego żałosnego, byłego towarzysza...
Minsc napisał/a:
-Niebywałe, że ten chomik jeszcze oddycha. Znajdując się nieco bliżej ciebie wielkoludzie na pewno zaniechałbym tej czynności, powiedz, uważasz że pranie onuc urąga twej męskości, czy po prostu lubisz informować wrogów zapaszkiem o tym, iż się do nich zbliżasz?
-Boo być może jest niewielki Montaronie, ale jest też o wiele silniejszy niż się zdaje. A to, co czujesz to zapach prawdziwego mężczyzny, który przykryje każdy odór zła, na jaki trafi, co nie, Boo?.
Viconia napisał/a:
-Mmm... wciąż robisz wrażenie Viconio, moja ty hebanoskóra kusicielko. Zdajesz sobie sprawę jak działasz na otoczenie, prawda?
-Oczywiście samcze, dzięki temu jalukul, mężczyźni tacy jak ty – myślący kroczem zamiast głową – stają się łatwiejsi w kontrolowaniu

-cała prawda o Imoen :P
Podziękuj autorowi tego posta
 
 
 
Tuldor88 
Uczeń Gonda
Dziki kurczak zagłady


Wiek: 29
Posty: 1742
Podziękowania: 128/135
Wysłany: 2014-11-24, 22:25   

Niby pierdoła, ale czasem wkurza dlatego o niej wspomnę :smile:
Jak widać w poście Lavy CreateCreature() posiada odnośnik do tego w którą stronę patrzy zespawnowany NPC:
Cytat:
CreateCreature("Lava",[523.333],3)
[523.333] to współrzędne na lokacji, a 3 to właśnie wskaźnik kierunku.
Nigdy nie chce mi się myśleć jaki numer powinienem dać by NPC patrzyli/obracali się w dokładnie tą stronę co potrzeba (parametr jest też w kilku innych skryptach obecny, szczególnie podczas Cutscenek ) dlatego na własne potrzeby zapisałem sobie cosik takiego - może i innym się przyda :P


PS: wybaczcie niechlujność ale jak pisałem robiłem na własne potrzeby w paincie :P

EDIT: Po namyśle poprawiłem toto by było czytelniejsze i mniej namazane :P
_________________
Heinrich Heine napisał/a:
Sen jest dobrą rzeczą, śmierć jeszcze lepszą, ale najlepiej byłoby wcale się nie narodzić.
Alvarez o modowaniu napisał/a:
Może przytoczę twierdzenie Liberty'ego, które jakoś tak idzie: planujesz jakiś projekt, wyznacz sobie termin, pomnóż potrzebny czas przez 2 a i tak nie zdążysz.

Wybrane fragmenty banterów:
Edwin napisał/a:
-Phi! Porównywać mnie do jakiegoś podrzędnego nekromanty! (Stanowczo na zbyt wiele sobie pozwala, muszę pokazać mu gdzie jego miejsce.) Prawdopodobnie przemawia przez ciebie zwykła zazdrość. Wy, maluczcy macie tendencje do zawiści wobec tych, którzy was przerastają. Ja zaś czynię to nie tylko talentem ale i wzrostem, karzełku.
-*Posłał Edwinowi szeroki uśmiech przemawiając serdecznym tonem* Jeszcze raz nazwiesz mnie „karzełkiem” a utnę ci na dole coś niezwykle małego, co może jednak mimo wszystko być ci drogie. Gdy zaś chodzi o te dyrdymały o talencie... znów przypominasz mojego żałosnego, byłego towarzysza...
Minsc napisał/a:
-Niebywałe, że ten chomik jeszcze oddycha. Znajdując się nieco bliżej ciebie wielkoludzie na pewno zaniechałbym tej czynności, powiedz, uważasz że pranie onuc urąga twej męskości, czy po prostu lubisz informować wrogów zapaszkiem o tym, iż się do nich zbliżasz?
-Boo być może jest niewielki Montaronie, ale jest też o wiele silniejszy niż się zdaje. A to, co czujesz to zapach prawdziwego mężczyzny, który przykryje każdy odór zła, na jaki trafi, co nie, Boo?.
Viconia napisał/a:
-Mmm... wciąż robisz wrażenie Viconio, moja ty hebanoskóra kusicielko. Zdajesz sobie sprawę jak działasz na otoczenie, prawda?
-Oczywiście samcze, dzięki temu jalukul, mężczyźni tacy jak ty – myślący kroczem zamiast głową – stają się łatwiejsi w kontrolowaniu

-cała prawda o Imoen :P
Podziękuj autorowi tego posta
 
 
 
aadrianova 

Wiek: 31
Posty: 4
Skąd: Rybnik
Wysłany: 2016-03-05, 12:33   

wszystko fajnie, ale czemu kiedy wgrywam programy one mi nie działają? może ktoś jak do niepełnosprawnego objaśnić który program, po kolei gdzie wgrać? bardzo proszę o pomoc :cry:
_________________
chromolenie w bambus
Podziękuj autorce tego posta
 
 
picollo 

Posty: 575
Podziękowania: 63/97
Wysłany: 2016-03-08, 12:15   

aadrianova napisał/a:
wszystko fajnie, ale czemu kiedy wgrywam programy one mi nie działają? może ktoś jak do niepełnosprawnego objaśnić który program, po kolei gdzie wgrać? bardzo proszę o pomoc :cry:


Nie sądzisz że będzie prościej jeśli to Ty opiszesz co robisz, co instalujesz i co Ci krzyczy, że jest źle? Łatwiej będzie osobom które mogą Ci pomóc dociec co jest nie tak.

Bo przy obecnym zakresie informacji, obstawiam, że błędem jest to, że instalujesz ten na dysk Ą, a prawdopodobnie nie posiadasz takiego dysku w systemie. Spróbuj zainstalować na inny dysk, powinno zadziałać /s
_________________
był szalony jak stado zajęcy na wiosnę, kiedyś kazał nam ściąć cały zagajnik dębów, bo uroiło mu się, że go szpiegują... a potem doszedł do wniosku, że były jednak w porządku i rozkazał nam je pochować.
- czy wy wiecie ile czasu zajmuje zakopanie dębowego lasu?
Podziękuj autorowi tego posta
 
 
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