D2LoD Módy
cara01.gif
Hlavní stránka
Úvod
Informace o hotových módech
Linky
Fórum
Guest Book
cara01.gif
button04.jpg(6 kb)
*.txt
*.dll
*.DC6
button09.jpg(8 kb) Referenční tabulky cara01.gif
cara05.gif(25 kb)
planet01.gif(27 kb) button-wz.jpg(5 kb)
planet01.gif(27 kb) button-wz.jpg(5 kb)
planet01.gif(27 kb) button-wz.jpg(5 kb)
planet01.gif(27 kb) button-wz.jpg(5 kb)
Úvod||Zdrojové soubory||Software||První mód

Úvod do modmakingu



  Vítejte v Diablu 2, tak, jak ho chcete vy! Zahráli jste si už standardní hru dostatečně, realmy tak moc lagují, v tradech samí podvodníci. Možná jste si stáhli modifikovanou verzi Diabla a divili se, jak to někdo mohl takhle změnit. Teď byste si to také chtěli zkusit, ale jak? Kde začít?




red_d2sky.jpg(56 kb)





Zdrojové soubory

  Podívejte se do své složky diabla (defaultně C:\Program Files\Diablo II). Až doteď jste se asi zajímali jen o Game.exe. To se ale brzy změní, uvidíte :-). Soubory s příponou .exe (executable files) jsou aplikace. U programů (a her) je vždy nějaký (nebo více) *.exe souborů, které nám aplikaci spustí. U Diabla máme takové soubory 4: BNUpdate.exe, D2VidTst.exe, Diablo II.exe a Game.exe.

  Ale BNUpdate slouží jen ke stažení patche a D2VidTst nám otestuje, jestli je na GeForce 6800Ultra čtyři roky stará hra spustitelná :-). Zajímají nás tedy spíše zbylé dva soubory. Když jeden z nich zapnete, procesor si jejich zdrojový kód přeloží do svého srozumitelného jazyka (samé 0 a 1) a už jede.

  Protože je ale Diablo 2 docela komplexní hra, mít všechen kód v jednom spouštěči by nebylo moc dobré. Pro rozdělení funkcí má D2 své dynamické knihovny - to jsou ty soubory s příponou .dll. Game.exe má sice také pěkných pár tisíců řádků, ale většina funkcí je stejně kryta v *.dll. Všechny knihovny tady vyjmenovávat nebudu, protože to zatím vůbec nepotřebujeme, a když už je budeme chtít měnit, tak nás stejně budou zajímat jen tyto: D2Common.dll, D2Client.dll a D2Game.dll.

  OK, dejme tomu, že máme kompletně napsané Diablo. Kde jsou ale všechny ty grafiky lokací, obrázky předmětů, názvy unikátů, statistky monster atd.? Ty jsou uložené v archivech. A nejen v nějakých obyčejných, Blizzard si vytvořil svoje vlastní. Jsou to *.MPQ archivy. Docela dlouhou dobu nebyl způsob, jak se do těch archivů podívat, ale vždycky se nakonec najde nějaký hacker, který to prolomí.. Nejinak to bylo u MPQ archivů.

  MPQ archivy v sobě dále obsahují spousty souborů, kromě všemožné grafiky & hudby jsou tam i textové soubory - to proto, že se tak snadněji upravují, než kdyby se měl zase měnit celý zdroják.

Tady je stručná tabulka, co který archiv Diabla obsahuje:


d2char.mpq pro Diablo II - animace charakterů
d2data.mpq pro Diablo II - vše ostatní
d2exp.mpq *.txt, zvuk. efekty a animace pro LOD
d2music.mpq pro Diablo II - hudba a blizzardí loga
d2speech.mpq pro Diablo II - nadabování postav a NPC
d2xtalk.mpq nadabování postav a NPC pro LOD
d2sfx.mpq pro Diablo II - zvuk. efekty
d2video.mpq pro Diablo II - akt videa
d2xmusic.mpq hudba pro LOD
d2xvideo.mpq videa pro LOD
patch_D2.mpq naprosto veškeré změny přinesené patchem (není u D2 v 1.00 a LOD v 1.07)



A teď tabulka souborů, které jsou v archivech:

