Vytvoření vlastní palety v modulu
Poslední aktualizace: 16.03.2004
[Vlastní
tvorba - Ostatní témata]
Co je k tomu
potřeba?
- NWN Aurora Toolset
(přímo v adresáři hry NWN)
- NW HAK (V adresáři hry NWN, podadresář UTILS)
- ITP Tool Beta 8a (Final) [Stáhnout
z NWVAUTLu]
-
Encapsulated Resource File Editor 1.0.2.7 [Stáhnout
z NWVAUTLu]
- NWN Viewer lze používat
jako náhradu za program Encapsulated Resource
File Editor
Varování!
Budete-li přesně dbát pokynů na této stránce, nemělo by se nic zlého
stát. Přesto jsem nucen všechny z vás upozornit, že jakákoliv
chybička nebo neopatrnost může znamenat i zničení vaší práce za
několik předešlých hodin / dní / měsíců / let?.
1. Kdo nic nedělá, nic nezkazí :))))
2. Zálohovat, zálohovat, zálohovat!
3. Nemachruj, že víš všechno líp, než ostatní. Můžeš se spálit!
Proč chtít měnit
paletu v modulu?
Důvodů může být mnoho. Nejčastěji se s
tím setkáváme u větších a rozsáhlejších projektů, kdy v paletě
modulu máme tisíce nebo dokonce desetitisíce vlastních objektů a
stávající adresářová struktura palety nám už nestačí, protože je již
kvůli množství položek nepřehledná (např. máte 500 lektvarů a
potřebujeme je rozdělit na nápoje typu: Víno,
Pivo, Nealko,
Léčivé, Ostatní).
Proto budeme chtít přidat nový adresář Lektvary a do něj výše
jmenované podadresáře.
Bioware Neverwinter Nights Aurora
Toolset: obr.č.1 - Pohled na paletu Předmětů v záložce vlastní
(originál)
Vytvoření nových
záznamů v paletě
V této
kapitole se naučíme, jak vytvářet své vlastní podadresáře v paletě
modulu. Paleta je struktura adresářů podobná adresářové struktuře
souborů. Máme tam také nějaký kořen, větve, pod-větve a koncové
záznamy. Na obrázku výše vidíme paletu "předmětů" (koncových
objektů) v Toolsetu. Tato je samozřejmě prázdná, zatím v ní nejsou
žádné námi vytvořené "předměty". Plánujeme si vytvořit adresáře pro
novou sadu lektvarů. Lektvary budeme dělit na
Víno, Pivo,
Nealko, Léčivé,
Ostatní.
Máme několik možností, jak to provést:
1. Do stávajícího adresáře Lektvary
umístíme 5 výše zmiňovaných podadresářů
2. Vytvoříme zcela nový podadresář a do něj umístíme podadresáře.
První možnost
by vypadala možná estetičtěji, ale musím vás před ní varovat! Pokud
do jakéhokoliv adresáře umístíte podadresář, ztrácíte tak přístup ke
všem předmětům, které by v něm mohly být umístěny. To znamená, že i
i v budoucnu, pokud si stáhnete odněkud z internetu nové lektvary,
které jejich autor umístil do adresáře
Lektvary, tak nemáte šanci je získat. V horším případě to
může znamenat destabilitu modulu, časté padání serveru nebo Toolsetu.
Tuto možnost nedoporučuji používat z vlastních zkušeností. Pokud si
však dáte pozor a nebudete odnikud nic stahovat, není žádná
překážka, proč to tak neudělat.
Druhou možnost
naopak doporučuji všem. Vytvořte si úplně nový adresář a do něj
dávejte svoje podadresáře dle libosti. Má to zase několik výhod.
Nebudete si míchat svoje vlastní podadresáře s již existujícími a
budete tak v nich mít lepší pořádek, neuděláte nechtěnou chybu a
pokud zvolíte vhodný systém tvorby, tak budou i velmi přehledné.
Než začneme, co je potřeba
znát?
systém tvorby, tak budou i velmi
přehledné.
Soubory palety jsou označeny příponou
ITP. Je jich celkem 9 + soubory pro jednotlivé tilesety, ale těm se
teď věnovat nebudeme.
- creaturepal
- příšerky, potvory, postavičky
- doorpal - dveře
- encounterpal - náhodná setkání,
spawn
- itempal - předměty
- placeablepal - umístitelné objekty
- soundpal - zvuky
- storepal - obchody
- triggerpal - spouště
- waypointpal - kontrolní body
Tyto zmíněné soubory jsou obsaženy v
module a obsahují tzv. "vlastní paletu", kterou lze modifikovat.
Standardní paletu naopak modifikovat nelze (ve skutečnosti lze, ale
to bychom museli dělat drastický zásah do hry samotné a to by
nedělalo dobrotu).
Kterak získati prázdnou
paletu sobě?
Pokud chceme provádět jakékoliv úpravy
palety, musíme nejprve nějakým způsobem získat prázdnou
(neupravenou) paletu. Tu získáme následovně:
1. Otevřeme Toolset
2. Vytvoříme nový prázdný modul. Klasicky s jednou lokací a je
jedno, jak se bude jmenovat, třeba lektvary.mod.
3. Uložíme modul a zavřeme Toolset.
4. Otevřeme program ERF EDIT (Encapsulated
Resource File Editor 1.0.2.7)
5. V něm otevřeme právě vytvořený modul
lektvary.mod.
6. Objeví se tam několik nejrůznějších řádků se znaménkem
+ tři písmenka. Ty reprezentují
typy souborů uložených v modulu (např. ARE je pro lokace, UTI je pro
jednotlivé Items / Předměty uložené v paletě). My potřebujeme
otevřít položku ITP což jsou soubory s paletami.
7. Vybereme si soubor itempalcus.itp
tak, že na nej jednoduše klikneme myškou.
8. Nahoře, v menu Resources vybereme
položku Export.
9. Bude vyexportován soubor itempalcus.itp
do námi zvoleného adresáře (složky), třeba s názvem
Lektvary.
10. Otevřeme průzkumníka nebo jiného správce souborů.
11. Najdeme soubor itempalcus.itp v adresáři
Lektvary a přejmenujeme ho na itempal.itp.
Encapsulated Resource File Editor 1.0.2.7:
obr.č.2 - Exportování prázdné palety z modulu
Úpravy v paletě
Tak jsme si připravili naši budoucí
novou paletu pro náš modul lektvary.mod.
Teď nás čeká ta nejsložitější a nejtěžší část. Ještě pořád to můžete
vzdát, jestli se na to necítíte :)))). Budeme muset zeditovat
strukturu souboru ITP. K tomu slouží další prográmek ITP Tool.
Postup:
1. Otevřeme program
ITP Tool.
2. V něm si otevřeme soubor itempal.itp.
3. Zhrozíme se, protože něco takového jsme v celém svém životě ještě
neviděli :))).
4. Než půjdeme dál, tak si vysvětlíme pár dalších věcí.
ITP Tool Beta 8a: obr.č.3 - Jak
vypadá originál paleta pro Předměty
Program ITP Tool je spíše pro profíky
než laiky, takže dělat v něm není rozhodně jednoduché (alespoň ze
začátku) a je potřeba něco okolo toho znát. Zapomeňte na všechny ty
Wizardy, lišty s ikonkami, makra apod. Tady je to tvrdá ruční práce.
Program není ani blbosti-vzdorný, takže klidně uděláte chybu a ani o
ní nevíte. Nebojte se, i tohle se dá zvládnout (pokud jste ještě od
monitoru neutekli z jekotem a očima vytřeštěnýma hrůzou :))).
V této výše zobrazené struktuře to
vypadá, jako chaos, ale nebojte se, je v tom větší řád, než se zdá.
Vidíme zde poměrně složitou adresářovou strukturu. Žluté obdélníčky
s popiskou Element = 0 jsou adresáře.
Každý adresář má ještě další doplňující informace.
Element = 0 znamená pouze to, že se
jedná o adresář. UINT32 STRREF = 6732
je odkaz na název adresáře, který je obsažen v souboru
Dialog.tlk. Proč je to tak složité?
Proč se ten název adresáře nezadává přímo slovně, třeba "Lektvary"
???. Důvod je prostý. Hra Neverwinter Nights je multi-jazyčná.
Jednou je to v angličtině, jednou v češtině a jednou třeba v
korejštině. Soubor palety itempal.itp
je dělaný tak, aby fungoval bez ohledu na jazyk. Když si stáhnete z
internetu modul dělaný v čínštině, tak paletu po otevření budete mít
v češtině a o to tu jde. STRREF = 6732
je vlastně String Refference (odkaz na řetězec) na řádku 6732. Když
byste si zeditovali soubor Dialog.tlk
programem NWN Viewer,
tak tam naleznete příslušné slovo, např.
Zbroje. Pokud by tam nebyl tento řádek, pak by
Toolset nevěděl, co má dosadit jako
název. UINT32 je 32-bitová proměnná (To
jen pro informaci pro ty, kdo vědí, co to je. Ostatní tím zatěžovat
nebudu). Pak je tu řádek UINT8 ID = 53.
Tento řádek je identifikátorem jedinečnosti. Název adresáře se dá
změnit na cokoliv, ale tohle číslo je moc důležité. Pokud do
adresáře Zbroje (STRREF=6732) uložíte třeba deset nových brnění a pak
STRREF změníte z 6732 třeba na 1120,
tak se bude jmenovat jinak, třeba "Svitky" nebo jinak. Brnění v něm
však zůstanou, pouze adresář se bude jmenovat jinak. Pokud však změníte číslo UINT8
ID z 53 na 54, tak vytvoříte jiný adresář a ten původní
zanikne. Tím pádem ztratíte kontakt i s těmi deseti brněními a to na vždy!
Je jedno, že se nový adresář bude
taky jmenovat Brnění. Jediná možnost,
jak znovu získat těch deset brnění zpět je znovu vytvořit adresář s jedinečným ID =
53. Pak se přístup obnoví. Pokud se u některého adresáře
objeví ještě žlutý obdélníček s názvem LIST
LIST, tak to je odkaz na další podadresáře v tomto adresáři.
V praxi to znamená, že do tohoto adresáře nepůjde nic ukládat, pouze
do jeho podadresářů.
REKAPITULACE:
- Element = 0 - toto je adresář.
- UINT32 STRREF = 6732 - odkaz na název adresáře v aktuálním
jazyce uložený v souboru Dialog.tlk pod referenčním číslem 6732. Má
vyšší prioritu, než STRING DELETE_ME. Pokud jsou u adresáře obě
proměnné, tak je DELETE_ME ignorován.
- UINT8 ID = 53 - jedinečný identifikátor adresáře.
- LIST LIST - tento adresář má podadresáře (další řádky s
názvem Element = 0).
My se naučíme znát ještě další položky,
pro nás velmi důležité:
- STRING DELETE_ME = 'Název adresáře'
- v podstatě totéž, co UINT32 STRREF = číslo, ale
tímto na tvrdo určíme název adresáře bez ohledu na aktuální jazyk.
Je to náhrada tohoto řádku. Pozor, tento adresář nepůjde vidět v DM
klientovi!!! Mimo jiné to však lze taky používat na popsání originál
adresářů, abychom se v nich lépe vyznali.
- UINT8 TYPE = 2 - Dává se v případě, že se jedná o adresář,
který má podadresáře. Tento parametr je povinný pouze v případě, že
místo UINT32 používáte pro pojmenování adresáře STRING.
Postup při tvorbě:
Ještě, než začneme vytvářet nové
záznamy si musíme zjistit nejbližší volné ID. Je to důležité. Pokud
bychom měli dva záznamy se stejným ID, tak by fungoval jen jeden a
druhý ne. Např. v paletě Items, tedy v souboru
itempal.itp pro Neverwinter Nights
s datadisky Shadows of Undrentide a
Hordes of the Underdark verze 1.61 by
mělo platit, že prvním volným ID je 65. Dále je dobré vědět, že
proměnná ID (UINT8) je 8-bitová, což znamená, že máme možnosti pro
ID od 0 do 255. 0-64 je vypotřebovaných přímo hrou. My můžeme tedy
používat čísla 65-255. Adresáře s vyšším číslem se sice zobrazí, ale
nepůjde do nich nic ukládat.
Jak vytvořit nový adresář:
1.
Otevřeme ITP Tool
2. V něm otevřeme soubor itempal.itp.
3. V kořeni, úplně nahoře je Element
= 0 a pod ním je LIST MAIN
(hlavní seznam). V něm jsou další řádky Element
= 0 a tak dále. Klikneme na LIST
MAIN levým tlačítkem myši a tím ho vybereme.
ITP Tool Beta 8a: obr.č.4 - Výběr
LIST MAIN
4. Klikneme pravým tlačítkem myši na
vybraný LIST MAIN.
Otevře se nám menu.
5. Vybereme hned první položku Add New Element.
6. Otevře se dialogové okénko. Do prvního řádku s názvem
Element Item ID zadáme 0.
7. Do řádku Number of Element Data
Items zadáme 3 a klikneme OK.
ITP Tool Beta 8a: obr.č.5 -
Vytvoření nového Elementu
8. Otevře se další okýnko. Do prvního
řádku Data Item Type: vybereme
UINT8. Do druhého řádku
Data Item Name zadáme slovně
TYPE (velkými písmeny) a do řádku
Data Item Value zadáme číslo
2. Z toho nám vznikne řádek
UINT8 TYPE = 2.
ITP Tool Beta 8a: obr.č.6 - Zadávání
datových řádků Elementu
9. Otevře se další stejné okýnko se jménem Add
Element Data Item 2. Do prvního řádku vybereme položku
STRING, do druhého napíšeme velkými
písmeny DELETE_ME a do třetího napíšeme
slovo Lektvary. Háčky a čárky jsou
povoleny v případě, že máte nainstalovánu češtinu.
10. Pak se otevře ještě jedno stejné okénko. Do prvního řádku
vybereme slovo LIST, do druhého slovně
napíšeme velkými písmeny taky LIST.
Třetí necháme prázdný.
Právě jsme vytvořili první svůj
adresář. Kliknutím na něj ho rozbalíme. Je tam zase:
Element = 0
UINT8 TYPE = 2
STRING DELETE_ME = 'Lektvary'
LIST
LIST
Klikneme pravým tlačítkem myši na
LIST LIST a postupujeme stejně:
1. Vybereme Add
New Element.
2. Do prvního řádku zadáme opět 0.
3. Teď pozor, změna! Do druhého řádku zadáme 2. Pokud zadáte
3, tak to můžete smazat, protože jste to právě pokonili. Takže
dvojku!
4. V prvním okýnku zadáte opět UINT8,
ale místo TYPE zadáte tentokrát slovo
ID. Jako hodnotu třetího řádku zadáte
číslo 65. (Vzpomeňte si, jak jsme si
řekli, že první volné číslo je 65. Příště zadáme 66, 67 atd...).
5. Do druhého okýnka zadejte na první řádek
STRING, na druhý opět
DELETE_ME a na třetí slovo
Víno.
Teď jsme vytvořili první podadresář:
Element = 0
UINT ID = 65
STRING DELETE_ME = 'Víno'
Stejným způsobem si vytvoříme
podadresář Léčivé, Nealko, Ostatní, Pivo.
ITP Tool Beta 8a: obr.č.7 - Jak to
má správně vypadat
Vytvoření hak souboru
Abychom mohli používat námi
modifikovanou paletu, musíme:
a) umístit ji do adresáře Override v
adresáři hry
b) nebo ji umístit do hak souboru.
První možnost je jednodušší, ale daný
soubor nebude fungovat jen v našem module
lektvary.mod, ale i ve všech ostatních modulech, což by se
nám nemuselo zrovna líbit. Druhá možnost je malinko pracnější, ale
zase máme jistotu, že dané změny budou jen v našem novém module. Pro
vytvoření nového haku potřebujeme editor HAK Edit, který najdeme v
adresáři hry, v podadresáři UTILS. Soubor se jmenuje
nwhak.exe. Práce s ním je jednoduchá:
1. Nahoře v menu
File klikneme na New a vytvoří
se nám nový prázdný hak.
2. Přetáhneme myšičkou soubor itempal.itp
z průzkumníka nebo commandera do okna haku.
3. V menu File vybereme volbu
Save as (Uložít jako) a uložíme nový
hak se jménem lekvary.hak do adresáře
hry v podadresáři hak.
Bioware Hak Pak Editor:
obr.č.8 - Umístění nové palety do haku
Použití haku v modulu
1. Otevřeme opět Toolset.
2. Otevřeme v něm náš modul lektvary.mod.
3. V menu Úpravy vybereme volbu
Vlastnosti modulu.
4. V otevřeném okýnku vybereme záložku Vlastní
obsah.
5. V rozbalovací roletce vybereme hak lektvary.
6. Klikneme OK.
Modul lektvary.mod
se nám automaticky sestaví s nově připojeným hakem
lektvary.hak. V module si pak můžeme
zkontrolovat, jak vypadá výsledek:
Bioware Neverwinter Nights Aurora
Toolset: obr.č.9 - Jak vypadá originál paleta pro
Předměty v modulu
Pokud to vypadá takto, pak jste všechno
udělali, jak jste měli a všechno je v pořádku.
Problémy, které by mohly nastat:
1. Ve starších verzích NWN a SoU se
automaticky neaktualizovala paleta, takže nový adresář lektvary se
objevoval až po jejím ručním obnovení nebo po přidání nového
předmětu do palety.
2. Při kontrole všech adresářů se může přijít na to, že do některého
nejde vložit nový předmět. Důvod bývá v 99% případů ten, že máte
duplicitní ID.
Změna existujících
záznamů v paletě
Tohle je mnohem složitější, protože
program ITP Tool není uživatelský přátelský. Má špatnou správu
paměti.
Změna některých
položek
Pokud chcete změnit například položku
STRING DELETE_ME = 'Lektvary'
třeba na 'Nápoje':
1. Musíte na kliknout na řádek
STRING DELETE_ME nejprve levým
tlačítkem myši a tím ho vybrat
2. Pak na něj znovu kliknout, tentokrát pravým tlačítkem myši a vyvolat menu.
3. Vyberte položku Edit Current Item.
4. Změňte co potřebujete.
5. Klikněte OK.
6. Uložte soubor a ukončete program.
Jak jsem již psal, tak program ITP Tool
má velmi špatnou správu paměti. Pokud chcete měnit řetězce jako je
např. slovo Lektvary nebo Pivo, tak se musí změnit jen jedno jediné,
uložit, ukončit program a pak znovu otevřít a editovat další. Pokud
to neuděláte, tak program všechny vámi provedené změny zničí. V
praxi to vypadá tak, že všechna změněná slova se přepíší posledním
vámi vloženým. Pokud byste chtěli měnit hodně věcí najednou, možná
se vyplatí všechny záznamy vymazat a začít je psát znovu, protože
tím odpadá nutnost ukládání, ukončování programu a opětovné
startování a vyhledávání příslušného řádku.
Tenhle program je bohužel jediný, co za
něco stál. Jiné jsou ještě horší. Pokud naleznete lepší způsob
editace ITP souborů, budu vám vděčný za zprávu.
Or-Horo
|