LighT Team

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Para quem ama MMORPG, não deixe de visitar este fórum, completo em conteúdo e quem quer adquirir servidores de MuOnline LighT Team


    [Tutorial] Adicionando Novos Mapas na versão 97D

    Motto
    Motto
    Fundador
    Fundador


    Mensagens : 27
    Data de inscrição : 30/07/2009
    Idade : 30
    Localização : Piracicaba

    [Tutorial] Adicionando Novos Mapas na versão 97D Empty [Tutorial] Adicionando Novos Mapas na versão 97D

    Mensagem  Motto Sex Jul 31, 2009 1:15 am

    [Ferramentas Necessarias]

    [URL="http://www.ollydbg.de/odbg110.zip"]OllyDbg[/URL]
    GameServer versão 97d (ou semelhantes) unpacked
    Compilador

    [Tutorial]
    1° Abra o OllyDbg, clique no menu, Open > File e selecione o GameServer.

    2° Mudando o limite dos mapas:
    Procure:
    00489489 |. 68 711C4000 PUSH GameServ.00401C71 ; Entry address
    0048948E |. 6A 11 PUSH 11
    00489490 |. 68 68DB0400 PUSH 4DB68

    0047C7CF |. /7C 06 JL SHORT GameServ.0047C7D7
    0047C7D1 |. |837D FC 11 CMP [LOCAL.1],11
    0047C7D5 |. |7C 0A JL SHORT GameServ.0047C7E1

    0047C7F9 |. /7C 06 JL SHORT GameServ.0047C801
    0047C7FB |. |837D F8 11 CMP [LOCAL.2],11
    0047C7FF |. |7C 0A JL SHORT GameServ.0047C80B

    00473348 |. 8955 FC |MOV [LOCAL.1],EDX
    0047334B |> 837D FC 11 CMP [LOCAL.1],11
    0047334F |. 7D 16 |JGE SHORT GameServ.00473367

    Troque todos os valores [color:cb6e="Yellow"]11, dos codigos citados acima, para [color:cb6e="Yellow"]19, e o limite ficara [color:cb6e="Yellow"]25, pois no Hex 19 = 25.

    3° Mudando o limite dos mapas II:

    0044377D |. /7C 06 JL SHORT GameServ.00443785
    0044377F |. |837D 08 10 CMP [ARG.1],10
    00443783 |. |7E 04 JLE SHORT GameServ.00443789

    0045C61C |. 33C9 XOR ECX,ECX
    0045C61E |. 83F8 10 CMP EAX,10
    0045C621 |. 0F9EC1 SETLE CL

    0045BA59 |. C745 FC 00000000 MOV [LOCAL.1],0
    0045BA60 |. 837D 0C 10 CMP [ARG.2],10
    0045BA64 |. 7E 29 JLE SHORT GameServ.0045BA8F

    Troque todos os valores [color:cb6e="Yellow"]10, dos codigos citados acima, para [color:cb6e="Yellow"]18.

    CMP [ARG.1],[color:cb6e="Yellow"]10 || CMP EAX,[color:cb6e="Yellow"]10 || CMP [ARG.2],[color:cb6e="Yellow"]10

    4° O mapa não tem drops, por isso agora precisa remover o limite dos drops.

    00409F86 |. /74 4A JE SHORT GameServ.00409FD2

    004188EE |. /75 49 JNZ SHORT GameServ.00418939

    00444ED7 |. 74 53 JE SHORT GameServ.00444F2C

    Mude todos para JMP.

    [color:cb6e="Yellow"]JE SHORT || J[color:cb6e="Yellow"]NZ SHORT || [color:cb6e="Yellow"]JE SHORT

    5° Agora vamos adicionar o respawn nos novos mapas, se um monstro morrer ele renasce novamente.

    00472F7F |. /75 4C |JNZ SHORT GameServ.00472FCD

    Mude para JMP.

    JNZ SHORT

    6° No offset 00473371 escreva:

    00473371 83F8 01 CMP EAX,1
    00473374 75 05 JNZ SHORT 0047337B
    00473376 ^ E9 06FCFFFF JMP 00472F81
    0047337B 83F8 12 CMP EAX,12
    0047337E 75 05 JNZ SHORT 00473385
    00473380 ^ E9 FCFBFFFF JMP 00472F81
    00473385 83F8 13 CMP EAX,13
    00473388 ^ 0F85 3FFCFFFF JNZ 00472FCD
    0047338E ^ E9 EEFBFFFF JMP 00472F81

    [URL="https://2img.net/r/ihimizer/img530/1919/45389979gx3.gif"]Imagem de exemplo[/URL]

    7° Agora vamos fazer uma dll para ler os novos mapas:

    mapas.cpp
    #include "mapas.h"

    void LoadMaps()
    {
    LoadMap("..\\data\\Terrain19.att",18);
    LoadMap("..\\data\\Terrain20.att",19);
    LoadMap("..\\data\\Terrain21.att",20);
    LoadMap("..\\data\\Terrain22.att",21);
    LoadMap("..\\data\\Terrain23.att",22);
    LoadMap("..\\data\\Terrain24.att",23);
    LoadMap("..\\data\\Terrain25.att",24);
    }

    __declspec (naked) void LoadMap (char*mapname, DWORD mapnr)
    {
    _asm
    {
    PUSH EBP
    MOV EBP, ESP
    SUB ESP, 4
    MOV ECX, mapnr
    IMUL ECX, ECX, 0x4DB68
    ADD ECX, 0x6354C78
    MOV EDX, 0x402225
    CALL EDX

    MOV EAX, mapname
    PUSH EAX
    MOV ECX, mapnr
    IMUL ECX, ECX, 0x4DB68
    ADD ECX, 0x6354C78
    MOV EDX, 0x401FC3
    CALL EDX

    MOV ESP, EBP
    POP EBP
    RETN
    }
    }[/PHP]

    mapas.h
    [PHP]#include <stdio.h>
    #include <windows.h>

    void LoadMaps();
    void LoadMap (char * mapname, DWORD mapnr);

    7° Agora e só você colocar o terrain do mapa na pasta data , lembrando que se vc colocou o limite 25 , você não poderá colocar terrains mais q 25 ex: Terrain26 , e etc.

    9° Não se esqueça de colocar o arquivo do mapa no patch do seu servidor.

    10º Lembrando que quando for adicionar pule 6 terrains do 12 , porque ambos são do BloodCastle =) , então vc pode começar pelo 18 , para garantir eu comecei do 19 ^^

    10º Se você adicionou Terrain19 , o número pra colocar spots e no gate será 18 , e o World no client será 19.

    [Creditos]
    Cahir (Tutorial Original da versão 1.00.18)
    Disconnect (Tutorial Inglês na CZF)
    Motto(LighT Team) (Modificações e achar offsets da dll para 97)

      Data/hora atual: Qui maio 16, 2024 1:57 am