txt 1.databáze pro statické herní informace / 2.popisné soubory, které nejsou hrou používány
bin hrou zkompilované txt soubory, které hra používá za běhu (není možné je přímo editovat)
cof kontrolní soubory animací
dc6 obrázky předmětů, pozadí invu, trade a další statické obrázky
dcc většina animací (postav, monster, NPC ale i skillů, co mají nějakou střelu (missile)
ds1 mapové soubory použité pro definici oblastí a umístění objektů (také superunikátních monster)
dt1 podlahy, zdi atd., ze kterých se skládá výsledná mapa
tbl nápisy ve hře (pro překlad D2 do jiného jazyka se mění právě tbl soubor)
wav zvuky, hudba, dabing
dat D2 palety, použité pro konvertování dc6 & dcc



Tools - naše "nářadí"

Než můžete začít, musíte si nejprve sehnat software, se kterým to budete dělat. Nebojte, software udělaný speciálně pro diablo obyčejně bývá velmi jednoduchý a moc toho neumí - ale dost na tolik, co je potřeba.
Odkazy na všechny potřebné prográmky jsou v links.
  Nejprve je to určitě MPQ prohlížeč. Na PK jsou dva různé: MPQ View a Win MPQ. Samotný prohlížeč ale nestačí, je potřeba mít seznam všech souborů a ten pak v prohlížeči načíst (=datafile).

  Tabulkový editor - na editování .txt souborů. Txt soubory v diablu totiž nejsou ani tak textové soubory, jako spíše tabulky - můžete použít i MS Excel, ale ten si s nimi nerozumí úplně ideálně, např. rád vymazává nuly v posledním sloupci některých souborů atd., nejlepší volba je AFJ Sheet Edit (verze 0.6 má několik bugů, lepší je stále 0.55b).

  Editor nápisů (strings) - pro změnu nápisů ve hře, dobrý je AFJ String Table Edit.

  MPQ 2K - slouží k vkládání souborů do mpq archivů. MPQ View umí soubory z archivu pouze extrahovat, ale jestli máte Win MPQ, tak ten už umí rovnou vkládat. Zdá se mi ale, že velikost archivu po vložení přes Win MPQ někdy záhadně příliš naroste, takže si ukážeme jak soubory vkládat "ručně" přes MPQ 2k.




Náš první mód

g-thum-keys.jpg(4 kb)

  Náš první úkol bude velmi jasný: zvýšit maximální počet klíčů v jednom svazku. Běžně můžeme do svazku narvat jen dvanáct klíčů, což se třeba v Durance of Hate dá vypotřebovat při jediném runu. My si to množství zvýšíme na 50, abychom pořád neběhali do města.

  Stáhněte a spusťte MPQ View. V menu File máme dvě Open tlačítka; Open datafile a Open archive. Nejprve zmáčkneme open datafile a najdeme si na disku náš datafile. Pozn.: při dalších spuštěních MPQV už si program tento datafile bude pamatovat (jen kdybyste změnili umístění toho datafile, tak byste ho museli načíst znovu).
  Potom už můžete otevřít archiv. Klikněte na Open archive a najděte ve složce diablika Patch_D2.mpq. Ještě předtím si ale udělejte zálohu souboru Patch_d2.mpq, udělejte si zvláštní složku, kam si nahrajete originální.
  Za chvíli se obsah archivu zobrazí. Naše potřebně txt soubory jsou uloženy v archivu v data\global\excel (v D2 vždy znamená, že složka global obsahuje "globální" data - ta, co jsou společná pro všechny jazykové verze, a excel jako že se jedná o tabulky). Najděte soubor Misc.txt, klikněte na save a vyberte, kam chcete soubor uložit. Pak můžete MPQ View zavřít.

mpqv01.jpg(28 kb)


  Otevřete si AFJ Sheet a v něm misc.txt (File > Open). Pak běžte do Edit > Options a zde kdyžtak zaškrtněte tahle pole: Fix First Column (sloupec) a Row (řádek) a Resize Columns on Load. To 1. znamená, že 1. sloupec a řádek bude uzamčený, needitovatelný, ale zase když budete scrollovat, tak ho stále uvidíte (znovu odemknout můžete pomocí Alt + 1 a Alt + ), resize nám hned po otevření dokumentu rozšíří sloupce podle potřeby.
  Najděte sloupec s názvem Max Stack. Max Stack určuje, kolik je maximální limit věcí v jednom svazku. Teď scrolněte dolů k řádku Skeleton Key. Skeleton Key je klíč. Jak to.. když ve hře vidím jenom Key? Zapamatujte si, že názvy zde nemusí odpovídat jejich nápisu ve hře. O tom, jak přesně to funguje, si povíme až o něco později. Najděte místo, kde se maxstack protíná se skeleton key, bude tam 12. Prostě to přepište na 50.



  Stejným způsobem můžete také třeba zvýšit počet svitků v jedné teleportační/identifikiční knize. Můžete dát jaké číslo chcete, ale ne zas úplně. Max stacky je hard-coded (na pevno zakódována v .dll) na (2^9)-1, což je 511. Takže vyšší číslo nejde (myslim ale že to úplně stačí).  

Jak to rozběhat

Zatím nám naše změna není moc platná, protože hra při běhu vůbec nepoužívá txt soubory, ale jejich zkompilované bin verze. Potřebujeme tedy vytvořit soubor Misc.bin. K tomu budeme používat direct txt metodu.
  Direct txt znamená, že hru "donutíme", aby databáze četla z txt souborů (tedy z těch, které tam jsou, ty chybějící bude stále číst z bin). Při tom vytvoří kompletní sadu všech *.bin souborů (v LOD 1.10 je to něco okolo 90 souborů).
  Udělejte si na plochu zástupce Game.exe (nikoliv Diablo_ii.exe). Pravé tlačítko > Vlastnosti > pole Cíl. Za cestu napište -direct -txt (příklad celé cesty: C:\Games\Diablo 2\Game.exe -direct -txt - a nijak jinak, v tomhle se často dělá chyba). Teď už hra bude fungovat v -direct -txt režimu.
  Běžte do složky s D2 a v ní vytvořte složku s názvem data, v ní složku global a v ní excel. Sem nahrajte svůj pozměněný misc.txt. Potom už zapněte D2 s pozměněným (direct tx) Game.exe . Skuste si koupit pár klíčů a pokud jste vše udělali správně, tak jich bude více :).
  D2 zase vypněte a podívejte do složky D2 - skutečně tam bude spoustu *.bin souborů. Ještě je nemažte, do složy, kde máte Misc.txt, si zkopírujte i Misc.bin.

  

