Page 1 of 4 123 ... ÚltimoÚltimo
Resultados 1 a 10 de 32
  1. #1
    Developer C++ louis's Avatar



    Data de Ingresso
    Apr 2016
    Posts
    1,681
    Thanks Thanks Given 
    39
    Thanks Thanks Received 
    812
    Thanked in
    67 Posts
    Mencionado
    499 Post(s)
    País
    Brazil

    Atualização do sistema de patente

    Me assustei um pouco com o código gigantesco que foi criado para premiar a mudança de patente no ms da falecida f-team. Então estou postando uma modificação bem simples e didática para resumir e melhorar o desempenho do mesmo.

    Dentro do CommandManager.cpp você deve remover tudo referente a atualização de patente e colocar apenas isso:

    Código:
            gCustomRankUser.CheckUpdate(lpObj->Index);
    Adicionar no CustomRankUser.cpp
    Código:
    void CCustomRankUser::CheckUpdate(int aIndex)
    {
        LPOBJ lpObj = &gObj[aIndex];
    
        for(int i = 0; i < this->m_count; i++)
        {
            if(this->m_Data[i].m_iResetMin == lpObj->Reset)
            {
                SDHP_COMMAND_COIN_RESET pMsg;
    
                pMsg.header.set(0x0F,0x05,sizeof(pMsg));
    
                pMsg.index = lpObj->Index;
    
                memcpy(pMsg.account,lpObj->Account,sizeof(pMsg.account));
    
                pMsg.Type  = 1;
                pMsg.Value = this->m_Data[i].m_Coin;
    
                gDataServerConnection.DataSend((BYTE*)&pMsg,pMsg.header.size);
    
                gNotice.GCNoticeSendToAll(0,0,0,0,0,0,gMessage.GetMessage(763+i),lpObj->Name);
                gNotice.GCNoticeSend(lpObj->Index,1,0,0,0,0,0,gMessage.GetMessage(742+i),lpObj->Name);
    
                return;
            }
        }
        return;
    }
    CustomRankUser.h
    Código:
    void CheckUpdate(int aIndex);
    No CustomRankUser.txt você deve adicionar um coluna que será o premio:
    Exemplo:


    Código:
    //=================================================================================================================
    //     #RankIndex          #Name            #ResetMin        #ResetMax       #Cash      
    //=================================================================================================================
    0
                0            "Novato"             0                50               0      
                1            "Aprendiz"           51               100              0   
                2            "Mensageiro"         101              150              0 
    
    ....
    Obs: Não esqueça de dar load nessa coluna.

    Créditos
    F-team
    Last edited by louis; 24/09/2017 at 07:32 PM.
    Meu canal no YouTube com vídeos sobre os sistemas que desenvolvo:
    [Somente membros podem ver os links. ]

  2. #2
    Developer Delphi Arcade's Avatar


    Data de Ingresso
    Sep 2017
    Posts
    151
    Thanks Thanks Given 
    6
    Thanks Thanks Received 
    10
    Thanked in
    5 Posts
    Mencionado
    20 Post(s)
    MEU HUMOR
    Relaxed
    País
    Brazil
    É como eu sempre digo, com um pouco de criatividade dá para usar esse código pra fazer diversos tipos de patentes! E digo mais, apesar de muitas coisas novas estarem aparecendo nos emuladores MuEmu (fonte de estudos para muitos coders), esse sistema de patente funciona em qualquer versão de MuOnline.

    Show de Bola! Like mais que merecido queridão.
    A vida é um eterno aprendizado
    Seja sempre humilde!

  3. #3
    Fundador PerfectZone Mentor's Avatar


    Data de Ingresso
    Jun 2013
    Posts
    2,850
    Thanks Thanks Given 
    784
    Thanks Thanks Received 
    2,193
    Thanked in
    355 Posts
    Mencionado
    804 Post(s)
    MEU HUMOR
    Twisted
    País
    Brazil
    Muito bom @[Somente membros podem ver os links. ], vou implementar isso na minha source mais claro que vou dar uma estudada nela pois para aprender porque ficar so no crtl c e crtl v é tenso
    Perfect Zone Brasil



    Inscreva-se no meu canal clicando [Somente membros podem ver os links. ]

  4. #4
    3D MAKER Unico's Avatar
    Data de Ingresso
    Jun 2015
    Posts
    381
    Thanks Thanks Given 
    86
    Thanks Thanks Received 
    69
    Thanked in
    20 Posts
    Mencionado
    44 Post(s)
    MEU HUMOR
    Crappy
    País
    Peru
    update su s4 ? :v

  5. #5
    Lendário djagripnos's Avatar

    Data de Ingresso
    Dec 2014
    Posts
    1,116
    Thanks Thanks Given 
    61
    Thanks Thanks Received 
    589
    Thanked in
    127 Posts
    Mencionado
    79 Post(s)
    MEU HUMOR
    Angelic
    País
    Greece
    Citação Originally Posted by Unico Ver Post
    update su s4 ? :v
    Update Soon!

  6. #6
    Fundador PerfectZone Mentor's Avatar


    Data de Ingresso
    Jun 2013
    Posts
    2,850
    Thanks Thanks Given 
    784
    Thanks Thanks Received 
    2,193
    Thanked in
    355 Posts
    Mencionado
    804 Post(s)
    MEU HUMOR
    Twisted
    País
    Brazil
    @[Somente membros podem ver os links. ] quais textos tenho de por no arquivo mensagem referente a essas duas linhas?

    gNotice.GCNoticeSendToAll(0,0,0,0,0,0,gMessage.Get Message(764+i),lpObj->Name);
    gNotice.GCNoticeSend(lpObj->Index,1,0,0,0,0,0,gMessage.GetMessage(743+i),lpOb j->Name);
    Perfect Zone Brasil



    Inscreva-se no meu canal clicando [Somente membros podem ver os links. ]

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



    Data de Ingresso
    Apr 2016
    Posts
    1,681
    Thanks Thanks Given 
    39
    Thanks Thanks Received 
    812
    Thanked in
    67 Posts
    Mencionado
    499 Post(s)
    País
    Brazil
    Citação Originally Posted by Mentor Ver Post
    @[Somente membros podem ver os links. ] quais textos tenho de por no arquivo mensagem referente a essas duas linhas?
    Como falei o script criado é muito mal elaborado, não levem a mal, também passei por essa fase quando estava aprendendo e como como muitos eu também não tive professor e acabamos fazendo do nosso jeito, não está errado e irá funcionar porém com o tempo temos que evoluir e aprender a melhorar o código, em vez de criar apenas uma mensagem para todas as mudanças de patentes foram criadas várias mensagens, uma para cada mudança de patente.

    Então eu criei um For para testar todas as patentes e premia-las quando necessário, um For nada mais é que uma estrutura de repetição que por sinal é um das coisas mais importantes da programação para obter um código limpo e rápido.

    Nesse for criado ele testa todas as patentes 1 por 1 até atingir ou não o resultado definido que no caso é checar se o personagem X tem os resets mínimos para trocar de patente, quando os resets do personagem for exatamente igual ao o mínimo necessário serão executados as funções de premiação.

    Com o for foi definindo um inicio em um fim fazendo um contagem na variável "i", que é responsável por definir o número da patente que está sendo testada naquele momento. Então quando o resultado necessário for atingido será exibida a mensagem da patente que está sendo testada, por exemplo:

    O jogador atingiu a patente:
    4 "Assasino" 201 250

    Será exibida a mensagem(reparem o que está em vermelho):
    gNotice.GCNoticeSendToAll(0,0,0,0,0,0,gMessage.Get Message(763+4),lpObj->Name);

    Mensagem no message.txt:
    767 "O jogador %s alcançou a patente Assasino!"

    Portanto a cada patente alcançada vai somando no GetMessage para pegar o texto correto.

    Obs1: Eu tinha colocado o numero errado (764 e 743) na mensagem, o correto é 763 e 742 respectivamente pois a patente novato não conta, já corrigi no tópico inicial.
    Obs2: Eu ainda faria apenas uma frase no Message.txt, alterando Apenas o nome da patente e o nome do char que subiu de patente. Ex: O jogador %s alcançou a patente %s!
    Last edited by louis; 24/09/2017 at 07:36 PM.
    Meu canal no YouTube com vídeos sobre os sistemas que desenvolvo:
    [Somente membros podem ver os links. ]

  8. #8
    Fundador PerfectZone Mentor's Avatar


    Data de Ingresso
    Jun 2013
    Posts
    2,850
    Thanks Thanks Given 
    784
    Thanks Thanks Received 
    2,193
    Thanked in
    355 Posts
    Mencionado
    804 Post(s)
    MEU HUMOR
    Twisted
    País
    Brazil
    Vlw professor aloprado
    Perfect Zone Brasil



    Inscreva-se no meu canal clicando [Somente membros podem ver os links. ]

  9. #9
    Membro felipecoder's Avatar
    Data de Ingresso
    May 2017
    Posts
    207
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    122
    Thanked in
    6 Posts
    Mencionado
    21 Post(s)
    MEU HUMOR
    Aggressive
    País
    Brazil
    bem bacana, obrigado por manter os créditos, é uma coisa simples e fácil que eu tbm fiz, com os for e i++ mas modifiquei meu sistema de rankings então não uso os resets

  10. #10
    Membro VIP mkslep's Avatar
    Data de Ingresso
    Mar 2016
    Posts
    27
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    1
    Thanked in
    1 Post
    Mencionado
    6 Post(s)
    Citação Originally Posted by louis Ver Post
    Me assustei um pouco com o código gigantesco que foi criado para premiar a mudança de patente no ms da falecida f-team. Então estou postando uma modificação bem simples e didática para resumir e melhorar o desempenho do mesmo.

    Dentro do CommandManager.cpp você deve remover tudo referente a atualização de patente e colocar apenas isso:

    Código:
            gCustomRankUser.CheckUpdate(lpObj->Index);
    Adicionar no CustomRankUser.cpp
    Código:
    void CCustomRankUser::CheckUpdate(int aIndex)
    {
        LPOBJ lpObj = &gObj[aIndex];
    
        for(int i = 0; i < this->m_count; i++)
        {
            if(this->m_Data[i].m_iResetMin == lpObj->Reset)
            {
                SDHP_COMMAND_COIN_RESET pMsg;
    
                pMsg.header.set(0x0F,0x05,sizeof(pMsg));
    
                pMsg.index = lpObj->Index;
    
                memcpy(pMsg.account,lpObj->Account,sizeof(pMsg.account));
    
                pMsg.Type  = 1;
                pMsg.Value = this->m_Data[i].m_Coin;
    
                gDataServerConnection.DataSend((BYTE*)&pMsg,pMsg.header.size);
    
                gNotice.GCNoticeSendToAll(0,0,0,0,0,0,gMessage.GetMessage(763+i),lpObj->Name);
                gNotice.GCNoticeSend(lpObj->Index,1,0,0,0,0,0,gMessage.GetMessage(742+i),lpObj->Name);
    
                return;
            }
        }
        return;
    }
    CustomRankUser.h
    Código:
    void CheckUpdate(int aIndex);
    No CustomRankUser.txt você deve adicionar um coluna que será o premio:
    Exemplo:


    Código:
    //=================================================================================================================
    //     #RankIndex          #Name            #ResetMin        #ResetMax       #Cash      
    //=================================================================================================================
    0
                0            "Novato"             0                50               0      
                1            "Aprendiz"           51               100              0   
                2            "Mensageiro"         101              150              0 
    
    ....
    Obs: Não esqueça de dar load nessa coluna.

    Créditos
    F-team

    Teria como me ajudar com esses dois problemas ou fazer um tutorial passo a passo de como fazer essa sua alteração porque parece que falta algo

    Veja a imagem

    [Somente membros podem ver os links. ]


    Last edited by mkslep; 13/10/2017 at 05:14 PM.

Page 1 of 4 123 ... Ú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