• Bem vindo à nossa comunidade - Quer se juntar ao resto dos nossos membros? Registre-se*Registros aprovados pela adminitração

[TUTORIAL]Mudar o Set dos NPCs e Mobs via Hex no Main

lucasxdd

Lord XPZ
Guia para mudar a aparência de NPCs (que usam sets) e mobs (por exemplo, cursed wizard em LT3) sem fazer qualquer uso de dll ou

edição de texturas, apenas codificando hex no Main (em caracteres viewport)

Obs.: funciona para todas as versões.

O principal objetivo é a mudança do Set do NPC Crossbow Guard

Requisitos necessários:

1. Ollydbg.

2. Win Calculator

3. Brain.exe

4. Hands.dll

Para este tópico você deve saber como calcular o ObjectId dos itens no main.exe.

Exemplo: calculo do ObjectID de "Lightning Sword"

ObjectID = Offset (valor localizado) + ItemdID (0*512+14 = 14 (0x0E))

Para o Offset = 0x285, ObjectID = 0x293

Exemplo: calculo do ItemID com ObjectID=0x293 e Offset=0x285, com 512 max de itens por tipo:

ItemId = ObjectId - Offset = 0x293 - 0x285 = 0x0E (14)

ItemType = ItemId / MaxItems = 14 / 512 = 0 (divisão por inteiro)

ItemIndex = ItemId % MaxItems = 14 % 512 = 14 (remainder of the integer division)

Se olhar no arquivo items.txt ou .bmd encontrará o tipo do item: Type = 0 e Index = 14 é Lightning Sword

1º. Inicie o OllyDBG e abra o Main.exe por ele

Obs.: deve calcular o objectid dos itens, por exemplo, vamos calcular do plate helm com offset 0x286:

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


7*512 + 9 = 3 593 (0xE09)

0xE09 + 0x286 = 0x108F (este)

2º. Clique com o botão direito na janela do main no ollydbg, escolha "search for" ~> "all constants" e digite objectid do plate helm (0x108F)

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


Deverá aparecer isso:

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


Pressione a tecla Enter em um primeiro comando MOV. Você deve ver algo como um conjunto de MOVs

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


3º. Clique com o botão direto e escolha "go to" ~> "Next procedure" em seguida, suba um pouco até:

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


4º. Suba até o início da tabela de índice e lembre-se do endereço do início

IndexTable = 0x00531A14

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


5º. Clique com o botão direto e escolha "go to" ~> "expresion", digite o endereço do parâmetro da tabela e pressione OK

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


6º. Você terá o início da tabela de transição.

Não esqueça de lembrar o endereço da tabela de transição.

SwitchTable = 0x005317CC

Pressione CTRL+G, e digite o endereço da tabela e pressione Ok

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


7º. Agora você irá para a transição. Lembre-se do valor no círculo vermelho iremos precisar "comando SUB = 1"

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


8º. Agora localize o ID do Crossbow do Guarda-NPC no arquivo monster.txt... Este é o 247 ou 0xF7.

Subtraia o valor do ID do item do valor do comando SUB

0xF7 - 1 = 0xF6

Localize o índice da tabela de índices:

IndexTable + 0xF6 = 0x00531A14 + 0xF6 = 0x00531B0A

Pressione CTRL+G e digite o resultado e pressione OK, se calculou certo então você deve ir direto para o índice da tabela

Lembre-se do índice = 0x77

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


9º. Calcule o endereço da transição:

SwitchTable + index*4 = 0x005317CC + 0x77*4 = 0x005317CC + 0x1DC = 0x005319A8

Pressione CTRL+G e digite o resultado e pressione OK

10º. Pressione a tecla Enter sobre o valor, onde irá ser redirecionado para depois do ultimo comando go-to (CTRL+G), Set do Crossbow

Guard

Em EBP-10 parece ser o ponteiro para a estrutura viewport

Em todo o caso:

+0x250 offset para capacetes; 0x108F - plate helm

+0x270 offset para peitoral; 0x128F - plate armor

+0x290 offset para calças; 0x148F - plate pants

+0x2B0 offset para luvas; 0x168F - plate gloves

+0x2D0 offset para botas; 0x188F - plate boots

+0x2F0 offset para mão direita; 0x0A91 - light crossbow

+0x310 offset para mão esquerda; 0x0A8D - bolt

Você terá que mudar esses valores (não mude os offsets somente os objectIds), para que o Guarda-NPC seja vestido com os desejar

Em seguida salve o Main.exe, clique com o botão direito e escolha "Copy to executable" ~> "All modifications, then save it"

Outro exemplo:

1º. Vamos localizar o Set do Malron:

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


Nos temos os offsets adicionais:

+0x252 offset - nível do capacete; 7 - +7

+0x272 offset - nível do peitoral;

+0x292 offset - nível da calça;

+0x2B2 offset - nível das luvas;

+0x2D2 offset - nível das botas;

+0x2F2 offset - nível da arma da mão direita; 8 - +8

2º. E mais, localize o Set do Elf Soldier, aqui está, porém não temos o comando MOV mas veremos dentro deste processo

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


3º. Este é maior que o Marlon

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


+0x330 offset - Wings;

+0xC offset - Scale; (cool thing, you can make mobs and npcs small like bugs, or big like, don't know who )

+0x145 offset - Action; action that is played when you meet npc or mob, but it's played only once

Então, assim pode-se mudar a aparência de alguns NPC (que usam sets) e mobs (por exemplo, cursed wizard em LT3) sem fazer qualquer uso

de dll ou edição de texturas, apenas codificando o hex no Main

Elf Soldier in Guardian + Angel Wings:

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


Guard in RD + bronze shield + one of the added swords:

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


Forcing all mobs and npcs to 1 model:

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


Chaos goblin asses:

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


- Big NPCs:

0xC - é um offset na estrutura, por exemplo em C++

struct BLABLA

{

int blabla1; //+0x0

int blabla2; //+0x4

int blabla3; //+0x8

int blabla4; //+0xC

};

Onde pode-se mudar a escala de tamanho do NPC Elf Soldier somente. Para outros NPCs existe uma função, que preenche este campo, de acordo com o tipo de NPC.

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


Mov [dword ds:eax+c], 3F800000

0x3f800000 - it's float 1.0, so scale field is represented as float.

change this value - and u'll change elf soldier scale

Créditos: Gembrid (RZ Int)

Offsets para v.1.04J Main 3D:

Crossbow guard - 00530595

Elf Soldier - 0052BA8A

Download dos Programas utilizados

OllyDbg

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


WinCauculator = Cauculadora do Windows

Brain.exe

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!


Hands.Dll

Por favor, Entrar ou Registrar para ver o conteúdo das URLs!
 
Editado por um moderador:

ubwcgelbr

Lord XPZ
bom tutorial mas ficaria interessant se postasse os link dos programas utilizado no tutorial.
 

lucasxdd

Lord XPZ
links postados
default_biggrin.png
 
Topo Bottom