Page 1 of 2 12 ÚltimoÚltimo
Resultados 1 a 10 de 11
  1. #1
    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

    Comando /makeset (MuEmu)

    Comando para criar um set completo.

    Uso:
    (Type | Level | Skill | Luck | Option | Exe)
    /makeset 1 15 0 1 7 63 = SET DRAGON FULL

    Código:
    void CCommandManager::CommandMakeSet(LPOBJ lpObj,char* arg) // OK
    {
        if(gServerInfo.m_CommandMakeSwitch == 0)
        {
            return;
        }
    
        if(gGameMaster.CheckGameMasterLevel(lpObj,gServerInfo.m_CommandMakeGameMasterLevel) == 0)
        {
            gNotice.GCNoticeSend(lpObj->Index,1,0,0,0,0,0,gMessage.GetMessage(106));
            return;
        }
    
        int type = this->GetNumber(arg,0);
        int level = this->GetNumber(arg,1);
        int skill = this->GetNumber(arg,2);
        int luck = this->GetNumber(arg,3);
        int option = this->GetNumber(arg,4);
        int exc = this->GetNumber(arg,5);
        int set = this->GetNumber(arg,6);
    
            GDCreateItemSend(lpObj->Index,0xEB,0,0,GET_ITEM(7,type),level,0,skill,luck,option,-1,exc,set,0,0,0,0xFF,0);
            GDCreateItemSend(lpObj->Index,0xEB,0,0,GET_ITEM(8,type),level,0,skill,luck,option,-1,exc,set,0,0,0,0xFF,0);
            GDCreateItemSend(lpObj->Index,0xEB,0,0,GET_ITEM(9,type),level,0,skill,luck,option,-1,exc,set,0,0,0,0xFF,0);
            GDCreateItemSend(lpObj->Index,0xEB,0,0,GET_ITEM(10,type),level,0,skill,luck,option,-1,exc,set,0,0,0,0xFF,0);
            GDCreateItemSend(lpObj->Index,0xEB,0,0,GET_ITEM(11,type),level,0,skill,luck,option,-1,exc,set,0,0,0,0xFF,0);
    
            gNotice.GCNoticeSend(lpObj->Index,1,0,0,0,0,0,gMessage.GetMessage(107));
    
            gLog.Output(LOG_COMMAND,"[CommandMakeSet][%s][%s] - (Type: %d, Level: %d, Skill: %d, Luck: %d, Option: %d, Exc: %d, Set: %d)",lpObj->Account,lpObj->Name,type,level,skill,luck,option,exc,set);
        
    }
    Créditos:
    Louis
    Meu canal no YouTube com vídeos sobre os sistemas que desenvolvo:
    [Somente membros podem ver os links. ]

  2. #2
    Super Moderador andredeco's Avatar


    Data de Ingresso
    Oct 2016
    Posts
    577
    Thanks Thanks Given 
    63
    Thanks Thanks Received 
    74
    Thanked in
    37 Posts
    Mencionado
    35 Post(s)
    MEU HUMOR
    Breezy
    País
    Brazil
    @[Somente membros podem ver os links. ]

    Se não for pedir muito, eu queria te pedir que se tiver um tempinho sobrando qualquer hora, dar um exemplo de como incluir este comando, por exemplo, na Source. Algo bem resumido, tipo qual parte da Source e onde se inclui o código para o funcionamento. Aprendi algumas coisas fuçando, seria de imensa ajuda esta pequena orientação. Infelizmente não há tutorial algum.

    Vlw.
    Last edited by andredeco; 10/09/2017 at 11:48 PM.

  3. #3
    Developer C++ s00x's Avatar

    Data de Ingresso
    Jan 2015
    Posts
    373
    Thanks Thanks Given 
    75
    Thanks Thanks Received 
    146
    Thanked in
    24 Posts
    Mencionado
    63 Post(s)
    MEU HUMOR
    Cheerful
    País
    United States
    Citação Originally Posted by andredeco Ver Post
    @[Somente membros podem ver os links. ]

    Se não for pedir muito, eu queria te pedir que se tiver um tempinho sobrando qualquer hora, dar um exemplo de como incluir este comando, por exemplo, na Source. Algo bem resumido, tipo qual parte da Source e onde se inclui o código para o funcionamento. Aprendi algumas coisas fuçando, seria de imensa ajuda esta pequena orientação. Infelizmente não há tutorial algum.

    Vlw.
    Não sou o @[Somente membros podem ver os links. ], mas creio que posso ajudar.
    No arquivo CommandManager.cpp e CommandManager.h é que são feito as modificações.

    Dessa o scroll até o final da página do CommandManager.cpp e adicione o código do tópico, e no seu arquivo CommandManager.h, inclua o cabeçalho da função:
    void CommandMakeSet(LPOBJ lpObj,char* arg);
    Feito o informado acima, o Comando esta incluso no seu Servidor, agora é só configurar.
    Abra seu arquivo Message.txt do lado do Servidor, e procure pelas linhas 106 e 107, caso não exista, adicione o seguinte:
    106 "Você não tem permissão para utilizar o /makeset"
    107 "Item criado com Sucesso!"
    Lembrando que esse comando é uma variação do /MAKE que já existe no servidor, então ele já utiliza as strings e a verificação do mesmo.
    A diferença é que ele já cria o Elmo, Armadura, Luva, Calça e Botas de uma vez só, bastando apenas informar o ID do Item de acordo com o Item.txt

    Eu recomendo mudar as linhas do Message.txt para uma nova linha que ainda não exista, porque desse modo o comando só irá funcionar para editar Sets.
    Last edited by s00x; 11/09/2017 at 12:53 AM.
    É melhor estar enganado, do que ser enganado.

  4. #4
    Fundador PerfectZone Mentor's Avatar


    Data de Ingresso
    Jun 2013
    Posts
    2,850
    Thanks Thanks Given 
    784
    Thanks Thanks Received 
    2,196
    Thanked in
    355 Posts
    Mencionado
    804 Post(s)
    MEU HUMOR
    Twisted
    País
    Brazil
    Excelente explicação @[Somente membros podem ver os links. ]
    Perfect Zone Brasil



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

  5. #5
    Super Moderador andredeco's Avatar


    Data de Ingresso
    Oct 2016
    Posts
    577
    Thanks Thanks Given 
    63
    Thanks Thanks Received 
    74
    Thanked in
    37 Posts
    Mencionado
    35 Post(s)
    MEU HUMOR
    Breezy
    País
    Brazil
    Citação Originally Posted by s00x Ver Post
    Não sou o @Louiz, mas creio que posso ajudar.
    No arquivo CommandManager.cpp e CommandManager.h é que são feito as modificações.

    Dessa o scroll até o final da página CommandManager.cpp e adicione o código do tópico, e no seu arquivo CommandManager.h, inclua o cabeçalho da função:


    Feito o informado acima, o Comando esta incluso no seu código fonte, agora é só configurar.
    Abra seu arquivo Message.txt do lado do Servidor, e procure pelas linhas 106 e 107, caso não exista, adicione o seguinte:


    Lembrando que esse comando é uma variação do /MAKE que já existe no servidor, então ele já utiliza as strings e a verificação do mesmo.
    A diferença é que ele já cria o Elmo, Armadura, Luva, Calça e Botas de uma vez só, bastando apenas informar o ID do Item de acordo com o Item.txt

    Eu recomendo mudar as linhas do Message.txt para uma nova linha que ainda não exista, porque desse modo o comando só irá funcionar para editar Sets.
    Simplesmente perfeita a sua explicação. Resumida e funcional. Consegui acertar tudo na primeira tentativa.
    Muito obrigado mesmo.

  6. #6
    Lendário ThaylorMello's Avatar
    Data de Ingresso
    Jul 2015
    Posts
    291
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    33
    Thanked in
    5 Posts
    Mencionado
    14 Post(s)
    MEU HUMOR
    Aggressive
    País
    Brazil
    Muito bom, estou iniciando nessa area , e queria saber se o Sr @[Somente membros podem ver os links. ] poderia postar mais umas sourcer pra nos ^^
    "Se algum dia alguém lhe disser que seu trabalho não é o de um profissional, lembre-se: amadores construíram a Arca de Noé e profissionais, o Titanic."

  7. #7
    Design antoniodel's Avatar


    Data de Ingresso
    Aug 2015
    Posts
    332
    Thanks Thanks Given 
    44
    Thanks Thanks Received 
    15
    Thanked in
    10 Posts
    Mencionado
    49 Post(s)
    MEU HUMOR
    Relaxed
    País
    Brazil
    @[Somente membros podem ver os links. ], tem como vc mim dar uma pequena ajuda, estou tentando adicionar um NPC Reset, porém eu encontrei essa sourcer aqui e gostaria de saber se da para fazer ela funciona de forma diferente na MuEmu.

    Reset.cpp

    Código:
    #include "StdAfx.h"
    #include "Commands.h"
    #include "Configs.h"
    #include "GameMaping.h"
    #include "User.h"
    #include "Main.h"
    #include "Protocol.h"
    #include "Extra.h"
    #include "SQL.h"
    #include "Functions.h"
    #include "Notice.h"
    #include "Reset.h"
    
    
    ResetGuard rGuard;
    
    
    static char Msg[99] = {0};
    
    
    ResetGuard::ResetGuard(void)
    {
    }
    
    
    ResetGuard::~ResetGuard(void)
    {
    }
    
    
    void ResetGuard::ResetConfigs()
    {
        this->ResetActive = 0;
        this->ResetDelay  = 100;
    
    
        // 0 á 50 Resets
        this->ResetLevel[0][0] = 400; // FREE
        this->ResetPoint[0][0] = 300;
    
    
        this->ResetLevel[1][0] = 350; // VIP Normal
        this->ResetPoint[1][0] = 400;
    
    
        this->ResetLevel[2][0] = 300; // VIP Platinum
        this->ResetPoint[2][0] = 500;
    
    
        // 51 á 100 Resets
        this->ResetLevel[0][1] = 400;
        this->ResetPoint[0][1] = 200;
    
    
        this->ResetLevel[1][1] = 350;
        this->ResetPoint[1][1] = 350;
    
    
        this->ResetLevel[2][1] = 300;
        this->ResetPoint[2][1] = 450;
    
    
        // 101 á 200 Resets
        this->ResetLevel[0][2] = 400;
        this->ResetPoint[0][2] = 200;
    
    
        this->ResetLevel[1][2] = 350;
        this->ResetPoint[1][2] = 300;
    
    
        this->ResetLevel[2][2] = 300;
        this->ResetPoint[2][2] = 400;
    
    
        // 201 á 300 Resets
        this->ResetLevel[0][3] = 400;
        this->ResetPoint[0][3] = 150;
    
    
        this->ResetLevel[1][3] = 350;
        this->ResetPoint[1][3] = 250;
    
    
        this->ResetLevel[2][3] = 300;
        this->ResetPoint[2][3] = 350;
    
    
        // 500 adiante
        this->ResetLevel[0][4] = 400;
        this->ResetPoint[0][4] = 200;
    
    
        this->ResetLevel[1][4] = 390;
        this->ResetPoint[1][4] = 300;
    
    
        this->ResetLevel[2][4] = 370;
        this->ResetPoint[2][4] = 400;
    
    
        // Price
        this->ResetPrice = 40000;
    
    
        // Back Points
        this->ResetBackSTR = 18;
        this->ResetBackAGI = 15;
        this->ResetBackVIT = 19;
        this->ResetBackENE = 23;
    }
    
    
    void ResetGuard::ResetTalk(OBJECTSTRUCT * lpObj,OBJECTSTRUCT * lpNpc)
    {
        if(this->ResetActive == 1)
        {
            if( lpObj->Level >= this->ResetLevel[lpObj->Vip][lpObj->ResetType] )
            {
                if( lpObj->Money > this->ResetPrice )
                {                
                    lpObj->Money -= this->ResetPrice;
                    GCMoneySend(lpObj->m_Index,lpObj->Money);
    
    
                    lpObj->Resets      += 1;
                    lpObj->Level        = 1;
                    lpObj->Experience   = 1;
                    lpObj->LevelUpPoint = lpObj->Resets*this->ResetPoint[lpObj->Vip][lpObj->ResetType]; 
                    lpObj->Strength     = this->ResetBackSTR;
                    lpObj->Dexterity    = this->ResetBackAGI;
                    lpObj->Vitality     = this->ResetBackVIT;
                    lpObj->Energy       = this->ResetBackENE;
    
    
                    GCLevelUpMsgSend(lpObj->m_Index, 1);
                    MySQL.UpdateResets( lpObj->m_Index );
    
    
                    sprintf_s(Msg,"Você resetou! Parabêns! Agora você possui %d Resets!",lpObj->Resets);
                    ChatTargetSendNogs(lpNpc,Msg,lpObj->m_Index);
                    gObjCloseSet( lpObj->m_Index , 1 );
                }
                else
                { ChatTargetSendNogs(lpNpc,"Você não possui dinheiro suficiente!",lpObj->m_Index); }
            }
            else
            { 
                sprintf_s(Msg,"Você precisa estar no level %d para Resetar!",this->ResetLevel[lpObj->Vip][lpObj->ResetType]);
                ChatTargetSendNogs(lpNpc,Msg,lpObj->m_Index); }
        }
        else
        { ChatTargetSendNogs(lpNpc,"Eu estou desativado no momento!",lpObj->m_Index); }
    }
    Reset.h

    Código:
    #ifndef _RESET_GUARD#define _RESET_GUARD
    
    
    #pragma once
    
    
    #define MAX_VIPS 3
    #define TIPOS 4
    
    
    #define ChatTargetSendNogs ((void(*)(OBJECTSTRUCT*,char* Text,DWORD PlayerID)) 0x00438F00)
    
    
    class ResetGuard
    {
    private:
    public:
        ResetGuard(void);
        ~ResetGuard(void);
    
    
        int ResetLevel[MAX_VIPS][TIPOS];
        int ResetPoint[MAX_VIPS][TIPOS];
    
    
        // Reset Definitions
        int ResetActive;
        int ResetDelay;
        int ResetPrice;
    
    
        // Back Points
        int ResetBackSTR;
        int ResetBackAGI;
        int ResetBackVIT;
        int ResetBackENE;
        int ResetBackCMD;
    
    
        void ResetTalk(OBJECTSTRUCT * lpObj,OBJECTSTRUCT * lpNpc);
        void ResetConfigs();
    };
    
    
    extern ResetGuard rGuard;
    
    
    #endif
    NPCTalk.txt

    Código:
    case 464:            rGuard.ResetTalk ( lpNpc, lpObj );
                break;
    Se vc notar essa soucer de NPC Reset, ela que faz o sistema Dinâmico, porém no servidor da muemu já existe um local onde vc pode diferenciar o reset pontuativo e tabelado que no caso é Data/Util/ResetTable.txt.
    Gostaria de uma explicação melhor para não só eu como muitos poder adicionar esse custom ao servidor.
    Last edited by antoniodel; 11/09/2017 at 12:27 PM.
    " Do Inferno é que se vê o Paraíso "
    "Mulher, Carro e Conta de Mu, São Três Coisas que Não se Emprestam!"

    http://i435.photobucket.com/albums/qq72/toinhosjm/PremiumGames_zpsatfdwuxo.jpg

  8. #8
    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 antoniodel Ver Post
    @[Somente membros podem ver os links. ], tem como vc mim dar uma pequena ajuda, estou tentando adicionar um NPC Reset, porém eu encontrei essa sourcer aqui e gostaria de saber se da para fazer ela funciona de forma diferente na MuEmu.

    Reset.cpp

    Código:
    #include "StdAfx.h"
    #include "Commands.h"
    #include "Configs.h"
    #include "GameMaping.h"
    #include "User.h"
    #include "Main.h"
    #include "Protocol.h"
    #include "Extra.h"
    #include "SQL.h"
    #include "Functions.h"
    #include "Notice.h"
    #include "Reset.h"
    
    
    ResetGuard rGuard;
    
    
    static char Msg[99] = {0};
    
    
    ResetGuard::ResetGuard(void)
    {
    }
    
    
    ResetGuard::~ResetGuard(void)
    {
    }
    
    
    void ResetGuard::ResetConfigs()
    {
        this->ResetActive = 0;
        this->ResetDelay  = 100;
    
    
        // 0 á 50 Resets
        this->ResetLevel[0][0] = 400; // FREE
        this->ResetPoint[0][0] = 300;
    
    
        this->ResetLevel[1][0] = 350; // VIP Normal
        this->ResetPoint[1][0] = 400;
    
    
        this->ResetLevel[2][0] = 300; // VIP Platinum
        this->ResetPoint[2][0] = 500;
    
    
        // 51 á 100 Resets
        this->ResetLevel[0][1] = 400;
        this->ResetPoint[0][1] = 200;
    
    
        this->ResetLevel[1][1] = 350;
        this->ResetPoint[1][1] = 350;
    
    
        this->ResetLevel[2][1] = 300;
        this->ResetPoint[2][1] = 450;
    
    
        // 101 á 200 Resets
        this->ResetLevel[0][2] = 400;
        this->ResetPoint[0][2] = 200;
    
    
        this->ResetLevel[1][2] = 350;
        this->ResetPoint[1][2] = 300;
    
    
        this->ResetLevel[2][2] = 300;
        this->ResetPoint[2][2] = 400;
    
    
        // 201 á 300 Resets
        this->ResetLevel[0][3] = 400;
        this->ResetPoint[0][3] = 150;
    
    
        this->ResetLevel[1][3] = 350;
        this->ResetPoint[1][3] = 250;
    
    
        this->ResetLevel[2][3] = 300;
        this->ResetPoint[2][3] = 350;
    
    
        // 500 adiante
        this->ResetLevel[0][4] = 400;
        this->ResetPoint[0][4] = 200;
    
    
        this->ResetLevel[1][4] = 390;
        this->ResetPoint[1][4] = 300;
    
    
        this->ResetLevel[2][4] = 370;
        this->ResetPoint[2][4] = 400;
    
    
        // Price
        this->ResetPrice = 40000;
    
    
        // Back Points
        this->ResetBackSTR = 18;
        this->ResetBackAGI = 15;
        this->ResetBackVIT = 19;
        this->ResetBackENE = 23;
    }
    
    
    void ResetGuard::ResetTalk(OBJECTSTRUCT * lpObj,OBJECTSTRUCT * lpNpc)
    {
        if(this->ResetActive == 1)
        {
            if( lpObj->Level >= this->ResetLevel[lpObj->Vip][lpObj->ResetType] )
            {
                if( lpObj->Money > this->ResetPrice )
                {                
                    lpObj->Money -= this->ResetPrice;
                    GCMoneySend(lpObj->m_Index,lpObj->Money);
    
    
                    lpObj->Resets      += 1;
                    lpObj->Level        = 1;
                    lpObj->Experience   = 1;
                    lpObj->LevelUpPoint = lpObj->Resets*this->ResetPoint[lpObj->Vip][lpObj->ResetType]; 
                    lpObj->Strength     = this->ResetBackSTR;
                    lpObj->Dexterity    = this->ResetBackAGI;
                    lpObj->Vitality     = this->ResetBackVIT;
                    lpObj->Energy       = this->ResetBackENE;
    
    
                    GCLevelUpMsgSend(lpObj->m_Index, 1);
                    MySQL.UpdateResets( lpObj->m_Index );
    
    
                    sprintf_s(Msg,"Você resetou! Parabêns! Agora você possui %d Resets!",lpObj->Resets);
                    ChatTargetSendNogs(lpNpc,Msg,lpObj->m_Index);
                    gObjCloseSet( lpObj->m_Index , 1 );
                }
                else
                { ChatTargetSendNogs(lpNpc,"Você não possui dinheiro suficiente!",lpObj->m_Index); }
            }
            else
            { 
                sprintf_s(Msg,"Você precisa estar no level %d para Resetar!",this->ResetLevel[lpObj->Vip][lpObj->ResetType]);
                ChatTargetSendNogs(lpNpc,Msg,lpObj->m_Index); }
        }
        else
        { ChatTargetSendNogs(lpNpc,"Eu estou desativado no momento!",lpObj->m_Index); }
    }
    Reset.h

    Código:
    #ifndef _RESET_GUARD#define _RESET_GUARD
    
    
    #pragma once
    
    
    #define MAX_VIPS 3
    #define TIPOS 4
    
    
    #define ChatTargetSendNogs ((void(*)(OBJECTSTRUCT*,char* Text,DWORD PlayerID)) 0x00438F00)
    
    
    class ResetGuard
    {
    private:
    public:
        ResetGuard(void);
        ~ResetGuard(void);
    
    
        int ResetLevel[MAX_VIPS][TIPOS];
        int ResetPoint[MAX_VIPS][TIPOS];
    
    
        // Reset Definitions
        int ResetActive;
        int ResetDelay;
        int ResetPrice;
    
    
        // Back Points
        int ResetBackSTR;
        int ResetBackAGI;
        int ResetBackVIT;
        int ResetBackENE;
        int ResetBackCMD;
    
    
        void ResetTalk(OBJECTSTRUCT * lpObj,OBJECTSTRUCT * lpNpc);
        void ResetConfigs();
    };
    
    
    extern ResetGuard rGuard;
    
    
    #endif
    NPCTalk.txt

    Código:
    case 464:            rGuard.ResetTalk ( lpNpc, lpObj );
                break;
    Se vc notar essa soucer de NPC Reset, ela que faz o sistema Dinâmico, porém no servidor da muemu já existe um local onde vc pode diferenciar o reset pontuativo e tabelado que no caso é Data/Util/ResetTable.txt.
    Gostaria de uma explicação melhor para não só eu como muitos poder adicionar esse custom ao servidor.
    Você pode usar para ter base, mais não funciona no Muemu, você deve se basear na função: void CCommandManager::CommandReset(LPOBJ lpObj,char* arg)
    Meu canal no YouTube com vídeos sobre os sistemas que desenvolvo:
    [Somente membros podem ver os links. ]

  9. #9
    Design antoniodel's Avatar


    Data de Ingresso
    Aug 2015
    Posts
    332
    Thanks Thanks Given 
    44
    Thanks Thanks Received 
    15
    Thanked in
    10 Posts
    Mencionado
    49 Post(s)
    MEU HUMOR
    Relaxed
    País
    Brazil
    Obrigado louis, eu consegui fazer.

    Consegui terminar o NPC Reset.








    " Do Inferno é que se vê o Paraíso "
    "Mulher, Carro e Conta de Mu, São Três Coisas que Não se Emprestam!"

    http://i435.photobucket.com/albums/qq72/toinhosjm/PremiumGames_zpsatfdwuxo.jpg

  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 antoniodel Ver Post
    Obrigado louis, eu consegui fazer.

    Consegui terminar o NPC Reset.








    Boaaaaaa 02 k
    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