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)
cara02.gif(8 kb)

Dll

Tady budou tutoriály na změnu *.dll knihoven Diabla. Pokud rozumíte assembly jazyku a tomu, jak funguje Diablo, rozhodně navštivte tohle: Seznam funkcí D2, něco se Vám z toho může hodit pro své vlastní objevy v kódu..

1.||2.

1. Změna počtu skillpointů za level

Náročnost: nízká až střední
Verze: 1.10 only
Autor: Ass

  Počet stat pointů, které dostanete za další level, se dá od verze 1.10 editovat velmi jednoduše v Charstats.txt. Z nějakého záhadného důvodu ale počet skill pointů za level txt editováním změnit nejde (i když obě věci jsou v kódu hned vedle sebe, nebyla by to skoro žádná práce navíc). Kód obstarávající levelování je v D2Game.dll.

  Nemusíte mít žádné znalosti s editováním hex kódu nebo assembleru, jenom se přesně držte návodu a neměl by být problém to rozchodit.

  1)Stáhněte si a spusťte XVI 32.
  2)Otevřete D2Game.dll (nejprve udělat zálohu!!).
  3)Dejte z hlavního toolbaru Adress > Goto (nebo rovnou ctrl+g). V Go Mode zaškrněte buď "relative down", nebo "absolute". V Go to zašrtněte hexadecimal a napište tuhle adresu: $4ED59. Pak už jen OK a xvi32 poskočí na tohle pole. Tady uvidíte tohle:
začátek na 4ED59:
6A 00 57 6A 05
to přepište na tohle:
E9 02 7D 0A 00
Dále skočte na F6A60, tam je kus prázdného místa, takže tam můžeme frknout náš nový kód:
začátek na F6A60:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (18 buněk)
nahraďte za
BA xx000000
0F AF D7
6A 00
52
6A 05
E9 EC 82 F5 FF >> kde "xx" je počet skillpointů.
takže např. "BA 02000000" a budete mít 2 SP za level.
  Mno - a to jsou veškeré změny. Na rozdíl od editování txt tohle nemusíte nikam zvlášť kopírovat, prostě do složky s D2 a zapněte D2 jako obvykle a skuste polevelit (pokud jste se někde trošku přepsali, tak si toho dost jednoduše všimnete, hra totiž zatuhne - v kódu musí být vše do puntíku přesně).



2. Cain si od vás nechá identifikaci vždy zaplatit!

Náročnost: střední
Verze: 1.10 only
Autor: AFJ666

deckardcain.gif(6 kb)
  Může to znít docela šíleně, ale ve skutečnosti to není špatný nápad - proč by vám měl chudák Cain identifikovat ty tuny věcí zadarmo? smich01.gif(106 b) Můžete to použít třeba tak, že identifikační scrolly budou v obchodě stát nějakých 200-300 gold, zatímco identifikace od Caina bude vždy za 100 (takže aby to bylo stále výhodné).

  Opět použijeme XVI 32 a d2game.dll. Běžte na 99D1B; celý originální kód starající se o cenu identifikace je takovýto:
Nalevo je hexadecimální offset a napravo jeho hodnota.

00099D1B | 56
00099D1C | E8 D5180500
00099D21 | 33C9
00099D23 | 8A4B 6D
00099D26 | 6A 00
00099D28 | 6A 04
00099D2A | 8B4488 10
00099D2E | 50
00099D2F | E8 E01B0500
00099D34 | 83F8 01
00099D37 | 0F84 49010000
00099D3D | 56
00099D3E | E8 B3180500
00099D43 | 33D2
00099D45 | 8A53 6D
00099D48 | 6A 01
00099D4A | 6A 04
00099D4C | 8B4490 10
00099D50 | 50
00099D51 | E8 BE1B0500
00099D56 | 83F8 01
00099D59 | 0F84 27010000
  My uděláme to, že na 99D1B nadefinujeme skok (jump, JMP) na 99D5F, a veškerý kód mezi tím "zneutralizujeme", příkazem NOP, který má v dll hexadec. hodnotu vždy 90.
00099D1B | EB 42 (v disassembleru by se zobrazilo tohle: JMP SHORT 00099D5F)
00099D1D | 90 (=NOP)
00099D1E | 90
00099D1F | 90
00099D20 | 90
00099D21 | 90
00099D22 | 90
00099D23 | 90
.
.
.
00099D5A | 90
00099D5B | 90
00099D5C | 90
00099D5D | 90
00099D5E | 90
00099D5F | 8D04BF
To by mělo stačit, aby si cain vždy nechal zaplatit. Teď změníme cainovo menu tak, aby to i vždy ukazovalo - stejně jako před splněním 3.questu v 1.aktu. To už se týká D2Client.dll.
starý kód:

00056A51 | 8B15 135DBB6F
00056A57 | 33F6
00056A59 | 56
00056A5A | 6A 04
00056A5C | 52
00056A5D | E8 8A450700
00056A62 | 85C0
00056A64 | 75 18
00056A66 | A1 135DBB6F
00056A6B | 6A 01
00056A6D | 6A 04
00056A6F | 50
00056A70 | E8 77450700
00056A75 | 85C0
00056A77 | 75 05
Změna bude ještě více bezbolestná, než minule pivko.gif(120 b).
00056A51 | EB 26 (=JMP SHORT 00056A79)
A teď vše od 56A53 až po 56A78 vyNOPujte (samé 90ky):
00056A53 | 90
.
.
.
00056A78 | 90
00056A79 | BE 01000000
No a to by mělo být vše!!