MPQ 2K

Než může MPQ 2K fungovat, musíme si vytvořit pár podpůrných souborů. Je to totiž DOSový program, takže ve windowsech přímo nejede. Když ho zapnete, tak se jen na okamžik ukáže DOSoé okno. Stačí napsat pár jednoduchých skriptů.
  Otevřete si Notepad; oba naše soubory budou vlastně jen textové soubory. Uložte soubor jako MPQLoad.txt a napište do něj tohle:
O patch_D2.mpq
a misc.txt data\global\excel\misc.txt
a misc.bin data\global\excel\misc.bin
C patch_D2.mpq
Ujistěte se, že jste použili obrácené lomítko "\", v DOSu totiž musíte psát přesně a "/" znamená něco jiného než "\". Stejně tak si dávejte bacha na velká a malá písmena, když napíšete "o" místo "O", tak bude archiv otevřen jen pro čtení, což nám k ničemu nebude.
  Založte si nový soubor, který pojmenujte jako RunMPQ2K.bat. Musíte ale nahradit "textové dokumenty" za "všechny soubory", jinak to notepad přejmenuje na RunMPQ2K.bat.txt. Sem napíšete jen jediný řádek:
mpq2k s MPQLoad.txt
Teď už nám to v podstatě funguje, jen uděláme drobno změnu v bat souboru (není úplně třeba, ale raději RunMPQ2K.bat změňte na tohle):
@echo off
mpq2k s MPQLoad.txt > MPQLoad_Log.txt
type MPQLoad_Log.txt | more
pause
  Takže už můžeme zabalovat, seznam všech souborů, které musí být ve složce s MPQ2k:
Patch_D2.mpq (ještě se ujistěte, že máte zálohu), Misc.txt a Misc.bin, skriptový a batch soubor a 4 soubory od MPQ2k: mpq2k.exe, staredit.exe, storm.dll a lmpqapi.dll.


  Změněný Patch_d2.mpq nahrajte do své složky s D2 a jako obvykle zapněte (normálně, bez -direct -txt). Jestlí můžete mít více jak 12 klíčů, tak gratz - máte svůj první mód!