Tłumaczenie tutoriala angielskiego o rekrutacji NPC do drużyny.
1.Narzędzia.
Sprawdź
http://getting%20started%20with%20modding:...0+%20downloads/ do pobrania narzędzi i intrukcji podstawowego użytkowania.
Kotor tool
Gff editor (Użyję GFFeditor od BioWare'u na tego moda).Teraz możesz zrobić większość z tego za pomocą Kotor Toola.
Program graficzny obsługujący .tga (aby dodać portret w wybieraniu drużyny: inaczej, możesz zrekrutować npc ale portret będzie czarny)
Notatnik
Kompilator skryptów - jest wbudowany w Kotor tool
(poza materiałem tutoriala) Stwórz swój dialog: użyj programu tk102 (twórca) - bardzo elastyczny i łatwy DLGeditor -
http://www.starwarsknights.com/tools.php.
2. Tworzenie moda:
Krok 1 --> wypakuj pliki .utc dla przyszłego rekruta:
Wybierz npc, którego chcesz zrekrutować. Wypakuj odpowiedni plik .utc . Do tego prościej jest z przykładem, Użyję Dustila (możesz ściągnąć ten mod na
http://www.pcgamemods.com/u/3451/. Dołączyłem kod źródłowy do downloadu. Silnie sugeruję robić ten tutorial z tym modem w ręku.
Dla Dustila, wypakowałem: kor35_dustil.utc
Zmień nazwę pliku .utc : na dustil, Użyłem p_dustil.utc. Nazwa nie ma znaczenia, jeżeli nie ma jej w grze.. Możesz nazwać to blabla.utc i będzie działać, tak długo, jak jest to nazwa unikalna (nie używana w grze) nie przekraczająca 16 znaków. Jednak, polecam nazwać plik tak, aby łatwo można go było znaleźć. Powodem, dla którego musisz używać nazw unikalnych jest to, że po prostu gdy użyjesz g_sithtroop002.utc (dla szturmowca sithów), skończysz podmieniać każdy g_sithtroop002.utc plik w grze.. Nie tylko będziesz miał tony nowych przyjaciół (zobaczysz później, zmienimy frakcję i postępowanie npc do członka grupy) ale gra ,,wywali" gdy użyjesz pewnych punktów.
Krok 2 --> edycja pliku utc dla przyszłego rekruta:
Masz 2 możliwości - GFF editor (starszy) i Kotor tool - Ja użyłem Bioware's GFF editor dla prezentowanego tutoriala-
http://img.photobucket.com/albums/v608/D333/GFF_utc.jpg - litery na screenshocie odpowiadają krokom a do h.
Otwórz plik.utc poprzez GFFeditor i sprawdź pola:
( prezentowany tutorial pokazuje podstawy tworzenia modów rekrutujących.Możesz edytować klasę, atuty, ekwipunek, itp. w tym pliku utc ale nie jest to zawarte w tutorialu)..
a) Appereance: numery w tym polu odpowiadają twojemu npc rzędowi wyglądu w pliku wyglądu.2da . Dla Dustila, jest to rząd nr. 432. Wpisz numer odpowiadający wyglądowi NPC jaki chcesz..
B) przejdźmy niżej do pola rozmowy: nazwa pliku dlg (bez rozszerzenia) npc. Dla przykładu, dla dustila napisałem p_ductilc, który jest nazwą pliku .dlg zostanie użyty dla Dustila tylko i wyłącznie.
c) FactionID: ustaw to na 2, która jest frakcją członków grupy.
Inne możliwe frakcje są spisane w pliku nwscript.nss ale nie używa się ich do modów rekrutujących..
d) FirstName: To imię, które będzie wyświetlane nad głową NPC kiedy będziesz grał. Jeśli chcesz zmienić pierwsze imię NPCa(przydatne dla innego typu npc) , wstaw -1 w górnej części (chodzi o to, że nie musisz wpisywać numeru w pliku .tlk file) i, jeżeli masz Angielską wersję gry, 1 w dolnej części. Dla innych języków, wpisz na podstawie poniższego spisu:
Język ID
Angielski 0
Francuski 1
Niemiecki 2
Włoski 3
Hiszpański 4
Polski 5
Koreański 128
Tradycyjny Chiński129
Uproszczony Chiński 130
Japoński 131
e) możesz też zmienić pola ForcePoints oraz GoodEvil ( dla punktów mocy, weź poziom swojego npc oraz dla GoodEvil:100 to 100% dobra a 0 to 100% zła )
f) Last name: działa tak samo jak pierwsze imie, ale to drugie imię twojego NPC...
g) PortraitID: numer w tym polu odpowiada do rzędu portretu twojego NPCw portretach .2da file (to będzie użyte do portretu w oknie drużyny) .
h) scripts: to określi postepowanie twojego NPC. Chcesz aby NPC chodził za graczem i reagował jak członek drużyny i nie lubił wroga podczas walki, itp.... Ten krok jest bardzo ważny: Widziałem niezaliczone mody rekrutacyjne przez zaniedbanie tego kroku z rezultatem, że NPC nie idzie za graczem i nie odwraca się do gracza w pewnych sytuacjach..
Podmień k_hen_blahblah na k_def_blahblah w takich polach:
ScriptAttacked --> k_hen_attacked01
ScriptDamaged --> k_hen_damage01
ScriptDialogue --> k_hen_dialogue01
ScriptEndRound --> k_hen_combend01
ScriptHeartbeat --> k_hen_heartbt01
ScriptonBlocked -->k_hen_blocked01
ScriptonNotice --> k_hen_percept01
ScriptSpawn --> k_hen_spawn01
Skasuj wpisy z innych plików skryptów.
i) idź do pola tag : wpisz tag npc, którego chcesz podmienić: podstawowym problemem jest używanie swoich tagów: nie rób tego- musisz użyć jednego z tagów poniżej- albo gra ,,wywali" w pewnych punktach jeżeli nie znajdzie oryginalnego NPC kiedy ten npc będzie musiał rozmawiać albo coś robić. Skończysz także z wielokrotnymi "kopiami" twojego NPC na Mrocznym Jastrzębiu, jeżeli użyjesz swojego tagu.
T3M4: T3M4
Canderous: Cand
Mission: Mission
Jolee: Jolee
Juhani: Juhani
HK-47: HK47
Bastila: Bastila
Carth: Carth
Zaalbar: Zaalbar
j) idź do polaTemplateResRef i wpisz swój Template ResRef dla twojego NPC: może to być new_npc (polecam użyć nazwy pozwalającej łatwo znaleźć twojego NPC, nie będzie to widoczne w grze ale gdy użyjesz nazwy hlf_f8fsrdfs będziesz miał problemy z zapamiętaniem...).
k) zapisz plik .utc z taką samą nazwą, jaką wpisałeś w polu Template ResRef i zamknij plik .utc
Krok 3. --> skrypt:
To jest skrypt, który powie grze o twoim NPC.
Otwórz notatnik i wklej ten skrypt:
Kod:
void main()
{
RemoveAvailableNPC(7);
AddAvailableNPCByTemplate(7, "p_dustil");
DelayCommand(1.5,ShowPartySelectionGUI());
}
W RemoveAvailableNPC, numer 7 podmieni t3m4, na innych npc, użyj jednego z wymienionych numerów slotów:
BASTILA = 0
CANDEROUS= 1
CARTH = 2
HK_47 = 3
JOLEE= 4
JUHANI= 5
MISSION= 6
T3_M4 = 7
ZAALBAR = 8
W AddAvailableNPCByTemplate(7, "p_dustil"), także podmień numer 7 na slot npc którego chcesz podmienić i podmień p_dustil przez TemplateResRef, którego użyłeś w pliku .utc.
Zapisz skrypt jako "recruit_npc.nss" (albo inne imie długie tak jak rozszerzenie .nss - dla dustla , skrypt jest : 'dus_recruit.nss' - ) i skompiluj swój skrypt.Dla instrukcji i pomocy przy kompilatorze, przeczytaj ten temat:
http://www.lucasforums.com/showthread.php?t=143681 KOMPILOWANIE SKRYPTÓW JEST OBOWIĄZKOWE. NIE MOŻESZ TEGO POMINĄĆ- zajmie ci to tylko 2-3 sekundy.
Jeden skompilowany, możesz teraz mieć nowy plik .ncs - dla przykładu, dustil posiada 'dus_recruit.ncs' .
Możesz też dać graczowi możliwość rekrutacji kogokolwiek poprzez dialog.Przykład:
Odpowiedzi gracza:
1. Dobrze, chodź ze mną, mam droida na wymianę (dołącz skrypt podmiany t3-m4) (i czemu nie dodać warunku dla gracza aby sprzedał pierwszy droida dla kupca - warunkowy skrypt- do zrobienia miejsca na Mrocznym Jastrzębiu)
2 .Dobrze, chodź ze mna, weźmiesz miejsce mojego niewolnika Wookiego (dołącz tu skrypt)
3. Dobrze, chodź ze mną, będziesz może bardziej użyteczny od tej 14-sto letniej dziewczyny dla tej ,,misji" (dołącz skrypt podmiany Mission)
itp...
Krok 4. --> dodaj skrypt do rozmowy:
Aby zrekrutować NPC, musisz dołączyć gdzieś skrypt aby to zadziałało. Najlepiej będzie dołączyć go do dialogu(dlg file).
Ten tutorial użyje tk102's DLGeditor - link jest dołączony na początku tutoriala.
Otwórz dlg w edytorze dialogów i wpisz dialog oraz dodaj skrypt. W polu gdzie jest napisane Script that fires when spoken, wpisz nazwę twojego skryptu ale bez rozszerzenia i w polu zatytułowany skrypt. Dla przykładu, w Dustil Modzie, skrypt rekrutujący jest dodany do wpisu nr. 104 pliku the kor39_utharwynn.dlg.
Krok 5. --> edycja wyglądu twojego npc:
Jeżeli chcesz, aby twój NPC mógł nosić zbroje i szaty, musisz zedytować plik wyglądu .2da przez Kotor Tool.
Sugeruję użyć tutoriala dotyczącego BIFów w T7's tutorialu dotyczącego edycji appearance.2da:
http://www.map-review.com/index.php...rial_view&id=28W każdym wydarzeniu, zobacz co zrobiłem w pliku appearance.2da dlaDustil moda: porównaj rząd 432 w oryginalnym pliku i w pliku dołączonym do downloadu mojego moda. Edytowałem kolumny z modela d texj więc mój rekrut może nosić zbroje.
Krok 6. --> zrób zdjęcie swojemu NPCtowi
Możesz teraz przetestować swojego moda. Włącz grę i sprawdź, zrekrutuj swojego npc, wybierz swojego nowego npc w ekranie wyboru drużyny and i zrób screenshota swojemu npc podczas grania i edytuj screenshota za pomocą jakiegoś programu takiego jak Photoshop, Paint Shop Pro czy GIMP (obsługują one format .tga) i stwórz kwadrat 64 lub 256 pixeli, dla przykładu, i zapisz w 36 bitach.
Zapisz swój obraz jako po_blahblah.tga ( dla dustila, użyłem po_dustil.tga)
Teraz, idź do pliku portretu .2da i dodaj nowy rząd:
Jeśli niewiesz, jak dodać nowy rząd do pliku .2da , spójrz w ten temat:
http://www.lucasforums.com/showthre...threadid=130290W kolumnie baseref , wpisz nazwę swojego pliku .tga (po_blahblah) bez rozszerzenia. Teraz, w kolumnach"appearance number", "appearance_f" "appearance_s" , wpisz numer rzędu z pliku .2da file odpowiadającemu wyglądowi twojego NPCta. Rasa, normalnie jest to 6 ale sprawdź pole "Race" w pliku .utc twojego NPCta . screenshot of portraits.2da modifications in the dustil mod
Zapisz i zamknij (przed zapisywaniem, klikając na inny rząd, stracisz swój nowy rząd).
Na końcu, otwórz plik.utc w GFF editor w polu zatytułowanym portraitID, i sprawdź numer rzędu, który dodałeś w pliku .2da dla przykładu 41).
Krok 7. --> eliminacja ,,bliźniaków":
Jeżeli rekrutujesz npc, na miejsce NPC, który jest już w grze, musisz użyć alternatywnego skryptu albo skończysz z bliźniakami. Jeśli spojrzysz na Krok1 tego tutoriala, zapamiętasz, że wypakowaliśmy oryginalny plik .utc i zmieniliśmy mu nazwę. Dla gry są dwoma, różnymi obiektami, również gdy mają jeden wygląd. Więc, kiedy zrekrutujesz NPC, oryginalny NPC dalej tam będzie i skończysz z ,,bliźniakami".Żeby tego uniknąć, możesz użyć tego skryptu aby zniszczyć oryginalnego NPC z tamtego miejsca: (spójrz na to w Dustil modzie, nie ma tam tego. Sprawiłem, że sobie wybiegł
Code:
void main()
{
ActionPauseConversation();
object oGoodbye;
oGoodbye = GetObjectByTag("my_npc_tag");
SetGlobalFadeOut(1.0, 0.5);
DelayCommand(1.0, DestroyObject(oGoodbye));
DelayCommand(1.0,SetGlobalFadeIn(0.7,0.0));
ActionResumeConversation();
}
oGoodbye = GetObjectByTag("my_npc_tag"); i podmień my_npc_tag przez tag oryginalnego NPC z gry. Aby zdobyć tag, otwórz plik .utc oryginalnego NPC z gry przez GFF Editor lub Kotor Tool (Dla Dustila plik .utc jest nazwany kor35_dustil.utc) i sprawdź pole tag. Nazwa pliku.utc nie zawsze odpowiada polu tag, więc zawsze to sprawdzaj.
Zapisz skrypt z rozszerzeniem .nss , skompiluj i dołącz do dialogu (rób to zawsze na końcu rozmowy z oryginalnym npc albo bedziesz miał problem gdy zniknie przed końcem rozmowy
.
Dodatkowo:
Co możesz zrobić, gdy mod rekrutacyjny nie jest skończony? Możesz dodać dźwięki, warunki zanim NPC zostanie zrekrutowany, questy poboczne, wpisy w dzienniku, punkty doświadczenia, itp. : ucz się innych tutoriali aby dodawać inne rzeczy.
Jest tylko jedna rzecz, którą do tego dodam: Jeżeli chcesz zrekrutować niestandartowego NPC i chcesz go gdzieś postawić, zanim go zrekrutujesz.
Potrzebujesz innego, niestandartowego pliku .utc. Wypakuj plik .utc z podobnego NPC z gry (nie wyglądzie a w charakterystyce- jest prościej zmienić numer wyglądu niż wszystkich statystyk). To nowy NPC dla gry, więc dajmy mu imie. Na cel tego tutorialu, nazwiemy go not_recruited_yet.utc
a) Zmień pole AppearanceType dla rzędu cyfr jaki chcesz w pliku appearance.2da
B) chodźmy niżej do pola conversation : wpisz nazwę niestadartowego pliku .dlg (bez rozszerzenia) . Dla przykładu, not_recruited_speaks
c) pole FactionID : ustaw je na 5 na neutralny (jeżeli ustawisz na 1 -wrogi - będziesz miał tylko walkę a nie dialog rekrutacyjny).
d) FirstName: To nazwa będąca nad głową NPC podczas gry. Opisane w 1 części tutoriala.
e) Last name: działa tak jak pierwsze imię (FirstName) ale to drugie imie (Last Name) twojego npc...
f) te skrypty definiują postępowanie NPC może być już ustawione jeżeli najpierw nie wypakowałes pliku .utc oryginalnego członka drużyny.
g) idź do pola tag: wpisz swój tag, dla przykładu ,,not_yet_recruited".
j) idź do pola TemplateResRef i wpisz swój Template ResRef: możesz użyć takiej nazwy, jak w tag - ,,not_yet_recruited".
k) zapisz i zamknij plik .utc
Spawnowanie: możesz użyć skryptu lub innej porady z tematu
http://www.lucasforums.com/showthread.php?t=143536Skrypt spawnujący: wklej w notatniku, dokonaj stosownych zmian, zapisz jako plik .nss i skompiluj:
Code:
void main()
{
//do a whereami cheat to get the coordinates of the location
//where you want the npc to spawn
float x=0.00f;
float y=0.00f;
float z=0.00f;
//unless you want something specific, forget about orientation
float r=0.0f;
vector vecNPC=Vector(x,y,z);
location locNPC=Location(vecNPC, r);
//insert your npc tag instead of my_creature_resref. Don't remove the quotes and do not exceed 16 chars.
object oNPC=CreateObject(OBJECT_TYPE_CREATURE,"my_creature_resref",locNPC);
object oPC=GetFirstPC();
AssignCommand(oNPC,ActionMoveToObject(oPC));
//replace my_dlg by the name of the dlg file the npc is supposed to use
AssignCommand(oNPC,ActionStartConversation(oPC,"my_dlg"));
}
Jeżeli nie wiesz jak użyć kodu ,,whereami": Idź do miejsca, w którym chcesz wyspawnować NPC razem z graczem, otwórz konsolę i wpisz ,,whereami" bez cudzysłowiów.Kliknij enter i pojawią się współrzędne (XYZ).Dołącz skrypt do obowiązkowej gałęzi rozmowy w tym samym module, w którym chcesz zespawnować NPC.Możesz także użyć modułu do wstawienia specjalnego wydarzenia aby wstawić swojego NPC (Zobacz:http://www.lucasforums.com/showthread.php?t=143536) - są tu także inne drogi do tego ale ta jest najprostsza.
Odzew zawsze doceniany.Jeżeli sądzisz, że jakiś punkt nie jest jasny albo, że o czymś zapomniałem, powiedz a dokończe tutorial.
Autor tutoriala - Darth333 (wnioskuję z forum lucas).
Autor tłumaczenia - MyName