Page 1 of 2 12 ÚltimoÚltimo
Resultados 1 a 10 de 11
  1. #1
    Developer C++ romariols's Avatar
    Data de Ingresso
    Jun 2017
    Posts
    128
    Thanks Thanks Given 
    33
    Thanks Thanks Received 
    294
    Thanked in
    36 Posts
    Mencionado
    22 Post(s)
    País
    Brazil

    Fix Itens Sumindo na Chaos Machine

    Este foi um dos fix mais difíceis que achei até agora, então, para ajudar a galera que está iniciando vou deixar aqui como eu consegui solucionar.

    O BUG acontece quando um player coloca seus itens na Chaos Machine e em seguida ele é desconectado do servidor por circunstâncias diversas ou fecha o jogo com os itens na Chaos Machine, e ai ele acaba perdendo os itens, pois eles somem do jogo.

    Esta função irá dar um "Rollback" no inventário do player quando isto acontecer, trazendo de volta os itens ao inventário antes de ser desconectado, fixando o problema.

    Defines
    Código:
    #define OBJMAX_RANGE(aIndex) (((aIndex) < 0 )?FALSE:( (aIndex) > OBJECT_MAX-1 )?FALSE:TRUE)
    #define INVENTORY_SIZE 108
    Funções.cpp
    Código:
    int gObjInventoryRollback(int aIndex)
    {
        if (!OBJMAX_RANGE(aIndex))
        {
            return false;
        }
    
    
        for (int n = 0; n < INVENTORY_SIZE; n++)
        {
            gObj[aIndex].Inventory2[n].Clear();
        }
    
    
        gObjSetInventory1Pointer(&gObj[aIndex]);
    
    
        LogAddFuncColor(COLOR_BLACK, "Rollback no Inventário (%s)", gObj[aIndex].Name);
    
    
        return true;
    }
    Funções.h
    Código:
    int gObjInventoryRollback(int aIndex);
    A parte abaixo deve ser inserida na função gObjDel
    Código:
    // - Fix Chaos Machine
    if (lpObj->CloseType == -1 && lpObj->m_IfState.use == 1 && lpObj->m_IfState.type == 7)
    {
        LogAddFuncColor(COLOR_BLUE, "[Chaos-Machine][%s][%s] Fechou de Forma Inesperada", lpObj->AccountID, lpObj->Name);
        gObjInventoryRollback(aIndex);
    }
    Créditos: Romário Leite
    Last edited by Mentor; 03/04/2020 at 11:59 AM. Razão: Tópico movido e alterado o prefix

  2. #2
    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
    Vou testar amanhã, parece muito com a função que já existe no trade.

    Se realmente funcionar é uma coisa muito boa.

  3. #3
    Developer C++ romariols's Avatar
    Data de Ingresso
    Jun 2017
    Posts
    128
    Thanks Thanks Given 
    33
    Thanks Thanks Received 
    294
    Thanked in
    36 Posts
    Mencionado
    22 Post(s)
    País
    Brazil
    100% funcional, eu fixei no meu servidor com esta função

  4. #4
    Membro Linkzr's Avatar
    Data de Ingresso
    Dec 2015
    Posts
    169
    Thanks Thanks Given 
    38
    Thanks Thanks Received 
    19
    Thanked in
    13 Posts
    Mencionado
    12 Post(s)
    MEU HUMOR
    Yeehaw
    País
    Brazil
    @[Somente membros podem ver os links. ]

    Tentei forçar o bug em meu servidor de 2 maneiras
    Utilizo a source do Update 13 do louis (Season 4).

    Tentei deixa um item +11 na chaos machine, só coloquei os itens na CM e matei o processo no Gerenciador De Arquivos.
    [Somente membros podem ver os links. ])

    Outra forma foi colocar para MIX o item e logo em seguida dei ALT + F4 antes de terminar a combinação
    Em ambos os casos os itens voltaram para o meu inventário...
    [Somente membros podem ver os links. ]
    Last edited by Linkzr; 06/04/2020 at 01:22 AM.
    [Somente membros podem ver os links. ]

  5. #5
    Developer C++ romariols's Avatar
    Data de Ingresso
    Jun 2017
    Posts
    128
    Thanks Thanks Given 
    33
    Thanks Thanks Received 
    294
    Thanked in
    36 Posts
    Mencionado
    22 Post(s)
    País
    Brazil
    Citação Originally Posted by Linkzr Ver Post
    @[Somente membros podem ver os links. ]

    Tentei forçar o bug em meu servidor de 2 maneiras
    Utilizo a source do Update 13 do louis (Season 4).

    Tentei deixa um item +11 na chaos machine, só coloquei os itens na CM e matei o processo no Gerenciador De Arquivos.
    [Somente membros podem ver os links. ])

    Outra forma foi colocar para MIX o item e logo em seguida dei ALT + F4 antes de terminar a combinação
    Em ambos os casos os itens voltaram para o meu inventário...
    [Somente membros podem ver os links. ]

    Mesmo não acontecendo o BUG anexei a tua source ao código do GS
    Esse BUG tem em todas as versões 97 a 99, já ouvi falar na Season 2 também, não sei se em season maiores tem. A forma como vc tentou forçar, está correta, é assim que o BUG acontece e o player acaba perdendo os itens.

    Vlw... Acredito que irá ajudar muitos.

  6. #6
    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 Linkzr Ver Post
    @[Somente membros podem ver os links. ]

    Tentei forçar o bug em meu servidor de 2 maneiras
    Utilizo a source do Update 13 do louis (Season 4).

    Tentei deixa um item +11 na chaos machine, só coloquei os itens na CM e matei o processo no Gerenciador De Arquivos.
    [Somente membros podem ver os links. ])

    Outra forma foi colocar para MIX o item e logo em seguida dei ALT + F4 antes de terminar a combinação
    Em ambos os casos os itens voltaram para o meu inventário...
    [Somente membros podem ver os links. ]

    Mesmo não acontecendo o BUG anexei a tua source ao código do GS
    O bug só ocorre depois de você fazer o MIX na Chaos Machine. Antes de mixar ele ainda considera o item como seu, se fechar e abrir o jogo novamente, o item volta para o inventário. Porém, depois de uma combinação, o item não é mais seu e sim da CM, e se vc tomar DC, ele se perde lá. Então tente novamente mixando primeiro, e quando der sucesso, fechar o jogo com o item ainda na CM.


    Citação Originally Posted by romariols Ver Post
    Esse BUG tem em todas as versões 97 a 99, já ouvi falar na Season 2 também, não sei se em season maiores tem. A forma como vc tentou forçar, está correta, é assim que o BUG acontece e o player acaba perdendo os itens.

    Vlw... Acredito que irá ajudar muitos.
    Formatei o PC e ainda não consegui testar, e pelo que eu vi o código está certo. Mas só confere pra mim, o rollback só funciona em caso de sucesso na CM né? Senão o cara perde o item, e fecha o jogo pra recuperar as coisas.

  7. #7
    Developer C++ romariols's Avatar
    Data de Ingresso
    Jun 2017
    Posts
    128
    Thanks Thanks Given 
    33
    Thanks Thanks Received 
    294
    Thanked in
    36 Posts
    Mencionado
    22 Post(s)
    País
    Brazil
    No meu caso não ocorreu esse problema pq eu criei uma função que retorna um valor quando o player clica no botão OK, não inclui essa parte pq varia de versão pra versão, se ocorrer, basta adaptar com a sua source, algumas deve ser necessário acrescentar "lpObj->ChaosLock = FALSE" ou "lpObj->ChaosLock = FALSE", dependendo do valor que retorna na função da Chaos Mix

    27 minutes:------- Atualizado -------

    No meu GS ficou assim, os itens depois de apertar o botão "OK", só retornam ao inventário se tiver dado certo a combinação, porém, voltam a forma antes da combinação e o player terá que refazer a combinação, se a combinação falhar, ele perde os itens como normalmente seria. O código postado é 99%, o resto é com a criatividade de cada um.
    Last edited by romariols; 05/04/2020 at 06:26 PM.

  8. #8
    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
    No meu caso não ocorreu esse problema pq eu criei uma função que retorna um valor quando o player clica no botão OK, não inclui essa parte pq varia de versão pra versão, se ocorrer, basta adaptar com a sua source, algumas deve ser necessário acrescentar "lpObj->ChaosLock = FALSE" ou "lpObj->ChaosLock = FALSE", dependendo do valor que retorna na função da Chaos Mix

    27 minutes:------- Atualizado -------

    No meu GS ficou assim, os itens depois de apertar o botão "OK", só retornam ao inventário se tiver dado certo a combinação, porém, voltam a forma antes da combinação e o player terá que refazer a combinação, se a combinação falhar, ele perde os itens como normalmente seria. O código postado é 99%, o resto é com a criatividade de cada um.
    E se você fizer o Rollback do momento pós-combinação, e se tiver algum item ele jogar pro baú ou inventário automaticamente?

    Ou até mesmo ele salvar apenas onde o item estava antes da combinação, mas jogar o item de depois? Será que é possível?

    Sou iniciante em C++, senão tentava fazer aqui..

    Se bem que dá pra falar que não salvou pq a net do cara caiu antes de fazer a combinação.

  9. #9
    Developer C++ romariols's Avatar
    Data de Ingresso
    Jun 2017
    Posts
    128
    Thanks Thanks Given 
    33
    Thanks Thanks Received 
    294
    Thanked in
    36 Posts
    Mencionado
    22 Post(s)
    País
    Brazil
    Não da pra fazer isso pós-combinação pq as informações ficam salvas no momento de abertura e fechamento do NPC, e quem faz isso é o DataServer, com o fix da Chaos Machine Duper não é possível abrir Baú e Chaos Machine simultaneamente. Bom isso foi o melhor q eu consegui fazer, com ctz deve haver outro meios, principalmente em versões maiores.
    Last edited by romariols; 05/04/2020 at 10:35 PM.

  10. #10
    Developer C++ louis's Avatar



    Data de Ingresso
    Apr 2016
    Posts
    1,681
    Thanks Thanks Given 
    39
    Thanks Thanks Received 
    814
    Thanked in
    67 Posts
    Mencionado
    499 Post(s)
    País
    Brazil
    Citação Originally Posted by Linkzr Ver Post
    @[Somente membros podem ver os links. ]

    Tentei forçar o bug em meu servidor de 2 maneiras
    Utilizo a source do Update 13 do louis (Season 4).

    Tentei deixa um item +11 na chaos machine, só coloquei os itens na CM e matei o processo no Gerenciador De Arquivos.
    [Somente membros podem ver os links. ])

    Outra forma foi colocar para MIX o item e logo em seguida dei ALT + F4 antes de terminar a combinação
    Em ambos os casos os itens voltaram para o meu inventário...
    [Somente membros podem ver os links. ]
    muemu base já tem o rollback de fabrica ...
    Meu canal no YouTube com vídeos sobre os sistemas que desenvolvo:
    [Somente membros podem ver os links. ]

Page 1 of 2 12 ÚltimoÚltimo

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