Vytvoření vlastní palety v modulu

Co je k tomu potřeba?

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?.

  • Kdo nic nedělá, nic nezkazí :))))
  • Zálohovat, zálohovat, zálohovat!
  • 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:

  • Do stávajícího adresáře Lektvary umístíme 5 výše zmiňovaných podadresářů.
  • 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?

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ě:

  • Otevřeme Toolset
  • Vytvoříme nový prázdný modul. Klasicky s jednou lokací a je jedno, jak se bude jmenovat, třeba lektvary.mod.
  • Uložíme modul a zavřeme Toolset.
  • Otevřeme program ERF EDIT (Encapsulated Resource File Editor 1.0.2.7).
  • V něm otevřeme právě vytvořený modul lektvary.mod.
  • 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.
  • Vybereme si soubor itempalcus.itp tak, že na nej jednoduše klikneme myškou.
  • Nahoře, v menu Resources vybereme položku Export.
  • Bude vyexportován soubor itempalcus.itp do námi zvoleného adresáře (složky), třeba s názvem Lektvary.
  • Otevřeme průzkumníka nebo jiného správce souborů.
  • 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:

  • Otevřeme program ITP Tool.
  • V něm si otevřeme soubor itempal.itp.
  • Zhrozíme se, protože něco takového jsme v celém svém životě ještě neviděli :))).
  • 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ář:

  • Otevřeme ITP Tool
  • V něm otevřeme soubor itempal.itp.
  • 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
  • Klikneme pravým tlačítkem myši na vybraný LIST MAIN. Otevře se nám menu.
  • Vybereme hned první položku Add New Element.
  • Otevře se dialogové okénko. Do prvního řádku s názvem Element Item ID zadáme 0.
  • Do řádku Number of Element Data Items zadáme 3 a klikneme OK.
ITP Tool Beta 8a: obr.č.5 – Vytvoření nového Elementu
  • 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
  • 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.
  • 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ě:
  • Vybereme Add New Element.
  • Do prvního řádku zadáme opět 0.
  • 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!
  • 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…).
  • 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á:

  • Nahoře v menu File klikneme na New a vytvoří se nám nový prázdný hak.
  • Přetáhneme myšičkou soubor itempal.itp z průzkumníka nebo commandera do okna haku.
  • 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

  • Otevřeme opět Toolset.
  • Otevřeme v něm náš modul lektvary.mod.
  • V menu Úpravy vybereme volbu Vlastnosti modulu.
  • V otevřeném okýnku vybereme záložku Vlastní obsah.
  • V rozbalovací roletce vybereme hak lektvary.
  • 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:

  • 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.
  • 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‘:

  • Musíte na kliknout na řádek STRING DELETE_ME nejprve levým tlačítkem myši a tím ho vybrat.
  • Pak na něj znovu kliknout, tentokrát pravým tlačítkem myši a vyvolat menu.
  • Vyberte položku Edit Current Item.
  • Změňte co potřebujete.
  • Klikněte OK.
  • 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

One response on “Vytvoření vlastní palety v modulu

Napsat komentář