Resultados 1 a 10 de 10
  1. #1
    Developer C++ romariols's Avatar
    Data de Ingresso
    Jun 2017
    Posts
    128
    Thanks Thanks Given 
    33
    Thanks Thanks Received 
    293
    Thanked in
    36 Posts
    Mencionado
    22 Post(s)
    País
    Brazil

    Main 1.0m (1.0.12) Com Item.bmd de 8 Mil Slots

    A um tempo eu venho trabalhando com este Main, aqui estou trazendo uma versão que eu uso para testes na liberação de um novo Item.bmd com 8000 slots, ele está 90% funcional, ainda não está concluído, mas pode servir para alguém que tenha interesse em fazer o mesmo, não irei disponibilizar os meus códigos completos por motivos pessoais, mas posso garantir que falta apenas algumas funções a serem refeitas, como a releitura das linhas do arquivo. Abaixo deixarei uma parte do código que está sendo trabalhado, uma decompilação parcial do Main feita por meio de um soft de decompilação está inclusa nos arquivos.

    Por enquanto eu tive que parar o desenvolvimento para fazer outras coisas mais urgente, isso pode ser de interesse apenas de desenvolvedores.


    UnlockSlot.h
    Código:
    char* __cdecl ReadyCustomSlot(unsigned int a1, int a2);
    
    #define MAX_SLOT_ITEM 8100
    #define SlotsX *(DWORD*)0x7CDCDF0
    #define SlotsY *(DWORD*)0x7CDCDE4
    #define Slot *(DWORD*)0x07CDCDF4;
    
    
    struct CUSTOM_SLOT
    {
        float    X;
        float    Y;
    };
    
    
    class CustomSlots
    {
    public:
        (void(*)    X);
        DWORD    Y;
    private:
        CUSTOM_SLOT MaxSlot[8100];
    };
    extern CustomSlots CustomSlot;
    UnlockSlot.cpp
    Código:
    size_t __cdecl UnlokFile(void* a1, size_t a2, size_t a3, FILE* a4){
        size_t v4;
    
    
        _lock_file(a4);
        v4 = fread(a1, a2, a3, a4);
        _unlock_file(a4);
        return v4;
    }
    
    
    char* __cdecl ReadyCustomSlot(unsigned int a1, int a2)
    {
        char* result; int v3; unsigned int v4; signed int v5; int v6; unsigned int v7; char* v8; unsigned int v9; bool v10;    char* v11;
        unsigned int v12; int v13; unsigned int v14; unsigned int v15; unsigned int v16; unsigned int v17; int v18;    void* v19; char* v20;
        signed int v21;    signed int v22;    int v23; int v24; int v25; char v26; result = *(char**)(a1 + 16); v3 = a2 - 4; v4 = (unsigned int)(a2 - *(DWORD*)(a1 + 12)) >> 15;
        v20 = &result[516 * v4 + 324]; v5 = *(DWORD*)(a2 - 4) - 1; v23 = *(DWORD*)(a2 - 4) - 1;
    
    
        CustomSlots CustomSlot;
    
    
        if (!(v5 & 1))
        {
            v6 = v5 + v3;
            v21 = *(DWORD*)(v5 + v3);
            v22 = *(DWORD*)(a2 - 8);
            v24 = v5 + v3;
    
    
            if (!(v21 & 1))
            {
                v7 = (v21 >> 4) - 1;
                if (v7 > 0x3F)
                    v7 = 63;
                if (*(DWORD*)(v6 + 4) == *(DWORD*)(v6 + 8))
                {
                    if (v7 >= 0x20)
                    {
                        v11 = &result[v7 + 4];
                        v12 = ~(0x80000000 >> (v7 - 32));
                        *(DWORD*)&result[4 * v4 + 196] &= v12;
                        v10 = (*v11)-- == 1;
                        if (v10)
                            *(DWORD*)(a1 + 4) &= v12;
                    }
                    else
                    {
                        v8 = &result[v7 + 4];
                        v9 = ~(0x80000000 >> v7);
                        *(DWORD*)&result[4 * v4 + 68] &= v9;
                        v10 = (*v8)-- == 1;
                        if (v10) *(DWORD*)a1 &= v9;
                    }
                    v13 = v23;
                    v6 = v24;
                }
                else
                {
                    v13 = v23;
                }
                v5 = v21 + v13;
                *(DWORD*)(*(DWORD*)(v6 + 8) + 4) = *(DWORD*)(v6 + 4);
                v23 = v5;
                *(DWORD*)(*(DWORD*)(v24 + 4) + 8) = *(DWORD*)(v24 + 8);
            }
            v14 = (v5 >> 4) - 1;
            if (v14 > 0x3F)
                v14 = 63;
            if (v22 & 1)
            {
                v15 = a1;
            }
            else
            {
                v25 = v3 - v22;
                v15 = (v22 >> 4) - 1;
                if (v15 > 0x3F)
                    v15 = 63;
                v23 = v22 + v5;
                v14 = ((v22 + v5) >> 4) - 1;
                if (v14 > 0x3F)
                    v14 = 63;
                if (v15 != v14)
                {
                    if (*(DWORD*)(v25 + 4) == *(DWORD*)(v25 + 8))
                    {
                        if (v15 >= 0x20)
                        {
                            v17 = ~(0x80000000 >> (v15 - 32));
                            *(DWORD*)&result[4 * v4 + 196] &= v17;
                            v10 = result[v15 + 4]-- == 1;
                            if (v10)
                                *(DWORD*)(a1 + 4) &= v17;
                        }
                        else
                        {
                            v16 = ~(0x80000000 >> v15);
                            *(DWORD*)&result[4 * v4 + 68] &= v16;
                            v10 = result[v15 + 4]-- == 1;
                            if (v10)
                                *(DWORD*)a1 &= v16;
                        }
                    }
                    *(DWORD*)(*(DWORD*)(v25 + 8) + 4) = *(DWORD*)(v25 + 4);
                    *(DWORD*)(*(DWORD*)(v25 + 4) + 8) = *(DWORD*)(v25 + 8);
                }
                v3 = v25;
            }
            if (v22 & 1 || v15 != v14)
            {
                v18 = (int)&v20[8 * v14];
                *(DWORD*)(v3 + 4) = *(DWORD*)&v20[8 * v14 + 4];
                *(DWORD*)(v3 + 8) = v18;
                *(DWORD*)(v18 + 4) = v3;
                *(DWORD*)(*(DWORD*)(v3 + 4) + 8) = v3;
                if (*(DWORD*)(v3 + 4) == *(DWORD*)(v3 + 8))
                {
                    v26 = result[v14 + 4];
                    result[v14 + 4] = v26 + 1;
                    if (v14 >= 0x20)
                    {
                        if (!v26)
                            *(DWORD*)(a1 + 4) |= 0x80000000 >> (v14 - 32);
                        *(DWORD*)&result[4 * v4 + 196] |= 0x80000000 >> (v14 - 32);
                    }
                    else
                    {
                        if (!v26)
                            *(DWORD*)a1 |= 0x80000000 >> v14;
                        *(DWORD*)&result[4 * v4 + 68] |= 0x80000000 >> v14;
                    }
                }
            }
            *(DWORD*)v3 = v23;    *(DWORD*)(v23 + v3 - 4) = v23;    result += 516 * v4 + 324;    v10 = *(DWORD*)v20 == 1; --* (DWORD*)result;
    
    
            if (v10)
            {
    
    
                DWORD CustomSlot = (SlotsX + SlotsY * 512);    DWORD CustomSlotX = SlotsX;    DWORD CustomSlotY = SlotsY;
    
    
                if (!CustomSlot) // Verifica espaço
                {
                    VirtualFree((LPVOID)(*((DWORD*)CustomSlotX + 3) + (CustomSlotY << 15)), 0x8000u, 0x4000u);
    
    
                    *((DWORD*)CustomSlotX + 2) |= 0x80000000 >> CustomSlotY;
                    *(DWORD*)(*((DWORD*)CustomSlotX + 4) + 4 * CustomSlotY + 196) = 0;
                    (BYTE*)(*((DWORD*)CustomSlotX + 4) + 67);
                    v19 = (BYTE*)(*((DWORD*)CustomSlotX));
    
    
                    if (!*(BYTE*)(*((DWORD*)CustomSlotX + 4) + 67))
                    {
                        *((DWORD*)CustomSlotX + 1) &= 0xFFFFFFFE;
                        v19 = (BYTE*)(*((DWORD*)CustomSlotX));
                    }
                    if (*((DWORD*)v19 + 2) == -1)
                    {
                        VirtualFree(*((LPVOID*)v19 + 3), 0, 0x8000u);
                        //HeapFree(hHeap, 0, *((LPVOID*)CustomSlotX + 4));
                        //memcpy((BYTE*)(*((DWORD*)CustomSlotX)), (char*)CustomSlotX + 20, (size_t)lp + 20 * Slot - (DWORD)CustomSlotX - 20);
                        ((void(*)())0x7CDCDF4)();
                        if (a1 > (unsigned int)CustomSlotX)
                            a1 -= 20;
                        //dword_7CDCDE8 = (int)lp;
                    }
                }
                result = (char*)a1;
                CustomSlotY = v4;
                //CustomSlotX = (void*)a1;
            }
        }
        return result;
    }
    [Somente membros podem ver os links. ]
    Last edited by romariols; 11/06/2020 at 02:39 AM.

  2. The Following 4 Users Say Thank You to romariols For This Useful Post:


  3. #2
    Uploader Goten's Avatar

    Data de Ingresso
    Feb 2020
    Posts
    239
    Thanks Thanks Given 
    94
    Thanks Thanks Received 
    3,842
    Thanked in
    177 Posts
    Mencionado
    7 Post(s)
    País
    Brazil
    Muito bom @[Somente membros podem ver os links. ] espero que você consiga resolver seus problemas pessoais e retorne o mais breve possível com seu desenvolvimento

  4. #3
    Iniciante benjitrench's Avatar
    Data de Ingresso
    Aug 2020
    Posts
    1
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Mencionado
    0 Post(s)
    País
    Chile
    @[Somente membros podem ver os links. ]
    Bad Link :C
    Last edited by Mentor; 26/08/2020 at 03:34 PM. Razão: menção

  5. #4
    Developer C++ LaMO's Avatar


    Data de Ingresso
    Sep 2015
    Posts
    692
    Thanks Thanks Given 
    206
    Thanks Thanks Received 
    766
    Thanked in
    124 Posts
    Mencionado
    80 Post(s)
    MEU HUMOR
    Tired
    Citação Originally Posted by romariols Ver Post
    A um tempo eu venho trabalhando com este Main, aqui estou trazendo uma versão que eu uso para testes na liberação de um novo Item.bmd com 8000 slots, ele está 90% funcional, ainda não está concluído, mas pode servir para alguém que tenha interesse em fazer o mesmo, não irei disponibilizar os meus códigos completos por motivos pessoais, mas posso garantir que falta apenas algumas funções a serem refeitas, como a releitura das linhas do arquivo. Abaixo deixarei uma parte do código que está sendo trabalhado, uma decompilação parcial do Main feita por meio de um soft de decompilação está inclusa nos arquivos.

    Por enquanto eu tive que parar o desenvolvimento para fazer outras coisas mais urgente, isso pode ser de interesse apenas de desenvolvedores.


    UnlockSlot.h
    Código:
    char* __cdecl ReadyCustomSlot(unsigned int a1, int a2);
    
    #define MAX_SLOT_ITEM 8100
    #define SlotsX *(DWORD*)0x7CDCDF0
    #define SlotsY *(DWORD*)0x7CDCDE4
    #define Slot *(DWORD*)0x07CDCDF4;
    
    
    struct CUSTOM_SLOT
    {
        float    X;
        float    Y;
    };
    
    
    class CustomSlots
    {
    public:
        (void(*)    X);
        DWORD    Y;
    private:
        CUSTOM_SLOT MaxSlot[8100];
    };
    extern CustomSlots CustomSlot;
    UnlockSlot.cpp
    Código:
    size_t __cdecl UnlokFile(void* a1, size_t a2, size_t a3, FILE* a4){
        size_t v4;
    
    
        _lock_file(a4);
        v4 = fread(a1, a2, a3, a4);
        _unlock_file(a4);
        return v4;
    }
    
    
    char* __cdecl ReadyCustomSlot(unsigned int a1, int a2)
    {
        char* result; int v3; unsigned int v4; signed int v5; int v6; unsigned int v7; char* v8; unsigned int v9; bool v10;    char* v11;
        unsigned int v12; int v13; unsigned int v14; unsigned int v15; unsigned int v16; unsigned int v17; int v18;    void* v19; char* v20;
        signed int v21;    signed int v22;    int v23; int v24; int v25; char v26; result = *(char**)(a1 + 16); v3 = a2 - 4; v4 = (unsigned int)(a2 - *(DWORD*)(a1 + 12)) >> 15;
        v20 = &result[516 * v4 + 324]; v5 = *(DWORD*)(a2 - 4) - 1; v23 = *(DWORD*)(a2 - 4) - 1;
    
    
        CustomSlots CustomSlot;
    
    
        if (!(v5 & 1))
        {
            v6 = v5 + v3;
            v21 = *(DWORD*)(v5 + v3);
            v22 = *(DWORD*)(a2 - 8);
            v24 = v5 + v3;
    
    
            if (!(v21 & 1))
            {
                v7 = (v21 >> 4) - 1;
                if (v7 > 0x3F)
                    v7 = 63;
                if (*(DWORD*)(v6 + 4) == *(DWORD*)(v6 + 8))
                {
                    if (v7 >= 0x20)
                    {
                        v11 = &result[v7 + 4];
                        v12 = ~(0x80000000 >> (v7 - 32));
                        *(DWORD*)&result[4 * v4 + 196] &= v12;
                        v10 = (*v11)-- == 1;
                        if (v10)
                            *(DWORD*)(a1 + 4) &= v12;
                    }
                    else
                    {
                        v8 = &result[v7 + 4];
                        v9 = ~(0x80000000 >> v7);
                        *(DWORD*)&result[4 * v4 + 68] &= v9;
                        v10 = (*v8)-- == 1;
                        if (v10) *(DWORD*)a1 &= v9;
                    }
                    v13 = v23;
                    v6 = v24;
                }
                else
                {
                    v13 = v23;
                }
                v5 = v21 + v13;
                *(DWORD*)(*(DWORD*)(v6 + 8) + 4) = *(DWORD*)(v6 + 4);
                v23 = v5;
                *(DWORD*)(*(DWORD*)(v24 + 4) + 8) = *(DWORD*)(v24 + 8);
            }
            v14 = (v5 >> 4) - 1;
            if (v14 > 0x3F)
                v14 = 63;
            if (v22 & 1)
            {
                v15 = a1;
            }
            else
            {
                v25 = v3 - v22;
                v15 = (v22 >> 4) - 1;
                if (v15 > 0x3F)
                    v15 = 63;
                v23 = v22 + v5;
                v14 = ((v22 + v5) >> 4) - 1;
                if (v14 > 0x3F)
                    v14 = 63;
                if (v15 != v14)
                {
                    if (*(DWORD*)(v25 + 4) == *(DWORD*)(v25 + 8))
                    {
                        if (v15 >= 0x20)
                        {
                            v17 = ~(0x80000000 >> (v15 - 32));
                            *(DWORD*)&result[4 * v4 + 196] &= v17;
                            v10 = result[v15 + 4]-- == 1;
                            if (v10)
                                *(DWORD*)(a1 + 4) &= v17;
                        }
                        else
                        {
                            v16 = ~(0x80000000 >> v15);
                            *(DWORD*)&result[4 * v4 + 68] &= v16;
                            v10 = result[v15 + 4]-- == 1;
                            if (v10)
                                *(DWORD*)a1 &= v16;
                        }
                    }
                    *(DWORD*)(*(DWORD*)(v25 + 8) + 4) = *(DWORD*)(v25 + 4);
                    *(DWORD*)(*(DWORD*)(v25 + 4) + 8) = *(DWORD*)(v25 + 8);
                }
                v3 = v25;
            }
            if (v22 & 1 || v15 != v14)
            {
                v18 = (int)&v20[8 * v14];
                *(DWORD*)(v3 + 4) = *(DWORD*)&v20[8 * v14 + 4];
                *(DWORD*)(v3 + 8) = v18;
                *(DWORD*)(v18 + 4) = v3;
                *(DWORD*)(*(DWORD*)(v3 + 4) + 8) = v3;
                if (*(DWORD*)(v3 + 4) == *(DWORD*)(v3 + 8))
                {
                    v26 = result[v14 + 4];
                    result[v14 + 4] = v26 + 1;
                    if (v14 >= 0x20)
                    {
                        if (!v26)
                            *(DWORD*)(a1 + 4) |= 0x80000000 >> (v14 - 32);
                        *(DWORD*)&result[4 * v4 + 196] |= 0x80000000 >> (v14 - 32);
                    }
                    else
                    {
                        if (!v26)
                            *(DWORD*)a1 |= 0x80000000 >> v14;
                        *(DWORD*)&result[4 * v4 + 68] |= 0x80000000 >> v14;
                    }
                }
            }
            *(DWORD*)v3 = v23;    *(DWORD*)(v23 + v3 - 4) = v23;    result += 516 * v4 + 324;    v10 = *(DWORD*)v20 == 1; --* (DWORD*)result;
    
    
            if (v10)
            {
    
    
                DWORD CustomSlot = (SlotsX + SlotsY * 512);    DWORD CustomSlotX = SlotsX;    DWORD CustomSlotY = SlotsY;
    
    
                if (!CustomSlot) // Verifica espaço
                {
                    VirtualFree((LPVOID)(*((DWORD*)CustomSlotX + 3) + (CustomSlotY << 15)), 0x8000u, 0x4000u);
    
    
                    *((DWORD*)CustomSlotX + 2) |= 0x80000000 >> CustomSlotY;
                    *(DWORD*)(*((DWORD*)CustomSlotX + 4) + 4 * CustomSlotY + 196) = 0;
                    (BYTE*)(*((DWORD*)CustomSlotX + 4) + 67);
                    v19 = (BYTE*)(*((DWORD*)CustomSlotX));
    
    
                    if (!*(BYTE*)(*((DWORD*)CustomSlotX + 4) + 67))
                    {
                        *((DWORD*)CustomSlotX + 1) &= 0xFFFFFFFE;
                        v19 = (BYTE*)(*((DWORD*)CustomSlotX));
                    }
                    if (*((DWORD*)v19 + 2) == -1)
                    {
                        VirtualFree(*((LPVOID*)v19 + 3), 0, 0x8000u);
                        //HeapFree(hHeap, 0, *((LPVOID*)CustomSlotX + 4));
                        //memcpy((BYTE*)(*((DWORD*)CustomSlotX)), (char*)CustomSlotX + 20, (size_t)lp + 20 * Slot - (DWORD)CustomSlotX - 20);
                        ((void(*)())0x7CDCDF4)();
                        if (a1 > (unsigned int)CustomSlotX)
                            a1 -= 20;
                        //dword_7CDCDE8 = (int)lp;
                    }
                }
                result = (char*)a1;
                CustomSlotY = v4;
                //CustomSlotX = (void*)a1;
            }
        }
        return result;
    }
    [Somente membros podem ver os links. ]

    Link offline :/

  6. #5
    Uploader labmu's Avatar

    Data de Ingresso
    Mar 2018
    Posts
    24
    Thanks Thanks Given 
    68
    Thanks Thanks Received 
    43
    Thanked in
    13 Posts
    Mencionado
    1 Post(s)
    MEU HUMOR
    Relaxed
    País
    Brazil
    Peço que verifique o link de Download e nome do tópico por favor pois o main.exe 1.0.12 na verdade é o 1.0L, excelente main.exe e post.
    --------------------| " Quem compartilha conhecimento, torna imaginação em realidade - Ongam Otsugua " |--------------------

  7. #6
    Membro G00d's Avatar
    Data de Ingresso
    Apr 2020
    Posts
    26
    Thanks Thanks Given 
    62
    Thanks Thanks Received 
    12
    Thanked in
    9 Posts
    Mencionado
    0 Post(s)
    MEU HUMOR
    Amused
    País
    Brazil
    Link offline :/

  8. #7
    Developer C++ romariols's Avatar
    Data de Ingresso
    Jun 2017
    Posts
    128
    Thanks Thanks Given 
    33
    Thanks Thanks Received 
    293
    Thanked in
    36 Posts
    Mencionado
    22 Post(s)
    País
    Brazil
    Vou ver nas minhas coisas se ainda tenho isso, deixei isso de lado, se conseguir achar, atualizo o link.

  9. The Following User Says Thank You to romariols For This Useful Post:


  10. #8
    Uploader labmu's Avatar

    Data de Ingresso
    Mar 2018
    Posts
    24
    Thanks Thanks Given 
    68
    Thanks Thanks Received 
    43
    Thanked in
    13 Posts
    Mencionado
    1 Post(s)
    MEU HUMOR
    Relaxed
    País
    Brazil
    Vai ajuda muito obrigado é um main.exe muito interessante.
    --------------------| " Quem compartilha conhecimento, torna imaginação em realidade - Ongam Otsugua " |--------------------

  11. #9
    Iniciante praquenome's Avatar
    Data de Ingresso
    Mar 2019
    Posts
    5
    Thanks Thanks Given 
    22
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Mencionado
    0 Post(s)
    País
    Brazil
    Alguem poderia reupar?

  12. #10
    Membro Jukas's Avatar
    Data de Ingresso
    Mar 2016
    Posts
    24
    Thanks Thanks Given 
    51
    Thanks Thanks Received 
    6
    Thanked in
    6 Posts
    Mencionado
    0 Post(s)
    MEU HUMOR
    Bashful
    País
    Brazil
    como eu usaria esse main no muserver do titans mano pode me ajuda

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • You may not post Resposta(s)
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •  
Sobre nós
Somos uma comunidade em atividade a 8 anos que aborda assuntos relacionados a games em geral, principalmente games MMORPG. e que busca sempre ajudar os membros através de conteúdos, tutoriais e suporte...
Nossos anunciantes
Hinetworks
VelozHost
InovHost
Rede Sociais