Page 8 of 14 PrimeiroPrimeiro ... 678910 ... ÚltimoÚltimo
Resultados 71 a 80 de 131

Tópico: MUEMU Season 13

  1. #71
    Membro paPanat9s1's Avatar

    Data de Ingresso
    Feb 2024
    Posts
    23
    Thanks Thanks Given 
    23
    Thanks Thanks Received 
    2
    Thanked in
    2 Posts
    Mentioned
    0 Post(s)
    País
    Bahamas
    Citação Originally Posted by InFamous Ver Post
    skill files

    ***Hidden content cannot be quoted.***
    fix for master skill tree all opcao de skill aprimorada passiva and opcao de debuff aprimorado pasivva

    fix double goer event, i cant enter to the event but never start

  2. #72
    Membro 3us0hb0m's Avatar

    Data de Ingresso
    Feb 2023
    Posts
    16
    Thanks Thanks Given 
    156
    Thanks Thanks Received 
    90
    Thanked in
    3 Posts
    Mentioned
    1 Post(s)
    País
    Brazil
    so uma observação nada contra André, dessa maneira ai e que vao vender mesmo os fix depois de remover so tem quem ja pegou ai que vai virar comercio mesmo
    Last edited by 3us0hb0m; 01-12-2025 at 02:35 PM.

  3. The Following User Says Thank You to 3us0hb0m For This Useful Post:


  4. #73
    Developer C++ André's Avatar


    Data de Ingresso
    Jul 2022
    Posts
    36
    Thanks Thanks Given 
    28
    Thanks Thanks Received 
    29
    Thanked in
    12 Posts
    Mentioned
    4 Post(s)
    País
    Brazil
    Citação Originally Posted by 3us0hb0m Ver Post
    so uma observação nada contra André, dessa maneira ai e que vao vender mesmo os fix depois de remover so tem quem ja pegou ai que vai virar comercio mesmo
    Vão não, logo vou postar o meu repack sem limites como sempre, com os meus fixes, afinal, estavam se aproveitando de quem busca um MS para por online sem esses bugs e bloqueios. Porém, códigos eu não posto mais.
    Last edited by André; 01-12-2025 at 03:48 PM.

  5. The Following User Says Thank You to André For This Useful Post:


  6. #74
    Fundador PerfectZone Mentor's Avatar





    Data de Ingresso
    Jun 2022
    Posts
    356
    Thanks Thanks Given 
    816
    Thanks Thanks Received 
    3,223
    Thanked in
    188 Posts
    Mentioned
    31 Post(s)
    Humor
    Twisted
    País
    Brazil
    Atitude lamentável.

  7. #75
    Fundador PerfectZone Mentor's Avatar





    Data de Ingresso
    Jun 2022
    Posts
    356
    Thanks Thanks Given 
    816
    Thanks Thanks Received 
    3,223
    Thanked in
    188 Posts
    Mentioned
    31 Post(s)
    Humor
    Twisted
    País
    Brazil
    O Léo fez um compartilhamento da source atualizada dele em uma outra comunidade e estou postando aqui para quem quiser utilizar:

    Saudações, amigos!

    Segue meu release oficial, do meu código oficial, para evitar monopólios e uso de código malicioso espalhado por aí.

    Não tenho apego com estes arquivos ou configurações, ou códigos... mas também não vou poder acompanhar o tópico e ajudar nos possíveis problemas que encontrarem.
    Esses códigos "vazaram" justamente porque eu liberei para alguns contatos que pediram, e que resolveram liberar. Devem gostar de liberar tudo pra todos cheesyy2

    Importante ter em mente que tem muita coisa modificada no código em relação a tudo que é original.
    Tem o corvo desativado, tem o sistema elemental desativado parcialmente, bem como tem fórmulas diferentes para o sistema Boss, tem magias apropriadas para PvP, alteradas para Alvo fixo e Range, tem fórmulas diferentes, tem sistema de controle de velocidade de hits e potions via servidor, sistema de sockets, asas level 4, maestrias dos itens "Ruud" e etc., tudo modificado... enfim, tem MUITA COISA diferente do original, adaptado para o IconeMU.
    Vocês terão que habilitar o que está desabilitado conforme seu gosto

    Você pode consultar algumas especificidades do IconeMU aqui: https://forum.iconemu.com/forum-6.html
    Neste mesmo fórum existe algum changelog e outras informações em geral que podem ser interessantes pra quem pretende se aprofundar nestes arquivos.

    Espero que façam bom uso do código, para aprender, para ajudar a comunidade, para ser independente, para abrir seu servidor, ou até para ganhar dinheiro de forma honesta, trabalhando com eles para também servir a quem precisa de ajuda técnica.

    Source GameServer, última versão:
    https://iconemu.com/GameServer.zip (https://iconemu.com/GameServer.zip)

    Source DataServer:
    https://iconemu.com/DataServer.zip (https://iconemu.com/DataServer.zip)

    Source ConnectServer:
    https://iconemu.com/ConnectServer.zip (https://iconemu.com/ConnectServer.zip)

    Source Joinserver:
    https://iconemu.com/JoinServer.zip (https://iconemu.com/JoinServer.zip)

    Source da DLL do Client:
    https://iconemu.com/Main.zip (https://iconemu.com/Main.zip)

    Arquivos de configuração atuais do IconeMU:
    https://iconemu.com/MuServer.zip (https://iconemu.com/MuServer.zip)

    Editors:
    https://iconemu.com/Editors.zip (https://iconemu.com/Editors.zip)

    Util (bibliotecas para GameServer e Cliente)
    https://iconemu.com/Util.zip (https://iconemu.com/Util.zip)

  8. The Following 3 Users Say Thank You to Mentor For This Useful Post:


  9. #76
    Membro beibei's Avatar

    Data de Ingresso
    Oct 2022
    Posts
    10
    Thanks Thanks Given 
    96
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Mentioned
    0 Post(s)
    País
    Hong Kong
    @Mentor
    can share
    GetMainInfo.exe .thank you!

  10. #77
    Membro paPanat9s1's Avatar

    Data de Ingresso
    Feb 2024
    Posts
    23
    Thanks Thanks Given 
    23
    Thanks Thanks Received 
    2
    Thanked in
    2 Posts
    Mentioned
    0 Post(s)
    País
    Bahamas
    fix bug visual inventory items and oficina custom?

  11. #78
    Developer C++ André's Avatar


    Data de Ingresso
    Jul 2022
    Posts
    36
    Thanks Thanks Given 
    28
    Thanks Thanks Received 
    29
    Thanked in
    12 Posts
    Mentioned
    4 Post(s)
    País
    Brazil
    Citação Originally Posted by paPanat9s1 Ver Post
    fix bug visual inventory items and oficina custom?
    Qual Bug? Descreva, coloque detalhes.

  12. #79
    Developer C++ André's Avatar


    Data de Ingresso
    Jul 2022
    Posts
    36
    Thanks Thanks Given 
    28
    Thanks Thanks Received 
    29
    Thanked in
    12 Posts
    Mentioned
    4 Post(s)
    País
    Brazil
    Como estou sem tempo para finalizar um Repack com correções devido ao meu retorno ao trabalho , irei recolocar os Fixes novamente neste tópico.

    SEMPRE LEIAM TODAS AS PÁGINAS PARA ENCONTRAR POSSÍVEIS FIXES E CUIDADO COM "VENDEDORES PICARETAS" QUE SÓ QUEREM SE APROVEITAR!

    Fix Dark Reaven (Corvo) não causar dano:

    Em DarkSpirit.cpp no GS

    Busque por:

    Código:
    bool CDarkSpirit::Attack(LPOBJ lpObj, LPOBJ lpTarget, CSkill* lpSkill, bool send, BYTE flag, BYTE action) // OK
    Substitua tudo por:

    Código:
    bool CDarkSpirit::Attack(LPOBJ lpObj,LPOBJ lpTarget,CSkill* lpSkill,bool send,BYTE flag,BYTE action) // OK{
        #pragma region ATTACK_CHECK
    
    
        if(lpObj->Index == lpTarget->Index)
        {
            return 0;
        }
    
    
        if(lpObj->Type == OBJECT_USER && gObjIsConnectedGP(lpObj->Index) == 0)
        {
            return 0;
        }
    
    
        if(lpTarget->Type == OBJECT_USER && gObjIsConnectedGP(lpTarget->Index) == 0)
        {
            return 0;
        }
    
    
        if(gMap[lpObj->Map].CheckAttr(lpObj->X,lpObj->Y,1) != 0 || gMap[lpTarget->Map].CheckAttr(lpTarget->X,lpTarget->Y,1) != 0)
        {
            return 0;
        }
    
    
        #if(GAMESERVER_UPDATE>=402)
    
    
        if(gDuel.GetDuelArenaBySpectator(lpObj->Index) != 0 || gDuel.GetDuelArenaBySpectator(lpTarget->Index) != 0)
        {
            return 0;
        }
    
    
        #endif
    
    
        if(gCrywolf.GetCrywolfState() == CRYWOLF_STATE_READY || gCrywolf.GetCrywolfState() == CRYWOLF_STATE_END)
        {
            if(lpTarget->Type == OBJECT_MONSTER && lpTarget->Map == MAP_CRYWOLF)
            {
                return 0;
            }
        }
    
    
        if(lpObj->GuildNumber > 0 && lpObj->Guild != 0 && lpObj->Guild->WarState != 0)
        {
            if(lpObj->Guild->WarType == 1 && GetBattleSoccerGoalMove(0) == 0)
            {
                return 1;
            }
    
    
            if(lpObj->Guild->WarType == 0 && lpTarget->Type == OBJECT_MONSTER)
            {
                return 0;
            }
        }
    
    
        if(lpTarget->Type == OBJECT_NPC || lpTarget->Live == 0 || lpTarget->State != OBJECT_PLAYING || lpTarget->Teleport != 0)
        {
            return 0;
        }
    
    
        if(lpTarget->Type == OBJECT_MONSTER)
        {
            
            if((lpTarget->Class >= 100 && lpTarget->Class <= 110) || lpTarget->Class == 523) // Trap
            {
                return 0;
            }
    
    
            if(lpTarget->Class == 221 || lpTarget->Class == 222) // Siege
            {
                return 0;
            }
        }
    
    
        if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_MONSTER)
        {
            if(OBJECT_RANGE(lpObj->SummonIndex) != 0)
            {
                if(lpObj->SummonIndex == lpTarget->Index)
                {
                    return 0;
                }
            }
        }
    
    
        int SummonIndex = lpObj->Index;
    
    
        if(lpObj->Type == OBJECT_MONSTER && OBJECT_RANGE(lpObj->SummonIndex) != 0)
        {
            SummonIndex = lpObj->SummonIndex;
        }
    
    
        int SummonTargetIndex = lpTarget->Index;
    
    
        if(lpTarget->Type == OBJECT_MONSTER && OBJECT_RANGE(lpTarget->SummonIndex) != 0)
        {
            SummonTargetIndex = lpTarget->SummonIndex;
        }
    
    
        if(gAttack.CheckPlayerTarget(&gObj[SummonIndex],&gObj[SummonTargetIndex]) == 0)
        {
            return 0;
        }
    
    
        #pragma endregion
    
    
        #pragma region ATTACK_RETURN
    
    
        int skill = ((lpSkill==0)?SKILL_NONE:lpSkill->m_skill);
    
    
        if(lpObj->Type == OBJECT_USER)
        {
            lpObj->HPAutoRecuperationTime = GetTickCount();
            lpObj->MPAutoRecuperationTime = GetTickCount();
            lpObj->BPAutoRecuperationTime = GetTickCount();
            lpObj->SDAutoRecuperationTime = GetTickCount();
        }
    
    
        if(lpTarget->Type == OBJECT_USER)
        {
            lpTarget->HPAutoRecuperationTime = GetTickCount();
            lpTarget->MPAutoRecuperationTime = GetTickCount();
            lpTarget->BPAutoRecuperationTime = GetTickCount();
            lpTarget->SDAutoRecuperationTime = GetTickCount();
        }
    
    
        if(OBJECT_RANGE(lpObj->SummonIndex) != 0)
        {
            gObjSummonSetEnemy(lpObj,lpTarget->Index);
        }
    
    
        if(lpObj->Type == OBJECT_USER)
        {
            gDarkSpirit[lpObj->Index].SetTarget(lpTarget->Index);
        }
    
    
        bool duel = gDuel.CheckDuel(lpObj,lpTarget);
    
    
        if(lpObj->Type == OBJECT_USER && duel != 0)
        {
            lpObj->DuelTickCount = GetTickCount();
        }
    
    
        if(lpTarget->Type == OBJECT_USER && duel != 0)
        {
            lpTarget->DuelTickCount = GetTickCount();
        }
    
    
        if(gEffectManager.CheckEffect(lpTarget,EFFECT_ORDER_OF_PROTECTION) != 0 && lpSkill == 0)
        {
            gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
            return 1;
        }
    
    
        if(gEffectManager.CheckEffect(lpTarget,EFFECT_ORDER_OF_PROTECTION) != 0 && lpSkill != 0)
        {
            gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
            return 1;
        }
    
    
        if(gEffectManager.CheckEffect(lpTarget,EFFECT_PHYSI_DAMAGE_IMMUNITY) != 0 && lpSkill == 0)
        {
            gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
            return 1;
        }
    
    
        if(gEffectManager.CheckEffect(lpTarget,EFFECT_MAGIC_DAMAGE_IMMUNITY) != 0 && lpSkill != 0)
        {
            gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
            return 1;
        }
    
    
        if(lpTarget->Type == OBJECT_MONSTER)
        {
            if(lpTarget->Class == 200 && lpSkill == 0)
            {
                gObjMonsterStateProc(lpTarget,6,lpObj->Index,0);
                gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
                return 1;
            }
    
    
            if(lpTarget->Class == 200 && lpSkill != 0)
            {
                gObjMonsterStateProc(lpTarget,7,lpObj->Index,0);
                gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
                return 1;
            }
    
    
            if(gEffectManager.CheckEffect(lpTarget,EFFECT_MONSTER_PHYSI_DAMAGE_IMMUNITY) != 0 && skill == SKILL_NONE)
            {
                gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
                return 1;
            }
    
    
            if(gEffectManager.CheckEffect(lpTarget,EFFECT_MONSTER_MAGIC_DAMAGE_IMMUNITY) != 0 && skill != SKILL_NONE)
            {
                gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
                return 1;
            }
    
    
            if(lpTarget->MonsterSkillElementOption.CheckImmuneTime() != 0)
            {
                if(lpTarget->MonsterSkillElementOption.m_SkillElementImmuneNumber == skill)
                {
                    gAttack.MissSend(lpObj,lpTarget,lpSkill,send,0);
                    return 1;
                }
            }
        }
    
    
        #pragma endregion
    
    
        #pragma region DAMAGE_CALC
    
    
        flag = 0;
    
    
        BYTE miss = 0;
    
    
        WORD effect = 0;
    
    
        if((lpObj->Type != OBJECT_USER || lpTarget->Type != OBJECT_USER) && this->MissCheck(lpObj,lpTarget,lpSkill,send,&miss) == 0)
        {
            return 1;
        }
    
    
        if((lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER) && gAttack.MissCheckPvP(lpObj,lpTarget,lpSkill,send,0,&miss) == 0)
        {
            return 1;
        }
    
    
        long long defense = this->GetTargetDefense(lpObj,lpTarget,&effect);
    
    
        long long damage = this->GetAttackDamage(lpObj,lpTarget,lpSkill,&effect,defense);
    
    
        if(miss != 0)
        {
            damage = (damage*30)/100;
        }
    
    
        if(action != 0)
        {
            damage = (damage*60)/100;
        }
    
    
        for(int n=0;n < MAX_DAMAGE_REDUCTION;n++)
        {
            damage -= (damage*lpTarget->DamageReduction[n])/100;
        }
    
    
        if(lpTarget->EffectOption.AddDamageReduction > 0)
        {
            damage -= (damage*lpTarget->EffectOption.AddDamageReduction)/100;
        }
    
    
        if((GetTickCount()-lpTarget->ShieldDamageReductionTime) < ((DWORD)(gServerInfo.m_DefenseTimeConstA*1000)))
        {
            damage -= (damage*lpTarget->ShieldDamageReduction)/100;
        }
    
    
        gAttack.WingSprite(0,lpTarget,&damage);
    
    
        gAttack.HelperSprite(0,lpTarget,&damage);
    
    
        int MinDamage = (lpObj->Level+lpObj->MasterLevel)/10;
    
    
        MinDamage = ((MinDamage<1)?1:MinDamage);
    
    
        damage = ((damage<MinDamage)?MinDamage:damage);
    
    
        this->DarkSpiritSprite(lpObj,damage);
    
    
        gAttack.DamageSprite(lpTarget,damage);
    
    
        #if(GAMESERVER_UPDATE>=602)
    
    
        if((GetLargeRand()%100) < gMasterSkillTree.GetMasterSkillValue(lpObj,MASTER_SKILL_ADD_DARK_SPIRIT_DOUBLE_DAMAGE_RATE))
        {
            effect |= 0x40;
            damage += damage;
        }
    
    
        #endif
    
    
        #pragma endregion
    
    
        #pragma region DAMAGE_CONFIG
    
    
        if(lpObj->Type == OBJECT_USER)
        {
            if(lpTarget->Type == OBJECT_USER)
            {
                damage = (damage*gServerInfo.m_GeneralDamageRatePvP)/100;
    
    
                damage = (damage*gServerInfo.m_DamageRatePvP[lpObj->Class])/100;
    
    
                damage = (damage*gServerInfo.m_DamageRateTo[lpObj->Class][lpTarget->Class])/100;
    
    
                if(duel != 0)
                {
                    damage = (damage*gServerInfo.m_DuelDamageRate)/100;
                }
                else if(gGensSystem.CheckGens(lpObj,lpTarget) != 0)
                {
                    damage = (damage*gServerInfo.m_GensDamageRate)/100;
                }            
                else if(CC_MAP_RANGE(lpObj->Map) != 0 && CC_MAP_RANGE(lpTarget->Map) != 0)
                {
                    damage = (damage*gServerInfo.m_ChaosCastleDamageRate)/100;
                }
                else if(IT_MAP_RANGE(lpObj->Map) != 0 && IT_MAP_RANGE(lpTarget->Map) != 0)
                {
                    damage = (damage*gServerInfo.m_IllusionTempleDamageRate)/100;
                }
            }
            else
            {
                damage = (damage*gServerInfo.m_GeneralDamageRatePvM)/100;
    
    
                damage = (damage*gServerInfo.m_DamageRatePvM[lpObj->Class])/100;
            }
        }
    
    
        #pragma endregion
    
    
        #pragma region DAMAGE_FINISH
    
    
        if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_MONSTER)
        {
    
    
        }
    
    
        damage = ((damage<0)?0:damage);
    
    
        #pragma endregion
    
    
        #pragma region DAMAGE_APPLY
    
    
        int ShieldDamage = 0;
    
    
        if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER)
        {
            ShieldDamage = gAttack.GetShieldDamage(lpObj,lpTarget,damage);
    
    
            if(lpTarget->Life < (damage-ShieldDamage))
            {
                lpTarget->Life = 0;
            }
            else
            {
                lpTarget->Life -= damage-ShieldDamage;
            }
    
    
            if(lpTarget->Shield < ShieldDamage)
            {
                lpTarget->Shield = 0;
            }
            else
            {
                lpTarget->Shield -= ShieldDamage;
            }
        }
        else
        {
            if(lpTarget->Life < damage)
            {
                lpTarget->Life = 0;
            }
            else
            {
                lpTarget->Life -= damage;
            }
        }
    
    
        if(lpTarget->Type == OBJECT_MONSTER)
        {
            lpTarget->LastAttackerID = lpObj->Index;
    
    
            gObjAddMsgSendDelay(lpTarget,0,lpObj->Index,100,0);
    
    
            if(lpTarget->CurrentAI != 0)
            {
                lpTarget->Agro.IncAgro(lpObj->Index,(damage/50));
            }
        }
    
    
        #pragma endregion
    
    
        #pragma region CHECK_SELF_DEFENSE
    
    
        if(damage > 0)
        {
            if(lpObj->Type == OBJECT_USER && lpTarget->Type == OBJECT_USER && lpObj->Index != lpTarget->Index)
            {
                bool CheckSelfDefense = 1;
    
    
                if(effect == 4)
                {
                    CheckSelfDefense = 0;
                }
    
    
                if(gDuel.CheckDuel(lpObj,lpTarget) != 0)
                {
                    CheckSelfDefense = 0;
                }
                
                if(gGensSystem.CheckGens(lpObj,lpTarget) != 0)
                {
                    CheckSelfDefense = 0;
                }
                            
                if(CC_MAP_RANGE(lpObj->Map) != 0 && CC_MAP_RANGE(lpTarget->Map) != 0)
                {
                    CheckSelfDefense = 0;
                }
    
    
                if(IT_MAP_RANGE(lpObj->Map) != 0 && IT_MAP_RANGE(lpTarget->Map) != 0)
                {
                    CheckSelfDefense = 0;
                }
                
                if(gMapManager.GetMapNonOutlaw(lpObj->Map) != 0)
                {
                    CheckSelfDefense = 0;
                }
    
    
                if(CheckSelfDefense != 0)
                {
                    gObjCheckSelfDefense(lpObj,lpTarget->Index);
                }
            }
    
    
            gAttack.ArmorDurabilityDown(lpObj,lpTarget);
        }
    
    
        lpObj->Rest = 0;
    
    
        #pragma endregion
    
    
        #pragma region ATTACK_FINISH
    
    
        if(damage > 0)
        {
            gEffectManager.DelEffect(lpTarget,EFFECT_SLEEP);
    
    
            if(lpTarget->Type == OBJECT_USER)
            {
                if(effect != 4)
                {
                    if((lpTarget->DamageReflect+lpTarget->EffectOption.AddDamageReflect) > 0)
                    {
                        gObjAddMsgSendDelay(lpTarget,10,lpObj->Index,10,((damage*(lpTarget->DamageReflect+lpTarget->EffectOption.AddDamageReflect))/100));
                    }
                    
                    if((GetLargeRand()%100) < lpTarget->DefensiveFullBPRestoreRate)
                    {
                        lpTarget->BP = lpTarget->MaxBP+lpTarget->AddBP;
                        GCManaSend(lpTarget->Index,0xFF,(int)lpTarget->Mana,lpTarget->BP);
                    }
                }
    
    
                int effect = 1;            
            }
    
    
            gObjectManager.CharacterLifeCheck(lpObj,lpTarget,(damage-ShieldDamage),0,flag,effect,skill,ShieldDamage/*,0*/);
        }
        else
        {
            GCDamageSend(lpObj->Index,lpTarget->Index,0,0,effect,0);
        }
    
    
        if(lpObj->Type == OBJECT_USER && lpObj->Life <= 0 && lpObj->CheckLifeTime <= 0)
        {
            lpObj->AttackObj = lpTarget;
            lpObj->AttackerKilled = ((lpTarget->Type==OBJECT_USER)?1:0);
            lpObj->CheckLifeTime = 3;
        }
    
    
        #pragma endregion
    
    
        return 1;
    }
    Fix NPC em Lorencia não aceitar itens de combinação para Criar Dark Reaven (Corvo) e Dark Horse (Cavalo) e também a Chaos Machine:

    Em Main.cpp do Cliente:

    Busque por:

    Código:
     SetCompleteHook(0xE9, 0x583799, &ChaosBoxDurationItens);
    Apenas coloque // para comentar e desativar esta linha.

    Fix Arquivos de Configurações não aplicarem os efeitos no GS:

    Alguns arquivos do GameServer estão com falta do end em seus respectivos finais ou colunas, verifique na Source buscando pelos trechos onde
    estão programadas as leituras destes arquivos que não possuem o end e confirme a necessidade dele. Na programação do GameServer não está
    incluído um alerta para a má leitura dos arquivos decorrente da falta de caracteres ou má colocação deles, desta forma, o GS inicia como se estivesse tudo bem porém não aplica as configurações do arquivo com erro.
    Exemplo de arquivo com erro que necessita colocação do end:
    SkillBlock.txt na pasta Data/Skill do MuServer.

    Master Skill Tree 4:

    Como esta Source não é de fato uma Season 13, mas sim um Upgrade de Season, está faltando a finalização da Master Skill Tree 4 e suas respectivas Skills. Eu não tenho como disponibilizar o código pois eu apenas fui montando o sistema durante vários dias e isso envolveu diversos arquivos e linhas de códigos. A dica que dou é que todo o sistema da Tree 4 fica basicamente nos arquivos SkillManager, MasterSkillTree_4th, Attack e Skill da Source do GS.

    Ao contrário do que falaram algumas páginas atrás neste tópico,
    NÃO COPIE E COLE ARQUIVOS DE OUTRAS TEAMS como MuDev e etc..., nenhum destes arquivos, como o FormulaData.txt, é compatível com esta Source e conforme informei logo acima, o GS não acusa o arquivo incorreto na leitura e ao usar este arquivo de outra Team que eu citei, a única coisa que irá acontecer é a Tree 4 bugar não informando os valores corretos adquiridos por cada ponto adicionado e também não atualizar os respectivos valores. Use os arquivos originais do MuServer pois eles estão OK para a Master Skill Tree 4, sendo necessária mudanças apenas se você quiser modificar a quantidade de pontos necessários e etc...

    Para ativar esta Master Skill Tree 4, apenas busque por:

    Código:
    return; //disabled until full implementation and test of skills


    Coloque // na frente do return;

    Não é necessário fazer absolutamente mais nada na Source para que esta Tree funcione.
    Logo após ative no arquivo GameServerInfo - Common.dat no GS deixando assim ForMasterSkillTree = 1.

    Fix não Salvar Skills da Master Skill Tree 4:

    Em MasterSkillTree_4th.cpp do GS busque por:
    Código:
     case FOR_MASTER_SKILL_ADD_SHOCKING_BOOM :        if ((value = gSkillManager.AddSkill(lpObj, SKILL_SHOCKING_BOOM, 0)) >= 0)
            {
                gSkillManager.GCSkillAddSend(lpObj->Index, value, SKILL_SHOCKING_BOOM, 0, 0);
            }
    
            break;


    Esta será a sua referência.
    Repare que as outras Skills da Tree 4 não possuem nada disso e agora cabe a você fazer de cada uma tendo atenção nos respectivos nomes das Skills.
    OBS: Como eu falei, as mudanças e correções que eu tive que realizar foram muitas em diversos arquivos, mas pelo o que me recordo, o Fix para este caso é apenas este.

    Não edite as Skills dos personagens no Banco de Dados, para testes crie um personagem para testar cada Skill. No Banco de Dados a inserção ocorre em diversos locais e editar irá bugar o char fazendo com que você se atrapalhe ainda mais.

    Algumas imagens das Skills em funcionamento:

    Shock


    Bleeding

    Poison


    ---
    Por enquanto é isso. Espero que ajude alguém a desenvolver o seu projeto e infelizmente não tenho previsão de retornar o desenvolvimento devido ao fim do recesso no trabalho. Sempre que eu puder irei auxiliar quem precisar de ajuda.
    Last edited by André; 01-16-2025 at 01:54 PM.

  13. The Following 5 Users Say Thank You to André For This Useful Post:


  14. #80
    Membro paPanat9s1's Avatar

    Data de Ingresso
    Feb 2024
    Posts
    23
    Thanks Thanks Given 
    23
    Thanks Thanks Received 
    2
    Thanked in
    2 Posts
    Mentioned
    0 Post(s)
    País
    Bahamas
    Citação Originally Posted by André Ver Post
    Qual Bug? Descreva, coloque detalhes.
    oficina, dont see option for add items in npc and dont see ruud and coin, npc ever is 0.. and inventory visual bug in item, pentagram items, etc you need reload or use command /limparinv

Page 8 of 14 PrimeiroPrimeiro ... 678910 ... Ú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
  •